【问题标题】:Verilog: Accessing wire in sub-module instanceVerilog:访问子模块实例中的线
【发布时间】:2016-01-15 17:46:34
【问题描述】:

我想知道 Verilog 中是否有语法可以访问子模块中的连线而不使该连线成为输出。

例如,如果有以下模块:

module Module_Sub(a,b);
   input a,b; 
   wire c; 
   ...
endmodule


module Module_Top(d, e);
   input d,e; 
   wire f; 

   Module_Sub sm(d,e); 
   ...
endmodule

现在,我想从 Module_Top 的范围内访问实例“sm”中的线“c”。 有没有办法做到这一点? 可能是这样的:

assign f = sm/c; 

(这种语法显然对我不起作用)。

附注: 我知道这不是最佳做法,但就我而言,它会让事情变得容易得多。

谢谢!

编辑:我希望它用于可合成的代码。

【问题讨论】:

  • 您能否通过问题编辑添加您是否希望将其用于测试平台或可合成代码。

标签: verilog system-verilog


【解决方案1】:

你们很亲密。使用点,而不是斜线:

module Module_Sub(a,b);
   input a,b; 
   wire c; 
endmodule

module Module_Top(d, e);
   input d,e; 
   wire f = sm.c; 

   Module_Sub sm(d,e); 
endmodule

请参阅IEEE Std 1800-2012,第 23.7 节“成员选择和分层名称”。

【讨论】:

  • 这似乎不起作用。遗憾的是,我无权访问您的参考文档,但我尝试了,但出现错误:“无法解析分层名称”。有什么想法吗?
  • 好吧,我找到了,还找到了一些关于该主题的包含示例的资源。但是它对我不起作用。可以合成吗?
  • @Bamba 也许你想让wire c 作为module_sub 的输出。否则 toolic 的解决方案将起作用(可能无法合成)。这是一个类似的问题,您可以参考,以访问模块层次结构之外的资源:@​​987654322@
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多