Added Few config specifc test blocks
parent
c0e3f02f2b
commit
2734f8e9f3
|
@ -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
|
|
@ -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
|
|
@ -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
|
|
@ -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
|
|
@ -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
|
Loading…
Reference in New Issue