在模块层次结构中,在将inout端口与sc_signal连接时显示错误,那么我是否需要与inout(双向端口)连接任何其他类型的信号?
错误:(E115)sc_signal不能有多个驱动程序:
信号Dha.signal_0' (sc_signal)
first driver
Dha.Memory.port_4'(sc_inout)
第二个驱动程序“ Dha.Alloc.port_3”(sc_inout)
答案 0 :(得分:0)
您需要sc_signal_rv。在此处查看示例http://www.asic-world.com/systemc/ports_signals4.html#Example_:_Resolved_Vector_Signals
答案 1 :(得分:0)
您需要使用写入器策略sc_signal
实例化SC_MANY_WRITERS
,以驱动来自多个端口/进程的信号。
#include <systemc.h>
SC_MODULE(Foo) {
sc_inout<bool> port;
SC_CTOR(Foo)
: port("port")
{}
// ...
};
SC_MODULE(Bar) {
sc_inout<bool> port;
SC_CTOR(Bar)
: port("port")
{}
// ...
};
int sc_main(int, char*[])
{
sc_signal<bool, SC_MANY_WRITERS> signal; // <-- policy here
Foo foo("foo");
Bar bar("bar");
foo.port(signal);
bar.port(signal);
sc_start();
return 0;
}