首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么我不能在Verilog中的过程块内部实例化

为什么我不能在Verilog中的过程块内部实例化
EN

Stack Overflow用户
提问于 2011-08-21 20:45:59
回答 2查看 2.3K关注 0票数 0

我需要实例化一些模块,它们的需求在过程性block.But期间弹出,我不允许在过程性block.Where中实例化,否则我应该实例化这些模块,以便可以在过程性块中访问它们。

但是在检查语法时,它会给出一个错误,声明“data_cent不是一个任务”。我不能弄清楚这个问题。如果有人能帮上忙,我会很高兴。

EN

回答 2

Stack Overflow用户

发布于 2011-08-22 01:15:13

您可以在模块内实例化它,但可以在任何过程块之外实例化它。如果您想访问子实例的内部网络,可以使用分层说明符。例如,如果您的实例包含名为foo的内部网络

代码语言:javascript
复制
module top;

Center data_cent(.clk(clk),.dummy_4(dummy_6));

initial begin
   $display(data_cent.foo);
end

endmodule

SystemVerilog还提供了bind构造。

票数 1
EN

Stack Overflow用户

发布于 2017-11-12 22:48:51

从你的描述中,我可以想到两种可能性:

  1. 您可能正在编写泛型代码,需要根据参数值进行实例化。如果是这种情况,您可以使用generate if。
  2. 您可能希望在运行时根据信号值进行实例化。在这种情况下,您是作为程序员而不是硬件设计师进行思考的。实例化意味着添加硬件,您不能让信号值决定硬件是否存在。硬件就在那里或不在那里-除了FPGA之外没有第三个选择,这并不是那么简单。

我认为您需要的是始终在外部实例化模块,并始终设置可在内部修改的启用信号,以便在满足条件时使模块正常工作。

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

https://stackoverflow.com/questions/7138352

复制
相关文章

相似问题

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