RRoma13
New Contributor
4 years agosystem verilog signed'() extended sign bit wrong
module signed_test3(
input logic clk,
input logic [11:0] in,
input logic [11:0] zero,
output logic signed [15:0] d,
output logic signed [15:0] d2
);
logic signed [15:0] c,c2;
logic signed [11:0] a,b;
always_ff @(posedge clk) begin
a <= in;
b <= signed'( a[11:0] );
c <= ( signed'( b + signed'(zero) ) );
c2 <= ( signed'( b[11:0] + signed'(zero) ) );
end
assign d = signed'( c );
assign d2 = signed'( c2 );
endmodule
if you wrote only name of signed signal synth reduce sum to one bit.
of course all simulators(edaplayground) and Mentor Precision work as described -
12bit of signed "b" + 12 bit signed "zero" = signed value extended to 16 bit "c".
quartus 21.1