

Fpga large csg324 breakout
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
12A13
TQFP-176(20x20)TQFP-176(20x20) Microcontrollers (MCU/MPU/SOC) ROHSAllwinner TechMicrocontroller Units (MCUs/MPUs/SOCs)E15
0-12VDC to 1.5kVDC, Iout (max) 2mA, 3W DC-DC ConverterXP PowerUncategorisedB10
-- Body Worn CameraMALUCPUncategorisedB13
插件,D2.5xL9mmThermal Fuses (TCO)SETsafe | SETfuseB16
-- Body Worn CameraMALUCPUncategorisedB18
插件,D3xL10mmThermal Fuses (TCO)SETsafe | SETfuseC13
插件,D3.3xL11.5mmThermal Fuses (TCO)SETsafe | SETfuseC14
LS71.9 L53.3 x D8.5Vitreous Enamelled Wirewound High Power Resistor - C SeriesTYCO ELECTRONICSUncategorisedC18
插件,D3.3xL15mmThermal Fuses (TCO)SETsafe | SETfuseD12
SOD-123FLSchottky DiodesDIYI Elec TechD14
SOD-123F1A 40V 550mV@1A SOD-123F Schottky Diodes ROHSDIYI Elec TechSchottky DiodesD16
SOD-123F-55℃~+150℃ 1 Independent 100uA@60V 1A 60V 700mV@1A SOD-123F Schottky Diodes ROHSDIYI Elec TechSchottky Diodes
README
README.mdPardal PCB
Command-line PCB place & route tool with a Python API and a Mojo backend route path.

