我试图用VHDL Testbench测试systemc模板类。为此我遵循了https://ece.uwaterloo.ca/~ece327/protected/modelsim/htmldocs/mgchelp.htm#context=modelsim_se_user&tab=0&tag=1021469&id=452中的说明。
在我的systemc模块中,输入/输出的位长度取决于模板参数
template <int N = 1>
SC_MODULE(xor_gate)
{
// ports
sc_core::sc_out<sc_bv<N> > xor_out;
sc_core::sc_in<sc_bv<N> > a;
sc_core::sc_in<sc_bv<N> > b;
我创建了一个包装器模块(如链接所述),它作为systemc和vhdl之间的接口。在本单元中,我按以下方式声明参数
SC_GENERIC_INT(N,1);
//constructor
xor_gate_wrapper(sc_core::sc_module_name nm, params pa = params() ) :SC_INIT_GENERIC_INT(N)
并声明顶层模块的信号
sc_core::sc_out<sc_bv<N> > xor_out;
sc_core::sc_in<sc_bv<N> > a;
sc_core::sc_in<sc_bv<N> > b;
但是参数不被识别为常量,因此我在输入/输出声明中得到以下错误
error: invalid use of non-static data member 'example_namespace::xor_gate_wrapper::N'
error: from this location
有没有办法使用该参数来设置输入/输出的位长?
感谢您的回答。