我只是尝试了一个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并得到了同样的错误。
你能建议任何解决方案..
答案 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:顶部