• 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. IF Statement with strings

Stats

  • Locked Locked
  • Replies 4
  • Subscribers 63
  • Views 16609
  • 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

IF Statement with strings

MauMarulanda
MauMarulanda over 10 years ago

During spectre simulaiton, I am working in an RF model where I have to select the the netlist based on the port that is selected and pass as a parameter.

Can I do this with an if statement (I can do it in hspice).

A brief example

subckt testme n p
parameters port="m3" m3="m3" m1="m1" m2="m2"
if(port == m3) {
parameters a=30
parameters c=100f
} else if(port == m2) {
parameters a=20
parameters c=100f
} else {
parameters a=10
parameters c=100f
}
r1 n np resistor r=a
c1 np p capacitor c=c
ends testme

Appreciate the help

  • Cancel
  • Andrew Beckett
    Andrew Beckett over 10 years ago

    You can't use an if statement like that in spectre, because the if statement is a "structural if" (you can include instances selectively based on the condition).

    I thought that you might be able to do it with a ternary expression:

    //
    subckt testme n p
    parameters port="m3" m3="m3" m1="m1" m2="m2"
    parameters a=port==m3?30:port==m2?20:10
    parameters c=port==m3?100f:port==m2?200f:300f
    //parameters a=port==3?30:port==2?20:10
    //parameters c=port==3?100f:port==2?200f:300f
    r1 n np resistor r=a
    c1 np p capacitor c=c
    ends testme

    I1 (n1 0) testme port="m3"
    I2 (n2 0) testme port="m2"
    I3 (n3 0) testme port="m1"

    elements info what=inst where=screen

    I thought initially that you can do a=port=="m3"?30:... but that gives a syntax error. With the == being done via parameters (indirectly), it gives no errors, but doesn't work.

    Please contact customer support on this, because I think we should fix this, but it's best to do that with knowledge of who you are (this helps with prioritization, rather than me filing this as an internally found issue).

    You can of course use a numerical value instead (so if port was set to 1,2,3) it then works fine (I commented out the ternary statements I used to prove that).

    Regards,

    Andrew.

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • MauMarulanda
    MauMarulanda over 10 years ago

    I work for Intel Corporation / Foundry.

    Could you help with a link where to submit a ticket, have not done that in a while?

    BTW, The ternary expression wont work as I have more than 2 conditions. I might need to choose from up to seven strings. 

    For now I think we both agree that i need an external mapping table to set the strings to numbers.

    Mauricio

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • Tawna
    Tawna over 10 years ago

    Hi Mauricio,

    You can submit a Case with Customer Support at:   http://support.cadence.com.

     

    best regards,

     

    Tawna

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • Andrew Beckett
    Andrew Beckett over 10 years ago

    Mauricio, I thought that I'd put the link - it's . Doing more than 2 is fine with tenary (you can chain them together) - I did that with the numerical version that showed above.

    • 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