What this project covers
- Python-native board construction and routing workflows
- CLI flows for
build,place,route,drc, andrepl - FreeRouting interop (
freeroute) - Mojo backend routing (
backend-route) using KiCad 9 in Docker for extract/apply
Requirements
- Python 3.10+
- Docker (required for
backend-routeandfreeroute) - KiCad on host is optional for backend-route/freeroute (Docker supplies KiCad 9 there)
- System
pcbnewis required forpardal-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
python3 -m venv venv
./venv/bin/pip install -U pip
./venv/bin/pip install -e .Optional global shortcut:
pip install -e .
pardal --helpCLI quickstart
# 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 replRoute DSL workflow
The route DSL commands stage artifacts only. They are not release-ready, JLC-ready, or orderable claims.
# 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-largeMojo 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.
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 120Useful debug artifacts:
--problem-json /path/problem.json--routes-json /path/routes.json
Deprecated alias:
pardal rust-route(same behavior asbackend-route, kept for compatibility)
Python API quickstart
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)
# 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_pcbFinalization
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:
./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.pyTroubleshooting
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
--cfgfirst, then add config incrementally.
License
GNU Affero General Public License v3.0 (AGPL-3.0). See LICENSE.
Parts
325| Qty | Value | Footprint | References |
|---|---|---|---|
| 1 | A1 | TestPoint_Pad_D1.0mm | TP1 |
| 1 | A10 | TestPoint_Pad_D1.0mm | TP10 |
| 1 | A11 | TestPoint_Pad_D1.0mm | TP11 |
| 1 | A12 | TestPoint_Pad_D1.0mm | TP12 |
| 1 | A13 | TestPoint_Pad_D1.0mm | TP13 |
| 1 | A14 | TestPoint_Pad_D1.0mm | TP14 |
| 1 | A15 | TestPoint_Pad_D1.0mm | TP15 |
| 1 | A16 | TestPoint_Pad_D1.0mm | TP16 |
| 1 | A17 | TestPoint_Pad_D1.0mm | TP17 |
| 1 | A18 | TestPoint_Pad_D1.0mm | TP18 |
| 1 | A2 | TestPoint_Pad_D1.0mm | TP2 |
| 1 | A3 | TestPoint_Pad_D1.0mm | TP3 |
| 1 | A4 | TestPoint_Pad_D1.0mm | TP4 |
| 1 | A5 | TestPoint_Pad_D1.0mm | TP5 |
| 1 | A6 | TestPoint_Pad_D1.0mm | TP6 |
| 1 | A7 | TestPoint_Pad_D1.0mm | TP7 |
| 1 | A8 | TestPoint_Pad_D1.0mm | TP8 |
| 1 | A9 | TestPoint_Pad_D1.0mm | TP9 |
| 1 | B1 | TestPoint_Pad_D1.0mm | TP19 |
| 1 | B10 | TestPoint_Pad_D1.0mm | TP28 |
| 1 | B11 | TestPoint_Pad_D1.0mm | TP29 |
| 1 | B12 | TestPoint_Pad_D1.0mm | TP30 |
| 1 | B13 | TestPoint_Pad_D1.0mm | TP31 |
| 1 | B14 | TestPoint_Pad_D1.0mm | TP32 |
| 1 | B15 | TestPoint_Pad_D1.0mm | TP33 |
| 1 | B16 | TestPoint_Pad_D1.0mm | TP34 |
| 1 | B17 | TestPoint_Pad_D1.0mm | TP35 |
| 1 | B18 | TestPoint_Pad_D1.0mm | TP36 |
| 1 | B2 | TestPoint_Pad_D1.0mm | TP20 |
| 1 | B3 | TestPoint_Pad_D1.0mm | TP21 |
| 1 | B4 | TestPoint_Pad_D1.0mm | TP22 |
| 1 | B5 | TestPoint_Pad_D1.0mm | TP23 |
| 1 | B6 | TestPoint_Pad_D1.0mm | TP24 |
| 1 | B7 | TestPoint_Pad_D1.0mm | TP25 |
| 1 | B8 | TestPoint_Pad_D1.0mm | TP26 |
| 1 | B9 | TestPoint_Pad_D1.0mm | TP27 |
| 1 | C1 | TestPoint_Pad_D1.0mm | TP37 |
| 1 | C10 | TestPoint_Pad_D1.0mm | TP46 |
| 1 | C11 | TestPoint_Pad_D1.0mm | TP47 |
| 1 | C12 | TestPoint_Pad_D1.0mm | TP48 |
| 1 | C13 | TestPoint_Pad_D1.0mm | TP49 |
| 1 | C14 | TestPoint_Pad_D1.0mm | TP50 |
| 1 | C15 | TestPoint_Pad_D1.0mm | TP51 |
| 1 | C16 | TestPoint_Pad_D1.0mm | TP52 |
| 1 | C17 | TestPoint_Pad_D1.0mm | TP53 |
| 1 | C18 | TestPoint_Pad_D1.0mm | TP54 |
| 1 | C2 | TestPoint_Pad_D1.0mm | TP38 |
| 1 | C3 | TestPoint_Pad_D1.0mm | TP39 |
| 1 | C4 | TestPoint_Pad_D1.0mm | TP40 |
| 1 | C5 | TestPoint_Pad_D1.0mm | TP41 |
| 1 | C6 | TestPoint_Pad_D1.0mm | TP42 |
| 1 | C7 | TestPoint_Pad_D1.0mm | TP43 |
| 1 | C8 | TestPoint_Pad_D1.0mm | TP44 |
| 1 | C9 | TestPoint_Pad_D1.0mm | TP45 |
| 1 | D1 | TestPoint_Pad_D1.0mm | TP55 |
| 1 | D10 | TestPoint_Pad_D1.0mm | TP64 |
| 1 | D11 | TestPoint_Pad_D1.0mm | TP65 |
| 1 | D12 | TestPoint_Pad_D1.0mm | TP66 |
| 1 | D13 | TestPoint_Pad_D1.0mm | TP67 |
| 1 | D14 | TestPoint_Pad_D1.0mm | TP68 |
| 1 | D15 | TestPoint_Pad_D1.0mm | TP69 |
| 1 | D16 | TestPoint_Pad_D1.0mm | TP70 |
| 1 | D17 | TestPoint_Pad_D1.0mm | TP71 |
| 1 | D18 | TestPoint_Pad_D1.0mm | TP72 |
| 1 | D2 | TestPoint_Pad_D1.0mm | TP56 |
| 1 | D3 | TestPoint_Pad_D1.0mm | TP57 |
| 1 | D4 | TestPoint_Pad_D1.0mm | TP58 |
| 1 | D5 | TestPoint_Pad_D1.0mm | TP59 |
| 1 | D6 | TestPoint_Pad_D1.0mm | TP60 |
| 1 | D7 | TestPoint_Pad_D1.0mm | TP61 |
| 1 | D8 | TestPoint_Pad_D1.0mm | TP62 |
| 1 | D9 | TestPoint_Pad_D1.0mm | TP63 |
| 1 | E1 | TestPoint_Pad_D1.0mm | TP73 |
| 1 | E10 | TestPoint_Pad_D1.0mm | TP82 |
| 1 | E11 | TestPoint_Pad_D1.0mm | TP83 |
| 1 | E12 | TestPoint_Pad_D1.0mm | TP84 |
| 1 | E13 | TestPoint_Pad_D1.0mm | TP85 |
| 1 | E14 | TestPoint_Pad_D1.0mm | TP86 |
| 1 | E15 | TestPoint_Pad_D1.0mm | TP87 |
| 1 | E16 | TestPoint_Pad_D1.0mm | TP88 |
The 80 most common of 325 parts.
More from shyba/pardal
1- 4 layers42 × 27 mm

Similar boards
- 4 layers103.5 × 48.3 mm

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 mm

- 2 layers91.4 × 52.1 mm

- 4 layers66 × 56.9 mm

- 16 layers167 × 111.2 mm

- 2 layers31.2 × 21 mm

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 mm

- 2 layers30.4 × 25.2 mm

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.