System Verilog parameters in generate block

前端 未结 3 703
Happy的楠姐
Happy的楠姐 2020-12-20 04:50

I\'d like to set a parameter based on a parameter which is set when the module is instantiated. I have the following.

module foo #(WORDS = 8);

parameter P00         


        
3条回答
  •  無奈伤痛
    2020-12-20 04:57

    This works (generally say you need to make all 4 generate blocks name as the same):

    module foo #(WORDS = 8);
    
    parameter P00 = 33;
    logic [7:0] tmp;
    
    generate
      case (WORDS)
        4: begin : B
             assign tmp = 8'haa;
             parameter P00 = 4;
           end
        8: begin : B
             assign tmp = 8'hbb;
             parameter P00 = 8;
           end
       16: begin : B
             assign tmp = 8'hcc;
             parameter P00 = 16;
           end
       default: begin : B
                  assign tmp = 8'hdd;
                  parameter P00 = 8;
                end
      endcase
    endgenerate
    
    initial begin
      $display ("WORDS = %d", WORDS);
      $display ("tmp   = %h", tmp);
      $display ("P00   = %d", B.P00);
    end
    
    endmodule
    

提交回复
热议问题