1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151
|
// DESCRIPTION: Verilator: Verilog Test module
//
// This file ONLY is placed under the Creative Commons Public Domain, for
// any use, without warranty, 2024 by Antmicro.
// SPDX-License-Identifier: CC0-1.0
function static func_stat;
input logic in;
logic tmp = in;
endfunction
task static task_stat;
input logic in;
logic tmp = in;
endtask
package pkg;
function static func_stat;
input logic in;
logic tmp = in;
endfunction
task static task_stat;
input logic in;
logic tmp = in;
endtask
endpackage
interface iface;
function static func_stat;
input logic in;
logic tmp = in;
endfunction
task static task_stat;
input logic in;
logic tmp = in;
endtask
endinterface
program prog;
function static func_stat;
input logic in;
logic tmp = in;
endfunction
task static task_stat;
input logic in;
logic tmp = in;
endtask
endprogram
module no_warn#(PARAM = 1)(input in, input clk);
typedef enum {A, B} enum_t;
// Do not warn on variables under modules.
logic tmp = in;
// Do not warn on assignment with module var.
function static func;
static logic func_var = tmp;
endfunction
// Do not warn on constant assignments.
function static func_param;
static logic func_var = PARAM;
static logic func_enum = A;
endfunction
// Do not warn on assignment referencing module I/O.
function static func_module_input;
logic tmp = in;
endfunction
// Do not warn on automatic assignment.
function automatic func_auto;
input logic in;
logic tmp = in;
endfunction
// Do not warn on assignment separate from declaration.
function static func_decl_and_assign;
input logic in;
logic tmp;
tmp = in;
endfunction
// Do not warn on variables under blocks.
initial begin
logic init_tmp = in;
end
always @(posedge clk) begin
logic always_tmp = in;
end
endmodule
module t(input clk);
function static func_stat;
input logic in;
logic tmp = in;
endfunction
task static task_stat;
input logic in;
logic tmp = in;
endtask
function automatic func_auto_with_static;
input logic in;
static logic tmp = in;
endfunction
function static func_assign_out;
output logic out;
logic tmp = out;
endfunction
function static func_assign_expr;
input logic in;
logic tmp = in + 1;
endfunction
function static int func_assign_static_in_to_auto(input int i);
automatic int tmp = i;
static int foo = tmp + 1;
return foo;
endfunction
function static int func_assign_auto_to_static();
automatic int tmp = 0;
static int foo = tmp + 1;
return foo;
endfunction
function static func_local;
automatic logic loc;
static logic func_var = loc;
endfunction
iface iface();
prog prog();
logic in;
no_warn no_warn(.in(in), .clk(clk));
initial begin
$write("*-* All Finished *-*\n");
$finish;
end
endmodule
|