Stimulus

To test whether modules we have written are doing what we intended them to, we have a way of applying stimulus to the inputs and checking whether the outputs correspond. This is called a stimulus module. The syntax is exactly the same as the modules seen already, but a stimulus module does not have a port list because it has no input and explicit outputs. We would like to apply waveforms to the clock, enable and reset to see how the output of the module e_ffbehaves


        module e_ffStimulus;
          reg data, enable, reset, clock;
          wire q;

          e_ff mod1 (q, data, enable, reset, clock);

          initial begin
             clock = 1'b0;
             forever  clock = #5 ~clock;
          end

          initial begin
             enable = 1'b0;     // initialize enable variable
             reset = 1'b1;      // the E type has an active high reset, so
             #20 reset = 1'b0;  // we begin by resetting.
                 data = 1'b1;   // set the data HIGH
             #10 enable = 1'b1; // and then enable data latching
             #10 data = 1'b1;   // change the data value
             #20 data = 1'b0;   // change the data value
             #30 data = 1'b1;   // change the data value
             #10 data = 1'b0;   // change the data value
             #10 data = 1'b1;   // change the data value
             #20 enable = 1'b0; // disable data latching
             #10 data = 1'b0;   // change the data value - no effect?
             #10 reset = 1'b1;  // reset again
             #20 $finish;      // finally we must end the simulation using
          end                  // $finish this also stops the clock

          initial begin
             $display($time, " reset, enable, data,  q ");
             $display($time, "   %d      %d     %d     %d",
                    reset, enable, data, q);
             forever #10 $display($time, "   %d      %d     %d     %d",
                    reset, enable, data, q);
          end

        endmodule // e_ffStimulus


EXERCISE

a) Run the stimulus using, cut and paste, with the code from the previous section - interpret the output

b) Write a single behavioural module for the E-type flipflop and test it using the above stimulus Answers


previous contents