作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我一直在阅读 Stack Overflow 上的这个赞成答案:https://stackoverflow.com/a/26129960/12311164
它说更换 wait(delay, units);
在 SC_THREAD 到 next_trigger(delay, units)
在 SC_METHOD 工作。
但是当我尝试时,它不起作用。我正在尝试构建具有 2 ns 输出延迟的加法器模块。加法器输出不是 2 ns 的输出延迟,而是每 2 ns 更新一次。
设计:
#include "systemc.h"
#define WIDTH 4
SC_MODULE(adder) {
sc_in<sc_uint<WIDTH> > A, B;
sc_out<sc_uint<WIDTH> > OUT;
void add(){
sc_time t1 = sc_time_stamp();
int current_time = t1.value();
int intermediate = A.read() + B.read();
next_trigger(2, SC_NS);
OUT.write(intermediate);
cout << " SC_METHOD add triggered at "<<sc_time_stamp() <<endl;
}
SC_CTOR(adder){
SC_METHOD(add);
sensitive << A << B;
}
};
我知道如何使用 2 种技术模拟延迟:
sc_event
和
SC_METHOD
和
wait
声明于
SC_THREAD
,但我想使用 next_trigger() 模拟延迟。我已经阅读了语言引用手册,但不知道如何去做。
最佳答案
您必须手动跟踪状态:
sc_uint<WIDTH> intermediate;
void add(){
if (A->event() || B->event() || sc_delta_count() == 0) {
intermediate = A.read() + B.read();
next_trigger(2, SC_NS);
} else {
OUT->write(intermediate);
}
}
问题是使用
next_trigger
不会神奇地改变您的
SC_METHOD
进入
SC_THREAD
.一般来说,我发现
next_trigger
的任何用法不方便,有更好的方法可以使用
sc_event
.
关于systemc - 如何在 SystemC 中使用 next_trigger() 模拟输出延迟?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68098155/
我一直在阅读 Stack Overflow 上的这个赞成答案:https://stackoverflow.com/a/26129960/12311164 它说更换 wait(delay, units)
我是一名优秀的程序员,十分优秀!