2019-12-01 16:52:48 +00:00
// DESCRIPTION: Verilator: Verilog Test module
//
2020-03-21 15:24:24 +00:00
// This file ONLY is placed under the Creative Commons Public Domain, for
// any use, without warranty, 2019 by Wilson Snyder.
// SPDX-License-Identifier: CC0-1.0
2019-12-01 16:52:48 +00:00
2024-02-08 23:39:13 +00: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);
2024-10-02 23:00:39 +00:00
`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);
2019-12-01 16:52:48 +00:00
module t ( /*AUTOARG*/
// Inputs
clk
) ;
input clk ;
2021-11-13 15:46:25 +00:00
integer cyc = 0 ;
2019-12-01 16:52:48 +00:00
integer i ;
always @ ( posedge clk ) begin
cyc < = cyc + 1 ;
begin
// Wildcard
2023-07-05 17:08:00 +00:00
typedef string dict_t [ * ] ;
2022-07-20 13:01:36 +00:00
string a [ * ] = ' { default : " nope " , " BBBBB " : " fooing " , 23 'h434343 : " baring " } ;
2023-07-05 17:08:00 +00:00
dict_t b = ' { default : " nope " , " BBBBB " : " fooing " , 23 'h434343 : " baring " } ;
2019-12-01 16:52:48 +00:00
int k ;
string v ;
2023-07-05 17:08:00 +00:00
v = b [ " CCC " ] ; `checks ( v , " baring " ) ;
v = b [ " BBBBB " ] ; `checks ( v , " fooing " ) ;
2022-07-20 13:01:36 +00:00
v = a [ " CCC " ] ; `checks ( v , " baring " ) ;
v = a [ " BBBBB " ] ; `checks ( v , " fooing " ) ;
2019-12-01 16:52:48 +00:00
a [ 32 'd1234 ] = " fooed " ;
a [ 4 'd3 ] = " bared " ;
2022-07-20 13:01:36 +00:00
a [ 79 'h4141 ] = " bazed " ;
i = a . num ( ) ; `checkh ( i , 5 ) ;
i = a . size ( ) ; `checkh ( i , 5 ) ;
v = a [ 39 'd1234 ] ; `checks ( v , " fooed " ) ;
v = a [ " AA " ] ; `checks ( v , " bazed " ) ;
2019-12-01 16:52:48 +00:00
v = a [ 4 'd3 ] ; `checks ( v , " bared " ) ;
i = a . exists ( " baz " ) ; `checkh ( i , 0 ) ;
i = a . exists ( 4 'd3 ) ; `checkh ( i , 1 ) ;
a . delete ( 4 'd3 ) ;
2022-07-20 13:01:36 +00:00
i = a . size ( ) ; `checkh ( i , 4 ) ;
2019-12-01 16:52:48 +00:00
end
$write ( " *-* All Finished *-* \n " ) ;
$finish ;
end
endmodule