A method for extracting instance call information based on Virtuoso
By writing program script files of the Skill program interface of Virtuoso software, the instance call information of multiple unit views in integrated circuit development is automatically extracted, which solves the problem of inefficiency in the existing technology and realizes efficient information extraction.
Patent Information
- Application Number
- CN202311507266.0
- Authority / Receiving Office
- CN · China
- Patent Type
- Patents(China)
- Current Assignee / Owner
- Filing Date
- 2023-11-09
- Publication Date
- 2025-02-18
- Estimated Expiration
- 2043-11-09
AI Technical Summary
In the integrated circuit development process, the prior art requires opening multiple unit views separately and using the Print tree function to print and view instance call information, which is less efficient and takes longer.
By writing the program script file of the Skill program interface of Virtuoso software, the instance call information of the target top-level circuit in multiple unit views is extracted using predetermined execution steps, and the correlation table is automatically extracted in batches and recorded.
Automatic batch extraction of instance call information is realized, which improves extraction efficiency and reduces the time and energy of manual operation.
Smart Images

Figure CN117408193B_ABST
Abstract
Description
Technical Field
[0001] The present application relates to the field of integrated circuit design, and in particular to a method for extracting instance call information based on Virtuoso. Background Art
[0002] Virtuoso software is an integrated circuit design software launched by EDA software supplier Cadence. It can complete all aspects of the entire IC design process, including circuit diagram input, circuit simulation, layout design, layout verification, parasitic parameter extraction and post-simulation, so it is widely used in the development of integrated circuits.
[0003] Virtuoso software comes with a Print tree function. After opening a cell view of a top-level circuit, you can use the Print tree function to print and view the hierarchical information of the currently opened cell view call instance. However, in the integrated circuit development process, each unit circuit will involve multiple cell views, including multiple schematic cell views and layout cell views. It is necessary to open each cell view separately and then use the Print tree function to print and view the instance call information separately, which is inefficient and time-consuming. Summary of the invention
[0004] In response to the above problems and technical requirements, this application proposes a method for extracting instance call information based on Virtuoso. The technical solution of this application is as follows:
[0005] A method for extracting instance call information based on Virtuoso, the method comprising:
[0006] Using the Skill program interface of the Virtuoso software, a program script file is written according to predetermined execution steps, and the program script file is configured in the Virtuoso software environment and forms a menu in the view. The program script file is automatically loaded when the Virtuoso software is started, and instance call information of the target top-level circuit in multiple unit views is extracted according to the program script file;
[0007] The predetermined execution steps implemented by writing a program script file include:
[0008] (1) Obtain a view list file of the target top-level circuit. The view list file includes view information of multiple unit views called by the target top-level circuit. The view information of each unit view includes the circuit library identifier, unit identifier, and view type used by the unit view. The view type is a schematic view or a layout view.
[0009] (2) Traverse the view information of each cell view in the view list file, and call the dbOpenCellViewByType function to determine the database address of each cell view traversed;
[0010] (3) For each unit view called by the traversed target top-level circuit, traverse all instances in the unit view called by the target top-level circuit from the top to the bottom according to the database address of the unit view until the traversal reaches the bottom-level device, and record the correspondence between the unit identifier of the unit view of each traversed instance and the circuit library identifier of the unit view of the calling instance in the association table;
[0011] (4) Call the foreach function to traverse the view information of each unit view in the view list file in turn and update the association table until the view information of all unit views in the view list file is traversed, and then obtain the association table containing the instance call information of the target top-level circuit in all unit views.
[0012] A further technical solution is to traverse all instances in the unit view called by the target top-level circuit from the top level to the bottom level according to the database address of the unit view, including:
[0013] Starting from the unit view called by the target top-level circuit, the instances in the unit view are traversed in sequence according to the database address of the unit view, and the corresponding relationship between the unit identifier of the unit view of each traversed instance and the circuit library identifier of the unit view of the calling instance is recorded in the association table;
[0014] When the traversed instance is not the underlying device, the dbOpenCellViewByType function is called to determine the database address of the cell view of the traversed instance, and the step of traversing the instances in the cell view in sequence using the cell view database address is executed again until the traversed instance is the underlying device.
[0015] A further technical solution is that the method for determining whether the traversal reaches the bottom layer device includes:
[0016] When the circuit library identifier of the unit view of the traversed instance is included in the process library list, it is determined that the traversal reaches the underlying device, otherwise it is determined that the traversal does not reach the underlying device, and the process library list includes the circuit library identifiers of all underlying devices.
[0017] A further technical solution is to record the corresponding relationship between the unit identifier of the unit view of each traversed instance and the circuit library identifier of the unit view of the calling instance into an association table, including:
[0018] Check whether the cell identifier of the cell view of the traversed instance is contained in the association table;
[0019] When the unit identifier of the unit view of the traversed instance is already included in the association table, continue to traverse other instances;
[0020] When the unit identification of the unit view of the traversed instance is not included in the association table, the correspondence between the unit identification of each traversed unit view of the instance and the circuit library identification of the unit view of the calling instance is recorded in the association table.
[0021] A further technical solution is that when the view information of each unit view in the view list file is traversed in sequence and the association table is updated:
[0022] When traversing the view information of the unit view whose view type is the schematic view in the view list file, the corresponding relationship between the unit identifier of each traversed unit view and the circuit library identifier of the unit view of the calling instance is updated in the schematic association table;
[0023] When traversing the view information of the unit view whose view type is the layout view in the view list file, the corresponding relationship between the unit identifier of each traversed unit view and the circuit library identifier of the unit view of the calling instance is updated in the layout association table;
[0024] After traversing the view information of all unit views in the view list file, a schematic association table containing instance call information of the target top-level circuit in all schematic views is obtained, and a layout association table containing instance call information of the target top-level circuit in all layout views is obtained.
[0025] A further technical solution is that the predetermined execution steps implemented by writing a program script file also include:
[0026] When it is determined that the current working mode is the normal mode, the schematic association table and the layout association table are output respectively;
[0027] When it is determined that the current working mode is the comparison mode, the instance call information in the schematic association table and the layout association table are compared, and the comparison result is output.
[0028] A further technical solution is to compare the instance call information in the schematic association table and the layout association table, including:
[0029] Traversing each set of corresponding relationships in the schematic association table, and detecting whether the traversed corresponding relationships are included in the layout association table, and outputting a comparison result indicating a corresponding relationship included in the schematic association table but not included in the layout association table;
[0030] And / or, traverse each set of corresponding relationships in the layout association table, and detect whether the traversed corresponding relationships are included in the schematic association table, and the output comparison result indicates the corresponding relationships included in the layout association table but not included in the schematic association table.
[0031] A further technical solution is that obtaining the view list file of the target top-level circuit includes:
[0032] Obtaining an initial top-level list file of a target top-level circuit, wherein the initial top-level list file includes initial information of multiple unit views of the target top-level circuit;
[0033] For the initial information of each unit view, the rexReplace function is used to remove the line breaks in the initial information and / or replace the horizontal tabs in the initial information with spaces, completing the format preprocessing to obtain a valid string, and the parseString function is used to split the valid string to extract the circuit library identifier, unit identifier and view type corresponding to the unit view.
[0034] A further technical solution is that obtaining the initial top-level list file of the target top-level circuit includes:
[0035] Obtain the input target file path through the GUI interface, and obtain the initial top-level list file of the target top-level circuit according to the target file path;
[0036] Alternatively, the initial top-level list file of the target top-level circuit is obtained according to a preset target file path.
[0037] A further technical solution is that forming a menu in a view includes:
[0038] Reads the Schematic.menu configuration file and modifies the menu definition according to the program script file.
[0039] The beneficial technical effects of this application are:
[0040] Based on this, the present application discloses a method for extracting instance call information based on Virtuoso. The method uses the Skill program interface of the Virtuoso software to write a program script file for execution according to predetermined execution steps, and then configures the program script file into the Virtuoso software environment and forms a menu in the view. When the Virtuoso software is started, it automatically loads and executes the program script file, and then sequentially traverses the view information of multiple unit views called by the target top-level circuit in the view list file, and sequentially traverses from the top to the bottom according to the database address of the unit view until the traversal reaches the bottom-level device, and records the correspondence between the unit identifier of the unit view of each instance traversed and the circuit library identifier of the unit view that calls the instance in an association table, so that the association table of the instance call information of the target top-level circuit in all unit views can be output, thereby realizing automatic batch extraction of instance call information and improving extraction efficiency.
[0041] This method can also extract the instance call information of all schematic views and the instance call information of all layout views according to the view type, and can output them separately according to the current working mode, or output them after automatic comparison, without the need for manual comparison as in the existing practice, and has a high degree of automation. BRIEF DESCRIPTION OF THE DRAWINGS
[0042] Figure 1 It is a method flow chart of the example calling information extraction method of this application.
[0043] Figure 2 It is a flow chart of a method for implementing predetermined execution steps by writing a program script file in one embodiment of the present application.
[0044] Figure 3 It is a flow chart of a method for implementing predetermined execution steps by writing a program script file in another embodiment of the present application. DETAILED DESCRIPTION
[0045] The specific implementation of the present application is further described below in conjunction with the accompanying drawings.
[0046] Cadence has developed its own programming language Skill and corresponding compiler. The entire Cadence can be understood as a set of executable files built on the Skill language platform, so Cadence can be extended with the Skill language. Based on this, this application discloses a method for extracting instance call information based on Virtuoso, which includes the following three parts, please refer to Figure 1 The flowchart shown:
[0047] 1. Use the Skill program interface of Virtuoso software to write a program script file according to the predetermined execution steps. The predetermined execution steps implemented by writing a program script file include: Figure 2 Flowchart:
[0048] Step 1, obtain the view list file of the target top-level circuit.
[0049] The view list file includes the view information of multiple unit views called by the target top-level circuit. The view information of each unit view includes the circuit library identifier, unit identifier and view type used by the unit view. The view type is schematic view or layout view. The unit identifiers of different unit views are different, and the circuit library identifiers of different unit views can be the same or different.
[0050] For example, in one example, schematic indicates that the view type is a schematic view, and layout indicates that the view type is a layout view. The obtained view list file of the target top-level circuit includes view information of three unit views, the view information of the first unit view includes circuit library identifier Libname1, unit identifier cellname1 and view type layout, the view information of the second unit view includes circuit library identifier Libname1, unit identifier cellname2 and view type layout, and the view information of the third unit view includes circuit library identifier Libname1, unit identifier cellname3 and view type schematic.
[0051] In one embodiment, the initial top-level list file of the target top-level circuit is obtained according to the target file path. The target file path has two sources:
[0052] (1) The target file path is input by the user. Therefore, when executing the program script file, the GUI interface is displayed first. The user enters the target file path in the GUI interface. The input target file path is then obtained through the GUI interface, and then the initial top-level list file is read according to the obtained target file path.
[0053] (2) The target file path is directly preset in the program script file. When the program script file is executed, the initial top-level list file is directly read according to the preset target file path. This method is not as flexible as the method in which the user customizes the input target file path. It can only process the initial top-level list file at the preset target file path. However, when the initial top-level list file needs to be fixed under a certain target file path, this method omits the step of inputting the path, which is simpler to implement.
[0054] Regardless of which of the above methods is used to obtain the target file path, the initial top-level list file is often not read directly according to the target file path. Instead, the initial top-level list file of the target top-level circuit is first obtained. The initial top-level list file is written in a predetermined format, which includes the initial information of multiple unit views of the target top-level circuit. Generally, the initial information of each unit view occupies one line, and there may be a line break at the end of each line. Each line includes a circuit library identifier, a unit identifier, and a view type. Different categories of information may be separated by spaces or horizontal tabs. Therefore, after obtaining the initial top-level list file, the initial top-level list file needs to be processed to obtain the initial top-level list file. Please refer to Figure 3 The flowchart includes: for the initial information of each unit view, the line break in the initial information is removed by the rexReplace function and / or the horizontal tab in the initial information is replaced with a space. The format preprocessing is completed to obtain a valid string, and the valid string is segmented by the parseString function to extract the circuit library identifier, unit identifier and view type corresponding to the unit view, so as to extract the view list file of the target top-level circuit.
[0055] Step 2, traverse the view information of each cell view in the view list file, and call the dbOpenCellViewByType function to determine the database address of each traversed cell view.
[0056] In this step, considering that there may be some abnormal situations in actual operation, when traversing the view information of each cell view in the view list file, first use the ddGetObj function to determine whether the cell view exists. If the cell view does not exist, continue to traverse the view information of the next cell view in the view list file. If it is determined that the cell view exists, call the dbOpenCellViewByType function to open the database address (database ID) of the cell view.
[0057] Step 3, for each unit view called by the traversed target top-level circuit, traverse all instances in the unit view called by the target top-level circuit from the top level to the bottom level according to the database address of the unit view until the traversal reaches the bottom-level device, and record the correspondence between the unit identifier of the unit view of each traversed instance and the circuit library identifier of the unit view of the calling instance in the association table.
[0058] During the traversal process, when the circuit library identifier of the unit view of the traversed instance is included in the process library list, it is determined that the traversal has reached the underlying device, otherwise it is determined that the traversal has not reached the underlying device. Among them, the process library list includes the circuit library identifiers of all underlying devices, which are pre-set library functions. For example, the pre-set process library list includes library1, library2, library3, library4, library5, library6, library7 and library8. When the circuit library identifier of the unit view of the traversed instance is Libname1, it is judged that it is not included in the process library list, and it is determined that the traversal has not yet reached the underlying device.
[0059] The traversal method includes: starting from the cell view called by the target top-level circuit, traversing the instances in the cell view in sequence according to the database address of the cell view, and recording the corresponding relationship between the cell identifier of the cell view of each traversed instance and the circuit library identifier of the cell view that calls the instance in an association table. When the traversed instance is not a bottom-level device, call the dbOpenCellViewByType function to determine the database address of the cell view of the traversed instance, and execute the step of traversing the instances in the cell view in sequence according to the database address of the cell view again, and continue to traverse the next layer of instances. When the traversed instance is a bottom-level device, return to the upper-level instance to continue traversing other instances until all the cell views called by the target top-level circuit are traversed.
[0060] Considering that in actual application, repeated corresponding relationships may be traversed during the traversal process, it is first detected whether the unit identifier of the unit view of the traversed instance is included in the association table. When the unit identifier of the unit view of the traversed instance is already included in the association table, the corresponding relationship is no longer recorded in the association table, but other instances are continued to be traversed. When the unit identifier of the unit view of the traversed instance is not included in the association table, the corresponding relationship between the unit identifier of the unit view of each traversed instance and the circuit library identifier of the unit view of the calling instance is recorded in the association table.
[0061] Step 4, call the foreach function to traverse the view information of each unit view in the view list file in turn, and add the corresponding relationship to the association table in turn according to the method of step 3 to update the association table, until the view information of all unit views in the view list file is traversed, and an association table containing the instance call information of the target top-level circuit in all unit views is obtained, so as to realize batch extraction and output of the instance call information in all unit views called by the target top-level circuit.
[0062] On this basis, the instance call information of the schematic view and the layout view can also be output separately. In the process of traversing the view information of each unit view in the view list file and updating the association table:
[0063] When traversing the view information of the unit view whose view type is the schematic view in the view list file, the correspondence between the unit identifier of the unit view of each traversed instance and the circuit library identifier of the unit view of the calling instance is updated in the schematic association table.
[0064] When traversing the view information of the unit view whose view type is the layout view in the view list file, the correspondence between the unit identifier of each traversed unit view instance and the circuit library identifier of the unit view of the calling instance is updated in the layout association table.
[0065] Then, after traversing the view information of all unit views in the view list file, the schematic association table containing the instance call information of the target top-level circuit in all schematic views and the layout association table containing the instance call information of the target top-level circuit in all layout views can be obtained. In this way, the instance call information in all schematic views called by the target top-level circuit can be batch extracted and output, and the instance call information in all layout views called by the target top-level circuit can be batch extracted and output, so as to realize the separate extraction and output of different types of unit views.
[0066] In another embodiment, based on the schematic association table and the layout association table, in addition to outputting the two types of association tables respectively, considering the schematic layout Figure 1 The consistency check process often requires the comparison results of the schematic association table and the layout association table, so the method can also automatically compare the schematic association table and the layout association table and output the comparison results. Then the predetermined execution steps implemented by the program script file also include the function of switching the working mode, which can generally be selected at the beginning of the program script file execution. When it is determined that the current working mode is the normal mode, the schematic association table and the layout association table are output respectively. When it is determined that the current working mode is the comparison mode, the instance call information in the schematic association table and the layout association table is compared, and the comparison result is output.
[0067] Comparing the instance call information in the schematic association table and the layout association table includes: traversing each set of corresponding relationships in the schematic association table, and detecting whether the traversed corresponding relationships are included in the layout association table, and the output comparison result indicates the corresponding relationships included in the schematic association table but not included in the layout association table. And / or, traversing each set of corresponding relationships in the layout association table, and detecting whether the traversed corresponding relationships are included in the schematic association table, and the output comparison result indicates the corresponding relationships included in the layout association table but not included in the schematic association table.
[0068] 2. Configure the program script file into the Virtuoso software environment and form a menu in the view. This application reads the Schematic.menu configuration file and modifies the menu definition according to the program script file, without having to rebuild the executable file or skill script to view the changes. These menu files provide a very convenient way to define each menu item (especially the menu item symbol, menu text, and callback function) and organize these definitions into their own drop-down menus. The menu definition can be easily modified. The format is the same as the CIW menu file, but the information contained in the menu item definition is expanded.
[0069] 3. When Virtuoso software is started, it automatically loads the program script file and executes according to the program script file. It can automatically extract the instance call information of the target top-level circuit in multiple unit views without opening each unit view in turn and then using the Print tree function to extract them separately, which greatly improves efficiency.
[0070] The above is only a preferred embodiment of the present application, and the present application is not limited to the above embodiments. It is understood that other improvements and changes directly derived or associated by those skilled in the art without departing from the spirit and concept of the present application should be considered to be included in the protection scope of the present application.
Claims
1. A method for extracting instance call information based on Virtuoso, characterized in that: The instance call information extraction method comprises: Using the Skill program interface of the Virtuoso software, a program script file is written according to predetermined execution steps, and the program script file is configured in the Virtuoso software environment and forms a menu in the view, the program script file is automatically loaded when the Virtuoso software is started, and instance call information of the target top-level circuit in multiple unit views is extracted according to the program script file; The predetermined execution steps implemented by writing the program script file include: (1) obtaining a view list file of the target top-level circuit, wherein the view list file includes view information of multiple unit views called by the target top-level circuit, wherein the view information of each unit view includes a circuit library identifier, a unit identifier, and a view type used by the unit view, wherein the view type is a schematic view or a layout view; (2) traversing the view information of each cell view in the view list file, and calling the dbOpenCellViewByType function to determine the database address of each cell view traversed; (3) For each unit view called by the target top-level circuit that is traversed, traverse all instances in the unit view called by the target top-level circuit from the top level to the bottom level in sequence according to the database address of the unit view until the traversal reaches the bottom-level device, and record the corresponding relationship between the unit identifier of the unit view of each traversed instance and the circuit library identifier of the unit view that calls the instance in the association table; (4) calling the foreach function to sequentially traverse the view information of each unit view in the view list file and update the association table, until the view information of all unit views in the view list file is traversed, thereby obtaining an association table containing instance call information of the target top-level circuit in all unit views; Traversing all instances in the cell view called by the target top-level circuit from the top level to the bottom level in sequence according to the database address of the cell view includes: starting from the cell view called by the target top-level circuit, traversing the instances in the cell view in sequence according to the database address of the cell view, and detecting whether the cell identifier of the cell view of the traversed instance is included in the association table; when the cell identifier of the cell view of the traversed instance is already included in the association table, continuing to traverse other instances; when the cell identifier of the cell view of the traversed instance is not included in the association table, recording the correspondence between the cell identifier of each traversed cell view and the circuit library identifier of the cell view calling the instance in the association table; when the traversed instance is not a bottom-level device, calling the dbOpenCellViewByType function to determine the database address of the cell view of the traversed instance, and executing the step of traversing the instances in the cell view in sequence according to the database address of the cell view again, until the traversed instance is a bottom-level device; The method for determining whether traversal reaches the bottom-level device includes: when the circuit library identifier of the unit view of the traversed instance is included in the process library list, it is determined that the traversal reaches the bottom-level device; otherwise, it is determined that the traversal does not reach the bottom-level device, and the process library list includes the circuit library identifiers of all bottom-level devices.
2. The instance call information extraction method according to claim 1, characterized in that: When the view information of each unit view in the view list file is traversed in sequence and the association table is updated: When traversing the view information of the unit view whose view type is the schematic view in the view list file, updating the correspondence between the unit identifier of each traversed unit view instance and the circuit library identifier of the unit view calling the instance into the schematic association table; When traversing the view information of the unit view whose view type is the layout view in the view list file, updating the correspondence between the unit identifier of each traversed unit view instance and the circuit library identifier of the unit view calling the instance into the layout association table; After traversing the view information of all unit views in the view list file, a schematic association table containing instance call information of the target top-level circuit in all schematic views is obtained, and a layout association table containing instance call information of the target top-level circuit in all layout views is obtained.
3. The instance call information extraction method according to claim 2, characterized in that: The predetermined execution steps implemented by writing the program script file also include: When it is determined that the current working mode is the normal mode, the schematic association table and the layout association table are output respectively; When it is determined that the current working mode is the comparison mode, the instance call information in the schematic association table and the layout association table are compared, and the comparison result is output.
4. The instance call information extraction method according to claim 3, characterized in that: The comparing the instance call information in the schematic association table and the layout association table comprises: Traversing each set of corresponding relationships in the schematic association table, and detecting whether the traversed corresponding relationships are included in the layout association table, and outputting a comparison result indicating a corresponding relationship included in the schematic association table but not included in the layout association table; And / or, traverse each set of corresponding relationships in the layout association table, and detect whether the traversed corresponding relationships are included in the schematic association table, and the output comparison result indicates the corresponding relationships included in the layout association table but not included in the schematic association table.
5. The instance call information extraction method according to claim 1, characterized in that: The step of obtaining the view list file of the target top-level circuit includes: Acquire an initial top-level list file of the target top-level circuit, wherein the initial top-level list file includes initial information of multiple unit views of the target top-level circuit; For the initial information of each unit view, the rexReplace function is used to remove the line breaks in the initial information and / or replace the horizontal tabs in the initial information with spaces, and the format preprocessing is completed to obtain a valid string. The valid string is segmented by the parseString function to extract the circuit library identifier, unit identifier and view type corresponding to the unit view.
6. The instance call information extraction method according to claim 5, characterized in that: The step of obtaining the initial top-level list file of the target top-level circuit includes: Obtaining an input target file path through a GUI interface, and obtaining an initial top-level list file of the target top-level circuit according to the target file path; Alternatively, the initial top-level list file of the target top-level circuit is obtained according to a preset target file path.
7. The instance call information extraction method according to claim 1, characterized in that: The forming of a menu in the view comprises: Reads the Schematic.menu configuration file and modifies the menu definition according to the program script file.
Citation Information
Patent Citations
A method for replacing component libraries with schematic diagrams in cadence
CN109543298A
Method for detecting and analyzing noise coupling and shielding of physical layout of chip through LVS
CN115983196A