Printed circuit board (PCB) design software is one of the oldest segments of electronic design automation (EDA). Long before people were doing synthesis, formal verification, HDL simulation, or most of the other modern design automation processes, tools were around that helped us automate the design and layout of our PCBs. Today’s PCB tools carry the legacy of that long history – both conceptually and, in some cases, literally. Some of today’s PCB tools still carry pre-historic code that was developed long before… well, before FPGAs came along, for example.
Why should we care about this?
For most of the history of PCB tools, the pin was a well-behaved object. For every component in your library, each pin had a well-defined, static behavior. This one was Vcc, this one was Gnd, these 32 were address lines, this one was hanging around as bait for tin whiskers… This aspect of life was pretty simple for PCB tools.
Then, along came FPGAs.
When you put an FPGA into your PCB library, the pins are not so well-behaved. Those annoying FPGA designers can go swapping them around willy-nilly on the fly, creating a nightmare in board design. “Wait!” (I hear you out there) “Pin swapping on FPGAs is a board-design super-power. You can solve all kinds of board layout challenges by simply moving the pin assignments around on the FPGA.” The problem with super-powers is that they can be used for both good and evil. Your FPGA designer could use that power to become either super-hero or super-villain.
For example, what if you finally have all the routing and timing and thermal and signal integrity issues worked out on your board design, and then the FPGA dude swings past your office and says “Oh, by the way, I had to completely re-do the pin assignment on the FPGA because of some on-chip timing violations I was getting…” This case would fall on the super-villain side. You now have to completely re-work the board, with myriad opportunities for major mistakes.
On the other side of the coin, you might be struggling with a terrible problem routing a bus around the device. You mention it over the cube wall in casual conversation and the FPGA guy says “Hey, I can move all those connections to the other side of the FPGA if that will help!” Case 2 goes to the super-hero.
Whether hero or villain, however, these changes come at a cost. Every change in the pin assignment brings ample opportunities for problems to creep in on your PCB. FPGAs are also not simple devices from a pinout perspective. Many FPGAs have complex power supply requirements with multiple voltages – each connected to multiple supply rails, and with de-coupling and isolation requirements resulting from high-speed serial connections, LVDS, and a host of other specialized uses that all converge inside the FPGA. Clock connections have specific requirements on most FPGAs as well, and mis-connecting a clock can be a subtle trouble to track. Finally, as high-speed serial connections continue to take over the load from wide parallel busses, the board-level design requirements change dramatically.
All of these difficulties fall in a historic gap in the tool chain. Most of the tools from FPGA companies tend to drop off at the pins. The FPGA vendors are happy to take care of you in grand style as long as you’re inside their silicon, but when you make that jump across the bonding wire, through a package pin, down a solder dot, and onto some copper trace in a sea of FR4, you’ve crossed a gap – both in the physical realm of the device and in the tool chain. The board design tools pick you up on the other side of that little chasm, taking your traces where they need to be, but crossing that boundary brings many a woe to the unwary.
Taray has recently announced a tool called “7Circuits” that aims to bridge this gap, taking a top-level view of the board/FPGA interaction. 7Circuits performs what the company calls I/O Synthesis. Using 7Circuits, you define the basic interfaces between components in your system, and the tool then allows a kind of board-level floorplanning – where your constraints, the FPGA vendor’s design rules, the interface particulars, and the topology of your overall circuit help to drive the location and pin assignment and component location for your system.
The tool bridges the gap between tool sets – connecting the FPGA vendor tools with the PCB design tools much more intelligently than the way they come out of the box. 7Circuits passes symbol, schematic, power and reference voltage information and other important data to the PCB tool. It also passes pin assignment and other important board-related data to the FPGA tool, and it has feedback loops from both tools to break the finger-pointing design iterations that can occur when FPGA-on-board design is done manually between team members. Automating the (usually manual, tedious, and error-prone) process of generating and checking the power and reference-voltage connections to the FPGA can avoid board re-spins and eliminate frustrating and subtle bugs that can result from “almost following” the vendor’s recommendations.
Starting from the initial floorplan, you can begin the parallel tasks of FPGA and board design with a big head-start. The FPGA pin assignments are initially chosen to simplify board routing and signal integrity. When designs contain multiple FPGAs, the advantages of pre-planning are multiplied, as solving the many-to-many flexible pin assignment can be a daunting manual optimization.
The big value kicks in when you start making changes, however. If your FPGA design runs into on-chip timing problems, and you end up needing to move pin assignments to solve some of them, the automatic bi-directional link between the FPGA and PCB domains kicks in and makes sure that your board designers are working on the same design as your FPGA designers.
Overall, automating the usually napkin-bound process of pin assignment, connecting the disparate worlds of FPGA design and PCB design, and maintaining rule-checks on the resulting design against the complex and confusing set of design rules supplied by vendors is a very high-value contribution for teams designing FPGA-based boards, particularly those with multiple FPGAs on a board. Several tool vendors including Altium and Mentor Graphics offer solutions that compete with some or all of these capabilities, but Taray is the first company we’ve seen that takes on the problem independently with a stand-alone offering integrated with both FPGA tools and PCB tools.
Taray’s 7Circuits is integrated with PCB layout tools from EDA vendors including Cadence and Mentor Graphics and with FPGA tools from vendors including Xilinx and Altera.