Chip123 科技應用創新平台

 找回密碼
 申請會員

QQ登錄

只需一步,快速開始

Login

用FB帳號登入

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

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

[複製鏈接]
跳轉到指定樓層
1#
發表於 2011-12-4 20:13:29 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
剛接觸,看不懂,希望先進們可以解說一下程式,還有一直編譯錯誤,我不懂為什麼錯誤,如果可以也想請教一下( n" a' [0 D1 \+ M% d+ w2 q

& B% h8 v: ~1 i8 G  t* s'timescale 1ns/1ns
) I1 |! N/ ^7 W& d/ {. C: g: Z& C$ `! _) Q' G6 S
module the_2-4_decoder_testing_and_certification_program;
) v6 S- [- f! B3 o: i; B  ]9 N* p3 n  s: T) [
wire[3:0]y;: M; Z2 R; n$ y7 L. q) }( O2 C( c2 R
reg a;; t% s0 j( {3 x, d$ x
reg b;' `' E  t' W% y, A- J

: b( h! Y# h4 K7 E: B4 ^deco2_4g UUT(' [1 Z* S. A: s1 l
        .y(y),
) p) d3 q& i# `+ @( X        .a(a),
4 @  D# }* o3 z/ s9 T        .b(b));# Y2 s6 A! s3 w% l8 V2 W# j0 g- C
       
' F' y5 r2 g$ N2 C: n* Ointeger TX_FILE;
( U: U- V8 k" h; @$ H1 j6 jinteger TX_ERROR;. A4 ?4 s. C' d* T( t8 n4 u4 l
: ?4 f4 \0 _7 l; P( Q$ t
initial ' x) E1 o+ Q% ~- c; L
begin
1 w( n; s+ ]/ S8 y2 O        TX_ERROR=0;
. Q! z/ L! F) _! s        TX_FILE=$fopen("result.txt");4 y; ]9 L" N4 _, I( x* B
       
% S9 U3 o5 N) @. K* F9 t        a=1'b0; ' M! s3 ?7 X/ ]/ i' t7 d" S9 o! `# t2 I
        b=1'b0;! u$ ?: h% k+ l& T3 V& ^$ A3 d4 `! R
       
+ C* }  F1 r4 R7 q  I        #100
. N* r( G5 ?8 ^8 |8 C        a=1'b1;# ~! O& U6 C4 r2 U- e8 D
       
0 N% B( W, j9 y6 Q6 [. l        #100
& G3 H" A" A8 ~        a=1'b0;                 0 f% `! W$ |  Q% G5 B. R
        b=1'b1;- Y: q5 I: L$ B0 e" u$ ]8 O
       
( n# m- i1 L3 R: M        #100' S# C4 H& q# b2 A  d4 l+ a4 {5 T
        b=1'b1;5 }$ u9 |, R& W( |
        . c# Y) m0 n$ K' T# C! t
        #150  r/ i( S3 J8 _
        if(TX_ERROR==0)
: S: `; i& p  x: v8 E0 h        begin
/ L& T2 e1 U. [. V' b  @7 Q                $display("No errors or warning");
- F8 V+ Y; P, \( o/ a% j0 D" H                $display(TX_FILE,"No errors or warning");7 X" O7 C) ^( h- k6 f2 k
        end else begin% }9 K8 @5 k6 b0 x% d# d
                $display("%d errors found in simulation",TX_ERROR);
; S6 {' l% F7 o* v                $display(TX_FILE,"%d errors found in simulation",TX_ERROR);
  n2 U+ v- V$ y0 l4 X        end
: R. R& O- X( C0 e' n                $fclose(TX_FILE);
, Q5 s& c, `- s; n9 x: J0 }                $stop;
5 U6 `. X# r& r: a# K  N: U& g        end $ L2 U3 }) w& N: P+ z( y4 k# y& s
        ; ~; ~. h3 }; b
        task CHECK_y;( v; R2 Y1 q' ~& K
        input[3:0]NEXT_y;
. ?' O" @  d7 }5 g        #0 begin
# A8 \3 h6 @, e                if(NEXT_y!==y)begin
. f; C7 F/ `9 d; e  \. P. U* w                        $display("Error at time=%dns y=%b,expected=%b",: J7 c" M4 e9 N/ K0 J' J5 Q+ g
                        $time,y,NEXT_y);. y; E6 }: o% W9 A, P* u
                        $fdisplay(TX_FILE,"Error at time=%dns y=%b,expected=%b",                                & a' _9 r  P0 e1 K# b
                        $time,y,NEXT_y);
7 {# Q  F1 |6 D) z/ m/ [* G7 R                        TX_ERROR=TX_ERROR+1;
8 I2 M8 B$ C% }5 I                end $ x2 z( k2 I; j! d- z- j
        end8 @2 S/ A0 t# o
endtask
0 a1 C$ ]4 }/ e" `7 Sendmodule
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享分享 頂 踩 分享分享
2#
發表於 2013-2-5 22:51:28 | 只看該作者
本帖最後由 card_4_girt 於 2013-2-5 10:54 PM 編輯
' T; E( S! i  I8 j
  D. l* ]+ Q& u& g' B你的錯誤有以下幾點: (關於指令解釋以及程式檔請見此帖最底下)
