2019-12-01 17:52:48 +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
// any use, without warranty, 2019 by Wilson Snyder.
// SPDX-License-Identifier: CC0-1.0
2019-12-01 17:52:48 +01:00
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);
2024-10-03 01:00:39 +02: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 17:52:48 +01:00
module t ( /*AUTOARG*/
// Inputs
clk
) ;
input clk ;
2021-11-13 16:46:25 +01:00
integer cyc = 0 ;
2019-12-01 17:52:48 +01:00
integer i ;
always @ ( posedge clk ) begin
cyc < = cyc + 1 ;
begin
// Wildcard
2023-07-05 19:08:00 +02:00
typedef string dict_t [ * ] ;
2025-09-22 01:52:19 +02:00
static string a [ * ] = ' { default : " nope " , " BBBBB " : " fooing " , 23 'h434343 : " baring " } ;
static dict_t b = ' { default : " nope " , " BBBBB " : " fooing " , 23 'h434343 : " baring " } ;
2019-12-01 17:52:48 +01:00
int k ;
string v ;
2023-07-05 19:08:00 +02:00
v = b [ " CCC " ] ; `checks ( v , " baring " ) ;
v = b [ " BBBBB " ] ; `checks ( v , " fooing " ) ;
2022-07-20 15:01:36 +02:00
v = a [ " CCC " ] ; `checks ( v , " baring " ) ;
v = a [ " BBBBB " ] ; `checks ( v , " fooing " ) ;
2019-12-01 17:52:48 +01:00
a [ 32 'd1234 ] = " fooed " ;
a [ 4 'd3 ] = " bared " ;
2022-07-20 15:01:36 +02: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 17:52:48 +01: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 15:01:36 +02:00
i = a . size ( ) ; `checkh ( i , 4 ) ;
2019-12-01 17:52:48 +01:00
end
$write ( " *-* All Finished *-* \n " ) ;
$finish ;
end
endmodule