The Designer's Guide Community Forum
https://designers-guide.org/forum/YaBB.pl
Design Languages >> Verilog-AMS >> Issues in Modelling an INV output having 10mVp-p as its VSS
https://designers-guide.org/forum/YaBB.pl?num=1278322114

Message started by kumar on Jul 5th, 2010, 2:28am

Title: Issues in Modelling an INV output having 10mVp-p as its VSS
Post by kumar on Jul 5th, 2010, 2:28am

Hallo All,

       I am designing a current starved INV which has an output high(VDD) and low (VSS). VDD = 1.8V, VSS = 200m+ 10mVp-p, 1GHZ. I wrote the following piece of code but it gives me an error saying "contribution statement  encountered inside an analog event"

Assume Td_p,Td_n = 1p

    @(cross(V(Vin)-(V(V_swing)/2),+1)) begin
           V(V_ph) =  V(Vss);
   end        
   @(cross(V(Vin)-(V(V_swing)/2),-1)) begin
       V(V_ph)  =  V(Vdd);
   end        
       V(Vout) <+ transition(V(V_ph),0,Td_p,Td_n);
   end    

But the code works if I change V_ph as a real  variable. But I dont see the 1Ghz 10mVp-p sinusoid on 200m(dc) VSS. Instead it is a constant 200m low and 1.8 V high. Can someone help me with this.

Title: Re:  Issues in Modelling an INV output having 10mVp-p as its VSS
Post by Marq Kole on Jul 5th, 2010, 4:30am

As the error says, the problem is with the contribution statement inside an event: that's not allowed. Instead, you should assign to a variable inside the event and contribute the variable value outside the event. In your case you can do without the contribution and use the variable value directly in the transition function:


Code:
@(cross(V(Vin)-(V(V_swing)/2),+1)) begin
 V_ph_value = V(Vss);
end
@(cross(V(Vin)-(V(V_swing)/2),-1)) begin
 V_ph_value  =  V(Vdd);
end        
V(Vout) <+ transition(V_ph_value, 0, Td_p, Td_n);


Cheers,
Marq

Title: Re:  Issues in Modelling an INV output having 10mVp-p as its VSS
Post by boe on Jul 5th, 2010, 11:08am

kumar,

Note that
Code:
V(Vout) <+ ...
places a voltage source between node 0 (global simulator ground: 0 V) and node Vout. If you want the source between VSS and Vout, you have to use
Code:
V(Vout, VSS) <+ ...
BOE

The Designer's Guide Community Forum » Powered by YaBB 2.2.2!
YaBB © 2000-2008. All Rights Reserved.