• 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. Update the contents in Viewfile

Stats

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

Update the contents in Viewfile

nidon
nidon over 13 years ago

Dear Sir.

I want to write a code to show some information.For example,if I write a code:

i= 0

while(i<10

printf("the number is %n.\n" i)

i++)

and I load it in CIW,then it will show the information in CIW window.But if I want to show these massages in a view widonw ,how could I do?

I just tied to use view command ,but it showed 10 view windows(I just want to showed a view windows,and the window can update the contents by the massage.

 

Thanks for you reply.

Thank you!

  • Cancel
  • Andrew Beckett
    Andrew Beckett over 13 years ago

    win=hiCreateWindow(nil "text" "Show File")
    hiDisplayWindow(win)
    i=0
    while(i<10
      hiTextDisplayString(
        win
        sprintf(nil "The number is %n\n" i)
        nil
      )
      i++
    )

    Regards,

    Andrew.

     

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • nidon
    nidon over 13 years ago

    Thanks for your reply ,Andrew.

    In fact, I'm writing a script,and I want to show the process log in the viewfile. 

    And I tried your example above, I found I can not check the content if the text is too large in the viewfile when the script executing,and I have to check the content after the script finished .So, is there any solution for it?

     

    Thanks for your reply again!

     Regards!

     

    Nidon

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • Andrew Beckett
    Andrew Beckett over 13 years ago

    Nidon,

    I don't understand what your problem is - you'll have to be clearer or give an example.

    Regards,

    Andrew.

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • nidon
    nidon over 13 years ago

    Oh,I sorry I can't descript the problem clearly.

    For example,I write a code to stream out gds(gds1~gds100),and hope to show the information in viewfile.

    And I tried the way you gave,when I executed the scripte.

    The viewfile will display:

    Export the GDS1----------done.(line1)

    Export the GDS2----------done.(line2)

    ....

    Export the GDS30-------done.(line30)

    ..........

    Export the GDS1000-----done.(line100)

    And when the script executing,I just see the contents from line1 to line30,if I want to see more contents(line31~line100),I have to wait the script finished.

    The code as follow:

    procedure(abWriteCellGDS(libName cellName viewName streamOutKeys suffix)
        let((template fileName ipcId)
            streamOutKeys->libName=libName
            streamOutKeys->primaryCell=cellName
            streamOutKeys->viewName=viewName
            streamOutKeys->outFile=strcat(cellName suffix)
            streamOutKeys->errFile=strcat("PIPO_" cellName ".LOG")

            hiTextDisplayString(
                  gds_info
                  sprintf(nil "Writing GDS for %s/%s/%s to %s\n"  libName cellName viewName   streamOutKeys->outFile)
                  nil )

            fileName=makeTempFileName("/tmp/writeCellGDS")
            template=outfile(fileName)
            fprintf(template "streamOutKeys='%L\n" streamOutKeys)
            close(template)
            ipcId=ipcBeginProcess(strcat("pipo strmout " fileName))
            ipcWait(ipcId)
            deleteFile(fileName)
        ) ; let
    ) ; procedure

    gds_info=hiCreateWindow(nil "text" "Show File")
    hiDisplayWindow(gds_info)

             foreach(cell ddGetObj(libName)~>cells
                when(ddGetObj(libName cell~>name viewName "master.tag")
                    abWriteCellGDS(libName cell~>name viewName streamOutKeys suffix)
                ) ; when
            ) ; foreach

     

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • Andrew Beckett
    Andrew Beckett over 13 years ago

    Two things you want here:

             hiTextDisplayString(
                  gds_info
                  sprintf(nil "Writing GDS for %s/%s/%s to %s\n"  libName cellName viewName   streamOutKeys->outFile)
                  nil
                  ; additional arg t ensures that it scrolls to bottom
                  t)
            ; ensure window gets repainted if damaged (e.g. obscured)
            hiFlush()

    It will work with just the additional t in the hiTextDisplayString(), but it's better with the hiFlush() too as that means that if the log window gets obscured and then uncovered again, it repairs the contents.

    Regards,

    Andrew.

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • nidon
    nidon over 13 years ago

    Thank you Andrew,it what I wanted

     

    Thanka a lot~

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • rish87
    rish87 over 6 years ago in reply to Andrew Beckett

    Hi Andrew,

    I have write a script to run pvs and used system command to run. I have directed pvs log into the file netlist_log_file.

    This is my command to run pvs.

    system( strcat("ipvs -nograph -any_flow -svs -preset " file_name " >& ./netlist_log_file"))

    Now I need a gui to view this log file. I have tried creating text window, read each line from the log file and print it on the gui.

    There are 2 drawbacks in  that method:

    1.The textdisplay will executes only after system command completes.( I need to view the log file when the pvs runs)

    2.The log file is large(aruond 7K lines) so reading each line and printing it will take time.

    Once this completes I need to run the pvs for different cell and the same gui should continue to display as the netlist_log_file gets over written.

    Can you help me on this?

    Thanks

    Harish

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • Andrew Beckett
    Andrew Beckett over 6 years ago in reply to rish87

    Hi Harish,

    The easiest would be to use view("./netlist_log_file" nil nil t)

    This will auto-update as the file changes.

    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