遇到一个综合问题,请大神指点下
时间:10-02
整理:3721RD
点击:
各位大神,小弟在综合如下代码时,出现了“Disable statement not supported in a for loop."的问题,请各位大神指点,谢谢!
reg[31:0] sel;
reg[5:0] out_buf;
wire[31:0] buf1;
wire[31:0] buf2;
integer i, j;
always @(buf1[31:0] or buf2[31:0] or sel[31:0])
begin
j = 0;
for (i = 0; i <= 31 ; i = i+1)
begin: loop
if (sel == 1'b1)
begin
if (j == 0)
out_buf[j] = buf1;
else if (j == 1)
out_buf[j] = buf2;
else if (j == 2)
out_buf[j] = buf1;
else if (j == 3)
out_buf[j] = buf2;
else if (j == 4)
out_buf[j] = buf1;
else if (j == 5)
out_buf[j] = buf2;
else if (j == 6)
disable loop;
j = j+1;
end
else
out_buf[j] = 1'bz;
end
end
reg[31:0] sel;
reg[5:0] out_buf;
wire[31:0] buf1;
wire[31:0] buf2;
integer i, j;
always @(buf1[31:0] or buf2[31:0] or sel[31:0])
begin
j = 0;
for (i = 0; i <= 31 ; i = i+1)
begin: loop
if (sel == 1'b1)
begin
if (j == 0)
out_buf[j] = buf1;
else if (j == 1)
out_buf[j] = buf2;
else if (j == 2)
out_buf[j] = buf1;
else if (j == 3)
out_buf[j] = buf2;
else if (j == 4)
out_buf[j] = buf1;
else if (j == 5)
out_buf[j] = buf2;
else if (j == 6)
disable loop;
j = j+1;
end
else
out_buf[j] = 1'bz;
end
end
人家明说了,for循环中不支持disable语句
not supported in a for loop , 这不大白话吗
其实连FOR循环都不应该用,直接写个CASE最好了。
建议多研究可综合代码,你这个应该是仿真代码,不能拿来综合成电路的。
谢诸位大神,刚搞这玩意,手生得紧。“其实连FOR循环都不应该用,直接写个CASE最好了。”----能不能具体指点下?谢了啊。
起初看了看,不知道你为何用if else语句,但考虑到优先级问题,case语句与if else还是有实质性的区别,既然你都说了可以用case语句,那么就无所谓优先级了
这段代码我想改成可综合的代码,但是新手,不知道如何去做。请各位指导一下。
