Get email delivery of the Cadence blog featured here
Interfaces to the major spreadsheet commands from OpenOffice, Microsoft, Google, and others are becoming more common in EDA, Cadence® SiP has had a great interface since early in the 16.6 release. You, our users, continue to find creative new uses for this interface (whether it is to extract data out of the tool or read changes into your database); to me, a return to our weekly posts is an ideal time to look back on this useful interface.
Without a doubt, the most common use of a spreadsheet is to represent a ball map. Die and BGA comma-separated value files have been around since the dark ages. But, while they are easy to read and write programmatically, they suffer from a user perspective. There’s no potential for an arrangement of the data to match the physical pattern of the pins. Nor, for that matter, can you apply color information to help identify specific nets, pins, or bus relationships. All these downsides disappear when you move to either a modern spreadsheet or even to HTML.
Why, then, would a spreadsheet be more popular? It could be the ease of editing them from within a tool like Microsoft Excel. Practically everyone today is familiar with these tools, and more advanced users are easily able to develop macros, formulas, and other extensions to make the editing even easier. This can be done without much, if any, programming background that you would need to efficiently edit HTML or XML files.
A ball map for a BGA or a flip-chip die (wire bond dies can have them, but as the pins are often not regularly spaced, the pattern represents ordering more so than actual placement) shows you the locations of the pins as a graphical arrangement, colored based on net assignment colors in your design. Swapping pins inside of Excel is as easy as cutting and pasting between cells. And, the flexibility for storing as much data in a cell as you like allows you to record precisely the data you need.
The image above is a simple illustration of the corner of a BGA with simple net assignments. Not only can we see the pin numbers and nets, but also the padstacks used by the pins and their logical pin names. This forms a complete picture for you.
Beyond that, you can record the precise XY location and rotation, properties, swap groups, or even include references to via structures that implement the escape routing you know works for this particular pattern.
Ball maps like these are great because they are bidirectional. You can export them from SiP to communicate with other teams or others on your own team. But, they can also use them to send you changes to integrate into the layout your building.
The File – Import – Symbol Spreadsheet command gives you this ability and then some. Look below:
If your spreadsheet has info tags in the cells to tell us what each line of data represents, you need to configure nothing here. Just let the tool know if there are labels around the outside of the grid, and whether you want to update only or if the tool can add/delete/unassign pins, create new nets, and apply colors to the nets based on what is in the file. Other data, like pin numbers that have been changed or escape routing references that have been added, will be picked up automatically and incorporated into your design.
When changes are made, you’ll see notes about this in the command line, so you have a record right there about what was changed as a result of importing the file. There is no need for you to write a diff tool inside of Excel or otherwise (unless you want to!).
Beyond reading and writing spreadsheets for complete components, you can do so much more. With the symbol edit application mode, select just a set of pins. You can create blocks of reusable pin patterns that can then be added to other components in a manner of tiling to build up a complete arrangement of pins you know in advance can be routed successfully.
We’ve mentioned this before: much of what you can do within the layout editor can be done with SKILL code. Do you want to define your own spreadsheets of data for something other than a ball map? Or do you want to read a spreadsheet someone in your company writes to make changes to your design?
SKILL provides APIs to meet your needs. It can, in fact, even turn your old CSV text files into spreadsheet-like arrangements to make them easier to extract data out of (or write back out as a true spreadsheet). Here are some of the core functions that you should learn more about if this is a challenge you want to tackle. Their complete details are available in the doc directory of the tool install:
axlSpreadsheetRead & axlSpreadsheetReadDelimited – read a spreadsheet, or read a CSV to make a spreadsheet
axlSpreadsheetWrite – write a spreadsheet, once you’ve finished defining or modifying it
axlSpreadsheetInit – initialize an empty spreadsheet to start adding data to it
axlSpreadsheetClose – close the active spreadsheet and release all of its memory/data
axlSpreadsheetGetCell – retrieve the contents of a cell
axlSpreadsheetSetCell – set the contents of a cell
Many others, for defining styles, properties, formatting, etc. are available through the axlSpreadsheet series of functions. Don’t see what you’re looking for? Be sure to let us know!