|  | `ifndef VCDFILE | 
|  | `define VCDFILE "out.vcd" | 
|  | `endif | 
|  |  | 
|  | `timescale 1 ms / 1 ps | 
|  | module test; | 
|  |  | 
|  | /* Make a regular pulsing clock. */ | 
|  | reg clk = 0; | 
|  | always #2 clk = !clk; | 
|  |  | 
|  | reg [3:0] in; | 
|  | wire [3:0] out; | 
|  | wire [4:0] vec0; | 
|  | wire [4:0] vec1; | 
|  |  | 
|  | top uut (.clk(clk), .cen(in[0]), .rst(in[1]), .ina(in[2]), .inb(in[3]), | 
|  | .outa(out[0]), .outb(out[1]), .outc(out[2]), .outd(out[3]), | 
|  | .vec0(vec0), .vec1(vec1)); | 
|  |  | 
|  |  | 
|  | initial begin | 
|  | $dumpfile(`VCDFILE); | 
|  | $dumpvars(1, uut); | 
|  | #3; // get between edges | 
|  | in <= 4'b0010; | 
|  | #1; //negedge | 
|  | if (out != 4'b1000) $error("initial reset %b", out); | 
|  | #1; // between | 
|  | in <= 4'b0000; | 
|  | #1; //posedge | 
|  | #1; //between | 
|  | if (out != 4'b1000) $error("set and reg1 %b", out); | 
|  | #1; //negedge | 
|  | #1; //between | 
|  | if (out != 4'b0000) $error("set and reg1 %b", out); | 
|  | in <= 4'b1101; | 
|  | #1; //posedge | 
|  | #1; // b | 
|  | if (vec0 != 5'b00001) $error("vec0 %b", out); | 
|  | #1; // neg | 
|  | #1; // b | 
|  | if (vec1 != 5'b00001) $error("vec1 %b", out); | 
|  | #1; // pos | 
|  | #1; // b | 
|  |  | 
|  | repeat (3) | 
|  | #4; // full cycle | 
|  |  | 
|  | if (out != 4'b0000) $error("set and reg1 %b", out); | 
|  | #1; // neg | 
|  | #1; // b | 
|  | if (out != 4'b0100) $error("clock to out %b", out); | 
|  | #1; // pos | 
|  | #1; // b | 
|  | if (out != 4'b0111) $error("clock to out %b", out); | 
|  | #1; // neg | 
|  | #1; // b | 
|  | #1; // pos | 
|  | #1; // b | 
|  | in <= 4'b0010; | 
|  | $display("reseting with cen and ina off"); | 
|  |  | 
|  | #1; // neg | 
|  | if (out != 4'b1110) $error("clock to out %b", out); | 
|  | #1; // b | 
|  | in <= 4'b0111; | 
|  | $display("reseting with cen and ina"); | 
|  | #1; // pos | 
|  | #1; // b | 
|  | if (vec0 != 5'b00000) $error("vec0 %b", vec0); | 
|  | if (vec1 != 5'b11111) $error("vec1 %b", vec1); | 
|  |  | 
|  | #1; // neg | 
|  | #1; // b | 
|  | if (vec0 != 5'b00000) $error("vec0 %b", vec0); | 
|  | if (vec1 != 5'b00001) $error("vec1 %b", vec1); | 
|  |  | 
|  | $dumpflush; | 
|  | $finish; | 
|  | end // initial begin | 
|  |  | 
|  | endmodule // test | 
|  |  |