Chip123 科技應用創新平台

 找回密碼
 申請會員

QQ登錄

只需一步,快速開始

Login

用FB帳號登入

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

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

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

# O9 _! |( x& ?. J; C'timescale 1ns/1ns* j- V* Z  r8 R4 [% e1 d# @+ d5 {

% a4 R* Z% x! z" @5 n0 K) o1 Hmodule the_2-4_decoder_testing_and_certification_program;
5 K0 x7 Z7 Y8 C. K. a+ w' F/ R% }0 p. u+ a2 c$ ^
wire[3:0]y;9 z, E- a. z, ^, v3 o1 g* K
reg a;  F7 p  J, F& N* c9 M
reg b;" m& X: U4 h) n' b9 w. I8 B( S- @' a

! Z. v  ~4 p  X6 ddeco2_4g UUT(
" o2 q; Y8 n* B6 Y- e1 _        .y(y),
' a3 q, T+ J# t7 X1 K5 J' O1 L8 C: g        .a(a),
3 ], `4 b  {; y. a6 T  f+ ^9 c        .b(b));
3 C; e4 r* _- x4 c0 r) j3 H        - d/ O# `1 j0 V) @# @  b+ E9 ^
integer TX_FILE;
& z5 a) J( ^/ s  }) L8 hinteger TX_ERROR;; f- s0 s! Q8 }* A, ^+ A. r

! b+ [9 X  u, X5 E! j8 Kinitial
5 E2 f# a0 k/ t& J  ]! o2 k  `! X2 A: @begin
/ l  o9 P% B6 F$ \; b& b. A7 g3 l        TX_ERROR=0;
& K3 S5 I' @0 U$ {& Z  {        TX_FILE=$fopen("result.txt");
; U6 a* l# D3 X" ]0 q3 ^: b4 P        ' \) }' y& v  T" M7 ?! F% C
        a=1'b0;   ]' Q4 n) R5 z* A
        b=1'b0;6 {6 i: b3 U, w- f2 @* x' P! O( t& V
       
) b, a! P9 p/ B) Y7 g: V& Q/ E        #1000 P# l1 F* t5 K1 r" q" g
        a=1'b1;
