SystemC与verilog线的等价物是什么?

时间:2015-09-05 15:27:03

标签: signals verilog systemc

我正在将一些verilog代码转换为SC。这是一个让我困惑的案例: 在verilog中,连续分配如:

wire a;
assign a =1;

如果在作业完成后立即获得1。如果我们在SC中写它:

sc_signal<bool> a;
a.write(1);

a的当前值不会是1.如何解决这个问题?如下所示?

bool a;
a = 1;

1 个答案:

答案 0 :(得分:4)

在Verilog中,如果要更改RHS并在同时同步的两个不同进程中读取LHS,则无法保证读取连续分配的更新值。您需要使用非阻塞分配来避免竞争条件。

在SystemC中,val q: Queue[List[Node]] = Queue[List[Node]]() :+ path 方法类似于非阻塞分配。不同之处在于您需要在SystemC中使用write()方法。所以。你应该只写信号作为线程/进程的输出。如果需要在进程中读取信号,则需要使用线程的本地变量。