Patent ID: 12223244

DETAILED DESCRIPTION

Embodiments of the present disclosure include a visualization process that provides an interactive visualization method that uses snapping to assist electronic designers. The term “snap”, as used herein, may refer to an automatic movement at a graphical user interface, wherein an object may be transferred from one position to another without requiring user action (e.g., without requiring a user to drag an object to an exact placement, a snap may automatically move an object to one or more acceptable placements). A snap operation may be triggered based upon some user action at the graphical user interface (e.g. dragging an object at the graphical user interface to position A may result in a snap to position B, or display of a potential snap to position B, etc.). Embodiments included herein may add color coded highlights to objects which are snapped (e.g. a snap source) and where they are snapped (e.g., a snap target) thus providing a visual indication to the user. This definite color-coded scheme will help users easily identify the type of snap source and snap target. Highlights may be provided when a valid snap source overlaps a valid snap target. This may also help in determining whether snapping is successful or not. The visualization process discussed herein may be particularly useful in the snapping of collective object types such as an instance. Highlighting the individual objects (e.g., inside the instance) that snapped to the snap target may provide more precise feedback of what caused the instance to snap to that snap target as is discussed in further detail hereinbelow.

Reference will now be made in detail to the embodiments of the present disclosure, examples of which are illustrated in the accompanying drawings. The present disclosure may, however, be embodied in many different forms and should not be construed as being limited to the embodiments set forth herein; rather, these embodiments are provided so that this disclosure will be thorough and complete, and will fully convey the concept of the present disclosure to those skilled in the art. In the drawings, the thicknesses of layers and regions may be exaggerated for clarity. Like reference numerals in the drawings may denote like elements.

Referring toFIG.1, there is shown a visualization process10that may reside on and may be executed by server computer12, which may be connected to network14(e.g., the internet or a local area network). Examples of server computer12may include, but are not limited to: a personal computer, a server computer, a series of server computers, a mini computer, and a mainframe computer. Server computer12may be a web server (or a series of servers) running a network operating system, examples of which may include but are not limited to: Microsoft Windows XP Server™; Novell Netware™; or Redhat Linux™, for example. Additionally and/or alternatively, visualization process10may reside on a client electronic device, such as a personal computer, notebook computer, personal digital assistant, or the like.

The instruction sets and subroutines of visualization process10, which may be stored on storage device16coupled to server computer12, may be executed by one or more processors (not shown) and one or more memory architectures (not shown) incorporated into server computer12. Storage device16may include but is not limited to: a hard disk drive; a tape drive; an optical drive; a RAID array; a random access memory (RAM); and a read-only memory (ROM).

Server computer12may execute a web server application, examples of which may include but are not limited to: Microsoft IIS tm, Novell Webserver tm, or Apache Webserver tm that allows for HTTP (i.e., HyperText Transfer Protocol) access to server computer12via network14. Network14may be connected to one or more secondary networks (e.g., network18), examples of which may include but are not limited to: a local area network; a wide area network; or an intranet, for example.

Server computer12may execute one or more server applications (e.g., server application20), examples of which may include but are not limited to, e.g., Lotus Domino™ Server and Microsoft Exchange™ Server. Server application20may interact with one or more client applications (e.g., client applications22,24,26,28) in order to execute visualization process10. Examples of client applications22,24,26,28may include, but are not limited to, design verification tools such as those available from the assignee of the present disclosure. These applications may also be executed by server computer12. In some embodiments, visualization process10may be a stand-alone application that interfaces with server application20or may be an applet/application that is executed within server application20.

The instruction sets and subroutines of server application20, which may be stored on storage device16coupled to server computer12, may be executed by one or more processors (not shown) and one or more memory architectures (not shown) incorporated into server computer12.

As mentioned above, in addition/as an alternative to being a server-based application residing on server computer12, the visualization process may be a client-side application (not shown) residing on one or more client electronic devices38,40,42,44(e.g., stored on storage devices30,32,34,36, respectively). As such, the visualization process may be a stand-alone application that interfaces with a client application (e.g., client applications22,24,26,28), or may be an applet/application that is executed within a client application. As such, the visualization process may be a client-side process, a server-side process, or a hybrid client-side/server-side process, which may be executed, in whole or in part, by server computer12, or one or more of client electronic devices38,40,42,44.

