verilator/test_regress/t/t_math_pow4.v

72 lines
1.4 KiB
Systemverilog

// DESCRIPTION: Verilator: Verilog Test module
//
// This file ONLY is placed under the Creative Commons Public Domain.
// SPDX-FileCopyrightText: 2014 Clifford Wolf
// SPDX-License-Identifier: CC0-1.0
module t (
input clk
);
integer cyc = 0;
wire [31:0] y;
reg a;
test004 sub ( /*AUTOINST*/
// Outputs
.y(y[31:0]),
// Inputs
.a(a)
);
// Test loop
always @(posedge clk) begin
`ifdef TEST_VERBOSE
$write("[%0t] cyc==%0d a=%x y=%x\n", $time, cyc, a, y);
`endif
cyc <= cyc + 1;
if (cyc == 0) begin
a <= 0;
end
else if (cyc == 1) begin
a <= 1;
if (y != 32'h0) $stop;
end
else if (cyc == 2) begin
if (y != 32'h010000ff) $stop;
end
else if (cyc == 99) begin
$write("*-* All Finished *-*\n");
$finish;
end
end
endmodule
module test004 (
a,
y
);
input a;
output [31:0] y;
wire [7:0] y0;
wire [7:0] y1;
wire [7:0] y2;
wire [7:0] y3;
assign y = {y0, y1, y2, y3};
localparam [7:0] V0 = +8'sd1 ** -8'sd2; //'h01
localparam [7:0] V1 = +8'sd2 ** -8'sd2; //'h00
localparam [7:0] V2 = -8'sd2 ** -8'sd3; //'h00
localparam [7:0] V3 = -8'sd1 ** -8'sd3; //'hff
localparam [7:0] ZERO = 0;
initial $display("V0=%x V1=%x V2=%x V3=%x", V0, V1, V2, V3);
assign y0 = a ? V0 : ZERO;
assign y1 = a ? V1 : ZERO;
assign y2 = a ? V2 : ZERO;
assign y3 = a ? V3 : ZERO;
endmodule