Skip to the content
PCBKitNew board
4 layers101.6 × 53.3 mmXc2064-mega shield, the printed circuit board in 3D

Xc2064-mega shield

swittlich/prjfreeman

Open-source flow (yosys + nextpnr) and bitstream documentation for the XC2064, the first FPGA

Size
101.6 × 53.3 mm
Copper layers
4
Thickness
1.6 mm
Parts
80
Nets
172
Pads
420
Tracks, vias
1,440, 168
Pours
4
Routed
Yes
KiCad
KiCad 10.0 (file 20260206)
Created
17 Oct 2026
Updated
29 Oct 2026

Overview

Xc2064-mega shield is an open-source printed circuit board by swittlich, from the swittlich/prjfreeman repository on GitHub, published under the ISC licence. It is a 4-layer board of 101.6 × 53.3 mm with 80 parts on 172 nets, routed with 1,440 tracks and 168 vias.

It is built around the SN74HCT541DWR, INA226AIDGSR and TPS22917DBV, with the PLCC-68-AT, 4D03WGJ0102T5E and KT-0603R among its other parts. Its parts include 23 resistors, 9 capacitors, 8 diodes, 8 connectors and 4 ICs. It belongs with the fPGA and programmable logic boards of this library.

Main components

12

README

README.md

prjfreeman: the Xilinx XC2064 in yosys and nextpnr

blinky in the nextpnr GUI: the empty XC2064, then packed, placed and routed

The XC2064 (1985) was the first FPGA: 64 Configurable Logic Blocks (CLBs) in an 8×8 grid and 58 I/O pins. This repo models it as a nextpnr Himbächel uarch with a yosys plugin, so that Verilog designs can be synthesized, placed and routed for the original chip and turned into a bitstream in the format of Xilinx's XACT, all with an open-source flow.

[!WARNING] Not tested on real hardware. None of the generated bitstreams has been loaded onto a real XC2064 yet. For 44 test runs, MAKEBITS from Xilinx's XACT produces bit-identical bitstreams from the same placement and routing, but the clock buffer codes come from XACT's model, and the edge of the IOB flip-flop and Shirriff's K mux codes have not been checked on a chip. See Open items.

What it can do

  • Synthesis: the yosys plugin synth_xc2064 maps Verilog onto the function generators of the CLBs (3- and 4-input LUTs, the FGM mux mode), flip-flops and latches with asynchronous set/reset, latched inputs in the IOB and tristate or bidirectional pads.
  • Place & route: a routing graph built from the real configuration bits (switch matrices, PIPs, single-length segments, Long Lines, the clock buffers GCLK and ACLK, repowering buffers), an exact legality check of every CLB, and timing for the speed grades -50 to -130 from the Xilinx Data Books.
  • Packages: PC68, PD48, PC44 and PG68, pins constrained with a PCF file.
  • GUI: a schematic of the whole chip with all lines, Bels and pips, in which every routed path can be followed from the pad to the flip-flop.
  • Bitstream: xc2064pack writes RBT and BIT files in XACT's format; xc2064unpack and xc2064netlist turn a bitstream back into readable text and into a netlist.
  • Verification: a regression test proves every result formally equivalent to the RTL (after routing, from the used pips alone and from the bitstream) and cross-checks the bitstreams with Ken Shirriff's independent decoder and with XACT.

Quick start

This repo lives as arch/xc2064 in the repo that builds yosys and nextpnr (scripts/build-nextpnr.sh); the commands run from that repo's root:

bash
git clone --recurse-submodules https://github.com/swittlich/prjfreeman arch/xc2064
scripts/build-nextpnr.sh debug     # nextpnr with the xc2064 uarch
arch/xc2064/flow.sh --gui          # synthesize examples/blinky.v, then Pack, Place, Route in the GUI
arch/xc2064/test/run.sh            # regression test over all examples

Documentation

DocumentContents
Getting startedSetup, running the flow, packages and speed grades, VS Code
ExamplesThe example designs and their results
Architecture modelWhat is modelled and how: routing, CLBs, IOBs, clocks, packages, timing
SynthesisThe yosys plugin synth_xc2064 and its passes
nextpnr uarchLegality checks, packing, primitives, pin constraints, routing
GUIHow the chip is drawn
BitstreamGenerating bitstreams, the bitstream and text formats, the tools
TestingRegression test, formal comparison, cross-check with Shirriff's decoder
Data sourcesReferences, submodules, the xc2064db package, what the data tell us about the original
Cross-checks with XACTClock buffer codes from MAKEBITS, XNF netlists for XNFMAP
Development stagesOpen items and how the model was built

Contributing

Contributions are welcome: bug reports, questions, improvements to the model, the tools or the documentation, and above all anyone who can try a bitstream on a real XC2064. Please open an issue or a pull request on GitHub. Before submitting changes to the model or the tools, run arch/xc2064/test/run.sh (every run must pass) and, for the bitstream tools, arch/xc2064/test/bitstreams.sh. Contributions are accepted under the same license as the project (ISC, see License).

Acknowledgements

This work builds on Ken Shirriff's reverse engineering of the XC2064 (blog post, shirriff/xc2064), the XACT bitstreams in rates37/openxc2064 and the Xilinx Data Books. All references are listed in Data sources.

License

Copyright (C) 2026 Sebastian Wittlich

This project is licensed under the ISC License, the same permissive license as yosys and nextpnr. In short: you may use, copy, change and distribute it, also commercially and as part of closed source, as long as the copyright notice and the permission notice are kept. It comes without any warranty.

The submodules in external/ keep their own licenses. Your own designs and the netlists and bitstreams the tools generate from them are not affected by the license of this project.

