Chip123 科技應用創新平台

 找回密碼
 申請會員

QQ登錄

只需一步,快速開始

Login

用FB帳號登入

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

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

[複製鏈接]
跳轉到指定樓層
1#
發表於 2011-12-4 20:13:29 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
剛接觸,看不懂,希望先進們可以解說一下程式,還有一直編譯錯誤,我不懂為什麼錯誤,如果可以也想請教一下
  c4 u# Y( D" U" M( {- c/ i8 b% `# |/ h: @( @9 K
'timescale 1ns/1ns( @4 }6 j- S8 o( W& }% T& r. A' |

: E5 Y7 t4 O3 z3 X9 {- A1 h& zmodule the_2-4_decoder_testing_and_certification_program;
8 Y/ N) O, C. O, {& t
8 L1 [; M- i% A* \% twire[3:0]y;
# c3 m: S+ M2 ]: b/ L% N1 T% y" Hreg a;
) p- Y/ A+ Q1 m' {. y: r# ?reg b;9 D- b5 A' Y7 f4 @2 q
: c2 f6 ]" v) ^+ p: w) a+ B; n
deco2_4g UUT(
2 Z! @( O! T1 y7 n5 h! z, p6 d" X        .y(y),
% m& H! N* ~' N! x9 B2 v; o* H) C        .a(a),
) R. e; p% }1 s. K. ^        .b(b));' B$ o  D$ c/ Z% H( y4 S' R! C
        . c& E* `) J/ h, o" n: P/ ?
integer TX_FILE;) V" ~0 z/ X3 ?+ }+ X! a
integer TX_ERROR;- I+ r% a7 i7 _
! X& p  G) K( F# {+ L- t, P& \
initial
$ h( r! @+ Q% Sbegin( X* ~8 l0 u; `" h/ o- I
        TX_ERROR=0;
$ h4 Z' H8 C/ s6 y        TX_FILE=$fopen("result.txt");2 F3 `- m0 Q* k! [
        # D1 [* A3 ]4 Q; ?8 L
        a=1'b0;
