• 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. A few questions about skill?

Stats

  • Locked Locked
  • Replies 3
  • Subscribers 143
  • Views 14834
  • 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

A few questions about skill?

Prabhu The ICL
Prabhu The ICL over 15 years ago

 Hi, All!
  I am using cadence IC514 version. Can someone suggest appropriate answers for the following questions...?

/*****************************

**********************************************************************************
1--> What is the best approach to traverse through layout hierarchy (which is having mosaics)
   including opening, modifying, saving and closing cellview ...?

   /*******************flatten pcells, convert paths to polygon and merge all shapes************************/
   procedure(size_traverse(@optional (cv deGetEditCellView()))
  FLATTEN_MPP(cv)  ;; consists rodGetNamedshapes() and rodUnNameShape() functions
  path2polygon(cv) ;; consists dbConvertPathToPolygon() function

  foreach(inst cv~>mosaics
      if(member(car(inst~>instanceList)~>libName list("tcbn65gplus" "tsmcN65")) then
          leFlattenInst(inst 31 t nil nil)
      else
      if(ddGetObj(car(inst~>instanceList)~>libName car(inst~>instanceList)~>cellName car(inst~>instanceList)~>viewName) then
          mas = dbOpenCellViewByType(car(inst~>instanceList)~>libName car(inst~>instanceList)~>cellName car(inst~>instanceList)~>viewName "" "a")
          size_traverse(mas)
          dbSave(mas)
          dbClose(mas)
      );if
      );if
  );foreach

  foreach(instp cv~>instances
      if(member(instp~>libName list("tcbn65gplus" "tsmcN65")) then
          leFlattenInst(instp 31 t nil nil)
      else
      if(ddGetObj(instp~>libName instp~>cellName instp~>viewName) then
          masp = dbOpenCellViewByType(instp~>libName instp~>cellName instp~>viewName "" "a")
          size_traverse(masp)
          dbSave(masp)
          dbClose(masp)
      );if
      );if
  );foreach
);size_traverse
   /*******************flatten pcells, convert paths to polygon and merge all shapes************************/

When I run this code by commenting dbSave() and dbClose() statements everything is going fine.
(And finally I am doing closedata by saving all to complete the desired task)
But when I include these statements I am getting the following error ...

*Error* dbSave: Invalid cellView - db:294651948

I am not able find out this invalid dbId that encountering dbSave() statement.

2--> Is file manipulation slow in SKILL compared to tcl/perl/shell ...?

3--> How to make 'SKILL' code faster (while dealling with files) ...? (A simple example please...!)

4--> In SKILL Can we create pulldown menu for a form which has created by hiCreateAppForm() (like File-->Open-->Close) ...?

5-->
hyper1 = hiCreateHypertextField(?name 'hyper1  ?value "<A>(10:0 10:20)</A>" ?callback "my_proc")
myForm= hiCreateAppForm(
          ?name 'myForm
          ?fields list(hyper1)
          ?formTitle "HyperText demo form..."
          ?callback ""
          ?buttonLayout 'OKCancelApply
          ?initialSize t
          )
hiDisplayForm(myForm)

How to add another hypertext value beside (10:0 10:20) ...?
In the above example my_proc is a simple pop-up menu. I need this pop-up displayed at the cursor. But this pop-up displaying at a different location.
I hope the problem is understandable. If not I will come up with some more information.

***************************************************************************************************************/

Thanks in Advance ...

Prabhakar. K --- The ICL Engineer
SoCtronics
  • Cancel
  • Andrew Beckett
    Andrew Beckett over 15 years ago

    Prabhakar,

    Some answers:

    1. An example of dealing with mosaics is in Cadence Online Support Solution 11328674. The problem you're having with the invalidCellview is probably because you don't have local variables inside your recursive function - so the global variables (such as mas and masp are being overwritten inside the recursive call, and so when it returns back up again, they're not the value they were to start off with. Also, it's not necessary to do all those calls to dbOpenCellViewByType - you should be able to access the master attribute of an existing instance or mosaic (instance)
    2. No
    3. Rather hard if I don't know why it's slow in the first place! One limitation in IC5141 was there was not much in the way of regular expression support (just the simple rex.* functions), but in IC61X there's the pcre.* functions (Perl Compatible Regular Expression), which makes processing of read data from files easier. But this is a wild guess - I've no idea what you think the problem is, and these aren't directly related to file processing, but a common thing that may be done after reading files. I must admit I tend to try to make any ASCII file I write/read easy to parse - so I can use functions like lineread() to slurp in the data easily without needing to write my own parser.
    4. If you're asking how to add pulldown menus on forms (your question is not clear) then you can use hiCreateWindow() and associate the form with a window (rather than using hiDisplayForm to display it). If you do this, you can have menus above your form (this is covered in the User Interface SKILL documentation).
    5. Not sure what you're asking. If you want another hypertext link, add another hypertext field. That seems obvious, so perhaps your question is something less obvious than that?

    Regards,

    Andrew.

     

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • Prabhu The ICL
    Prabhu The ICL over 15 years ago
    Hi! Andrew, I got the Cadence Online Support Solution 11328674. Inorder to fullfill my task I have added the following code snippet. After running for few layers the tool is getting crashed with out any errors or warnings. Is there any way to resolve this problem. /**********start here************/ src=geGetEditCellView() dst=dbOpenCellViewByType(src~>libName src~>cellName "flattened" "maskLayout" "w") (procedure (SoC_Flatten) (foreach lpp src~>lpps (if lpp~>purpose!="pin" then (CCSflattenAndMerge src dst (list lpp~>layerName lpp~>purpose)) (dbSave dst) );if );foreach );myflatten SoC_Flatten() /**********ends here************/ Regards... Prabhakar. K --- The ICL Engineer SoCtronics
    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • Andrew Beckett
    Andrew Beckett over 15 years ago

    Hi Prabhakar,

    Is it very likely that I would be able to solve the problem from your description? No.

    Almost certainly you'd be better off flattening using dbFlattenInst or leFlattenInst and then deleting anything on pin purpose (it would probably be more efficient).  Maybe it ran out of memory? 

    You should contact Customer Support for more assistance on this.

    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