Bi-direction SystemC 中与信号的端口连接
Bi-direction port connection with signal in SystemC
在模块层次结构中,在将 inout 端口与 sc_signal 连接时显示错误,那么是否有任何其他类型的信号需要与 inout(双向端口)连接?
错误:(E115) sc_signal 不能超过一个 driver:
信号 Dha.signal_0' (sc_signal)
first driver
Dha.Memory.port_4' (sc_inout)
第二个 driver `Dha.Alloc.port_3' (sc_inout)
你需要sc_signal_rv。在此处查看示例 http://www.asic-world.com/systemc/ports_signals4.html#Example_:_Resolved_Vector_Signals
您需要使用 SC_MANY_WRITERS
的编写器策略实例化 sc_signal
以驱动来自多个 ports/processes 的信号。
#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;
}
在模块层次结构中,在将 inout 端口与 sc_signal 连接时显示错误,那么是否有任何其他类型的信号需要与 inout(双向端口)连接?
错误:(E115) sc_signal 不能超过一个 driver:
信号 Dha.signal_0' (sc_signal)
first driver
Dha.Memory.port_4' (sc_inout)
第二个 driver `Dha.Alloc.port_3' (sc_inout)
你需要sc_signal_rv。在此处查看示例 http://www.asic-world.com/systemc/ports_signals4.html#Example_:_Resolved_Vector_Signals
您需要使用 SC_MANY_WRITERS
的编写器策略实例化 sc_signal
以驱动来自多个 ports/processes 的信号。
#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;
}