You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SV包作为模块参数传递的可行性及可综合实现方案问询

SystemVerilog 模块批量参数传递的可综合实现方案探讨

我查阅了SystemVerilog LRM,认为直接传递参数包的功能可能无法实现,但希望社区能提供可行思路。

我有一个名为common_module的模块,包含数十个参数,每次实例化时都声明所有参数过于繁琐,因此希望把相关参数打包进SV包,在实例化时直接传递整个包。但不同设计目标需要为common_module实例化不同的参数包,所以无法在common_module内部固定导入某个包;如果用宏定义来区分不同的导入规则,又会导致不同设计无法进行联合仿真。伪代码示例如下:

//top_0.sv
module top_0
...
...
common_module common_0(.*); //使用某一整套参数集合
endmodule

//top_1.sv
module top_1
..
..
common_module common_1(.*); //使用另一套和common_0不同的参数集合
endmodule

//TB.sv
module TB;
top_0 A(.*);
top_1 B(.*);
...
...
endmodule

目前的可选方案有两个:

  • 接受每次实例化时写冗长的参数列表(冗余且代码可读性差)
  • 维护common_module的不同版本,每个版本仅导入对应的参数包

但我希望能实现如下逻辑(当前语法无效):

common_module 
#( .param_bundle(my_package_0))
common_0 (.*);

对应的模块声明如下:

module common_module
#( parameter package param_bundle)
...
...

注意:解决方案必须支持可综合,不能仅适用于测试代码。

内容的提问来源于stack exchange,提问作者user2864293

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.17 11:32:40