我有两个有关在测试台中使用非阻塞赋值的问题。在测试平台中使用非阻塞赋值: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