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条回答
culture
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

 

一周热门 更多>