The instruction sets and subroutines of client applications22,24,26,28, which may be stored on storage devices30,32,34,36(respectively) coupled to client electronic devices38,40,42,44(respectively), may be executed by one or more processors (not shown) and one or more memory architectures (not shown) incorporated into client electronic devices38,40,42,44(respectively). Storage devices30,32,34,36may include but are not limited to: hard disk drives; tape drives; optical drives; RAID arrays; random access memories (RAM); read-only memories (ROM), compact flash (CF) storage devices, secure digital (SD) storage devices, and memory stick storage devices. Examples of client electronic devices38,40,42,44may include, but are not limited to, personal computer38, laptop computer40, personal digital assistant42, notebook computer44, a data-enabled, cellular telephone (not shown), and a dedicated network device (not shown), for example. Using client applications22,24,26,28, users46,48,50,52may utilize formal analysis, testbench simulation, and/or hybrid technology features verify a particular integrated circuit design.

Users46,48,50,52may access server application20directly through the device on which the client application (e.g., client applications22,24,26,28) is executed, namely client electronic devices38,40,42,44, for example. Users46,48,50,52may access server application20directly through network14or through secondary network18. Further, server computer12(e.g., the computer that executes server application20) may be connected to network14through secondary network18, as illustrated with phantom link line54.

In some embodiments, visualization process10may be a cloud-based process as any or all of the operations described herein may occur, in whole, or in part, in the cloud or as part of a cloud-based system. The various client electronic devices may be directly or indirectly coupled to network14(or network18). For example, personal computer38is shown directly coupled to network14via a hardwired network connection. Further, notebook computer44is shown directly coupled to network18via a hardwired network connection. Laptop computer40is shown wirelessly coupled to network14via wireless communication channel56established between laptop computer40and wireless access point (i.e., WAP)58, which is shown directly coupled to network14. WAP58may be, for example, an IEEE 802.11a, 802.11b, 802.11g, or other wireless device that is capable of establishing wireless communication channel56between laptop computer40and WAP58. Personal digital assistant42is shown wirelessly coupled to network14via wireless communication channel60established between personal digital assistant42and cellular network/bridge62, which is shown directly coupled to network14.

As is known in the art, all of the IEEE 802.11x specifications may use Ethernet protocol and carrier sense multiple access with collision avoidance (CSMA/CA) for path sharing. The various 802.11x specifications may use phase-shift keying (PSK) modulation or complementary code keying (CCK) modulation, for example. Various telecommunications industry specifications that allows e.g., mobile phones, computers, and personal digital assistants to be interconnected using a short-range wireless connection may be used.

Client electronic devices38,40,42,44may each execute an operating system, examples of which may include but are not limited to Microsoft Windows™, Microsoft Windows CE™, Redhat Linux™, Apple IOS, ANDROID, or a custom operating system.

Referring now toFIG.2, a flowchart depicting an embodiment consistent with visualization process10is provided. Embodiments may include causing202a display of a portion of an electronic design at a graphical user interface and receiving204, at the graphical user interface, a selection of an object to be moved, wherein the object is displayed in a first color. In response to a user input, the method may include moving206the object at the graphical user interface nearer a target location, displaying208at least one target type in a second color and snapping210the object to the target location. Numerous other operations are also within the scope of the present disclosure.

In operation, and referring also toFIGS.3-16, a user may initiate snapping by first selecting the instance on canvas/GUI. This may be followed by initiating a command such as “Move”, to move the instance from its current location to a new location by dragging the selected instance or using any other suitable approach. As the user is moving the instance, visualization process10may cause snapping to occur on every drag of the mouse cursor. The result of snapping is to place the instance at a nearest correct location. During the course of snapping, visualization process10may highlight (e.g., using the color scheme and patterns discussed in further detail hereinbelow) what inside the instance is used for snapping (e.g., snap source) and to which grid does it snap to (e.g., snap target).

In some embodiments, snapping may operate to essentially match the snap sources (shapes) to snap targets (tracks of grid). A shape may be represented by its rectangular bounding box (e.g., centerline+width). Similarly, tracks of a grid may be represented by a rectangular bounding box (e.g., centerline+width). In some cases, there may be multiple shapes in an instance separated by some distances. For example, shapes s1, s2and s3may be separated by a distance d1(distance from s1to s2) and d2(distance from s2to s3). Here, the width of s1being w1, width of s2being w2and width of s3being w3. In operation, visualization process10may first find a track closest to s1having the same width as w1in order to match s1. If found, visualization process10may look for a track of width w2at a distance of d1in order to match s2. If found, visualization process10may further look for a track of width w3at a distance of d2in order to match s3. A valid snap location may meet the above criteria. If any of the steps fail then visualization process10may look for next closest track and repeat the operations above, until a valid snap location is determined or the search space is exhausted

