Ready-to-run snippets

Code Examples

Ready-to-run Verilog, SystemVerilog, and UVM examples. Click any to open it live in the IDE.

← All examples

Localparam Part Select

Verilog Parameters

Example of how localparams can have expressions that contain part-select

Open in IDE
design.v
module adder #(parameter WIDTH = 8, PARAM_LENGTH = 4) (
    input wire [WIDTH-1:0] a,
    input wire [WIDTH-1:0] b,
    output wire [WIDTH-1:0] sum
);

  localparam LENGTH = 2 + PARAM_LENGTH[1:0]; 

assign sum = a + b;

  initial begin
    $display("Length = %0d", LENGTH);
  end
endmodule

module tb;
    reg [15:0] a;
    reg [15:0] b;
    wire [15:0] sum;

    // Instantiate the adder module
  /*
    adder #(.WIDTH(16)) add_instance (
        .a(a),
        .b(b),
        .sum(sum)
    );*/

    // The following line would cause an error because LENGTH is a localparam
  adder #(.WIDTH(16), .PARAM_LENGTH(6)) add_instance2 ( 
        .a(a),
        .b(b),
        .sum(sum)      
    ); // This will fail

endmodule 
testbench.v
Admin mode — edit and delete controls are visible on each row. Use the IDE to add new snippets via File → Save as Snippet.