module dtype(q, clk, d);
   
   output q;
   input  clk, d;
   reg	  q;
   
   always @(posedge clk)
      q = d;
   
endmodule

module inv_mux(out, cnt, a, b);

   output out;
   input  cnt, a, b;

   assign out = (cnt) ? ~b : ~a;

endmodule // inv_mux

module dtype_er(q, clk, reset, enable, d);

   output q;
   input  clk, reset, enable, d;
   wire	  mux_out, nor_out;

   inv_mux i_m   (mux_out, enable, q, d);
   nor           (nor_out, reset, mux_out);
   dtype dtest_er(q, clk, nor_out);
   
endmodule // dtype_er


module stimulus;
   
   reg	   clk, reset, enable, d;
   wire	   q;
   integer i;
   
   dtype_er der_test(q, clk, reset, enable, d);
   
   initial begin
      clk = 1'b0;
      forever #5 clk = ~clk;
   end
   
   initial
      $display($time, " i = %b, reset = %b, enable = %b, d = %b, q = %b", 
	       i[3:0], reset, enable, d, q);
   
   always@(posedge clk) 
      #1 $display($time, " i = %b, reset = %b, enable = %b, d = %b, q = %b", 
		  i[3:0], reset, enable, d, q);
   
   initial begin
      d = 1'b0;
      reset = 1'b0;
      enable = 1'b0;
      for (i = 0; i < 16; i = i + 1) begin
	 #10 d  = i[0];
	 reset  = i[2];
	 enable = i[3];
      end      
      #10 $finish;
   end
   
endmodule // stimulus


<div align="center"><br /><script type="text/javascript"><!--
google_ad_client = "pub-7293844627074885";
//468x60, Created at 07. 11. 25
google_ad_slot = "8619794253";
google_ad_width = 468;
google_ad_height = 60;
//--></script>
<script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script><br />&nbsp;</div>