" l- q! p& c: a$ E/ J) N7 J       
& s, @0 ~& V5 W+ x/ o4 G2 Y" @, _        #100
* [4 q- P7 i4 H. l! f9 S! Q        a=1'b0;                 6 B$ G+ S* w' Z4 X& [* r
        b=1'b1;, j7 Q/ }  M6 T" Z! y/ L
        + l6 V2 e. A3 I% k/ G6 M+ Y
        #100
6 V6 t) h; ^: r& S        b=1'b1;
" f* k1 b& U' v0 ]        2 s" L3 Y& m, h/ Z( T! W+ a/ I
        #150) F  K! j* F: {5 @$ Y1 t5 ^
        if(TX_ERROR==0)
% m: M/ d2 c1 y) [: f# o0 i3 z, P        begin
" l4 |' P+ E, \1 ~: B' x. p                $display("No errors or warning");
- s0 K9 s6 X8 d( J3 K                $display(TX_FILE,"No errors or warning");3 _+ A7 n  t+ d; Y
        end else begin
' T' f2 a8 c2 `( c8 [4 Z; _                $display("%d errors found in simulation",TX_ERROR);8 H: M' G$ b9 Z- m6 E6 f
                $display(TX_FILE,"%d errors found in simulation",TX_ERROR);
% c7 A* R9 \. u$ Y        end
+ r7 C* j7 h) h0 x8 a  ]# t  y8 O( O. I2 v/ l                $fclose(TX_FILE);/ @6 e0 f. E: [6 g, a7 I) u
                $stop;7 V# S2 x/ D0 W* w- \8 ]0 R
        end ' K( o; J0 x. m" p
       
  }' l( j8 o0 r: |9 F        task CHECK_y;
1 m" ]1 u0 v) B        input[3:0]NEXT_y;
, ~1 W: c6 H! P        #0 begin* k. s2 w( f2 ?
                if(NEXT_y!==y)begin
+ Q9 O$ a, w; `% q1 F                        $display("Error at time=%dns y=%b,expected=%b",4 ^0 D+ L/ Z2 o6 p# K' V
                        $time,y,NEXT_y);
5 W! ~( U+ t- Y! D                        $fdisplay(TX_FILE,"Error at time=%dns y=%b,expected=%b",                                6 O6 X$ L  c4 ^1 f8 @# o6 v! M8 q
                        $time,y,NEXT_y);5 C/ s' s2 F! H
                        TX_ERROR=TX_ERROR+1;) \/ e" [2 [& y& N
                end ' J' P8 g8 B9 ^5 y
        end
$ C. h* n; }% g% V1 l- o% Uendtask
- [# E! Q4 N3 H8 k" S2 n7 k2 Mendmodule
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享分享 頂 踩 分享分享
2#
發表於 2013-2-5 22:51:28 | 只看該作者
本帖最後由 card_4_girt 於 2013-2-5 10:54 PM 編輯
8 G2 D4 Q7 _, i$ X3 d% G
8 S$ I& b! i9 n2 U+ H0 O6 i0 {5 p你的錯誤有以下幾點: (關於指令解釋以及程式檔請見此帖最底下)6 Y9 Q. Z) _4 _6 l- b  e; M
1. `timescale 1ns/1ns (請把第一行改成跟這裡一樣的"標點符號")
6 ?7 `" l/ x# n0 W6 b1 r( B& y0 l2. module the_2-4_decoder_testing_and_certification_program;
9 G0 h; @! T2 R# M; `% R    必須改成/ }1 r- Y+ Q7 A6 n2 {- h8 C1 ]
    module the_2_4_decoder_testing_and_certification_program;
# [+ ?* {# {5 C1 w9 S
9 u) o* O' ?8 E6 B+ h編譯雖過但必須注意的地方:
5 P$ M9 a2 o4 t1. fopen可以適時在後面加入要寫入或讀出,會比較知道動作,比如說
; G0 E( B5 v: O7 S: M7 _    $fopen("result.txt","w");/ x1 R; |# V( X1 F- E$ _- d- u% a
    模式有w(寫入至未存在或已存在的檔案)、r(讀出)、a(寫入至已存在的檔案)等% D" q1 d  V- T/ @
    w的寫入方式是尚未存在的檔案會自動創造且寫入程式訊息,或是對存在的檔案進行覆蓋性寫入,因此每次執行完的結果會把上次結果全部蓋掉
: m/ M, r7 k; P$ ?    a的寫入方式是尚未存在的檔案會自動創造且寫入程式訊息,或是對存在的檔案進行非覆蓋性寫入,因此每次執行完的結果會顯示在上次結果之後" `: j' E/ K- h) Q& j8 g; ~
    你也可以參考下面的頁面:
. @5 V, a; g. J8 g, {+ S! {5 |$ J1 v    http://www.asic-world.com/verilog/verilog2k3.html
. }; N! s7 R, L/ g. O* `# a* Z
- @1 m6 o2 r0 Z/ g: x2. 因為你的程式含有$stop任務,對testbench會使模擬暫停,因此對後面才定義的task宣告來說並沒有作用到,最好是能在initial begin...end區塊之前就定義好task
% |/ L& J) g! |' y, _* o' C$ g; R) `2 y3. 你沒有呼叫你的"CHECK_y" task,所以就算把測試的pattern寫出來也沒有作用,應該要想辦法代個值給CHECK_y,才有機會知道TX_ERROR是否為0,並輸出對應的訊息以利debug
5 s5 Z- g0 X/ m4. 不清楚哪一個是你的第一個輸入,不過我是把它當成{b,a}={00,01,10,11}來看,那麼你應該將刪除線部分改成紅色部分,不然會少一種輸入的可能性
+ X0 q& Q( n# s. A2 z/ N- a       //{b,a}=2'b00;0 c. x2 Z- v0 q& ?
       a=1'b0;! \6 z2 g) V0 x1 A" g& Z" n
        b=1'b0;
7 P! D# F! i8 E3 Y8 h+ S        //{b,a}=2'b01;      
; i+ w& }& n; _& P        #100( D) l+ J. C: d
        CHECK_y(4'bxxxx);
9 C+ b0 L" S6 m, ]        a=1'b1;
5 C# k) Y" O, I8 h/ Q( H       //{b,a}=2'b10;
+ @; \7 `' {1 k$ f* _        #100: 6 T# Y* g  q0 v+ v3 }- T! _. \
        CHECK_y(4'bxxxx);
; a( E4 K$ G: T1 n6 G0 `* `        a=1'b0;                 8 X9 q, v# V2 i1 m7 ], F4 C
        b=1'b1;( k' @1 g2 |, |$ L
        //{b,a}=2'b11;      
/ x, @9 Z' l' J        #1004 o" P+ X; c5 j; c9 S
        CHECK_y(4'bxxxx);
* u* C$ E7 Y. o. U" u        b=1'b1;  //{b,a}=2'b10;
2 A, O' ~/ ?' O" m        a=1'b1;  //{b,a}=2'b11;
% s1 O* ^5 f% y6 y. ]% _        #150& S7 _0 C4 t" p; D: a# w6 R
        CHECK_y(4'bxxxx);
5 L  ^2 L7 n' T1 Q7 y
3 T( }  c$ \; [- `4 W1 B5. 關於詳細的解釋,以及可用ModelSim 6.2版模擬的do file(.do)、改過的testbench以及2 to 4 decoder的設計檔,都在下面這個附件中,可參考看看
0 i2 M; O3 J- }3 @6 p3 ]4 R$ |
- M0 q$ _6 C! _# }, K
. n. a' V3 ]( |4 c3 z0 c8 x希望對你有幫助!!

本帖子中包含更多資源

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

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

本版積分規則

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

GMT+8, 2024-12-30 02:21 AM , Processed in 0.156008 second(s), 18 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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