iverilog/ivtest/ivltests/pr511.v

297 lines
3.7 KiB
Verilog

/*
* This test is derived from bug report PR#511. Mostly what it is
* doing is checking the behavior of === and wait.
*/
`timescale 1 ps / 1 ps
module I54;
initial begin
#500000
$display( "FAILED." );
$finish;
end
parameter I148 = 4096;
integer I20;
integer I57;
integer I58;
integer I137;
time I106;
time I95;
time I97;
time I122;
time I142;
time I67;
time I25;
time I83;
time I128;
time I10;
time I12;
time I73;
time I159;
reg I77;
reg I108;
reg I2;
reg I81;
reg I60;
reg I114;
reg I124;
reg I41;
reg I151;
reg I43;
reg [1:0] I68;
reg [4*8-1:0] I138;
reg [3:0] I71;
reg [3:0] I149;
reg [3:0] I6;
reg [3:0] I76;
reg I48;
reg I61;
reg I62;
reg I49;
reg I158;
reg I85;
reg [2:0] I84;
reg [2:0] I30;
reg I94;
wire I69;
wire I98;
reg I115;
reg I101;
reg I14;
reg I78;
reg I131;
reg I24;
reg I52;
reg I13;
reg I132;
reg I139;
reg I107;
wire I93;
wire [3:0] I120;
wire [3:0] I82;
wire I38;
wire I22;
wire [1:0] I46;
wire [2:0] I1;
wire [4*8-1:0] I4;
wire [3:0] I125;
wire [3:0] I36;
wire [3:0] I91;
wire [3:0] I3;
wire [3:0] I143;
wire [1:0] I72;
wire I34;
wire I150;
wire I40;
wire [1:0] I51;
reg [1:0] I39;
reg [4-1:0] I70;
wire I103;
wire I29;
wire I74;
wire I144;
reg I63;
reg I15;
reg I146;
reg I110;
reg I152;
reg I129;
reg I19;
reg I112;
reg I102;
reg I156;
reg I121;
wire I23;
wire [3:0] I118;
wire [3:0] I86;
wire I28;
wire I65;
wire [1:0] I79;
wire [2:0] I17;
wire [4*8-1:0] I133;
wire [3:0] I27;
wire [3:0] I99;
wire [3:0] I135;
wire [3:0] I90;
wire [3:0] I35;
wire [1:0] I55;
wire I8;
wire I126;
wire I5;
wire [1:0] I140;
reg [1:0] I116;
reg [4-1:0] I45;
wire I105;
wire I33;
wire I75;
wire I145;
reg I64;
reg I16;
reg I147;
reg I111;
reg I153;
reg I130;
reg I21;
reg I113;
reg I104;
reg I157;
reg I123;
wire I26;
wire [3:0] I119;
wire [3:0] I87;
wire I32;
wire I66;
wire [1:0] I80;
wire [2:0] I18;
wire [4*8-1:0] I134;
wire [3:0] I31;
wire [3:0] I100;
wire [3:0] I136;
wire [3:0] I92;
wire [3:0] I37;
wire [1:0] I56;
wire I9;
wire I127;
wire I7;
wire [1:0] I141;
reg [1:0] I117;
reg [4-1:0] I47;
wire [256:0] I59;
wire [256:0] I50;
wire [256:0] I88;
wire [256:0] I154;
wire [256:0] I89;
wire [256:0] I155;
assign I69 = I59[I20];
assign I98 = I50[I20];
assign I103 = I88[I57];
assign I29 = I154[I57];
assign I105 = I89[I58];
assign I33 = I155[I58];
wire I109 = ( ~ I94 ) & ( ~ I151 );
wire I96 = ( ~ I94 ) & ( I151 );
wire I42 = ( I94 ) & ( ~ I151 );
wire I44 = ( I94 ) & ( I151 );
always @( I114 ) begin
I132 <= #I106 I114;
I102 <= #I95 I114;
I104 <= #I97 I114;
end
always @( I124 ) begin
I139 <= #I106 I124;
I156 <= #I95 I124;
I157 <= #I97 I124;
end
initial begin
I77 = 1'b0;
#0 ;
#(I142) I77 = 1'b1;
forever #(I122/2) I77 = ~ I77;
end
initial begin
I108 = 1'b0;
#0 ;
#(I25) I108 = 1'b1;
forever #(I67/2) I108 = ~ I108;
end
initial begin
I2 = 1'b0;
#0 ;
#(I128) I2 = 1'b1;
forever #(I83/2) I2 = ~ I2;
end
initial begin
I81 = 1'b0;
#0 ;
#(I12) I81 = 1'b1;
forever #(I10/2) I81 = ~ I81;
end
initial begin
I60 = 1'b0;
#0 ;
#(I159) I60 = 1'b1;
forever #(I73/2) I60 = ~ I60;
end
initial begin
I114 = 1'b1;
#300000 ;
@( posedge I81 ) ;
@( posedge I81 ) ;
#50 I114 = 1'b0;
end
initial begin
I124 = 1'b1;
#300000 ;
@( posedge I60 ) ;
@( posedge I60 ) ;
#50 I124 = 1'b0;
end
initial begin : I53
I137 = 1600;
I20 = 40;
I57 = 0;
I58 = 80;
I106 = 150;
I95 = 300;
I97 = 0;
I151 = 1'b0;
I94 = 1'b0;
I122 = 6400;
I142 = 0;
I67 = 6270;
I25 = 0;
I83 = 6400;
I128 = 1000;
I10 = 6270;
I12 = 0;
I73 = 6400;
I159 = 1000;
wait ( I114 === 1'b1 );
wait ( I114 === 1'b0 );
wait ( I124 === 1'b0 );
$display( "PASSED" );
$finish;
end
endmodule