Many designers use ball maps, or spreadsheets wherein each cell corresponds to a specific pin position in a regular pitch symbol, to document component interfaces, exchange data with other design teams, or even to optimize net assignments.
But, just how do you go about turning that ball map into an actual BGA (or standard die) component and symbol inside your Allegro Package Designer (APD) or SiP substrate design? Is it a simple, straightforward process which provides you the flexibility to specify pin pitch and padstacks at the time the spreadsheet is read? And can you update an existing component with new net assignments from an updated ball map? The answer to all these questions is an emphatic "Yes!"
To learn more about the tools and features available in the 16.6 version of Cadence's APD and SiP Layout tools for creating/updating symbols from ball map style spreadsheets, read on!
Typically, a ball map document will not contain all the information necessary to create a fully-defined logical component and physical symbol for use in a package substrate. While the spreadsheet is ideal for showing relative arrangement of signals, busses, and power/ground nets, it lacks key physical and logical information about pin pitch, pad size/padstack, pin names and numbers, and even pin uses and swap codes.
Using the ‘Symbol Edit' application mode, you can quickly and easily initialize an empty component. Then, still using the application mode, you can add pins based on a spreadsheet of information (or many other types of patterns). To do this, enable these exciting new features from your User Preferences editor, as highlighted in the image below:
The "symed_add_new_comp_beta" gives you the ability to initialize an empty component in the design. To do so, from within the symbol editing app mode, simply right click and choose the "Add Component" entry. Here, you can specify the component type, placement orientation, attachment type (for dies), and even the placement layer. Once you're done with this, you're ready to add your pins.
Adding pins based on a ball map is done with the pattern-based pin addition tools in this same application mode. With the "symed_add_pin_pattern_beta" option on, RMB on your newly-created component and pick add pins. Then, in the options tab, set your default values for pins - information such as the padstack, pin use, swap code, and net to use if the information is not specified in your ball map.
Once you have your defaults set, switch to the pattern definition mode in the options panel. This is where your ball map comes to life. As shown in the image below, you can specify a pattern style of "Spreadsheet", whereupon you can browse to your ball map file.
You are free to set the pin pitch (Horizontal/Vertical or Diagonal, depending on your needs), allowing you to easily reuse a ball map across multiple substrates with different optical shrink values or JEDEC pitch requirements.
Once you have the pitch set, just set the pattern origin and X/Y offsets based on your needs and click in the main canvas window to add the pins to your new component. Congratulations! You now have a fully-populated pattern of pins. And if you have a more complex component to create, you can build it up using multiple spreadsheets (maybe each spreadsheet represents a critical high-speed bus) or any combination of pin patterns that works ideally for you.
NOTE: Did you know that you can build pin customizations directly into your ball map? By using keywords in the cells that define each pin, you can tell the tool what padstack, pin use, net name, swap code, or even pin name and number to assign to the pin represented by that cell. For complete details on how to do this, see your tool documentation or ask your Cadence customer support representative.
Once you've created your initial symbol, you may still need to update it with new netlist assignments. If these come from a newer version of your ball map spreadsheet, don't fret. You do not need to create a new symbol. Instead, set the "icp_sym_spreadsheet_import_beta" in your User Preferences. Once you've enabled the command, use File -> Import -> Symbol Spreadsheet ("symbol from spreadsheet").
After picking the symbol to update, you can browse to your ball map spreadsheet file and indicate what should be updated based on the contents of the spreadsheet. Note that you cannot add or remove pins with this interface, but you can update net assignments and other information on existing pins, as shown above.
Press the update button once you have the form configured, and in seconds your database and symbol are resynchronized with your ball map, ready for the next stage of your design.
Of course, if the next stage of your design involves validating the proposed changes read in from the ball map, it is possible you'll want to propose changes of your own. Whether you make changes using the symbol edit app mode, the logic menu tools, or optimize connections with the flow-planning tools, you can export a ball map at any time for any component in your design.
The File -> Export -> Symbol Spreadsheet ("symbol to spreadsheet") command allows you to do this. After picking your component, a form looking very similar to the one you saw when updating the symbol in the previous section, will appear. Just indicate the file type (you can use text or CSV files if you don't want to use the more flexible open XML spreadsheet format) and data contents, generate the map and send it to your colleagues with the push of a button. With Cadence, it really is that simple!
Do you have an idea for how to improve on these ball map flows? A feature that, if added, would speed your design to market and decrease potentially costly errors? Maybe you need the "symbol to spreadsheet" command to update a specific tab of an existing spreadsheet, instead of defining a new file. Or, it could be that you want a way to tell the system to ignore certain documentation cells when creating pins from a spreadsheet ball map. Whatever the idea, be sure to tell your Cadence customer support representative and you could see it in the next release of APD and SiP Layout!