Skip to the content
4 layers260 × 260 mmFpga large csg324 breakout, the printed circuit board in 3D

Fpga large csg324 breakout

shyba/pardal4

A command-line PCB place & route tool.

Size
260 × 260 mm
Copper layers
4
Thickness
1.6 mm
Parts
325
Nets
324
Pads
648
Tracks, vias
2, 326
Routed
Yes
KiCad
KiCad 9.0 (file 20241229)
Created
24 Dec 2025
Updated
5 Jun 2026

Overview

Fpga large csg324 breakout is an open-source printed circuit board by shyba, from the shyba/pardal repository on GitHub. It is a 4-layer board of 260 × 260 mm with 325 parts on 324 nets, routed with 2 tracks and 326 vias.

It is built around the A13, E15 and B10, with the B13, B16 and B18 among its other parts. It belongs with the fPGA and programmable logic and interfaces and adapters boards and the FPGA and CPLD boards of this library.

Main components

12

README

README.md

Pardal PCB

Command-line PCB place & route tool with a Python API and a Mojo backend route path.

Pardal PCB example

What this project covers

  • Python-native board construction and routing workflows
  • CLI flows for build, place, route, drc, and repl
  • FreeRouting interop (freeroute)
  • Mojo backend routing (backend-route) using KiCad 9 in Docker for extract/apply

Requirements

  • Python 3.10+
  • Docker (required for backend-route and freeroute)
  • KiCad on host is optional for backend-route/freeroute (Docker supplies KiCad 9 there)
  • System pcbnew is required for pardal-finalize

KiCad compatibility

  • Full supported path: KiCad 9 (native or Docker-based tooling)
  • Current default backend route path uses Docker image kicad/kicad:9.0.6-full
  • Older host KiCad versions may still work for limited flows, but are not the full baseline

Install

bash
python3 -m venv venv
./venv/bin/pip install -U pip
./venv/bin/pip install -e .

Optional global shortcut:

bash
pip install -e .
pardal --help

CLI quickstart

bash
# Show commands
./venv/bin/python -m pardal.cli --help

# Build from netlist (+ optional route)
pardal build project.net -p placement.txt -o board.kicad_pcb
pardal build project.net -p placement.txt -o board.kicad_pcb --route

# Route an existing PCB
pardal route board.kicad_pcb -o board_routed.kicad_pcb

# Run DRC
pardal drc board_routed.kicad_pcb --format text

# REPL
pardal repl

Route DSL workflow

The route DSL commands stage artifacts only. They are not release-ready, JLC-ready, or orderable claims.

bash
# Seed the checked-in example directory
pardal route-dsl example init --example-dir examples/routing_dsl

# Assemble the example artifacts and print the manifest path
pardal route-dsl example run --example-dir examples/routing_dsl

# Pure artifact stages
pardal route-dsl board-ir examples/routing_dsl/board_source.json -o examples/routing_dsl/board.ir.json
pardal route-dsl plan examples/routing_dsl/routes.pdl.yaml examples/routing_dsl/board.ir.json examples/routing_dsl/backend_manifest.json --route-plan-output examples/routing_dsl/route-plan.ir.json --artifact-output examples/routing_dsl/capability-report.json
pardal route-dsl candidates examples/routing_dsl/board.ir.json examples/routing_dsl/route-plan.ir.json examples/routing_dsl/backend_manifest.json -o examples/routing_dsl/route-candidates.json --routes examples/routing_dsl/routes.json

# Apply-to-copy: validate first, then copy input board bytes to the output board path and still write an apply report
pardal route-dsl apply examples/routing_dsl/board.ir.json examples/routing_dsl/route-plan.ir.json examples/routing_dsl/route-candidates.json -o examples/routing_dsl/apply-report.json --selected-candidate-id cand_rg_fpc_escape_a_0001 --input-board input.kicad_pcb --output-board output.kicad_pcb

# fpga-large staged finish-readiness lane
pardal route-dsl fpga-large prepare --work-dir /tmp/pardal-fpga-large
pardal route-dsl fpga-large resume --work-dir /tmp/pardal-fpga-large
pardal route-dsl fpga-large report --work-dir /tmp/pardal-fpga-large

Mojo backend route quickstart

Routes an existing .kicad_pcb by extracting with KiCad 9 in Docker, routing on host backend, then applying back with KiCad 9 in Docker.

bash
pardal backend-route input.kicad_pcb \
  -o output.kicad_pcb \
  --docker-image kicad/kicad:9.0.6-full \
  --cfg tests/fixtures/parity_fixtures/mojo_cfgs/strict_spacing.json \
  --extract-timeout-s 120 \
  --route-timeout-s 120 \
  --apply-timeout-s 120

Useful debug artifacts:

  • --problem-json /path/problem.json
  • --routes-json /path/routes.json

