Chip123 科技應用創新平台
標題:
問一下VCS 與Verilog-XL的模擬結果
[打印本頁]
作者:
jackyli2k9
時間:
2009-9-11 11:04 PM
標題:
問一下VCS 與Verilog-XL的模擬結果
我用VCS與Verilog-XL模擬下面的程式結果輸出波形不同,
5 L$ z' _; ]# f" l/ m
有大大可以幫我解答嗎??
0 V7 }! @$ E9 Y/ V8 C4 s4 e7 x; S
! r, ~& S: a* X; t3 i: a: |
verilog程式 :
7 s& b4 U6 p8 X: g3 m0 h' x
`timescale 1ns/100ps
: F2 z. I& a& q3 Y$ v6 E! D1 g
module timing(clk, rst, in, out);
: J( \3 E/ N* e" j
1 `. ~0 r6 o$ [6 d4 X {
input clk, rst;
8 J1 X+ h8 |# A+ R( y, j7 D$ y
input [7:0] in;
7 ^7 [/ u- B- w" o$ x
output [7:0] out;
# s; @8 f- |6 I+ }
reg [7:0] out;
- S7 w# f# x/ u0 a" e
) p( w `: `6 F) T- x# c
wire [7:0] out_temp;
( `6 }1 R8 k9 V( ?& h' P8 a
8 m# x" G* I- |" V, P9 W
# t1 w. k% c4 h, O5 } k. K3 W- k
assign out_temp = in + 2;
q0 Q6 v% |( T; M' V( } }
0 x3 { A* C: a
* Q; x, f# ?( Y1 K0 k) f' u3 `
always @(posedge clk) begin
( z9 w9 B/ Y6 z9 E
3 B5 e+ i. L2 h1 d" |
if (rst)
0 p4 i& ?9 k- C D( |1 M
out <= 8'd0;
, c8 P1 j8 l& e) b
else
0 G+ z9 k3 o% x: c8 E4 ?
0 o3 b8 t0 ?, y) z6 }( C
out <= out_temp;
% C9 n6 {+ ` J
3 T9 J' t6 S& X3 D& U
end
8 {; E' T/ Y& |9 }1 [
9 \/ I" c6 L& P/ E) R* X
endmodule
0 x# R3 F; B/ W8 z
6 b1 n6 Y& Z# t) L1 E. `4 O
+ o9 t: B4 G; C7 L6 C
module test();
* Y' A* d2 ^3 B* x. X G' K2 I
9 N7 d+ S" S9 E, M1 @' ^# F; j
reg clk, rst;
* V5 W% @0 `; ~/ m
reg [7:0] in;
9 C z# W: ~: Y% ~
wire [7:0] out;
* h/ t* h' H3 P
9 k; h8 o* {$ H+ u
timing timing (clk, rst, in, out);
; ?) q. D5 S0 ]- V5 t
" j) Q# F; X& f$ G% @
- P7 P! `1 p8 Q/ U: h6 G3 a1 L3 ~
initial begin
1 [" ]1 w9 o. \2 u5 ~, W5 k |0 i; g
$fsdbDumpvars;
c5 q( P# x8 \% A; m7 J/ N. v
clk = 0;
7 x! D$ |4 ^; C
rst = 1;
( u: m9 h% E2 t- P9 R5 K
#20
. }3 o6 y9 r& f5 Z4 j
rst = 0;
$ g$ T# l6 Z/ r, D
#5
% P% Z8 v9 ^! y& Q( n
in = 5;
, `" G6 C0 L4 y( X6 u) n# K; ~8 N7 q
#10
: O" G8 f6 X( C$ L
in = 6;
8 p& E! K& B; K% Q& ~7 v% C0 _
#10
) C# C% i! T6 J, F& }+ b* A% L5 t
in = 7;
1 ` A, g: q* S1 M, N
#10
5 i& d' u% Q4 G2 B# z9 C* O! s
in = 8;
, q* C- M7 o E& `. S
#10
" k# m4 L7 q$ I4 f% ^. J0 O
in = 9;
5 U. v9 ]8 r8 N* P) f* [
#500 $finish;
, B9 L, Q! |2 o2 o3 X/ a; D
end
" a& J8 ?/ B$ U* }+ y1 H* N$ \
" I6 p7 K0 _* R
always #5 clk = ~clk;
! L: d5 x! W: Y( i; V0 k
& f# ~! N$ D) d6 O9 @
endmodule
( ]" c8 `% i; ^* d
1 L9 [ T! I) D3 D' C6 Y; G
------------------------------------------
4 E1 J1 S3 L+ N. I. S, M5 N3 z% f
以下是VCS與Verilog模擬的圖
! T: N8 V3 n4 b% I, l W# [
6 T" K/ J% J/ e/ V
1 j) M6 F& B. Z- d. @1 `0 W' ?
[attach]7871[/attach]
: [9 T3 n0 B# ?, H
為什麼會不同??
9 w# w& U6 p0 a5 u/ g, L6 g+ O2 b
各位大大請幫我看看
- O3 ]9 W& Z# m8 y- a6 p. D
! a N; j% ^% a! _) q4 O
PS: 我不是要交作業啦,只是在Simulation遇到問題
3 U4 D- U) Q6 G3 @ F5 P5 k9 |9 j
% p$ E+ I* a! S) B& _
謝謝..............................
作者:
darylz
時間:
2009-9-15 03:46 PM
这个很明显是Verilog仿真中的竞争(race)情况。
M# a& A/ I# N5 L% Q
你产生in值的initial block和 产生clk的always block各自独立,所以执行顺序是未定的。
作者:
jackyli2k9
時間:
2009-9-15 10:57 PM
請問要如何寫才不會有Race的現象??
3 H) s1 `' V B
我不知道如何把initial block與always clk 放在一寫??
2 M+ I6 `0 v/ k. a' F+ |( b
可以告訴我嗎??
: v: j" @7 v3 z' A- { b9 w
) \( g. g8 Z5 Q* B4 N
# W2 j3 ]* R% p
謝謝.................
作者:
bakerly
時間:
2009-9-18 05:47 PM
標題:
回復 3# 的帖子
不要讓clk 的edge和data的改變在同一個時間發生就可以避免這個現象
9 R( S) j O% G- n# A, k% v
而initial和always 沒辦法一起寫。
作者:
darylz
時間:
2009-9-23 11:04 AM
既然你想要的数据和你的时钟是有关系的,为什么不写在一起呢?
; R \# t! ^5 ^- K# _( J
写在两个独立的block,仿真器不可能知道他们有关系的。
作者:
darylz
時間:
2009-9-23 12:14 PM
除非你用clock同步
' J; E. p/ a/ C/ A \. ?
.....................................................
作者:
ejean
時間:
2009-10-9 05:19 PM
You can solve this problem
; u2 v- ?4 J* `
1. add a delay cell before each register.
( C( j( c; W% r, }
2. Synthesize the circuit, simulate the code with SDF.
作者:
masonchung
時間:
2009-10-13 09:15 AM
這樣說吧
! D( V* y- a, z- n% T$ L
initial 是執行一次的迴圈
$ B# X8 n/ z! o; z- I0 R: B
always 是無窮回圈
8 {6 j# |6 l5 g- x6 h" H
兩者要同步才能避免這問題
9 q7 W1 }6 w- m( H/ ?7 e# w0 X9 N+ @
同步就是在initial用 @(clk) , 不要用 # n
# D( s2 Q+ J) f1 W- a, y9 ~
3 a' H# B- @4 v
以上
( m! ?1 n( j" n, f" h/ ]) @
如有錯誤歡迎指正
歡迎光臨 Chip123 科技應用創新平台 (http://chip123.com/)
Powered by Discuz! X3.2