verilator/test_regress/t/t_struct_cons_cast.v
2023-10-31 08:15:54 -04:00

58 lines
1.3 KiB
Systemverilog

// DESCRIPTION: Verilator: Verilog Test module
//
// This file ONLY is placed under the Creative Commons Public Domain, for
// any use, without warranty, 2023 by Wilson Snyder.
// SPDX-License-Identifier: CC0-1.0
class uvm_policy;
typedef enum {
NEVER,
STARTED,
FINISHED
} recursion_state_e;
endclass
typedef enum {
UVM_DEFAULT_POLICY = 0,
UVM_DEEP = (1<<16),
UVM_SHALLOW = (1<<17),
UVM_REFERENCE = (1<<18)
} uvm_recursion_policy_enum;
class Cls;
typedef struct {
uvm_policy::recursion_state_e state;
bit ret_val;
} state_info_t;
state_info_t m_recur_states/*[uvm_object][uvm_object]*/[uvm_recursion_policy_enum];
function uvm_recursion_policy_enum get_recursion_policy();
return UVM_DEEP;
endfunction
function bit get_ret_val();
return $c(1);
endfunction
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;
initial begin
Cls c;
c = new;
$display("%p", c);
$write("*-* All Finished *-*\n");
$finish;
end
endmodule