Get email delivery of the Cadence blog featured here
We’ve all been there. The only (or most accurate) data that we have for a component is the manufacturing data from another process. It could be a GDSII file for the top-layer metal of an IC or a Gerber film for the BGA ball pattern. If all you have is the manufacturing data, but you need to design a package that makes use of that object, are you out of luck? Not with Cadence’s IC Packaging products, you’re not!
Today’s journey will be an understanding of what is needed to recreate the entire part – physical pins and component outlines plus the logical net assignments – in a SiP design. While this capability was designed primarily for use with a GDSII file as the input format, it can be used for any format that you can import into the database.
First things first. You need some data. But what data, and how do you need it organized? At its most basic, you need only two elements of data – an outline of the part’s extents (usually a rectangle, but can be any shape) and the shapes representing the pins’ geometries. These are enough to define the component and symbol, though the more information available, the fewer defaults will need to be provided.
If possible, you will also want to include text which will provide the symbol’s name and the physical pin numbers, logical pin names, and net assignments. In a standard GDSII file, you’ll find the nets and pin names, but you may not see the symbol name and physical pin numbers. The pin numbers are a very useful name on the pin, but not one that is created and managed by most IC design tools. Don’t worry about that, however, since the compose symbol tool is able to populate it on your behalf.
In the following example, I’ve created a very simplistic component. I had a little bit of fun with this. Why not enjoy ourselves while we learn? My die has three pins, A, B, and HAPPY inside of a square outline with a symbol name of FACE (Seriously, I wanted something where I could make things large enough for you to really see them. A 5,000 pin die, while more realistic, would make it difficult to see things in pictures).
The tool to create symbols from manufacturing data is Compose Symbol From Geometry, located in the Add menu. Bringing that tool up presents you with the user interface shown below. This may look large, but it is not complicated at all.
First, set the type of symbol you’re creating. Whether it’s a die, BGA, interposer, or discrete will have implications on the options for the final part’s configuration later. From there, as you select the class and subclass that contains each piece of data from the outline and symbol name to the pin geometry and names, the objects on that subclass dynamically highlight in the canvas and the form updates. In the above example, I’ve just picked the layer that the pin names are on, which is why my A, B, and HAPPY text is highlighted. This makes it very easy to make sure you have the correct layer. Other fields, like the width and height of the symbol and pin list grid, also update in real time.
IMPORTANT: Do not miss the Geometry From section here. Because your data could come from a definition (e.g. IC layout database) or from a placed instance (e.g. the part as placed in another package), we need to know what the orientation of the geometry is. This allows the tool to create an accurate symbol definition, and if you place other instances of this same part, or export a library DRA symbol, it will be correct for other uses.
If you have net name labels or physical pin numbers, identify these as well. Otherwise, this can be configured in the next phases.
It is unlikely that ALL data required is present in your manufacturing data. It’s simply not that all data is needed by your downstream tool, so has no reason to be there. Once you’ve identified the data you have, you move on to the Place Symbol step. Here, you can fill in the reference designator for the instance and set details like the chip attachment type and orientation for that instance (if creating a die).
You can also adjust placement, override padstacks – if you’re bringing in a die, the geometry you see may be passivation openings or bump pads in the die, which won’t be the exact same shape as the landing pads you want on your package – and define pin numbers.
Pin numbers are likely the most useful here, as most data will not come with this. Like the die generator, symbol edit application mode, and other tools, you can select from several patterns to apply pin numbers for you. If you decide to later, you can renumber the pins easily with the symbol edit mode, though. You are not locked in when you exit this form.
Having set up the numbering and instance configuration, pressing the Place button will put down an instance of the die into your active drawing. That’s all there is to it. You have now created a complete component with just a few clicks that you can be confident accurately represents the original, manufactured component!
If you didn’t have net assignment data in the manufacturing input, use the Logic - Auto Create Net command, or read in a netlist from the source of your choosing, to assign nets to the pins and be able to start routing. Of course, if you are driving the nets from another component in the same substrate, the Logic - Auto Assign Net function is there to give you a quick mapping with as a few crossed ratsnest lines as possible!
Have you used this tool before? Do you have suggestions on how to make it better or easier to use, or capabilities it needs to handle the data you’re importing? We’d love to hear from you!