【发布时间】:2014-09-17 05:36:00
【问题描述】:
我有时发现在时钟始终块内对“局部变量”使用阻塞分配很有用。这有助于减少重复代码。
为了避免在不同的 always 块中意外使用相同的变量(这对于模拟来说可能是不确定的),我想给它局部范围。有没有一种很好的综合方式来做到这一点?
类似:
module sum3(
input clk,
input [7:0] in1,
input [7:0] in2,
input [7:0] in3,
output reg [7:0] result,
output reg [7:0] result_p1);
begin :sum
reg [7:0] sum_temp; // local variable
always @(posedge clk) begin
sum_temp = in1 + in2 + in3;
result <= sum_temp;
result_p1 <= sum_temp + 1;
end
end
endmodule
(ModelSim 似乎对此没问题,但 Synplify 似乎不喜欢它。)
【问题讨论】:
-
为其他人澄清:请注意,开始/结束块需要命名才能创建范围。
标签: scope verilog blocking nonblocking