33 lines
912 B
Systemverilog
33 lines
912 B
Systemverilog
`timescale 1ns/1ps
|
|
`default_nettype none
|
|
|
|
module tb_ethernet_crc32;
|
|
logic [31:0] crc_in;
|
|
logic [7:0] data_in;
|
|
logic [31:0] crc_out;
|
|
byte vector [0:8];
|
|
integer i;
|
|
|
|
ethernet_crc32 dut (.crc_in(crc_in), .data_in(data_in), .crc_out(crc_out));
|
|
|
|
initial begin
|
|
vector[0]="1"; vector[1]="2"; vector[2]="3"; vector[3]="4"; vector[4]="5";
|
|
vector[5]="6"; vector[6]="7"; vector[7]="8"; vector[8]="9";
|
|
crc_in = 32'hffffffff;
|
|
data_in = 8'd0;
|
|
#1;
|
|
for (i = 0; i < 9; i = i + 1) begin
|
|
data_in = vector[i];
|
|
#1;
|
|
crc_in = crc_out;
|
|
#1;
|
|
end
|
|
if ((~crc_in) !== 32'hcbf43926)
|
|
$fatal(1, "CRC check vector failed: got %08x expected cbf43926", ~crc_in);
|
|
$display("PASS tb_ethernet_crc32: CRC-32('123456789') = cbf43926");
|
|
$finish;
|
|
end
|
|
endmodule
|
|
|
|
`default_nettype wire
|