system-verilog - 系统 Verilog 参数化模块名称
问题描述
假设在设计中,所有模块的输入/输出端口都是相同的。但是,模块名称不同,模块数量因项目而异。
是否可以有 2 个参数 -> 可以合成吗?
parameter NUM_OF_MODULE_COUNTS = 10,
parameter string MODULE_NAME[10] = {module_a,module_b,.....}
genvar i ;
generate
for (i==0;i<NUM_OF_MODULE_COUNTS; i++)
MODULE_NAME[i] u_inst (.port_a(a), .port_b(b)).....);
endgenerate
解决方案
在 SystemVerilog 中无法使用字符串作为标识符名称。
远程接近您想要做的唯一功能是配置config
,您可以将实例化模块数组的每个实例映射到同名但来自不同库的模块。
module top;
for (genvar i==0;i<NUM_OF_MODULE_COUNTS; i++) begin : block
MOD u_inst (.port_a(a), .port_b(b)).....);
end
endmodule
然后在你的config
文件中你会有
instance top.block[0].u_inst use lib0;
instance top.block[1].u_inst use lib1;
instance top.block[2].u_inst use lib2;
然后您需要将不同版本的 编译MOD
到每个库中。
但最后,打字可能更简单
module_a u_insta (.port_a(a), .port_b(b)).....);
module_b u_instb (.port_a(a), .port_b(b)).....);
module_c u_instc (.port_a(a), .port_b(b)).....);
推荐阅读
- assembly - 关于交叉编译时汇编代码错误的问题
- javascript - 反应:在传递给类构造函数的回调函数中使用状态不使用最新版本的状态
- python-3.x - Python BeautifulSoup“奇怪”错误
- c - 为什么以下带有字符串的代码在从函数调用时会生成总线错误?
- python - VS Code:有没有一种方法可以在不需要指定完整路径的情况下读取 csv 文件?
- python - 如何链接 Anaconda3 库 python?
- haskell - 阅读器单子 - 阅读器与询问功能差异?
- typescript - 如何将 IResolvable 类型的组件添加到 CfnImageRecipe CDK 资源?
- python - ValueError: ('事务 %r 未在此连接上打开',
) - algorithm - 给定一个集合,你将如何生成它的排列/子集(Skiena 方法)?