verilator/test_regress/t/t_hier_block_signed_logic.v
Bartłomiej Chmiel 4695967185
Fix signed types emitted in hierarchical Verilation (#5178)
Signed-off-by: Bartłomiej Chmiel <bchmiel@antmicro.com>
2024-06-14 08:07:32 -04:00

52 lines
1.4 KiB
Systemverilog

// DESCRIPTION: Verilator: Verilog Test module
//
// Copyright 2024 by Antmicro. This program is free software; you can
// redistribute it and/or modify it under the terms of either the GNU
// Lesser General Public License Version 3 or the Perl Artistic License
// Version 2.0.
// SPDX-License-Identifier: LGPL-3.0-only OR Artistic-2.0
module t(/*AUTOARG*/
// inputs
clk
);
input clk;
logic signed [31:0] in1 = 3;
logic signed [31:0] in2 = 4;
logic signed in_small1 = 1;
logic signed in_small2 = -1;
logic signed [31:0] out1;
logic signed [31:0] out2;
logic signed out_small1;
logic signed out_small2;
sub sub1(.in(in1), .in_small(in_small1), .out(out1), .out_small(out_small1));
sub sub2(.in(in2), .in_small(in_small2), .out(out2), .out_small(out_small2));
always_ff @(posedge clk) begin
if (out1 == signed'(-3)
&& out2 == signed'(-4)
&& out_small1 == signed'(1'b1)
&& out_small2 == signed'(1'b1)) begin
$write("*-* All Finished *-*\n");
$finish;
end
else begin
$write("Mismatch\n");
$stop;
end
end
endmodule
module sub(
input logic signed [31:0] in,
input logic signed in_small,
output logic signed [31:0] out,
output logic signed out_small
); /*verilator hier_block*/
assign out = -in;
assign out_small = -in_small;
endmodule