首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >错误:(vlog-2110)非法引用网络“代码”

错误:(vlog-2110)非法引用网络“代码”
EN

Stack Overflow用户
提问于 2021-07-13 11:06:18
回答 1查看 318关注 0票数 3

我尝试过这段代码,但它显示了错误:

gray_counter\gray_counter.v(2):(vlog-2110)非法引用网络“代码”

代码语言:javascript
复制
module gray_counter(code,clk,rst,count);//module declaration
 input [2:0]code=3'b000;
 input clk,rst;
 output reg count;
 reg [2:0]conv_code;
always@(posedge clk , posedge rst)
 begin
if(rst)
 begin
 count=0;
 end
 else
 begin
 conv_code={code[0],code[0]^code[1],code[1]^code[2]};//converting binary code to gray 
 case(conv_code)
 3'b000:count=count+1;
 3'b001:count=count+1;
 3'b011:count=count+1;
 3'b010:count=count+1;
 3'b110:count=count+1;
 3'b100:count=count+1;
 3'b101:count=count+1;
 3'b111:count=count+1;
 default:count=count+0;
 endcase
 end
 end
endmodule
EN

回答 1

Stack Overflow用户

发布于 2021-07-13 22:44:48

Verilog不允许端口具有默认值。要满足Verilog的要求,请将input [2:0]code=3'b000;更改为input [2:0]code;,并且永远不要在gray_counter模块中分配code

SystemVerilog允许它使用ANSI风格的模块标头(IEEE1802-2012§23.2.2.2 ANSI样式的端口声明列表)。与更新的2017 1800-2017相同的部分。我不能对LRMs中的示例进行罚款,但是语法是很清楚的。在较早的they 1800-2005中,我没有发现它们的语法相同。我没有看到LRMs建议默认分配对于非ANSI头是合法的;但是我确实注意到支持ANSI模块头的默认设置的模拟器也支持非ANSI。

要启用SystemVerilog解析,请将文件扩展名从.v更改为.sv。注意,一些模拟器只支持有限的SystemVerilog特性子集。您的模拟器或合成器可能不支持具有默认值的端口。如果没有,则必须删除默认赋值。

通常,您希望在实例化输入的地方驱动所有输入。通过将默认值分配给输入,可以使连接成为可选的。这在业界并不常见,部分原因是整个工具链(仿真器、合成器、链接器等)。需要支持它,部分原因是编码/调试实践。

使用SystemVerilog,您可以指定一个默认输入,但在大多数情况下,您不应该这样做。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68361244

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档