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 driverDha.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;
}