verilator/test_regress/t/t_queue_class.v

45 lines
820 B
Systemverilog
Raw Normal View History

2020-08-29 18:56:43 +02:00
// DESCRIPTION: Verilator: Verilog Test module
//
// This file ONLY is placed under the Creative Commons Public Domain.
// SPDX-FileCopyrightText: 2019 Wilson Snyder
2020-08-29 18:56:43 +02:00
// SPDX-License-Identifier: CC0-1.0
module t;
2026-03-08 23:26:40 +01:00
class Cls;
int que[$];
2020-08-29 18:56:43 +02:00
2026-03-08 23:26:40 +01:00
task push_data(int val);
que.push_back(val);
endtask
2026-03-08 23:26:40 +01:00
function logic ok;
return '1;
endfunction
endclass
2020-08-29 18:56:43 +02:00
2026-03-08 23:26:40 +01:00
initial begin
Cls c2[1:0];
Cls cq[$];
2020-08-29 18:56:43 +02:00
2026-03-08 23:26:40 +01:00
c2[0] = new();
2020-08-29 18:56:43 +02:00
2026-03-08 23:26:40 +01:00
c2[0].push_data(20); // Works
2020-08-29 18:56:43 +02:00
2026-03-08 23:26:40 +01:00
if (c2[0].que.size() != 1) $stop;
2020-08-29 18:56:43 +02:00
2026-03-08 23:26:40 +01:00
c2[0].que.push_back(10); // Unsupported
if (c2[0].que.size() != 2) $stop;
2020-08-29 18:56:43 +02:00
2026-03-08 23:26:40 +01:00
// Test there's no side effect warning on iteration
foreach (cq[i])
case (cq[i].ok())
'0: $stop;
'1: $stop;
endcase
2026-03-08 23:26:40 +01:00
$write("*-* All Finished *-*\n");
$finish;
end
2020-08-29 18:56:43 +02:00
endmodule