2015-12-13 49 views
0

我想構建一個小型組合電路(幾個或者1個,1個非門),並且我偶然發現了測試平臺中的一個問題(甚至可能在之前),並且希望有人可以幫助我。verilog-構建一個小型組合電路

the circuit is here

這是代碼:

module hewi(input D3,D2,D1,D0,output A0,A1,V); 

    wire k,s; //outputs of the and and not gates 
    not N01(k,D2); 
    and An1(s,k,D1); 
    or Ou1(A0,D3,s); 
    or Ou2(A1,D3,D2); 
    or Oufinal(V,D3,D2,D1,D0); 
endmodule 

這是測試臺代碼

module test_benche(); 

    wire D3,D2,D1,D0,A0,A1,V; 
    hewi test(D3,D2,D1,D0,A0,A1,V); 

    initial 
    begin 
    D3 = 1`b0; 
    D2 = 1`b0; 
    D1 = 1`b0; 
    D0 = 1`b0; 
    #50; 
    D3=1`b1; 
    D2=1`b0; 
    D1=1`b1; 
    D0=1`b1; 
    end 
endmodule 

我收到的問題是,它不能檢查其中任何一項表達:

Undefined macro exists as: 'b0' 
    "testbench.sv", 8: token is '`b0' 
     D3=1`b0; 
       ^

我在這裏錯過了什麼?

+3

看起來你正在使用的不是單引號' – damage

+0

我糾正了我mistake-接下來的事情寫入後,我編譯它再次反引號':**錯誤 - [IBLHS-NT]非法行爲左手方 testbench.sv,15 網絡類型不能在此作業的左側使用。 違規表達方式爲:D1 來源信息:D1 = 1'b1; **對於我賦予值的每個表達式。 – bigroman

+0

下次請爲追蹤問題添加單獨的問題。這樣每個部分的最佳答案都可以接受。 – Morgan

回答

1

關於以下錯誤:

錯誤 - [IBLHS-NT]非法行爲左側testbench.sv,15淨類型不能在該分配的左側使用。違規表達式爲:D1來源信息:D1 = 1'b1的

線不能在alwaysinitial塊進行分配。因此他們需要轉換爲reg類型。

//Control signals reg type 
reg D3,D2,D1,D0; 
//Outputs driven from DUT wires 
wire A0,A1,V; 
    hewi test(D3,D2,D1,D0,A0,A1,V); 

    initial 
    begin 
    D3 = 1'b0; 
    D2 = 1'b0; 
    D1 = 1'b0; 
    D0 = 1'b0; 
    #50; 
    D3=1'b1; 
    D2=1'b0; 
    D1=1'b1; 
    D0=1'b1; 
    end 
endmodule 
+0

謝謝!你有什麼想法,我可以真正看到測試臺在工作(意思是交互式電路如何工作)? – bigroman

+0

可以在測試臺中使用'$ display'來打印命令行,或啓用波形轉儲以在波形查看器中查看。 – Morgan

+0

@Greg謝謝你的修復,錯過了。 – Morgan

2

的語法錯誤是因爲你正在使用的不是單引號(')

所有的編譯器指令是由(`)字符反引號(')。這個 字符被稱爲嚴重口音(ASCII 0x60)。它不同於 字符('),它是撇號字符(ASCII 0x27)。編譯器指令的 作用域從處理點開始,跨越當前編譯單元中處理的所有文件, ,直到其他編譯器指令取代它或編譯單元處理完成。 編譯器指令的語義在LRM第3.12.1和5.6.4節中定義。