【问题标题】:Setting signals length using received parameters in SystemC在 SystemC 中使用接收到的参数设置信号长度
【发布时间】:2021-10-11 03:50:12
【问题描述】:

上下文

我正在制作一个带有 systemC 的仿真环境,它使用 modelsim/questasim 与 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 端口中使用的参数/泛型在 Modelsim 中从 Verilog/VHDL 实例化 systemC 模块?”

标签: vhdl verilog modelsim systemc questasim


【解决方案1】:

您不能这样做,因为您的 SystemC 代码是与 Verilog/VHDL 代码分开编译的。泛型/参数的概念是 VHDL/Verilog 独有的,并且不直接映射到 C++ 模板。在您编译 SystemC 代码时,您不知道将有多少个 SC_MODULE 实例以及它们的参数值可能是什么。

带有 sc_main 的示例有效的原因是因为它是使用 C++ 编译器编译的,其中 SC_MODULE 的模板化发生。

choosing appropriate specialized template at runtime

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-11-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-16
    • 1970-01-01
    • 2022-08-17
    相关资源
    最近更新 更多