Chip123 科技應用創新平台

 找回密碼
 申請會員

QQ登錄

只需一步,快速開始

Login

用FB帳號登入

搜索
1 2 3 4
查看: 12742|回復: 1
打印 上一主題 下一主題

[問題求助] 2-4解碼器測試驗証程式編譯錯誤

[複製鏈接]
跳轉到指定樓層
1#
發表於 2011-12-4 20:13:29 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
剛接觸,看不懂,希望先進們可以解說一下程式,還有一直編譯錯誤,我不懂為什麼錯誤,如果可以也想請教一下
% `( Q5 q7 v# i! \8 c2 c
6 T7 d4 N& S( R7 n9 f: v) U5 S'timescale 1ns/1ns! H; F$ v7 a1 U' Q9 h( S+ h

( U( A9 {8 a; y' h7 f) Gmodule the_2-4_decoder_testing_and_certification_program;" h  w& i6 W" w; s4 r
) M  s3 u4 F; N) Z. l+ @
wire[3:0]y;
' O9 F6 N0 x! Nreg a;) h* K) J, Q3 W9 k7 F
reg b;1 a* s" K' E( v0 b5 O* V) E
8 N! A, G2 o# r  z: Z: A; _
deco2_4g UUT(
' T2 l5 x! {# r4 c+ I/ t* Z$ ?  y        .y(y),
6 ~1 a& V9 x4 P% Z        .a(a),. ]% c+ A9 L4 n8 U, g% o9 i5 ~
        .b(b));& c! u; ^/ D4 q) p+ a  d6 G7 ?, c
       
7 C: l: H* |% ~- k# ~7 i  r" L: I9 R0 Binteger TX_FILE;6 H: k# X. d& D: G
integer TX_ERROR;$ G; F, I6 ^8 ^
: q9 x& e+ V" f! w- L: J
initial $ r7 k( V& }% A- T/ ]0 n
begin
1 C4 {2 T  [" X7 F  `* w        TX_ERROR=0;/ u: l6 O8 p- }5 C' u: d
        TX_FILE=$fopen("result.txt");0 {, z9 `. s3 ^% ^$ P% D; s
        % J' @" L, s: ~6 J3 j! i0 k/ ]- l) V# |
        a=1'b0; + X' n: E' i& i/ v, s7 _
        b=1'b0;& I' Q! O4 I. g  w, T# Z, z
       
0 D  L6 s7 l! ~5 j3 K0 B        #100
: ]. z8 [, A  x3 N( f0 t: z        a=1'b1;
  P& j4 K# R; o        6 L4 s0 J4 d$ t
        #100
& P+ M8 K+ Z$ H  q9 w3 s        a=1'b0;                
* X; {2 I! C, ?3 }( Q4 y        b=1'b1;+ {. x$ i, {/ j5 ]2 Q
        : R# ]9 k" s9 E+ T
        #100# b0 x0 y5 x- b7 j! ]- u
        b=1'b1;7 z& d0 |& B# k3 b' o2 }3 h( ]
       
6 {) `/ S2 A7 e& ]/ }        #150. X+ r( \4 K' U4 ^
        if(TX_ERROR==0)4 ~& v. U4 |& }  w# o  a6 ]
        begin
