我编写了一个代码,并试图在systemc中生成vcd文件,但是我有一个错误,我无法修复。
// File : pe_main.cpp
#include "driver.h"
#include "monitor.h"
#include "pe.h"
#include "systemc.h"
int sc_main(int argc , char *argv[] )
{
sc_signal< int > t_data,t_weight;
sc_signal< int > t_inputpsum,t_outdata;
sc_signal <bool> b1,b2;
pe pe1("pe");
pe1.data(t_data);
pe1.weight(t_weight);
pe1.inputpsum(t_inputpsum);
pe1.outdata(t_outdata);
pe1.accinpsum(b1);
pe1.resacc(b2);
driver d1("GenerateWaveforms");
d1.d_data(t_data);
d1.d_weight(t_weight) ;
d1.d_inputpsum(t_inputpsum);
monitor m1("MonitorWaveforms");
m1.m_data(t_data);
m1.m_weight(t_weight);
m1.m_inputpsum(t_inputpsum);
m1.m_outdata(t_outdata);
sc_trace_file *tf=sc_create_vcd_trace_file("PE");
sc_trace(tf, t_data, "InputData");
sc_trace(tf, t_weight, "InputWeight");
sc_trace(tf, t_inputpsum, "InputPsum");
sc_trace(tf, t_outdata, "OutData");
sc_start(100, SC_NS);
return 0;
}代码没有错误,但是对于vcd文件,我得到以下错误:
错误:(E115) sc_signal文件中不能有多个驱动程序:信号'signal_2‘(sc_signal)第一个驱动程序'MonitorWaveforms.port_3’(sc_inout)第二个驱动程序'GenerateWaveforms.port_2‘(sc_inout):C:\users\asus\桌面\systemc\system-
发布于 2018-01-12 05:17:53
我认为这个错误本身就说明了问题:不能将多个sc_out或sc_inout端口绑定到sc_signal。
以下是您的问题的一个小型复制者:
#include <systemc.h>
SC_MODULE(top) {
sc_signal<int> sig{"sig"};
sc_out<int> port_0{"port_0"};
sc_out<int> port_1{"port_1"};
SC_CTOR(top) {
port_0(sig);
port_1(sig);
}
};
int sc_main (int argc, char **argv) {
top t{"t"};
sc_start();
}错误:
Error: (E115) sc_signal<T> cannot have more than one driver:
signal `t.sig' (sc_signal)
first driver `t.port_1' (sc_out)
second driver `t.port_0' (sc_out)根据您的设计意图,您可以做多件事:
SC_MANY_WRITERS
sc_signal<int, SC_MANY_WRITERS> sig{"sig"};sc_signal_resolved。https://stackoverflow.com/questions/48213004
复制相似问题