Referring now toFIG.3, a graphical user interface300showing an example display consistent with embodiments of the present disclosure is provided. GUI300shows examples of various tracks and grids that may be selected by a user. In some embodiments, and in accordance with visualization process10, an object may align to different grids in the design. Some of these grids may include, but are not limited to, snap pattern (SP) grids, width spacing pattern (WSP) grids, placement grids, manufacturing grids, XY grids, rows, etc. Each of these is discussed in further detail hereinbelow.

In some embodiments, a Snap Pattern (SP) grid for a given metal layer may define the discrete locations in the design where a shape on that metal layer may be placed without creating any design rule violation. These locations may be uniformly spaced and have tracks of fixed width. Width Spacing Pattern (WSP) grids may be defined for metal layers and like SPs define the tracks in the design where a shape on the metal layer can be placed. These tracks, unlike SPs, may have different spacing and tracks widths. A shape on the metal layer is only allowed to be placed on a track with matching width. Placement grids may be uniformly spaced in the design and they define the locations where the placement boundary of the device are allowed to be placed. Manufacturing grids are defined in the technology library associated with the design. It defines the minimum allowed dimensions below which a shape cannot be manufactured. XY grids are larger grids whose value is a multiple of manufacturing grid. These grids may be displayed in the design and helps to create shapes of larger dimensions on manufacturing grid. Rows are uniformly spaced regions in the design that may be used for the placement of standard cells and devices. A row may define what kind of standard cell and device are allowed to be placed inside it and in which orientation. A standard cell of a design may be created in a fixed height/width multiple that allows placing all such designs in a row.

Embodiments of visualization process10may include both visible and invisible grids. Visible grids may include SP grids and WSP grids that may be seen in the GUI or canvas if the visibility of these grids has been enabled. Invisible grids may include one or more grids such as placement grids and manufacturing grids that cannot be seen in the canvas/GUI even if present in the design.

In some embodiments, and referring also toFIGS.4-7, certain grids may be local or global. Local grids may be present in a specific area in the design while global grids are present all over the design.FIG.4shows a GUI400that depicts global SP grids in both horizontal (e.g. “GPG90”) and vertical (e.g. “GFG”) directions.FIG.5shows a GUI500that depicts local SP grid (e.g. “FB48”) in a vertical direction with a corresponding instance (e.g. “cell1”) that has been snapped to the local SP. Similarly,FIG.6shows a GUI600that depicts global WSP grids (e.g. “M2WSP” and “MIWSP”) andFIG.7shows a GUI700that depicts a local WSP region with an instance (e.g. “Inst”) that has been snapped to the local WSP region.

In some embodiments, and referring also toFIGS.8A-8C, placement, manufacturing and XY grids may be global and therefore present throughout the entire electronic design. These grids may be identified as stepX and stepY value.FIGS.8A-8Cshow the original position and final position after snapping to a placement, manufacturing, and XY grid respectively. For the placement grid shown inFIG.8A:dbGetPlacementGrid(geGetEditCellView( ))((0.0 0.0) 2.0 2.0)stepX=2.0stepY=2.0

For the manufacturing grid shown inFIG.8B:techGetMfgGridResolution(techfile)0.1stepX=0.1stepY=0.1

For the XY grid shown inFIG.8C:stepX=0.005stepY=0.005

As discussed above, rows are a special kind of localized grids in the design that may be used to snap instances. Some types of rows may include, but are not limited to, oaRow, dbRow, row in a row region, Custom Placement Area (CPA), etc. Each of these is discussed in further detail hereinbelow.

In some embodiments, to assist with standard cell placement, a siteDef defines a specific width/height. An oaRow may be associated with a sitedef, implying standard cell designs matching the siteDef dimensions can be placed in the row. dbRow is an oaRow with additional information that defines the type of instances allowed to be placed inside it and in which orientation. Custom Placement Area (CPA or dbPlaceArea) is a placement area that contains additional information which controls the way in which instances can be placed inside it. A Row region is a convenience collection of dbRows and CPAs together in one construct for ease of manipulation. One particular example showing a representation of an oaRow with siteDef is shown inFIG.9. A sitedef may define the valid location inside a row where a standard cell or a device can be placed.

