Verilog 在此上下文中,reg不是法律左值[6.1.2(IEEE)]
我使用两个文件Verilog 在此上下文中,reg不是法律左值[6.1.2(IEEE)],verilog,Verilog,我使用两个文件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 lega
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
有供应商(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);
您正在尝试将模块输出连接到
reg
。你不能那样做:你必须驾驶一个网络(例如,wire
/etc)。有关端口连接规则,请参见2005 LRM中的12.3.9:
只有网或结构网表达式才应为
分配
这一切都在SystemVerilog中得到了清理,在这里,regs和wires之间的区别得到了纠正/澄清
“左值”可以出现在赋值(左值)的左边,也就是说,它可以被赋值,还有一个“接收器”。参见有趣的博客。我个人会补充说,有一个旧的(被拒绝的)建议,即统一SV前的REG和wire,并且“连续分配”与重新拟合的delta延迟模型并不真正兼容,这可能使一些讨论变得毫无意义。啊-刚刚意识到-优秀的博客:)实际上,我写了
wire cola,change代码>首先,但是日志文件说“在[9.3.1(IEEE)]中,网络不是一个合法的左值。所以我写reg-cola,change
以改进此问题