Works great according to the testbench
This commit is contained in:
@@ -0,0 +1,49 @@
|
||||
module crc_gen_tb;
|
||||
parameter CRCBITS=7;
|
||||
parameter COMMANDLEN=40;
|
||||
parameter POLYNOMIAL='h89;
|
||||
|
||||
logic clk, reset, start, ready;
|
||||
logic [COMMANDLEN-1:0] num;
|
||||
logic [CRCBITS-1:0] crc;
|
||||
|
||||
logic [CRCBITS-1:0] test_cases [logic [COMMANDLEN-1:0]];
|
||||
|
||||
crc_gen #(CRCBITS,COMMANDLEN,POLYNOMIAL) dut (.*);
|
||||
|
||||
initial begin
|
||||
clk = 0;
|
||||
forever #10 clk = ~clk;
|
||||
end
|
||||
|
||||
initial begin
|
||||
test_cases = '{
|
||||
'h1234567890: 'h10,
|
||||
'hBEEFB05535: 'h05,
|
||||
'h5544992211: 'h17,
|
||||
'0: '0
|
||||
};
|
||||
|
||||
reset = 1;
|
||||
start = 0;
|
||||
repeat (2) @(posedge clk);
|
||||
reset = 0;
|
||||
@(posedge clk);
|
||||
foreach (test_cases[key]) begin
|
||||
wait (ready);
|
||||
num = key;
|
||||
@(posedge clk);
|
||||
start = 1;
|
||||
@(posedge clk);
|
||||
start = 0;
|
||||
@(posedge clk);
|
||||
wait(ready);
|
||||
assert (crc === test_cases[key])
|
||||
else $error("Invalid crc, found 0x%x but expected 0x%x",crc,test_cases[key]);
|
||||
end
|
||||
|
||||
$finish;
|
||||
|
||||
end
|
||||
|
||||
endmodule
|
||||
Reference in New Issue
Block a user