2013-10-29 01:41:05 +01:00
// DESCRIPTION: Verilator: Verilog Test module
//
2020-03-21 16:24:24 +01:00
// This file ONLY is placed under the Creative Commons Public Domain, for
2023-01-29 22:50:10 +01:00
// any use, without warranty, 2009-2023 by Wilson Snyder.
2020-03-21 16:24:24 +01:00
// SPDX-License-Identifier: CC0-1.0
2013-10-29 01:41:05 +01:00
2023-01-29 22:50:10 +01:00
`define stop $stop
`define checks(gotv,expv) do if ((gotv) !== (expv)) begin $write("%%Error: %s:%0d: got='%s' exp='%s'\n", `__FILE__,`__LINE__, (gotv), (expv)); `stop; end while(0);
2013-10-29 01:41:05 +01:00
module x ;
typedef struct {
2022-12-21 01:22:42 +01:00
int a , b ;
logic [ 3 : 0 ] c ;
} embedded_t ;
2013-10-29 01:41:05 +01:00
2022-12-21 01:22:42 +01:00
typedef struct {
embedded_t b ;
embedded_t tab [ 3 : 0 ] ;
} notembedded_t ;
2013-10-29 01:41:05 +01:00
2023-01-29 22:50:10 +01:00
typedef struct {
logic [ 15 : 0 ] m_i ;
string m_s ;
} istr_t ;
2022-12-21 01:22:42 +01:00
notembedded_t p ;
embedded_t t [ 1 : 0 ] ;
2023-01-29 22:50:10 +01:00
istr_t istr ;
string s ;
2013-10-29 01:41:05 +01:00
initial begin
2022-12-21 01:22:42 +01:00
t [ 1 ] . a = 2 ;
p . b . a = 1 ;
if ( t [ 1 ] . a ! = 2 ) $stop ;
if ( p . b . a ! = 1 ) $stop ;
2023-01-29 22:50:10 +01:00
istr . m_i = 12 ;
istr . m_s = " str1 " ;
s = $sformatf ( " %p " , istr ) ;
`checks ( s , " '{m_i:'hc, m_s: \" str1 \" } " ) ;
istr = ' { m_i: '1 , m_s: " str2 " } ;
s = $sformatf ( " %p " , istr ) ;
`checks ( s , " '{m_i:'hffff, m_s: \" str2 \" } " ) ;
2013-10-29 01:41:05 +01:00
$write ( " *-* All Finished *-* \n " ) ;
$finish ;
end
endmodule