In some embodiments, visualization process10may utilize a plurality of types of snap sources. Accordingly, some objects that may be snapped may include, but are not limited to, shape (e.g., individual shape, SP shape, shape inside an instance or figGroup, etc.), boundary (e.g., PR Boundary/Snap boundary) inside instance, instance and via (snapped as a whole), row region (type of a figGroup, snapped as a whole), composite objects such as instances may provide multiple snap sources that snap to a snap target. WSP detailed mode snapping considers multiple pins/shapes inside an instance to snap to WSP grids, etc.

In some embodiments, visualization process10may utilize a plurality of types of snap targets. Accordingly, some snap targets may include, but are not limited to, local SP grids, global SP grids, local WSP regions, global WSP grids, rows (e.g., oaRow, dbRow, dbPlaceArea (type of CPA), row in a row region), placement grids, manufacturing grids, XY grids, etc.

In some embodiments, and referring now toFIG.10, visualization process10may utilize a highlight color coding scheme as is discussed in further detail hereinbelow. All types of snap source highlight may be in one color (e.g., orange). Multiple snap source highlights may use different line styles as shown inFIG.10A. A snap target type may use a specific color in the highlight scheme. For example, SP Grids in blue, WSP Grids in pink, row outline in pink as shown inFIGS.10B,10C and10Drespectively. In a situation where there are multiple snap sources or snap targets, a different style will help differentiate between different source or target. For example, a solid line may be used for one target and a dashed line for another target as shown inFIG.10E. In some embodiments, the style of the source may depend on the style of the target. For example, dotted lines for a source to match a dotted line target as shown inFIG.10F. If there are overlapping targets, one or more markers may be drawn to show the overlap as shown inFIG.10G. For example, where two or more WSP grids overlap at a location. In this way, a triangle legend may be used for one grid, a circle marker for another grid and a square marker as shown inFIG.10G.

Referring now toFIG.11, a diagram showing an example of snap source and target color coding highlights is provided. More specifically snap source, local snap target, and global snap target color coding schemes are provided. It should be noted that these illustrations are provided merely by way of example as many variations are possible without departing from the scope of the present disclosure.

Referring now toFIGS.12-13, various graphical user interfaces are provided that depict an example showing snapping to local/global SP grids. More specifically,FIG.12shows a current display with an instance (“cell1”) snapped to an SP grid with multiple grids active in the design.FIG.13shows a proposed display with a source (multiple objects inside instance (“cell1”) responsible for snapping in different directions) and targets (SP Grids) with highlights. Referring now toFIG.14, various graphical user interfaces are provided that depict an example showing snapping to WSP Grids. In operation, for WSP snapping, there may be multiple snap source and snap targets in a particular direction. In some embodiments, a different highlighting style may be drawn to show different grids in a direction and a snap source matching the target style. In the particular example ofFIG.14, the pins (on metal2) are shown snapping to the M2WSP grid in a horizontal direction and the pins (on metal5) snapping to the M5WSP grid. The pins (on metal3) are shown snapping to the M3WSP grid both in vertical direction.FIG.14Ashows the current display with an instance snapped to some WSP grids with multiple grids active in the design.FIG.14Bshows a proposed display with sources (e.g., objects responsible for snapping) in orange with matching styles as targets (e.g., WSP Grids) in pink highlights according to the color coded scheme.

Referring now toFIGS.15-16, graphical user interfaces are provided showing snapping to various types of rows.FIG.15Ashows a CPA as a snap target andFIG.15Bshows an oaRow as a snap target.FIG.16Ashows a row in a row region as a snap target andFIG.16Bshows a row in a row region as a snap target (e.g., pink highlight with pitch in green solid lines) in one direction and SP grids as snap target (dashed blue lines) in another direction.

It will be apparent to those skilled in the art that various modifications and variations can be made in the embodiments of the present disclosure without departing from the spirit or scope of the invention. Thus, it is intended that embodiments of the present disclosure cover the modifications and variations of this invention provided they come within the scope of the appended claims and their equivalents.