Skip to the content
4 layers72 × 59 mmTestBench, the printed circuit board in 3D

Validation environment for the VLSI SoC project. This repository integrates mechanical and PCB designs for a dedicated testrig with FPGA-based gateware and Python-driven software abstractions to facilitate full-chip characterization and functional verification of the ASIC

Size
72 × 59 mm
Copper layers
4
Thickness
1.6 mm
Parts
69
Nets
115
Pads
356
Tracks, vias
844, 83
Pours
10
Routed
Yes
KiCad
KiCad 8.0 (file 20240108)
Created
10 Mar 2026
Updated
20 Jun 2026

Overview

TestBench is an open-source printed circuit board by ELEC70142-VLSI-Coursework, from the ELEC70142-VLSI-Coursework/vlsi_test_platform repository on GitHub. It is a 4-layer board of 72 × 59 mm with 69 parts on 115 nets, routed with 844 tracks and 83 vias.

It is built around the 74LVC1G17Z, 74LVC1G04Z and MIC5504-1.2YM5-TR, with the MIC5504-3.3YM5, USBLC6-2SC6 and 54020-44030LF among its other parts. Its parts include 24 resistors, 13 capacitors, 9 ICs, 3 diodes and 3 connectors. It belongs with the fPGA and programmable logic boards of this library.

Main components

8

README

README.md

VLSI Test Platform

A complete hardware and software solution for bringing up and testing the VLSI SoC Project IC. This repository contains the FPGA firmware, Python host tools, and hardware design documentation.

System Overview

The test platform consists of three integrated components:

Directory Structure

text
vlsi_test_platform/
├── gw/                    # FPGA Firmware (DE10-Lite)
│   ├── src/              # SystemVerilog modules
│   │   ├── DE10Top.sv    # Top-level module
│   │   ├── jtag_uart_bridge.sv
│   │   ├── jtag_engine.sv
│   │   ├── dac_commander.sv
│   │   ├── i2c_master.sv
│   │   └── uart_*.sv     # UART controller modules
│   ├── test/             # DUT (Device Under Test) bitstreams
│   └── README.md         # FPGA documentation
│
├── sw/                    # Host-Side Python Tools
│   ├── JTAGProg.py       # JTAG programmer and tester
│   └── README.md         # Python tool documentation
│
├── hw/                    # Test Board PCB Design
│   ├── [Schematic/Layout files]
│   └── README.md         # Hardware documentation
│
└── README.md             # This file

Quick Start

Prerequisites

  1. Hardware: DE10-Lite FPGA board and VLSI test board
  2. Software: Quartus Prime, Python 3.6+, pyserial

1. Program the FPGA

  1. Load the compiled FPGA design (.sof file) onto the DE10-Lite using Quartus Programmer
  2. The FPGA automatically configures the test board DAC after reset
  3. Verify that the USB-UART bridge is recognized on your host computer

2. Program the IC via JTAG

bash
# Test mode: verify JTAG communication with a known pattern
python JTAGProg.py COM4 --test-mode --word-count 256

# Load mode: program memory from a hex file
python JTAGProg.py COM4 program.hex

See sw/README.md for full usage details.

3. Verify the Setup

  • Check that the test board LEDs indicate correct power and USB connection
  • Monitor JTAG read/write throughput in the python interface output
  • Inspect the IC power supplies and clock signals with an oscilloscope if needed

Component Details

FPGA Firmware (gw/)

The DE10-Lite FPGA implements:

  • UART-to-JTAG Bridge: Converts serial bytes to JTAG protocol for IC programming
  • I2C Master: Configures the DAC for PLL bias voltages
  • Clock Generator: Produces a test clock output

Read more

Python Host Tool (sw/)

JTAGProg.py provides:

  • Test Mode: Random write/read verification for JTAG communication
  • Load Mode: Program IC memory from a plain-text hex file
  • Performance Monitoring: Reports read/write throughput and errors

Read more

Test Board Hardware (hw/)

The PCB includes:

  • PLCC socket for the VLSI IC
  • Power management (3.3 V and 1.2 V LDOs)
  • DAC for PLL bias voltage tuning
  • USB-to-UART bridge (CP2102N)
  • FPGA connector for control signals (JTAG, I2C, clock)
  • Reset button and DIP switch for PLL frequency selection

Read more

References

Parts

