• 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. The background gives tansCdlOutForm parameters to export...

Stats

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

The background gives tansCdlOutForm parameters to export Cdl files. The first two exported cdl files are incomplete

alaylayla
alaylayla over 2 years ago

Why is this script executed in the background for the first two times after virtuoso is first started without opening XStreamOutui in the graphical interface, and the exported cdl file is not complete; the exported cdl file is complete after the third time. The first two times, the log in the ciw is prompted that the job is completed, and there are no prompts for error and warning; I don't know how the si.log file looks, but there seems to be a warning log in it. Why is this and what is it related to? How can I modify this code to avoid the results of the first two executions after virtuoso is first started are wrong.

  • Cancel
  • Andrew Beckett
    Andrew Beckett over 2 years ago

    I'm not going to spend time debugging your code from a screenshot - I can't execute that and can't perform experiments to find out what is wrong. I don't see what the "XStreamOutUI" has to do with it - this is a CDL export code. Also, I don't understand why you have a timer to display the form and then another to cancel it - these will execute after the rest of the code has run (which looks wrong).

    If you want some help, please post the actual code (as text) so that anyone helping can try it out without having to re-type in the code.

    Andrew

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • alaylayla
    alaylayla over 2 years ago in reply to Andrew Beckett


    procedure(ExportCdlForm()
    getCdlName()
    RunDir = hiCreateFileSelectorField(
    ?name 'RunDir
    ?mode 'directoryOnly
    ?prompt "Run Directory"
    ?defValue "./verify/cdl"

    )

    LibName = hiCreateStringField(
    ?name 'LibName
    ?prompt "Library Name"
    ?defValue LibName
    ?callback "dmbUpdateBrowser()"

    )

    CellName = hiCreateStringField(
    ?name 'CellName
    ?prompt "Cell Name"
    ?defValue CellName
    ?callback "CellNameCB()"

    )

    ViewName = hiCreateStringField(
    ?name 'ViewName
    ?prompt "View Name"
    ?defValue ViewName
    ?callback "ViewNameCB"

    )

    CdlName = hiCreateStringField(
    ?name 'CdlName
    ?prompt "Cdl Name"
    ?defValue CdlName

    )

    IncludeFile = hiCreateFileSelectorField(
    ?mode 'existingFile
    ?name 'IncludeFile
    ?prompt "Include File"
    ?defValue ""

    )

    Browser = hiCreateButtonBoxField(
    ?name 'Browser
    ?prompt ""
    ?choices '("Browse")
    ?callback list("Browser()")

    )

    ExportCdlForm = hiCreateAppForm(
    ?name 'ExportCdlForm
    ?formTitle "Export Cdl"
    ?callback "ExportCdlMain()"
    ?buttonLayout 'OKCancelApply
    ?minSize 560:150
    ?fields list(list(RunDir 0:0 505:30 100)
    list(LibName 0:30 480:30 100)
    list(CellName 0:60 480:30 100)
    list(ViewName 0:90 480:30 100)
    list(CdlName 0:120 480:30 100)
    list(Browser 476:32 20:26 )
    list(IncludeFile 0:150 505:30 100))

    )

    hiDisplayForm('ExportCdlForm)
    );proc

    procedure(Browser()
    dmbSyncWithForm(ExportCdlForm 'browse 'LibName 'CellName 'ViewName)

    )

    procedure(CellNameCB()
    let(()
    dmbUpdateBrowser()
    ExportCdlForm~>CdlName~>value=strcat(ExportCdlForm~>CellName~>value ".cdl")
    );let
    );proc

    procedure(ViewNameCB()
    let(()
    dmbUpdateBrowser()
    when((ExportCdlForm~>LibName~>value!="") && (ExportCdlForm~>CellName~>value!="") && (ExportCdlForm~>ViewName~>value!="")
    unless(dbOpenCellViewByType(ExportCdlForm~>LibName~>value ExportCdlForm~>CellName~>value ExportCdlForm~>ViewName~>value)~>cellViewType=="schematic"
    hiDisplayAppDBox(
    ?name 'ViewNameError
    ?dboxBanner "Error"
    ?dboxText "Select CellView is not Schematic!"
    ?buttonLayout 'YesNo
    ?callback "ExportCdlForm~>ViewName~>value=\" \""
    ?dialogType hicErrorDialog
    ?dialogStyle 'modal
    )
    );unless
    )
    );let
    );proc

    procedure(getCdlName()
    let((cv)
    if(cv=geGetEditCellView() then
    if(cv~>cellViewType=="schematic" then
    LibName = cv~>libName
    CellName = cv~>cellName
    ViewName = cv~>viewName
    CdlName = strcat(CellName ".cdl")
    );if
    else
    unless((boundp('LibName) && boundp('CellName) && boundp('ViewName))
    LibName = ""
    CellName = ""
    ViewName = "schematic"
    CdlName = ""
    );unless
    );if
    );let
    );proc

    procedure(ExportCdlMain()
    prog(()
    unless(isDir(ExportCdlForm~>RunDir~>value) ipcBeginProcess(strcat("mkdir -p " ExportCdlForm~>RunDir~>value)));unless
    if(((ExportCdlForm~>RunDir~>value !="") && (ExportCdlForm~>LibName~>value !="") && (ExportCdlForm~>CellName~>value !="") && (ExportCdlForm~>ViewName~>value !="") && (ExportCdlForm~>CdlName~>value !="")) then

    hiRegTimer("transCdlOutDisplay()" 0)
    hiRegTimer("hiFormCancel(transCdlOutForm)" 0)

    transCdlOutForm~>cdlORunDir~>value = ExportCdlForm~>RunDir~>value
    transCdlOutForm~>cdlOLibName~>value = ExportCdlForm~>LibName~>value
    transCdlOutForm~>cdlOTopCell~>value = ExportCdlForm~>CellName~>value
    transCdlOutForm~>cdlOViewName~>value = ExportCdlForm~>ViewName~>value
    transCdlOutForm~>cdlONetlistFile~>value = ExportCdlForm~>CdlName~>value

    transCdlOutForm~>cdlONetlistingMode~>value = "Analog"
    transCdlOutForm~>cdlOPinmap~>value = t
    transCdlOutForm~>cdlODisplayPinInfo~>value = nil
    transCdlOutForm~>cdlOPreserveBangInNetlist~>value = t
    transCdlOutForm~>cdlOIncFile~>value = ""
    unless(IncludeFile~>value == ""
    if(isFile(IncludeFile~>value) then
    transCdlOutForm~>cdlOIncFile~>value = IncludeFile~>value
    else
    hiDisplayAppDBox(
    ?name 'IncludeFileError
    ?dboxBanner "Error"
    ?dboxText "Error Include File!"
    ?buttonLayout 'YesNo
    ?dialogType hicErrorDialog
    ?dialogStyle 'modal
    )
    return(nil)
    );if
    );unless
    hiFormDone(transCdlOutForm)
    else
    hiDisplayAppDBox(
    ?name 'NoCellSelect
    ?dboxBanner "Error"
    ?dboxText "Error Cell Select!"
    ?buttonLayout 'YesNo
    ?dialogType hicErrorDialog
    ?dialogStyle 'modal
    )
    );if
    );prog
    );procedure

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • alaylayla
    alaylayla over 2 years ago in reply to Andrew Beckett
    Thank you senior, the problem has not been solved, I can't find the reason; the test found whether opening the cdlout form with a timer before execution affects the output
    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • Andrew Beckett
    Andrew Beckett over 2 years ago in reply to alaylayla

    Which IC sub-version are you using? I tried calling ExportCdlForm() in IC6.1.8-64b.500.32 and it worked fine the first time. It also worked fine if I commented out the hiRegTimer() lines - I don't know what they are there for.

    Andrew

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • alaylayla
    alaylayla over 2 years ago in reply to Andrew Beckett

    thanks i use IC6.1.8-64b.500.23,

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • alaylayla
    alaylayla over 2 years ago in reply to Andrew Beckett

    I may not explain clearly enough. After reopening virtuoso every time, I do not manually open the CDL OUT gui, and execute this script on the same cellview; the exported cdl file can be completed, but the content is incomplete; the second time for the same cellview After execution, gui automatically opens the cdl file. After the first execution, gui does not automatically open it. The exported cdl file, although ciw prompts that the job is completed, and the files related to the export path are generated, but the re-exported cdl file is still incomplete; after the third execution, gui automatically opens, and the cdl file is Yes, the complete one; it is strange that if you do not restart, every execution after the third time will be normal; if you execute it with another cellview, you can also export the complete cld file for the first time. In addition, if the code of opening and closing the cdl ui form is commented out with timing, the complete cdl file will not be imported no matter how many times it is executed. Note that after restarting, as long as you manually open the gui of cdl out and execute this script in the future, no matter whether the gui form that opens cdl out is executed in the script or not, these strange problems will not occur. What can cause this? This seems to be a problem with the initialization of key parameters; I am very worried about accidentally exporting incomplete netlist files

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • alaylayla
    alaylayla over 2 years ago in reply to alaylayla

    thanks i,My guess may be caused by the fast calculation of the CPU or the underlying code. Similar to shell scripts, in order to avoid Xsrteam out gds starting to run lvs before it is over, you need to add a sleep statement and wait.

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • alaylayla
    alaylayla over 2 years ago in reply to Andrew Beckett

    thanks.i have sloved

    • 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