2021-08-30 16:44:03 +02: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: 2021 Krzysztof Bieganski
2021-08-30 16:44:03 +02: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 checkd(gotv,expv) do if ((gotv) !== (expv)) begin $write("%%Error: %s:%0d: got=%0d exp=%0d\n", `__FILE__,`__LINE__, (gotv), (expv)); `stop; end while(0);
2026-03-10 02:38:29 +01:00
// verilog_format: on
2021-08-30 16:44:03 +02:00
package config_pkg ;
2026-03-10 02:38:29 +01:00
typedef struct packed {
int UPPER0 ;
int UPPER2 ;
int USE_QUAD0 ;
int USE_QUAD1 ;
int USE_QUAD2 ;
} config_struct_t ;
2021-08-30 16:44:03 +02:00
2025-08-30 13:42:41 +02:00
endpackage
2021-08-30 16:44:03 +02:00
module t ;
2026-03-10 02:38:29 +01:00
import config_pkg::* ;
2021-08-30 16:44:03 +02:00
2026-03-10 02:38:29 +01:00
struct_submodule # (
. MY_CONFIG ( ' { UPPER0: 10 , UPPER2: 20 , USE_QUAD0: 4 , USE_QUAD1: 5 , USE_QUAD2: 6 } )
) a_submodule_I ( ) ;
2025-08-30 13:42:41 +02:00
endmodule
2021-08-30 16:44:03 +02:00
module struct_submodule
import config_pkg::* ;
2026-03-10 02:38:29 +01:00
# (
parameter config_struct_t MY_CONFIG = '0
) ;
2021-08-30 16:44:03 +02:00
2026-03-10 02:38:29 +01:00
initial begin
`checkd ( MY_CONFIG . UPPER0 , 10 ) ;
`checkd ( MY_CONFIG . USE_QUAD0 , 4 ) ;
`checkd ( MY_CONFIG . USE_QUAD1 , 5 ) ;
`checkd ( MY_CONFIG . USE_QUAD2 , 6 ) ;
`checkd ( MY_CONFIG . UPPER2 , 20 ) ;
$write ( " *-* All Finished *-* \n " ) ;
$finish ;
end
2025-08-30 13:42:41 +02:00
endmodule