2022-11-17 00:58:57 +01:00
// DESCRIPTION: Verilator: Verilog Test module
//
2026-01-27 02:24:34 +01:00
// This file ONLY is placed under the Creative Commons Public Domain.
// SPDX-FileCopyrightText: 2022 Antmicro Ltd
2022-11-17 00:58:57 +01:00
// SPDX-License-Identifier: CC0-1.0
2026-03-10 02:38:29 +01:00
// verilog_format: off
2024-02-09 00:39:13 +01:00
`define stop $stop
`define checkh(gotv,expv) do if ((gotv) !== (expv)) begin $write("%%Error: %s:%0d: got='h%x exp='h%x\n", `__FILE__,`__LINE__, (gotv), (expv)); `stop; end while(0);
2026-03-10 02:38:29 +01:00
// verilog_format: on
2024-02-09 00:39:13 +01:00
2022-11-17 00:58:57 +01:00
typedef int my_type ;
class my_class ;
2026-03-10 02:38:29 +01:00
static int a = 1 ;
2022-11-17 00:58:57 +01:00
endclass
function int get_val ;
2026-03-10 02:38:29 +01:00
return 2 ;
2022-11-17 00:58:57 +01:00
endfunction
package my_pkg ;
2026-03-10 02:38:29 +01:00
int my_type_size = $bits ( my_type ) ;
int my_class_a = my_class : : a ;
int get_val_result = get_val ( ) ;
2022-11-17 00:58:57 +01:00
endpackage
package overwriting_pkg ;
2026-03-10 02:38:29 +01:00
typedef logic [ 9 : 0 ] my_type ;
2022-11-17 00:58:57 +01:00
2026-03-10 02:38:29 +01:00
class my_class ;
static int a = 2 ;
endclass
2022-11-17 00:58:57 +01:00
2026-03-10 02:38:29 +01:00
function int get_val ;
return 3 ;
endfunction
2022-11-17 00:58:57 +01:00
2026-03-10 02:38:29 +01:00
int my_type_size = $bits ( my_type ) ;
int my_class_a = my_class : : a ;
int get_val_result = get_val ( ) ;
2022-11-17 00:58:57 +01:00
endpackage
2026-03-10 02:38:29 +01:00
module t (
input clk
) ;
int cyc ;
always @ ( posedge clk ) begin
cyc < = cyc + 1 ;
if ( cyc = = 2 ) begin
`checkh ( my_pkg : : my_type_size , 32 ) ;
`checkh ( my_pkg : : my_class_a , 1 ) ;
`checkh ( my_pkg : : get_val_result , 2 ) ;
`checkh ( overwriting_pkg : : my_type_size , 10 ) ;
`checkh ( overwriting_pkg : : my_class_a , 2 ) ;
`checkh ( overwriting_pkg : : get_val_result , 3 ) ;
$write ( " *-* All Finished *-* \n " ) ;
$finish ;
end
end
2022-11-17 00:58:57 +01:00
endmodule