83 lines
2.2 KiB
Systemverilog
83 lines
2.2 KiB
Systemverilog
// DESCRIPTION: Verilator: Verilog Test module
|
|
//
|
|
// This file ONLY is placed under the Creative Commons Public Domain.
|
|
// SPDX-FileCopyrightText: 2005 Wilson Snyder
|
|
// SPDX-License-Identifier: CC0-1.0
|
|
|
|
module t (
|
|
input clk
|
|
);
|
|
|
|
integer cyc;
|
|
initial cyc = 1;
|
|
|
|
reg [7:0] crc;
|
|
|
|
// Build up assignments
|
|
wire [7:0] bitrev;
|
|
assign bitrev[7] = crc[0];
|
|
assign bitrev[6] = crc[1];
|
|
assign bitrev[5] = crc[2];
|
|
assign bitrev[4] = crc[3];
|
|
assign bitrev[0] = crc[7];
|
|
assign bitrev[1] = crc[6];
|
|
assign bitrev[2] = crc[5];
|
|
assign bitrev[3] = crc[4];
|
|
|
|
// Build up always assignments
|
|
reg [7:0] bitrevb;
|
|
always @( /*AS*/ crc) begin
|
|
bitrevb[7] = crc[0];
|
|
bitrevb[6] = crc[1];
|
|
bitrevb[5] = crc[2];
|
|
bitrevb[4] = crc[3];
|
|
bitrevb[0] = crc[7];
|
|
bitrevb[1] = crc[6];
|
|
bitrevb[2] = crc[5];
|
|
bitrevb[3] = crc[4];
|
|
end
|
|
|
|
// Build up always assignments
|
|
reg [7:0] bitrevr;
|
|
always @(posedge clk) begin
|
|
bitrevr[7] <= crc[0];
|
|
bitrevr[6] <= crc[1];
|
|
bitrevr[5] <= crc[2];
|
|
bitrevr[4] <= crc[3];
|
|
bitrevr[0] <= crc[7];
|
|
bitrevr[1] <= crc[6];
|
|
bitrevr[2] <= crc[5];
|
|
bitrevr[3] <= crc[4];
|
|
end
|
|
|
|
always @(posedge clk) begin
|
|
if (cyc != 0) begin
|
|
cyc <= cyc + 1;
|
|
//$write("cyc=%0d crc=%x r=%x\n", cyc, crc, bitrev);
|
|
crc <= {crc[6:0], ~^{crc[7], crc[5], crc[4], crc[3]}};
|
|
if (cyc == 1) begin
|
|
crc <= 8'hed;
|
|
end
|
|
if (cyc == 2 && bitrev != 8'hb7) $stop;
|
|
if (cyc == 3 && bitrev != 8'h5b) $stop;
|
|
if (cyc == 4 && bitrev != 8'h2d) $stop;
|
|
if (cyc == 5 && bitrev != 8'h16) $stop;
|
|
if (cyc == 6 && bitrev != 8'h8b) $stop;
|
|
if (cyc == 7 && bitrev != 8'hc5) $stop;
|
|
if (cyc == 8 && bitrev != 8'he2) $stop;
|
|
if (cyc == 9 && bitrev != 8'hf1) $stop;
|
|
if (bitrevb != bitrev) $stop;
|
|
if (cyc == 3 && bitrevr != 8'hb7) $stop;
|
|
if (cyc == 4 && bitrevr != 8'h5b) $stop;
|
|
if (cyc == 5 && bitrevr != 8'h2d) $stop;
|
|
if (cyc == 6 && bitrevr != 8'h16) $stop;
|
|
if (cyc == 7 && bitrevr != 8'h8b) $stop;
|
|
if (cyc == 8 && bitrevr != 8'hc5) $stop;
|
|
if (cyc == 9) begin
|
|
$write("*-* All Finished *-*\n");
|
|
$finish;
|
|
end
|
|
end
|
|
end
|
|
endmodule
|