Get email delivery of the Cadence blog featured here
Library symbols are one of the staple building blocks of EDA design. Whether they are cells for an IC, dies and discretes for a package, or off-the-shelf parts to place on a PCB, we all use them every day.
These library elements allow for great, efficient reuse across any number of designs. If you have five different package options for a given IC, but that die is still under development by the team, you can begin designing the different package layouts. When a new ECO comes in with changes to the die pad pattern, creating a new library object and refreshing each of the designs is simple and convenient.
What about pieces of design intent that aren’t part of the physical library object, but which you wish to associate with the specific symbol instance in the layout? This may be the bond wires and fingers for a wire bond chip, instances of the place-bound shapes on different layers for documentation output, or orientation elements. It could even be something as complex as escape routing for the chip that you want to move with the chip as you optimize its placement within the evolving package layout.
Whether you’re adding lines, text, shapes, routing elements, or any other feature to the design, most elements assume that you are placing them at the design level. If they are part of the symbol, they would be part of the library object. However, the Cadence® SiP tool provides a quick and convenient way to take the additional elements and assign them to the placed symbols in your design. This way, everything stays together in easy to manipulate pieces.
It’s a simple command. It has no Options tab parameters. You may have overlooked it dozens of times in the Edit menu, but it is there. Sandwiched between the Cline Change Width and Text commands:
Starting the command, you’re prompted to select the symbol you wish to associate (or disassociate) children from. Once selected, you can begin adding and removing elements. Toggle whether you want to add or remove through right-clicks, which is just as straightforward as the rest of the command, having just those two options - Add to symbol and Remove from symbol:
Should you opt to assign items to a symbol and the items are already associated with another symbol instance in the design, they will be removed from their current owner automatically (just to save you a step). Note that, naturally, items can only have one symbol owner. If they had two, they wouldn’t know with whom to move!
Once you’ve established a relationship between a symbol instance and other geometry elements, you’ll see the difference as soon as you highlight the symbol—whether it’s with Show Element, Move, Delete, or any of the other commands, the entire symbol will highlight, including all its newly associated geometries.
Take the image of my BGA below. Here, I’ve assigned my simple escape routes from the west-side pins as children of the BGA and run show element. Notice that they are highlighted in the same color as the symbol, when I picked the BGA for show element; the north-side traces, which I did not tie to the BGA, remain in the default layer color, yellow.
Should you assign a color to the symbol, these escapes will inherit that color as well. When you pick up the symbol and rotate, move, mirror, or change its layer, the routes come along for the ride. In all respects, they are now a single object.
Where you will really see the advantage, though, is in knowing that these elements are NOT part of the definition. If you have five instances of the same die placed inside your package, each can have different escape routing tied to them. Each can have a place-bound layer assigned to a unique layer named with the reference designator, for later PDF creation.
This is a great feature, but it does come with one caveat. By tying objects to the symbol instance, if you were to refresh the symbol definition from the library (say when you get an ECO from the IC design team), the children would be deleted when the symbol was refreshed. Why? Because they aren’t technically a part of the library object.
Before you run refresh symbols, then, be sure to use the Change Symbol Owner command and remove the children. This will put them back at the design level. After you have finished updating the symbols, you’ll be able to see any impact this might have on the children. You can move pieces around, delete, or add new items. When you’ve adapted everything to the new library object, reassign them as children and continue as before!