Chip123 科技應用創新平台

 找回密碼
 申請會員

QQ登錄

只需一步,快速開始

Login

用FB帳號登入

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

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

[複製鏈接]
跳轉到指定樓層
1#
發表於 2011-12-4 20:13:29 | 只看該作者 回帖獎勵 |正序瀏覽 |閱讀模式
剛接觸,看不懂,希望先進們可以解說一下程式,還有一直編譯錯誤,我不懂為什麼錯誤,如果可以也想請教一下
8 j( T8 M! L3 n2 P* H! M$ Q2 O) B6 o- ]  \& r  e1 C
'timescale 1ns/1ns# j' w( ~6 F% g1 `6 R+ m$ L1 I; l

& J1 o5 L1 {$ C$ X1 m* zmodule the_2-4_decoder_testing_and_certification_program;  L0 O# b& J2 ~8 T- X+ ?, k2 t
0 E5 M" {. K7 r2 [
wire[3:0]y;# l+ O$ \" t# @7 f; j
reg a;7 o7 D& Z. z0 w5 {- o  C0 g; y
reg b;
; _! I+ h1 W  H: k7 C1 m: L
# o8 x$ Y1 C2 k6 o2 B0 i+ ?0 Ldeco2_4g UUT(
: Y4 k! \5 A* J9 m6 |6 X0 U, d        .y(y),
7 B# q2 p1 N# Y: k* l9 W: Z2 M! `+ W* x        .a(a),5 B5 {: R* }0 o: Q( L
        .b(b));% W5 q" j6 ^$ G; ?4 u; e& h
       
+ k( T. s  W9 v6 y& G/ @integer TX_FILE;8 ]  f0 c& p1 `" n
integer TX_ERROR;
; @1 o. B  V/ F7 o2 }
. o# j$ F1 g/ y; f  Ainitial ) ~* W) K5 Y7 p5 `( U7 |& V  t) a
begin
- ?. a( z% |3 V, U        TX_ERROR=0;6 Z" a0 g5 H- S# }& [0 N
        TX_FILE=$fopen("result.txt");+ ^9 R- m; p( R( U: ~2 g
        9 \2 t. |- P6 {
        a=1'b0;
9 F9 [8 |" [& E) B8 @' D' o: z        b=1'b0;$ b* _% `& q! @( {* l0 h4 ~: ~2 d* L' I
        + Q1 R0 V$ f/ T& F/ |1 a8 O6 T2 o
        #100( u+ n  b+ _0 I* O- \% ?: g
        a=1'b1;
& q! N2 u% w$ Y" O       
$ |1 `- F' z( J' Z8 q3 j        #100$ W$ P/ e1 e9 x  f$ {
        a=1'b0;                
/ X" m6 T) l7 m8 `" k7 |2 y        b=1'b1;- c" k8 ]% z0 f* H; V# U! P
       
4 x' H, }/ k; T$ y5 |9 J        #100$ T2 E' z9 L% B  _7 e
        b=1'b1;& T! R3 \8 _) s1 I( K
        8 ~  c/ v9 p9 V/ i) j
        #150
3 R, s6 j- f% o6 b& }        if(TX_ERROR==0)
$ t, L: e3 h- D! @        begin5 I. \% z2 d0 N1 i3 G. `% D* v/ w. C
                $display("No errors or warning");" j) K9 T5 W5 @6 |0 }
                $display(TX_FILE,"No errors or warning");0 G/ t3 x5 T+ V$ I0 `9 t
        end else begin
: S, v5 c( @$ n. {                $display("%d errors found in simulation",TX_ERROR);2 s6 @1 [9 ~5 A
                $display(TX_FILE,"%d errors found in simulation",TX_ERROR);
7 v5 O# e' h: |" E0 @- E! [/ ^        end
4 J; a4 h" B" Q( R. }' `                $fclose(TX_FILE);
: Z3 w- f6 h" d3 p7 y+ v                $stop;- U* y5 G: i! j& h
        end
: \/ p  {- W$ k) E; L' Q2 @       
6 T( z1 ?" s1 K        task CHECK_y;' }8 a% d$ `5 C% Z2 @7 ?
        input[3:0]NEXT_y;
6 ^/ M$ k& w0 @$ \# \        #0 begin
; a1 S& |0 q# b& I6 n                if(NEXT_y!==y)begin
) E& I, @/ q; k* r$ x                        $display("Error at time=%dns y=%b,expected=%b",
. X7 q7 Y- D/ Q1 Q                        $time,y,NEXT_y);# [  s: Y0 @, d3 `5 }* q& h; u: }
                        $fdisplay(TX_FILE,"Error at time=%dns y=%b,expected=%b",                                1 y9 z* k1 z- q
                        $time,y,NEXT_y);
6 [+ I+ N9 n. l. I1 H- S. w# P                        TX_ERROR=TX_ERROR+1;: X6 Y# @) ^0 l/ }4 h# {6 S& r! S
                end
8 d' z2 V0 P- T$ k* O& s( @7 q        end
; Z5 [8 K" e  F5 L5 Hendtask; Z: {2 [0 P0 H" d
endmodule
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享分享 頂 踩 分享分享
2#
發表於 2013-2-5 22:51:28 | 只看該作者
本帖最後由 card_4_girt 於 2013-2-5 10:54 PM 編輯 . _/ Z) v- k/ }9 b4 q) T

5 ?  o1 ?8 C5 a3 o你的錯誤有以下幾點: (關於指令解釋以及程式檔請見此帖最底下)
, w5 X$ A" ~  E1. `timescale 1ns/1ns (請把第一行改成跟這裡一樣的"標點符號")
/ i. h1 S" O+ J& F! H0 j2. module the_2-4_decoder_testing_and_certification_program;( f1 @: R& V5 ]1 X7 a' }
    必須改成2 s1 T5 O  v) f' q& U( x: [& w
    module the_2_4_decoder_testing_and_certification_program;
1 q; N% c3 m3 Q0 @' U- W: C! k+ J& ~3 l6 Z" j, e- ]# g
編譯雖過但必須注意的地方:$ c% c9 g( c1 ~4 A' P7 @& Y0 ^7 H
1. fopen可以適時在後面加入要寫入或讀出,會比較知道動作,比如說, o3 j4 Q2 U3 `' k
    $fopen("result.txt","w");+ F6 b# o1 [, D2 m
    模式有w(寫入至未存在或已存在的檔案)、r(讀出)、a(寫入至已存在的檔案)等) e  l1 n' r) z3 p) Q
    w的寫入方式是尚未存在的檔案會自動創造且寫入程式訊息,或是對存在的檔案進行覆蓋性寫入,因此每次執行完的結果會把上次結果全部蓋掉
$ j! d* b6 V3 _    a的寫入方式是尚未存在的檔案會自動創造且寫入程式訊息,或是對存在的檔案進行非覆蓋性寫入,因此每次執行完的結果會顯示在上次結果之後
6 M' E9 E5 q. e* s! H3 `' c$ p    你也可以參考下面的頁面:1 G' s) }+ k7 r8 {! ^6 ^7 Q
    http://www.asic-world.com/verilog/verilog2k3.html  h5 _% U+ K, ]6 z$ x7 r

3 M" H0 g! M- Y8 ?  w9 h1 w2. 因為你的程式含有$stop任務,對testbench會使模擬暫停,因此對後面才定義的task宣告來說並沒有作用到,最好是能在initial begin...end區塊之前就定義好task" n$ i- G1 R3 p$ j1 y
3. 你沒有呼叫你的"CHECK_y" task,所以就算把測試的pattern寫出來也沒有作用,應該要想辦法代個值給CHECK_y,才有機會知道TX_ERROR是否為0,並輸出對應的訊息以利debug
' k' s( }: X1 f4. 不清楚哪一個是你的第一個輸入,不過我是把它當成{b,a}={00,01,10,11}來看,那麼你應該將刪除線部分改成紅色部分,不然會少一種輸入的可能性
* r! @3 m" M9 C. N$ s. ~# [       //{b,a}=2'b00;1 @$ i* A$ X3 }; G: h! Q4 u
       a=1'b0;
. r5 c2 O: _% x2 Q        b=1'b0;5 v, x  w- g) Z2 V& \1 _
        //{b,a}=2'b01;       3 w1 K8 t: j) y) b8 F
        #100) J4 W2 O$ L7 k; s. `6 T& q
        CHECK_y(4'bxxxx);! e2 F$ ]8 [: M6 l3 u) S
        a=1'b1;
4 ^; I' p4 E1 v$ n- l6 |3 T% E& R4 v       //{b,a}=2'b10;; P% \: U9 _) k/ j
        #100: 7 U! G8 V- ?( m
        CHECK_y(4'bxxxx);3 L; }+ e0 ~& E9 Q
        a=1'b0;                 
4 i  }4 b7 r( h9 M& J. @: S2 p6 O        b=1'b1;
" Y! a0 N+ J+ p6 ?( V        //{b,a}=2'b11;      
7 A: P* j3 p) @        #100
- r5 T3 T( G7 V+ O  ~- n0 p        CHECK_y(4'bxxxx);3 H2 {2 |5 `: F( H' u0 f
        b=1'b1;  //{b,a}=2'b10;
: C3 p- W5 T  b6 N( E% @: `        a=1'b1;  //{b,a}=2'b11;
* x/ G0 t( T' a8 I) d! N5 D% u) j5 [        #150
3 P; E7 w% W& v- L- @        CHECK_y(4'bxxxx);5 n9 @/ c6 l& W4 t

: D0 K8 ?$ V: n9 {5. 關於詳細的解釋,以及可用ModelSim 6.2版模擬的do file(.do)、改過的testbench以及2 to 4 decoder的設計檔,都在下面這個附件中,可參考看看6 Y$ F! ]' G% {7 ~: g
$ K) d4 M2 a# v5 n/ J

% l( O" a7 k3 t/ T3 l4 C希望對你有幫助!!

本帖子中包含更多資源

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

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

本版積分規則

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

GMT+8, 2024-5-19 02:53 PM , Processed in 0.105513 second(s), 19 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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