我有兩個有關在測試臺中使用非阻塞賦值的問題。在測試平臺中使用非阻塞賦值:Verilog
- 我們可以在總是@(posedge clk)w.r.t testbench中使用阻塞賦值嗎?我想我們可以使用,因爲我們不必擔心硬件。但我需要確認。
- 我在測試平臺中使用了下面的代碼,但它不能按預期工作。
always @(posedge clk)
begin
while((state==2'd3) && (x!=OUT_MAX_SIZE_32) && (count_done==4'd4)) begin
$display("a[%d] :%h, %d",l,a[l],x);
a[l] <= {b[x][31], b[x][30], b[x][29], b[x][28], b[x][27], b[x][26], b[x][25], b[x][24]};
a[l+1] <= {b[x][23], b[x][22], b[x][21], b[x][20], b[x][19], b[x][18], b[x][17], b[x][16]};
a[l+2] <= {b[x][15], b[x][14], b[x][13], b[x][12], b[x][11], b[x][10], b[x][9], b[x][8]};
a[l+3] <= {b[x][7], b[x][6], b[x][5], b[x][4], b[x][3], b[x][2], b[x][1], b[x][0]} ;
x <= x+1;
l <= l+4;
end
end
正在發生的事情是X和升如果我使用非阻塞賦值不遞增。但是如果我使用阻塞分配,它按預期工作。我需要幫助分析它。
這已經不是主題:如果沒有異步電路涉及您的項目,您可能想在代碼中使用'if'語句而不是'while'語句。 – e19293001