| |
I/O Assignment is a Daunting Challenge As more and more designers adopt FPGA devices with higher pin counts, the process of defining the I/O pin configuration or “pinout” has become a daunting task. The challenge is to balance the requirements from both the FPGA and PCB perspectives while designing both sides in parallel. Performing early I/O pin planning helps avoid having to iterate the pinout much later in the design cycle. Prematurely optimizing a pinout specifically for the PCB or FPGA often leads to design issues in the other domain. Pinouts defined to minimize routing concerns or layers on the PCB often lead to sub-optimal FGPA implementation. Pinouts optimized for the FPGA layout often cause PCB routing difficulties. Designers need to be able to visualize both the PCB placement and FPGA physical device pins along with the internal FGPA I/O pads and related resources to understand the ramifications of their pin assignment choices (Figure 1).
Assignment choices are typically made based on the PCB component interfaces. Critical signals and buses need to be assigned to pins on the same outside edge as the component to which they interface while maintaining “clean” routing of the signals. Especially in the case of large ball grid array packages, it can be very difficult to define the I/O pins to enable all of the PCB routing to exit cleanly. Depending on the PCB technology used, routing to the internal pins of these ball grid array (BGA) devices can be difficult or even impossible at times. Utilizing the outer pins of the device can make routing easier and wire lengths shorter. An optimal pinout can often reduce the PCB layer count or the number of PCB vias required to route all signals out from the FPGA package (Figure 2).
Not only should the pinout be optimized for interconnect feasibility, but also for signal integrity concerns. Critical interfaces and differential pairs often have matched timing constraints that need to be considered throughout this parallel FPGA and PCB design process. Where possible, matched signals should be handled as a group to avoid mismatched interconnect delays. With these new devices, designers need to be able to visualize the device interconnect of the device on the PCB, and how the connectivity translates inside the chip. Effective use of internal FGPA resources is only possible with a sensible and organized I/O interface. Assigning pins in close proximity to the CPU, DSP, and RAM resources can significantly improve the routing and performance of the design. Proper use of the device clock regions can also dramatically improve performance and reduce power consumption. Some devices also have specific I/O requirements for clocking resources, DDRs, and onboard processors , while newer devices use complex clocking schemes involving other device resources such as regional clock buffers (BUFRs), I/O delay controllers (IODELAYCTRLs), and multi-gigabit transceivers (MGTs). Proper planning and placement of I/O related resources is required for the FPGA to function as expected. And on top of all of these considerations, FPGAs also have I/O restrictions constraining how much output load can switch simultaneously (SSO). These restrictions are device and I/O bank specific, and can cause signal integrity problems if violated. Early analysis of the pinout configuration should be performed to ensure SSO issues are avoided downstream. Given all of these concerns along with the large number of pins on current devices, the task of defining an I/O pinout from FPGA to PCB has become a major design challenge that can make or break a design. To date, designers have used a variety of adhoc methods to define pinout configurations with none of them being an optimal solution. Where To Start? Designers should begin to formulate the I/O strategy as early as possible. This task can be tough in the absence of an optimal tool for the job or a completed netlist. Waiting until the PCB netlist or default FPGA pinout is defined may be too late. Typically, the PCB designer creates PCB schematic symbols in order to begin the layout before the RTL is complete. Without insight into the device, these decisions are often made without regard for the layout internal to the FPGA. There have been many cases where FPGA designers have struggled to meet performance targets for their FGPA designs because of a fixed pinout requirement driven from the PCB. With today’s devices, the pinout has to be analyzed early from both domains. First examine the PCB physical parameters and limitations, by answering a few questions.
It may help to draw a diagram of the proposed PCB placement, including all major components with critical interfaces and buses, to determine the desired FGPA pin assignment locations. Ensure that the components are visualized correctly in terms of the side of the board they will be mounted on. Make note of interfaces that require special attention, such as high speed buses, differential pairs, etc. Next, examine the layout of the FPGA device to understand where the physical resources exist on the silicon.
Once the FPGA interface signals are pretty well defined for the design, signal interface groups should be created. Some designers like to use a spreadsheet containing all of the I/O signals. They can then be grouped by voltage, by clocks, by interface, by bus, etc. This is really quite valuable because it begins to formulate the groups of signals to assign in close proximity. The target I/O bank or I/O banks for the interfaces can be defined and a priority to assign to outside physical pins can also be determined for optimal PCB routing. After examining both the FGPA and PCB domains and having defined the major interface locations, the next step is to begin the task of assigning pins to I/O banks based on all of the above criteria. This is where the work begins today. In the current flow, pin assignment is a time consuming task that can involve a lot of trial and error in order to solve all of the performance and signal integrity concerns. It is often done in the absence of graphical tools that help visualize the two domains. Introducing the PinAhead Environment With the latest release of the PlanAhead Design and Analysis Tool, Xilinx has introduced PinAhead Technology, which addresses both the PCB and FGPA design concerns and makes I/O pinout configuration much easier. This environment is included with PlanAhead 9.1. Opening the PinAhead environment displays a set of views applicable to the task of exploring and assigning I/O port signals to physical package pins or I/O pads on the die (Figure 3).
PinAhead leverages the easy to use graphical environment of PlanAhead to display the silicon I/O pads and related resources in the Device view, and the physical device pins in the Package view. The Package Pins view lists device package specifications according to the device data sheets. This reduces the need to cross reference the device data sheet during pinout configuration. The Package Pins view table is categorized by I/O banks allowing easy cross selection and highlighting of I/O banks in both the Device and Package views. This clearly shows the relationship of the physical pin location and the I/O pad location on the die, which simplifies optimal I/O bank selection. Pin information for each pin in the I/O bank is also displayed in the Package Pins view. The information can also be exported to a comma separated value (CSV) format spreadsheet for use as a starting point for pinout configuration. The I/O Ports view displays all of the I/O port signals currently defined in the design. All busses are grouped and displayed in bus folders. Differential pair signals and busses are also grouped. The I/O Ports view can be populated by importing a synthesized EDIF netlist or CSV format spreadsheet with the I/O ports defined or by using the Create I/O ports command. Both of the Package Pin and I/O Port table views can be easily sorted in a variety of ways. These list views can be toggled to display a category based list or a flat list which makes sorting and selecting extremely flexible.
Placing I/O Ports As the I/O ports are created, they can be assigned to Package pins or I/O pads. Designers may wish to examine their initial PCB interconnect sketch or consult with the PCB designer to understand the desired locations and considerations for placing the various I/O port interfaces. Proper bus order and edge proximity can aid PCB routing significantly. Individual pins, busses and/or Interfaces can be assigned to I/O pins by dragging them into either the Device or Package views. The entire group of pins will be assigned to the selected I/O pins using various assignment pattern modes. The available modes include Place I/O Ports in an I/O Bank, Place I/O Ports in Area, and Place I/O Ports Sequentially. Each mode offers a different assignment pattern for the I/O ports to be assigned to pins. Information about the number of ports being placed is provided on the cursor tool tip. The mode remains active until all of the selected I/O ports are placed. PlanAhead attempts to maintain correct-by-assignment assignment rule. Differential pair ports will be assigned into proper pin pairs. However, pins can be manually assigned that conflict with some device I/O banking rules. The batch PlanAhead I/O related DRCs have been improved to flag such I/O issues.
Automatically Placing I/O Ports PinAhead has the capability to automatically place all or any selected I/O ports to package pins. The Autoplace command will obey all I/O standard and differential pair rules, and will place Global Clock pins appropriately. The command will also attempt to group the Interfaces as much as possible. Prohibits can be placed on individual I/O pins or I/O banks to prevent I/O assignment to them. I/O ports can be pre-selected for auto-placement (Figure 9). To automatically place all unplaced I/O ports, select the Autoplace I/O Ports command to invoke the Autoplace I/O ports wizard (Figure 9). You can elect to place all unplaced I/O ports or allow the tool to clear them all and start over (Figure 10).
PinAhead enables the placement of other I/O related logic, such as BUFG, BUFR, I/O DELAY, IDELAYCTRL, and DCM. Clock Regions and clock related logic objects are all displayed graphically in the Device view making I/O assignment based on clocks much easier and intuitive. These objects and placement sites are easily located in PlanAhead using the Find command. Logic connectivity can be selectively expanded and explored in the Schematic view (Figure 11).
Logic can easily be selectively expanded in the Schematic. The logic expansion and traversal options are quite extensive allowing effective exploration of the design logic. Locking placement of specific I/O related logic is made easy in PlanAhead. You can easily select the logic in any view and drag it onto sites in the Device view to lock them in place (Figure 12).
PlanAhead will only allow logic to be placed on appropriate sites. A dynamic cursor identifies the proper site locations as the logic object is being dragged. PinAhead also provides the capability to selectively clear I/O pin and I/O related logic assignments by object type. Clock pins and clocking logic are defined once and are left alone for experimenting with the other I/O port assignments (Figure 13).
Running I/O Port DRCs PlanAhead includes a vast set of DRC rules to ensure a design is error free prior to implementation. These rules include many I/O and clock related rules to ensure the I/O placement is legal. Rules can be selected using the PlanAhead DRC dialog (Figure 14).
If violations are found, a DRC results table is displayed in which the offending logic objects can be easily located and selected. Running WASSO Analysis PlanAhead also includes Weighted Average Simultaneous Switching Output (WASSO) analysis to help identify potential signal integrity issues with the pinout configurations. Designers can input parasitic characteristics of their PCB. PlanAhead will analyze the various I/O banks and their neighbors and report back the utilization and status of each I/O bank (Figure 15).
Exporting an I/O Port List The I/O port list and Package Pin information can be exported from PlanAhead in a CSV format file. The file includes information about all of the package pins in the device, as well as, design-specific I/O port assignments and their configuration. The package pin section of the list makes a great starting point for defining I/O port definitions in the spreadsheet. The spreadsheet can also be used to automatically generate the PCB schematic symbols required to begin the PCB layout. Often times these symbols are too large for the schematic and have to be broken up into several symbols. This can be done quite effectively using the Interface groups created in PinAhead (Figure 16).
Summary With new PinAhead Technology, PlanAhead provides designers with unique design visibility and robust capabilities to explore I/O assignment options. The environment provides device information and many unique views into the design. I/O pin planning can be performed very early in the design cycle prior to FPGA or PCB netlist generation. Related I/O ports can be grouped together into Interfaces to aid with placement and management of I/O ports. Designers can focus on assigning critical I/O ports using a variety of semi-automated placement modes. They can rely on the Autoplace command to place the remaining I/Os in legal sites. I/O related DRC rules and WASSO analysis are provided to help uncover design issues early. The I/O port configuration and package data can be exported in a spreadsheet format. Utilizing these capabilities to thoughtfully define an I/O configuration that satisfies both the PCB and FPGA domains can lead to increased design performance and a potentially less costly PCB. by Brian Jackson, Xilinx March 22, 2007 Comments on this article? Send them to comments@fpgajournal.com |
All
material on this site copyright © 2003-2007 techfocus media, inc.
All rights reserved. FPGA and Structured ASIC Journal Privacy Statement |