4
良好的編碼約定表示我們應該在組合塊中使用阻塞賦值,並在順序塊中使用非阻塞賦值。我想在組合塊中使用++
運算符,但我不知道它是否阻塞。因此,這是代碼: 系統Verilog中的++操作符是阻塞的還是非阻塞的?
input [3:0] some_bus;
logic [2:0] count_ones;
always_comb begin
count_ones = '0;
for(int i=0; i<4; i++) begin
if(some_bus[i])
count_ones++;
end
end
相當於這個
:input [3:0] some_bus;
logic [2:0] count_ones;
always_comb begin
count_ones = '0;
for(int i=0; i<4; i++) begin
if(some_bus[i])
count_ones = count_ones + 1;
end
end
或本:
input [3:0] some_bus;
logic [2:0] count_ones;
always_comb begin
count_ones = '0;
for(int i=0; i<4; i++) begin
if(some_bus[i])
count_ones <= count_ones + 1;
end
end
我也期待在1800年至2012年的標準,但不能弄明白。值得讚賞的是,這個答案將我指向標準中的適當部分。
並非所有的代碼示例都等於'always_comb count = 4;'? – toolic
@toolic,你是對的。這是一個非常簡單的例子。我會讓它更真實。 – nguthrie