Chip123 科技應用創新平台
標題:
問一下VCS 與Verilog-XL的模擬結果
[打印本頁]
作者:
jackyli2k9
時間:
2009-9-11 11:04 PM
標題:
問一下VCS 與Verilog-XL的模擬結果
我用VCS與Verilog-XL模擬下面的程式結果輸出波形不同,
* ?' R* a9 E, N: s" H: Q5 e/ \
有大大可以幫我解答嗎??
0 _6 Z2 m/ G% D1 [, k$ z' _1 h
: G6 e% Z7 Q! C$ _- f# R# C0 Z
verilog程式 :
& D. H3 J+ U; _/ F- Z: g" ]) l7 e
`timescale 1ns/100ps
/ p* B' g* T9 f f
module timing(clk, rst, in, out);
5 m4 U5 N# B" D! j( y2 W5 G
- k) K: g' Q: G; r9 X: b5 G0 L+ E- L
input clk, rst;
; }! p2 j5 P" j1 \* k6 C! Z9 l8 B
input [7:0] in;
5 m1 T3 H% u% f$ [
output [7:0] out;
" g- L# J5 v9 {* j4 a
reg [7:0] out;
; }9 L% I/ Q* k
% Z8 K: Q" k6 U! y7 N1 K
wire [7:0] out_temp;
! ]% b) l& {, z
5 G- J: Q8 U: ^" u1 w$ ?1 k
9 K2 F$ `8 b. ~0 b+ X( r
assign out_temp = in + 2;
2 N z5 z0 T3 M( J
9 W4 B. z0 {9 s; |! M4 B7 B! F
& J% w' c6 o7 W
always @(posedge clk) begin
0 c+ k$ J0 K4 v3 q) D2 U0 e5 Q% `& Y
0 {, Q& n1 u& c p; b
if (rst)
( h9 ~/ Q7 [4 }) {% j+ k( h
out <= 8'd0;
% G3 O2 G$ Y* ~; c
else
9 `- Z2 u0 d h7 ~& h/ a) \
% j: K7 v: ^! X, O
out <= out_temp;
( k. u; H3 K" h7 {+ G
9 K2 g5 @8 z6 H
end
, Y4 e9 Z) b8 ]+ T* z
. i8 d; `4 ?' C+ |1 r( t% s! I
endmodule
+ k7 i3 {& U( w" `9 ^: s/ ^! L
3 |# p. d/ k. U* r5 `0 u
+ L( C4 Y7 ~6 y$ s: }; k# N
module test();
- U- _- u) U& h, `
9 I m2 \0 M0 Y# u
reg clk, rst;
) T; w% \5 D4 }2 l* P
reg [7:0] in;
7 p8 z: N/ N3 [8 K+ R) ` X
wire [7:0] out;
. T1 ~6 V0 H. V% w4 I/ a d/ s
, t% {% a; \/ E7 t1 e
timing timing (clk, rst, in, out);
1 E r7 m4 E# ~% @. r
0 M* f% j9 b5 r
5 V% U' Y9 F0 c) a6 y
initial begin
+ t8 I* k2 Y5 c: M3 k. J
$fsdbDumpvars;
4 d& h9 O) z- R3 i( ?- f
clk = 0;
- |/ u7 v( z+ l% U5 P3 O8 T+ J8 }0 a
rst = 1;
- O3 N2 c- ?" K) k
#20
9 {) j9 q! H0 M. c; |# ?# q4 V
rst = 0;
5 x6 K" _+ t. s1 I' f
#5
; y; M& f$ g% F a, ?
in = 5;
5 v; \8 u3 @) X& m2 B- @
#10
/ d: K. }2 R2 t- T( v, r2 H
in = 6;
: k/ P9 f6 c1 U. p
#10
* D; o! x3 m2 V
in = 7;
* V L I4 C( t _
#10
9 H5 ^" l) C" O5 t
in = 8;
i( E7 \! g! y
#10
- I7 f0 ]& S: K) Z, |8 |: i: D
in = 9;
% }- \" K: o7 ^* v! }" n
#500 $finish;
) q0 t, ?5 L( v. @) ~( B
end
, Y& V4 n& S3 v& @
* E$ G. t% J$ ~6 Q# I- g" I
always #5 clk = ~clk;
! \, b# L; h3 k
( r, y6 ` @8 A$ I
endmodule
/ q$ M7 @: T4 |' ^& t% W
- M$ }, ~ i' Z4 e0 T% k5 X
------------------------------------------
3 d( K3 C! ?6 d' W7 l6 t
以下是VCS與Verilog模擬的圖
+ {6 Y2 t; x% |
9 k. {0 G# z" t( S* |
/ U- g" |' i/ g2 E3 o. q* ?( ?7 r
[attach]7871[/attach]
: v& X0 R: ^, f$ Z, r
為什麼會不同??
3 @' k4 x7 Z6 E8 [
各位大大請幫我看看
9 o! ~5 l, Z' V2 o% F% G
( k9 W4 E+ V5 q; n6 y9 _
PS: 我不是要交作業啦,只是在Simulation遇到問題
' v- B7 V: i$ j: j Z; _
! [8 v3 ]8 e) {* w% o1 j: X
謝謝..............................
作者:
darylz
時間:
2009-9-15 03:46 PM
这个很明显是Verilog仿真中的竞争(race)情况。
9 s& E, A- G$ y
你产生in值的initial block和 产生clk的always block各自独立,所以执行顺序是未定的。
作者:
jackyli2k9
時間:
2009-9-15 10:57 PM
請問要如何寫才不會有Race的現象??
8 W3 T" i, w; n+ l$ _/ W
我不知道如何把initial block與always clk 放在一寫??
9 n1 q5 P4 v. U8 q' _7 a
可以告訴我嗎??
$ w: `: f1 [4 J; @" Y' u
/ p( H7 [ ?2 E5 Z" F, R& e
1 ~2 w$ Z& I. P) T
謝謝.................
作者:
bakerly
時間:
2009-9-18 05:47 PM
標題:
回復 3# 的帖子
不要讓clk 的edge和data的改變在同一個時間發生就可以避免這個現象
' Z* P' g$ H# k! ^' a$ y2 M2 y M
而initial和always 沒辦法一起寫。
作者:
darylz
時間:
2009-9-23 11:04 AM
既然你想要的数据和你的时钟是有关系的,为什么不写在一起呢?
2 d* S5 u/ G0 x& j: B
写在两个独立的block,仿真器不可能知道他们有关系的。
作者:
darylz
時間:
2009-9-23 12:14 PM
除非你用clock同步
( V' B# R D& U9 ]* L* G( ^
.....................................................
作者:
ejean
時間:
2009-10-9 05:19 PM
You can solve this problem
5 [6 n' n# x8 Q5 z; P6 P
1. add a delay cell before each register.
+ Y( b# H) o+ A2 J
2. Synthesize the circuit, simulate the code with SDF.
作者:
masonchung
時間:
2009-10-13 09:15 AM
這樣說吧
6 n' b! B- Y! H# A( |9 n6 N! H
initial 是執行一次的迴圈
. Y6 c$ ]. w. |# q
always 是無窮回圈
; I; } C" a/ J7 F w8 J
兩者要同步才能避免這問題
2 z0 r# v" V# H; J& Y) }
同步就是在initial用 @(clk) , 不要用 # n
; L3 ?, {: j2 f
0 T, ^. w. r4 N4 b8 T3 R1 x
以上
" ]" e7 E$ ]" J% C' @9 U0 e
如有錯誤歡迎指正
歡迎光臨 Chip123 科技應用創新平台 (http://free.vireal.world/chip123_website/innoingbbs/)
Powered by Discuz! X3.2