// DESCRIPTION: Verilator: Verilog Test module // // This file ONLY is placed under the Creative Commons Public Domain. // SPDX-FileCopyrightText: 2003 Wilson Snyder // SPDX-License-Identifier: CC0-1.0 module t ( input clk ); reg [43:0] mi; reg [5:0] index; integer indexi; reg read; initial begin // Static mi = 44'b01010101010101010101010101010101010101010101; if (mi[0] !== 1'b1) $stop; if (mi[1-:2] !== 2'b01) $stop; `ifdef VERILATOR // verilator lint_off SELRANGE if (mi[-1] !== 1'bx && mi[-1] !== 1'b0) $stop; if (mi[0-:2] !== 2'b1x && 1'b0) $stop; if (mi[-1-:2] !== 2'bxx && 1'b0) $stop; // verilator lint_on SELRANGE `else if (mi[-1] !== 1'bx) $stop; if (mi[0-:2] !== 2'b1x) $stop; if (mi[-1-:2] !== 2'bxx) $stop; `endif end integer cyc; initial cyc = 1; always @(posedge clk) begin if (cyc != 0) begin cyc <= cyc + 1; if (cyc == 1) begin mi = 44'h123; end if (cyc == 2) begin index = 6'd43; indexi = 43; end if (cyc == 3) begin read = mi[index]; if (read !== 1'b0) $stop; read = mi[indexi]; if (read !== 1'b0) $stop; end if (cyc == 4) begin index = 6'd44; indexi = 44; end if (cyc == 5) begin read = mi[index]; $display("-Illegal read value: %x", read); //if (read!==1'b1 && read!==1'bx) $stop; read = mi[indexi]; $display("-Illegal read value: %x", read); //if (read!==1'b1 && read!==1'bx) $stop; end if (cyc == 6) begin indexi = -1; end if (cyc == 7) begin read = mi[indexi]; $display("-Illegal read value: %x", read); //if (read!==1'b1 && read!==1'bx) $stop; end if (cyc == 10) begin $write("*-* All Finished *-*\n"); $finish; end end end endmodule