sách gpt4 ai đã đi

c++ - 从 sc_signal 驱动 sc_out

In lại 作者:行者123 更新时间:2023-11-30 03:38:28 29 4
mua khóa gpt4 Nike

考虑以下示例,其中一个模块的输出 (inner::out) 应该驱动两个输出(outer::outouter::out2) 的上层层次:

#include 

SC_MODULE(inner) {
sc_out out;

SC_CTOR(inner) : out("out") {
SC_THREAD(doit);
};

void doit() {
for (int i=0; i<10; ++i) {
out != out;
wait(10, SC_NS);
}
}
};


SC_MODULE(outer) {
sc_out out, out2;

SC_CTOR(outer) : out("out"), out2("out2"), i("inner"), out_s("out_s") {
i.out(out_s);

out(out_s);
out2(out_s);
}

inner i;

sc_signal out_s;
};


int sc_main(int argc, char **argv) {
outer o("outer");

sc_start(1, SC_MS);

trả về 0;
}

https://www.edaplayground.com/x/5s2C#

运行此命令会导致以下错误:

Error: (E115) sc_signal cannot have more than one driver: 
signal `outer.out_s' (sc_signal)
first driver `outer.inner.out' (sc_out)
second driver `outer.out2' (sc_out)
In file: ../../../../src/sysc/communication/sc_signal.cpp:73

outer::out2 似乎被认为是驱动 out_s Còn hơn là被它驱动。有什么明显的我忽略了吗?有没有办法在不使用对 outer 内的 inner::out 敏感的显式 SC_METHOD 的情况下完成这项工作?

1 Câu trả lời

错误:(E115) sc_signal 不能有多个驱动程序:

可以通过使用 SC_MANY_WRITERS 来解决。

Ví dụ:

sc_signal < bool, SC_MANY_WRITERS > reset_sig;

然后对于一个名为 initializer 的模块,我们可以这样绑定(bind)这个信号:

initializer init("init");

init.reset(reset_sig);

现在对于另一个模块,生产者模块,它使用相同的信号:

producer prc("prc");

prc.resetIn(reset_sig);
prc.resetOut(reset_sig);

关于c++ - 从 sc_signal 驱动 sc_out,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39574912/

29 4 0
行者123
Hồ sơ cá nhân

Tôi là một lập trình viên xuất sắc, rất giỏi!

Nhận phiếu giảm giá Didi Taxi miễn phí
Mã giảm giá Didi Taxi
Giấy chứng nhận ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com