2021-08-30 16:44:03 +02:00
// DESCRIPTION: Verilator: Verilog Test module
//
// This file ONLY is placed into the Public Domain, for any use,
// without warranty, 2021 by Krzysztof Bieganski.
// SPDX-License-Identifier: CC0-1.0
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);
2021-08-30 16:44:03 +02:00
package config_pkg ;
typedef struct packed {
int UPPER0 ;
int UPPER2 ;
int USE_QUAD0 ;
int USE_QUAD1 ;
int USE_QUAD2 ;
2025-08-30 13:42:41 +02:00
} 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 ;
import config_pkg::* ;
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::* ;
2025-08-30 13:42:41 +02:00
# ( parameter config_struct_t MY_CONFIG = '0 ) ;
2021-08-30 16:44:03 +02: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