Semiconductor circuit design and unit pin layout
The method optimally places unit pins by determining their intersection with the unit boundary from the center point, addressing inefficiencies in existing chip design methods, and ensuring efficient wiring and constraint adherence.
Patent Information
- Application Number
- JP2022574463
- Authority / Receiving Office
- JP · JP
- Patent Type
- Patents
- Current Assignee / Owner
- Priority Date
- 2020-07-02
- Filing Date
- 2021-05-19
- Publication Date
- 2026-01-14
- Estimated Expiration
- 2041-05-19
AI Technical Summary
Existing semiconductor chip design methods struggle with optimizing the placement of unit pins due to the complexity of wiring and internal unit structures, leading to inefficient interconnections and suboptimal wiring lengths between units.
A method and system for optimally placing unit pins by determining the intersection of a line extending from the center point of a unit through a chip pin location, considering the unit's boundary, and iteratively placing pins while avoiding overlaps, using design constraint information to prioritize placement on available metal layers.
Enables flexible and optimized placement of unit pins throughout the chip design process, ensuring efficient wiring and adherence to timing and layout constraints, supporting both initial and later phases of chip development.
Smart Images

Figure 0007798448000001 
Figure 0007798448000002 
Figure 0007798448000003
Abstract
Description
[Technical Field]
[0001] The present invention relates generally to semiconductor chip layout, and more particularly to semiconductor circuit design that places unit pins on the boundaries of units in a semiconductor circuit. [Background technology]
[0002] Proper chip design remains one of the areas where experience is extremely important, even though developers and chip designers are supported by highly sophisticated tools and abstraction languages, such as VHDL (Very High-speed integrated circuit Hardware Description Language). Typically, large and complex semiconductor circuits and chip configurations are designed not by a single developer or small team, but by multiple teams working on different units of a semiconductor chip. At the beginning of the design process, multiple teams focusing on different functional units may only loosely collaborate; that is, they begin designing their own units without incorporating direct requirements from other units. However, in later stages of the design, different teams can cooperate to optimize the final semiconductor product. For example, wiring between different units using different signal paths on different metal layers can be designed later in the development process. Furthermore, collaboration between different teams can optimize the final product. For example, the positions of various units relative to each other are considered to achieve short wiring lengths between different units during the wiring phase. If the second unit is placed "south" of the first unit, then in the optimal case, the connecting wiring between the first and second units should not exit the "north" side of the first unit.
[0003] As an additional aspect, it can be taken into account that some changes to the pinout of a unit may occur very late in the design process. Therefore, the method for interconnecting units on a newly designed chip may need to be very flexible, yet at the same time allow for a high degree of optimization. In this context, it should be noted that the units of the chip under design consist of several blocks, such as macros (e.g., regression analysis and linear models (RLMs)), registers, and caches), which are combined into units. Multiple units may be built as cores or complete semiconductor chips. To connect units to each other or to input / output (I / O) pins, unit pins located at the boundaries of the units serve as the endpoints for electrical connections to other units. During the initial phase of development, unit pins may be defined and placed, but they may not initially have electrical connections to the units.
[0004] Patent document 1 discloses "a method, system, and computer-readable medium that enable an efficient design process for integrated circuits, and in particular, describes a tool that enables an integrated circuit designer to visualize an integrated circuit design without combinational logic and, from such visualization, identify the location in the design of common node logical connections."
[0005] Furthermore, Patent Document 2 discloses an "electronic design automation system" that provides optimization of a Register-Transfer Level (RTL) model of an electronic design "to generate detailed constraints and data that precisely define the requirements for the back-end flow that leads to design creation," and discloses that "the system takes the RTL model of the electronic design and maps it into an efficient high-level hierarchical representation of the design's hardware implementation."
[0006] However, despite the teachings of Patent Documents 1 and 2, problems remain with positioning unit pins due to the complexity of wiring optimization. In the best case, the wiring between units and the internal structure of the units should be taken into consideration when optimizing the metal wiring layers. Therefore, a mechanism for optimally placing unit pins during the chip design process is needed. [Prior art documents] [Patent documents]
[0007] [Patent Document 1] U.S. Patent Application Publication No. 2016 / 0232275 A1 [Patent Document 2] U.S. Patent Application Publication No. 2006 / 0053396 A1 Summary of the Invention
[0008]
[0003] Embodiments of the present disclosure address the need for a method for optimally placing unit pins during a chip design process for a semiconductor circuit. One aspect of the present disclosure provides a method for designing a semiconductor circuit in a manner that optimally places unit pins by taking into account wiring between units and the internal structure of the units when optimizing metal wiring layers. The method includes receiving pin location data, the pin location data including chip pin locations of chip pins within a chip region outside the unit to which the unit pin is configured to be electrically connected. The method further includes determining coordinates of a center point of the unit, determining the location of a line extending from the center point of the unit through the chip pin location, and placing the unit pin at a point of intersection where a boundary of the unit intersects with the line extending from the center point of the unit through the chip pin location.
[0009] An additional aspect of the method for designing a semiconductor circuit may further include defining lines extending from a center point of a unit through chip pin locations by a function, and varying at least one parameter of the function until overlap of the placement of the unit pins with previously placed unit pins is avoided, thereby preventing placement of multiple unit pins in the same location on the boundary of the unit.
[0010] Another aspect of the method for designing a semiconductor circuit may further include iteratively placing a plurality of unit pins, the order in which the unit pins are placed being prioritized based on design constraint information. In some embodiments, the design constraint information includes a set of metal layer locations within the semiconductor circuit available for placing the unit pins thereon. Optionally, the availability of the set of metal layer locations for placing the unit pins thereon can be based on the length of a line extending between the chip pin and the unit pin, and the method includes sorting the unit pins according to the length of a line extending between the chip pin and each unit pin to be placed.
[0011] According to another aspect of the present disclosure, a system for designing a semiconductor circuit may be provided. The system may include a receiver configured to receive pin location data, where the pin location data may include chip pin locations of chip pins within a chip region outside a unit to which the unit pins are electrically connected. Additionally, the system may include a determination module configured to determine coordinates of a center point of the unit, a second determination module configured to determine the location of a line extending from the center point of the unit through the chip pin location, and a positioning module configured to position the unit pin at a point of intersection where a boundary of the unit intersects with the line extending from the center point of the unit through the chip pin location.
[0012] Furthermore, embodiments may take the form of an associated computer program for designing semiconductor circuits accessible from a computer-usable or computer-readable medium that provides program code for use by or in connection with a computer or any instruction execution system. For purposes of this description, a computer-usable or computer-readable medium may be any apparatus that may include means for storing, communicating, propagating, or transporting a program for use by or in connection with an instruction execution system, apparatus, or device.
[0013] Another aspect of the present disclosure includes a computer system including at least one processor, a semiconductor design system coupled to the at least one processor, the semiconductor design system including a receiver, a first determination module, a second determination module, and a location module, and a computer-readable storage medium coupled to the at least one processor, the computer-readable storage medium including program instructions for performing a computer-implemented method including receiving, by the at least one processor, pin location data from the receiver, the pin location data including chip pin locations of chip pins within a chip area located outside a unit to which the unit pins are configured to be electrically connected, receiving, by the at least one processor, coordinates of a center point of the unit determined by the determination module, location, by the at least one processor, a line extending from the center point of the unit to the chip pin location, and instructing, by the at least one processor, placement of the unit pin on a boundary of the unit such that the line extending from the center point of the unit to the chip pin location intersects the boundary of the unit.
[0014] An additional aspect of the present disclosure includes a computer-implemented method, the method including: receiving, by a processor, a chip pin coordinate file comprising x and y coordinates of a unit and x and y coordinates of a chip pin; establishing, by the processor, a center point of the unit based on the x and y coordinates of the unit; extending, by the processor, a pin line from the center point of the unit to the x and y coordinates of the chip pin; identifying, by the processor, an intersection point where the pin line intersects a boundary of the unit as the pin line extends from the center point of the unit to the x and y coordinates of the chip pin; confirming, by the processor, that a pin is not located at the intersection point; and, upon confirming that the pin is not located at the intersection point, placing, by the processor, the unit pin on the boundary of the unit at the intersection point.
[0015] Embodiments of the present invention are described with reference to various subject matters. In particular, some embodiments are described with reference to method-type claims, while other embodiments are described with reference to apparatus, computer program product, or system-type claims. However, those skilled in the art will infer from the above and following description that, unless otherwise indicated, any combination of features belonging to one type of subject matter, as well as any combination between features relating to different subject matters, in particular between features of method, system, computer program product, and apparatus-type claims, is considered to be disclosed within this document.
[0016] The above-defined aspects and further aspects of the present invention will be apparent from and will be explained with reference to the example embodiments described hereinafter, to which the invention is not limited.
[0017] Preferred embodiments of the present invention will now be described, by way of example only, with reference to the following drawings, in which: [Brief explanation of the drawings]
[0018] [Figure 1]1 shows a flowchart describing one embodiment of a semiconductor circuit design method for placing unit pins on boundaries of units of a semiconductor circuit. [Figure 2] 1 shows a diagram of an exemplary embodiment of a unit, describing the positioning of unit pins and chip pins located inside the unit. [Figure 3] 10 shows a diagram of another exemplary embodiment illustrating the arrangement of unit pins and chip pins. [Figure 4] (a) shows a diagram of one embodiment showing several units of a semiconductor circuit configured to be electrically connected on a semiconductor die, and (b) shows a diagram of an alternative embodiment of a semiconductor die showing multiple units configured to be electrically connected on the semiconductor die. [Figure 5A] 1 shows a flowchart describing one embodiment of a method for unit pin placement in a semiconductor circuit. [Figure 5B] 1 shows a flowchart describing an alternative embodiment of a method for placing unit pins in a semiconductor circuit. [Figure 6] 5A and 5B and / or using semiconductor circuits designed as described herein. [Figure 7] 1 shows a block diagram of an embodiment of a system for designing semiconductor circuits. [Figure 8] 8 illustrates an embodiment of a computing system comprising a system according to FIG. 7. DETAILED DESCRIPTION OF THE INVENTION
[0019] In the context of this description, the following conventions, terms and / or expressions may be used.
[0020] The term "unit pin" refers to a connection point of a functional unit of a semiconductor circuit (chip), and the unit pins are located on the boundary (typically rectangular) of the unit. All unit pins combined can define the interface of the unit with the rest of the chip. A semiconductor circuit may typically comprise multiple units that can be selectively connected to each other.
[0021] The term "boundary" refers to the border of a unit, for example, a rectangle or another shape that forms a perimeter around the unit. In some embodiments, the geometric shape of the unit may be convex.
[0022] The term "unit" refers to a functional grouping of interacting devices within a semiconductor circuit or chip. Units may be connected using metal layers within the chip, allowing them to be connected to other unit pins of other units that form the semiconductor circuit.
[0023] The term "semiconductor circuit" refers to an interconnected set of semiconductor devices integrated on a carrier material. For example, the carrier material may include a semiconductor bulk material, a substrate, and / or an insulator. A semiconductor circuit may include multiple semiconductor devices, which may be interconnected using multiple metal wiring layers. In some cases, millions of semiconductor devices may be interconnected at once. In some embodiments, subgroups of semiconductor devices may be combined into units within a complete device.
[0024] The term "chip pin" refers to a connection point within a semiconductor device of a larger integrated semiconductor circuit. In some cases, only the location of the chip pin is known (based on a need-to-know basis). It may not be necessary to know which unit the chip pin belongs to in order to establish a connection within the semiconductor device. In some embodiments, the chip pin may be connected to an I / O pin. "I / O pin" may refer to a connector located on the outer surface of the chip. In cases where the chip pin location may not yet be known, the coordinates of the associated unit may be used instead.
[0025] The term "center point" refers to a geometric balance point. In some embodiments, the center point may be the center point of the unit. In embodiments where the boundary of the unit is rectangular, the center point may be the intersection of two diagonals extending from the corners (i.e., vertices) at the ends of the rectangle (e.g., as shown in FIG. 2).
[0026] The term "line" refers to a geometric line that extends infinitely in both directions, or in some cases extends between two points on a geometric plane and / or between planes. For example, a line extending from the center point of a unit to a chip pin. The line may be straight, or in some embodiments, curved.
[0027] The term "intersection" refers to the location where a line extending from the center of the unit through the chip pin location crosses the unit boundary. In other words, the point where the line crosses the unit boundary.
[0028] The disclosed computer-implemented semiconductor circuit design methods, systems, and computer program products for positioning unit pins on a semiconductor circuit may provide multiple advantages, technical effects, contributions, and / or improvements.
[0029] Embodiments of the present disclosure, including methods, computer program products, and systems, may provide optimized placement of unit pins during various phases of chip design. By integrating a view of the unit itself and the orientation of the chip pins in the design, embodiments of the present disclosure enable determining the optimal location of unit pins on the unit boundary.
[0030] The proposed solution described by the embodiments herein is helpful and useful not only at the beginning of the design process but also in later phases of the design process. Even in cases where a unit nearly needs to be integrated into the final chip design, additional pins can be placed to establish additional connections between units. For example, for a unit with a rectangular boundary, a semiconductor circuit may be designed by selecting unit pin locations along a line extending from the center of the unit through the chip pins to establish electrical connections. However, in some cases, other pins may have been previously placed in the proposed unit pin locations or regions, and those locations or regions are blocked and cannot accommodate the desired unit pin location. Embodiments of the present disclosure can recognize whether the region at the intersection is blocked by another pin. For example, this is due to the presence of another unit pin, a power pin, or a clock pin. Embodiments of the present disclosure can help find the next available location for a unit pin or search higher metal layers for an available location in which to place a unit pin.
[0031] In later phases of chip design, chip developers may use detailed timing descriptions of interfaces and circuits. Following these phases of chip design, embodiments of the present disclosure support placing unit pins to reflect those timing requirements. For example, this may be by placing unit pins on metal layers that can support those timing requirements. For critical connections, higher, more expensive metal layers may be used that can allow faster interconnects and interconnects over longer distances.
[0032] Thus, the embodiments of the present disclosure described herein may allow a highly flexible solution for optimized placement of new unit pins and repositioning of pre-existing unit pins during later phases of the semiconductor design process.
[0033] Described below are embodiments applicable to methods and related systems and computer program products.
[0034] In some embodiments, the center point of the unit may correspond to the geometric center or centroid of the area of the unit. In particular, if the shape of the unit is a simple geometric shape, the geometric center or centroid of the unit may be a practical choice because the center can be easily determined. For example, a rectangle or a triangle because their mathematical centers can be determined. This may also be true for unit designs with convex shapes.
[0035] According to some embodiments, the center point of another unit may be used as a chip pin location. This may be particularly useful if the other unit is not immediately next to or adjacent to the unit on which the unit pin is located. Optionally, the pin to which the chip pin location belongs may be an input / output pin, i.e., a connection to the outside of the integrated semiconductor device. Essentially, any location that may be describable by a netlist of the integrated semiconductor device may be used as a chip pin location.
[0036] According to an exemplary embodiment of the method, the unit may have a convex geometric shape, and more specifically, the geometric shape may be rectangular. However, other forms and shapes are also possible, such as an L-shape or a U-shape. In the case of such alternative shapes, a specialized definition and determination method for the center or center point of the unit may be used to ensure that the internal connection points, to which the unit pins are intended to connect, are inside the unit boundary. In general, a concave shape may have its center of gravity (which may also be used as the center of the unit shape) outside the unit boundary, so consideration of the unit shape may be considered.
[0037] According to some embodiments, the line extending from the center point of the unit to (or through) the chip pin may be a straight line that intersects the center point of the unit and the chip pin. Extending a straight line across the unit is the easiest way to determine the intersection of the line with the border or boundary of the unit; for example, the point where two lines intersect. Alternatively, according to other embodiments, the line may be defined by a function defined by the planes that form the surface of the semiconductor in the xy plane. For example, the function may be a polynomial function in the notation y=F(x) (or a function such as sin, tan, e x , ..., etc.). The embodiments described herein may vary at least one parameter of the function until overlap between the to-be-placed unit pin and a previously placed unit pin is avoided, thus preventing a new unit pin and an existing unit pin from being placed in the same location.
[0038] In additional embodiments, the unit boundary may have theoretically available positions along the unit boundary, and these positions may have a predefined regular grid distance from each other such that the closest one of the theoretically available positions of intersection between the boundary and a line passing from the center through the chip pin may be selected (based on either a line or a function).
[0039] The embodiments described herein may also include iteratively placing a plurality of unit pins, and the order in which the unit pins are placed may also be based on design constraint information. The design constraint information that influences the placement of the unit pins may include timing constraints, VDD voltage (V dd The constraints may include the location of voltage drains (Voltage Drains) and / or grounds, blockage areas, etc. Different connections required for chip pins may have different constraints. Therefore, it may be useful to first place unit pins on a semiconductor circuit with stricter basic constraints or constraints that are more difficult to meet. In some embodiments, the constraint on placing unit pins may be a preselected side of the unit border. For example, a chip designer may preselect or predetermine a particular side of a unit (top, bottom, left, right) for high-level reasons.
[0040] According to another embodiment, the design constraint information may also include a set of metal layer locations within the semiconductor circuit that may be usable for placing unit pins (e.g., in combination with available locations on unit boundaries). As a result, the constraints may be complex and have multiple dependencies. Predefined rules may help establish the best priorities and, therefore, an optimized order for the iterative approach. In some embodiments, the set of usable metal layer locations may be determined based on the lengths of the lines between the chip pins and the unit pins to be placed on the semiconductor. In addition, the method may include sorting the unit pins to be placed on the semiconductor according to the lengths of the lines between the chip pins and the respective unit pins. Moreover, in some embodiments, the determination of usable metal layer locations based on length may be reflected as a constraint and may be considered in combination with one or more additional constraints described by the constraint information as discussed in detail above.
[0041] FIG. 1 illustrates an exemplary embodiment of a flowchart of a semiconductor circuit design method 100 for placing unit pins on the boundaries of units of a semiconductor circuit (i.e., a chip designed by the method). During step 102 of method 100, pin location data is received. The pin location data may be received as part of net information, otherwise referred to as a "netlist." The pin location data may include a description of at least one chip pin location within a chip region located outside the boundaries of the units to which the unit pins are configured to electrically connect. Examples of chip locations described by the location data may include a description as x- and y-coordinates and a description as a relative location on the semiconductor (e.g., the lower left corner of the semiconductor circuit). The actual unit and other units may be connected to the same network of interconnected components (called one or more "nets"). However, in some cases, the chip pin may represent the location of another unit, or the chip pin may be an I / O pin of the chip (i.e., a pin that connects outside the chip).
[0042] In step 104 of method 100, coordinates of a unit center point are determined, and in step 106, the location of a line extending from or intersecting the unit center point to (or through) a chip pin location is determined. By way of example, the line determined in step 106 may be a straight line in some cases or a polynomial line, which may include one or more curved features. In step 108, method 100 may place a unit pin at the intersection of the line and the unit boundary (i.e., where the line from step 106 intersects the unit boundary). For example, placing the unit pin at the intersection of the line and the unit boundary may be performed by selecting a new unit pin location from a netlist. This process of method 100 can be used throughout a chip design and is not limited to a particular phase of the chip design process. It should be noted that in an exemplary embodiment, the unit pin location can be located between the center of the unit and a chip pin.
[0043] FIG. 2 shows a diagram 200 of an exemplary unit 202. As shown, diagram 200 shows pin 212 inside unit 202, as well as chip pin 218 and / or alternative chip pin 220. It is assumed that pin 212 of a subunit of unit 202 (shown as a rectangle inside unit 202) can be connected to chip pin 218 or 220. As a result, the question is where to place unit pins 214, 216, and 217 on boundary 204 of unit 202. Placing unit pin 214 at the location shown on the top boundary of boundary 204 of unit 202, or alternatively placing unit pin 214 on the left side of boundary 204 (not shown), may seem straightforward, as this may be considered the shortest path from pin 212 to boundary 204. However, such a construction of unit 202 would be disadvantageous because the wiring from unit pin 214 to either chip pin 218 or chip pin 220 would have to detour around the border of unit 202.
[0044] As a result, in accordance with the proposed embodiment, either unit pin 216 or unit pin 217 could be placed on the "south" border of unit boundary 204, depending on whether a connection is to be established to chip pin 218 or chip pin 220. Thus, if a connection is made to chip pin 218, the already placed unit pin 214 is moved to unit pin 216, as indicated by dashed line 214a. As shown, the method for locating unit pin 216 is by constructing line 208 from center point 206 of unit 202 to chip pin 218 (and similarly by line 210 to chip pin 220, in the case where a connection is made to chip pin 220). The unit pin 216 is placed at a point of intersection (i.e., a crossing point) along the boundary 204 (the edge of the unit between its center point 206 and the chip pin 218), and the border of the boundary 204 that is intersected by a line drawn from the center point 206 of the unit 202 to the chip pin 218 is selected.
[0045] 3 shows a diagram 300 of another exemplary arrangement of unit pins 216 and chip pins 218. Determining the intersection between line 208 and boundary 204 may be done by determining the slope of line 208 between center point 206 of unit 202 and chip pin 218. The x-side relationship (Δx k / Δx s ) is the relationship on the y side (Δy k / Δy s )=k. Therefore, the intersection points (or crossing points) on the vertical boundary 204 of the unit 202 are equal to x PinxA ≦x Center of Gravity , then x cross =x unitline can be determined as Therefore, y cross =k * Δy s +y Center_of_Gravity Alternatively, if the intersection point is on the horizontal boundary 204 of the unit 202, then y cross =y unit border and x cross =k *Δx s +y Center of Gravity is.
[0046] Information determining the intersection points on boundary 204 based on the location of center point 206 and chip pins 218, 220 may be compiled in a chip pin coordinate file. The chip design determines where nets (i.e., in the netlist) first connect to units 202 (i.e., where each resource is placed) or where they terminate (i.e., where sinks are placed). This is valid for nets between units 202, but also between units 202 and chip connectors, e.g., I / O pins.
[0047] An example of such an associated pin-tip coordinate file format is: Net name (net_name), xy-coordinate-unit (core), xy-pin-coordinate within the unit (core) It can be said that:
[0048] In other cases, the pin-tip coordinate file may be managed in the following format: Net name (net_name), xy-coordinate-chip, xy-pin-coordinate within the chip, Net name (net_name), xy-coordinate-buffer (inventor), xy-pin-coordinate within the buffer or converter.
[0049] If the exact pin locations on the chip are not known, only the x and y coordinates of the units may be available in the chip pin coordinate file. The algorithm will use this information accordingly.
[0050] As mentioned above, other connection lines between the center of gravity of the unit 202 and the external pins, i.e., the chip pins 218 and 220, may be used in addition to straight lines. For example, polynomial functions, including square functions, or higher-dimensional functions, or types of lines with one or more edges and / or curves may be used. These functions may intersect the center of the unit 202 and the chip pins 218 and 220. In addition, the difference between the unit pin 214, 216, and 217 positions determined by the proposed method described herein and other exemplary embodiments for determining intersection points (e.g., by linear functions) may be minimal. Furthermore, the semiconductor design may take into account the absence of overlaps with power or other signal pin lines. Therefore, the determined unit pin 214, 216, and 217 positions may be moved to available pin positions, for example, according to a predefined distance of the unit pins or a predefined grid of the unit pins, to avoid conflicts with other constraints and pin placements.
[0051] 4(a) and 4(b) show diagrams 400 and 401 comprising multiple units A-G configured to be electrically connected on a semiconductor die 420. FIG. 4(a) illustrates units A, B, C, D, E, F, and G for a better understanding of unit pin placement in accordance with the proposed embodiments described herein. The aspect ratio of the sides of each unit A-G can determine the lengths of diagonals 407, 409, 410, and 412 passing through the center points of units A-G. These separate chip regions resulting from the diagonals 407, 409, 410, and 412 passing through the centers of units A-G form four subregions 402, 404, 406, and 408 (triangles or other resulting shapes that can be cut at the chip die boundary), referred to herein as "diagonals." This occurs so that each unit side relates to a larger region and a smaller region. It can be assumed that all nets of units A through G are connected to chip pins that are placed in one of these four subregions 402, 404, 406, 408 during the design of a particular unit A, B, C, D, E, F, or G. The location of the chip pin determines on which side of unit A through G (i.e., on which border of the unit border) the unit pin should be placed.
[0052] The concept of four diagonal regions is used to determine how many unit pins can be placed per unit edge. The number of these pins corresponds to the number of chip pins in this region. However, this feature can be considered optional, since it is not necessarily required to determine in which diagonal region the chip pins will be placed, since the lines (see above) determine the correct edge of the unit for unit pin placement. If, instead of an endless line, a distance line is drawn from the center of the unit to the unit pin, the correct border edge of the unit boundary can be determined automatically.
[0053] An example illustrating the diagonal region concept is shown in Figure 4(b). In this case, unit F is connected to chip pins. For example, the bottom edge of unit F determines the region between diagonals 410 and 412, which determines which unit pins should be placed on the bottom border of unit F. Similarly, in Figure 4(a), chip pins placed within the diagonal region comprising region 404, formed between diagonals 407 and 409, can have their corresponding unit pins placed on the border running along the bottom edge of unit B. Chip pins within region 406, as formed by diagonals 407 and 409, can have their unit pins placed along the border line of the right edge of unit B.
[0054] FIG. 5A shows a flowchart 500 illustrating one embodiment of a method for placing unit pins in a semiconductor. A list 502 comprising chip pin locations, net names, unit identifiers, and optionally one or more additional details is used and read to begin the placement procedure (504). In step 506, the center point of the unit is determined. In step 508, the procedure begins with the first unit pin. In step 510, a determination is made of the location of the pin line (i.e., line 208, as shown in FIG. 2) between the unit center point and the chip pin location. In step 512, a determination is made of the intersection between the pin line and the boundary of the unit (i.e., as shown by unit pins 216 and 217 in FIG. 2). In step 514, the unit pin is placed on the determined intersection or the unit pin is moved to the intersection location.
[0055] During step 516, a determination is made as to whether all unit pins have been placed. If all of the unit pins have not been placed, the method returns to step 508 and begins with the next unplaced unit pin. Conversely, if a determination is made in step 516 that all unit pins have been placed, the procedure proceeds to step 518 and ends. In some embodiments, upon completion of step 518 of the method for designing a semiconductor circuit, the design of the semiconductor circuit may be output and / or stored as physical data (i.e., semiconductor design data). Embodiments of the semiconductor design data describing the semiconductor circuit may be used in fabricating the semiconductor circuit on a physical chip according to the design described by the semiconductor design data, for example, according to the method of fabrication described by flowchart 600 below.
[0056] FIG. 5B shows a flowchart 520 illustrating an alternative embodiment of a method for designing a semiconductor. In this alternative embodiment, the method may further consider the appropriate metal layers of the semiconductor. This is because pins can be placed only on metal layers available for each unit. In principle, metal layers are selected depending on the length of the pin-to-pin distance due to the pin lines (lines between the unit center and the chip pins). It should be noted that a limited, predefined number of metal layers may be available for a unit, and only a small number of them (typically the top four of eight layers) may be used for unit pins. For this reason, pin lines may be assigned to buckets related to the number of available metal layers of the semiconductor. The buckets may then be sorted into groups by length. Sorting may be performed in multiple ways, including top-down or bottom-up (i.e., by increasing or decreasing length).
[0057] 5B may begin at step 522, where a list is generated comprising chip pin locations, at least one net name, available locations for unit pins, required unit pins, one or more constraints (e.g., net cost reflecting the constraints), and optionally one or more additional variables. The procedure begins at step 524, where a determination of the center point of the unit is made at step 526.
[0058] In step 528, all of the pin lines are determined and assigned according to the length-based bucket to which the pin lines are assigned. In some embodiments, additional input may be provided in step 530 according to which bucket is assigned to a particular pin line and the corresponding selected metal layer. In step 532, all of the buckets are sorted according to their length, either top-down or bottom-up. In step 534, a first bucket is selected and the first run begins with the first bucket.
[0059] In step 536, the first (or next) pin line is selected. The intersection point is determined and the unit pin is moved to the newly determined intersection point. In step 538, a determination is made whether all pin lines have been addressed for the bucket selected in step 534. If all of the pin lines have not been addressed, the procedure returns to step 536 and continues with the next pin line to plot the next intersection point for unit pin placement. Otherwise, if a determination is made in step 538 that all pin lines have been completed for the selected bucket, the method may proceed to step 540. In step 540, it is further determined whether all buckets have been addressed. If all of the buckets for the unit have not been addressed, the method returns to step 534 and continues with the next bucket assigned to the next available metal layer of the semiconductor. Similarly, if it is determined in step 540 that all buckets have been completed, the method proceeds to step 542 and ends. In some embodiments, upon completion of step 542 of the method for designing a semiconductor circuit, the design of the semiconductor circuit may be output and / or stored as physical data. An embodiment of the semiconductor design data describing the semiconductor circuit may be used to fabricate the semiconductor circuit onto a physical chip according to the design described by the semiconductor design data, for example, by the method of fabrication described by flowchart 600 below.
[0060] FIG. 6 shows flowchart 600 illustrating a method for fabricating a semiconductor circuit using physical design data for the semiconductor circuit designed according to one or more method steps described by flowcharts 500, 520 and / or embodiments described in detail herein. The method embodiment illustrated by flowchart 600 may, in some cases, be a continuation of the semiconductor circuit design steps described by embodiments of flowchart 500 or flowchart 520. For example, in these situations, there may be seamless integration between the semiconductor circuit design output by the method for designing a semiconductor circuit as described herein and fabricating the semiconductor circuit according to the semiconductor design data. In alternative cases, the semiconductor design phase and fabrication phase may be performed by separate and / or distinct entities. For example, the designer and fabricator may be different individuals, businesses, corporations, firms, etc. In situations where the semiconductor circuit designer and fabricator are separate entities, the semiconductor designer may design the semiconductor circuit according to one or more method steps described by flowcharts 500, 520 and / or as described herein to generate semiconductor circuit design data describing the semiconductor design as output of the method for designing a semiconductor circuit. The semiconductor circuit design data can be provided to a fabricator. Based on the semiconductor circuit design data, the fabricator can fabricate the semiconductor circuit onto a physical chip according to the provided semiconductor design, as illustrated by one or more method steps set forth in flowchart 600.
[0061] In step 602 of Flowchart 600, semiconductor circuit design data is obtained or provided that is based (at least in part) on the design(s) of the semiconductor design output by one or more steps of the method described by Flowchart 500 and / or Flowchart 520. Using the semiconductor circuit design data obtained or provided in step 602, an embodiment of the semiconductor circuit can be fabricated according to one or more known processes, as generally described by the steps of Flowchart 600. Generally, a wafer with multiple copies of the final semiconductor circuit design can be fabricated and cut (diced) in a manner such that each die cut from the wafer contains one copy of the semiconductor circuit. In step 604, the process of fabricating the semiconductor circuit can include creating a mask for lithography based on the finalized physical layout of the semiconductor circuit. In step 606, a wafer is fabricated using the mask generated in step 604 to photolithograph and etch the semiconductor circuit onto each die of the wafer. The individual dies of the wafer containing the fabricated copies of the semiconductor circuit can be diced into individual dies. In step 608, each individual die comprising a semiconductor circuit may be tested and sorted to remove any potentially defective die.
[0062] As mentioned above, a set of constraints may also be reflected in determining the correct unit pin locations on the unit boundary. Signal slack and slew can be taken into account in addition to other net constraints. With a timing model available and additional per-pin assertions, it is possible to determine the wire code and metal layer and assign the appropriate metal layer to the pin. Often, there are problems where the semiconductor design user only knows the timing information for a given unit or core. However, as mentioned above, the user can receive the xy location of the unit and, for each connected net, a pin-tip coordinate file that stores its location. With respect to the timing model, the arrival time t ATFarEndare stored in the pin-tip coordinate file. Additionally, the associated near-end arrival time t ATNearEnd Using this, the embodiments described herein calculate the available net timing delay Δt net =t ATFarEnd -end t ATNearEnd It can be determined as:
[0063] Using the timing model and net lengths, the algorithm determines, for each net, the best metal layer to use for routing and pins. Using the timing given above, the available timing delay Δt for the net is calculated. net In some cases, the algorithm may use, for example, the resistive-capacitive (RC) delay of each metal layer (which typically depends on the size of the metal line in both directions) and the selected width to calculate the layer and width RC delay Δt LayerWidth Using both information components, the algorithm "knows" the details of the technology used, such as Δt LayerWidth >Δt net To achieve this, we select the best routing constraints for a given net, and also for a pin.
[0064] In some embodiments, logic describing which net connections and interfaces are available between different units on a chip may be provided as part of a netlist, a pin-chip coordinate file, and / or pin location data. Some embodiments described herein may be adapted to use a logic model to obtain information about each net source(s) or sink(s) of a semiconductor. Netlist information may also be used to obtain placement information for the chip.
[0065] In some embodiments, all of the logic is placed on a schematic of the chip, and the schematic (or floor plan, f t ) is currently a Logic releaset Logic development can be a parallel development process. Within the logic of the chip schematic, interfaces are defined between units on the chip, but the implementations are sometimes not in the same time frame (e.g., do not have the same timestamp). In some cases, nets are not fully connected. However, even though the nets in the semiconductor are not fully connected, the logic contained within the chip schematic defines the incoming and outgoing connections from which the interfaces of the subnets are connected. In some other cases, the chip is designed to accommodate new logic l t+1 and floor plans t Based on this, new locations for the unit pins can be determined. The proposed concepts can help to do this. Therefore, the proposed concepts can be used not only at the beginning of the semiconductor wiring process, but also at the end and / or at different development steps of the chip. In some cases, unit pins may already be placed on units when single logic blocks are not yet fully defined, resulting in interfaces between logic blocks that are not yet fully defined in the basic model. As a result, a logical description of the interface nets may be sufficient to use the proposed concepts described herein.
[0066] Referring to the drawings, Figure 7 shows a block diagram of an embodiment of a semiconductor circuit design system 700 for placing unit pins on the boundaries of units of a semiconductor circuit. The system 700 includes a receiver, specifically a receiver 702, adapted to receive pin location data. An embodiment of the pin location data can include chip pin locations for chip pins within areas of the chip that are outside of the units to which the unit pins are configured to be electrically connected. The pin location data can be provided by an underlying netlist that describes the locations and connections between selected active and passive electronic components of the chip.
[0067] An embodiment of the system 700 may further include a first determining means including a first determining module 704 configured or adapted to determine the coordinates of a center point of the unit, and may include a second determining module 706 adapted or configured to determine a line intersecting the unit center point and the chip pin location. An embodiment of the system 700 may include a positioning module 708 adapted or configured to position the unit pin at the intersection of a boundary of the unit and a pin line extending from the unit center point to the chip pin.
[0068] It may also be noted that the units and / or modules may be selectively connected to one another to exchange electrical signals carrying and transmitting data to and / or from either unit and / or module. This refers primarily to the receiver 702, the first determination module 704, the second determination module 706, and the positioning module 708. Alternatively, it refers to selective connections between modules / units, which may be connected to the system's internal bus system 710.
[0069] Embodiments of semiconductor system 700 may output and / or store semiconductor circuit design data describing the physical layout of a semiconductor circuit. The semiconductor circuit design data may be shareable and / or transferable to one or more semiconductor circuit fabricators or one or more fabrication systems capable of fabricating the semiconductor circuit described by the design data onto a physical chip. For example, providing the design data to a fabrication system capable of performing fabrication according to one or more steps generally described by the method of fabrication depicted in flowchart 600 and / or as described herein. In some embodiments, system 700 may be capable of performing both the semiconductor circuit design and fabrication phases. In alternative embodiments, system 700 may perform the semiconductor circuit design function, and one or more separate fabrication systems may fabricate the semiconductor circuit design onto a physical chip (i.e., individual die).
[0070] Embodiments of the present invention may be implemented with nearly any type of computer, regardless of the platform suitable for storing and / or executing program code. FIG. 8 illustrates, by way of example, a computing system 800 suitable for executing program code associated with the proposed methods. Computing system 800 is merely one example of a suitable computer system, and the implementation of computer system 800 and / or its ability to perform any of the functionality described above is not intended to suggest any limitation on the scope of use or functionality of the embodiments of the present invention described herein.
[0071] Computer system 800 has components operable with numerous other general-purpose or special-purpose computing system environments or configurations. Examples of well-known computing systems, environments, and / or configurations that may be suitable for use with computer system 800 include, but are not limited to, personal computer systems, server computer systems, thin clients, thick clients, handheld or laptop devices, multiprocessor systems, microprocessor-based systems, set-top boxes, programmable consumer electronics devices, network PCs, minicomputer systems, mainframe computer systems, and distributed cloud computing environments that include any of the above systems or devices, and the like. Computer system 800 may be described in the general context of computer system-executable instructions, such as program modules, executed by computer system 800. Generally, program modules may include routines, programs, objects, components, logic, data structures, etc. that perform particular tasks or implement particular abstract data types. An embodiment of computer system 800 may be practiced in a distributed cloud computing environment where tasks are performed by remote processing devices that are linked through a communications network. In a distributed cloud computing environment, program modules may be located in both local and remote computer system storage media including memory storage devices.
[0072] As shown in the figure, computer system 800 is illustrated in the form of a general-purpose computing device. Components of computer system 800 may include, but are not limited to, one or more processors or processing units 802, a system memory 804, and a bus 806 that couples one or more system components together, including the system memory 804, to the processing unit 802. Bus 806 may represent any one or more of several types of bus structures, including a memory bus or memory controller, a peripheral bus, an accelerated graphics port, and a processor or local bus using any of a variety of bus architectures. By way of example, and not limitation, such architectures include the Industry Standard Architecture (ISA) bus, the Micro Channel Architecture (MCA) bus, the Enhanced ISA (EISA) bus, the Video Electronics Standards Association (VESA) local bus, and the Peripheral Component Interconnects (PCI) bus. Computer system 800 may include one or more types of computer-readable media. Such media may be any available media that can be accessed by computer system 800 and may include both volatile and / or nonvolatile media, removable and / or non-removable media.
[0073] System memory 804 may include computer system-readable media in the form of volatile memory, such as random-access memory (RAM) 808 and / or cache memory 810. Computer system 800 may further include other removable / non-removable, volatile / non-volatile computer system storage media. By way of example only, storage system 812 may be provided for reading from and writing to non-removable, non-volatile magnetic media (not shown, which may typically be referred to as a "hard drive," "hard disk," or "solid-state drive"). Although not shown, a magnetic disk drive may be provided for reading from and writing to a removable, non-volatile magnetic disk (e.g., a "floppy disk"), and an optical disk drive may be provided for reading from or writing to a removable, non-volatile optical disk, such as a CD-ROM, DVD-ROM, or other optical media. In such cases, each may be connected to bus 806 by one or more data media interfaces. As further depicted and described below, the memory 804 may include at least one program product having a set of program modules (at least one) configured to perform functions of embodiments of the present invention, including, but not limited to, a first determination module 704, a second determination module 706, and a positioning module 708 (as shown in FIG. 7).
[0074] A set (at least one) of program modules 816, including programs / utilities, may be stored in memory 804, as well as, by way of example and not limitation, an operating system, one or more application programs, other program modules, and program data. Each of the operating system, one or more application programs, other program modules, and program data, or any combination thereof, may comprise an implementation of a networking environment. The program modules 816 generally perform the functions and / or methodologies of embodiments of the present invention, as described herein.
[0075] Computer system 800 may communicate with one or more external devices 818, such as a keyboard, pointing device, display 820, etc., one or more devices that allow a user to interact with computer system 800, and / or any device (e.g., a network card, modem, etc.) that allows computer system 800 to communicate with one or more other computing devices (e.g., over a communications network). Such communication may occur via input / output (I / O) interface 814. Embodiments of computer system 800 may communicate with one or more networks, such as a local area network (LAN), a general wide area network (WAN), and / or a public network (e.g., the Internet), via network adapter 822. As depicted, network adapter 822 may communicate with other components of computer system 800 via bus 806. While not shown, it should be understood that other hardware and / or software components may be used in conjunction with computer system 800. Examples include, but are not limited to, microcode, device drivers, redundant processing units, external disk drive arrays, RAID systems, tape drives, and data archive storage systems.
[0076] Additionally, the semiconductor circuit design system 700 for placing unit pins at the boundaries of units of a semiconductor circuit may be attached to the bus system 806 and / or incorporated into the computer system 800 as one or more components and / or program modules 816.
[0077] While the descriptions of various embodiments of the present invention have been presented for purposes of explanation, these descriptions are not intended to be exhaustive or limited to the disclosed embodiments. Many modifications and variations will be apparent to those skilled in the art without departing from the scope and spirit of the described embodiments. The terminology used herein has been chosen to best explain the principles of the embodiments, practical applications, or technical improvements beyond those found in the market, or to enable others skilled in the art to understand the embodiments disclosed herein.
[0078] The present invention may be embodied as a system, method, and / or computer program product, which may include computer-readable storage medium(s) having computer-readable program instructions thereon for causing a processor to perform aspects of the present invention.
[0079] The medium may be an electronic, magnetic, optical, electromagnetic, infrared, or semiconductor system for a propagation medium. Examples of computer-readable media may include semiconductor or solid-state memory, magnetic tape, removable computer diskettes, random access memory (RAM), read-only memory (ROM), rigid magnetic disks, and optical disks. Current examples of optical disks include compact disc-read only memory (CD-ROM), compact disk-read / write (CD-R / W), DVDs, and Blu-Ray disks.
[0080] A computer-readable storage medium may be any tangible device capable of retaining and storing instructions for use by an instruction-execution device. A computer-readable storage medium may be, for example, but not limited to, an electronic storage device, a magnetic storage device, an optical storage device, an electromagnetic storage device, a semiconductor storage device, or any suitable combination of the foregoing. A non-exhaustive list of more specific examples of computer-readable storage media includes portable computer diskettes, hard disks, random access memory (RAM), read-only memory (ROM), erasable programmable read-only memory (EPROM, or flash memory), static random access memory (SRAM), portable compact disk read-only memory (CD-ROM), digital versatile disk (DVD), memory sticks, floppy disks, mechanically encoded devices such as punch cards or ridge structures in grooves having instructions recorded thereon, and any suitable combination of the foregoing. Computer-readable storage media, as used herein, should not be construed as being themselves transitory signals, such as radio waves or other freely propagating electromagnetic waves, electromagnetic waves propagating through a waveguide or other transmission medium (e.g., light pulses passing through fiber optic cable), or electrical signals transmitted through wires.
[0081] The computer-readable program instructions described herein can be downloaded from a computer-readable storage medium to each computing / processing device or to an external computer or storage device over a network, such as the Internet, a local area network, a wide area network, and / or a wireless network. The network may include copper transmission cables, optical fiber transmissions, wireless transmissions, routers, firewalls, switches, gateway computers, and / or edge servers. A network adapter card or network interface in each computing / processing device receives the computer-readable program instructions from the network and forwards the computer-readable program instructions for storage on a computer-readable storage medium within the respective computing / processing device.
[0082] Computer-readable program instructions for carrying out the operations of the present invention may be either source code or object code written in any combination of one or more programming languages, including assembler instructions, instruction-set-architecture (ISA) instructions, machine instructions, machine-dependent instructions, microcode, firmware instructions, state-setting data, or conventional procedural programming languages, such as object-oriented programming languages like Smalltalk, C++, or the like, as well as traditional procedural programming languages, such as the "C" programming language or similar programming languages. The computer-readable program instructions may execute entirely on the user's computer, partially on the user's computer as a standalone software package, partially on the user's computer and partially on a remote computer, or entirely on a remote computer or server. In the latter scenario, the remote computer may be connected to the user's computer through any type of network, including a local area network (LAN) or a wide area network (WAN), or may be connected to an external computer (e.g., through the Internet using an Internet service provider). In some embodiments, electronic circuit elements including, for example, programmable logic elements, field-programmable gate arrays (FPGAs), or programmable logic arrays (PLAs), may execute computer-readable program instructions by utilizing state information of the computer-readable program instructions to personalize the electronic circuit elements to perform aspects of the present invention.
[0083] Aspects of the present invention are described herein with reference to flowchart illustrations and / or block diagrams of methods, apparatus (systems), and computer program products according to embodiments of the invention. It will be understood that each block of the flowchart illustrations and / or block diagrams, and combinations of blocks in the flowchart illustrations and / or block diagrams, can be implemented by computer-readable program instructions.
[0084] These computer program instructions may be provided to a processor of a general-purpose computer, special-purpose computer, or other programmable data processing apparatus to produce a machine, such that the instructions, when executed by the processor of the computer or other programmable data processing apparatus, produce means for implementing the functions / acts specified in one or more blocks of the flowcharts and / or block diagrams. These computer-readable program instructions may be stored on a computer-readable storage medium, and these program instructions may instruct the computer, programmable data processing apparatus, and / or other device to function in a particular way, such that the computer-readable storage medium having instructions stored therein comprises an article of manufacture containing instructions that implement aspects of the functions / acts specified in one or more blocks of the flowcharts and / or block diagrams.
[0085] The computer-readable program instructions may be loaded onto a computer, other programmable data processing apparatus, or other device to cause a series of operational steps to be performed on the computer, other programmable apparatus, or other device to produce a computer-implemented process, such that the instructions executing on the computer, other programmable apparatus, or other device implement the functions / acts specified in one or more blocks of the flowcharts and / or block diagrams.
[0086] The flowcharts and / or block diagrams in the figures illustrate the architecture, functionality, and operation of possible implementations of systems, methods, and computer program products according to various embodiments of the present invention. In this regard, each block in the flowcharts or block diagrams may represent a module, segment, or portion of instructions, comprising one or more executable instructions for implementing the specified logical function(s). In some alternative implementations, the functions noted in the blocks may occur out of the order noted in the figures. For example, depending on the functionality involved, two blocks shown in succession may, in fact, be executed substantially concurrently, or several blocks may sometimes be executed in the reverse order. It will also be noted that each block of the block diagrams and / or flowchart illustrations, and combinations of blocks in the block diagrams and / or flowchart illustrations, can be implemented by a special-purpose hardware-based system that performs the specified functions or actions or executes a combination of special-purpose hardware and computer instructions.
[0087] The terminology used herein is for the purpose of describing particular embodiments only and is not intended to be limiting of the invention. As used herein, the singular forms "a," "an," and "the" are intended to include the plural forms unless the context clearly indicates otherwise. It will be further understood that the terms "comprises" and / or "comprising," as used herein, specify the presence of stated features, integers, steps, operations, elements, and / or components, but do not exclude the presence or addition of one or more other features, integers, steps, operations, elements, components, and / or groups thereof.
[0088] Corresponding structure, materials, acts, and equivalents of all elements in the appended claims are intended to include any structure, material, or act for performing the function as specifically claimed in combination with other claimed elements. The description of the present invention has been presented for purposes of illustration and description, but is not intended to be exhaustive or to limit the invention to the form disclosed. Many modifications and variations will be apparent to those skilled in the art without departing from the scope and spirit of the invention. The embodiments were chosen and described in order to best explain the principles and practical application of the invention and to enable others skilled in the art to understand the invention in terms of various embodiments with various modifications as suited to the particular uses contemplated.
Claims
1. 1. A method for a computer to design a semiconductor circuit, the method comprising: receiving pin location data, the pin location data including a chip pin location for each of a plurality of chip pins corresponding to a location of another unit within a chip area outside the unit to which each of the plurality of unit pins is configured to be electrically connected; determining the coordinates of the center point of said unit; determining the positions of a plurality of lines extending from the center point of the unit to the tip pin locations of each of the plurality of tip pins; assigning each of the plurality of lines to a plurality of length-based buckets associated with metal layers within the semiconductor circuit that can be used to place the plurality of unit pins for the unit; sorting the plurality of buckets according to the length of each of the plurality of lines; selecting a line of interest from a corresponding one of the sorted buckets; locating the corresponding unit pin on the boundary of the unit where the line of interest extending from the center point of the unit to the chip pin location of the corresponding chip pin intersects the boundary of the unit; wherein selecting a line of interest and placing the corresponding unit pin are performed for each of the plurality of lines.
2. The method of claim 1 , wherein the center point corresponds to the geometric center of the area of the unit.
3. The method of claim 1 , wherein the chip pin location is a center point of the other unit.
4. The method of claim 1 , wherein the units have a convex geometric shape.
5. 2. The method of claim 1, wherein each of the plurality of lines is a straight line that intersects the center point and the corresponding chip pin.
6. each of the plurality of lines is defined by a function; The method further comprises varying at least one parameter of the function until overlap of the corresponding unit pin placement with a pre-placed unit pin is avoided. The method of claim 1 further comprising:
7. The method of claim 1, further comprising iteratively arranging the plurality of unit pins, wherein the order in which the plurality of unit pins are arranged is based on design constraint information.
8. 8. The method of claim 7, wherein the design constraint information includes a set of locations of the metal layer within the semiconductor circuit available for placing the plurality of unit pins.
9. 9. The method of claim 8, wherein the usefulness of the set of metal layer locations for placing the plurality of unit pins is determined based on lengths of corresponding lines between the corresponding chip pins and the corresponding unit pins, and the method includes sorting the plurality of unit pins according to the lengths of the lines extending from the corresponding chip pins to the respective unit pins to be placed.
10. The method of claim 1, wherein the placement of the corresponding unit pin is constrained to a preselected edge of the boundary of the unit.
11. 1. A system for designing a semiconductor circuit, the system comprising: a receiver configured to receive pin location data, the pin location data including a chip pin location for each of a plurality of chip pins corresponding to a location of another unit within a chip area outside the unit to which each of the plurality of unit pins is configured to be electrically connected; a determination module configured to determine the coordinates of a center point of the unit; a second determination module configured to determine the position of each of a plurality of lines extending from the center point of the unit to the tip pin position of each of the plurality of tip pins; a positioning module configured to position each of the plurality of unit pins on a boundary of the unit where each of the plurality of lines extending from the center point of the unit to the chip pin location of each of the plurality of chip pins intersects the boundary of the unit; Including, The second determination module: assigning each of the plurality of lines to a plurality of length-based buckets associated with metal layers within the semiconductor circuit that can be used to place the plurality of unit pins for the unit, respectively; sorting the plurality of buckets according to the length of each of the plurality of lines; The system is configured to select a line of interest from a corresponding one of the sorted buckets, thereby selecting the plurality of lines in order.
12. each of the plurality of lines is defined by a function; 12. The system of claim 11, wherein the positioning module is configured to vary at least one parameter of the function until overlap of the corresponding unit pin with a pre-placed unit pin is avoided.
13. The system of claim 11 , wherein the positioning module is configured to iteratively place the plurality of unit pins, and an order for placing the plurality of unit pins is based on design constraint information.
14. 14. The system of claim 13, wherein the design constraint information comprises a set of locations of the metal layer within the semiconductor circuit available for placing the plurality of unit pins.
15. 15. The system of claim 14, wherein the usefulness of the set of metal layer locations available for placing the plurality of unit pins is determined based on the lengths of corresponding lines between the corresponding chip pins and the corresponding unit pins, and wherein the system is configured to sort the plurality of unit pins according to the lengths of lines extending from the corresponding chip pins to the respective unit pins to be placed.
16. A computer program for designing semiconductor circuits, the computer program causing one or more computing systems to carry out the method according to any one of claims 1 to 10.
17. 1. A computer system comprising: at least one processor; a semiconductor design system coupled to the at least one processor, the semiconductor design system comprising a receiver, a determination module, and a positioning module; and A computer readable storage medium coupled to said at least one processor, said computer readable storage medium comprising program instructions for causing said at least one processor to perform the method of any of claims 1 to 10.
1. A computer system comprising:
18. 1. A computer-implemented method comprising: receiving, by a processor, a chip pin coordinate file comprising x and y coordinates of a unit and x and y coordinates of a plurality of chip pins corresponding to locations of other units within a chip area outside the unit to which each of the plurality of unit pins is configured to be electrically connected; establishing, by the processor, a center point of the unit based on the x,y coordinates of the unit; extending, by the processor, a plurality of pin lines from the center point of the unit to the x-y coordinates of each of the plurality of chip pins; assigning each of the plurality of pin lines to a plurality of length-based buckets associated with metal layers within the semiconductor circuit that can be used to place the plurality of unit pins for the unit; sorting the plurality of buckets according to the length of each of the plurality of pin lines; selecting a target pin line from a corresponding bucket of the sorted plurality of buckets; identifying, by the processor, intersection points where the pin lines of interest intersect with boundaries of the unit as they extend from the center points of the units to the x,y coordinates of the corresponding chip pins; determining, by said processor, that a pin is not placed at said intersection; and upon determining that said pin is not placed at said intersection, placing, by said processor, a corresponding unit pin on said boundary of said unit at said intersection. wherein selecting the line of interest, identifying the intersection point, and placing the corresponding unit pin are performed for each of the plurality of pin lines.
Citation Information
Patent Citations
Terminal position determining system for function block in IC
JP1989062772A
Method for designing arrangement of terminal
JP1989136278A
Hierarchical arranging and processing system
JP1991154363A
Electronic circuit designing device
JP1992080947A
Method and device for designing integrated circuit
JP1997311885A