data/full_repos/permissive/168753118/rtl/modules/IMM_GEN.v
data/verilator_xmls/2ba0ef72-b91b-4354-ba62-c459a74f2910.xml
module IMM_GEN (
  input [6:0] imm_gen_opcode_in,
  input [24:0] imm_gen_ins_in,
  output reg [31:0] imm_gen_data_out
);


parameter LOAD = 7'b0000011;
parameter OPIMM = 7'b0010011;
parameter AUIPC = 7'b0010111;
parameter STORE = 7'b0100011;
parameter OP = 7'b0110011;
parameter LUI = 7'b0110111;
parameter BRANCH = 7'b1100011;
parameter JALR = 7'b1100111;
parameter JAL = 7'b1101111;
parameter SYSTEM = 7'b1110011;
parameter OPV = 7'b1010111;




always @ (*) begin
  case(imm_gen_opcode_in)
    LOAD:   imm_gen_data_out = {{21{imm_gen_ins_in[24]}},
                        imm_gen_ins_in[23:13]};
    OPIMM:  imm_gen_data_out = {{21{imm_gen_ins_in[24]}},
                        imm_gen_ins_in[23:13]};
    AUIPC:  imm_gen_data_out = {imm_gen_ins_in[24:5],
                        {12{1'b0}}};
    STORE:  imm_gen_data_out = {{21{imm_gen_ins_in[24]}},
                        imm_gen_ins_in[23:18],
                        imm_gen_ins_in[4:0]};
    OP:     imm_gen_data_out = 32'h00000000;
    LUI:    imm_gen_data_out = {imm_gen_ins_in[24:5],
                        {12{1'b0}}};
    BRANCH: imm_gen_data_out = {{20{imm_gen_ins_in[24]}},
                        imm_gen_ins_in[0],
                        imm_gen_ins_in[23:18],
                        imm_gen_ins_in[4:1],
                        1'b0};
    JALR:   imm_gen_data_out = {{21{imm_gen_ins_in[24]}},
                        imm_gen_ins_in[23:13]};
    JAL:    imm_gen_data_out = {{12{imm_gen_ins_in[24]}},
                        imm_gen_ins_in[12:5],
                        imm_gen_ins_in[13],
                        imm_gen_ins_in[23:14],
                        1'b0};
    default: imm_gen_data_out = 32'h00000000;
  endcase
end

endmodule
module IMM_GEN (
  input [6:0] imm_gen_opcode_in,
  input [24:0] imm_gen_ins_in,
  output reg [31:0] imm_gen_data_out
);



parameter LOAD = 7'b0000011;
parameter OPIMM = 7'b0010011;
parameter AUIPC = 7'b0010111;
parameter STORE = 7'b0100011;
parameter OP = 7'b0110011;
parameter LUI = 7'b0110111;
parameter BRANCH = 7'b1100011;
parameter JALR = 7'b1100111;
parameter JAL = 7'b1101111;
parameter SYSTEM = 7'b1110011;
parameter OPV = 7'b1010111;




always @ (*) begin
  case(imm_gen_opcode_in)
    LOAD:   imm_gen_data_out = {{21{imm_gen_ins_in[24]}},
                        imm_gen_ins_in[23:13]};
    OPIMM:  imm_gen_data_out = {{21{imm_gen_ins_in[24]}},
                        imm_gen_ins_in[23:13]};
    AUIPC:  imm_gen_data_out = {imm_gen_ins_in[24:5],
                        {12{1'b0}}};
    STORE:  imm_gen_data_out = {{21{imm_gen_ins_in[24]}},
                        imm_gen_ins_in[23:18],
                        imm_gen_ins_in[4:0]};
    OP:     imm_gen_data_out = 32'h00000000;
    LUI:    imm_gen_data_out = {imm_gen_ins_in[24:5],
                        {12{1'b0}}};
    BRANCH: imm_gen_data_out = {{20{imm_gen_ins_in[24]}},
                        imm_gen_ins_in[0],
                        imm_gen_ins_in[23:18],
                        imm_gen_ins_in[4:1],
                        1'b0};
    JALR:   imm_gen_data_out = {{21{imm_gen_ins_in[24]}},
                        imm_gen_ins_in[23:13]};
    JAL:    imm_gen_data_out = {{12{imm_gen_ins_in[24]}},
                        imm_gen_ins_in[12:5],
                        imm_gen_ins_in[13],
                        imm_gen_ins_in[23:14],
                        1'b0};
    default: imm_gen_data_out = 32'h00000000;
  endcase
end

endmodule