| module testbench; | |
| reg clk; | |
| initial begin | |
| // $dumpfile("testbench.vcd"); | |
| // $dumpvars(0, testbench); | |
| #5 clk = 0; | |
| repeat (10000) begin | |
| #5 clk = 1; | |
| #5 clk = 0; | |
| end | |
| $display("OKAY"); | |
| end | |
| reg [15:0] D = 1; | |
| reg [3:0] S = 0; | |
| wire M2,M4,M8,M16; | |
| top uut ( | |
| .S (S ), | |
| .D (D ), | |
| .M2 (M2 ), | |
| .M4 (M4 ), | |
| .M8 (M8 ), | |
| .M16 (M16 ) | |
| ); | |
| always @(posedge clk) begin | |
| //#3; | |
| D <= {D[14:0],D[15]}; | |
| //D <= D <<< 1; | |
| S <= S + 1; | |
| end | |
| assert_tri m2_test(.en(clk), .A(D[0]|D[1]), .B(M2)); | |
| assert_tri m4_test(.en(clk), .A(D[0]|D[1]|D[2]|D[3]), .B(M4)); | |
| assert_tri m8_test(.en(clk), .A(!S[3]), .B(M8)); | |
| assert_tri m16_test(.en(clk), .A(1'b1), .B(M16)); | |
| endmodule |