Parts

80
QtyValueFootprintReferences
164x1kResistor_SMD:R_Array_Convex_4x0603RN1, RN2, RN3, RN4, RN5, RN6, RN7, RN8, RN9, RN10, RN11, RN12, RN13, RN14, RN15, RN16
91kResistor_SMD:R_0603_1608MetricR14, R15, R16, R17, R18, R19, R20, R21, R22
8LEDLED_SMD:LED_0603_1608MetricD1, D2, D3, D4, D5, D6, D7, D8
710kResistor_SMD:R_0805_2012MetricR1, R2, R3, R4, R5, R6, R7
6MountingHole_3.2mmArduino_MountingHole:MountingHole_3.2mmMH1, MH2, MH3, MH4, MH5, MH6
5Conn_01x08Connector_PinHeader_2.54mm:PinHeader_1x08_P2.54mm_VerticalJ1, J3, J4, J5, J6
4100nCapacitor_SMD:C_0805_2012MetricC1, C2, C6, C10
222pCapacitor_SMD:C_0805_2012MetricC8, C9
24k7Resistor_SMD:R_0805_2012MetricR10, R11
10RResistor_SMD:R_0603_1608MetricR23
1100kResistor_SMD:R_0805_2012MetricR8
110uCapacitor_SMD:C_1206_3216MetricC3
11MResistor_SMD:R_0805_2012MetricR12
11R 0.1%Resistor_SMD:R_0805_2012MetricR9
11nCapacitor_SMD:C_0805_2012MetricC5
11uCapacitor_SMD:C_0805_2012MetricC4
1330Resistor_SMD:R_0805_2012MetricR13
14MHzCrystal:Crystal_HC49-4H_VerticalY2
174HCT541Package_SO:SOIC-20W_7.5x12.8mm_P1.27mmU4
1Conn_01x02Connector_PinHeader_2.54mm:PinHeader_1x02_P2.54mm_VerticalJ8
1Conn_01x10Connector_PinHeader_2.54mm:PinHeader_1x10_P2.54mm_VerticalJ2
1Conn_02x18Connector_PinHeader_2.54mm:PinHeader_2x18_P2.54mm_VerticalJ7
1INA226Package_SO:TSSOP-10_3x3mm_P0.5mmU3
1P43 to MegaJumper:SolderJumper-2_P1.3mm_Bridged_RoundedPad1.0x1.5mmJP4
1P46 to MegaJumper:SolderJumper-2_P1.3mm_Bridged_RoundedPad1.0x1.5mmJP5
1SW_PushButton_Switch_SMD:SW_SPST_PTS645Sx43SMTR92SW1
1TPS22917DBVPackage_TO_SOT_SMD:SOT-23-6U2
1XC2064-PC68prjfreeman:PLCC-68_THT-SocketU1
1XTL1Jumper:SolderJumper-2_P1.3mm_Open_RoundedPad1.0x1.5mmJP2
1XTL2Jumper:SolderJumper-2_P1.3mm_Open_RoundedPad1.0x1.5mmJP3

Questions

How big is the Xc2064-mega shield PCB?

It measures 101.6 × 53.3 mm and has 4 copper layers, 1.6 mm thick.

What parts does the Xc2064-mega shield use?

80 parts, built around the SN74HCT541DWR, INA226AIDGSR, TPS22917DBV and PLCC-68-AT. The full list of its parts is on this page, with links to each part's symbol and footprint where PCBKit's library has them.

Where can I download the Xc2064-mega shield KiCad files?

From the swittlich/prjfreeman repository on GitHub, at the commit this page was made from: the board is hardware/mega-shield/xc2064-mega-shield.kicad_pcb and its schematic hardware/mega-shield/arduino.kicad_sch. PCBKit opens the board in the browser, with nothing to install.

Can I use the Xc2064-mega shield design in my own project?

Its repository publishes it under the ISC licence: you may reuse it on that licence's terms (keep the author's notice, and for a copyleft licence share your changes alike).

Similar boards

  • 4 layers90 × 56.1 mmK2-cm5-traeger, the printed circuit board in 3D

    K2-cm5-traeger

    Gamecard/k2-plus-cm5

    K2 Plus CM5 – Creality K2 Plus mit Upstream-Klipper auf einem Raspberry Pi CM5

    137 partsGPL-3.0
  • 4 layers80 × 70 mmStm32, the printed circuit board in 3D

    Stm32

    ackom-a-o/stm32f446-development-board

    Custom STM32F446ZET6 development board in KiCad. Prototype hardware, design review and validation log; hardware testing pending.

    69 parts
  • 4 layers250 × 145 mmThermo40, the printed circuit board in 3D

    Thermo40

    mahmoud-elghamry/thermocouple

    This directory is a self-contained KiCad 10 project. It does not share files with, and must not be confused with, the single-channel board in hardware/single-channel/.

    731 parts1
  • 4 layers228 × 115.4 mmOcxPrototype, the printed circuit board in 3D

    OcxPrototype

    ocxpke/ocx

    Open Computer Experience

    126 partsCERN-OHL-S-2.0
  • 2 layers155 × 80 mmSynthBoard, the printed circuit board in 3D

    SynthBoard

    wakimizufu/MC2

    110 parts1
  • 4 layers50 × 70 mmRp569, the printed circuit board in 3D

    Rp569

    kelu124/rp569

    RP569 - PIOs to usb3 ( rp2350 x ch569 )

    146 parts3
  • 6 layers240 × 207 mmEHNS -, the printed circuit board in 3D

    EHNS -

    HW9711/EHNS_-

    EHNS硬件

    665 parts