Made sign extension explicit to remove bit indexing (which iverilog doesn't like) and a tad more readable.

This commit is contained in:
riley committed 2026-10-16 11:35:24 +11:00
1 parent 878f949e5f
commit 65be2c2d61
1 file changed
+3 -1
+3 -1
View File
@@ -6,9 +6,11 @@ module sign_extender #(in_width=4, out_width=5)(
input logic [2**in_width-1:0] val, input logic [2**in_width-1:0] val,
output logic [2**out_width-1:0] ext_val output logic [2**out_width-1:0] ext_val
); );
logic [0:0] msb;
assign msb = (val & {1'b1, {(in_width-1){1'b0}}}) >> (in_width-1);
always_comb begin always_comb begin
if (op) begin if (op) begin
ext_val = { {(2**(out_width-in_width)){val[2**in_width-1]}}, val}; ext_val = { {(2**(out_width-in_width)){msb}}, val};
end else begin end else begin
ext_val = ({{(2**(out_width-in_width)){1'b0}}, val}); ext_val = ({{(2**(out_width-in_width)){1'b0}}, val});
end end