我使用两个文件ncverilog
和sell.v
selltest.v
,其日志文件显示:
`ncelab: *E,RANOTL (./selltest.v,6|36): A reg is not a legal lvalue in this context [6.1.2(IEEE)].
vendor vendor(NT5,NT10,clk,reset,cola,change);
ncelab: *E,RANOTL (./selltest.v,6|43): A reg is not a legal lvalue in this context [6.1.2(IEEE)].
ncverilog: *E,ELBERR: Error during elaboration (status 1), exiting.`
只有我的selltest.v
有"vendor vendor(NT5,NT10,clk,reset,cola,change);"
,而且我不知道发生了什么,我的计划的一部分如下
`timescale 1ns/1ns
module test_vendor;
reg NT5 , NT10 , clk , reset;
//wire cola , change;
reg cola , change;
vendor vendor(NT5,NT10,clk,reset,cola,change);
答案 0 :(得分:1)
您正在尝试将模块输出连接到reg
。你不能这样做:你必须开网(即wire
/等)。有关端口连接规则,请参阅2005 LRM中的12.3.9:
只有网络或结构网表达才是一个接收器 分配
这一切都在SystemVerilog中得到了清理,其中regs和wire之间的区别得到了纠正/澄清。
' lvalue'是一个可以出现在作业左侧的东西(左值),也就是说它可以分配给它,也就是“下沉”。