Module terminal design program, module terminal design method, and information processing device
Patent Information
- Application Number
- JP2023134294
- Authority / Receiving Office
- JP · JP
- Patent Type
- Applications
- Current Assignee / Owner
- Filing Date
- 2023-08-21
- Publication Date
- 2025-03-06
AI Technical Summary
【0008】 本発明の一側面によれば、モジュール端子を含む回路を設計し易くすることができるという効果を奏する。
Smart Images

Figure 2025029545000001_ABST
Abstract
Description
[Technical field]
[0001] The present invention relates to a module terminal design program, a module terminal design method, and an information processing device. [Background technology]
[0002] In recent years, hierarchical design is often used in LSI (Large Scale Integration) design as circuits become larger in scale. Hierarchical design is a design method in which layers are separated by function. When performing hierarchical design, module terminals, which are I / O (Input / Output) terminals for connecting between layers, are placed.
[0003] Prior art techniques include, for example, a wiring method for a semiconductor integrated device having a terminal layer at the bottom and more than four wiring layers, in which wires are allocated to upper wiring layers in ascending order of length, or wires are allocated to lower wiring layers in descending order of length. [Prior art documents] [Patent documents]
[0004] [Patent Document 1] Japanese Patent Application Publication No. 4-142060 Summary of the Invention [Problem to be solved by the invention]
[0005] However, in the conventional technology, when carrying out hierarchical design of an LSI or the like, it is difficult to design a circuit that includes a module terminal for inter-hierarchical connection.
[0006] In one aspect, the present invention aims to make it easier to design circuits that include module terminals. [Means for solving the problem]
[0007] In one embodiment, a module terminal design program is provided which, for a target macro with a multi-layer structure to be placed in a circuit to be designed, creates a provisional macro representing a placement pattern of terminals of each layer in the target macro for each placement position included in a plurality of placement positions that can be placed in accordance with a power supply structure of the circuit to be designed, extracts a common pattern representing a portion common between the provisional macros based on a result of comparing the placement patterns of the created provisional macros, extracts a differential pattern from the created provisional macro representing a difference from the extracted common pattern for each placement position, associates the common pattern with the target macro, and registers the common pattern and the extracted differential pattern for each placement position in a library, and, during physical design of the circuit to be designed, creates a module terminal for a lifted target terminal in the target macro based on the common pattern and the differential pattern corresponding to any of the placement positions by referring to the library. Effect of the Invention
[0008] Advantageous Effects of Invention According to one aspect of the present invention, an effect is achieved in that it is possible to facilitate the design of a circuit including a module terminal. [Brief description of the drawings]
[0009] [Figure 1] FIG. 1 is an explanatory diagram showing an example of a module terminal design method according to an embodiment. [Diagram 2] FIG. 2 is an explanatory diagram illustrating an example of a hierarchical design. [Diagram 3] FIG. 3 is an explanatory diagram showing an example of connections between logical hierarchical levels. [Figure 4] FIG. 4 is an explanatory diagram showing an example of a physical connection between layers. [Diagram 5] FIG. 5 is an explanatory diagram showing an example of a macro according to a placement position. [Figure 6] FIG. 6 is an explanatory diagram showing an example of the system configuration of a design support system 600. As shown in FIG. [Figure 7]FIG. 7 is a block diagram showing an example of the hardware configuration of the design support server 601. As shown in FIG. [Figure 8] FIG. 8 is a block diagram showing an example of the functional configuration of the design support server 601. As shown in FIG. [Figure 9A] FIG. 9A is an explanatory diagram (part 1) showing an example of registration of the macro library 620. [Figure 9B] FIG. 9B is an explanatory diagram (part 2) showing a registration example of the macro library 620. [Figure 10] FIG. 10 is an explanatory diagram showing an example of the format of the module terminal generation library. [Figure 11A] FIG. 11A is an explanatory diagram (part 1) showing a specific example of module terminal generation information. [Figure 11B] FIG. 11B is an explanatory diagram (part 2) showing a specific example of the module terminal generation information. [Figure 11C] FIG. 11C is an explanatory diagram (part 3) showing a specific example of the module terminal generation information. [Figure 12A] FIG. 12A is an explanatory diagram (part 1) showing a creation example of a module terminal. [Figure 12B] FIG. 12B is an explanatory diagram (part 2) showing a creation example of a module terminal. [Figure 13] FIG. 13 is a flowchart showing an example of a library creation procedure of the design support server 601. [Figure 14A] FIG. 14A is a flowchart (part 1) illustrating an example of a specific processing procedure of the macro common layer extraction processing. [Figure 14B] FIG. 14B is a flowchart (part 2) illustrating an example of a specific processing procedure of the macro common layer extraction processing. [Figure 15] FIG. 15 is a flowchart illustrating an example of a specific procedure for the difference library creation process. [Figure 16A] FIG. 16A is a flowchart (part 1) showing an example of a module terminal raising process procedure of the design support server 601. [Figure 16B]FIG. 16B is a flowchart (part 2) showing an example of the module terminal raising process procedure of the design support server 601. [Figure 17] FIG. 17 is a flowchart illustrating an example of a specific processing procedure of the module terminal creation processing. [Figure 18] FIG. 18 is a flow chart showing an example of a module terminal raising process procedure (interactive editor) of the design support server 601. [Figure 19A] FIG. 19A is a flowchart (part 1) illustrating an example of a specific processing procedure of the macro common layer extraction processing according to the first embodiment. [Figure 19B] FIG. 19B is a second flowchart illustrating an example of a specific procedure of the macro common layer extraction process according to the first embodiment. [Figure 20] FIG. 20 is a flowchart of an example of a specific procedure of the difference library creation process according to the first embodiment. [Figure 21] FIG. 21 is an explanatory diagram showing a specific example of the control file. [Figure 22] FIG. 22 is an explanatory diagram showing an example of a control file template. [Diagram 23] FIG. 23 is a flowchart showing an example of a control file template generation process procedure of the design support server 601. [Figure 24A] FIG. 24A is an explanatory diagram (part 1) showing one example of an operation screen for creating a control file. [Figure 24B] FIG. 24B is an explanatory diagram (part 2) showing one example of the operation screen for creating a control file. [Figure 25A] FIG. 25A is a flowchart (part 1) illustrating an example of a module terminal lifting process procedure according to the second embodiment. [Figure 25B] FIG. 25B is a flowchart (part 2) illustrating an example of a module terminal lifting process procedure according to the second embodiment. [Figure 26A] FIG. 26A is a flowchart (part 1) illustrating an example of a module terminal raising process procedure (interactive editor) according to the second embodiment. [Figure 26B] FIG. 26B is a flowchart (part 2) illustrating an example of the module terminal raising process procedure (interactive editor) according to the second embodiment. [Figure 27A] FIG. 27A is an explanatory diagram (part 1) showing one example of an operation screen for inputting a control file. [Figure 27B] FIG. 27B is an explanatory diagram (part 2) showing one example of the operation screen for inputting a control file. [Figure 28A] FIG. 28A is a flowchart illustrating an example of a module terminal check process procedure according to the third embodiment. [Figure 28B] FIG. 28B is a flowchart (part 2) illustrating an example of a module terminal check process procedure according to the third embodiment. [Figure 29] FIG. 29 is a flowchart illustrating an example of a specific processing procedure of the check processing. [Figure 30A] FIG. 30A is a flowchart (part 1) illustrating an example of a specific processing procedure of the usage information acquisition process. [Figure 30B] FIG. 30B is a second flowchart illustrating an example of a specific process procedure of the usage information acquisition process. [Diagram 31] FIG. 31 is an explanatory diagram showing a specific example of the check result. [Diagram 32] FIG. 32 is an explanatory diagram showing an example of an operation screen for checking a module terminal. [Diagram 33] FIG. 33 is a flowchart of an example of an error portion correcting process according to the third embodiment. [Diagram 34] FIG. 34 is an explanatory diagram showing an example of an operation screen for correcting an error portion. [Diagram 35] FIG. 35 is an explanatory diagram showing an example of an operation screen for correcting an unplaced portion. DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS
[0010] DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS Hereinafter, with reference to the drawings, embodiments of a module terminal design program, a module terminal design method, and an information processing device according to the present invention will be described in detail.
[0011] (Embodiment) Fig. 1 is an explanatory diagram showing an example of a module terminal design method according to an embodiment. In Fig. 1, an information processing device 101 is a computer that supports the design of a circuit to be designed. Here, the circuit to be designed is a circuit including module terminals for inter-hierarchical connection, for example, an integrated circuit that realizes one function of a hierarchically designed LSI.
[0012] In LSI design, when non-hierarchical design is used, where the entire chip is designed as a non-hierarchical (flat) design, problems such as TAT (Turn Around Time) arise due to the large scale of the chip. For this reason, hierarchical design, where the design is divided into hierarchical layers by function, is often used in LSI design.
[0013] Here, the hierarchical design will be explained with reference to FIG.
[0014] Fig. 2 is an explanatory diagram showing an example of hierarchical design. In Fig. 2, blocks 201 to 203 represent a circuit in the lowest level. The lowest level is a level where a site area exists. The site area is an area for placing basic cells. Here, a case where a two-level hierarchical design is performed is assumed.
[0015] Chip 200 represents a circuit in the highest hierarchy. Chip 200 is created by assembling blocks 201 to 203. In this case, parts of chip 200 that have the same function can be designed using the same blocks. In this way, hierarchical design can improve design efficiency by designing in functional units and repeatedly using blocks with the same function.
[0016] When performing hierarchical design, module terminals are placed to connect between hierarchical levels. The module terminals are I / O terminals for connecting between hierarchical levels.
[0017] Here, an example of a connection between layers via a module terminal (logical image) will be described with reference to FIG.
[0018] 3 is an explanatory diagram showing an example of connections between logical hierarchical levels. In FIG. 3, the top hierarchical level X includes lower hierarchical levels A and B. mpin_A1, mpin_A2, mpin_B1, and mpin_B2 are module terminals that connect the lower hierarchical levels A and B.
[0019] Net_A1, net_A2, net_A3, net_B1, net_B2, and net_B3 indicate nets as seen from the lower hierarchical level (lower hierarchical levels A and B). Net_A1 and net_B1 indicate nets within a hierarchy. Net_A2, net_A3, net_B2, and net_B3 indicate connection nets outside a hierarchy.
[0020] Net_C1 and net_C2 represent inter-hierarchical nets when viewed from the higher hierarchy (top hierarchy X). Inst_A1 to inst_A5 in lower hierarchy A and inst_B1 to inst_B4 in lower hierarchy B represent instances corresponding to macros (or cells).
[0021] The top layer X, the lower layers A and B, and each macro are each designed separately. For example, each macro is designed by a macro designer. Furthermore, the lower layers A and B are each designed by different lower layer designers. Furthermore, the top layer X is designed by the top layer designer. The lower layer designers cannot see the detailed internal structure of each macro. Furthermore, the top layer designer cannot see the detailed internal structure of each of the lower layers A and B.
[0022] Here, the module terminals are physically divided into two types, Frame module terminals that are placed on the Frame and raised module terminals that are placed on the cell terminals, due to the difference in placement position. Frame module terminals are placed on the Frame side of the own layer, since wiring is performed within the own layer.
[0023] The placement position of the Frame module terminal is determined, for example, by adjusting between related hierarchical layers. The wiring layer of the Frame module terminal is selected, for example, from among the wiring layers used by the nets in the hierarchical layers, by adjusting with the related hierarchical layers. The Frame module terminal is connected, for example, to a general net such as a data signal.
[0024] In addition, there are two types of Frame module terminals: abutment type and non-abutment type. With the abutment type, connections are made by abutting when the layers are assembled. With the non-abutment type, connections are made by wiring on the higher layer when the layers are assembled.
[0025] The lifting module terminals are placed on the terminals of cells in the lower layer in order to perform wiring in the higher layer. The placement position of the lifting module terminals is determined according to the placement position of the cells. Wiring is performed on the higher layer side while looking at the whole (no wiring is performed in the lower layer).
[0026] The wiring layer of the lifted module terminal is a higher wiring layer so as not to affect the net wiring in the lower layer. Therefore, the module terminal layer is also a higher wiring layer. The lifted module terminal is connected to a net for which a clean wiring pattern is desired, such as a clock net.
[0027] Here, an example of a connection between layers via a module terminal (physical image) will be described with reference to FIG.
[0028] Fig. 4 is an explanatory diagram showing an example of a connection between physical layers. In Fig. 4, a top layer X including a lower layer A and a lower layer B is shown. mpin_A1 and mpin_B1 are raised module terminals arranged on the terminals of each macro (cell) (inst_A2, inst_A4, inst_A5, inst_B1, inst_B2).
[0029] The wiring of the lifted module terminal is performed in the top layer (net_C1) by looking at the module terminals of the entire net. In this way, by lifting the module terminal, it becomes possible to perform wiring by looking at the connection information of the entire net.
[0030] For example, for nets such as clock nets where you want to create a wiring pattern that takes the entire net into consideration, you can perform wiring by looking at the entire net on the higher layer side. On the other hand, if you use a Frame module terminal, wiring is performed within a lower layer, so you cannot perform wiring by looking at the entire net.
[0031] Therefore, when it is desired to perform a wiring pattern that takes into consideration the entire net such as a clock net, a raised module terminal is used. Examples of the raised module terminal method of the conventional technology include patterns 1 and 2.
[0032] Pattern 1 is a lifting method for cells with terminal constraints. In pattern 1, the module terminals are in the same layer, shape, and location as the cell (macro) terminals. In addition, the bulk layer of the cell (macro) to the module terminal layer and location are created by the macro designer.
[0033] For example, when generating a module terminal for an output pin (x) on the M (Metal) 8 layer, the module terminal will be on the same layer (M8 layer), with the same shape, and in the same location as the output pin (x). In pattern 1, the module terminal is automatically placed, for example, when placing an instance in a batch program or an interactive editor.
[0034] Pattern 2 is a lifting method for cells without terminal constraints. In pattern 2, the module terminal is on a different layer, has a different shape, and is placed in a different position from the cell (macro) terminal, and is placed in a layer and shape that matches the available layer during wiring. The module terminal layer, placement position, and connection from the cell terminal to the module terminal can be created according to the convenience of the layout side.
[0035] For example, when generating a module terminal for an output pin (x) on the M2 layer, the module terminal will be on a different layer (e.g., M8 layer) from the output pin (x), with a different shape and placement position. In pattern 2, the module terminal is placed manually, for example, in an interactive editor, and the connection to the cell (macro) terminal layer is also wired manually.
[0036] The miniaturization of semiconductor technology in recent years has led to an increase in the area of power wiring, more complex mask design rules, and stricter electrical constraints in LSI design. Module terminals are also affected by the miniaturization of semiconductor technology, causing various problems.
[0037] For example, because the power supply structure is complex and dense, creating the cell terminal layer on a higher wiring layer would greatly limit the placement position. If the terminal layer for the module terminals were created on a higher layer, placement restrictions would arise due to power interference, reducing the degree of placement freedom. The higher the layer on which the terminal definition is located, the greater the degree of power interference and the lower the degree of placement freedom.
[0038] Here, in pattern 1 (with terminal constraints), if there is no change in the terminal layer of the module terminal, it is possible to prepare multiple macros to improve the degree of freedom, taking into account that the terminal structure differs depending on the placement position. In this case, it is necessary to decide the cell placement at the logic design stage. However, since the cell placement position is unknown at the logic design stage, the logic design cannot be performed even if multiple macros are prepared.
[0039] Here, the macros according to the arrangement position will be described with reference to FIG.
[0040] Fig. 5 is an explanatory diagram showing an example of a macro according to the placement position. In Fig. 5, an M8 power supply (power supply wiring) 501 and an M7 power supply (power supply wiring) 502 in a circuit 500 are shown. The circuit 500 corresponds to, for example, the lower layer A or the lower layer B shown in Figs. 3 and 4.
[0041] Here, when placing a macro including a terminal (I / O terminal) of the M8 layer in the circuit 500, as described above, it is possible to prepare a plurality of macros with different terminal structures depending on the placement position. Here, it is assumed that three types of macros 510, 520, and 530 are prepared.
[0042] Terminals 511 and 512 in the macro 510 are terminals on the M8 layer. Terminals 521 and 522 in the macro 520 are terminals on the M8 layer. Terminals 531 and 532 in the macro 530 are terminals on the M8 layer. Note that, of the terminals in the macros 510, 520, and 530, only the terminals on the M8 layer are shown in Fig. 5.
[0043] However, the cell placement positions are unknown at the logic design stage of the circuit 500. For this reason, even if three types of macros 510, 520, and 530 are prepared in consideration of the fact that the terminal structure differs depending on the placement position, logic design (logic entry) is not possible.
[0044] In addition, in the case of Pattern 2 (no terminal constraints), when the terminal layer of the module terminal is lowered, the connection between the module terminal layer and the macro terminal layer is created for the convenience of the layout. However, because the terminal constraints are strict, restrictions arise on the module terminal layer and position, and the connection of the macro terminal layer.
[0045] For this reason, if the layout side freely designs the pattern up to the module terminal, it will be impossible to observe the constraints, resulting in errors. The constraints include, for example, constraints for suppressing electromigration and antenna errors (terminal layer, terminal position, wiring length, wiring detour conditions), etc.
[0046] In this embodiment, therefore, a module terminal design method is described that makes it easy to design a circuit including a module terminal for inter-layer connection, taking into consideration constraints (such as layout constraints), even if the circuit has a complex power supply structure. Here, a process example (corresponding to the following processes (1) to (5)) of the information processing device 101 is described.
[0047] (1) The information processing device 101 creates a provisional macro for each placement position among a plurality of placement positions that can be placed according to the power supply structure of the circuit 102 for a target macro 103 of a multi-layer structure to be placed in the circuit 102 under design. Here, the circuit 102 under design is a circuit that is the subject of hierarchical design, and corresponds to, for example, the lower layer A and the lower layer B shown in FIGS. 3 and 4.
[0048] The target macro 103 is a circuit that can be wired in multiple layers, and is a macro that is a target for lifting. The macro that is a target for lifting is a macro that generates a "lifted module terminal" that is a terminal for inter-layer connection. The target macro 103 is, for example, a macro that is connected to a clock net.
[0049] The target macro 103, for example, has a terminal arranged on an upper layer, and is connected to the outside by wiring via a module terminal (raised module terminal) generated on the terminal. Note that a macro is a circuit including one or more cells. A cell is, for example, a logic gate such as a NOT gate or an AND gate, or a circuit block that combines these. In the following explanation, the macro and the cell may be explained as being synonymous.
[0050] The placement position is a position where the target macro 103 is placed during physical design of the circuit under design 102. There are multiple possible placement positions for the target macro 103 depending on the power supply structure of the circuit under design 102. The power supply structure of the circuit under design 102 is represented, for example, by the state of power supply wiring in each layer of the circuit under design 102. Furthermore, the target macro 103 has a different preferred terminal structure depending on the placement position.
[0051] For this reason, the information processing device 101 creates a provisional macro for each possible placement position in the design target circuit 102, for example, based on a netlist of the target macro 103. The provisional macro represents a placement pattern of terminals (I / O terminals) of each layer in the target macro 103. The placement pattern may include, for example, the placement of vias that connect different layers. The netlist is information that represents the connection relationship between terminals in the target macro 103.
[0052] Here, it is assumed that provisional macros 103-1, 103-2, and 103-3 have been created for the target macro 103. The provisional macro 103-1 corresponds to a placement position p1 in the circuit under design 102. The provisional macro 103-2 corresponds to a placement position p2 in the circuit under design 102. The provisional macro 103-3 corresponds to a placement position p3 in the circuit under design 102.
[0053] The temporary macros 103-1, 103-2, and 103-3 are macros that respectively realize the functions of the target macro 103 and have different terminal structures. However, the temporary macros 103-1, 103-2, and 103-3 are created, for example, so that they have as many common parts as possible from the lowest layer.
[0054] (2) The information processing device 101 compares the layout patterns of the created temporary macros 103-1, 103-2, and 103-3, and extracts a common pattern 104 based on the result. Here, the common pattern 104 represents a portion in which the layout of terminals is common among the temporary macros 103-1, 103-2, and 103-3.
[0055] For example, assume that the temporary macros 103-1, 103-2, and 103-3 represent the layout patterns of terminals in each layer from the bulk layer to the M5 layer. Also assume that the layout of terminals in each layer from the bulk layer to the M2 layer is common between the temporary macros 103-1, 103-2, and 103-3. In this case, the information processing device 101 extracts the layout patterns of terminals in each layer from the bottom layer (bulk layer) to the common top layer (M2 layer) as the common pattern 104.
[0056] (3) The information processing device 101 extracts, for each arrangement position, from the created temporary macros 103-1, 103-2, and 103-3, a difference pattern that indicates a difference from the extracted common pattern 104. Here, it is assumed that a difference pattern 105-1 is extracted for the temporary macro 103-1.
[0057] Also, assume that a difference pattern 105-2 is extracted for the temporary macro 103-2. Also assume that a difference pattern 105-3 is extracted for the temporary macro 103-3. Each of the difference patterns 105-1, 105-2, and 105-3 represents a layout pattern of terminals on each layer from the M3 layer to the M5 layer.
[0058] (4) The information processing device 101 registers the extracted common pattern 104 and the extracted difference patterns 105-1, 105-2, and 105-3 for each of the arrangement positions p1 to p3 in the library 110 in association with the target macro 103. Specifically, for example, the information processing device 101 registers the common pattern 104 as the arrangement pattern (terminal structure) of the target macro 103, and also registers the difference patterns 105-1, 105-2, and 105-3 corresponding to the arrangement positions p1 to p3 as components.
[0059] The above processes (1) to (4) are executed, for example, as advance preparations prior to the physical design of the circuit under design 102.
[0060] (5) During physical design of the circuit 102 under design, when the information processing device 101 places the target macro 103 at one of a plurality of possible placement positions (placement positions p1 to p3), the information processing device 101 refers to the library 110 and creates a module terminal for the lift target terminal in the target macro 103.
[0061] Here, the lifted target terminal is a terminal on which a module terminal (lifted module terminal) is arranged. The lifted target terminal is, for example, a terminal in the uppermost layer from which wiring connected to the outside is drawn out among the terminals in the target macro 103. The lifted target terminal may be specified by, for example, a macro designer.
[0062] Here, it is assumed that the target macro 103 is placed at placement position p1 among placement positions p1 to p3 where the target macro 103 can be placed. In this case, the information processing device 101 refers to the library 110 and creates a module terminal for the lift target terminal in the target macro 103 based on the common pattern 104 corresponding to the target macro 103 and the differential pattern 105-1 corresponding to the placement position p1.
[0063] Specifically, for example, the information processing device 101 arranges terminals and vias of each layer in the target macro 103 based on the common pattern 104 and the difference pattern 105-1 (i.e., restoring the temporary macro 103-1).Then, the information processing device 101 creates a module terminal of the same shape as the lift target terminal of the top layer of the target macro 103, and arranges the created module terminal on the lift target terminal (same layer, same shape, same arrangement position).
[0064] Here, the lift target terminal in the target macro 103 is assumed to be "terminal 106." In this case, a module terminal 107 is created for the terminal 106. The module terminal 107 is a module terminal (lifted module terminal) that is in the same layer, has the same shape, and is located in the same position as the terminal 106.
[0065] In this way, the information processing device 101 can create a library of parts (common patterns 104) common to the temporary macros 103-1, 103-2, and 103-3 at the placement positions p1 to p3 that can be placed according to the power supply structure of the design target circuit 102 as formal macros. Also, the information processing device 101 can register the difference patterns 105-1, 105-2, and 105-3 between the temporary macros 103-1, 103-2, and 103-3 and the common pattern 104 at the placement positions p1 to p3 as components. This allows the information processing device 101 to provide the parts of the target macro 103 that are not affected by the placement positions p1 to p3 as formal macros, and provide the non-common parts as components.
[0066] Furthermore, according to the information processing device 101, it is possible to create a terminal arrangement pattern on the layout side from the common pattern 104 registered as a formal macro and a difference pattern (e.g., difference pattern 105-1) corresponding to the actual arrangement position (e.g., arrangement position p1) during physical design of the design target circuit 102. This allows the design support server 601 to appropriately generate module terminals in consideration of arrangement constraints, etc., even for a circuit with a complex power supply structure, making it easier to design a circuit including module terminals.
[0067] (System configuration example of design support system 600) Next, a system configuration example of a design support system 600 including the information processing device 101 shown in Fig. 1 will be described. Here, a case where the information processing device 101 shown in Fig. 1 is applied to a design support server 601 in the design support system 600 will be described as an example.
[0068] Fig. 6 is an explanatory diagram showing an example of a system configuration of a design support system 600. In Fig. 6, the design support system 600 includes a design support server 601 and a client terminal 602. In the design support system 600, the design support server 601 and the client terminal 602 are connected via a wired or wireless network 610. The network 610 is, for example, the Internet, a LAN (Local Area Network), or a WAN (Wide Area Network).
[0069] Here, the design support server 601 has a macro library 620 and a layout database 630, and supports the design of a target circuit. The target circuit is, for example, an integrated circuit that realizes one function of a hierarchically designed LSI, and includes an I / O terminal (module terminal) for inter-hierarchical connection.
[0070] The macro library 620 stores information about macros (cells). The macro library 620 includes, for example, a physical macro library Lb1 and a module terminal generation library Lb2 shown in Fig. 8, which will be described later. The layout database 630 stores information for laying out the circuit to be designed.
[0071] The client terminal 602 is a computer used by a user of the design support system 600. The user is, for example, a designer of a circuit to be designed, or a designer of a macro to be placed in the circuit to be designed. The client terminal 602 is, for example, a PC (Personal Computer), a tablet PC, or the like.
[0072] In this embodiment, the design support server 601 and the client terminal 602 are provided separately, but the present invention is not limited to this. For example, the design support server 601 may be realized by the client terminal 602. Furthermore, the design support system 600 may include a plurality of client terminals 602.
[0073] (Example of hardware configuration of design support server 601) Next, an example of the hardware configuration of the design support server 601 will be described.
[0074] Fig. 7 is a block diagram showing an example of a hardware configuration of a design support server 601. In Fig. 7, the design support server 601 has a CPU (Central Processing Unit) 701, a memory 702, a disk drive 703, a disk 704, a communication I / F (Interface) 705, a portable recording medium I / F 706, and a portable recording medium 707. In addition, each component is connected to each other by a bus 700.
[0075] Here, the CPU 701 is responsible for the overall control of the design support server 601. The CPU 701 may have multiple cores. The memory 702 has, for example, a read only memory (ROM), a random access memory (RAM), and a flash ROM. Specifically, for example, the flash ROM stores an OS program, the ROM stores an application program, and the RAM is used as a work area for the CPU 701. The programs stored in the memory 702 are loaded into the CPU 701 to cause the CPU 701 to execute the coded processes.
[0076] The disk drive 703 controls reading / writing data from / to the disk 704 under the control of the CPU 701. The disk 704 stores data written under the control of the disk drive 703. The disk 704 is, for example, a magnetic disk, an optical disk, or the like.
[0077] The communication I / F 705 is connected to a network 610 through a communication line, and is connected to an external computer (e.g., the client terminal 602 shown in FIG. 2) via the network 610. The communication I / F 705 manages the interface between the network 610 and the inside of the device, and controls input and output of data from the external computer. The communication I / F 705 is, for example, a modem or a LAN adapter.
[0078] The portable recording medium I / F 706 controls reading / writing of data from / to the portable recording medium 707 under the control of the CPU 701. The portable recording medium 707 stores data written under the control of the portable recording medium I / F 706. The portable recording medium 707 is, for example, a CD (Compact Disc)-ROM, a DVD (Digital Versatile Disk), or a USB (Universal Serial Bus) memory.
[0079] Note that the design support server 601 may have, for example, an input device, a display, etc., in addition to the above-mentioned components. Also, the design support server 601 may not have, for example, the portable recording medium I / F 706 and the portable recording medium 707, among the above-mentioned components. Also, the client terminal 602 shown in Fig. 6 can be realized by the same hardware configuration as the design support server 601. However, the client terminal 602 has, for example, an input device, a display, etc., in addition to the above-mentioned components.
[0080] (Example of functional configuration of design support server 601) Next, an example of the functional configuration of the design support server 601 will be described.
[0081] Fig. 8 is a block diagram showing an example of a functional configuration of the design support server 601. In Fig. 8, the design support server 601 includes an acquisition unit 801, a first creation unit 802, a registration unit 803, a second creation unit 804, and an output unit 805. The acquisition unit 801 to the output unit 805 are functions that constitute the control unit 800, and specifically, the functions are realized by causing the CPU 701 to execute a program stored in a storage device such as the memory 702, the disk 704, or the portable recording medium 707 shown in Fig. 7, or by the communication I / F 705. The processing results of each functional unit are stored in a storage device such as the memory 702 or the disk 704.
[0082] The acquisition unit 801 acquires a netlist related to a target macro. Here, the target macro is a macro to be lifted among the macros to be placed in the circuit to be designed. The circuit to be designed is, for example, an integrated circuit that realizes one function of a hierarchically designed LSI, and includes a module terminal.
[0083] The target macro is, for example, a macro connected to a clock net. The clock net is required to have smaller delay and skew than general nets such as data signals. The netlist is information that represents the connection relationship between terminals in the target macro.
[0084] Specifically, for example, the acquiring unit 801 acquires a netlist related to the target macro by generating a netlist from circuit information such as a Hardware Description Language (HDL) description or a circuit diagram of the target macro.
[0085] Circuit information (HDL description, circuit diagram, etc.) of the target macro is acquired, for example, from the macro designer's client terminal 602 (see FIG. 6). The acquiring unit 801 may also acquire a netlist related to the target macro from the macro designer's client terminal 602.
[0086] The first creation unit 802 creates a provisional macro for each placement position among a plurality of placement positions that can be placed according to the power supply structure of the circuit under design for the target macro. Here, the provisional macro is information that represents the placement pattern of terminals of each layer in the target macro of a multi-layer structure.
[0087] The placement pattern includes, for example, the placement of vias that connect different layers. The placement positions are determined so as to satisfy required placement constraints according to, for example, the state of power supply wiring of the circuit to be designed. The placement positions may be determined manually by, for example, a macro designer.
[0088] Specifically, for example, the first creation unit 802 selects one of a plurality of possible placement positions (assumed placement position). Then, the first creation unit 802 assumes that the selected placement position in the circuit to be designed will be used to place the terminal (tentative IO terminal) in the tentative macro, and determines the wiring layer and placement position of the terminal in the tentative macro according to the selected placement position.
[0089] The wiring layer corresponds to the wiring layer of the target macro and is common to all terminals in the tentative macro. The wiring layer is a layer to which wiring with the outside is connected (wiring layer for external connection), for example, the top layer of the target macro. The wiring layer is specified, for example, by the macro designer. The placement position of the terminal on which layer in the tentative macro is determined, for example, taking into consideration the wiring layer and terminal constraints of the target macro.
[0090] The terminal constraints are, for example, constraints for suppressing electromigration or antenna errors (terminal layer, terminal position, wiring length, wiring detouring conditions, etc.) The type of constraint to be considered can be selected, for example, by specifying the purpose of the target macro.
[0091] Then, the first creation unit 802 performs net wiring connection within the temporary macro. In the net wiring connection, for example, a connection between terminals from a drain in the temporary macro to a metal layer is performed. Next, the first creation unit 802 performs a timing check of the temporary macro. Then, the first creation unit 802 performs a design rule check of the temporary macro.
[0092] As a result, a provisional macro corresponding to the selected placement position (expected placement position) is created. The provisional macro is created for each of a plurality of possible placement positions. At this time, the first creation unit 802 creates each provisional macro so that, for example, common parts from the lowest layer between the provisional macros are as large as possible.
[0093] In the case of a timing error or a violation of a design rule, for example, the description of the target macro or the constraint conditions are changed, and a provisional macro is regenerated.
[0094] The registration unit 803 extracts a common pattern that represents a common portion between the temporary macros based on a result of comparing the arrangement patterns of the created temporary macros. Specifically, for example, the registration unit 803 extracts the arrangement pattern of the terminals of each layer from the bottom layer (bulk layer) to the common top layer as the common pattern.
[0095] Next, the registration unit 803 extracts, for each arrangement position, a difference pattern that indicates a difference from the extracted common pattern from the created temporary macro. Specifically, for example, the registration unit 803 extracts, for each temporary macro, the remaining portion excluding the common pattern (from the layer immediately above the common pattern to the top layer) as a difference pattern.
[0096] Then, the registration unit 803 registers the extracted common pattern and the extracted difference pattern for each arrangement position in the macro library 620 in association with the target macro. Specifically, for example, the registration unit 803 performs a timing check of the extracted common pattern. Also, the registration unit 803 performs a design rule check of the common pattern.
[0097] In the case of a timing error or a violation of a design rule, for example, the description of the target macro or the constraint conditions are changed, and the common pattern is extracted again.
[0098] Then, the registration unit 803 registers the extracted common pattern as a formal macro in the physical macro library Lb1 in the macro library 620, in association with the target macro (e.g., macro name). The registration unit 803 also registers the arrangement position and the difference pattern in the module terminal generation library Lb2 in the macro library 620, in association with the target macro (e.g., macro name).
[0099] The contents stored in the module terminal generation library Lb2 will be described later with reference to FIGS. 10, 11A, 11B, and 11C.
[0100] The acquiring unit 801 acquires information for performing layout for the circuit under design. Here, the information for performing layout includes, for example, the logical design result of the circuit under design. The information for performing layout includes, for example, the placement information and net information of each macro in the circuit under design.
[0101] The net information represents net wiring that connects between macros. The net wiring includes, for example, inter-hierarchical nets that connect the circuit to be designed and an external circuit. Information for laying out the circuit to be designed is acquired, for example, from a client terminal 602 of the designer of the circuit to be designed.
[0102] The acquired information for laying out the circuit to be designed is stored in, for example, the layout database 630 shown in FIG.
[0103] During physical design of the circuit to be designed, when placing a target macro in a first placement position among a plurality of possible placement positions, the second creation unit 804 creates a module terminal for a lift target terminal in the target macro by referring to the macro library 620. The physical design is to physically determine the placement and wiring of cells in the circuit to be designed.
[0104] The physical design of the circuit to be designed is performed based on, for example, the layout database 630. The lifted target terminal is a terminal on which a module terminal (lifted module terminal) is placed. The lifted target terminal is, for example, a terminal in a wiring layer (top layer) among terminals in the target macro. The lifted target terminal is, for example, specified by a macro designer.
[0105] Specifically, for example, the second creation unit 804 refers to the physical macro library Lb1 to identify a common pattern corresponding to the target macro, and also refers to the module terminal generation library Lb2 to identify a difference pattern corresponding to the first arrangement position for the target macro.
[0106] Then, the second creation unit 804 creates a module terminal for the lift target terminal in the target macro based on the identified common pattern and the differential pattern corresponding to the identified first arrangement position. To explain the module terminal in more detail, for example, the second creation unit 804 arranges terminals and vias of each layer in the target macro based on the common pattern and the differential pattern.
[0107] Then, the second creation unit 804 creates a module terminal for the lift target terminal of the top layer of the target macro, and places the created module terminal on the lift target terminal. The module terminal is a lift module terminal in the same layer, with the same shape, and in the same arrangement position as the lift target terminal.
[0108] The output unit 805 outputs the created information about the module terminals. The information about the module terminals is, for example, layout data in which the module terminals (lifted module terminals) are placed on the lifted target terminals in the target macros placed in the circuit to be designed.
[0109] The output format of the output unit 805 may be, for example, storage in a storage device such as memory 702 or disk 704 (e.g., layout database 630), transmission to another computer (e.g., client terminal 602) via communication I / F 705, display on a display not shown, or printout on a printer not shown.
[0110] Furthermore, the first creating unit 802 may create a provisional macro for each combination of a plurality of uses applicable to the target macro and a plurality of placement positions where the target macro can be placed according to the power supply structure of the circuit under design. Here, the use indicates what is to be optimized by using the target macro.
[0111] Examples of the applications include antenna error suppression, electromigration suppression, and delay suppression. The terminal structure in the target macro is determined, for example, according to the application. Therefore, the first creation unit 802 may create a provisional macro in consideration of not only the placement position of the target macro but also the application of the target macro (constraint conditions according to the application).
[0112] The registration unit 803 may also extract a common pattern that represents a common portion between the provisional macros based on a result of comparing the arrangement patterns of the provisional macros created for each combination of use and arrangement position. In this case, the registration unit 803 extracts a difference pattern that represents a difference from the extracted common pattern from among the provisional macros created for each combination of use and arrangement position. Then, the registration unit 803 registers the extracted common pattern and the extracted difference pattern for each combination in the macro library 620 in association with the target macro.
[0113] In this case, during physical design of the circuit to be designed, when placing the target macro in a first placement position for a first use, the second creation unit 804 may refer to the macro library 620 and create a module terminal for the lift target terminal in the target macro based on the common pattern and a differential pattern corresponding to the combination of the first use and the first placement position.
[0114] Here, the first use is any one of a plurality of uses applicable to the target macro. The first placement position is any one of a plurality of placement positions where the target macro can be placed. Specifically, for example, the second creation unit 804 refers to the physical macro library Lb1 to identify a common pattern corresponding to the target macro.
[0115] The second creation unit 804 also refers to the module terminal generation library Lb2 to identify a difference pattern corresponding to a combination of the first use and the first arrangement position for the target macro. Then, the second creation unit 804 creates a module terminal for the lift target terminal in the target macro based on the identified common pattern and the identified difference pattern.
[0116] The first creating unit 802 may create a provisional macro for each combination of a wiring layer of a plurality of wiring layers for external connection applicable to the target macro and a placement position of a plurality of placement positions that can be placed according to the power supply structure of the circuit to be designed. Here, the wiring layer for external connection is a layer to which wiring connected to the outside is connected, for example, the top layer of the target macro.
[0117] For example, a higher layer such as the M8 layer is used as the wiring layer of the target macro. The terminal structure in the target macro changes depending on, for example, the wiring layer of the target macro. Therefore, the first creation unit 802 may create a provisional macro for each placement position where the target macro can be placed, depending on the wiring layer of the target macro.
[0118] The registration unit 803 may also extract a common pattern that represents a common portion between the temporary macros based on a result of comparing the placement patterns of the temporary macros created for each combination of the wiring layer and the placement position. In this case, the registration unit 803 extracts a difference pattern that represents a difference from the extracted common pattern from the temporary macros created for each combination of the wiring layer and the placement position. Then, the registration unit 803 registers the extracted common pattern and the extracted difference pattern for each combination in the macro library 620 in association with the target macro.
[0119] In this case, when placing a target macro at a first placement position corresponding to a first wiring layer during physical design of the circuit to be designed, the second creation unit 804 may refer to the macro library 620 and create a module terminal for the lift target terminal in the target macro based on the common pattern and the differential pattern corresponding to the combination of the first wiring layer and the first placement position.
[0120] Here, the first wiring layer is one of a plurality of wiring layers applicable to the target macro. The first placement position is one of a plurality of placement positions where the target macro corresponding to the first wiring layer can be placed. Specifically, for example, the second creation unit 804 refers to the physical macro library Lb1 to identify a common pattern corresponding to the target macro.
[0121] The second creation unit 804 also refers to the module terminal generation library Lb2 to identify a differential pattern corresponding to a combination of the first wiring layer and the first placement position for the target macro. Then, the second creation unit 804 creates a module terminal for the lift target terminal in the target macro based on the identified common pattern and the identified differential pattern.
[0122] In the above description, the design support server 601 creates a provisional macro for each possible placement position according to the power supply structure of the circuit to be designed, but this is not limiting. For example, a macro designer may create a provisional macro for each possible placement position in the client terminal 602. In this case, the design support server 601 may acquire the provisional macro created in the client terminal 602.
[0123] (Example of registration of Macro Library 620) Next, an example of registration of the macro library 620 will be described with reference to FIG. 9A and FIG. 9B.
[0124] 9A and 9B are explanatory diagrams showing an example of registration of the macro library 620. In Fig. 9A, it is assumed that three types of provisional macros A_1, A_2, and A_3 that can place a macro A (target macro) in a plurality of placement positions (three locations) in a circuit to be designed are created.
[0125] Here, the wiring layer of macro A is layer M8, and the terminals (input pin A, output pin X) are present on layer M8. The multiple placement positions where macro A can be placed in the circuit to be designed are determined according to the power supply structure of the circuit to be designed. Here, the placement position corresponding to tentative macro A_1 is assumed to be (x1, y1).
[0126] Moreover, the placement position corresponding to the temporary macro A_2 is (x2, y2). The placement position corresponding to the temporary macro A_3 is (x3, y3). The placement positions of the temporary macros A_1, A_2, and A_3 indicate, for example, the coordinates of the bottom left corner of each of the temporary macros A_1, A_2, and A_3. However, the shapes of the temporary macros A_1, A_2, and A_3 are rectangular.
[0127] The provisional macros A_1, A_2, and A_3 correspond to, for example, the three types of macros 510, 520, and 530 shown in Fig. 5. Note that the layout patterns of the terminals (pins) in each of the provisional macros A_1, A_2, and A_3 exist for each layer from the bulk layer to the M8 layer, but Fig. 9A shows only the M2 layer and the M8 layer.
[0128] The design support server 601 extracts a common pattern representing a portion common to the temporary macros A_1, A_2, and A_3 based on a result of comparing the arrangement patterns of the created temporary macros A_1, A_2, and A_3. Here, it is assumed that the bulk layer to the M2 layer of each of the temporary macros A_1, A_2, and A_3 are extracted as a common pattern.
[0129] In Fig. 9A, the extracted common pattern is displayed as "macro A (formal macro)". Note that the layout pattern of the terminals (pins) in macro A (formal macro) exists for each layer from the bulk layer to the M2 layer, but Fig. 9A shows only the M2 layer.
[0130] In FIG. 9B, the design support server 601 extracts, for each of the created provisional macros A_1, A_2, and A_3, a difference pattern (for example, VIA2 to M8 layers) that indicates a difference from the extracted macro A (common pattern: bulk layer to M2 layer).
[0131] Here, for the provisional macro A_1, a difference pattern 910 representing the difference from the macro A (common pattern) is extracted. Also, for the provisional macro A_2, a difference pattern 920 representing the difference from the macro A (common pattern) is extracted. Also, for the provisional macro A_3, a difference pattern 930 representing the difference from the macro A (common pattern) is extracted.
[0132] Although the layout patterns of the terminals (pins) in each of the differential patterns 910, 920, and 930 exist for each of the VIA2 to M8 layers, only the M8 layer is shown in FIG. 9B.
[0133] Then, the design support server 601 registers the extracted common pattern (macro A) and the extracted difference patterns 910, 920, and 930 for each arrangement position in the macro library 620 in association with the macro name of macro A. For example, the macro name of macro A is "MACRO_A."
[0134] In this case, the design support server 601 registers the common pattern (macro A) as a formal macro in the physical macro library Lb1 in the macro library 620, in association with the macro name "MACRO_A". The design support server 601 also registers the placement position (x1, y1) and the difference pattern 910 in the module terminal generation library Lb2 in the macro library 620, in association with the macro name "MACRO_A".
[0135] Furthermore, the design support server 601 registers the placement position (x2, y2) and the difference pattern 920 in the module terminal generation library Lb2 in the macro library 620, in association with the macro name "MACRO_A". Furthermore, the design support server 601 registers the placement position (x3, y3) and the difference pattern 930 in the module terminal generation library Lb2 in the macro library 620, in association with the macro name "MACRO_A".
[0136] As a result, the design support server 601 can register the common pattern (macro A) as a formal macro, and can also register the difference patterns 910, 920, and 930 corresponding to the respective placement positions (x1, y1), (x2, y2), and (x3, y3) as components.
[0137] (Memory contents of module terminal generation library Lb2) Here, a description will be given of the contents stored in the module terminal generation library Lb2 in the macro library 620. First, an example of the format of the module terminal generation library Lb2 will be described with reference to Fig. 10. In the following description, a terminal may be written as a "pin".
[0138] Fig. 10 is an explanatory diagram showing an example of the format of the module terminal generation library 1000. In Fig. 10, a format 1000 indicates the data format of the module terminal generation information stored in the module terminal generation library Lb2.
[0139] The format 1000 includes a macro name definition 1001 , a macro pin name definition 1002 , an application name definition 1003 , a wiring layer definition 1004 , a macro placement position definition 1005 , a module terminal generation pattern start declaration 1006 , and wiring layer name / pattern information 1007 .
[0140] A macro name definition 1001 indicates the macro name of the target macro. An in-macro pin name definition 1002 indicates the pin name (terminal name) in the target macro. An applicable use name definition 1003 indicates the use to which the target macro is applied. A wiring layer definition 1004 indicates the top wiring layer (wiring layer for external connection) for the pin.
[0141] The macro placement position definition 1005 indicates the placement position of the target macro. The module terminal generation pattern start declaration 1006 indicates the start declaration of the module terminal generation pattern. The wiring layer name / pattern information 1007 indicates the wiring layer name and pattern information (rectangle) of the module terminal generation pattern. The wiring layer name / pattern information 1007 corresponds to, for example, the difference patterns 910, 920, and 930 shown in FIG. 9B.
[0142] The module terminal generation library Lb2 stores module terminal generation information in which, for example, a macro name definition 1001 to wiring layer name / pattern information 1007 are nested and described.
[0143] Next, a specific example of the module terminal generation information stored in the module terminal generation library Lb2 will be described with reference to FIGS. 11A, 11B, and 11C.
[0144] Figures 11A, 11B, and 11C are explanatory diagrams showing specific examples of module terminal generation information. In Figures 11A, 11B, and 11C, module terminal generation information 1100 is module terminal generation information for pin X (pin X) in macro A (MACRO_A). MACRO:MACRO_A indicates that this is a declaration for MACRO_A. PIN:X indicates that this is a declaration for X.
[0145] Module terminal generation information 1100 includes antenna error suppression information 1110 and delay suppression information 1120. USE:ANNTENA and USE:DELAY indicate declarations for two types of uses, ANNTENA and DELAY.
[0146] Antenna error suppression information 1110 is module terminal generation information for the application "antenna error suppression." Antenna error suppression information 1110 includes module terminal generation pattern start declaration 1006 and wiring layer name / pattern information 1007 according to the wiring layers "M4, M5" and placement positions "(100, 200), (400, 500)" of macro A. POS: (100, 200) and POS: (400, 500) indicate that the declaration is for (100, 200) and (400, 500). TOP_LAYER: M4 and TOP_LAYER: M5 indicate that the declaration is for the M4 layer and the M5 layer.
[0147] The delay suppression information 1120 is module terminal generation information for the application "delay suppression." The delay suppression information 1120 includes a module terminal generation pattern start declaration 1006 and wiring layer name / pattern information 1007 according to the wiring layers "M4, M5" and placement positions "(100, 200), (400, 500)" of macro A.
[0148] (Example of module terminal creation) Next, a manufacturing example of a module terminal will be described with reference to FIGS. 12A and 12B.
[0149] 12A and 12B are explanatory diagrams showing an example of creating a module terminal. In Fig. 12A, a circuit 1200 is an example of a circuit to be designed. Here, it is assumed that a macro A is placed in the circuit 1200. Also, the topmost wiring layer (wiring layer for external connection) for the pins in the macro A is the "M8 layer."
[0150] In this case, multiple possible placement positions for macro A are determined according to the power supply structure in circuit 1200. In circuit 1200, power supply wiring 1210 is an M7 power supply, and power supply wiring 1220 is an M8 power supply.
[0151] At the stage of logic design of the circuit 1200, the logic design is performed using, for example, a macro A. Note that the macro A is, for example, a common pattern (bulk layer to M2 layer) that represents a portion common to the temporary macros A_1, A_2, and A_3 shown in Fig. 9A. However, Fig. 12A shows only the M2 layer of the macro A.
[0152] At the stage of physical design of the circuit 1200, an instance using macro A is placed. Here, the multiple placement positions where macro A can be placed are three placement positions p1 to p3 in the circuit 1200. In this case, the design support server 601 places instances A_1, A_2, and A_3 using macro A at the placement positions p1 to p3, respectively.
[0153] 12B, the design support server 601 raises the module terminal for each of the instances A_1, A_2, and A_3. Specifically, for example, the design support server 601 refers to the module terminal generation library Lb2 and searches for difference patterns (for example, difference patterns 910, 920, and 930 shown in FIG. 9B) corresponding to the arrangement positions p1 to p3 of each of the instances A_1, A_2, and A_3.
[0154] Then, the design support server 601 creates module terminals for the lifting target terminals in each of the instances A_1, A_2, and A_3 based on the searched difference pattern. Here, for each pin (lifting target terminal not shown) in the M8 layer of the instance A_1, module terminals 1201 and 1202 (lifting module terminals) are created that are in the same layer, have the same shape, and are in the same arrangement position.
[0155] For each pin of the M8 layer of the instance A_2, module terminals 1203 and 1204 are created in the same layer, shape, and location. For each pin of the M8 layer of the instance A_3, module terminals 1205 and 1206 are created in the same layer, shape, and location. Note that Fig. 12B shows only the module terminals 1201 to 1206 of the M8 layer of the instances A_1, A_2, and A_3.
[0156] As a result, when placing macro A in circuit 1200 with a complex power supply structure, the design support server 601 can place module terminals (1201-1206) at positions expected by the macro designer, even when cell terminals are placed in the upper layer (M8 layer). Also, the design support server 601 can make the connections up to the module terminals (1201-1206) have the shape expected by the macro designer.
[0157] (Procedure for creating a library in the design support server 601) Next, the library creation process of the design support server 601 will be described with reference to FIG.
[0158] Fig. 13 is a flowchart showing an example of a library creation processing procedure of the design support server 601. In the flowchart of Fig. 13, first, the design support server 601 creates a macro netlist based on circuit information of the macro to be placed in the circuit to be designed (step S1301).
[0159] Next, the design support server 601 judges whether the macro (the macro currently being processed) is a module terminal uplift target macro (step S1302). For example, the macro name of the module terminal uplift target macro is set in advance. In this case, the design support server 601 judges whether the macro is a module terminal uplift target macro, for example, depending on whether the macro name of the macro is the macro name of the module terminal uplift target macro set in advance.
[0160] If the macro is a target for raising the module terminal (step S1302: Yes), the design support server 601 executes a macro common layer extraction process (step S1303). A specific procedure of the macro common layer extraction process will be described later with reference to FIGS. 14A and 14B.
[0161] Then, the design support server 601 executes the difference library creation process (step S1304), and ends the series of processes according to this flowchart. A specific processing procedure of the difference library creation process will be described later with reference to FIG.
[0162] Also, in step S1302, if the macro is not a target for raising the module terminal (step S1302: No), the design support server 601 determines the wiring layer and placement position of the IO terminal in the macro (step S1305). Next, the design support server 601 performs net wiring connection in the macro (step S1306).
[0163] Then, the design support server 601 performs a timing check of the macro (step S1307). Next, the design support server 601 performs a design rule check of the macro (step S1308). If a timing error or a violation of the design rules is found, for example, the description of the macro or the constraint conditions are changed, and the macro is recreated.
[0164] Then, the design support server 601 outputs the timing check result of the macro to a timing library (step S1309). The timing library (not shown) stores information related to the timing of the macro. The timing library is included in the macro library 620, for example.
[0165] Next, the design support server 601 outputs the physical macro library information of the created macro to the physical macro library Lb1 (step S1310), and ends a series of processes according to this flowchart. The physical macro library information is design information related to the macro (logical function, wiring layer of IO terminal, placement position, etc.).
[0166] This enables the design support server 601 to create a macro library 620 in which various macros (cells) to be placed in the circuit under design are registered.
[0167] Next, a specific procedure of the macro common layer extraction process in step S1303 shown in FIG. 13 will be described with reference to FIGS. 14A and 14B.
[0168] 14A and 14B are flowcharts showing an example of a specific procedure of the macro common layer extraction process. In the flowchart of FIG. 14A, first, the design support server 601 selects an assumed placement position that has not been selected among assumed placement positions in the circuit to be designed (step S1401).
[0169] The assumed placement position corresponds to a placement position where a macro can be placed depending on the power supply structure of the circuit under design. Here, a macro corresponding to the assumed placement position is referred to as a "temporary macro."
[0170] Next, the design support server 601 determines the wiring layer and the placement position of the tentative I / O terminal in the tentative macro in consideration of the previously specified constraint conditions (step S1402). Next, the design support server 601 performs net wiring connection in the tentative macro (step S1403).
[0171] Then, the design support server 601 performs a timing check on the provisional macro (step S1404) Next, the design support server 601 performs a design rule check on the provisional macro (step S1405).
[0172] Then, the design support server 601 keeps the provisional physical macro library information of the created provisional macro (step S1406). The provisional physical macro library information is design information related to the provisional macro (such as the macro name, the logical function, the wiring layer of the IO terminal, the placement position, and the net representing the connection relationship between the terminals).
[0173] Next, the design support server 601 judges whether or not there is an unselected assumed placement position among the assumed placement positions in the circuit to be designed (step S1407). If there is an unselected assumed placement position (step S1407: Yes), the design support server 601 returns to step S1401.
[0174] On the other hand, if there is no unselected assumed arrangement position (step S1407: No), the design support server 601 proceeds to step S1408 shown in FIG. 14B.
[0175] 14B, first, the design support server 601 identifies a macro internal pattern of one of the assumed placement positions in the circuit to be designed (step S1408). The macro internal pattern corresponds to the placement pattern of the terminals of each layer in the tentative macro.
[0176] Next, the design support server 601 identifies macro internal patterns at other assumed placement positions among the assumed placement positions in the circuit to be designed (step S1409).Then, the design support server 601 extracts a common pattern based on a result of comparing the identified macro internal patterns with each other (step S1410).
[0177] Next, the design support server 601 judges whether or not there is a macro internal pattern at an unspecified assumed placement position (step S1411). If there is a macro internal pattern at an unspecified assumed placement position (step S1411: Yes), the design support server 601 returns to step S1409.
[0178] On the other hand, if there is no macro internal pattern at an unspecified assumed placement position (step S1411: No), the design support server 601 keeps the common pattern information (step S1412). The common pattern information represents the common pattern extracted in step S1410. The common pattern represents a portion common to all the macro internal patterns.
[0179] Next, the design support server 601 performs a timing check of the common pattern (step S1413).Then, the design support server 601 performs a design rule check of the common pattern (step S1414).Then, the design support server 601 outputs the timing check result of the common pattern (terminal capacitance, timing, etc.) to the timing library (step S1415).
[0180] Then, the design support server 601 outputs the common pattern physical macro library information to the physical macro library Lb1 (step S1416), and returns to the step where the macro common layer extraction process was called. The common pattern physical macro library information is design information related to the common pattern (macro name, logic function, placement position of IO terminal, net, etc.).
[0181] This allows the design support server 601 to extract common patterns that represent parts common between the provisional macros and register them in the physical macro library Lb1.
[0182] Next, a specific procedure for the difference library creation process in step S1304 shown in FIG. 13 will be described with reference to FIG.
[0183] Fig. 15 is a flowchart showing an example of a specific processing procedure of the difference library creation processing. In the flowchart of Fig. 15, first, the design support server 601 reads common pattern physical macro library information from the physical macro library Lb1 (step S1501).
[0184] Next, the design support server 601 selects an unselected assumed placement position among the assumed placement positions in the circuit to be designed (step S1502).Then, the design support server 601 extracts provisional physical macro library information corresponding to the selected assumed placement position from the provisional physical macro library information kept in step S1406 (step S1503).
[0185] Next, the design support server 601 extracts difference information (difference pattern) that indicates the difference between the read common pattern physical macro library information and the extracted tentative physical macro library information (step S1504).Then, the design support server 601 outputs the selected placement position (assumed placement position) and the extracted difference information to the module terminal generation library Lb2 in the macro library 620 (step S1505).
[0186] Next, the design support server 601 determines whether or not there is an unselected assumed placement position among the assumed placement positions in the circuit to be designed (step S1506). If there is an unselected assumed placement position (step S1506: Yes), the design support server 601 returns to step S1502.
[0187] On the other hand, if there is no unselected assumed arrangement position (step S1506: No), the design support server 601 returns to the step where the difference library creation process was called.
[0188] This allows the design support server 601 to extract differences from the common pattern for each provisional macro for each assumed placement position and register them in the module terminal generation library Lb2.
[0189] (Procedure for module terminal lifting process of design support server 601) Next, a module terminal raising process procedure of the design support server 601 will be described with reference to FIGS. 16A and 16B.
[0190] 16A and 16B are flowcharts showing an example of a module terminal up-selection processing procedure of the design support server 601. In the flowchart of Fig. 16A, first, the design support server 601 reads the layout database 630 (step S1601). Next, the design support server 601 reads the module terminal generation library Lb2 (step S1602).
[0191] Then, the design support server 601 refers to the layout database 630 and selects unselected net information from among the net information of the circuit to be designed (step S1603). Next, the design support server 601 determines whether the selected net information is an inter-hierarchical net (step S1604). An inter-hierarchical net is a net that is connected to the outside of the circuit to be designed.
[0192] If it is not an inter-hierarchical net (step S1604: No), the design support server 601 proceeds to step S1613 shown in Fig. 16B. On the other hand, if it is an inter-hierarchical net (step S1604: Yes), the design support server 601 refers to the layout database 630 and selects unselected instance information from the instance information in the net (step S1605). The instance information in the net represents macros (cells) connected to the net.
[0193] Next, the design support server 601 judges whether the selected instance information is a macro to be lifted (step S1606). The macro to be lifted is, for example, a macro connected to a clock net, and is designated in advance. If the macro is not a macro to be lifted (step S1606: No), the design support server 601 proceeds to step S1612 shown in FIG. 16B.
[0194] On the other hand, if the macro is a lift target macro (step S1606: Yes), the design support server 601 judges whether the selected instance information has been placed (step S1607). If the instance information has not been placed (step S1607: No), the design support server 601 proceeds to step S1612 shown in FIG. 16B.
[0195] On the other hand, if the instance information has been placed (step S1607: Yes), the design support server 601 selects unselected pin information from among the pin information in the instance (step S1608). Then, the design support server 601 determines whether the selected pin information is a pin to be lifted (step S1609). The pin to be lifted is, for example, designated in advance.
[0196] If the pin is not a target pin for improvement (step S1609: No), the design support server 601 proceeds to step S1611. On the other hand, if the pin is a target pin for improvement (step S1609: Yes), the design support server 601 executes a module terminal creation process (step S1610). A specific procedure for the module terminal creation process will be described later with reference to FIG. 17.
[0197] Next, the design support server 601 judges whether or not there is any unselected pin information among the pin information in the instance (step S1611). If there is any unselected pin information (step S1611: Yes), the design support server 601 returns to step S1608.
[0198] On the other hand, if there is no unselected pin information (step S1611: No), the design support server 601 proceeds to step S1612 shown in FIG. 16B.
[0199] In the flowchart of Fig. 16B, first, the design support server 601 judges whether or not there is unselected instance information among the instance information in the net (step S1612). If there is unselected instance information (step S1612: Yes), the design support server 601 returns to step S1605 shown in Fig. 16A.
[0200] On the other hand, if there is no unselected instance information (step S1612: No), the design support server 601 judges whether there is any unselected net information among the net information of the circuit to be designed (step S1613). If there is any unselected net information (step S1613: Yes), the design support server 601 returns to step S1603 shown in FIG. 16A.
[0201] On the other hand, if there is no unselected net information (step S1613: No), the design support server 601 ends a series of processes according to this flowchart.
[0202] Next, a specific procedure of the module terminal creation process in step S1610 shown in FIG. 16A will be described with reference to FIG.
[0203] Fig. 17 is a flowchart showing an example of a specific processing procedure of a module terminal creation process. In the flowchart of Fig. 17, first, the design support server 601 acquires placement information of an instance (step S1701). Note that the instance is an instance specified from the instance information selected in step S1605 shown in Fig. 16A.
[0204] Next, the design support server 601 acquires macro information (for example, macro name) of the instance (step S1702), and then acquires pin information (for example, pin name) of the instance (step S1703).
[0205] Then, the design support server 601 acquires the use information of the instance pin (step S1704). The instance pin is a pin in an instance (macro). The use information of the instance pin is, for example, set in advance. However, the use information of the instance pin may be acquired from a control file described later. The control file is a parameter file related to lift control of the module terminal. A specific example of the control file will be described later with reference to FIG. 21.
[0206] Next, the design support server 601 acquires the wiring layer information of the instance pin (step S1705). The wiring layer information of the instance pin is, for example, set in advance. However, the wiring layer information of the instance pin may be acquired from a control file described later.
[0207] Then, the design support server 601 extracts the module terminal generation information of the macro corresponding to the acquired macro information from the module terminal generation library Lb2 (step S1706).
[0208] Next, the design support server 601 extracts information that matches the acquired pin information from the extracted module terminal generation information (step S1707).Then, the design support server 601 extracts information that matches the acquired instance pin usage information from the information extracted in step S1707 (step S1708).
[0209] Next, the design support server 601 extracts information that matches the wiring layer information of the instance pin from the information extracted in step S1708 (step S1709). Next, the design support server 601 extracts information that matches the acquired placement position information from the information extracted in step S1709 (step S1710).
[0210] Then, the design support server 601 creates a module terminal for the instance pin based on the information extracted in step S1710 (step S1711), and returns to the step that called the module terminal creation process.
[0211] This enables the design support server 601 to create a module terminal for the pin to be lifted in the macro.
[0212] Next, the module terminal raising processing procedure (interactive editor) of the design support server 601 will be described with reference to Fig. 18. The interactive editor is a process for creating a module terminal interactively (dialog-style) with the user.
[0213] Fig. 18 is a flowchart showing an example of a module terminal raising processing procedure (interactive editor) of the design support server 601. In the flowchart of Fig. 18, first, the design support server 601 reads the layout database 630 (step S1801). Next, the design support server 601 reads the module terminal generation library Lb2 (step S1802).
[0214] Then, the design support server 601 selects an instance to be placed or moved by a user operation (step S1803) Next, the design support server 601 determines the placement position of the selected instance by a user operation (step S1804).
[0215] Then, the design support server 601 judges whether the selected instance is a macro to be lifted (step S1805). If the selected instance is not a macro to be lifted (step S1805: No), the design support server 601 proceeds to step S1810.
[0216] On the other hand, if the macro is a target for lifting (step S1805: Yes), the design support server 601 selects unselected pin information from among the pin information in the selected instance (step S1806).Then, the design support server 601 determines whether the selected pin information is a target for lifting (step S1807).
[0217] If the pin is not a target pin for improvement (step S1807: No), the design support server 601 proceeds to step S1809. On the other hand, if the pin is a target pin for improvement (step S1807: Yes), the design support server 601 executes a module terminal creation process (step S1808).
[0218] Note that the specific processing steps of the module terminal creation process are similar to the processing steps shown in FIG. 17, and therefore illustration and description thereof will be omitted.
[0219] Next, the design support server 601 judges whether or not there is any unselected pin information among the pin information in the instance (step S1809). If there is any unselected pin information (step S1809: Yes), the design support server 601 returns to step S1806.
[0220] On the other hand, if there is no unselected pin information (step S1809: No), the design support server 601 judges whether the placement or movement process is completed (step S1810). If the placement or movement process is not completed (step S1810: No), the design support server 601 returns to step S1803.
[0221] On the other hand, if the placement or movement processing is completed (step S1810: Yes), the design support server 601 ends the series of processing according to this flowchart.
[0222] This allows the design support server 601 to create a module terminal for the pin to be lifted in the macro in a conversational (interactive) manner with the user.
[0223] Example 1 Next, a first embodiment will be described. In the first embodiment, a case where a macro library 620 is created according to an application to a target macro will be described. The macro library 620 can be created according to an application, such as antenna error suppression, electromigration suppression, and delay suppression.
[0224] Here, a library creation process procedure of the design support server 601 that creates the macro library 620 depending on the application will be described. However, the basic process procedure of the library creation process is the same as the library creation process procedure shown in Fig. 13. Here, of the library creation process procedures shown in Fig. 13, the macro common layer extraction process in step S1303 and the difference library creation process in step S1304 will be described with consideration of the application.
[0225] First, a specific procedure of the macro common layer extraction process according to the first embodiment will be described with reference to FIGS. 19A and 19B.
[0226] 19A and 19B are flowcharts illustrating an example of a specific processing procedure of the macro common layer extraction processing according to the embodiment 1. In the flowchart of FIG. 19A, first, the design support server 601 selects an unselected assumed placement position among assumed placement positions in the circuit to be designed (step S1901).
[0227] Next, the design support server 601 selects an unselected application (application application) from among a plurality of applications applicable to the macro (step S1902). Next, the design support server 601 selects an unselected wiring layer from a plurality of wiring layers for external connection applicable to the macro (step S1903).
[0228] Then, the design support server 601 determines the wiring layer and the placement position of the tentative I / O terminal in the tentative macro according to the selected wiring layer, taking into consideration the constraints corresponding to the selected application (step S1904). Next, the design support server 601 performs net wiring connection in the tentative macro (step S1905).
[0229] Then, the design support server 601 performs a timing check of the provisional macro (step S1906). Next, the design support server 601 performs a design rule check of the provisional macro (step S1907). Then, the design support server 601 keeps provisional physical macro library information of the created provisional macro (step S1908).
[0230] Next, the design support server 601 judges whether or not there is an unselected wiring layer among the multiple wiring layers (step S1909). If there is an unselected wiring layer (step S1909: Yes), the design support server 601 returns to step S1903.
[0231] On the other hand, if there is no unselected wiring layer (step S1909: No), the design support server 601 judges whether there is an unselected application (applicable application) among the multiple applications (step S1910). If there is an unselected applicable application (step S1910: Yes), the design support server 601 returns to step S1902.
[0232] On the other hand, if there is no unselected application (step S1910: No), the design support server 601 determines whether there is an unselected assumed placement position among the assumed placement positions in the circuit to be designed (step S1911). If there is an unselected assumed placement position (step S1911: Yes), the design support server 601 returns to step S1901.
[0233] On the other hand, if there is no unselected assumed arrangement position (step S1911: No), the design support server 601 proceeds to step S1912 shown in FIG. 19B.
[0234] 19B, first, the design support server 601 identifies a macro internal pattern corresponding to any combination of an assumed placement position, an application, and a wiring layer (step S1912). Next, the design support server 601 identifies a macro internal pattern corresponding to any other combination of an assumed placement position, an application, and a wiring layer (step S1913).
[0235] Then, the design support server 601 extracts a common pattern based on a result of comparing the identified macro internal patterns with each other (step S1914). Next, the design support server 601 determines whether or not there is a macro internal pattern with an unidentified assumed placement position (step S1915).
[0236] If there is a macro internal pattern at an unspecified assumed placement position (step S1915: Yes), the design support server 601 returns to step S1913. On the other hand, if there is no macro internal pattern at an unspecified assumed placement position (step S1915: No), the design support server 601 keeps the common pattern information (step S1916).
[0237] Next, the design support server 601 performs a timing check of the common pattern (step S1917).Then, the design support server 601 performs a design rule check of the common pattern (step S1918).Then, the design support server 601 outputs the timing check result of the common pattern to the timing library (step S1919).
[0238] Then, the design support server 601 outputs the common pattern physical macro library information to the physical macro library Lb1 (step S1920), and returns to the step that called the macro common layer extraction process.
[0239] This enables the design support server 601 to create multiple provisional macros taking into account the assumed placement position, application, and wiring layer of the target macro, extract common patterns representing the parts common between the provisional macros, and register them in the physical macro library Lb1.
[0240] Next, a specific procedure of the difference library creation process according to the first embodiment will be described with reference to FIG.
[0241] Fig. 20 is a flowchart illustrating an example of a specific processing procedure of the difference library creation processing according to the embodiment 1. In the flowchart of Fig. 20, first, the design support server 601 reads common pattern physical macro library information from the physical macro library Lb1 (step S2001).
[0242] Next, the design support server 601 selects an unselected application (applicable application) from among a plurality of applicable applications (step S2002). Next, the design support server 601 selects an unselected wiring layer from among a plurality of applicable wiring layers for external connection (step S2003).
[0243] Next, the design support server 601 selects an unselected assumed placement position among the assumed placement positions in the circuit to be designed (step S2004).Then, the design support server 601 extracts provisional physical macro library information corresponding to the selection state of the application, wiring layer, and assumed placement position from the provisional physical macro library information kept in step S1908 (step S2005).
[0244] Next, the design support server 601 extracts difference information (difference pattern) that indicates the difference between the read common pattern physical macro library information and the extracted tentative physical macro library information (step S2006).Then, the design support server 601 outputs the selected placement position (assumed placement position) and the extracted difference information to the module terminal generation library Lb2 in the macro library 620 (step S2007).
[0245] Next, the design support server 601 judges whether or not there is an unselected assumed placement position among the assumed placement positions in the circuit to be designed (step S2008). If there is an unselected assumed placement position (step S2008: Yes), the design support server 601 returns to step S2004.
[0246] On the other hand, if there is no unselected assumed placement position (step S2008: No), the design support server 601 judges whether there is an unselected wiring layer among the multiple wiring layers (step S2009). If there is an unselected wiring layer (step S2009: Yes), the design support server 601 returns to step S2003.
[0247] On the other hand, if there is no unselected wiring layer (step S2009: No), the design support server 601 judges whether there is an unselected application (applicable application) among the multiple applications (step S2010). If there is an unselected applicable application (step S2010: Yes), the design support server 601 returns to step S2002.
[0248] On the other hand, if there is no unselected application (step S2010: No), the design support server 601 returns to the step where the difference library creation process was called.
[0249] As a result, the design support server 601 can extract differences from the common pattern for each provisional macro created in consideration of the assumed placement position, application, and wiring layer, and register them in the module terminal generation library Lb2.
[0250] According to the first embodiment, the design support server 601 can create the macro library 620 according to the purpose, such as antenna error suppression, electromigration suppression, and delay suppression.
[0251] Example 2 Next, a second embodiment will be described. In the second embodiment, a control file will be described. The control file is a parameter file for defining the purpose and wiring layer to be applied to a macro. The design support server 601 may receive the input of the control file from, for example, a client terminal 602. The design support server 601 may also receive the input of the control file by, for example, a user's operation input using an input device (not shown).
[0252] 21 is an explanatory diagram showing a specific example of a control file. In FIG. 21, a control file 2100 includes default information 2110, macro setting information 2120, and instance setting information 2130.
[0253] Default information 2110 indicates the purpose name and wiring layer to be applied by default setting. The default information 2110 is applied to instance pins that are not defined by a macro key or an instance key. Here, the default information 2110 defines purpose: DELAY and wiring layer: M8.
[0254] Macro setting information 2120 is a setting for a macro, and defines a macro name, a pin name, a purpose name, and a wiring layer name. Macro setting information 2120 is applied to an instance pin that is not defined by an instance key. Here, in the macro setting information 2120, MACRO_A, purpose: DELAY for pin X, wiring layer: M6 are defined. Also, MACRO_B, purpose: DELAY for pin X, wiring layer: M6 are defined. Also, MACRO_C, purpose: DELAY for pin X, wiring layer: M6 are defined.
[0255] The instance setting information 2130 is a setting for an instance, and defines an instance name, a pin name, a purpose name, and a wiring layer name. Here, the instance setting information 2130 defines INSTANCE_A, purpose: DELAY, wiring layer: M4 for pin X. Also, INSTANCE_A, purpose: DELAY, wiring layer: M4 for pin A1. Also, INSTANCE_A, purpose: DELAY, wiring layer: M4 for pin A2.
[0256] The design support server 601 can control the lifting of the module terminals by, for example, referring to the control file 2100.
[0257] However, in order for a designer to create a control file (e.g., control file 2100), it is required that the designer recognize the parameters output to the module terminal generation library Lb2 and recognize the instances and library cells in the circuit to be designed (e.g., the lower layer of an LSI to be hierarchically designed). For this reason, some designers may find it difficult to create a control file.
[0258] Therefore, a method for supporting the creation of a control file will be described below. First, a method for supporting the creation of a control file by creating a template file that is easy for a designer to edit will be described with reference to FIG.
[0259] Fig. 22 is an explanatory diagram showing an example of a control file template. In Fig. 22, a control file template 2200 is an example of a template for a control file. The leading # in the control file template 2200 is treated as a comment line. In the control file template 2200, all information is output as comment lines (which will be edited later by a designer as necessary).
[0260] The control file template 2200 includes default setting information 2210, macro information 2220, and instance information 2230. In the default setting information 2210, macro pin information (all types of uses, wiring layers) used in the layout database 630 is output.
[0261] Further, the macro information 2220 outputs the use and wiring layer information of only the macro pin information used in the layout database 630. Further, the instance information 2230 outputs the use and wiring layer information of only the macro pin information used in the layout database 630.
[0262] A designer can create a control file corresponding to a circuit to be designed while editing the control file template 2200, thereby reducing the workload and time required compared to creating a control file from scratch. For example, a designer can easily create a desired control file by deleting unnecessary information from the control file template 2200.
[0263] Here, the control file template generation process procedure of the design support server 601 will be described with reference to FIG.
[0264] Fig. 23 is a flowchart showing an example of a control file template generation process procedure of the design support server 601. In the flowchart of Fig. 23, first, the design support server 601 reads the module terminal generation library Lb2 (step S2301). Next, the design support server 601 reads the layout database 630 (step S2302).
[0265] Then, the design support server 601 acquires application information from the module terminal generation library Lb2 (step S2303) Next, the design support server 601 acquires wiring layer information from the module terminal generation library Lb2 (step S2304).
[0266] Then, the design support server 601 acquires macro information existing in the module terminal generation library Lb2 from the layout database 630 (step S2305). Next, the design support server 601 acquires instance information existing in the module terminal generation library Lb2 from the layout database 630 (step S2306).
[0267] Next, the design support server 601 outputs default information to the control file template based on the acquired various information (step S2307). Next, the design support server 601 outputs macro information to the control file template based on the acquired various information (step S2308).
[0268] Then, the design support server 601 outputs instance information to the control file template based on the various acquired information (step S2309), and ends the series of processes according to this flowchart.
[0269] This allows the design support server 601 to create a control file template that is easy for the designer to edit, and supports the designer in creating the control file.
[0270] Next, a method for supporting the creation of a control file using an interactive editor will be described. Here, various operation screens displayed on the client terminal 602 when creating a control file using the interactive editor will be described. The user of the client terminal 602 is, for example, a designer of a circuit to be designed.
[0271] 24A and 24B are explanatory diagrams showing an example of an operation screen for creating a control file. In Fig. 24A, a ModulePin Set On MacroPin Window 2410 is an example of an operation screen displayed when creating a control file.
[0272] In the ModulePin Set On MacroPin Window 2410, when the user operates to select ParameterSet 2411 and press EXEC 2412, a parameter setting window 2420 (ModulePin Set On MacroPin File Set Window) is displayed.
[0273] In the parameter setting window 2420, the user can set various kinds of "DEFAULT" information by operating the DEFAULT column 2421 through operational input. Also, in the parameter setting window 2420, the user can set various kinds of "MACRO" information by operating the MACRO column 2422 through operational input.
[0274] In addition, in the parameter setting window 2420, the user can set various information for "INSTANCE" by operating the INSTANCE column 2423 through operational input. For each item in the categories (columns) of "DEFAULT", "MACRO", and "INSTANCE", it is possible to select information extracted from, for example, the layout database 630 or the module terminal generation library Lb2.
[0275] When the user presses ADD 2424 in the parameter setting window 2420, a parameter file window 2430 as shown in Fig. 24B is displayed. In the parameter file window 2430, the information set in each of the fields 2421 to 2423 is displayed.
[0276] In addition, in the parameter setting window 2420, when the user operates to press DELATE 2425, it is possible to delete the information (selected information) set in each of the fields 2421 to 2423. In addition, in the parameter setting window 2420, when the user operates to press ALL-CLEAR 2426, it is possible to delete all of the information set in each of the fields 2421 to 2423.
[0277] In addition, the information set in the layout data can be reflected by pressing SAVE 2427 through user input in the parameter setting window 2420. In addition, in the parameter setting window 2420, the user can input a file name in the FILE field 2428 through user input and press "OUT" or "OK" to output the file to a control file.
[0278] Next, a module terminal raising process procedure including input of a control file will be described with reference to FIGS. 25A and 25B.
[0279] 25A and 25B are flowcharts illustrating an example of a module terminal raising process procedure according to the embodiment 2. In the flowchart of FIG. 25A, first, the design support server 601 reads the layout database 630 (step S2501). Then, the design support server 601 reads the module terminal generation library Lb2 (step S2502).
[0280] Next, the design support server 601 reads the input control file (step S2503). Then, the design support server 601 sets the default information of the control file to the target instance pin (step S2504). The default information of the control file corresponds to, for example, the default information 2110 shown in FIG. 21.
[0281] Next, the design support server 601 sets the macro pin information of the control file to the target instance pin (step S2505). The macro pin information of the control file corresponds to, for example, the pin information in the macro setting information 2120 shown in FIG.
[0282] Next, the design support server 601 sets the instance pin information of the control file to the target instance pin (step S2506). The instance pin information of the control file corresponds to, for example, the pin information in the instance setting information 2130 shown in FIG.
[0283] Then, the design support server 601 refers to the layout database 630 and selects unselected net information from the net information of the circuit to be designed (step S2507). Next, the design support server 601 determines whether the selected net information is an inter-hierarchical net (step S2508).
[0284] If it is not an inter-hierarchical net (step S2508: No), the design support server 601 proceeds to step S2517 shown in Fig. 25B. On the other hand, if it is an inter-hierarchical net (step S2508: Yes), the design support server 601 proceeds to step S2509 shown in Fig. 25B.
[0285] In the flowchart of FIG. 25B, first, the design support server 601 refers to the layout database 630 and selects unselected instance information from among the instance information within the net (step S2509).
[0286] Next, the design support server 601 judges whether the selected instance information is a macro to be lifted (step S2510). If the selected instance information is not a macro to be lifted (step S2510: No), the design support server 601 proceeds to step S2516.
[0287] On the other hand, if the macro is a lift target macro (step S2510: Yes), the design support server 601 determines whether the selected instance information has been placed (step S2511). If the instance information has not been placed (step S2511: No), the design support server 601 proceeds to step S2516.
[0288] On the other hand, if the instance information has been placed (step S2511: Yes), the design support server 601 selects unselected pin information from among the pin information in the instance (step S2512).Then, the design support server 601 determines whether the selected pin information is a pin to be lifted (step S2513).
[0289] If the pin is not a target pin for improvement (step S2513: No), the design support server 601 proceeds to step S2515. On the other hand, if the pin is a target pin for improvement (step S2513: Yes), the design support server 601 executes a module terminal creation process (step S2514). The specific processing procedure of the module terminal creation process is the same as the processing procedure shown in FIG. 17, and therefore illustration and description thereof will be omitted.
[0290] Next, the design support server 601 judges whether or not there is any unselected pin information among the pin information in the instance (step S2515). If there is any unselected pin information (step S2515: Yes), the design support server 601 returns to step S2512.
[0291] On the other hand, if there is no unselected pin information (step S2515: No), the design support server 601 judges whether there is any unselected instance information among the instance information in the net (step S2516). If there is any unselected instance information (step S2516: Yes), the design support server 601 returns to step S2509.
[0292] On the other hand, if there is no unselected instance information (step S2516: No), the design support server 601 judges whether there is any unselected net information among the net information of the circuit to be designed (step S2517). If there is any unselected net information (step S2517: Yes), the design support server 601 returns to step S2507 shown in FIG. 25A.
[0293] On the other hand, if there is no unselected net information (step S2517: No), the design support server 601 ends a series of processes according to this flowchart.
[0294] This allows the design support server 601 to create a module terminal in accordance with the purpose and wiring layer of the instance pin specified in the control file (instance setting information, macro setting information, or default information).
[0295] Next, a module terminal raising process procedure (interactive editor) including input of a control file will be described with reference to FIGS. 26A and 26B.
[0296] 26A and 26B are flowcharts showing an example of a module terminal raising process procedure (interactive editor) according to the second embodiment. In the flowchart of FIG. 26A, first, the design support server 601 reads the layout database 630 (step S2601). Next, the design support server 601 reads the module terminal generation library Lb2 (step S2602).
[0297] Then, the design support server 601 reads the input control file (step S2603). Next, the design support server 601 sets the default information of the control file to the target instance pin (step S2604). Next, the design support server 601 sets the macro pin information of the control file to the target instance pin (step S2605). Next, the design support server 601 sets the instance pin information of the control file to the target instance pin (step S2606).
[0298] Then, the design support server 601 selects an instance to be placed or moved by a user operation (step S2607). Next, the design support server 601 determines the placement position of the selected instance by a user operation (step S2608).
[0299] Then, the design support server 601 judges whether the selected instance is a macro to be lifted (step S2609). If the selected instance is not a macro to be lifted (step S2609: No), the design support server 601 proceeds to step S2614.
[0300] On the other hand, if the macro is a target for lifting (step S2609: Yes), the design support server 601 selects unselected pin information from among the pin information in the selected instance (step S2610).Then, the design support server 601 determines whether the selected pin information is a target for lifting (step S2611).
[0301] If the pin is not a target pin for improvement (step S2611: No), the design support server 601 proceeds to step S2613. On the other hand, if the pin is a target pin for improvement (step S2611: Yes), the design support server 601 executes a module terminal creation process (step S2612).
[0302] Note that the specific processing steps of the module terminal creation process are similar to the processing steps shown in FIG. 17, and therefore illustration and description thereof will be omitted.
[0303] Next, the design support server 601 judges whether or not there is any unselected pin information among the pin information in the instance (step S2613). If there is any unselected pin information (step S2613: Yes), the design support server 601 returns to step S2610.
[0304] On the other hand, if there is no unselected pin information (step S2613: No), the design support server 601 judges whether the placement or movement process is completed (step S2614). If the placement or movement process is not completed (step S2614: No), the design support server 601 returns to step S2607.
[0305] On the other hand, if the placement or movement processing is completed (step S2614: Yes), the design support server 601 ends the series of processing according to this flowchart.
[0306] This allows the design support server 601 to create module terminals in a conversational (interactive) manner with the user in accordance with the purpose and wiring layer of the instance pins specified in the control file.
[0307] 27A and 27B, various operation screens displayed on the client terminal 602 when inputting a control file will be described. The user of the client terminal 602 is, for example, a designer of a circuit to be designed.
[0308] 27A and 27B are explanatory diagrams showing an example of an operation screen for inputting a control file. In Fig. 27A, a ModulePin Set On MacroPin Window 2710 is an example of an operation screen displayed when inputting a control file.
[0309] In the ModulePin Set On MacroPin Window 2710, when the user operates to select ParameterSet 2711 and press EXEC 2712, a parameter setting window 2720 (ModulePin Set On MacroPin File Set Window) is displayed.
[0310] In the parameter setting window 2720, the user can input a file name (here, " / test1 / data / parameter_file") in the FILE column 2721 and press "IN" and "OK" to import the control file.
[0311] When the control file is imported, a Parameter File Window 2730 is displayed as shown in Fig. 27B. This allows the user to check the contents of the control file. In addition, when the user presses SAVE 2722 in the parameter setting window 2420, the information can be reflected in the layout data.
[0312] Example 3 Next, a third embodiment will be described. In the third embodiment, a case where a check is performed to see if a module terminal is lifted correctly will be described. First, a case where a check is performed to see if a module terminal is lifted correctly using a batch program will be described with reference to Figs. 28A and 28B.
[0313] 28A and 28B are flowcharts illustrating an example of a module terminal check process according to the embodiment 3. In the flowchart of FIG. 28A, first, the design support server 601 reads the layout database 630 (step S2801). Then, the design support server 601 reads the module terminal generation library Lb2 (step S2802).
[0314] Next, the design support server 601 reads the input control file (step S2803). Then, the design support server 601 sets the default information of the control file to the target instance pin (step S2804). Next, the design support server 601 sets the macro pin information of the control file to the target instance pin (step S2805). Next, the design support server 601 sets the instance pin information of the control file to the target instance pin (step S2806).
[0315] Then, the design support server 601 refers to the layout database 630 and selects unselected net information from the net information of the circuit to be designed (step S2807). Next, the design support server 601 determines whether the selected net information is an inter-hierarchical net (step S2808).
[0316] If it is not an inter-hierarchical net (step S2808: No), the design support server 601 proceeds to step S2818 shown in Fig. 28B. On the other hand, if it is an inter-hierarchical net (step S2808: Yes), the design support server 601 proceeds to step S2809 shown in Fig. 28B.
[0317] In the flowchart of FIG. 28B, first, the design support server 601 refers to the layout database 630 and selects unselected instance information from among the instance information within the net (step S2809).
[0318] Next, the design support server 601 judges whether the selected instance information is a macro to be lifted (step S2810). If the selected instance information is not a macro to be lifted (step S2810: No), the design support server 601 proceeds to step S2817.
[0319] On the other hand, if the macro is a lift target macro (step S2810: Yes), the design support server 601 initializes a placement check table (not shown) to "not placed" (step S2811). Then, the design support server 601 determines whether the selected instance information has been placed (step S2812). If the instance information has not been placed (step S2812: No), the design support server 601 proceeds to step S2817.
[0320] On the other hand, if the instance information has been placed (step S2812: Yes), the design support server 601 selects unselected pin information from among the pin information in the instance (step S2813).Then, the design support server 601 determines whether the selected pin information is a pin to be lifted (step S2814).
[0321] If the pin is not a target pin for lifting (step S2814: No), the design support server 601 proceeds to step S2816. On the other hand, if the pin is a target pin for lifting (step S2814: Yes), the design support server 601 executes a check process (step S2815). A specific procedure for the check process will be described later with reference to FIG. 29.
[0322] Next, the design support server 601 judges whether or not there is any unselected pin information among the pin information in the instance (step S2816). If there is any unselected pin information (step S2816: Yes), the design support server 601 returns to step S2813.
[0323] On the other hand, if there is no unselected pin information (step S2816: No), the design support server 601 judges whether there is any unselected instance information among the instance information in the net (step S2817). If there is any unselected instance information (step S2817: Yes), the design support server 601 returns to step S2809.
[0324] On the other hand, if there is no unselected instance information (step S2817: No), the design support server 601 judges whether there is any unselected net information among the net information of the circuit to be designed (step S2818). If there is any unselected net information (step S2818: Yes), the design support server 601 returns to step S2807 shown in FIG. 28A.
[0325] On the other hand, if there is no unselected net information (step S2818: No), the design support server 601 outputs error information (step S2819) and ends the series of processes according to this flowchart.
[0326] Next, a specific procedure for the check process in step S2815 will be described with reference to FIG.
[0327] Fig. 29 is a flowchart showing an example of a specific processing procedure of the check processing. In the flowchart of Fig. 29, first, the design support server 601 acquires module terminal information based on the information of the module terminal generation library Lb2 of the corresponding macro / pin defined in the control file read in step S2803 (step S2901).
[0328] This module terminal information is information on the module terminal (for example, the layout pattern of terminals including the module terminal) created for the corresponding macro / pin by the module terminal creation process of the design support server 601. Note that the specific process contents for acquiring the module terminal information are the same as the module terminal creation process procedure shown in Fig. 17, and therefore illustration and description thereof will be omitted.
[0329] Next, the design support server 601 acquires module terminal information of the macro / pin (step S2902). This module terminal information is, for example, information on the module terminal of the macro / pin arranged in the physical design of the circuit to be designed, and is specified from the layout database 630.
[0330] Then, the design support server 601 judges whether the patterns of the module terminal information acquired in step S2901 and the module terminal information acquired in step S2902 match (step S2903). If the patterns match (step S2903: Yes), the design support server 601 returns to the step that called the check process.
[0331] On the other hand, if the patterns do not match (step S2903: No), the design support server 601 executes a use information acquisition process (step S2904). The use information acquisition process is a process for acquiring information on the use and wiring layer defined in the module terminal generation library Lb2 from the module terminal information of the macro / pin. A specific processing procedure of the use information acquisition process will be described later with reference to FIG. 30.
[0332] Then, the design support server 601 stores the error information (step S2905) and returns to the step that called the check process. The error information includes, for example, information that identifies the macro / pin with the pattern mismatch in step S2903. The error information corresponds to, for example, the check result 3100 shown in FIG. 31 described later.
[0333] Next, a specific procedure for the use information acquisition process in step S2904 will be described with reference to FIG.
[0334] 30A and 30B are flowcharts showing an example of a specific processing procedure of the usage information acquisition process. In FIG. 30A, first, the design support server 601 acquires the placement information of the instance (step S3001). Note that the instance is an instance identified from the instance information selected in step S2809 shown in FIG. 28B.
[0335] Next, the design support server 601 acquires macro information of the instance (step S3002). Next, the design support server 601 acquires pin information of the instance (step S3003). Then, the design support server 601 acquires module terminal information of the instance pin (step S3004).
[0336] Next, the design support server 601 acquires module terminal top layer information of the instance pin (step S3005). The module terminal top layer information is information that specifies the top layer on which the module terminal is arranged. Then, the design support server 601 extracts module terminal generation information of the corresponding macro from the module terminal generation library Lb2 (step S3006).
[0337] Next, the design support server 601 extracts information that matches the acquired instance placement information and pin information from the extracted module terminal generation information (step S3007).Then, the design support server 601 extracts information that matches the top layer of the acquired instance pin module terminal information from the information extracted in step S3007 (step S3008).
[0338] Next, the design support server 601 extracts use information from the information extracted in step S3008 (step S3009), and proceeds to step S3010 shown in FIG. 30B.
[0339] 30B, first, the design support server 601 selects module terminal information for any one of the applications from the application information extracted in step S3009 (step S3010). Then, the design support server 601 determines whether the pattern of the module terminal information acquired in step S3004 matches that of the selected module terminal information (step S3011).
[0340] If the patterns match (step S3011: Yes), the design support server 601 proceeds to step S3013. On the other hand, if the patterns do not match (step S3011: No), the design support server 601 determines whether or not there is module terminal information for an unselected purpose from the extracted purpose information (step S3012).
[0341] Here, if there is module terminal information for an unselected purpose (step S3012: Yes), the design support server 601 returns to step S3010. On the other hand, if there is no module terminal information for an unselected purpose (step S3012: No), the design support server 601 keeps the purpose information whose module terminal information matches in step S3011 (step S3013), and returns to the step where the purpose information acquisition process was called. The kept purpose information may be included in the error information stored in step S2905 shown in FIG. 29, for example.
[0342] Fig. 31 is an explanatory diagram showing a specific example of a check result. In Fig. 31, a check result 3100 includes SUMMARY information 3110, error instance pin detail information 3120, and unplaced information 3130. The SUMMARY information 3110 includes the check result, the number of check instances, the number of check instance pins, the number of unplaced instances, the number of unplaced instance pins, and the number of error instance pins.
[0343] The check result indicates the result of the check process ("OK" or "NG"). The number of checked instances indicates the number of instances checked. The number of checked instance pins indicates the number of instance pins checked. The number of unplaced instances indicates the number of unplaced instances (number of unplaced instances / total number of instances). The number of unplaced instance pins indicates the number of unplaced instance pins (number of unplaced instance pins / total number of instance pins). The number of error instance pins indicates the number of erroneous instance pins (number of error instance pins / number of placed instance pins).
[0344] The error instance pin detailed information 3120 indicates detailed information of the error instance pin. The error instance pin detailed information 3120 includes (definition information (use information, wiring layer information)) and (layout information (use information, wiring layer information)) of the error instance pin.
[0345] According to the error instance pin detail information 3120, for example, it can be seen that the wiring layer of the instance pin AX of macro A is different between the definition information (control file) and the layout information. Also, it can be seen that the usage of the instance pin BX of macro B is different between the definition information (control file) and the layout information.
[0346] The unplaced instances are shown in the unplaced information 3130. According to the unplaced information 3130, it can be seen that the instances C and D of the macro A are unplaced, and the instance E of the macro B is unplaced.
[0347] Here, various operation screens displayed on the client terminal 602 when checking whether the module terminals are correctly raised will be described with reference to Fig. 32. The user of the client terminal 602 is, for example, a designer of a circuit to be designed.
[0348] Fig. 32 is an explanatory diagram showing an example of an operation screen for checking a module terminal. In Fig. 32, a ModulePin Set On MacroPin Window 3210 is an example of an operation screen displayed when checking a module terminal.
[0349] When the user selects CHECK 3211 and presses EXEC 3212 in the ModulePin Set On MacroPin Window 3210, a Check Result Window 3220 is displayed. In the Check Result Window 3220, for example, the check result 3100 shown in FIG.
[0350] This allows the user (designer) to check whether there are any differences between the definition information (control file) and the layout information. For example, when the user (designer) modifies the contents of a control file or recreates a control file, the user (designer) can check whether they forgot to redo the physical design (relayout).
[0351] If an error is detected as a result of checking whether the module terminals are correctly raised, the error is corrected. Here, the case where the error is corrected will be explained. First, the case where the error is corrected by the batch version program will be explained with reference to FIG. 33.
[0352] Fig. 33 is a flowchart illustrating an example of an error portion correcting process procedure according to the embodiment 3. In the flowchart of Fig. 33, first, the design support server 601 reads the layout database 630 (step S3301). Then, the design support server 601 reads the module terminal generation library Lb2 (step S3302).
[0353] Next, the design support server 601 reads the check result of the promoted module terminal (step S3303). The check result of the promoted module terminal is, for example, the check result 3100 shown in Fig. 31. Then, the design support server 601 refers to the check result and sets the error instance pin as the target instance pin (step S3304).
[0354] Next, the design support server 601 sets a use for the error instance pin (step S3305). The use is identified, for example, from the check result read in step S3303. Next, the design support server 601 sets a wiring layer for the error instance pin (step S3306). The wiring layer is identified, for example, from the check result read in step S3303.
[0355] Then, the design support server 601 selects an unselected error instance pin from the target instance pins (step S3307). Next, the design support server 601 acquires module terminal generation information corresponding to the purpose and wiring layer set for the error instance pin from the module terminal generation library Lb2 (step S3308).
[0356] Then, the design support server 601 creates a module terminal for the error instance pin based on the acquired module terminal generation information (step S3309). Next, the design support server 601 determines whether or not there is an unselected error instance pin among the target instance pins (step S3310).
[0357] If there is an error instance pin (step S3310: Yes), the design support server 601 returns to step S3307. On the other hand, if there is no error instance pin (step S3310: No), the design support server 601 ends the series of processes according to this flowchart.
[0358] This allows the design support server 601 to automatically correct any erroneous locations where the module terminals are not raised correctly.
[0359] Next, a case where an error portion or the like is corrected using the interactive editor will be described. Here, various operation screens displayed on the client terminal 602 when an error portion or the like is corrected using the interactive editor will be described. The user of the client terminal 602 is, for example, a designer of the circuit to be designed.
[0360] Fig. 34 is an explanatory diagram showing an example of an operation screen for correcting an error portion. In Fig. 34, a check result window 3400 (Check Result Window) includes the check result of whether the module terminal is correctly raised or not.
[0361] When the user selects REPAIR 3411 and presses EXEC 3412 in the check result window 3400, the design support server 601 executes an error correction process (see FIG. 33). When the error correction process is completed, for example, a module terminal check process (see FIGS. 28A and 28B) is executed again, and the check result is displayed in the check result window 3400.
[0362] Fig. 35 is an explanatory diagram showing an example of an operation screen for correcting a non-placement portion. In Fig. 35, a check result window 3400 (Check Result Window) includes the check result of whether the module terminal is correctly raised or not.
[0363] When the user selects PLACE 3501 in the check result window 3400, the instance to be placed can be selected from "3. DETAIL INFO UNPLACED INSTANCE" in the check result. Here, it is assumed that instance C of macro A is selected (part 3502 in FIG. 35).
[0364] In this case, a Placement Editor MAP 3510 is displayed, and the user can place the instance C of the macro A on the screen. For example, in the Placement Editor MAP 3510, the user can place the instance C at any position by inputting an operation.
[0365] As described above, according to the design support server 601 of the embodiment, for a target macro of a multi-layer structure to be placed in a circuit to be designed, a provisional macro can be created for each placement position included in a plurality of placement positions that can be placed according to the power supply structure of the circuit to be designed. The provisional macro represents a placement pattern of terminals of each layer in the target macro according to the placement position. The target macro is, for example, a macro connected to a clock net among macros in the circuit to be designed. Then, according to the design support server 601, based on a result of comparing the placement patterns of the created provisional macros, a common pattern representing a portion common between the provisional macros is extracted, and a difference pattern representing a difference from the extracted common pattern is extracted from the created provisional macro for each placement position, and the common pattern and the extracted difference pattern for each placement position can be registered in the macro library 620 in association with the target macro.
[0366] This allows the design support server 601 to create a library of formal macros that are common to the provisional macros for each placement position that can be placed according to the power supply structure of the circuit to be designed. Also, the design support server 601 can register the difference patterns between the provisional macros for each placement position and the common patterns as components. For example, the design support server 601 can provide the target macros up to the portion that is not affected by the placement position as the physical macro library Lb1, and provide the non-common portion as the module terminal generation library Lb2.
[0367] Furthermore, according to the design support server 601, when placing a target macro in a first placement position among a plurality of placement positions during physical design of a circuit to be designed, a module terminal for a lifting target terminal in the target macro can be created based on a common pattern and a differential pattern corresponding to the first placement position with reference to the macro library 620. The lifting target terminal is a terminal of a wiring layer (the uppermost layer for the terminals) to which wiring with the outside is connected.
[0368] This allows the design support server 601 to facilitate the design of circuits including module terminals. For example, the design support server 601 can create a terminal arrangement pattern on the layout side from a common pattern registered as a formal macro and a difference pattern according to the actual arrangement position, and can appropriately generate module terminals for connecting between layers in an LSI hierarchical design.
[0369] Moreover, the design support server 601 can create a provisional macro for each combination of a plurality of uses applicable to the target macro and each of a plurality of placement positions. Furthermore, the design support server 601 can extract a common pattern representing a portion common between the provisional macros based on a result of comparing placement patterns between the created provisional macros, and can extract a difference pattern representing a difference between the extracted common pattern and the created provisional macro for each combination of use and placement position. Then, the design support server 601 can register the common pattern and the difference pattern for each combination of use and placement position in the macro library 620 in association with the target macro.
[0370] This enables the design support server 601 to create a library from which a terminal structure can be selected according to the application, assuming that macros will be used for various purposes such as antenna error suppression, electromigration suppression, and delay suppression.
[0371] In addition, according to the design support server 601, when placing a target macro in a first placement position of multiple placement positions for a first use of multiple uses, the macro library 620 can be referenced to create a module terminal based on a common pattern and a differential pattern corresponding to the combination of the first use and the first placement position.
[0372] This allows the design support server 601 to create a layout pattern of a terminal structure that takes into account the application, and generate an optimal module terminal according to the macro layout position and application. Also, the design support server 601 can increase flexibility during design and improve user convenience.
[0373] Moreover, the design support server 601 can create a provisional macro for each combination of each wiring layer of a plurality of wiring layers for external connection applicable to the target macro and each placement position of a plurality of placement positions. Furthermore, the design support server 601 can extract a common pattern representing a portion common between the provisional macros based on a result of comparing placement patterns between the created provisional macros, and can extract a difference pattern representing a difference from the extracted common pattern from the created provisional macro for each combination of the wiring layer and the placement position. Then, the design support server 601 can register the common pattern and the difference pattern for each combination of the wiring layer and the placement position in the macro library 620 in association with the target macro.
[0374] This enables the design support server 601 to create a library that allows selection of a terminal structure according to the applicable wiring layer, assuming that various wiring layers will be applied depending on the connection destination circuit (circuit on another hierarchical level).
[0375] In addition, according to the design support server 601, when placing a target macro at a first placement position among multiple placement positions on a first wiring layer of multiple wiring layers, a module terminal can be created based on a common pattern and a differential pattern corresponding to the combination of the first wiring layer and the first placement position by referring to the macro library 620.
[0376] This allows the design support server 601 to create a layout pattern of a terminal structure that takes into account the applicable wiring layer, and generate an optimal module terminal according to the macro layout position and wiring layer. Also, the design support server 601 can increase flexibility during design and improve user convenience.
[0377] Furthermore, the design support server 601 can accept input of a control file (e.g., the control file 2100) in which a first use to be applied to a target macro among a plurality of uses is defined. Then, the design support server 601 can refer to the macro library 620 and create a module terminal based on a difference pattern corresponding to the combination of the first use and the first use defined in the input control file when placing the target macro in the first placement position during physical design of the circuit to be designed.
[0378] This allows the design support server 601 to specify the purpose to be applied to the target macro. For example, the designer can arbitrarily specify the purpose to be applied to the target macro by defining the purpose in the control file.
[0379] Furthermore, the design support server 601 can accept input of a control file (e.g., the control file 2100) in which a first wiring layer to be applied to a target macro among a plurality of wiring layers is defined. Then, the design support server 601 can refer to the macro library 620 and create a module terminal based on a difference pattern corresponding to a combination of the first wiring layer and the first placement position defined in the input control file when placing the target macro in the first placement position during physical design of the circuit to be designed.
[0380] This allows the design support server 601 to specify the wiring layer to be applied to the target macro. For example, the designer can specify the wiring layer to be applied to the target macro as desired by defining the wiring layer in the control file. For example, if a designer of a lower hierarchy uses up to layer M7 in the lower hierarchy and uses layer M8 and above in the highest hierarchy, the designer specifies the wiring layer to be applied to the target macro as "layer M8".
[0381] For these reasons, even when creating a module terminal in a higher layer, the design support server 601 can appropriately generate the module terminal on the layout side so as to satisfy strict pattern constraints up to the module terminal, without providing a macro (physical macro library Lb1) for each placement position or finalizing the placement at the time of logical design. For example, by raising the module terminal, the design support server 601 can perform wiring by viewing connection information of the entire net in the highest layer, and can perform wiring patterns that take into consideration the entire net, such as a clock net. Furthermore, the design support server 601 can shorten the LSI design period by making it easier to design lower layers in the LSI hierarchical design.
[0382] The module terminal design method described in this embodiment can be realized by executing a prepared program on a computer such as a personal computer or a workstation. The module terminal design program is recorded on a computer-readable recording medium such as a hard disk, flexible disk, CD-ROM, DVD, or USB memory, and is executed by being read from the recording medium by the computer. The module terminal design program may also be distributed via a network such as the Internet.
[0383] In addition, the information processing device 101 (design support server 601) described in this embodiment can also be realized by application-specific ICs such as standard cells or structured ASICs (Application Specific Integrated Circuits) or PLDs (Programmable Logic Devices) such as FPGAs.
[0384] The following supplementary notes are further disclosed regarding the above-described embodiment.
[0385] (Additional Note 1) For a target macro having a multi-layer structure to be placed in a circuit to be designed, a provisional macro is created which represents a placement pattern of terminals of each layer in the target macro for each placement position among a plurality of placement positions which can be placed in accordance with a power supply structure of the circuit to be designed; extracting a common pattern representing a portion common between the provisional macros based on a result of comparing arrangement patterns between the provisional macros; extracting a difference pattern representing a difference between the created provisional macro and the extracted common pattern for each of the arrangement positions; registering the common pattern and the differential pattern for each of the extracted arrangement positions in a library in association with the target macro; when placing the target macro at any one of the plurality of placement positions during physical design of the design target circuit, creating a module terminal for a lift target terminal in the target macro based on the common pattern and a differential pattern corresponding to any one of the placement positions with reference to the library; A module terminal design program that causes a computer to execute processing.
[0386] (Note 2) creating the provisional macro for each combination of a plurality of uses applicable to the target macro and a respective placement position of the plurality of placement positions; extracting a common pattern representing a portion common between the provisional macros based on a result of comparing arrangement patterns between the provisional macros; extracting a difference pattern representing a difference between the extracted common pattern and the created provisional macro for each combination; registering the common pattern and the differential pattern for each of the extracted combinations in a library in association with the target macro; when placing the target macro at any one of the placement positions for any one of the plurality of uses, creating the module terminal based on the common pattern and a difference pattern corresponding to a combination of any one of the uses and any one of the placement positions, with reference to the library; 2. A module terminal design program according to claim 1, characterized in that the program causes the computer to execute processing.
[0387] (Note 3) creating the provisional macro for each combination of each of a plurality of wiring layers for external connection applicable to the target macro and each of the plurality of placement positions; extracting a common pattern representing a portion common between the provisional macros based on a result of comparing arrangement patterns between the provisional macros; extracting a difference pattern representing a difference between the extracted common pattern and the created provisional macro for each combination; registering the common pattern and the differential pattern for each of the extracted combinations in a library in association with the target macro; when placing the target macro at any one of the plurality of placement positions in any one of the plurality of wiring layers, creating the module terminal based on the common pattern and a differential pattern corresponding to a combination of the any one of the wiring layers and the any one of the placement positions, with reference to the library; 3. The module terminal design program according to claim 1 or 2.
[0388] (Supplementary Note 4) The module terminal design program according to any one of Supplementary Notes 1 to 3, wherein the target macro is, for example, a macro connected to a clock net among the macros in the circuit under design.
[0389] (Supplementary Note 5) The module terminal design program according to any one of Supplementary Notes 1 to 4, wherein the module terminal is a module terminal in the same layer, with the same shape, and in the same arrangement position as the lift target terminal.
[0390] (Supplementary Note 6) The module terminal design program according to any one of Supplementary Notes 1 to 5, wherein the lifting target terminal is a terminal of a wiring layer to which wiring between the target macro and an external device is connected.
[0391] (Appendix 7) A process of receiving an input of a control file in which a use to be applied to the target macro among the plurality of uses is defined, and causing the computer to execute the process; The process of creating the module terminal comprises: The module terminal design program according to claim 2, characterized in that, when placing the target macro at any one of the placement positions, the library is referenced and the module terminal is created based on a difference pattern corresponding to a combination of the purpose defined in the input control file and any one of the placement positions.
[0392] (Appendix 8) A process is made to execute the computer, which receives an input of a control file in which a wiring layer to be applied to the target macro among the plurality of wiring layers is defined; The process of creating the module terminal comprises: 4. The module terminal design program according to claim 3, characterized in that, when placing the target macro at any one of the placement positions, the library is referenced and the module terminal is created based on a differential pattern corresponding to a combination of the wiring layer defined in the input control file and any one of the placement positions.
[0393] (Appendix 9) For a target macro having a multi-layer structure to be placed in a circuit to be designed, a provisional macro is created which represents a placement pattern of terminals of each layer in the target macro for each placement position included in a plurality of placement positions which can be placed in accordance with a power supply structure of the circuit to be designed; extracting a common pattern representing a portion common between the provisional macros based on a result of comparing arrangement patterns between the provisional macros; extracting a difference pattern representing a difference between the created provisional macro and the extracted common pattern for each of the arrangement positions; registering the common pattern and the differential pattern for each of the extracted arrangement positions in a library in association with the target macro; when placing the target macro at any one of the plurality of placement positions during physical design of the design target circuit, creating a module terminal for a lift target terminal in the target macro based on the common pattern and a differential pattern corresponding to any one of the placement positions with reference to the library; A module terminal design method, characterized in that processing is executed by a computer.
[0394] (Appendix 10) For a target macro having a multi-layer structure to be placed in a circuit to be designed, a provisional macro is created which represents a placement pattern of terminals of each layer in the target macro for each placement position included in a plurality of placement positions which can be placed in accordance with a power supply structure of the circuit to be designed; extracting a common pattern representing a portion common between the provisional macros based on a result of comparing arrangement patterns between the provisional macros; extracting a difference pattern representing a difference between the created provisional macro and the extracted common pattern for each of the arrangement positions; registering the common pattern and the differential pattern for each of the extracted arrangement positions in a library in association with the target macro; when placing the target macro at any one of the plurality of placement positions during physical design of the design target circuit, creating a module terminal for a lift target terminal in the target macro based on the common pattern and a differential pattern corresponding to any one of the placement positions with reference to the library; An information processing device comprising a control unit. [Explanation of symbols]
[0395] 101 Information processing device 102 Circuit to be designed 103 Target Macro 104 Common Patterns 106,511,512,521,522,531,532 Terminals 107,1201,1202,1203,1204,1205,1206 Module Terminals 110 Library 200 chips 201,202,203 Blocks 500,1200 circuits 510,520,530 Macro 600 Design Support System 601 Design Support Server 602 Client terminals 610 Network 620 Macro Library 630 Layout Database 700 Bus 701 CPU 702 Memory 703 Disk Drive 704 Disk 705 Communication I / F 706 Portable Recording Media I / F 707 Portable Recording Media 800 Control section 801 Acquisition Department 802 First Creation Section 803 Registration Department 804 Second Creation Division 805 Output section 910,920,930 Differential Pattern 1000 Format 1100 Module Terminal Generation Information 2100 Control File 2200 Control File Template Lb1 Physics Macro Library Lb2 module terminal generation library
Claims
1. For a target macro having a multi-layer structure to be placed in a circuit under design, a provisional macro is created which represents a placement pattern of terminals of each layer in the target macro for each placement position included in a plurality of placement positions which can be placed in accordance with a power supply structure of the circuit under design; extracting a common pattern representing a portion common between the provisional macros based on a result of comparing arrangement patterns between the provisional macros that have been created; extracting a difference pattern representing a difference between the extracted common pattern and the created provisional macro for each of the arrangement positions; registering the common pattern and the differential pattern for each of the extracted arrangement positions in a library in association with the target macro; when placing the target macro at any one of the plurality of placement positions during physical design of the design target circuit, creating a module terminal for a lift target terminal in the target macro based on the common pattern and a differential pattern corresponding to any one of the placement positions with reference to the library; A module terminal design program that causes a computer to execute processing.
2. creating the provisional macro for each combination of a plurality of uses applicable to the target macro and a respective placement position among the plurality of placement positions; extracting a common pattern representing a portion common between the provisional macros based on a result of comparing arrangement patterns between the provisional macros that have been created; extracting a difference pattern representing a difference between the extracted common pattern and the created provisional macro for each combination; registering the common pattern and the differential pattern for each of the extracted combinations in a library in association with the target macro; when placing the target macro at any one of the placement positions for any one of the plurality of uses, creating the module terminal based on the common pattern and a difference pattern corresponding to a combination of any one of the uses and any one of the placement positions, with reference to the library; 2. The module terminal design program according to claim 1, wherein the program causes the computer to execute processing.
3. creating the provisional macro for each combination of each of a plurality of wiring layers for external connection applicable to the target macro and each of the plurality of placement positions; extracting a common pattern representing a portion common between the provisional macros based on a result of comparing arrangement patterns between the provisional macros that have been created; extracting a difference pattern representing a difference between the extracted common pattern and the created provisional macro for each combination; registering the common pattern and the differential pattern for each of the extracted combinations in a library in association with the target macro; when placing the target macro at any one of the plurality of placement positions in any one of the plurality of wiring layers, creating the module terminal based on the common pattern and a differential pattern corresponding to a combination of the any one of the wiring layers and the any one of the placement positions, with reference to the library; 3. The module terminal design program according to claim 1, wherein the module terminal design program is a program for designing a module terminal.
4. For a target macro having a multi-layer structure to be placed in a circuit under design, a provisional macro is created which represents a placement pattern of terminals of each layer in the target macro for each placement position included in a plurality of placement positions which can be placed in accordance with a power supply structure of the circuit under design; extracting a common pattern representing a portion common between the provisional macros based on a result of comparing arrangement patterns between the provisional macros that have been created; extracting a difference pattern representing a difference between the extracted common pattern and the created provisional macro for each of the arrangement positions; registering the common pattern and the differential pattern for each of the extracted arrangement positions in a library in association with the target macro; when placing the target macro at any one of the plurality of placement positions during physical design of the design target circuit, creating a module terminal for a lift target terminal in the target macro based on the common pattern and a differential pattern corresponding to any one of the placement positions with reference to the library; A module terminal design method, characterized in that processing is executed by a computer.
5. For a target macro having a multi-layer structure to be placed in a circuit under design, a provisional macro is created which represents a placement pattern of terminals of each layer in the target macro for each placement position included in a plurality of placement positions which can be placed in accordance with a power supply structure of the circuit under design; extracting a common pattern representing a portion common between the provisional macros based on a result of comparing arrangement patterns between the provisional macros that have been created; extracting a difference pattern representing a difference between the extracted common pattern and the created provisional macro for each of the arrangement positions; registering the common pattern and the differential pattern for each of the extracted arrangement positions in a library in association with the target macro; when placing the target macro at any one of the plurality of placement positions during physical design of the design target circuit, creating a module terminal for a lift target terminal in the target macro based on the common pattern and a differential pattern corresponding to any one of the placement positions with reference to the library; An information processing device comprising a control unit.
Citation Information
Patent Citations
Wiring method for semiconductor integrated circuit device
JP1992142060A