@() 在 always 块中

@() inside an always block

在 always 块中使用 @() 是否是一种不好的做法,或者换句话说,这是错误的?示例代码如下:

always@(negedge clk)begin

        @(valueI)begin
            deterministicEnable=0;
            iterate=iterate+1;
            deterministicEnable=1;
            j=0;
            $display("%h  %d   %d",valueI,$time,j);
        end

end

可合成代码是错误的。你的测试台没有错。

大多数 RTL 综合工具不允许这样做。

这通常是一种不好的做法。您有与时钟下降沿同步的代码。然后你等待另一个可能与前一个时钟一致或不一致的变化。我不知道这对你的情况是否重要。

此外,对 deterministicEnable 的分配是一个小故障,其他进程可能会或可能不会看到。