顶级测试平台SystemVerilog中的时钟生成

时间:2013-10-15 12:38:46

标签: verilog system-verilog

我只是尝试了一个SystemVerilog示例。

最高级别的测试平台如下所示:

module top();
  // `timescale 1ns/1ps

    reg_intf intfc(.clk(Clk));
   register_m dut (intfc);
   register_test_m (intfc);

   bit Clk = 0;
   initial 
   forever #1 Clk = ~Clk;
endmodule : top

reg_intf是一个接口,register_m是设计模块,register_test_m是程序(testbench)。

我得到编译错误 -

  

此分配的左侧不能使用网络类型。该   违规表达式为:Clk来源信息:Clk =(~Clk);

我尝试使用Logic,Reg,Wire for Clk并得到了同样的错误。

你能建议任何解决方案..

2 个答案:

答案 0 :(得分:1)

在使用之前移动Clk的声明:

module top();
  // `timescale 1ns/1ps

   bit Clk = 0;

    reg_intf intfc(.clk(Clk));
   register_m dut (intfc);
   register_test_m (intfc);

   initial 
   forever #1 Clk = ~Clk;
endmodule : top

与您的问题无关:您需要register_test_m模块的实例名称:

   register_test_m tb (intfc);

答案 1 :(得分:0)

在这种情况下声明的顺序无关紧要。 问题是,根据SystemVerilog LRM,tet类型不能用于分配的左侧。 您可以将声明从位Clk更改为逻辑Clk。

module top();     //`timescale 1ns / 1ps

reg_intf intfc(.clk(Clk));
register_m dut (intfc);
register_test_m (intfc);

//bit Clk = 0;
logic Clk = 0;
initial 
forever #1 Clk = ~Clk;

endmodule:顶部