Added Few config specifc test blocks

master
gaurav 2022-11-01 21:05:10 +01:00
parent c0e3f02f2b
commit 2734f8e9f3
5 changed files with 565 additions and 0 deletions

View File

@ -0,0 +1,129 @@
`timescale 1ns/1ns
module tb_mipi_csi_rx_packet_decoder;
reg clk;
reg reset;
reg input_valid;
reg [31:0]bytes_i;
wire [31:0]bytes_o;
wire synced;
wire [15:0]packet_length;
wire [2:0]packet_type;
wire reset_g;
GSR
GSR_INST (
.GSR_N(1'b1),
.CLK(1'b0)
);
mipi_csi_rx_packet_decoder_8b4lane dec1(.clk_i(clk),
.data_valid_i(input_valid),
.data_i(bytes_i),
.output_valid_o(synced),
.data_o(bytes_o),
.packet_length_o(packet_length),
.packet_type_o(packet_type));
task sendbytes;
input [31:0]bytes;
begin
bytes_i = bytes;
clk = 1'b1;
#4
clk = 1'b0;
#4;
end
endtask
task sendpacket;
reg [31:0]i;
for ( i= 32'b0; i < 32'h4C0; i = i + 4)
begin
sendbytes(i*1000);
end
endtask
initial begin
clk = 1'b0;
input_valid = 1'h0;
#50
reset = 1'b0;
sendbytes(32'h0000);
sendbytes(32'h0000);
sendbytes(32'h0000);
sendbytes(32'h0000);
sendbytes(32'h0000);
sendbytes(32'h0000);
input_valid = 1'h1;
sendbytes(32'hB8B8B8B8); //10bit
sendbytes(32'hdd0A062B);
sendbytes(32'h11223344);
sendbytes(32'h55667788);
sendbytes(32'h99AABBCC);
sendpacket();
input_valid = 1'h0;
sendbytes(32'h00000000);
sendbytes(32'h00000000);
sendbytes(32'h00000000);
sendbytes(32'h00000000);
sendbytes(32'h00000000);
sendbytes(32'h00000000);
sendbytes(32'h00000000);
sendbytes(32'h00000000);
sendbytes(32'h0000);
sendbytes(32'h0000);
sendbytes(32'h0000);
sendbytes(32'h0000);
sendbytes(32'h0000);
sendbytes(32'h0000);
input_valid = 1'h1;
sendbytes(32'hB8B8B8B8);
sendbytes(32'hdd0A062C); //12 bit
sendbytes(32'h11223344);
sendbytes(32'h55667788);
sendbytes(32'h99AABBCC);
sendpacket();
input_valid = 1'h0;
sendbytes(32'h00000000);
sendbytes(32'h00000000);
sendbytes(32'h00000000);
sendbytes(32'h00000000);
sendbytes(32'h00000000);
sendbytes(32'h00000000);
sendbytes(32'h00000000);
sendbytes(32'h00000000);
sendbytes(32'h0000);
sendbytes(32'h0000);
sendbytes(32'h0000);
sendbytes(32'h0000);
sendbytes(32'h0000);
sendbytes(32'h0000);
input_valid = 1'h1;
sendbytes(32'hB8B8B8B8);
sendbytes(32'hdd0A062D); //14bit
sendbytes(32'h11223344);
sendbytes(32'h55667788);
sendbytes(32'h99AABBCC);
sendpacket();
input_valid = 1'h0;
sendbytes(32'h00000000);
sendbytes(32'h00000000);
sendbytes(32'h00000000);
sendbytes(32'h00000000);
sendbytes(32'h00000000);
sendbytes(32'h00000000);
sendbytes(32'h00000000);
sendbytes(32'h00000000);
reset = 1'b1;
end
endmodule

View File

@ -0,0 +1,79 @@
`timescale 1ns/1ns
module tb_mipi_rx_raw_depacker();
reg clk;
reg bytes_valid;
reg [31:0]bytes_i;
wire [55:0]bytes_o;
wire synced;
reg [2:0]packet_type;
wire raw_line_valid;
mipi_csi_rx_raw_depacker_8b4lane #(.PIXEL_WIDTH(14)) ins1( .clk_i(clk),
.data_valid_i(bytes_valid),
.data_i(bytes_i),
.packet_type_i(packet_type),
.output_valid_o(synced),
.raw_line_o(raw_line_valid),
.output_o(bytes_o));
task sendbytes;
input [31:0]bytes;
begin
bytes_i = bytes;
clk = 1'b0;
#4
clk = 1'b1;
#4;
end
endtask
initial begin
clk = 1'b0;
bytes_valid = 4'h0;
packet_type = 3;
#50
sendbytes(32'h0);
sendbytes(32'h0);
sendbytes(32'h0);
sendbytes(32'h0);
bytes_valid = 1'h1;
sendbytes( 32'h04030201);
sendbytes( 32'h07060503);
sendbytes( 32'h0A090008);
sendbytes( 32'h0D000C0B);
sendbytes( 32'h00AA0F0E);
sendbytes( 32'h04030201);
sendbytes( 32'h07060500);
sendbytes( 32'h0A090008);
sendbytes( 32'h0D000C0B);
sendbytes( 32'h00BB0F0E);
sendbytes( 32'h04030201);
sendbytes( 32'h07060500);
sendbytes( 32'h0A090008);
sendbytes( 32'h0D000C0B);
sendbytes( 32'h00dd0F0E);
sendbytes( 32'h04030201);
sendbytes( 32'h07060500);
sendbytes( 32'h0A090008);
sendbytes( 32'h0D000C0B);
sendbytes( 32'h00ee0F0E);
bytes_valid = 1'h0;
sendbytes(32'h0000);
sendbytes(32'h0000);
sendbytes(32'h0000);
sendbytes(32'h0000);
sendbytes(32'h0000);
sendbytes(32'h0000);
sendbytes(32'h0000);
sendbytes(32'h0000);
$finish;
end
endmodule

View File

@ -0,0 +1,146 @@
`timescale 1ns/1ns
module tb_mipi_rx_raw_depacker8b4_12bit();
reg clk;
reg bytes_valid;
reg [31:0]bytes_i;
wire [55:0]bytes_o;
wire synced;
reg [2:0]packet_type;
wire raw_line_valid;
mipi_csi_rx_raw_depacker_8b4lane #(.PIXEL_WIDTH(14)) ins1( .clk_i(clk),
.data_valid_i(bytes_valid),
.data_i(bytes_i),
.packet_type_i(packet_type),
.output_valid_o(synced),
.raw_line_o(raw_line_valid),
.output_o(bytes_o));
task sendbytes;
input [31:0]bytes;
begin
bytes_i = bytes;
clk = 1'b0;
#4
clk = 1'b1;
#4;
end
endtask
initial begin
clk = 1'b0;
bytes_valid = 4'h0;
packet_type = 4; //12bit
#50
sendbytes(32'h0);
sendbytes(32'h0);
sendbytes(32'h0);
bytes_valid = 1'h1;
sendbytes( 32'h03000201);
sendbytes( 32'h06050004);
sendbytes( 32'h00080700);
sendbytes( 32'h030F0201);
sendbytes( 32'h0605F004);
sendbytes( 32'h00080700);
sendbytes( 32'h03000201);
sendbytes( 32'h06050004);
sendbytes( 32'hF008070F);
sendbytes( 32'h03000201);
sendbytes( 32'h06050004);
sendbytes( 32'h00080700);
sendbytes( 32'h03000201);
sendbytes( 32'h06050004);
sendbytes( 32'h00080700);
sendbytes( 32'h03000201);
sendbytes( 32'h06050004);
sendbytes( 32'h00080700);
sendbytes( 32'h03000201);
sendbytes( 32'h06050004);
sendbytes( 32'h00080700);
sendbytes( 32'h03000201);
sendbytes( 32'h06050004);
sendbytes( 32'h00080700);
bytes_valid = 1'h0;
sendbytes(32'h0000);
sendbytes(32'h0000);
sendbytes(32'h0000);
sendbytes(32'h0000);
sendbytes(32'h0000);
sendbytes(32'h0000);
sendbytes(32'h0000);
sendbytes(32'h0000);
sendbytes(32'h0000);
sendbytes(32'h0000);
sendbytes(32'h0000);
bytes_valid = 1'h1;
sendbytes( 32'h03000201);
sendbytes( 32'h00000004);
sendbytes( 32'h00000000);
sendbytes( 32'h03FFF2F1);
sendbytes( 32'h0000FFF4);
sendbytes( 32'h00000000);
sendbytes( 32'h03000201);
sendbytes( 32'h00000004);
sendbytes( 32'h00000000);
sendbytes( 32'h03000201);
sendbytes( 32'h00000004);
sendbytes( 32'h00000000);
sendbytes( 32'h03000201);
sendbytes( 32'h00000004);
sendbytes( 32'h00000000);
sendbytes( 32'h03000201);
sendbytes( 32'h00000004);
sendbytes( 32'h00000000);
sendbytes( 32'h03000201);
sendbytes( 32'h00000004);
sendbytes( 32'h00000000);
sendbytes( 32'h03000201);
sendbytes( 32'h00000004);
sendbytes( 32'h00000000);
bytes_valid = 1'h0;
sendbytes(32'h0000);
sendbytes(32'h0000);
sendbytes(32'h0000);
sendbytes(32'h0000);
sendbytes(32'h0000);
sendbytes(32'h0000);
sendbytes(32'h0000);
sendbytes(32'h0000);
sendbytes(32'h0000);
sendbytes(32'h0000);
sendbytes(32'h0000);
sendbytes(32'h0000);
sendbytes(32'h0000);
sendbytes(32'h0000);
sendbytes(32'h0000);
$finish;
end
endmodule

View File

@ -0,0 +1,102 @@
`timescale 1ns/1ns
module tb_mipi_rx_raw_depacker8b4_14bit();
reg clk;
reg bytes_valid;
reg [31:0]bytes_i;
wire [55:0]bytes_o;
wire synced;
reg [2:0]packet_type;
wire raw_line_valid;
mipi_csi_rx_raw_depacker_8b4lane #(.PIXEL_WIDTH(14)) ins1( .clk_i(clk),
.data_valid_i(bytes_valid),
.data_i(bytes_i),
.packet_type_i(packet_type),
.output_valid_o(synced),
.raw_line_o(raw_line_valid),
.output_o(bytes_o));
task sendbytes;
input [31:0]bytes;
begin
bytes_i = bytes;
clk = 1'b0;
#4
clk = 1'b1;
#4;
end
endtask
initial begin
clk = 1'b0;
bytes_valid = 4'h0;
packet_type = 5; //14bit
#50
sendbytes(32'h0);
sendbytes(32'h0);
sendbytes(32'h0);
sendbytes(32'h0);
bytes_valid = 1'h1;
sendbytes( 32'h04030201);
sendbytes( 32'h05000000);
sendbytes( 32'h00080706);
sendbytes( 32'h0A090000);
sendbytes( 32'h00000C0B);
sendbytes( 32'h0F0E0D00);
sendbytes( 32'h00000011);
sendbytes( 32'h04030201);
sendbytes( 32'h05FC003F);
sendbytes( 32'h00080706);
sendbytes( 32'h0A090000);
sendbytes( 32'h00000C0B);
sendbytes( 32'h0F0E0D00);
sendbytes( 32'h00000011);
sendbytes( 32'h04030201);
sendbytes( 32'h05000FC0);
sendbytes( 32'h00080706);
sendbytes( 32'h0A09003F);
sendbytes( 32'h00000C0B);
sendbytes( 32'h0F0E0D00);
sendbytes( 32'h00000011);
sendbytes( 32'h04030201);
sendbytes( 32'h05000000);
sendbytes( 32'h00080706);
sendbytes( 32'h0A090000);
sendbytes( 32'h00000C0B);
sendbytes( 32'h0F0E0D00);
sendbytes( 32'h00000011);
sendbytes( 32'h04030201);
sendbytes( 32'h05000000);
sendbytes( 32'h00080706);
sendbytes( 32'h0A090000);
sendbytes( 32'h00000C0B);
sendbytes( 32'h0F0E0D00);
sendbytes( 32'h00000011);
bytes_valid = 1'h0;
sendbytes(32'h0000);
sendbytes(32'h0000);
sendbytes(32'h0000);
sendbytes(32'h0000);
sendbytes(32'h0000);
sendbytes(32'h0000);
sendbytes(32'h0000);
sendbytes(32'h0000);
$finish;
end
endmodule

View File

@ -0,0 +1,109 @@
`timescale 1ns/1ns
module tb_mipi_rx_raw_depacker8b2_10bit();
reg clk;
reg bytes_valid;
reg [15:0]bytes_i;
wire [55:0]bytes_o;
wire synced;
reg [2:0]packet_type;
wire raw_line_valid;
mipi_csi_rx_raw_depacker_8b2lane #(.PIXEL_WIDTH(14)) ins1( .clk_i(clk),
.data_valid_i(bytes_valid),
.data_i(bytes_i),
.packet_type_i(packet_type),
.output_valid_o(synced),
.raw_line_o(raw_line_valid),
.output_o(bytes_o));
task sendbytes;
input [15:0]bytes;
begin
bytes_i = bytes;
clk = 1'b0;
#4
clk = 1'b1;
#4;
end
endtask
initial begin
clk = 1'b0;
bytes_valid = 4'h0;
packet_type = 3; //10bit
#50
sendbytes(16'h0);
sendbytes(16'h0);
sendbytes(16'h0);
sendbytes(16'h0);
bytes_valid = 1'h1;
sendbytes( 16'h0201);
sendbytes( 16'h0403);
sendbytes( 16'h0500);
sendbytes( 16'h0706);
sendbytes( 16'h0008);
sendbytes( 16'h0201);
sendbytes( 16'h0403);
sendbytes( 16'h0500);
sendbytes( 16'h0706);
sendbytes( 16'h0008);
sendbytes( 16'h0201);
sendbytes( 16'h0403);
sendbytes( 16'h0503);
sendbytes( 16'h0706);
sendbytes( 16'h0C08);
sendbytes( 16'h0201);
sendbytes( 16'h0403);
sendbytes( 16'h0530);
sendbytes( 16'h0706);
sendbytes( 16'hC008);
sendbytes( 16'h0201);
sendbytes( 16'h0403);
sendbytes( 16'h0500);
sendbytes( 16'h0706);
sendbytes( 16'h0008);
sendbytes( 16'h0201);
sendbytes( 16'h0403);
sendbytes( 16'h0500);
sendbytes( 16'h0706);
sendbytes( 16'h0008);
sendbytes( 16'h0201);
sendbytes( 16'h0403);
sendbytes( 16'h0500);
sendbytes( 16'h0706);
sendbytes( 16'h0008);
sendbytes( 16'h0201);
sendbytes( 16'h0403);
sendbytes( 16'h0500);
sendbytes( 16'h0706);
sendbytes( 16'h0008);
bytes_valid = 1'h0;
sendbytes(16'h0000);
sendbytes(16'h0000);
sendbytes(16'h0000);
sendbytes(16'h0000);
sendbytes(16'h0000);
sendbytes(16'h0000);
sendbytes(16'h0000);
sendbytes(16'h0000);
$finish;
end
endmodule