| 
 | 
 
 
发表于 2013-8-22 17:37:13
|
显示全部楼层
 
 
 
module d_ff(vin_d, vclk, vout_q, vout_qbar, reset, set); 
input vclk, vin_d, reset, set; 
output vout_q, vout_qbar; 
electrical vout_q, vout_qbar, vclk, vin_d, reset, set; 
parameter real vlogic_high = 5; 
parameter real vlogic_low = 0; 
parameter real vtrans_clk = 2.5; 
parameter real vtrans = 2.5; 
parameter real tdel = 3u from [0:inf); 
parameter real trise = 1u from (0:inf); 
parameter real tfall = 1u from (0:inf); 
 
   integer x; 
 
   analog begin 
      @ (cross(V(vclk) - vtrans_clk, +1 ) or cross(V(reset) - vtrans_clk, +1 ) or cross(V(set) - vtrans_clk, +1 ) ) 
         if ( V(reset) > vtrans_clk ) 
         x = 0; 
         else if ( V(set) > vtrans_clk ) 
         x = 1; 
         else 
         x = ( V(vin_d) > vtrans ); 
 
         V(vout_q) <+ transition( vlogic_high*x + vlogic_low*!x, 
                                   tdel, trise, tfall ); 
         V(vout_qbar) <+ transition( vlogic_high*!x + vlogic_low*x, 
                                      tdel, trise, tfall ); 
      
    end 
endmodule |   
 
 
 
 |