将 SystemC 中的信号延迟指定为 VHDL 中的 AFTER 子句

问题描述 投票:0回答:3

我在 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 中指定信号分配的延迟???

vhdl systemc
3个回答
2
投票

我认为您可以在

wait(2, SC_NS);
SC_THREAD
,但不能在
SC_METHOD
中。 (AFAIK,你不可以在
wait
SC_METHOD
。)


0
投票

我已经忘记了 SC 语法,但它应该与 GBL 类似,

write
函数应该采用可选的延迟参数,例如
mysig.write(0, 2*SC_NS);
在 GBL 中,它是
mysig.Write(0, 2*ns);
或替代语法:
mysig(2*ns) = 0;


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); } );

这是从这里获取的:https://forums.accellera.org/topic/7010-how-to-model-output-delay-in-systemc-like-the-verilog-non-blocking-intra-assignment-延迟/

© www.soinside.com 2019 - 2024. All rights reserved.