• 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. Custom IC SKILL
  3. How to convert string to float

Stats

  • Locked Locked
  • Replies 8
  • Subscribers 143
  • Views 21651
  • 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

How to convert string to float

pdda
pdda over 15 years ago

I want to convert string to float.But this case is different from the other usuall convertion.

Here are details.

Example:

for( i 2 25
    
      parameters = cons(list( concat( 'w i    ) 'string  "3.0u"                               ) parameters)

    )

Now .....i want to convert all w1 to w25 string elements to floats.

Can any help me onthis.....If you need any more information .......we can talk also.

Thanks,

K.srikumar

  • Cancel
  • Andrew Beckett
    Andrew Beckett over 15 years ago

    For a start, w1 etc are symbols not strings. It's very unclear what you actually want to do - how would you convert w2 to a float?

    Please describe more clearly what you actually are trying to do. I can't figure it out, and I'd be surprised if others can.

    Regards,

    Andrew.

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • pdda
    pdda over 15 years ago

    I am writing code for a pcell......i showed some part of the code.

    In the parameters part of the pcell code is defined like w2 to w25 as strings.I have to give the values in string(ex: "2.0u").But in the dody of the code all operations are done using w2 to w25 as float values(ex: 2.0).

    To link both of these i want to convert all strings  (w2.....w25) values to flaot values.

    Regards,

    K.srikumar.

     

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

    The bit you showed looks more like creating the argument to dbCreateParamInst(), rather than the pcell code itself. I'm assuming that you want to do this conversion in the underlying pcell code? If so, it would be something like:

    let((varName)
      for(i 2 25
        varName=concat('w i)
        set(varName cdfParseFloatString(symeval(varName)))
      )
    )
    

    Then any variables w2 through to w25 within the pcell code will have float equivalents of the strings passed in.

    Best Regards,

    Andrew.

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • pdda
    pdda over 15 years ago

    Hi,

    I tried your thing ........it doesnt work.......so i split your steps into small steps  and then tried it.

    w1 is defined by using for loop.......using above what ever i sent a example. 

    varName=concat('w 1)

    symeval(varName)

    cdfParseFloatString(symeval(varName))..............This command is failling

    Regards,

    K.srikumar.

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • pdda
    pdda over 15 years ago

    Hi,

    My main intension is........

    for( i 2 25

     

    parameters = cons(list( concat( 'w i ) 'string "3.0u" ) parameters)

    ).............Here w2...w25 are strings

    after this.i want to use w2 ...w25 in the below line.

    Width =  get( cv~>parameters concat( 'w i ) ) - 2*cainwell

    But ........in the above line.........

    cainwell.........this variable is float and w1 .....w25 is string

    so i need convertion.......and i have to use it here.

    without convertion if i run it .......following error is comming

    *WARNING* ("difference" 0 t nil ("*Error* difference: can't handle (\"3u\" - 0.2)"))........

    Regards,

    K.srikumar.

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

    Well, if you will post irrelevant parts of your code, it's hardly surprising if you get responses that don't solve your problem.

    I'm still having to guess, and given that this is not an official support channel (it's just volunteers here, and others in the community that help out - I do this in my spare time - it's not part of my job), bear in mind that having to keep guessing reduces the likelihood that I'll answer your questions in future (sorry to be hard, but I have limited spare time).

    Most likely what you need is:

    Width =  cdfParseFloatString(get( cv~>parameters concat( 'w i ) )) - 2*cainwell

    but since you've not given enough of your code, it's hard to be sure. In your first paragraph, you say that w2 to w25 are strings. Well, they're not - presumably the pcell property called w2 to w25 is a string? It's really had to tell, because that is not normally how you retrieve pcell parameters within a pcell.

    Anyway, I'm not going to guess any more. Hopefully I got lucky.

    Andrew.

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • pdda
    pdda over 15 years ago

    I can understand.....what you mean.

    But if i want to give you full code.......it is like some 600 line code and it calls so many other procedures.

    So, i thought .....instead of giving that much big code .........i given part of the code where is the problem.

    Yes , you are in right spot.

    But used it Width =  cdfParseFloatString(get( cv~>parameters concat( 'w i ) )) - 2*cainwell ...

    But it is not working.

    I think cdfParseFloatString is not converting it.

    Regards,

    K.srikumar.

     

     

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • pdda
    pdda over 15 years ago

    Hi Andrew,

    Thank you for your support..........

    I solved my problem ......by creating simple procedure.

    procedure( StrToNum(arg)

        if(eq(type(arg) 'string) then
           atof(arg)
        else
           sprintf(nil "%L" arg)
         )
        )

    and then i called the procedure

    Width =  StrToNum(get( cv~>parameters concat( 'w i ) )) - 2*cainwell

    I got this idea from your idea only........Thank you.

    Regards,

    K.srikumar.

    • 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