Chip123 科技應用創新平台

 找回密碼
 申請會員

QQ登錄

只需一步,快速開始

Login

用FB帳號登入

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

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

[複製鏈接]
1#
發表於 2013-2-5 22:51:28 | 顯示全部樓層
本帖最後由 card_4_girt 於 2013-2-5 10:54 PM 編輯
5 u0 O- A; W; C* W; Z" V5 I+ i0 t3 Z3 x/ T2 P6 I6 g
你的錯誤有以下幾點: (關於指令解釋以及程式檔請見此帖最底下)4 T1 Z) Q- b- s* e: i5 k
1. `timescale 1ns/1ns (請把第一行改成跟這裡一樣的"標點符號")# G$ P. j9 q8 f
2. module the_2-4_decoder_testing_and_certification_program;
+ g  G" |( ^8 c1 A    必須改成4 n8 f0 E2 \4 _
    module the_2_4_decoder_testing_and_certification_program;
% z2 O+ C8 t) J+ ?$ H" }$ U/ y: X: B
5 i8 d& S7 V) K" d7 f9 `8 Z編譯雖過但必須注意的地方:
$ `$ u  U1 w8 f2 m: h; l1. fopen可以適時在後面加入要寫入或讀出,會比較知道動作,比如說7 G- a; ^" [# W9 G% a  x( g8 v4 j: ~
    $fopen("result.txt","w");
( x& E+ Q/ R9 O5 ~! C, O& D7 T3 s9 }    模式有w(寫入至未存在或已存在的檔案)、r(讀出)、a(寫入至已存在的檔案)等7 }( h# f( K* [! Y
    w的寫入方式是尚未存在的檔案會自動創造且寫入程式訊息,或是對存在的檔案進行覆蓋性寫入,因此每次執行完的結果會把上次結果全部蓋掉
3 o4 i- ]: ^/ `7 Y. F: _, U5 l& c    a的寫入方式是尚未存在的檔案會自動創造且寫入程式訊息,或是對存在的檔案進行非覆蓋性寫入,因此每次執行完的結果會顯示在上次結果之後
# [5 ]% S# O8 D; X+ e; c  x    你也可以參考下面的頁面:1 K' ?& }; ]3 Q
    http://www.asic-world.com/verilog/verilog2k3.html* q+ @. s. x: J) B) l8 |
5 N1 T3 Y2 s# p( A
2. 因為你的程式含有$stop任務,對testbench會使模擬暫停,因此對後面才定義的task宣告來說並沒有作用到,最好是能在initial begin...end區塊之前就定義好task4 W( |  b: K5 o/ ^: J9 n' ~
3. 你沒有呼叫你的"CHECK_y" task,所以就算把測試的pattern寫出來也沒有作用,應該要想辦法代個值給CHECK_y,才有機會知道TX_ERROR是否為0,並輸出對應的訊息以利debug
- C/ k* @5 L5 _4. 不清楚哪一個是你的第一個輸入,不過我是把它當成{b,a}={00,01,10,11}來看,那麼你應該將刪除線部分改成紅色部分,不然會少一種輸入的可能性
- J0 g) e% e1 Y( U1 g- Z4 G       //{b,a}=2'b00;( Q. i4 D9 F: z3 d
       a=1'b0;
; G2 h+ l# x; m- E6 ?        b=1'b0;
" `2 ~- U- p: s- U  {" L2 Q        //{b,a}=2'b01;      
( z: s3 ~( ~2 F# k* H* f        #100' T$ B5 [2 M, n! @: o8 |) u
        CHECK_y(4'bxxxx);5 S% V! H+ S4 L6 u- U
        a=1'b1;
' e* ^0 C* P1 R% ]" b# g' C       //{b,a}=2'b10;
" m5 ?6 V; V# Y        #100:
4 w3 z- `  m. |+ w        CHECK_y(4'bxxxx);0 T5 y2 D" O1 M8 F) _5 J
        a=1'b0;                 
3 U* X) r, g" e; B5 }9 e8 V# @        b=1'b1;; _, H' w* J# i0 d- f
        //{b,a}=2'b11;       8 g5 K6 Z5 _3 [# g& y
        #1005 M' t+ w8 Z5 Q/ _. P
        CHECK_y(4'bxxxx);3 P1 q& O0 m2 ]3 k, F  @. z4 X% a
        b=1'b1;  //{b,a}=2'b10;2 e4 x3 J* N; a# k' u- l( o, m5 x3 Q; t
        a=1'b1;  //{b,a}=2'b11;) `1 Y  b  Y5 K2 |. c: G
        #150/ ~3 _" S" n/ @- r* b
        CHECK_y(4'bxxxx);
: E1 l$ Q0 N, Q
: y  w# v2 Y1 }  k5. 關於詳細的解釋,以及可用ModelSim 6.2版模擬的do file(.do)、改過的testbench以及2 to 4 decoder的設計檔,都在下面這個附件中,可參考看看
3 a* R8 b& b$ \3 ]. h" X' V2 w' O1 b5 Y! i* Y
( |4 N. a9 G1 u/ p
希望對你有幫助!!

本帖子中包含更多資源

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

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

本版積分規則

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

GMT+8, 2024-5-19 01:27 PM , Processed in 0.105514 second(s), 17 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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