As with every new release, a primary focus for the Allegro Package Designer (APD) PCB IC Packaging tools is the wire bonding capabilities. These are some of the most frequently used, complex, and crucial commands in the tool. As the majority of packages today are still based on wire bond technology, and this is getting only more important with new technologies like stacked dies and silicon interposers, an intense focus on these core tools has been highly valuable.
With the SPB16.3 release, our goal is to improve the user’s efficiency and time to completion for their designs. We intend to do this by reducing the NoC (number of clicks) to perform common operations, while reducing overhead through flattening of data organization to a more user-focused level. We also intend to look at how the wire bond pattern and etch editing / substrate routing interact, thereby improving the time to edit the bond shell before, during, and after the package substrate is routed.
Read on for all the terrific details ...
Flatten Wirebond Groups to Finger / Wire Attributes
When the current generation wire bond tool was developed, one of the features requested by users was the ability to group sets of wire bonds with common characteristics together. This was done using wire bond groups, where the user configured the group with a profile, placement style, finger padstack, etc. Then, when wire bonds were added, they were added to the appropriate group.
What sounded like a good idea has resulted in complex, stacked die designs where the wire bonding has multiple patterns, padstacks, and profiles, and the number of groups grows exponentially. This makes the tool more difficult to use. Instead, the goal is to tie these attributes to the individual wire bonds, and provide default settings for the various attributes at the design level. This should allow die designs to be created as efficiently as with groups, while allowing more freedom for complex, custom designs.
By flattening the properties in this way, the user will be able to have much finer granularity when making selections and refining the pattern to meet tight design rules and assembly constraints. No longer will people have to make a large number of groups to account for the various combinations of settings. With each wirebond possessing its own characteristics, they can be quickly changed as the pattern is updated, be it for manufacturing, an ECO change, or routing improvements. This allows us to move the global settings for snap point and alignment onto the fingers themselves, allowing users more control over how fingers are snapped to guide paths.
In addition, we removed the groups themselves. Users may use the existing user-defined group functionality to create their own wire bond groups to ease the selection process if they so desire. But, in order to simplify the tool, this field will be removed from the GUI for the wire bond. In addition, we will remove the modify group and change group commands from the wire bond command set.
We replaced the change group command with a “change characteristics” command, which allows the user to select a (set of) wire bonds. They will then be able to change the various properties listed above, without moving the bond fingers in the pattern itself.
These changes will impact the user’s flow as they will need to configure their default wire bond settings in the wire bond global settings form. These will then be used to initialize the mini-status fields during an add wire bond operation. During a move, these fields will still be initialized based on the selected item(s). Additionally, users will need to configure individual parameters instead of selecting a pre-defined group when adding new or changing existing bonds.
Change Characteristics: This new command will let the user change the settings on individual wirebonds, as they would have done with the old modify/change group commands. This will completely replace those two commands, offering the same or more functionality.
Uprev: When a design is opened in the SPB16.3 release, it will automatically have its wire bonds uprevved. This process will remove the wire bond groups from the design and place attributes on all the existing fingers and wires matching their current placement characteristics in the design based.
Downrev: If the user needs to return to SPB16.2 or earlier, they will need to downrev their design. Downrev will create wire bond groups for all unique combinations of the settings above, and remove the finger- and wire-level attributes. It is important that customers be aware that this could result in potentially many groups being created for all the various combinations. We will NOT attempt to retain and remap the old names during an uprev/downrev cycle. The groups will be named simply WBGRP_1, _2, _.... These can be renamed by the user after downrev if desired. We do not advise moving between the 16.3 and earlier 16.x releases unless absolutely necessary, since some placements that are possible under the flattened property scheme may be difficult to achieve in the earlier software.
Highlight Fingers Command
In order to more effectively configure your wirebond design for edits, it is often desirable to custom color various bond fingers depending on certain attributes. This also becomes more important as now the designer loses the ability to select a group of common characteristic wire bonds in the tool.
We have existing commands, bond finger highlight and bond finger de-highlight, which temporarily highlight all the bond fingers in the design. However, these commands were designed for older versions of the tools, where there was no separate find filter option for bond fingers (rather than grouping them with vias).
We replaced these two commands with a highlight fingers command, similar to the existing highlight pins command. Initially, we will support similar highlight attributes as pin highlight (padstack and net name), in addition to the guide path highlighting.
The illustration below shows the highlight fingers command user interface. As you can see, it is almost identical to the existing highlight pins command, though it adds a “temporary highlight” option (to preserve compatibility with the old commands bond finger highlight and de-highlight). It also allows selection of fingers based on their guide path in the mini-status.
Wirebond Routing Stubs
Allow user to specify / customize two wire bond stubs off of each bond finger, one away from the die (out) and one toward the die (in). Each can be independently configured for length, width, and whether it is created or not.
Two stubs are needed in some design types, such as chip-scale packages, where one stub goes out towards the plating bar and the other goes in to be routed to the BGA ball.
Non-Standard Wire bonds
This feature allows a user to add a bond wire between any two available items, such as between two shapes, from a finger to a shape, or from a pin directly to “pin” shape of a lead-frame package.
In certain design scenarios, it is desirable, or even necessary to create bond wires between objects that may not be considered as common occurrences. This may be a wire between two substrate bond fingers to add length or delay to a net, it may be used to connect directly to a filled shape in certain regions of a design, or may be used for other purposes unique to the design fabric in question which may be outside the scope of the normal use model and flow accommodated by the Cadence IC Packaging tools.
To supplement the standard wire bonding tools in Cadence APD and SiP, a new command is offered to add a “non-standard” bond wire between two objects of the user’s selection. This allows the user the freedom to create bond wires and “jumpers” where necessary in a design, without complicating the traditional use model for wire bonding a die component or stack in a package, which still accounts for the vast majority of total wire bonds.
While these wires may not follow the standard rules for pushing and shoving of bond wires, they are still critical to the overall design correctness, in terms of signal integrity, delay, 3D spacing of objects. As such, it is highly important that they still be modeled by the database correctly, whether or not they are actually updated by the wire bonding tools. This includes being part of the connectivity model, to ensure that the electrical connection is considered valid; ratsnest lines and remaining net connection reports must all view this as a valid connection.
Row-Based Auto Bond
The auto wire bond command for components and die stacks has been enhanced to distribute bond fingers to paths such that the inner row of die pads goes to the outer row of fingers, and outer pads go to inner fingers.
Note: To access the Autobond feature go to: Route > Wirebond > Select, (make sure Comps is active in the Find Filter), select the Die to be wirebonded, then, RMB > Perform Auto Bond
Select the Row Bond feature, then hit the Auto bond button. As shown above the entire die will then autobond quite nicely with rows being maintained.
Tack Point Auto Spread
In the wire bond tack point move command, this option allows the user to pick a bond finger and allow the tool to analyze all wires coming into the finger and re-space them evenly along the finger’s axis. While this may seem trivial, if there are many multi-wire fingers, such an option can be a huge time saver.
This feature provides an RMB option when selecting a bond finger in the wire bond tool to add a jumper wire to another substrate finger. It complements the non-standard wire bond tool listed in the first item of this list, but provides more controlled access to a more common type of wire bond.
To access this new command from either route > wirebond > select or route > wirebond > edit, look for the RMB Advanced > Add Jumper command.
Wirebond Application Mode and RMB Parameter Access
Application modes were created in SPB16.0 to allow a designer to “ready” the tool for a particular type of design editing. By doing this, the user could then select things in the window and get a list of operations to perform, without having to launch a command before making their selection.
We emulated this with the latest generation of wire bond command using the “wire bond select” command. Selecting this enables all item types inside the find filter hierarchy which are useful for wire bonding. The user can then select whatever they like in the canvas, and the tool will set the RMB options up to list only commands that are applicable for the given selection.
An example illustration of the old and new RMB menu items for wire bond add is provided at the end of this blog post, along with the other figures.
Multi Pin to Single Finger One-Step Bonding
For single-die designs, few fingers will have multiple wires connected to them. However, as multiple die are stacked, an increasing number of fingers may have multiple wires. A perfect example of this is a memory chip with multiple memory dies wired in parallel to the same bond fingers for fault tolerance.
In the current tool, in order to add multiple wires to bond fingers, the finger is first added with one wire, and then each subsequent wire is added as a separate operation until all wires have been added to the finger. After this time, the wires can then be spread apart with the wire bond tack point command.
This feature gives the user an option when performing an add wire bond operation to have the tool look for neighboring pins on the same net to wire to the same bond finger. Neighboring pins in the selection set are those that have no other pins between them going to I/O pads (pins going to rings are allowed). We never group pins going to rings. In this way, the designer for the stacked memory package above could select one side of the stack dies and have all the pins for one net automatically go to the same finger being created. This would drastically cut down on the time spent setting up this kind of complex design.
Proximity Path Snapping
This feature allows a finger to dynamically change between “free placement” and “on path” modes, depending on how far the finger snap point is from any guide path.
We have added the ability to control how far your cursor can get from a guide path before a wirebond toggles between on-path and free placement. This is controlled by a field in the wirebond global settings as show below (the form has been reorganized for readability and size, but the fields are unchanged aside from this).
Basically, if your cursor is more than the specified distance from any guide, it will be free place. Get close enough, it will snap to the path. This capability can be completely turned off with the checkbox indicated.
Purge Unused Profiles
We have added a “Purge Unused Profiles” button onto the wire profile editor form. This will remove any profiles from the design which are not currently being used.
Bond Same Net Pins to Single Bondfinger
We have added an option to allow users to bond all neighboring pins on the same net to the same bond finger during a wirebond add. This replaces the old flow, where the user needed to bond only one of these pins, then add a wire only from each remaining pin to the finger.
See the new checkbox field on the add wirebond form:
Dynamic Popup Menu
We have introduced the concept of dynamic pop ups for the Add, Move, and Change Characteristics commands of the wire bond tool, so that the fields in the mini-status form are readily available with an RMB click.
As an example, the above popup will be displayed on an RMB click during the wire bond Add command. The form fields are available as popup items and can be readily set without users having to drag the cursor to the right-handed mini-status. This will lead to a more efficient editing session by reducing the continual back-and-forth mouse movement.
The illustrations below show the main forms of the wire bonder.
--Wire Bond Global Settings form with default settings for common fields.
--Added default fields for alignment and snap point, layout style, and profile.
--Removed the global settings for the same fields.
--Wire bond Add/Move form with all controls plus new routing stub and multi wire finger bonding options.
--Added allow multiple wires to rings, finger align and snap, and reconfigured stubs fields.
--Removed group specification.
--Wire bond Add (wire only) form with updated fields. Adding nothing.
--Removed group specification and option for whether to add to finger group or not.
Shown below are samples of the old and new RMB popup menus during the add command. It would be complicated to create quick snapshots, so I have not created the submenus for the options. Basically, under pattern style, you would have submenu entries for on path, equal wire length, direct connection, and orthogonal and so on for the other entries. For the boolean settings (add wire, add finger, bond to rings, etc), there would be a checkbox beside the field if it is enabled. Selecting the entry would toggle the value.
As you can see, in the old popup, we listed the commands available for your current selection. Under the new scheme, you will see the options for the current command instead of the command options which you would need to use “oops” to select, anyway.
I look forward to your exchange on how you're working with these new APD features.
Jerry "GenPart" Grzenia