Get email delivery of the Cadence blog featured here
We have talked about aspects of the in-design symbol edit application mode in the past. This is the environment specific to the Allegro® Package Designer Plus layout tools allowing you to work on symbol definitions directly in the context of your layout design.
A large part of what makes the symbol edit application mode so powerful is the context it provides. Instead of working on a DRA symbol in isolation, with the application mode you can see net assignments, routing, even the constraints that will apply to this symbol in the substrate design. Having this there give abilities not normally available to a librarian.
Snap pins to a known-good fan-out pattern of via structures. Add keepout regions based on the size of the balls or copper pillars which mount a chip to the package substrate. See the cavity outline that will be needed to embed a die into the substrate and how this will expose nearby routing and vias. These are a few actions you can take.
But! There are other actions that, done inside the isolation of the DRA editor, could cause havoc to your design. Adding and deleting pins, of course, are critical pieces. What about moving the reference 0,0 origin for the symbol from the lower left to the center of the part or creating a new definition for an existing symbol that accounts for variations by part provider or destination layouts the package will be mounted to?
Come with us, and we’ll see some additional actions APD Plus allows you to take to make to your symbols inside the layout to save you time and effort as you speed towards your next deadline.
This seemingly simple change may be one of the most fear-inducing. You have a symbol with its origin point not being where you need it. Perhaps it is a die component and came from your IC team with 0,0 in the lower-left corner; the designer may have located 0,0 in the center when you need it to be on pin 1.
Whatever the case, it is frightening because moving it in the DRA and refreshing into the layout will cause all the pins to shift. After all, a refresh will update the layout with the new definition and won’t change the placement position for the instances.
The symbol edit application mode takes that anxiety away. In 17.2 and 17.4 today, you will need to enable the command from your user preferences by turning on the “symed_move_origin_beta” command, shown below:
After you have done this, make a right-mouse click on the component you need to shift the origin on in the design. In the menu, you’ll find the Move symbol origin action between boundary editing and CTE compensation. It’s highlighted in the menu below (note: some menu items shown may be different for you, depending on the symbol you’ve picked).
This command is very simple to use. After starting it, all you need to do is to digitize the new origin point from the design. The pick you make relative to the instance will be transformed and applied to the definition before being pushed back to this instance and any others in the design.
A reason to make this change here, in the layout, is that the application mode knows where the instances all are placed and understands the context of the change you are making. This means that it will update the instance positions in the design so that all the geometry elements remain in their current positions. No pins will change their connection points. No routes will disconnect or stretch. All you’ve done is change the origin to where you need it to be. Sure, if you run show element on the symbol, it will report the location as changing. But, nothing else in absolute coordinates will move.
This is also safe to use on rotated and mirrored symbols. The database will translate coordinates into the appropriate space during movements to keep things stationary. Whether you pick the symbol’s geometric center, a specific pin, or a convenient corner of the symbol, the location you pick is up to you.
Oh, and if you then need to update the library DRA for the future, you can always export the library symbol element from inside the application mode, too!
Next up, the remastering of a symbol. I’m talking about taking your current symbol as defined and making a new copy of it that you can then edit safely without impacting the original definition (or instances) in any way.
This can be done with the Copy component action in the symbol edit application mode. As with moving the origin, you’ll want to have components or symbols selected in your find filter. Pick any symbol from the layout and look for the entry shown in the screenshot above.
You will need to provide a new library package name and a reference designator for the newly-copied elements before you can place things in the layout, but that’s all the information you need to provide the tool for it to make you a new definition.
With a unique definition created, any changes can be made safely with no impact to the original.
Helpful Hint: If you want to make changes in relation to the original definition, turn off or hide DRCs temporarily and place the copy directly on top of the source instance. This will give you a reference for your changes… but you might want to assign a highlight color to one of them so you can tell them apart!
Whether you add and delete pins, update the symbol dimensions, or even apply different shrink and scribe values, you can see the impact of the changes versus the original. This is very helpful, being able to see both definitions at the same time, overlaid on top of each other. Much simpler to envision than two separate DRA-editing windows! Below, I made a copy of my original BGA (blue) and deleted the pins on the right side. This is easy to see with the colored symbols and OpenGL transparency display.
Editing completed, use the Write library symbol and Write device file commands to generate new library elements for the freshly-created part. You’re now ready to use it in any design you like!
Our last tool for today is one that allows you to leverage this like interactive routing’s push and shove to help guide pin placement. As we know, push and shove will never move pins of a component. However, it WILL slide vias. What if you could treat your pins like vias, then, and let the router push them where they needed to meet minimum spacing requirements? Then, this information could be fed back to your IC design team to optimize bump placement for package fan-out.
You can do this with the Convert vias to pins command in the application mode (and its reverse, Convert pins to vias). It will take you three steps to complete things in this case, following the basic steps of:
Convert the movable pins to vias in the design
With the interactive commands, push and shove the vias to find the optimal bump pattern
Convert the vias back into pins to lock them down
To do this, you first window the pins of the component you want to be able to shove around. Select pins in the find filter of the symbol edit application mode, window the appropriate pins, and from the right-mouse menu choose Convert pins to vias with the delete option. This will remove the pins from the design, leaving just the vias. That’s important because if the pins are still in the design, the routing tools will be forced to treat them as immovable obstacles.
Now, using whatever commands you like – add connect, slide, custom smooth, or others – manipulate the routing and vias to optimize the fanout pattern.
When complete, turn on symbols in the find filter of the symbol edit mode and right-click on the original component pin owner. Select Convert vias to pins, again with the delete option. You’ll be asked to select the vias to be returned to pins. Window them again and they will be changed back to pins. You need to pick the component first in this step so that the tool knows what component to create the pins as part of. There could be multiple overlapping components in that area of the design, particularly with die stacks, and the tool needs guidance to make the correct association.
Below, the example is hardly real. It shows how push and shove can keep things close together. Those are all pins, now, though!
Pin numbers will automatically be defined based on your pin numbering pattern and grid settings. Should the pins have been moved only slightly, they will likely retain the same numbers. But, in case you changed them significantly, know that you may need to consider whether your numbering pattern needs to be updated.
These are just three kinds of changes to symbols that benefit from the added context and reference data of the layout itself. What changes do you make? Would they benefit similarly? Let your Cadence representative know if so, and we can look at making that happen!