3 Z" Z# k3 J( U& x! c" F1. `timescale 1ns/1ns (請把第一行改成跟這裡一樣的"標點符號")
& W2 T; v6 d! ?8 s. I) n! A2. module the_2-4_decoder_testing_and_certification_program;
$ O& T6 O* o6 j, B! q6 h    必須改成
' S8 q4 K  N- N& r4 N1 j# P; J    module the_2_4_decoder_testing_and_certification_program;6 X& e/ n8 Y1 i% `; D
/ H' V+ F2 }6 V1 f2 C1 R4 {+ D
編譯雖過但必須注意的地方:
" A0 W2 y1 ^1 f/ _  B5 m) |) Y9 t1. fopen可以適時在後面加入要寫入或讀出,會比較知道動作,比如說
3 w- S& L. P: H+ \( a    $fopen("result.txt","w");
& b% L1 z; h, L, N& h! K6 k/ B    模式有w(寫入至未存在或已存在的檔案)、r(讀出)、a(寫入至已存在的檔案)等! u. H+ S0 |7 T. ]4 M2 V0 {
    w的寫入方式是尚未存在的檔案會自動創造且寫入程式訊息,或是對存在的檔案進行覆蓋性寫入,因此每次執行完的結果會把上次結果全部蓋掉( |/ E& [0 |3 u- ^4 N0 D: n) I- F. O2 m0 K
    a的寫入方式是尚未存在的檔案會自動創造且寫入程式訊息,或是對存在的檔案進行非覆蓋性寫入,因此每次執行完的結果會顯示在上次結果之後3 P2 ^9 a) M2 F& [9 h4 y$ z. Q
    你也可以參考下面的頁面:
" I4 x7 ]* P4 P# S* i7 o    http://www.asic-world.com/verilog/verilog2k3.html, r9 {1 ^9 Z0 w; L9 K* r- Z
) i7 m) X( M+ ~% f4 R. K/ v
2. 因為你的程式含有$stop任務,對testbench會使模擬暫停,因此對後面才定義的task宣告來說並沒有作用到,最好是能在initial begin...end區塊之前就定義好task
2 S. b+ y3 }8 J! N# ?$ B3. 你沒有呼叫你的"CHECK_y" task,所以就算把測試的pattern寫出來也沒有作用,應該要想辦法代個值給CHECK_y,才有機會知道TX_ERROR是否為0,並輸出對應的訊息以利debug7 g7 E- C( R' h8 v8 x/ x
4. 不清楚哪一個是你的第一個輸入,不過我是把它當成{b,a}={00,01,10,11}來看,那麼你應該將刪除線部分改成紅色部分,不然會少一種輸入的可能性
+ Z* T2 r8 y- w4 r. Y3 p# A8 t8 m       //{b,a}=2'b00;) j" c, k: P' }* [
       a=1'b0;
: Y) X- N$ m( Y; M) p. x! g        b=1'b0;5 B2 l, h" C- @" B& [+ e' I
        //{b,a}=2'b01;       # G4 @, d4 K4 t. Q4 I% D4 f
        #100
7 R- S2 o& K% K+ P- h        CHECK_y(4'bxxxx);
3 e! L9 d5 F* i: q% D. P) c2 }        a=1'b1;
1 L/ B0 Y$ X8 v; b' B' K       //{b,a}=2'b10;! S1 z& [! @* k% D! U0 q% {7 d
        #100: + f2 R1 I- H) `0 Q
        CHECK_y(4'bxxxx);. Z. n% p: H' Z$ T
        a=1'b0;                 + R$ i, h8 O1 c  X# @  _
        b=1'b1;
& ]/ h2 i5 M2 s. `        //{b,a}=2'b11;      
3 ~8 {4 [( n0 P' F4 m/ l        #100
0 H+ Y; q1 K6 ^9 V* F        CHECK_y(4'bxxxx);3 C0 h0 E9 f5 e, V/ M
        b=1'b1;  //{b,a}=2'b10;
. z$ K% E4 e3 y# h% I  C9 b0 U        a=1'b1;  //{b,a}=2'b11;
9 T8 O, e, i5 ^4 M: I        #150
4 C- T$ X4 H* D0 P! ?        CHECK_y(4'bxxxx);
  p- z# R. S" p0 D: ^8 P
  R4 Y# G3 S4 q* V' D# s5. 關於詳細的解釋,以及可用ModelSim 6.2版模擬的do file(.do)、改過的testbench以及2 to 4 decoder的設計檔,都在下面這個附件中,可參考看看
, D1 t4 |7 L# p; P3 ~
( C( G! ~6 H1 m" z+ `: P# l
) A* F6 K8 {5 k! ]+ q( h希望對你有幫助!!

本帖子中包含更多資源

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

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

本版積分規則

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

GMT+8, 2024-5-8 08:37 AM , Processed in 0.101006 second(s), 18 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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