2
我使用的ModelSim做模拟这些天,有问题来找我,那就是:的ModelSim编译器不一样的Quartus
而且thers是这样一块Verilog代码:
if (cnt == `END_CNT)
...
reg [7:0] cnt;
always @(posedge clk)
if (en)
cnt <= cnt +1;
...
这意味着我将reg定义到分配块,并且我可以在定义之前使用该变量。这是我的编码风格,在Quartus中它可以正常工作。
但是,当我的ModelSim编译的文件,一个“变量未定义”错误会来的,我要搬到上面if
语句定义行:
reg [7:0] cnt;
...
if (cnt == `END_CNT)
...
always @(posedge clk)
if (en)
cnt <= cnt +1;
...
我有很多这样的代码,这让我非常困扰。作为一个ModelSim初学者,我想知道是否有编译器设置(我找不到任何)来处理我的问题?
按照IEEE标准1800年至二○一二年,第6.5节网和变量:“从隐式网在使用之前,数据应被宣布,除了”。你的代码不符合标准,你应该移动所有的声明。 – toolic
根据我的经验,Modelsim是执行语言法律方面最严格的模拟器。 @toolic你应该让你的评论一个答案。 – dwikle
@dwikle:我的评论并没有回答“是否有一个modelsim编译器设置?”的问题,并且SO用户不是很宽容。 – toolic