在Systemverilog中传递参数

时间:2015-06-22 03:36:25

标签: system-verilog

在以下Systemverilog代码段中:

xxx_model #    (.inst_name({inst_name,".ce_0"})) ce_0 (
...
..
);

我无法理解这部分inst_name({inst_name,".ce_0"})。 请帮助我理解。

1 个答案:

答案 0 :(得分:3)

从您的代码段:

  1. xxx_model是一个参数化模块,它接受名为 inst_name 的字符串类型的参数。
  2. 您正在实例化此模块, ce_0 是实例的名称。
  3. 您将值 {inst_name," .ce_0"} 作为参数值传递。
  4. 在此上下文中,Systemverilog会将花括号解释为连接运算符。此行中的 inst_name 可能是从上层次结构传递的参数。对于 inst_name 的值,请查看包络模块的实例化(模块层次结构中向上一步的模块)。

    由于此处以嵌套/递归方式使用 inst_name ,因此代码段中的模式似乎表明您的代码可能会将 inst_name 作为参数层次结构中的所有模块。目的是将实例的层次结构名称的 反射 作为字符串参数提供。

    使用这种递归参数传递方案,如果您的模块层次结构是foo-&gt; bar-&gt; frop-&gt; zoo,则层次结构中最低实例内的参数 inst_name zoo 的值为 {inst_name,&#34; .zoo&#34;} 。从上面传递的 inst_name 将递归计算为&#34; foo.bar.frop **,因此实例化中 inst_name 的值将为<强> foo.bar.frop.zoo