• 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 Design
  3. Netlisting flowchart postFunc called multiple times with...

Stats

  • Locked Locked
  • Replies 1
  • Subscribers 125
  • Views 987
  • 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

Netlisting flowchart postFunc called multiple times with Assembler & ICRP job control

smikes
smikes over 4 years ago
I'm attempting to insert a custom function in the netlist flowchart that will modify the netlist after creation.
This works in most cases. I'm netlisting/running from ADE Assembler.
If I just netlist by right-clicking the test and selecting netlist->recreate, it works as intended, with the function called once.
If I select the "LSCS" job control method and run, it also works as intended with the function called a single time.
However, if I select "ICRP" job control and run, the procedure seems to be getting called multiple times, which messes up the netlist.
My code is below, it calls an external Python function after netlisting that performs the modification.
As a debug aid, I added the fprintf to a log file in my home dir to verify that this function is indeed called more than once.
Here's the result after one attempt (using ICRP):
$> cat ~/wrapper.log
wrapper has been called from session=stdobj@0x50391068, name=spectre0
wrapper has been called from session=stdobj@0x4f82f080, name=spectre0
wrapper has been called from session=stdobj@0x4f82f080, name=spectre0
For direct netlisting or LCSC, there is only a single entry in the log file.
I don't understand the netlisting flowchart process well enough to know why this function is being called multiple times (with ICRP control only).
For some other reasons I'm restricted in some cases to using the ICRP job control, so I can't just ignore this issue by not using it.
Is there a work-around for this? I need the function to be called only once, after the netlist is created.
Using sub-version  ICADVM20.1-64b.500.15
Thanks,
Steven

procedure(SEMparaboxWrapper(session)

let((netlistDir command pid fh)

    when(getd('SEMexistingNetlistPostFunc)

        SEMexistingNetlistPostFunc(session)

    )

    netlistDir = asiGetNetlistDir(session)

    printf("  Adding parabox wrappers to %s/netlist\n" netlistDir)

    fh = outfile("/home/stevenm/wrapper.log" "a")

    fprintf(fh "wrapper has been called from session=%L, name=%L\n" session session->name)

    close(fh)

    command = strcat(getShellEnvVar("CDS_WORKAREA") "/wrap.py " netlistDir "/netlist")

    pid = ipcBeginProcess(command)

    ipcWait(pid)

)

)

 

let( (flow step postFunc)

    flow = asiGetFlowchart(asiGetTool('spectre))

    step = asiGetFlowchartStep(flow 'asiNetlist)

    postFunc = step->postFunc

    when(postFunc && neq(postFunc 'SEMparaboxWrapper)

        putd('SEMexistingNetlistPostFunc getd(postFunc))

    )

    asiChangeFlowchartStep(flow ?name 'asiNetlist ?postFunc 'SEMparaboxWrapper)

)

  • Cancel
  • Andrew Beckett
    Andrew Beckett over 4 years ago

    Probably this is because you (I think) have:

    envSetVal("adexl.simulation" "ignoreDesignChangesDuringRun" 'boolean t)

    set. This causes the netlister to run in the parent virtuoso first, then partially in the background ICRP too.

    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