在(系统)verilog 仿真中从命令行定义参数
Defining parameters from command line in (system)verilog simulation
我有一个模块“'constrained'”,其中有几个延迟作为参数。
我想模拟模块中延迟的所有可能配置。
因为我有很多配置要测试,所以我不想在同一个测试台中实例化所有可能的配置。
我的想法是为每个配置启动一个模拟。
我想过生成一个模拟脚本来为每个延迟配置启动模拟。
问题是我无法使用从命令行检索到的值来覆盖模块的参数。
我用的是$value$plusargs("ARG=%d",val)
,val
是一个变量,与后面的defparam
不兼容。
最完美的做法是从命令行参数创建定义或本地参数,但我在研究中没有找到任何相关信息。
我也乐于接受任何关于以另一种方式进行这些模拟的建议,也许更有效,因为我认为这样做会很长。
PS:为了避免为每种配置重新编译和重新启动模拟器,我还考虑过在每种情况下重新实例化经过测试的模块。然而,我认为使用(系统)verilog 是不可能的。
Modelsim/Questa 允许您从模拟命令行覆盖参数,但这样做会降低模拟性能。寻找 vsim -Gparamname
选项。
在您的情况下,如果您可以为这些延迟使用变量而不是参数来编写模块,然后使用 $value$plusargs
直接设置它们,那就更好了。
我有一个模块“'constrained'”,其中有几个延迟作为参数。 我想模拟模块中延迟的所有可能配置。
因为我有很多配置要测试,所以我不想在同一个测试台中实例化所有可能的配置。
我的想法是为每个配置启动一个模拟。
我想过生成一个模拟脚本来为每个延迟配置启动模拟。 问题是我无法使用从命令行检索到的值来覆盖模块的参数。
我用的是$value$plusargs("ARG=%d",val)
,val
是一个变量,与后面的defparam
不兼容。
最完美的做法是从命令行参数创建定义或本地参数,但我在研究中没有找到任何相关信息。
我也乐于接受任何关于以另一种方式进行这些模拟的建议,也许更有效,因为我认为这样做会很长。
PS:为了避免为每种配置重新编译和重新启动模拟器,我还考虑过在每种情况下重新实例化经过测试的模块。然而,我认为使用(系统)verilog 是不可能的。
Modelsim/Questa 允许您从模拟命令行覆盖参数,但这样做会降低模拟性能。寻找 vsim -Gparamname
选项。
在您的情况下,如果您可以为这些延迟使用变量而不是参数来编写模块,然后使用 $value$plusargs
直接设置它们,那就更好了。