verilator/test_regress/t/t_struct_cons_cast.v

58 lines
1.1 KiB
Systemverilog
Raw Normal View History

// DESCRIPTION: Verilator: Verilog Test module
//
// This file ONLY is placed under the Creative Commons Public Domain.
// SPDX-FileCopyrightText: 2023 Wilson Snyder
// SPDX-License-Identifier: CC0-1.0
class uvm_policy;
2026-03-10 02:38:29 +01:00
typedef enum {
NEVER,
STARTED,
FINISHED
} recursion_state_e;
endclass
typedef enum {
2026-03-10 02:38:29 +01:00
UVM_DEFAULT_POLICY = 0,
UVM_DEEP = (1 << 16),
UVM_SHALLOW = (1 << 17),
UVM_REFERENCE = (1 << 18)
} uvm_recursion_policy_enum;
class Cls;
2026-03-10 02:38:29 +01:00
typedef struct {
uvm_policy::recursion_state_e state;
bit ret_val;
} state_info_t;
2026-03-10 02:38:29 +01:00
state_info_t m_recur_states/*[uvm_object][uvm_object]*/ [uvm_recursion_policy_enum];
2026-03-10 02:38:29 +01:00
function uvm_recursion_policy_enum get_recursion_policy();
return UVM_DEEP;
endfunction
2026-03-10 02:38:29 +01:00
function bit get_ret_val();
return $c(1);
endfunction
2026-03-10 02:38:29 +01:00
function void test();
bit ret_val;
ret_val = $c1(1);
// See issue #4568
m_recur_states[get_recursion_policy()] = '{uvm_policy::FINISHED, ret_val};
endfunction
endclass
module t;
2026-03-10 02:38:29 +01:00
initial begin
Cls c;
c = new;
$display("%p", c);
$write("*-* All Finished *-*\n");
$finish;
end
endmodule