Deprecated alias:

  • pardal rust-route (same behavior as backend-route, kept for compatibility)

Python API quickstart

python
from pathlib import Path
from pardal.board_builder import fpga_board
from pardal.routing_strategies import route_board
from pardal.kicad_writer import KicadWriter

board = (fpga_board(layers=4, width=40, height=40)
    .component("U1", "TQFP-32", (20, 20), value="FPGA")
    .component("C1", "0603", (12, 20), value="100nF")
    .net("VCC", "Power", [("U1", "8"), ("C1", "1")])
    .net("GND", "Power", [("U1", "16"), ("C1", "2")])
    .build())

result = route_board(board, "fpga")
print(f"Routed {result.nets_routed}/{result.nets_total} nets")

KicadWriter().write(board, Path("board.kicad_pcb"))

Atopile handoff (minimal)

bash
# Use the placed board produced by ato build
pardal route build/builds/default/default/default.kicad_pcb -o board_routed.kicad_pcb

# Optional: backend route instead of Python router
pardal backend-route build/builds/default/default/default.kicad_pcb -o board_routed.kicad_pcb

# Finalization uses system Python + pcbnew
/usr/bin/python3 -m pardal.finalize board_routed.kicad_pcb board_final.kicad_pcb

Finalization

pardal-finalize (or python -m pardal.finalize) is the production-oriented step that replaces simplified footprints and rebuilds zones using system pcbnew.

Testing

Fast checks:

bash
./venv/bin/python -m pytest -q tests/test_cli.py tests/test_repl.py tests/test_api_io.py tests/test_route_command.py
./venv/bin/python -m pytest -q tests/integration/test_routing_scenarios.py tests/integration/test_variable_widths.py

Troubleshooting

  • Error: docker permission denied: ensure your user can access Docker daemon.
  • backend-route timed out: increase --extract-timeout-s, --route-timeout-s, and --apply-timeout-s.
  • Missing backend binary/config behavior: run without --cfg first, then add config incrementally.

License

GNU Affero General Public License v3.0 (AGPL-3.0). See LICENSE.

Parts

325
QtyValueFootprintReferences
1A1TestPoint_Pad_D1.0mmTP1
1A10TestPoint_Pad_D1.0mmTP10
1A11TestPoint_Pad_D1.0mmTP11
1A12TestPoint_Pad_D1.0mmTP12
1A13TestPoint_Pad_D1.0mmTP13
1A14TestPoint_Pad_D1.0mmTP14
1A15TestPoint_Pad_D1.0mmTP15
1A16TestPoint_Pad_D1.0mmTP16
1A17TestPoint_Pad_D1.0mmTP17
1A18TestPoint_Pad_D1.0mmTP18
1A2TestPoint_Pad_D1.0mmTP2
1A3TestPoint_Pad_D1.0mmTP3
1A4TestPoint_Pad_D1.0mmTP4
1A5TestPoint_Pad_D1.0mmTP5
1A6TestPoint_Pad_D1.0mmTP6
1A7TestPoint_Pad_D1.0mmTP7
1A8TestPoint_Pad_D1.0mmTP8
1A9TestPoint_Pad_D1.0mmTP9
1B1TestPoint_Pad_D1.0mmTP19
1B10TestPoint_Pad_D1.0mmTP28
1B11TestPoint_Pad_D1.0mmTP29
1B12TestPoint_Pad_D1.0mmTP30
1B13TestPoint_Pad_D1.0mmTP31
1B14TestPoint_Pad_D1.0mmTP32
1B15TestPoint_Pad_D1.0mmTP33
1B16TestPoint_Pad_D1.0mmTP34
1B17TestPoint_Pad_D1.0mmTP35
1B18TestPoint_Pad_D1.0mmTP36
1B2TestPoint_Pad_D1.0mmTP20
1B3TestPoint_Pad_D1.0mmTP21
1B4TestPoint_Pad_D1.0mmTP22
1B5TestPoint_Pad_D1.0mmTP23
1B6TestPoint_Pad_D1.0mmTP24
1B7TestPoint_Pad_D1.0mmTP25
1B8TestPoint_Pad_D1.0mmTP26
1B9TestPoint_Pad_D1.0mmTP27
1C1TestPoint_Pad_D1.0mmTP37
1C10TestPoint_Pad_D1.0mmTP46
1C11TestPoint_Pad_D1.0mmTP47
1C12TestPoint_Pad_D1.0mmTP48
1C13TestPoint_Pad_D1.0mmTP49
1C14TestPoint_Pad_D1.0mmTP50
1C15TestPoint_Pad_D1.0mmTP51
1C16TestPoint_Pad_D1.0mmTP52
1C17TestPoint_Pad_D1.0mmTP53
1C18TestPoint_Pad_D1.0mmTP54
1C2TestPoint_Pad_D1.0mmTP38
1C3TestPoint_Pad_D1.0mmTP39
1C4TestPoint_Pad_D1.0mmTP40
1C5TestPoint_Pad_D1.0mmTP41
1C6TestPoint_Pad_D1.0mmTP42
1C7TestPoint_Pad_D1.0mmTP43
1C8TestPoint_Pad_D1.0mmTP44
1C9TestPoint_Pad_D1.0mmTP45
1D1TestPoint_Pad_D1.0mmTP55
1D10TestPoint_Pad_D1.0mmTP64
1D11TestPoint_Pad_D1.0mmTP65
1D12TestPoint_Pad_D1.0mmTP66
1D13TestPoint_Pad_D1.0mmTP67
1D14TestPoint_Pad_D1.0mmTP68
1D15TestPoint_Pad_D1.0mmTP69
1D16TestPoint_Pad_D1.0mmTP70
1D17TestPoint_Pad_D1.0mmTP71
1D18TestPoint_Pad_D1.0mmTP72
1D2TestPoint_Pad_D1.0mmTP56
1D3TestPoint_Pad_D1.0mmTP57
1D4TestPoint_Pad_D1.0mmTP58
1D5TestPoint_Pad_D1.0mmTP59
1D6TestPoint_Pad_D1.0mmTP60
1D7TestPoint_Pad_D1.0mmTP61
1D8TestPoint_Pad_D1.0mmTP62
1D9TestPoint_Pad_D1.0mmTP63
1E1TestPoint_Pad_D1.0mmTP73
1E10TestPoint_Pad_D1.0mmTP82
1E11TestPoint_Pad_D1.0mmTP83
1E12TestPoint_Pad_D1.0mmTP84
1E13TestPoint_Pad_D1.0mmTP85
1E14TestPoint_Pad_D1.0mmTP86
1E15TestPoint_Pad_D1.0mmTP87
1E16TestPoint_Pad_D1.0mmTP88

