Chip123 科技應用創新平台

 找回密碼
 申請會員

QQ登錄

只需一步,快速開始

Login

用FB帳號登入

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

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

[複製鏈接]
跳轉到指定樓層
1#
發表於 2011-12-4 20:13:29 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
剛接觸,看不懂,希望先進們可以解說一下程式,還有一直編譯錯誤,我不懂為什麼錯誤,如果可以也想請教一下
) @4 V5 r- f6 f
6 H; M, d' U2 b7 R9 p'timescale 1ns/1ns/ G/ D) }0 d8 z( i- a. [( j  B% ^
/ b& F+ U0 c5 G+ a% e: W. G! d! V/ V
module the_2-4_decoder_testing_and_certification_program;1 z5 Q" [' f4 }$ [6 C
4 C+ n* S  N( _
wire[3:0]y;0 R) y* k/ U* @1 t
reg a;
8 i% c" Z7 o6 J2 Oreg b;
7 v" g0 y- A( X/ N0 {
* L4 Y0 L; w0 ?% g* Z* _' t# Rdeco2_4g UUT(9 A. \* w! p: H0 s
        .y(y),
# n" Q3 |/ E# L! o        .a(a),  r5 a+ H: F( \' L8 S( c3 C3 }
        .b(b));
' s% S5 b6 T8 a# f# B/ @1 H        1 W3 |+ T! C2 U( L+ V$ S0 N7 i
integer TX_FILE;
' y0 a0 `% k0 C: finteger TX_ERROR;# J( \( o% P/ k5 I

8 S9 e$ i( b: Tinitial
2 w- _" N' n3 Q- T; V9 Qbegin
3 v8 j! C( W) s  E; V. C$ @        TX_ERROR=0;
0 ~1 q: G) _" F. R        TX_FILE=$fopen("result.txt");
. A7 q& f+ v" z  s: u        & h' m  J1 Y; w, s& M$ y$ n, O+ s9 |6 U
        a=1'b0; 7 a( P: c0 d4 v; L
        b=1'b0;- w% q6 Q* ~) `) ^. K; I
       
3 W/ A4 q6 S% |        #100  k5 p! G0 ]  H5 M9 C
        a=1'b1;: K4 N3 s; @7 s
       
( H3 U) Z: n+ j/ y+ `5 D+ x        #100
1 Q! C! q6 A: u+ u6 f& g' k( d        a=1'b0;                
1 T. h. `: y- Y        b=1'b1;- k( U& L5 I; B, x7 t2 d
       
$ R! C7 x! F: x( P7 j4 a& T        #100
: L! L! v8 ~/ ~8 Q' |$ U% y        b=1'b1;
. J- j1 L5 n# ?2 e  H5 ]# r       
5 q: [# [* M! e* C! U8 p$ W        #150/ l, `' Y, k2 c8 Y& C6 ^: p
        if(TX_ERROR==0)" E  |. p8 O& |: f: j
        begin. b1 W& W( V6 R" G* P* }- c
                $display("No errors or warning");6 P' L" m; l# E+ M0 k% r* L
                $display(TX_FILE,"No errors or warning");
8 q. |, D( D6 r! Z/ R        end else begin8 j$ @, ]! \" i: {0 \- G
                $display("%d errors found in simulation",TX_ERROR);
) c3 z9 _5 q- o) u$ j                $display(TX_FILE,"%d errors found in simulation",TX_ERROR);' {3 f. J6 o8 F/ }
        end
+ U# ?( v4 a0 H                $fclose(TX_FILE);7 `9 ~  z/ @' X4 X0 G
                $stop;
5 Q: D0 \5 _  _3 J        end
% O1 Z2 B7 g% }% m8 J       
1 o; `% m# S; K7 x/ W        task CHECK_y;
: P. j. B6 [* x' R: P+ u        input[3:0]NEXT_y;
/ w* i( T  Q( y& y- r        #0 begin% g2 _! z2 t. P& u
                if(NEXT_y!==y)begin
+ t$ A; x" n& c$ L9 u                        $display("Error at time=%dns y=%b,expected=%b",* u& m$ M) g; m* X1 e/ q2 k
                        $time,y,NEXT_y);
! x, p% }8 E) e. K& k3 D/ W' U                        $fdisplay(TX_FILE,"Error at time=%dns y=%b,expected=%b",                               
/ C9 ]# p1 i+ s7 ^/ X, v                        $time,y,NEXT_y);' g# u( [" [# ?4 H
                        TX_ERROR=TX_ERROR+1;
2 A3 [2 g9 G4 X3 M1 r  e                end
/ e% E. v" P4 B/ A4 r9 h        end
0 V( c9 [0 B  w6 _  Y, |% Lendtask8 ]( w6 A9 ]# x
endmodule
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享分享 頂 踩 分享分享
2#
發表於 2013-2-5 22:51:28 | 只看該作者
本帖最後由 card_4_girt 於 2013-2-5 10:54 PM 編輯
9 k7 M" h* f. v: F0 M% B0 k& ^5 m$ u  X# W' N! ^9 @  }# i) R
你的錯誤有以下幾點: (關於指令解釋以及程式檔請見此帖最底下)3 [0 `6 }6 I/ M5 b4 l) z
1. `timescale 1ns/1ns (請把第一行改成跟這裡一樣的"標點符號")
  B; q0 S! g: i* n( A$ _$ H2. module the_2-4_decoder_testing_and_certification_program;4 l; T- Z% q- m
    必須改成7 {1 o) N9 O3 ^' I
    module the_2_4_decoder_testing_and_certification_program;* k3 H& ?) X% s2 T. i

3 D& w- R  f/ g  z$ O編譯雖過但必須注意的地方:) K' m1 P' O  s/ w
1. fopen可以適時在後面加入要寫入或讀出,會比較知道動作,比如說
" O  P& c6 }  _& q6 B    $fopen("result.txt","w");- |% X8 }3 {( l$ v/ E$ Y
    模式有w(寫入至未存在或已存在的檔案)、r(讀出)、a(寫入至已存在的檔案)等
8 R( |/ w# i) E, w    w的寫入方式是尚未存在的檔案會自動創造且寫入程式訊息,或是對存在的檔案進行覆蓋性寫入,因此每次執行完的結果會把上次結果全部蓋掉
9 c% f$ G1 F. j    a的寫入方式是尚未存在的檔案會自動創造且寫入程式訊息,或是對存在的檔案進行非覆蓋性寫入,因此每次執行完的結果會顯示在上次結果之後, ?# f$ L9 z  @$ ^3 J0 s
    你也可以參考下面的頁面:
  W4 `. w/ x; e    http://www.asic-world.com/verilog/verilog2k3.html& C: v, n7 K( d  b4 Z

