verilog中generate的用法(genvar)

2019-03-25 08:57发布

有没有见过这种用法的
wire [1:0] a, b, c;
  
   parameter PW = 2;
  
  //assign c[1:1] = a ^ b;
  
  generate
genvar i;
      for(i=0; i <= 1;i = i+1)begin : geniiii
         assign c[ i : i ]
     = (  (a ^ ( (b /*+ i[PW-1:0]*/) & {PW{1'b1}} ) ) == {1'b1, {PW-1{1'b0}}}   );
     end
  endgenerate


赋值语句中i[PW-1:0],i作为genvar定义变量,还能这样用?ise无法综合。 此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
9条回答
eeleader-mcu
1楼-- · 2019-03-25 12:11
 精彩回答 2  元偷偷看……
applelonger
2楼-- · 2019-03-25 15:55
for 是可以综合的,要求:
1.循环次数确定
2.循环次数<64
eeleader
3楼-- · 2019-03-25 20:07

for 在VERILOG中是不能综合的,VHLD 可以综合, 但写法不是C语言这种表现方法

而是

for i in 0 to 9 LOOP

 需要的语句;

 

END LOOP

 

上面的语句等价于

 

产生上面的语句9分, 依次放在这个进程中!

culture
4楼-- · 2019-03-26 00:20

沙发,谁说for不能综合的?只要是有限可确定的循环就可以综合,如下例逻辑复制:

    genvar  i;

 

    generate

 

        for(i = 0; i < 240; i = i + 1)

 

        begin : pin_loop

 

            pin_inout   pin_inout_inst(

 

                .indat          (   dat_in       ),

 

                .indir          (   io_dir       ),

 

                .outdat         (   io_out       ),

 

                .outdatin       (   dat_out      )

 

            );

 

        end

 

    endgenerate

 

  

 

endmodule

 

culture
5楼-- · 2019-03-26 02:27
不要瞎扯,我的ise就可以综合!
huxiaokai2005
6楼-- · 2019-03-26 05:50
可以综合的,综合选项没设置对吧,generate是Verilog-2001的语法

一周热门 更多>