• Skip to main content
  • Skip to search
  • Skip to footer
Cadence Home
  • This search text may be transcribed, used, stored, or accessed by our third-party service providers per our Cookie Policy and Privacy Policy.

  1. Community Forums
  2. RF Design
  3. channel length modulation slope

Stats

  • Locked Locked
  • Replies 5
  • Subscribers 63
  • Views 17605
  • Members are here 0
This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

channel length modulation slope

robert 21
robert 21 over 5 years ago

Hello i am trying to find the optimal length to have the most insignificant  channel length modulation effect.

i have managed to create  two vertical  markers  for all sweeps. is there a way to automatickly display the slope at each sweep step?

Thanks

  • Cancel
Parents
  • Andrew Beckett
    Andrew Beckett over 5 years ago

    Unfortunately not (this would be really useful if you could). You can do delta markers (hit "v" then "d") and display the deltas in voltage via the Window->Assistants->Vertical Marker Table but this doesn't really do what you want.

    The best would be to determine the x-value you want to make the measurement at, and then take whatever expression you have for the curves above and do:

    value(deriv(getData("m1:ids" ?result "sweepvgs_dc-sweep")) 0.7)

    The bit in bold italics is the expression I had for a similar plot, and the 0.7 is the value I want to see the slope at, and then if I plot that waveform I get the slope versus swept value (the vgs value in my case). 

    Not quite as immediately graphical as just showing the slops at the intercept points, but better than nothing. I thought we had an enhancement CCR already for what you're asking for, but I didn't find it yet (so I'll file another one - I filed CCR 2168511).

    Regards,

    Andrew.

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • robert 21
    robert 21 over 5 years ago in reply to Andrew Beckett

    Hello Andrew i am trying to follow your suggestion and i have built a similar expressio which will calculate the derivative at a certain point,as shown bellow.

    However when i to put the 0.9 it ges me a problem with  (

    i see that there are  three open "(" and 4 closed ")"

    How do i make this expression to show me the derivative value at 0.9 point?

    Thanks

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • Andrew Beckett
    Andrew Beckett over 5 years ago in reply to robert 21

    There seems to be a part of the expression: 

    "L" 1.2e-07)

    that shouldn't be there. Remove that - then you'll have:

    value(deriv(getData("/NM0/D" ?result 'dc)) 0.9)

    Andrew

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
Reply
  • Andrew Beckett
    Andrew Beckett over 5 years ago in reply to robert 21

    There seems to be a part of the expression: 

    "L" 1.2e-07)

    that shouldn't be there. Remove that - then you'll have:

    value(deriv(getData("/NM0/D" ?result 'dc)) 0.9)

    Andrew

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
Children
  • robert 21
    robert 21 over 5 years ago in reply to Andrew Beckett

    Hello Andrew , I have succseeded ploting the derivative  of one  sweep step of (L=3*10^-7) as shown bellow.

    I tried to sample the Vds=0.9 point by the following  expression:

    deriv(leafValue( getData("/M0/D" ?result "dc") "L" 3.022222e-07 )0.9)

    *********************

    SYNTAX ERROR found at line 1 column 66 of file *string*
    *Error* lineread/read: syntax error encountered in input

    deriv(leafValue( getData("/M0/D" ?result "dc") "L" 3.022222e-07 )0.9)
    ^^^

    how could we sample the derivative at  Vds=0.9  ?

    Thanks

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • Andrew Beckett
    Andrew Beckett over 5 years ago in reply to robert 21

    The issue is that you are missing a space just before the 0.9 (after the close parenthesis) which is causing the syntax error:

    deriv(leafValue( getData("/M0/D" ?result "dc") "L" 3.022222e-07 )0.9)

    However, this will solve the syntax error, but won't work because you're providing 0.9 as the second argument to deriv and it's only expecting a single argument. You need to use the value function with 0.9 as the second argument:

    value(deriv(leafValue( getData("/M0/D" ?result "dc") "L" 3.022222e-07)) 0.9)

    I suspect you don\t really want the part in there and just want the expression I posted before:

    value(deriv(getData("/NM0/D" ?result 'dc)) 0.9)

    This could also be:

    value(deriv(getData("/NM0/D" ?result "dc")) 0.9)

    Not sure why didn't just try that in the first place.

    Regards,

    Andrew.

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel

Community Guidelines

The Cadence Design Communities support Cadence users and technologists interacting to exchange ideas, news, technical information, and best practices to solve problems and get the most from Cadence technology. The community is open to everyone, and to provide the most value, we require participants to follow our Community Guidelines that facilitate a quality exchange of ideas and information. By accessing, contributing, using or downloading any materials from the site, you agree to be bound by the full Community Guidelines.

© 2025 Cadence Design Systems, Inc. All Rights Reserved.

  • Terms of Use
  • Privacy
  • Cookie Policy
  • US Trademarks
  • Do Not Sell or Share My Personal Information