8 m, c& n7 _6 K8 v0 {2. 因為你的程式含有$stop任務,對testbench會使模擬暫停,因此對後面才定義的task宣告來說並沒有作用到,最好是能在initial begin...end區塊之前就定義好task
: M: I- n% {: }1 K5 K3. 你沒有呼叫你的"CHECK_y" task,所以就算把測試的pattern寫出來也沒有作用,應該要想辦法代個值給CHECK_y,才有機會知道TX_ERROR是否為0,並輸出對應的訊息以利debug
8 s+ ^  O9 U$ Y4. 不清楚哪一個是你的第一個輸入,不過我是把它當成{b,a}={00,01,10,11}來看,那麼你應該將刪除線部分改成紅色部分,不然會少一種輸入的可能性0 S/ H& H2 Q7 r8 D7 W- Y/ \
       //{b,a}=2'b00;
9 n: p' r" d* I/ V       a=1'b0;4 e2 k4 K6 w( v% b/ E) l+ L2 s& Y
        b=1'b0;
* D& ~% A& j' V1 D        //{b,a}=2'b01;       9 v$ g1 e: d* F1 L* F% T$ V' D4 v
        #100
  O% \$ f0 B8 M* P( n        CHECK_y(4'bxxxx);
/ z6 \" j8 D" }: {; `' f        a=1'b1;
/ k$ {7 }, P2 N+ S5 m% D       //{b,a}=2'b10;
* z+ @$ \9 v( Z  E  y3 H        #100:
$ y3 f9 R3 \3 }2 G7 v        CHECK_y(4'bxxxx);$ r* n, _2 j0 [
        a=1'b0;                 8 T* W" r1 q' U3 a, r7 ?
        b=1'b1;4 w7 |+ O( `. s) u
        //{b,a}=2'b11;       3 \  a/ ^* W" g  h, I
        #100$ e4 E7 W! l7 N1 G
        CHECK_y(4'bxxxx);8 a0 D! q' X% P1 [
        b=1'b1;  //{b,a}=2'b10;
5 R4 b8 A# U) E3 {        a=1'b1;  //{b,a}=2'b11;- e& G5 x/ g. p) b
        #150
$ N& `: x' e: m! ]: P3 a        CHECK_y(4'bxxxx);; w, X0 F2 ~, n& e: j

; a) Z3 O& d, ^/ N( C5. 關於詳細的解釋,以及可用ModelSim 6.2版模擬的do file(.do)、改過的testbench以及2 to 4 decoder的設計檔,都在下面這個附件中,可參考看看& J: ]% A6 ~5 v# M5 N9 P
5 O) l+ P) s* {' [; z

0 g) `4 s% s5 ?  C% R6 [" N" l希望對你有幫助!!

本帖子中包含更多資源

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

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

本版積分規則

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

GMT+8, 2024-6-1 10:39 AM , Processed in 0.114514 second(s), 18 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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