在Modelsim中编写测试平台

时间:2015-01-26 03:56:34

标签: verilog modelsim

我正在尝试用modelsim中的verilog编写测试平台。我已经为测试平台以及被测模块编写了代码。但在编译时,我收到一条错误,说编译失败了。 那么我们是否必须在单独的模块中编写测试台代码,并且对于被测模块也是如此?

//Writing a test bench
module test_bench;
wire w1,w2,w3;
xyz(w1,w2,w3);
test_xyz(w1,w2,w3);
endmodule;

//现在我们将定义我们在testbench模块中实现的模块

//定义模块xyz

module xyz(f,A,B);
input A,B;
output f;
nor(f,A,B);
endmodule;

//Defining the test module which we are going to apply to the module xyz

module test_xyz(f,A,B); 
input f;
output A,B;
initial 
begin 
$monitor ($time ,"A=%b","B=%b", "f=%b",A,B,f);
#10 A=0;B=0;
#10 A=1;B=0;
#10 A=1;B=1;
#10 $finish ;
end
endmodule;

1 个答案:

答案 0 :(得分:2)

endmodule不需要分号。

实例应具有实例名称:

module test_bench;
  wire          w1,w2,w3;
  xyz      dut (w1,w2,w3);
  test_xyz test(w1,w2,w3);
endmodule

如果您要从初始或alwys区块驱动信号,则需要在localscope *中reg而不是wire

module test_xyz(f,A,B); 
  input f;
  output reg A,B; //A B are regs

* localscope:驱动电线的地方是reg,但模块的输出驱动电线。 Verilog类型不跨越端口边界。

EDA Playground上的示例。