美文网首页
Vivado SystemVerilog仿真器bug - 命名空

Vivado SystemVerilog仿真器bug - 命名空

作者: 一澎 | 来源:发表于2019-12-21 20:28 被阅读0次

代码如下

genvar i;
generate
for(i = 10; i >= 0; i--) begin:genloop
  if(i == 10) begin:if_space
    <declearation1>
  else begin:if_space
    <declearation2>
  end
end
endgenerate

当访问genloop.if_space.<declearation1>时,vivado仿真器报错

ERROR: [VRFC 10-2991] 'if_space' is not declared under prefix 'genloop' [...]

同样代码在Questasim/Modelsim中通过且行为正确。


以上设计代码在参数化设计中有使用,例如:
注意下面例子中不能使用genloop[i].param1,因为verilog中if语句会创建新的命名空间,这样使用会报错找不到param1;lacalparam换成parameter也是不行的。当参数必须使用判断生成时,以上错误不可避免,只能重新设计,例如不创建参数,而在设计中直接使用constant function。

genvar i;
generate
for(i = 10; i >= 0; i--) begin:genloop
  if(i == 10) begin:if_space
    localparam param1 = constant_function();
  else begin:if_space
    localparam param1 = constant_function();
  end
end
endgenerate

//example
generate
for(i = 10; i >= 0; i--)begin:gen_design
  if(genloop[i].if_space.param1)      //could not use 'genloop[i].param1'
    /* statements*/
  else
    /* statements*/
end
endgenerate

相关文章

网友评论

      本文标题:Vivado SystemVerilog仿真器bug - 命名空

      本文链接:https://www.haomeiwen.com/subject/lvzgnctx.html