上下文
我正在用modelsim/questasim开发一个用verilog/VHDL模块共同模拟的systemC仿真环境。
我的Verilog模块使用参数来设置每个模块,我的VHDL模块使用泛型来设置每个模块,如果需要的话,我的systemC模块可以使用模板复制这些模块。
下面的讨论非常相似,但我不能使用sc_main,因为有Modelsim:Setting the vector length in SystemC with a received parameter
问题
我希望能够使用verilog参数实例化systemC模块
示例
下面是一个最小的(不起作用的)示例:
Verilog文件
module submodule
#(
parameter parameter1 = 32
}
(
input logic clk,
/* signals (...) */
);
systemc_module
#(
.parameter_sc (parameter1 * 2) /* parameter can be modified */
)
systemc_module_0
(
.clk(clk),
/* signals (...) */
);
endmodule SystemC文件
SC_MODULE(systemc_module)
{
sc_in<sc_logic> clk;
sc_signal<sc_lv<parameter_sc> > compilation_dynamic_signal;
// other signals (...)
SC_CTOR(systemc_module)
{
// I can get the parameter at execution time with modelsim :
int buf;
sc_get_param("parameter_sc", buf)
}
}
/*Modelsim module export*/
SC_MODULE_EXPORT(systemc_module);发布于 2021-08-06 16:46:31
您不能这样做,因为您的SystemC代码是独立于Verilog/VHDL代码编译的。泛型/参数的概念是VHDL/Verilog独有的,并不直接映射到C++模板。在编译SystemC代码时,您不知道有多少SC_MODULE实例以及它们的参数值可能是什么。
使用sc_main的示例之所以有效,是因为它是使用C++编译器编译的,而SC_MODULE的模板化就是在这里发生的。
https://stackoverflow.com/questions/68678393
复制相似问题