• 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. Suppress load() messages

Stats

  • Replies 7
  • Subscribers 148
  • Views 884
  • Members are here 0

Suppress load() messages

LoVyacheslavvVEMs
LoVyacheslavvVEMs 27 days ago

Hello all.

I am currently using load("script.il") inside my procedure, which results in the return values of each command executed within script.il being printed to the CIW. This behavior is not desired in my use case.

I attempted to redirect the output stream using let( ((poport temp_file_port)) ), but this approach did not resolve the issue.

Could you please advise on how to properly suppress the messages generated by load()?

Thank you in advance for your assistance.

  • Cancel
  • Sign in to reply
Parents
  • mbracht
    mbracht 26 days ago

    I just made the typo corrections made by Aurel and then set my log filter like this:

    (hiSetFilterOptions t nil nil t nil t t )

    This suppresses not only return values but also the prompt and the standard message output. I  subsequently loaded script.il upon which there is no output whatsoever in the
    CIW output pane. I have no idea why this behaves different at your end. What virtuoso version are you running?

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Cancel
  • Andrew Beckett
    Andrew Beckett 26 days ago in reply to mbracht

    Unfortunately if you have just this sequence of commands it's a bit like doing a replay. Surrounding it with {} would prevent the intermediate return values, but the difficulty then is that it's going to block when the form appears. You can workaround this by reformulating the code as follows:

    {
    hiEnqueueCmd(lsprintf("%L"
    '{
      lePlotSubmitForm->plotLibraryStr->value = "opamp090"
      lePlotSubmitForm->plotCellNameStr->value = "adc_sample_hold"
      lePlotSubmitForm->plotViewNameStr->value = "layoutTry"
      lePlotSubmitForm->plotPlotSelection->header->value = nil
      _lePlotAreaWholeCB()
      hiEnqueueCmd(lsprintf("%L"
        '{
          lePlotOptionsForm->plotPlotterCyclic->value = "Encapsulated PostScript"
          lePlotOptionsForm->plotPaperSizeCyclic->value = "Unlimited"
          lePlotOptionsForm->plotOrientationRadio->value = "Automatic"
          lePlotOptionsForm->plotCenter->center->value = t
          lePlotOptionsForm->plotFitToggle->fit->value = t
          lePlotOptionsForm->plotMailLogToggle->mail->value = nil
          lePlotOptionsForm->plotToFileToggle->send->value = t
          lePlotOptionsForm->plotToFileStr->value = "out.eps"
          hiFormDone(lePlotOptionsForm)
          hiEnqueueCmd(lsprintf("%L"
            '{
              lePlotDisplayOptionsForm->plotDisplayOption->drawAxesOn->value = nil
              hiFormDone(lePlotDisplayOptionsForm)
              hiFormDone(lePlotSubmitForm)
            }
          ))
          leiDisplayDisplayOptionsForm()
        }
      ))
      leiDisplayPlotOptionsForm()
      leHiSubmitPlot()
    }
    ))
    }

    However, a far, far better way of doing this is to construct a template file. Bring up the existing File->Print form and then fill in the template file field and press "Save". Then you have an example of the template file. You can build this instead on the fly, and then simply call:

    lePlot("myTemplateFile")

    That's much cleaner and simpler than having to interact with forms as shown above.

    Andrew

    • Cancel
    • Vote Up +1 Vote Down
    • Sign in to reply
    • Cancel
Reply
  • Andrew Beckett
    Andrew Beckett 26 days ago in reply to mbracht

    Unfortunately if you have just this sequence of commands it's a bit like doing a replay. Surrounding it with {} would prevent the intermediate return values, but the difficulty then is that it's going to block when the form appears. You can workaround this by reformulating the code as follows:

    {
    hiEnqueueCmd(lsprintf("%L"
    '{
      lePlotSubmitForm->plotLibraryStr->value = "opamp090"
      lePlotSubmitForm->plotCellNameStr->value = "adc_sample_hold"
      lePlotSubmitForm->plotViewNameStr->value = "layoutTry"
      lePlotSubmitForm->plotPlotSelection->header->value = nil
      _lePlotAreaWholeCB()
      hiEnqueueCmd(lsprintf("%L"
        '{
          lePlotOptionsForm->plotPlotterCyclic->value = "Encapsulated PostScript"
          lePlotOptionsForm->plotPaperSizeCyclic->value = "Unlimited"
          lePlotOptionsForm->plotOrientationRadio->value = "Automatic"
          lePlotOptionsForm->plotCenter->center->value = t
          lePlotOptionsForm->plotFitToggle->fit->value = t
          lePlotOptionsForm->plotMailLogToggle->mail->value = nil
          lePlotOptionsForm->plotToFileToggle->send->value = t
          lePlotOptionsForm->plotToFileStr->value = "out.eps"
          hiFormDone(lePlotOptionsForm)
          hiEnqueueCmd(lsprintf("%L"
            '{
              lePlotDisplayOptionsForm->plotDisplayOption->drawAxesOn->value = nil
              hiFormDone(lePlotDisplayOptionsForm)
              hiFormDone(lePlotSubmitForm)
            }
          ))
          leiDisplayDisplayOptionsForm()
        }
      ))
      leiDisplayPlotOptionsForm()
      leHiSubmitPlot()
    }
    ))
    }

    However, a far, far better way of doing this is to construct a template file. Bring up the existing File->Print form and then fill in the template file field and press "Save". Then you have an example of the template file. You can build this instead on the fly, and then simply call:

    lePlot("myTemplateFile")

    That's much cleaner and simpler than having to interact with forms as shown above.

    Andrew

    • Cancel
    • Vote Up +1 Vote Down
    • Sign in to reply
    • Cancel
Children
  • LoVyacheslavvVEMs
    LoVyacheslavvVEMs 25 days ago in reply to Andrew Beckett

    Andrew, thank you very much for the proposed solution.

    The template file is exactly what I needed. It works perfectly.

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • 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.

© 2026 Cadence Design Systems, Inc. All Rights Reserved.

  • Terms of Use
  • Privacy
  • Cookie Policy
  • US Trademarks
  • Do Not Sell or Share My Personal Information