在以下Systemverilog代码段中:
xxx_model # (.inst_name({inst_name,".ce_0"})) ce_0 (
...
..
);
我无法理解这部分inst_name({inst_name,".ce_0"})
。
请帮助我理解。
答案 0 :(得分:3)
从您的代码段:
在此上下文中,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 强>