• 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. Streaming and merging two gds files

Stats

  • Locked Locked
  • Replies 1
  • Subscribers 142
  • Views 16564
  • 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

Streaming and merging two gds files

archive
archive over 17 years ago

Hi I was wondering, is there a way to script streaming in two gds files, instantiating one top cell into the other one and then streaming out? I would like to automate dummy metal fill addition to a design. Simon


Originally posted in cdnusers.org by sclemow
  • Cancel
  • archive
    archive over 17 years ago

    Hello sclemow,

    Below you can find the SKILL script to merge to cells.

    You will need to modify the parameters , cell names, library names etc according to your requirements. I have marked these the code with <> statements.

    1. First it streams in the GDS1.gds and GDS2.gds files into LIBRARY1 and LIBRARY2.
    2. Then, it creates a new library NEW_MERGED_LIBRARY, creates a new cell and instantiates LIBRARY1 and LIBRARY2 top cells within this cell. Then, it streams out the merged cell.

    Hope this helps. ;-)


    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
    ; Create LIBRARY1 and stream in GDS1
    ddsHiCreateLibrary()
    ddsCreateLibForm->LibName->value = ""
    ddsCreateLibForm->Option->value = "Attach to an existing techfile"
    hiFormDone(ddsCreateLibForm)

    tcNewLibAttachTechForm->tcBinaryTFLibCyclic->value = ""
    hiFormDone(tcNewLibAttachTechForm)

    pipoDisplay(transStreamInForm)
    transStreamInForm->pipoLibName->value = ""
    transStreamInForm->pipoInFile->value = ""
    transStreamInForm->pipoScale->value = 0.001
    transStreamInForm->pipoTechfileName->value = ""
    hiFormDone(transStreamInForm)

    ; Create LIBRARY2 and stream in GDS2
    ddsHiCreateLibrary()
    ddsCreateLibForm->LibName->value = ""
    ddsCreateLibForm->Option->value = "Attach to an existing techfile"
    hiFormDone(ddsCreateLibForm)

    tcNewLibAttachTechForm->tcBinaryTFLibCyclic->value = ""
    hiFormDone(tcNewLibAttachTechForm)

    pipoDisplay(transStreamInForm)
    transStreamInForm->pipoLibName->value = ""
    transStreamInForm->pipoInFile->value = ""
    transStreamInForm->pipoScale->value = 0.001
    transStreamInForm->pipoTechfileName->value = ""
    hiFormDone(transStreamInForm)


    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
    ; Create a new library to hold the merged GDS
    ddsHiCreateLibrary()
    ddsCreateLibForm->LibName->value = ""
    ddsCreateLibForm->Option->value = "Attach to an existing techfile"
    hiFormDone(ddsCreateLibForm)

    ; Attach the new library to the tech file
    tcNewLibAttachTechForm->tcBinaryTFLibCyclic->value = ""
    hiFormDone(tcNewLibAttachTechForm)

    deNew()
    deNewForm->deLibName->value = ""
    deNewForm->deCellName->value = ""
    deNewForm->deViewName->value = "layout"
    deNewForm->deToolName->value = "Virtuoso"
    hiFormDone(deNewForm)

    ; Create a new cell in the new library and instantiate the other cells to be merged
    cv = dbOpenCellViewByType("" "" "layout" "maskLayout" "w")
    dbCreateInstByMasterName(cv "" "" "layout" "I0" list(0 0) "R0")
    dbCreateInstByMasterName(cv "" "" "layout" "I1" list(0 0) "R0")
    dbSave(cv)
    dbClose(cv)

    ; StreamOut
    pipoDisplay(transStreamOutForm)
    transStreamOutForm->pipoLibName->value = ""
    transStreamOutForm->pipoPrimaryCell->value = ""
    transStreamOutForm->pipoViewName->value = "layout"
    transStreamOutForm->pipoScale->value = 0.001
    transStreamOutForm->pipoOutFile->value = "NEW_TOP_CELL.gds"
    hiFormDone(transStreamOutForm)

    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;



    Originally posted in cdnusers.org by kanwarsr
    • 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