//-----------------------------------------------------
// Design Name : testbench for static_dff
// File Name   : ff_tb.v
// Function    : D flip-flop with asyn reset and set
// Coder       : Xifan TANG
//-----------------------------------------------------
//----- Time scale: simulation time step and accuracy -----
`timescale 1ns / 1ps

module static_dff_tb;
// voltage sources 
wire set;
reg reset;
reg clk;
reg D;
wire Q;
// Parameters 
parameter clk_period = 2; // [ns] a full clock period
parameter half_clk_period = clk_period / 2; // [ns] a half clock period
parameter d_period = 2 * clk_period; // [ns] two clock period
parameter reset_period = 8 * clk_period; // [ns] a full clock period

// Unit Under Test
static_dff U0 (set, reset, clk, D, Q);

// Voltage stimuli
// Reset : enable in the first clock cycle and then disabled 
initial 
begin
  reset = 1'b1;
  #clk_period reset = ~reset;
end
always 
begin
  #reset_period reset = ~reset;
end
 
// set : alway disabled 
assign set = 1'b0;

// clk: clock generator 
initial 
begin
  clk = 1'b0;
end
always 
begin
  #half_clk_period clk = ~clk;
end

// D: input, flip every two clock cycles
initial 
begin
  D = 1'b0;
end
always 
begin
  #d_period D = ~D;
end

// Q is an output 
//

endmodule