0 `9 d1 s2 S- k( h' T2 V& L        b=1'b0;
: ~" N+ P( V2 J+ }/ U       
6 y* I1 b* u, Y5 y  F2 L( [        #100
, j5 x) T4 L+ u# g: s5 M2 b        a=1'b1;
0 }* I. n: H: q       
5 J2 {8 v9 U! E8 M        #100
+ Q8 A5 b6 v9 Z5 _) X8 k4 P        a=1'b0;                
0 D+ Z0 Q$ _4 w$ _: ^        b=1'b1;
2 Q7 a9 T/ X- d1 S5 v% @! h' I8 A        . B7 @& k. T1 S4 N6 i. u7 V( _' [# ]# d
        #100$ y- X/ q8 H. z. W  X8 L
        b=1'b1;
% E% H- g6 @$ Y5 B+ \/ |( D0 X       
6 O# ~+ f# W. ?$ q, \        #150
' h- V$ i8 B9 C9 A        if(TX_ERROR==0)3 }% {3 e  p1 ^; K) n) }
        begin
$ d1 _2 K( O( P7 x+ y5 Y                $display("No errors or warning");
8 u$ V6 O$ B6 Y* j9 x; ~8 L                $display(TX_FILE,"No errors or warning");! h( v' C8 [: f) Y: z( M5 b, c% B
        end else begin8 j. E  i. q' n8 n, |7 {
                $display("%d errors found in simulation",TX_ERROR);
4 K+ i+ d0 R8 y5 W) r                $display(TX_FILE,"%d errors found in simulation",TX_ERROR);$ y2 u2 M% o8 A
        end
1 j3 \+ }4 [2 s7 c+ p5 a                $fclose(TX_FILE);% ^, g: @6 J8 X/ ?. t. E8 u$ ]- Q  q
                $stop;$ ]1 Q" t, ]: ^/ M
        end
8 F# {1 M- Q" Z* I        0 s' `4 {! `7 ]4 ?' @
        task CHECK_y;# X3 j* H+ f$ ]( @' D7 {
        input[3:0]NEXT_y;
& S7 z* ^2 H, k2 e! x6 A1 s        #0 begin& v( M3 _  J) o
                if(NEXT_y!==y)begin
; w% B; t5 I% H7 H; j                        $display("Error at time=%dns y=%b,expected=%b",
: j" i( B+ e; }4 L                        $time,y,NEXT_y);( Y+ ~5 [  j' O0 |
                        $fdisplay(TX_FILE,"Error at time=%dns y=%b,expected=%b",                               
  @% n; x- d. ?5 N, u" l1 E                        $time,y,NEXT_y);
9 p+ f& z3 x3 |" N4 D                        TX_ERROR=TX_ERROR+1;
( w# m$ |4 [( C- O$ {                end ! X" V+ p5 O! I) B' l$ ?6 g
        end
* J- g' w+ H/ y; A$ h2 ^endtask8 K) \( F; Q5 i- J& w/ T. {
endmodule
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享分享 頂 踩 分享分享
2#
發表於 2013-2-5 22:51:28 | 只看該作者
本帖最後由 card_4_girt 於 2013-2-5 10:54 PM 編輯 , P/ f& W" _- }9 O* ?$ q4 @
7 t' W& @. ~  F& k) D
你的錯誤有以下幾點: (關於指令解釋以及程式檔請見此帖最底下)
6 U. ]9 X; G2 F3 B! a4 n( N1. `timescale 1ns/1ns (請把第一行改成跟這裡一樣的"標點符號")
! y) q8 _5 W  z$ C5 l2. module the_2-4_decoder_testing_and_certification_program;# S" P; {( _4 B
    必須改成( ^8 h$ q  \# T$ Z; R, @% U
    module the_2_4_decoder_testing_and_certification_program;
: S# I* u! e% O4 H& d  i. [  V6 G: H% I
編譯雖過但必須注意的地方:
( _$ f! z* k' k, p* @1. fopen可以適時在後面加入要寫入或讀出,會比較知道動作,比如說
& a8 \& J. y1 i( g6 z    $fopen("result.txt","w");
/ n6 |! D% G- e* O5 F- i# w2 ]    模式有w(寫入至未存在或已存在的檔案)、r(讀出)、a(寫入至已存在的檔案)等
. x& h" ]0 N2 I( j$ p    w的寫入方式是尚未存在的檔案會自動創造且寫入程式訊息,或是對存在的檔案進行覆蓋性寫入,因此每次執行完的結果會把上次結果全部蓋掉+ v5 X. ^& b5 i0 P: c) D8 t5 P
    a的寫入方式是尚未存在的檔案會自動創造且寫入程式訊息,或是對存在的檔案進行非覆蓋性寫入,因此每次執行完的結果會顯示在上次結果之後* d9 A( _/ I$ }* w0 f  _
    你也可以參考下面的頁面:" v. ]1 |6 D, S6 Z* z& t/ h
    http://www.asic-world.com/verilog/verilog2k3.html
0 y8 P3 [$ [3 Q% Q2 [- I4 }8 u6 H& z) b1 Y) y3 ]: J: N( P
2. 因為你的程式含有$stop任務,對testbench會使模擬暫停,因此對後面才定義的task宣告來說並沒有作用到,最好是能在initial begin...end區塊之前就定義好task4 L" w0 J4 b' u3 A& p* o/ j
3. 你沒有呼叫你的"CHECK_y" task,所以就算把測試的pattern寫出來也沒有作用,應該要想辦法代個值給CHECK_y,才有機會知道TX_ERROR是否為0,並輸出對應的訊息以利debug% k$ T5 f! F- S# _! G7 |; b4 |
4. 不清楚哪一個是你的第一個輸入,不過我是把它當成{b,a}={00,01,10,11}來看,那麼你應該將刪除線部分改成紅色部分,不然會少一種輸入的可能性
* j. _+ f/ B) k+ h       //{b,a}=2'b00;
4 _: Z7 P- {( H3 r( N       a=1'b0;
3 d- l9 Q  w9 @        b=1'b0;, l( r$ [2 ]* E6 k
        //{b,a}=2'b01;       / }# O( x% f# x- b% j* D8 R
        #100
( U' l% p) U* q, a' b3 N. q        CHECK_y(4'bxxxx);
: F7 _9 I0 |5 O9 I9 J        a=1'b1;! k( F1 n4 A9 C; b1 g
       //{b,a}=2'b10;
5 }6 s1 k2 C& |        #100:
# V  R; c  L1 i/ V        CHECK_y(4'bxxxx);
; s% s! J3 a: g        a=1'b0;                 ( G6 I. O9 U1 _) o0 D
        b=1'b1;/ g. M1 g1 F1 M0 u" P: [
        //{b,a}=2'b11;      
! x6 Z1 o% T8 i* [" z2 \/ t        #100
! d6 h" n* G5 M* W        CHECK_y(4'bxxxx);+ h. a1 L  e0 u9 l7 S, Y% i
        b=1'b1;  //{b,a}=2'b10;
' j: H! v- Q! |* _% h- G; p- Z        a=1'b1;  //{b,a}=2'b11;3 B. E9 s( z( Q
        #150
9 R# T8 i/ d- v% \! T5 ]        CHECK_y(4'bxxxx);
; f3 {5 _! n' G# {' I1 f! i5 ?3 ~- `, F( m# G+ A
5. 關於詳細的解釋,以及可用ModelSim 6.2版模擬的do file(.do)、改過的testbench以及2 to 4 decoder的設計檔,都在下面這個附件中,可參考看看
; W) m/ ^8 x4 ?; h& [
* A0 V% z- R) |1 a( _* k; t! B# g1 _& r2 J  l' D- a
希望對你有幫助!!

本帖子中包含更多資源

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

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

本版積分規則

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

GMT+8, 2024-5-6 12:41 PM , Processed in 0.099005 second(s), 18 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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