具有命名块操作的Verilog代码是否可以合成?下面是一个这样的例子:
module named_block_disable();
reg [31:0] bit_detect;
reg [5:0] bit_position;
integer i;
always @ (bit_detect)
begin : BIT_DETECT
for (i = 0; i < 32 ; i = i + 1) begin
// If bit is set, latch the bit position
// Disable the execution of the block
if (bit_detect[i] == 1) begin
bit_position = i;
disable BIT_DETECT;
end else begin
bit_position = 32;
end
end
end
答案 0 :(得分:0)
命名块始终是可综合的 - disable
语句可能与某些工具有问题。这种用于摆脱循环的用法应该是可综合的。在SystemVerilog中,您将使用break
语句,该语句绝对是可合成的。 for
循环必须是静态不可滚动的。