// 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, input fastclk ); genvar unused; /*AUTOWIRE*/ // Beginning of automatic wires (for undeclared instantiated-module outputs) wire o_com; // From b of t_inst_first_b.v wire o_seq_d1r; // From b of t_inst_first_b.v // End of automatics integer _mode; // initial _mode=0 reg na, nb, nc, nd, ne; wire ma, mb, mc, md, me; wire da, db, dc, dd, de; reg [7:0] wa, wb, wc, wd, we; wire [7:0] qa, qb, qc, qd, qe; wire [5:0] ra; wire [4:0] rb; wire [29:0] rc; wire [63:0] rd; reg [5:0] sa; reg [4:0] sb; reg [29:0] sc; reg [63:0] sd; reg _guard1; initial _guard1 = 0; wire [104:0] r_wide = {ra, rb, rc, rd}; reg _guard2; initial _guard2 = 0; wire [98:0] r_wide0 = {rb, rc, rd}; reg _guard3; initial _guard3 = 0; wire [93:0] r_wide1 = {rc, rd}; reg _guard4; initial _guard4 = 0; wire [63:0] r_wide2 = {rd}; reg _guard5; initial _guard5 = 0; wire [168:0] r_wide3 = {ra, rb, rc, rd, rd}; reg [127:0] _guard6; initial _guard6 = 0; t_inst_first_a a ( .clk(clk), // Outputs .o_w5({ma, mb, mc, md, me}), .o_w5_d1r({da, db, dc, dd, de}), .o_w40({qa, qb, qc, qd, qe}), .o_w104({ra, rb, rc, rd}), // Inputs .i_w5({na, nb, nc, nd, ne}), .i_w40({wa, wb, wc, wd, we}), .i_w104({sa, sb, sc, sd}) ); reg i_seq; reg i_com; wire [15:14] o2_comhigh; t_inst_first_b b ( .o2_com(o2_comhigh), .i2_com({i_com, ~i_com}), .wide_for_trace(128'h1234_5678_aaaa_bbbb_cccc_dddd), .wide_for_trace_2(_guard6 + 128'h1234_5678_aaaa_bbbb_cccc_dddd), /*AUTOINST*/ // Outputs .o_seq_d1r(o_seq_d1r), .o_com(o_com), // Inputs .clk(clk), .i_seq(i_seq), .i_com(i_com) ); // surefire lint_off STMINI initial _mode = 0; always @(posedge fastclk) begin if (_mode == 1) begin if (o_com !== ~i_com) $stop; if (o2_comhigh !== {~i_com, i_com}) $stop; end end always @(posedge clk) begin //$write("[%0t] t_inst: MODE = %0x NA=%x MA=%x DA=%x\n", $time, _mode, // {na,nb,nc,nd,ne}, {ma,mb,mc,md,me}, {da,db,dc,dd,de}); $write("[%0t] t_inst: MODE = %0x IS=%x OS=%x\n", $time, _mode, i_seq, o_seq_d1r); if (_mode == 0) begin $write("[%0t] t_inst: Running\n", $time); _mode <= 1; {na, nb, nc, nd, ne} <= 5'b10110; {wa, wb, wc, wd, we} <= {8'ha, 8'hb, 8'hc, 8'hd, 8'he}; {sa, sb, sc, sd} <= {6'hf, 5'h3, 30'h12345, 32'h0abc_abcd, 32'h7654_3210}; // i_seq <= 1'b1; i_com <= 1'b1; end else if (_mode == 1) begin _mode <= 2; if ({ma, mb, mc, md, me} !== 5'b10110) $stop; if ({qa, qb, qc, qd, qe} !== {8'ha, 8'hb, 8'hc, 8'hd, 8'he}) $stop; if ({sa, sb, sc, sd} !== {6'hf, 5'h3, 30'h12345, 32'h0abc_abcd, 32'h7654_3210}) $stop; end else if (_mode == 2) begin _mode <= 3; if ({da, db, dc, dd, de} !== 5'b10110) $stop; if (o_seq_d1r !== ~i_seq) $stop; // $write("*-* All Finished *-*\n"); $finish; end if (|{_guard1, _guard2, _guard3, _guard4, _guard5, _guard6}) begin $write("Guard error %x %x %x %x %x\n", _guard1, _guard2, _guard3, _guard4, _guard5); $stop; end end // surefire lint_off UDDSDN wire _unused_ok = |{1'b1, r_wide0, r_wide1, r_wide2, r_wide3, r_wide}; endmodule