The 80 most common of 325 parts.

More from shyba/pardal

1
  • 4 layers42 × 27 mmFpga unrouted, the printed circuit board in 3D

    Fpga unrouted

    shyba/pardal

    A command-line PCB place & route tool.

    7 parts4

Similar boards

  • 4 layers103.5 × 48.3 mmButtonBd2, the printed circuit board in 3D

    ButtonBd2

    frc971/electrical

    This repo contains the electrical files for the 971 FRC team. The files include PCBs and the electrical system diagrams. The PCBs are created using KiCad.

    165 parts3Apache-2.0
  • 2 layers239.8 × 148.8 mmBMS 24S, the printed circuit board in 3D

    BMS 24S

    koson/e-Power-PCBs

    This repository contains all e-Power PCB projects

    1,142 parts
  • 2 layers91.4 × 52.1 mmMcu, the printed circuit board in 3D

    Mcu

    djmdjm/TU-2506V-ELS

    Electronic Leadscrew for Optimum TU-2506V-ELS lathe

    57 parts3ISC
  • 4 layers66 × 56.9 mmStm32h7b0rbt, the printed circuit board in 3D

    Stm32h7b0rbt

    ataradov/breakout-boards

    Random collection of breakout boards

    163 parts16
  • 16 layers167 × 111.2 mmLR P3A, the printed circuit board in 3D

    LR P3A

    Lightiam/Fab07

    ASIC-NCE

    44 partsBSD-3-Clause
  • 2 layers31.2 × 21 mmSmall-7 legacy, the printed circuit board in 3D

    Small-7 legacy

    NVlabs/Cypress

    Cypress is a scalable, GPU-accelerated PCB placement method inspired by VLSI. It incorporates tailored cost functions, constraint handling, and optimized techniques adapted for PCB layouts.

    52 parts56Apache-2.0
  • 4 layers49.5 × 49.5 mmOwmH7D, the printed circuit board in 3D

    OwmH7D

    kanengomibako/EffectsPedals

    118 parts14Unlicense
  • 2 layers30.4 × 25.2 mmStm32Board, the printed circuit board in 3D

    Stm32Board

    Heorenmaru/Hardware

    69 parts1CC-BY-SA-4.0

Questions

How big is the Fpga large csg324 breakout PCB?

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

What parts does the Fpga large csg324 breakout use?

325 parts, built around the A13, E15, B10 and B13. 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 Fpga large csg324 breakout KiCad files?

From the shyba/pardal repository on GitHub, at the commit this page was made from: the board is examples/fpga_large/fpga_large_csg324_breakout.kicad_pcb. PCBKit opens the board in the browser, with nothing to install.

Can I use the Fpga large csg324 breakout design in my own project?

Its repository states no licence, so its author keeps all rights: ask shyba before reusing the design.