verilog-建立一个小型组合电路

时间:2015-12-13 21:59:06

标签: logic verilog test-bench

我想建立一个小型组合电路(少数或1个,1个,1个不是门),我偶然发现测试台上的问题(甚至可能在之前),并希望有人可以帮助我。

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;
                ^

我在这里缺少什么?

2 个答案:

答案 0 :(得分:2)

语法错误是因为您使用的是反引号(`)而不是单引号(')

  

所有编译器指令前面都有(`)字符。这个   字符称为严重重音(ASCII 0x60)。它不同于   字符('),即撇号字符(ASCII 0x27)。该   编译器指令的范围从它的位置延伸   在当前编译单元中处理的所有文件中处理,   到另一个编译器指令取代它或者   编译单元的处理完成。的语义   编译器指令在LRM第3.12.1节和第5.6.4节中定义。

答案 1 :(得分: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