首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何按层次访问生成块元素

如何按层次访问生成块元素
EN

Stack Overflow用户
提问于 2016-06-25 02:09:23
回答 1查看 3K关注 0票数 0

请考虑SV接口中的代码:

代码语言:javascript
运行
复制
genvar i;
generate
for (i = 0; i < 2; i++) begin : g1
task ab ();
 ///< something here
endtask
end
endgenerate

根据LRM 1800-2012,第27.6节,从技术上讲,我应该能够通过以下方式访问这项任务(在监视器vif中考虑的是一个虚拟接口实例):

代码语言:javascript
运行
复制
 vif.g1[i].ab();

这是正确的吗?如果是,那么模拟器有问题支持它,因为它报告找不到vif.g1 (精化时间)

我也尝试过它而没有命名块,它应该是:

代码语言:javascript
运行
复制
vif.genblk1[i].ab();

但没有运气。这里有什么问题?我认为监视器或任何其他类都有创建运行时的句柄,但是接口仍然应该是静态编译的,接口的所有元素都应该是可用的。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-06-25 03:12:45

您不能使用[]中的变量来引用任务。在模拟开始之前,生成循环在精化过程中会被夷为平地。

代码语言:javascript
运行
复制
   vif.g1[0].ab;

这里是一个完整的完整的例子。请试着用同样的方式张贴你的问题。

代码语言:javascript
运行
复制
interface itf;
      for (genvar ii = 0; ii < 2; ii++) begin : g1
     task ab ();
        $display("%m");
     endtask // ab     
      end : g1
endinterface : itf
module top;
   itf i1();
   virtual itf vif;
   initial begin
      vif = i1;
      vif.g1[0].ab;
   end
endmodule : top
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38024304

复制
相关文章

相似问题

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