sc_signal_rv的用法和sc_signal相比有什么优势?
在 SystemC 中,sc_signal<T>
是最常用的单驱动(single‐driver)信号通道;而 sc_signal_rv<W>
(“rv” = resolved vector)则是一种多驱动、带总线(tri-state)分辨功能的信号。下面分几点来说明它们的用法和优势。
1. sc_signal<T>:单驱动信号
sc_signal<bool> sig_bool("sig_bool");
sc_signal<int> sig_int("sig_int");
sc_signal<sc_logic> sig_logic("sig_logic");
- 只能有一个写者(一个模块在一个 delta-cycle 内对同一信号调用
write()
) - 多个写者会导致模拟器报错/行为未定义
- 读者可任意多个
适用于“点对点”单一驱动场景。
2. sc_signal_rv<W>:多驱动、总线分辨信号
// 4 位宽的 resolved‐vector,内部采用 sc_dt::sc_lv<4>
sc_signal_rv<4>