Skip to content

Script generating symbols for Xilinx FPGA

This MR continues !293 (closed)

Intro

Xilinx has CSV files describing FPGA pinout (https://www.xilinx.com/support/package-pinout-files.html). This scripts generates symbols from those files.

Some background:

  • Xilinx FPGA pins are divided into banks
  • Each bank can be powered separately (from 1.2V to 3.3V)
  • Most of pins are general purpose and bidirectional
  • There are some dedicated pins (like reset, JTAG, config clk, etc). All of them are placed into bank 0
  • Each FPGA has at least 3 power rails - VCCINT, VCCAUX, VCCBRAM each comes from several pins. Full-featured devices (like Zynq-7000) can have up to 10 power rails.
  • There is always huge amount of GND pins. Up to 25% of package are GND pins.
  • Total number of I/O pins >100

This scripts generates multi-unit kicad symbol, each KiCAD unit = FPGA Bank

Examples

Small FPGA - Spartan-7 (XC7S6-CPGA196) XC7S6 Medium FPGA - Artix-7 (XC7A12-CSG325) XC7A12 Large FPGA - Artix-7 (XC7A200-FFG1156) XC7A200 Zynq-7000 (XC7Z015-CLG485) XC7Z015 Example of power bank routing: Power

Current progress:

  • CSV parsing and pin extraction (checked for Spartan-7 family).
  • Pin grouping by banks and function
  • Symbol generation and pin layout
  • Electrical types
  • VCC* and GND pin stacking
  • Footprints
  • Adopted for Spartan-7, Artix-7, Zynq-7000 families
  • Ported to v6
  • Adopted for Kintex-7, Virtex-7, Artix-UltraScale+, Kintex-UltraScale(+), Virtex-UltraScale(+) families
Edited by Konstantin Oblaukhov

Merge request reports