在 SystemC 中使用接收到的参数设置信号长度
Setting signals length using received parameters in SystemC
上下文
我正在使用 modelsim/questasim
使用 systemC 与 verilog/VHDL RTL 模块共同模拟仿真环境
我的 Verilog 模块使用参数来设置每个模块
我的 VHDL 模块使用泛型来设置每个模块
如果需要,我的 systemC 模块可以使用模板复制它。
下面的讨论很相似,只是因为Modelsim我不能使用sc_main:
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);
您不能这样做,因为您的 SystemC 代码是与 Verilog/VHDL 代码分开编译的。 generics/parameters 的概念是 VHDL/Verilog 独有的,并不直接映射到 C++ 模板。在编译 SystemC 代码时,您不知道 SC_MODULE 的实例数量以及它们的参数值可能是什么。
带有 sc_main 的示例之所以有效,是因为它是使用 C++ 编译器编译的,其中发生了 SC_MODULE 的模板化。
choosing appropriate specialized template at runtime
上下文
我正在使用 modelsim/questasim
使用 systemC 与 verilog/VHDL RTL 模块共同模拟仿真环境我的 Verilog 模块使用参数来设置每个模块 我的 VHDL 模块使用泛型来设置每个模块 如果需要,我的 systemC 模块可以使用模板复制它。
下面的讨论很相似,只是因为Modelsim我不能使用sc_main: 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);
您不能这样做,因为您的 SystemC 代码是与 Verilog/VHDL 代码分开编译的。 generics/parameters 的概念是 VHDL/Verilog 独有的,并不直接映射到 C++ 模板。在编译 SystemC 代码时,您不知道 SC_MODULE 的实例数量以及它们的参数值可能是什么。
带有 sc_main 的示例之所以有效,是因为它是使用 C++ 编译器编译的,其中发生了 SC_MODULE 的模板化。
choosing appropriate specialized template at runtime