69
QtyValueFootprintReferences
114k2Resistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolderR1, R2, R3, R4, R5, R6, R7, R8, R13, R14, R22
7TestPointTestPoint:TestPoint_Pad_D1.0mmTP1, TP4, TP5, TP6, TP7, TP8, TP9
5100nCapacitor_SMD:C_0805_2012Metric_Pad1.18x1.45mm_HandSolderC5, C6, C7, C11, C12
310uCapacitor_SMD:C_0805_2012Metric_Pad1.18x1.45mm_HandSolderC3, C10, C13
31uCapacitor_SMD:C_0805_2012Metric_Pad1.18x1.45mm_HandSolderC1, C2, C4
3330RResistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolderR9, R15, R16
3LEDLED_SMD:LED_0805_2012Metric_Pad1.15x1.40mm_HandSolderD1, D2, D3
2100RResistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolderR11, R12
233RResistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolderR23, R24
25.1kResistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolderR17, R18
26pCapacitor_SMD:C_0805_2012Metric_Pad1.18x1.45mm_HandSolderC8, C9
2Jumper_3_OpenConnector_PinHeader_2.54mm:PinHeader_1x03_P2.54mm_VerticalJP1, JP2
2SolderJumper_3_OpenJumper:SolderJumper-3_P1.3mm_Open_RoundedPad1.0x1.5mmJP4, JP5
2~Connector_PinHeader_2.54mm:PinHeader_2x20_P2.54mm_VerticalU1, U2
10RResistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolderR21
11kResistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolderR10
122.1kResistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolderR19
147.5kResistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolderR20
154020-44030LFFootprints:5402044030LFJ4
174LVC1G04Package_TO_SOT_SMD:SOT-353_SC-70-5U8
174LVC1G17Package_TO_SOT_SMD:SOT-353_SC-70-5U9
1ADE04S04Footprints:ADE04S04S1
1CP2102N-Axx-xQFN24Package_DFN_QFN:QFN-24-1EP_4x4mm_P0.5mm_EP2.6x2.6mmU6
1Conn_01x02_SocketFootprints:CTB30512BKJ2
1Crystal_GND24Crystal:Crystal_SMD_3225-4Pin_3.2x2.5mmY1
1DAC7578xRGEPackage_DFN_QFN:QFN-24-1EP_4x4mm_P0.5mm_EP2.6x2.6mmU5
1LOGOLOGOG***
1MIC5504-1.2YM5Package_TO_SOT_SMD:SOT-23-5U3
1MIC5504-3.3YM5Package_TO_SOT_SMD:SOT-23-5U4
1MountingHoleMountingHole:MountingHole_3.2mm_M3H1
1SLW-118562-4A-N-DFootprints:SLW1185624ANDS2
1TS04-66-73-BK-100-SMTFootprints:TS046665BK160SMTSW1
1USBLC6-2SC6Package_TO_SOT_SMD:SOT-23-6U7
1USB_C_Receptacle_USB2.0_16PConnector_USB:USB_C_Receptacle_GCT_USB4105-xx-A_16P_TopMnt_HorizontalJ5

Similar boards

  • 4 layers108 × 109.6 mmBMS - PCB Files, the printed circuit board in 3D

    BMS - PCB Files

    arihant-o/IEM-Electronics

    GitHub repository for the electronics projects within IEM.

    139 parts
  • 2 layers25.6 × 0 mmIce40 wearable v1, the printed circuit board in 3D

    Ice40 wearable v1

    asinghani/ice40-wearable

    iCE40 FPGA boards in wearable form-factors

    63 parts
  • 4 layers25 × 45 mmBig sammy, the printed circuit board in 3D

    Big sammy

    kitspace-test-repos/kicad6-file-collection

    69 partsMIT
  • 4 layers100 × 132.5 mmIcE1usb panel, the printed circuit board in 3D

    IcE1usb panel

    osmocom/osmo-e1-hardware

    Osmocom open source E1 (TDM) hardware; mirror of https://gitea.osmocom.org/retronetworking/osmo-e1-hardware

    240 parts9
  • 4 layers99.1 × 83.8 mmIbm-5151-pcb, the printed circuit board in 3D

    Ibm-5151-pcb

    asinghani/ibm-5151-controller

    Building a VT100 emulator out of an IBM 5151 monitor and an FPGA

    85 partsMIT
  • 2 layers68 × 38 mmIce40troika, the printed circuit board in 3D

    Ice40troika

    aliakseimakarau/troika_ice40

    Troika hardware accelerator for ice40 FPGAs

    74 parts
  • 4 layers83.1 × 92.5 mmTildagon base, the printed circuit board in 3D

    Tildagon base

    emfcamp/badge-2024-hardware

    183 parts40
  • 4 layers622.7 × 375.7 mmCft ctl, the printed circuit board in 3D

    Cft ctl

    alexiosc/cft

    The CFT homebrew minicomputer

    215 parts6GPL-3.0

Questions

How big is the TestBench PCB?

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

What parts does the TestBench use?

69 parts, built around the 74LVC1G17Z, 74LVC1G04Z, MIC5504-1.2YM5-TR and MIC5504-3.3YM5. 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 TestBench KiCad files?

From the ELEC70142-VLSI-Coursework/vlsi_test_platform repository on GitHub, at the commit this page was made from: the board is hw/kicad/TestBench.kicad_pcb and its schematic hw/kicad/TestBench.kicad_sch. PCBKit opens the board in the browser, with nothing to install.

Can I use the TestBench design in my own project?

Its repository states no licence, so its author keeps all rights: ask ELEC70142-VLSI-Coursework before reusing the design.