• 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 7642
  • 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
Parents
  • 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
Reply
  • 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
Children
  • 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

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