2026-05-14 13:38:42 +02:00
// DESCRIPTION: Verilator: Verilog Test module
//
// This file ONLY is placed under the Creative Commons Public Domain.
// SPDX-FileCopyrightText: 2026 Antmicro
// SPDX-License-Identifier: CC0-1.0
// verilog_format: off
`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)
// verilog_format: on
module t (
2026-05-14 23:38:11 +02:00
input clk
2026-05-14 13:38:42 +02:00
) ;
integer cyc = 0 ;
logic [ 127 : 0 ] sig ;
2026-05-14 22:46:57 +02:00
logic [ 127 : 0 ] publicSig /*verilator public_flat_rw*/ ;
2026-05-14 13:38:42 +02:00
always @ ( posedge clk ) begin
cyc < = cyc + 1 ;
sig < = '0 ;
2026-05-14 22:46:57 +02:00
publicSig < = '0 ;
2026-05-14 13:38:42 +02:00
sig [ 127 : 64 ] < = '0 ; // write path
if ( cyc = = 1 ) begin
force sig [ 31 ] = 1 'b1 ;
force sig [ 32 ] = 1 'b1 ;
2026-05-14 22:46:57 +02:00
force publicSig [ 31 ] = 1 'b1 ;
force publicSig [ 32 ] = 1 'b1 ;
2026-05-14 13:38:42 +02:00
end
else if ( cyc = = 3 ) begin
2026-05-14 23:38:11 +02:00
`checkh ( sig [ 33 : 26 ] , 8 'h60 ) ; // width <= 8
`checkh ( sig [ 39 : 24 ] , 16 'h180 ) ; // 8 < width <= 16
`checkh ( sig [ 40 : 20 ] , 21 'h1800 ) ; // 16 < width <= 32
2026-05-14 13:38:42 +02:00
`checkh ( sig [ 51 : 20 ] , 32 'h1800 ) ;
`checkh ( sig [ 29 : 0 ] , 30 'h0 ) ;
2026-05-14 23:38:11 +02:00
`checkh ( sig [ 50 : 10 ] , 41 'h600000 ) ; // 32 < width <= 64
2026-05-14 13:38:42 +02:00
`checkh ( sig [ 73 : 10 ] , 64 'h600000 ) ;
2026-05-14 23:38:11 +02:00
`checkh ( sig [ 100 : 5 ] , ( 96 'h1 < < 26 ) | ( 96 'h1 < < 27 ) ) ; // width > 64
2026-05-14 13:38:42 +02:00
`checkh ( sig [ 70 : 6 ] , ( 65 'h1 < < 25 ) | ( 65 'h1 < < 26 ) ) ;
2026-05-14 22:46:57 +02:00
`checkh ( publicSig [ 33 : 26 ] , 8 'h60 ) ; // width <= 8
`checkh ( publicSig [ 39 : 24 ] , 16 'h180 ) ; // 8 < width <= 16
`checkh ( publicSig [ 40 : 20 ] , 21 'h1800 ) ; // 16 < width <= 32
`checkh ( publicSig [ 51 : 20 ] , 32 'h1800 ) ;
`checkh ( publicSig [ 29 : 0 ] , 30 'h0 ) ;
`checkh ( publicSig [ 50 : 10 ] , 41 'h600000 ) ; // 32 < width <= 64
`checkh ( publicSig [ 73 : 10 ] , 64 'h600000 ) ;
`checkh ( publicSig [ 100 : 5 ] , ( 96 'h1 < < 26 ) | ( 96 'h1 < < 27 ) ) ; // width > 64
`checkh ( publicSig [ 70 : 6 ] , ( 65 'h1 < < 25 ) | ( 65 'h1 < < 26 ) ) ;
2026-05-14 13:38:42 +02:00
$write ( " *-* All Finished *-* \n " ) ;
$finish ;
end
end
endmodule