• 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. Problem in coping symbols through skill code in other new...

Stats

  • Locked Locked
  • Replies 5
  • Subscribers 143
  • Views 13866
  • 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

Problem in coping symbols through skill code in other new schematic window

conrel
conrel over 8 years ago

Hello Cadence,

I was trying to make the multiple copy of symbol in a new schematic design through skill code. But when trying to do that, it is copying only dummy symbol (only the outline of the symbol without any function of circuitry) . Please let me know if there is any mistake in code? . I am sharing the code here. please help me.

If there is any other reference material available to make automatic schematic through code(or the commands use to make schematic through skill), please provide that too.


First i am opening the new cellview in cadence and then running the command to run this file.


procedure(ishu(Design_Lib_Name cell_Name row col)

new_design = geGetEditCellView()
cellCV_Name = dbOpenCellViewByType(Design_Lib_Name cell_Name "symbol")
orientation="R0"
for(i 0 row-1
for(j 0 col-1
cellInst = dbCreateInst(new_design cellCV_Name "cellInst" list(8*i, 8*j) orientation)
dbFlattenInst(cellInst 1 t)
)
)
for(j 0 col-1
wireId=schCreateWire(new_design "draw" "full" list(-0.5+8*j:-2 -0.5+8*j:2+7*row) 0.05 0.05 0.0)
)

)
  • Cancel
  • Andrew Beckett
    Andrew Beckett over 8 years ago

    Why are you flattening the symbol instances? Calling dbFlattenInst seems an odd thing to do here, so I'm assuming you didn't mean to do that?

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • conrel
    conrel over 8 years ago
    Thanks Andrew for your reply,

    But the problem sill exist. When i am removing this "dbFlattenInst(prchrgInst 1 t)" instruction.
    It is just copying that symbol only once with proper circuitry but not forming an 2D array as expected and giving a warning that "


    *WARNING* (DB-270000): dbCreateInst: Instance with name 'cellInst' already exists".


    What should be done to deal with this issue?


    Regards,
    Rajesh
    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • Andrew Beckett
    Andrew Beckett over 8 years ago
    I'd have thought that the warning was pretty clear - you're calling dbCreateInst multiple times with the same instance name ("cellInst").

    Instead, change the second argument of dbCreateInst to either be "" (which means they will be auto-named) or pass an expression which creates a unique instance name, such as sprintf(nil "cellInst_%d_%d" i j) .

    Regards,

    Andrew
    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • conrel
    conrel over 8 years ago
    Thanks Andrew,
    I did that but the problem is still the same. Posting my modified program again with the screen-shot of output too. Please see to it.


    procedure(ishu(design_Lib_Name cell_Name row col)

    new_design = geGetEditCellView()
    cellCV_Name = dbOpenCellViewByType(design_Lib_Name cell_Name "symbol")
    orientation="R0"
    count=0
    for(i 0 row-1
    for(j 0 col-1

    sprintf(cellInst "cellinst_%d_%d" i j)
    cellInst= dbCreateInst(new_design cellCV_Name "cellInst" list(3*i, 3*j) orientation)

    )
    )
    for(j 0 col-1
    wireId=schCreateWire(new_design "draw" "full" list(-0.5+3*j:-2 -0.5+3*j:2+2*row) 0.05 0.05 0.0)
    )

    )
    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • Andrew Beckett
    Andrew Beckett over 8 years ago

    Hardly surprising because the third (I think I said second before by mistake as I was replying on my phone) argument is still the literal string "cellInst" and so a fixed name. There is a difference between a literal string and the name of a variable. Your code should have:

    sprintf(cellInst "cellinst_%d_%d" i j)
    cellInstId= dbCreateInst(new_design cellCV_Name cellInst list(3*i, 3*j) orientation)

    Note that I changed the name of the variable of the return value of dbCreateInst to avoid confusing it with the variable containing the name (in your case it doesn't matter because the return value of dbCreateInst is not being used, but it's best to avoid repurposing the same variable for different things because it's easy to get yourself in a mess if you do.

    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