• 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 882
  • 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
  • mbracht
    mbracht 27 days ago

    Well for a start, I don't see this behavior that every command's return value in the script loaded goes to the CIW, I see only the
    return value of load() (usually t) and - matter of fact - whatever the code in the script prints to stdout.
    Other than that, I am not aware of any way to suppress the display of a return value in the CIW other than setting the logfilter:
    (hiSetFilterOptions t t t t nil t t)
    So it's the fifth argument being nil that does the job.

    Max

    • Cancel
    • Vote Up +1 Vote Down
    • Sign in to reply
    • Cancel
  • LoVyacheslavvVEMs
    LoVyacheslavvVEMs 26 days ago in reply to mbracht

    Hello Max,

    Thank you for the proposed solution. Unfortunately, it does not work for my case, as I cannot disable the printing of return values for commands entered in the CIW.

    I was also surprised to see any messages appearing in the CIW after using load(), and I realized that the issue is caused by the commands used in my script.il.

    Here is the content of my script.il:

    leHiSubmitPlot()
    lePlotSubmitForm->plotLibraryStr->value = "lib"
    lePlotSubmitForm->plotCellNameStr->value = "cell"
    lePlotSubmitForm->plotViewNameStr->value = "layout"
    lePlotSubmitForm->plotPlotSelection->header->value = nil
    _lePlotAreaWholeCB()
    leiDisplayPlotOptionForm()
    lePlotOptionForm->plotPlotterCyclic->value = "Encapsulated PostScript"
    lePlotOptionForm->plotPaperSizeCyclic->value = "Unlimited"
    lePlotOptionForm->plotOrientationRadio->value = "Automatic"
    lePlotOptionForm->plotCenter->center->value = t
    lePlotOptionForm->plotFitToggle->fit->value = t
    lePlotOptionForm->plotMailLogToggle->mail->value = nil
    lePlotOptionForm->plotToFileToggle->send->value = t
    lePlotOptionForm->plotToFileStr->value = "out.eps"
    hiFormDone(lePlotOptionsForm)
    leiDisplayDisplayOptionsForm()
    lePlotDisplayOptionsForm->plotDisplayOption->drawAxesOn->value = nil
    hiFormDone(lePlotDisplayOptionsForm)
    hiFormDone(lePlotSubmitForm)

    I dynamically generate this script and execute it via load() inside a button callback of a custom form. As a result, a significant amount of unwanted information is printed to the CIW.

    Could you please advise on how to prevent this output while keeping the default CIW behavior unchanged?

    P.S. The plotter with the name "Encapsulated PostScript" may not be defined in your environment. To define it, please create a .cdsplotinit file in your working directory with the following content:

    Encapsulated PostScript|Encapsulated PostScript:\
        :manufactured=Adobe:\
        :type=epsf:\
        :resolution#300:\
        :maximumPages#1:\
        :paperSize="5x5 inches" 1500 1500:\
        :paperSize="8x8 inches" 2400 2400:\
        :paperSize="Unlimited" 72000 72000:
    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Cancel
  • Aurel B
    Aurel B 26 days ago in reply to LoVyacheslavvVEMs

    You have typos:

    leiDisplayPlotOptionForm should be leiDisplayPlotOptionsForm

    lePlotOptionForm should be lePlotOptionsForm

    Could this be the source of your issue?

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Cancel
  • LoVyacheslavvVEMs
    LoVyacheslavvVEMs 26 days ago in reply to Aurel B

    I apologize for any inaccuracies. I am unable to copy the data directly from the system, so I had to retype the text manually. The actual project does not contain these typos.

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