• 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. Unable to create multiple pins in symbolview using skil...

Stats

  • Locked Locked
  • Replies 2
  • Subscribers 143
  • Views 13476
  • 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

Unable to create multiple pins in symbolview using skill

lbodepu
lbodepu over 6 years ago

I thought that this code should work for creating multiple pins in a cell view.

cv=dbOpenCellViewByType("TEST_5" "test_3" "symbol" "schematicSymbol" "a")

procedure(CCScreatePin( portList directionList  cv )
let( (mysympin)
   mysympin = dbOpenCellViewByType("basic" "sympin" "symbol")
   i=0
   foreach(portName portList
          let( ( myterm mytermdir mypinfig)


          myterm = portName
         mytermdir = (nth i directionList)
         println(mytermdir)

        case(mytermdir
         ("input"
                           mypinfig=schCreateSymbolPin(cv mysympin myterm "input" 0:0 "R0" )      )

          ("output"
                              mypinfig=schCreateSymbolPin(cv mysympin myterm "output" 0:100 "R0" )      )

           (t
                               error("\nUnexpected terminal direction")      )
           );case



          ) ;let


            i++


          ) ;foreach


dbSave(cv)

);let


);procedure

I am calling the procedure CCScreatePin( '("IN" "OUT")  '("input" "output")   cv)

Somehow when i use "w" for cv = dbOpenCellViewByType it generates just a single pin. But "a" doesnt create anything

Is there anyway i can get multiple pins in the symbol

Thanks

Lavanya

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

    Hi Lavanya,

    A few issues - the code was placing the pins at fixed locations (0:0 and 0:100) so all the input pins would have been on top of each other and the output pins on top of each other. If you'd fit the window having created the pins (in either "a" or "w") mode you'd have not seen anything because the pins were so far apart that they'd have been tiny dots on the screen. So it probably appeared to work because you opened the design when it was empty and so could see the origin - and hence only saw the pin at 0:0. 

    The open mode (a or w) controls whether it throws everything away or not - so if you run the code several times with "a" mode you will just keep adding more pins. It certainly doesn't behave differently other than that.

    Also, rather than using nth to look up the corresponding direction, it would be better to use a foreach loop with two loop variables to loop over the name and direction lists together. 

    I rewrote the code to step the location of the input and output pins - see the improved version below:

    cv=dbOpenCellViewByType("opamp090" "test_3" "symbol" "schematicSymbol" "w")
    
    procedure(CCScreatePin( portList directionList  cv )
      let( (mysympin inY outY pinPitch) 
        mysympin = dbOpenCellViewByType("basic" "sympin" "symbol")
        inY=0.0
        outY=0.0
        pinPitch=0.125
        foreach((portName mytermdir) portList directionList
          let( (mypinfig)
            case(mytermdir
              ("input"
                mypinfig=schCreateSymbolPin(cv mysympin portName "input" 0:inY "R0")
                inY=inY+pinPitch
              )
              ("output"
                mypinfig=schCreateSymbolPin(cv mysympin portName "output" 1:outY "R0")
                outY=outY+pinPitch
              )
              (t
                error("Unexpected terminal direction\n")
              )
            );case
          ) ;let
        ) ;foreach
        dbSave(cv)
      );let
    );procedure
    
    CCScreatePin( '("IN" "IN2" "IN3" "OUT" "OUT2")  
      '("input" "input" "input" "output" "output")   cv)

    Regards,

    Andrew

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • lbodepu
    lbodepu over 6 years ago in reply to Andrew Beckett

    Thanks Andrew

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
Reply
  • lbodepu
    lbodepu over 6 years ago in reply to Andrew Beckett

    Thanks Andrew

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
Children
No Data

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