我在 SystemC 中尝试在一段时间后写入信号时遇到问题...
考虑以下因素:
process (clk)
begin
-- Updating my signal, out signal, in order to get result, but after a certain delay.
signal1 <= '0' after 2 ns;
好的! 我可以在 SystemC 中做同样的事情:
SC_CTOR(MyModule) {
SC_METHOD(mymethod);
sensitive << ....
}
void mymethod() {
mysig = '0'; // HOW TO SAY AFTER 2 NS?????????
}
如何在 SystemC 中指定信号分配的延迟???
我认为您可以在
wait(2, SC_NS);
中SC_THREAD
,但不能在SC_METHOD
中。 (AFAIK,你不可以在 wait
内 SC_METHOD
。)
我已经忘记了 SC 语法,但它应该与 GBL 类似,
write
函数应该采用可选的延迟参数,例如 mysig.write(0, 2*SC_NS);
在 GBL 中,它是 mysig.Write(0, 2*ns);
或替代语法:mysig(2*ns) = 0;
如果您处于 SC_METHOD 内部或者您不想(及时)停止 SC_THREAD,则可以使用以下方法:
#define SC_INCLUDE_DYNAMIC_PROCESSES
#include <systemc>
//...
sc_signal<int, SC_MANY_WRITERS> sig;
//...
sc_spawn( [&](){ wait(DELAY); sig.write(VALUE); } );