7 O( I7 F' R2 \2 p% W1 u                $display("No errors or warning");
: A% G3 ?- Q/ b6 V2 v  p( x                $display(TX_FILE,"No errors or warning");
" f; k/ f( T$ F2 o        end else begin1 ?& v* |( |' o6 c+ ?
                $display("%d errors found in simulation",TX_ERROR);( P+ n2 H3 x8 w; u' ^
                $display(TX_FILE,"%d errors found in simulation",TX_ERROR);
' i' F! y+ k0 z, W/ n        end + w% b8 D; U, A/ }
                $fclose(TX_FILE);2 l7 C0 U& J" x" @/ o$ X1 J- M4 S
                $stop;
3 H" Z9 F( E% _& p* H        end
' w/ }1 t- d/ j9 \       
+ v2 _3 `* Q% ~7 U" v" P* x. i        task CHECK_y;+ @" H* t( n- Q. U
        input[3:0]NEXT_y;
" c5 D2 r8 w7 ^8 }. h        #0 begin
; [, r- y& c0 a- X2 m8 H  B! T                if(NEXT_y!==y)begin
2 D# G! s/ o- c( i' y# c3 Q9 s. {                        $display("Error at time=%dns y=%b,expected=%b",
) W- X7 ~" s5 i) F- ?- W                        $time,y,NEXT_y);' x1 u4 D1 c- G! T+ b3 `! M9 ]
                        $fdisplay(TX_FILE,"Error at time=%dns y=%b,expected=%b",                                * b: [4 l) C- g$ z% b0 g/ z7 I# G
                        $time,y,NEXT_y);# t9 u4 z8 a- a/ }! g3 |  T
                        TX_ERROR=TX_ERROR+1;" a8 |6 t) x# t  ]& \
                end
2 X: h3 [' Z+ j* r9 Q# Y- v  K3 ~( o        end- ~% i2 N1 {  N0 u3 J  E+ I
endtask
3 g+ n% y& s' B/ n0 t" v5 E& o8 qendmodule
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享分享 頂 踩 分享分享
2#
發表於 2013-2-5 22:51:28 | 只看該作者
本帖最後由 card_4_girt 於 2013-2-5 10:54 PM 編輯 . [7 W: w, y9 q+ a9 q+ Y' k! q( J( n

! ?* g5 T- q4 M. M你的錯誤有以下幾點: (關於指令解釋以及程式檔請見此帖最底下)! K# Z6 y# i/ Q/ y$ A
1. `timescale 1ns/1ns (請把第一行改成跟這裡一樣的"標點符號"). H% P( D0 {( B% ?1 K7 X. K
2. module the_2-4_decoder_testing_and_certification_program;6 X5 J+ j  r% l9 l  h8 c* S" U
    必須改成
9 J. M/ G" ]! w9 j( |5 e# K7 S    module the_2_4_decoder_testing_and_certification_program;% f1 o, P# E' p2 C

- ^. I) T( n, v1 a; _/ \$ b9 [編譯雖過但必須注意的地方:
' v$ s6 X5 c5 e- k1. fopen可以適時在後面加入要寫入或讀出,會比較知道動作,比如說- _+ V4 c: S. \. `0 J7 R" B; B
    $fopen("result.txt","w");! K* L  {: Z- p3 r. c+ \# r$ `; a; d
    模式有w(寫入至未存在或已存在的檔案)、r(讀出)、a(寫入至已存在的檔案)等
3 Z  C: D& u  X2 p% L    w的寫入方式是尚未存在的檔案會自動創造且寫入程式訊息,或是對存在的檔案進行覆蓋性寫入,因此每次執行完的結果會把上次結果全部蓋掉
% n" c) C/ y5 G    a的寫入方式是尚未存在的檔案會自動創造且寫入程式訊息,或是對存在的檔案進行非覆蓋性寫入,因此每次執行完的結果會顯示在上次結果之後2 M4 D6 N5 T8 H- d
    你也可以參考下面的頁面:6 Q3 N/ w7 k# x6 I" c
    http://www.asic-world.com/verilog/verilog2k3.html+ f2 K, u4 `; j* x1 C' E4 g
' A( Y6 P/ }. i/ Y! X0 |$ ^. z5 g2 M
2. 因為你的程式含有$stop任務,對testbench會使模擬暫停,因此對後面才定義的task宣告來說並沒有作用到,最好是能在initial begin...end區塊之前就定義好task
# ?2 K3 i; d% @' v3. 你沒有呼叫你的"CHECK_y" task,所以就算把測試的pattern寫出來也沒有作用,應該要想辦法代個值給CHECK_y,才有機會知道TX_ERROR是否為0,並輸出對應的訊息以利debug  q1 C  C) u( R* x. d. P
4. 不清楚哪一個是你的第一個輸入,不過我是把它當成{b,a}={00,01,10,11}來看,那麼你應該將刪除線部分改成紅色部分,不然會少一種輸入的可能性  O; r8 V+ Q- y) M1 Q$ w  Y
       //{b,a}=2'b00;
4 P& u) B. J: ^( K; C: u9 G+ G& t$ H       a=1'b0;0 n) }" l' M3 f" ~0 E% s, a& s
        b=1'b0;( d& `  W8 f- k" f' Y" l% \) `
        //{b,a}=2'b01;       + X( k6 C5 N; y5 L, q
        #100
. |" P* d* {& O0 K1 j  t; y4 ~0 a        CHECK_y(4'bxxxx);9 y+ w$ `1 z% i" z
        a=1'b1;
" C' Z0 B. L9 s+ a( ?% B       //{b,a}=2'b10;
3 b3 e/ a5 U/ `# r# h* b) B, K, `        #100: ( n8 Y7 J, R# z( J, L( r
        CHECK_y(4'bxxxx);( ?. ~; L/ U( y( f3 E, G6 \2 p
        a=1'b0;                 ( a" d8 }; N6 w/ o; |+ o
        b=1'b1;
6 g" A5 h+ ~: l7 b9 S5 u        //{b,a}=2'b11;       ( F5 }2 X+ ^, @* V) |8 O9 [5 ]
        #1000 x( t: l% A( Q, c. D& F5 Z
        CHECK_y(4'bxxxx);3 F: W4 V- h4 W. y6 a3 n
        b=1'b1;  //{b,a}=2'b10;& u5 I. }' v- S' l3 {+ p7 S% e
        a=1'b1;  //{b,a}=2'b11;8 A* W! V  k' |' p  d
        #150* Z6 v2 D$ y. \- I, j% A; }
        CHECK_y(4'bxxxx);* d1 ~+ l5 x! ~) l
$ E, i; i2 c5 {0 z8 i. M
5. 關於詳細的解釋,以及可用ModelSim 6.2版模擬的do file(.do)、改過的testbench以及2 to 4 decoder的設計檔,都在下面這個附件中,可參考看看
3 R  ~/ x# W: N8 n; v  u9 D8 H- @5 L- A$ L* {! k/ ]

4 g! U8 `  Y: U( X希望對你有幫助!!

本帖子中包含更多資源

您需要 登錄 才可以下載或查看,沒有帳號?申請會員

x
您需要登錄後才可以回帖 登錄 | 申請會員

本版積分規則

首頁|手機版|Chip123 科技應用創新平台 |新契機國際商機整合股份有限公司

GMT+8, 2025-1-17 04:58 AM , Processed in 0.156000 second(s), 19 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回復 返回頂部 返回列表