微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > FPGA,CPLD和ASIC > 遇到一个综合问题,请大神指点下

遇到一个综合问题,请大神指点下

时间: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

人家明说了,for循环中不支持disable语句

not supported in a for loop ,   这不大白话吗

其实连FOR循环都不应该用,直接写个CASE最好了。



   建议多研究可综合代码,你这个应该是仿真代码,不能拿来综合成电路的。

谢诸位大神,刚搞这玩意,手生得紧。“其实连FOR循环都不应该用,直接写个CASE最好了。”----能不能具体指点下?谢了啊。

起初看了看,不知道你为何用if else语句,但考虑到优先级问题,case语句与if else还是有实质性的区别,既然你都说了可以用case语句,那么就无所谓优先级了

这段代码我想改成可综合的代码,但是新手,不知道如何去做。请各位指导一下。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top