mirror of
https://github.com/verilator/verilator.git
synced 2025-01-05 22:27:35 +00:00
50 lines
958 B
Systemverilog
50 lines
958 B
Systemverilog
// DESCRIPTION: Verilator: Test for warning (not error) on improperly width'ed
|
|
// default function argument
|
|
//
|
|
// This file ONLY is placed into the Public Domain, for any use,
|
|
// without warranty, 2015 by Todd Strader.
|
|
// SPDX-License-Identifier: CC0-1.0
|
|
|
|
parameter logic Bar = 1'b1;
|
|
|
|
function automatic logic calc_y;
|
|
return 1'b1;
|
|
endfunction
|
|
|
|
function automatic logic [1:0] foo
|
|
(
|
|
input logic x = Bar,
|
|
input logic y = calc_y()
|
|
);
|
|
return x + y;
|
|
endfunction
|
|
|
|
class Foo;
|
|
static int x;
|
|
static function int get_x;
|
|
return x;
|
|
endfunction
|
|
endclass
|
|
|
|
function int mult2(int x = Foo::get_x());
|
|
return 2 * x;
|
|
endfunction
|
|
|
|
module t (/*AUTOARG*/);
|
|
logic [1:0] foo_val;
|
|
|
|
initial begin
|
|
foo_val = foo();
|
|
if (foo_val != 2'b10) $stop;
|
|
|
|
if (mult2(1) != 2) $stop;
|
|
if (mult2() != 0) $stop;
|
|
Foo::x = 30;
|
|
if (mult2() != 60) $stop;
|
|
|
|
$write("*-* All Finished *-*\n");
|
|
$finish;
|
|
end
|
|
|
|
endmodule
|