SystemVerilog仿真出现vlog-2110 Illegal reference to net报错求助
错误原因
你的测试模块t_1c中,将需要生成激励的信号A、B、C声明为了input类型:
module t_1c(input logic A,B,C, output logic F);
SystemVerilog中input端口默认属于线网(net)类型,只能由外部电路、assign连续赋值语句驱动,不允许在initial/always这类过程块内做赋值操作,这就是编译器抛出Illegal reference to net错误的直接原因。
修正方案
测试平台(Testbench)不需要对外的输入端口,直接将激励信号定义为模块内部的logic变量即可,修正后完整代码如下:
module biii (input logic A,B,C, output logic F); assign F = ~(~(A & C) & (B & ~(C))); endmodule module t_1c(); // 内部激励信号,可在initial块内赋值 logic A,B,C; // 观测信号,连接待测试模块的输出 logic F; biii B2(A,B,C,F); initial begin #20 A=0;B=0;C=0; #20 A=0;B=1;C=0; #20 A=0;B=0;C=1; #20 A=1;B=1;C=0; #20 A=1;B=0;C=0; #20 A=0;B=1;C=0; #20; $finish; end endmodule
补充说明
如果你的场景确实需要保留t_1c的对外端口,只需将A、B、C的端口方向从input改为output logic即可,端口类型为变量时支持过程块赋值。
内容的提问来源于stack exchange,提问作者射命丸大新文
相关产品推荐
相关产品推荐

