1 2 First Previous 22 Replies Latest reply on May 4, 2018 10:42 AM by phiet

    Integrated Symbol Editor (ISE) Automation

    peter_festesen

      From EEVX2.0, there is a new 'builtin' Symbol Editor, that shares the GUI with DxDesigner (now Xpedition Designer). It is called Integrated Symbol Editor (ISE)

      One of the benefits is that the Settings for the tool are controlled in the same manner as for Xpedition Designer. Another benefit is that the Automation Layer is also the same for both tools. This is true in the meaning that you can now use .vbs and .efm instead of Tcl/Tk which was the scripting tool for NSE (New Symbol Editor), pre-EEVX2.0.

      While we are waiting for the full documentation for the Automation Layer for ISE, this discussions aim is to try and clear some of the smoke and mystery about Automation for ISE. A code example is attached  at the bottom.

      It has been said somewhere that DxDesigner Automation can be used for ISE - well, that is true to some extent.

      Once symbols are open in ISE, it is an object of the SchematicSheetDocuments collection. As an example, the method
      SchematicSheetDocuments.Close

      will close all currently open symbol tabs.

       

      In order to do anything with the open symbols, you can use this example to get symbol details (LibrayName (partition), symbol name and extension. To get to the attributes of the symbol (most likely in order to list or modify them, you can go via the Activeview.Block.Attributes method as shown below :

       

      for each symobj in Application.OpenBlocks(VDDT_SYMBOL)

            sLib = symobj.Libraryname

           sSchematic = symobj.GetName(2) 'Name of schematic of current block

           sSheet = symobj.SheetNum 'sheet number of current schematic block

           AppendOutput "SYMBATCH", stopcounter& "# - found open symbol : "& sLib &":"& sSchematic&"."&sSheet

          'Now, list the current properties (attributes and write them to the 'SYMBATCH' tab of ISEs Output Window

           For each attr in ActiveView.Block.Attributes

                Appendoutput "SYMBATCH","        "& attr.Name & "; "& attr.Value

           Next

          'Find a specific property for the currently active symbol

           Set myprop=ActiveView.Block.FindAttribute("Description")

          'if the property exists, modify the value

           If not(myprop Is Nothing) Then

                myprop.Value=myprop.Value & "MoreAdded" 'Does this every time you run the script

           End If

           'Now, save any changes we have made to the symbol

           Set myDoc = ActiveDocument

           myDoc.Save

       

      Next 'symobj

      AppendOutput "SYMBATCH","Closed : "&sSchematic

      SchematicSheetDocuments.Close 'close the symbol again immediately

       

      How do I open the symbol(s) to modify ?

      You ask how to open the symbols in the first place ? Here is the answer or part of it anyway.

      I have not been able to figure out how to open ISE standalone WITH a library attached. Therefore, I currently

      1)  Open Library Manager

      2)  Select the library

      3)  Open ISE from Library Manager

      4)  In ISE, use the commandline, use ‘run <path to vbs file> ‘ or ‘form <path to efm file>’

       

      As a sidenote, I'd like to point out that you can actually use startup scripts with ISE. BUT, they use the same startup scripts (in script.ini) as Xpedition Designer, be careful.

      You can exploit the fact that when ISE is started, it is basically (no pun intended) Xpedition Designer, started with the -Embedding switch (note the uppercase 'E')

      So you startup script (for example to build a menu for ISE, would have to check how ISE (Xpediton Designer is started) . If you are interested, let me know and I can post a snippet for that as well.

       

      In order to open an existing symbol use

      Application.launchsymboleditor("partition:symbol with extension"), or

      Application.launchsymboleditor("Logic:ls74.1")

       

      In order to perform batch type operations, I used the code in the attachment (symedit_batch.vbs). As you will see, it makes use of a text file that contains a list of symbols to process. The attached txt file (ISE_out_total.txt ), provided as an example, can be used with the Mentor-provided Sample_Lib.

       

      Note that the example code has hardcoded the path to the txt file  (line 40, sInFile= "C:\DATA\SampleLib2007\LogFiles\ISE_out_total.txt")

       

      The example code will iterate through the provided txt list, and while you can have multiple symbols open at the same time, I found it better to Open the symbol, List/Modify, then Save and Close it again. Feel free to experiment and let us know what you find out.

       

      Have fun !!!
      /P

        • 1. Re: Integrated Symbol Editor (ISE) Automation
          s.t.

          Hi Peter,

          This is really very good, as there is little information on how to use Symbol Editor in vbs and vba. I have a question: May I know how to use command line to invoke ISE? I don't find ise executable that I can invoke independently. Alternatively, if we can launch ise from within Library Manager, it is fine too.  Look forward to your answer, thanks

          • 2. Re: Integrated Symbol Editor (ISE) Automation
            peter_festesen

            Thank you for your reply.

             

            I have not yet found a way to open ISE from a command shell directly (if that is what you are asking).

            I have seen one example where a script is launched from the MGC BCD CMD window, but that essentially opens Xpedition Designer in the backg´round, then launches ISE: Let me know if that example would be useful for you, and I'll find it.

             

            In my opinion, just opening ISE from a command line in Library Manager does not really make much sense, since you can just open the Symbol Editor instead.

             

            What I have done is this.

            Scripts.ini has an entry to open a script at startup (remember that ISE essentially is DxDesigner/Xpedition Designer - or viewdraw if you want to us the original name). So in Scripts.ini (in my WDIR)  I have

             

            [ViewDraw]

            Script#0 =c:\DATA\Scripts\SymEdit\Dx_ISE_Menu.vbs

             

            Dx_ISE_Menu.vbs determines if it is started from Xpediion Designer or ISE, and creates a menupick, if it is started by ISE. The following script creates two menupicks under a new pulldown called 'ISE'

             

            dim fred

            If Application.CommandLineArguments = "-Embedding" Then

                 Set sMenu = CommandBars("Main Menu Bar").Controls.Add(cmdControlPopup,,,7)

                 sMenu.Caption = "&ISE"

                 'Add buttons to this menu

             

                 Set sButton = sMenu.Controls.Add

                 sButton.Caption = "ISE"

                 fred = "Form " & "c:\DATA\Scripts\SymEdit\ise_gui.efm"

                 sButton.OnAction = fred

             

                 Set sButton = sMenu.Controls.Add

                 Button.Caption = "Batch"

                 fred = "run " & "c:\DATA\Scripts\SymEdit\symedit_batch.vbs"

                 sButton.OnAction = fred

             

            End if

             

            The last menupick calls the file symedit_batch.vbs that was attached further up the thread.

             

            I hope this helps....

            /Peter

            1 of 1 people found this helpful
            • 3. Re: Integrated Symbol Editor (ISE) Automation
              yaobo

              Hi Peter,

              We'd like to know the way how to open ISE by code directly, or the way to launch ISE in viewdraw or Library Manager. 

              By the way, we can open our central library automatically, but failed to find out the way how to run the Menu Tools> Symbol Editor in xDM Library Tools.

              • 4. Re: Integrated Symbol Editor (ISE) Automation
                yaobo

                Peter,

                I have another question on the customized menu in ISE. Currently, we need to Run our vbs script as the ISE customized Menu, when a SYMBOL IS OPENED.

                CommandBars("Main Menu Bar") in your code, does not meet this requirement. It just add a cutomized menu when all the symbols are closed.

                See slide #56 in the U2U presentation: User2User 2008 Automation Workshop - Presentation

                Could you tell us the Menu Bars Name which should be used here?

                Thanks.

                • 5. Re: Integrated Symbol Editor (ISE) Automation
                  peter_festesen

                  Hi Yaobo - I still haven't found a way to open ISE directly. I suppose you could run viewdraw -Embedding from the MGC BCD CMD Shell, but you would have to provide a project. Whenever ISE (I see that it actually is refererred to as ESE (Embedded Symbol Editor nowadays) is invoked, you will see that a dummy project is created under the current WDIR.

                   

                  I noticed that the Xpedition Designer Automation document for EEVX.2.3 now has some documentation regarding ESE. Please have a look there as well (Search the pdf for ESE)

                  • 6. Re: Integrated Symbol Editor (ISE) Automation
                    peter_festesen

                    Yaobo - I can see that here as well. Well, if ESE as it is now called) is supposed to follow Xpedition Designer, so it should be 'Sheet Menu Bar', but I cannot get that to work just now. Let me check and get back...maybe the VX.2.3 Xpedition Designer Automation document has something in this area ?

                    • 7. Re: Integrated Symbol Editor (ISE) Automation
                      yaobo

                      Thank you, Peter. I'll search pdf for ESE, when our company start to use VX.2.3.

                      I have tried the following command, but failed to open a symbol in our central Library.

                      Set WSHShell = CreateObject("WScript.Shell")

                      WSHShell.Run "C:\MentorGraphics\EEVX.2\SDD_HOME\common\win64\bin\viewdraw.exe -Embedding"

                      It can open a Viewdraw Application, and Application.CommandLineArguments = "-Embedding". Look like the ISE is opened:-) But, when you try to open the symbol (by the same code used in real ISE enviroment successfully), only a blank schematic sheet opened (in Dxd SCH Mode). Cause we are trying to open symbol in our central library, I cannot provide you any project here.

                      On the other hand, I will also have a check on WDIR, to find our if there is any clue on that dummy project.

                       

                       

                      • 8. Re: Integrated Symbol Editor (ISE) Automation
                        yaobo

                        Dim WSHShell
                        Set WSHShell = CreateObject("WScript.Shell")
                        WSHShell.Run "C:\MentorGraphics\EEVX.2\SDD_HOME\common\win64\bin\viewdraw.exe -Embedding"
                        Dim DxdApp 'As ViewDraw.Application
                        Set DxdApp = CreateObject("ViewDraw.application")
                        DxdApp.Visible = True

                        DxdApp.LaunchSymbolEditor "gate_ary:gate_ary_fpga_1498_pfr.1"

                         

                        An Information Message Prompt: Mutiple symbols detected. Do you want to merge these into a single compound view? (Seems like it is trying to open the central library. But, there is only *.1 for the symbol gate_ary_fpga_1498_pfr, no mutiple symbols found!)

                         

                        In the output window:

                        Started C:\MentorGraphics\EEVX.2\SDD_HOME\common\win64\bin\nse.exe -parent dx -icdb "" -snapshot "" "gate_ary:gate_ary_fpga_1498_pfr.1"
                        Finished C:\MentorGraphics\EEVX.2\SDD_HOME\common\win64\bin\nse.exe

                        • 9. Re: Integrated Symbol Editor (ISE) Automation
                          yaobo

                          After running the script above, nothing is opened.

                          Then I try to simulate the dummy project:

                          1. Open Central Library, then Open another symbol

                          2. Copy C:\boyao\wdir\EEVX.2\NSETemp\00000001 to C:\boyao\wdir\00000001 (icdb cannot be copied, cause it is in use)

                          3. Fix icdb by the tool iCDB Project Backup (Or replace database folder from ProjectBackup\backups\*.zip)

                          4. Use the following script to open that project, and try to open symbol gate_ary_fpga_1498_pfr.1

                          Dim WSHShell
                          Set WSHShell = CreateObject("WScript.Shell")
                          WSHShell.Run "C:\MentorGraphics\EEVX.2\SDD_HOME\common\win64\bin\viewdraw.exe -Embedding"
                          Dim DxdApp 'As ViewDraw.Application
                          Set DxdApp = CreateObject("ViewDraw.application")
                          DxdApp.Visible = True

                          DxdApp.OpenProject "C:\boyao\wdir\00000001\lm.prj"
                          DxdApp.LaunchSymbolEditor "gate_ary:gate_ary_fpga_1498_pfr.1"

                           

                          Then, just a blank sheet is opened for symbol creating. It seems like this new symbol is stored at this project's icdb file.

                          • 10. Re: Integrated Symbol Editor (ISE) Automation
                            laila1

                            Hi Peter,

                            First of all, the script was very helpful for me.

                            I am now trying to have access to Pins in a symbol and get properties of each Pin. Do you have any idea how to do this?

                            I tried this syntax " for each Pinobj in Application.OpenBlocks(VDDT_PIN)" but this is not working, and I found in the documentation a note that says : The only valid values for the "Application.OpenBlocks()" argument  are VDDT_SCHEMATIC (numeric value 0) and VDDT_SYMBOL (numeric value 1).

                            Do you have any idea?

                             

                            Thank you in advance.

                            • 11. Re: Integrated Symbol Editor (ISE) Automation
                              peter_festesen

                              Yaobo - thanks a bunch for posting your tests and the results.

                              I have been terribly busy (still am) and didn't have time to comment, and was hoping that others would comment.

                              I believe that the general problem you have is this : When you open viewdraw with the -Embedding switch, you open a blank Symbol Editor - even with the WDIR based temporary project, because the Symbol Editor does not have a Library attached at the time. 

                              • 12. Re: Integrated Symbol Editor (ISE) Automation
                                peter_festesen

                                Laila1 - first of all - thank you!

                                I am sorry, but I do not have a direct answer for you at this time. Here are my observations.
                                I don't think that t is possible to go directly from OpenBlocks (which represents ALL symbols that are currently open) to the pins.

                                This is why, even for a single open symbol, we need to go via For Each symobj in Application.OpenBlocks(VDDT_SYMBOL).

                                At this time, symobj holds the symbol object. But the attributes are attached to the Block (Activeview.Block.Attributes)

                                 

                                Looking at he VX.2.3 document (I will try to attach here for everyone's convenience) I see that pins are attached to a component object (not a Block object).

                                The Block object has the AddPin method, but nothing (as far as I can see) that allows us to read the pins (like Block.Pins)

                                 

                                I (we) will have to see if we can figure out the connections between Block and Component. I will give this some time and hopw to find something useful.

                                 

                                I often find myself using Excel's vbs Object browser to understand the hierarchy of objects/methods....

                                 

                                Stay tuned...

                                Peter

                                • 14. Re: Integrated Symbol Editor (ISE) Automation
                                  phiet

                                  I don't know if this helps but in VX2.2, once a symbol is opened in symbol editor, we get pin and their attribute by this

                                   

                                  Set dxdView = Application.ActiveView

                                  Dim Pins, Pin

                                  set Pins = dxdView.Query(VDM_PIN,VD_ALL)

                                  for each Pin in Pins

                                      set objLabel = Pin.Label

                                      MsgBox objLabel.TextString  & " " & Pin.Side   

                                      set attrs = Pin.Attributes

                                      For each attr in attrs

                                       ....

                                       next

                                  next

                                  1 of 1 people found this helpful
                                  1 2 First Previous