Skip to the content
PCBKitNew board
4 layers95 × 95 mmRaw, the printed circuit board in 3D

resolution = [0.5, 0.5] pcbfolder = '../PCBs/' pcbnames = ["1Bitsy1bitsy"] iters = 30 env = PCBRoutingEnv(resolution=resolution, pcbfolder=pcbfolder, pcbnames=pcbnames) obs, info = env.reset() for in range(iters): act =…

Size
95 × 95 mm
Copper layers
4
Thickness
1.6 mm
Parts
455
Nets
284
Pads
1,327
Tracks, vias
2,801, 532
Pours
50
Routed
Yes
KiCad
KiCad 5 (file 20171130)
Created
28 Mar 2023
Updated
18 Jan 2024

Overview

Raw is an open-source printed circuit board by PCBench, from the PCBench/PCBench repository on GitHub, published under the MIT licence. It is a 4-layer board of 95 × 95 mm with 455 parts on 284 nets, routed with 2,801 tracks and 532 vias.

It is built around the LM6144AIM, ADS7828E and LTC4411ES5, with the TL1451ACD, 2N7002K and DMP2066LDM-7-VB among its other parts. Its parts include 208 resistors, 167 capacitors, 21 ICs, 18 transistors and 12 diodes.

Main components

12

README

README.md

PCBench: A Dataset for Printed Circuit Board Routing

PCBench is a dataset for PCB routing task, it includes a dataset consisting of 164 printed circuit boards (PCB), a data augmentation script to expand the dataset for supervised learning (SL) tasks, and a reinforcement learning (RL) environment.

Dataset

Folder Structure

All the PCB designs in our dataset are stored in the folder PCBs, where each PCB design is stored in a subfolder named {author/org}_{PCB_name}_{design_version(optional)}. Below is the folder structure of the dataset.

text
├── PCBs
│   ├── master_metadata.json
│   ├── subfolder1
│   │   ├── raw.kicad_pcb
│   │   ├── processed.kicad_pcb
│   │   ├── final.json
│   │   ├── metadata.json
│   │   ├── visual.png
│   ├── subfolder2
│   │   ├── raw.kicad_pcb
│   │   ├── processed.kicad_pcb
│   │   ├── final.json
│   │   ├── metadata.json
│   │   ├── visual.png
│   ├── ...

The raw.kicad_pcb is the raw PCB design file, process.kicad_pcb is the file after cleaning up, final.json stores only routing-related information used for ML tasks. metadata.json stores the meta information for each single PCB design. visual.png is a visualization of each single PCB design. master_meta.json contains metadata of all PCBs and global-level information.

PCB Routing Description Language (PCB-RDL)

We propose a JSON specification (final.json for each PCB design) called the PCB Routing Description Language (PCB-RDL) that expresses a PCB routing problem and its solutions intuitively using basic concepts in order to facilitate research into automated PCB routing using ML. Following figure shows is an example of PCB with marked components in PCB-RDL (Left) and it corrsponding PCB-RDL (Right).

PCB example

Data Augmentation

Run

The augmentation data can be generated with the script Scripts/Data_augmentation/augmentation.py. To generate 3 samples by randomly extracting 50% nets from the PCB 1Bitsy_1bitsy, please run the following command

text
cd Scripts/Data_augmentation/
python augmentation.py --num_samples 3 --net_ratio 0.5 --pcb_name 1Bitsy_1bitsy

Output

All the generated PCBs will be stored in the folder named augmented_data under Scripts/Data_augmentation/. In augmented_data, all the generated samples will be stored in a subfolder with the name of selected PCB. Each generated sample has the name sample_index.json. For example, the above command will generate the following file under Scripts/Data_augmentation/

text
├── augmented_data
│   ├── 1Bitsy_1bitsy
│   │   ├── 1.json
│   │   ├── 2.json
│   │   ├── 3.json

RL environment

Installation

The RL environment requires Python >= 3.7. You can simply install the environment with the following commands:

text
git clone https://github.com/PCBench/PCBench.git
cd PCBench
python setup.py install

After installation, open a Python console and type

text
from RLEnv.EnvLayer.PCBRoutingEnv import PCBRoutingEnv

If no error occurs, you have successfully installed the PCB routing environment.

API Usage

The following content shows an example of API usage of PCBRoutingEnv.

text
from RLEnv.EnvLayer.PCBRoutingEnv import PCBRoutingEnv
import random

resolution = [0.5, 0.5]
pcb_folder = '../PCBs/'
pcb_names = ["1Bitsy_1bitsy"]
iters = 30
env = PCBRoutingEnv(resolution=resolution, pcb_folder=pcb_folder, pcb_names=pcb_names)
obs, info = env.reset()
for _ in range(iters):
    act = random.randint(0,5)
    obs, rew, terminal, _, info = env.step(act)
    if terminal:
        env.reset()

You can find more examples of customizing functions of reward and state observation from RLEnv/examples.ipynb.

Parts

455
QtyValueFootprintReferences
550.1uFC0402C1, C10, C11, C15, C129, C132, C135, C138, C141, C144, C145, C149, C150, C156, C157, C158 +39
3310KR0402R104, R154, R183, R189, R190, R191, R192, R193, R194, R195, R196, R197, R198, R199, R200, R227 +17
24249KR0402R12, R13, R16, R19, R109, R110, R113, R116, R138, R139, R142, R145, R167, R168, R171, R174 +8
231uFC0402C12, C14, C42, C67, C72, C77, C78, C102, C103, C109, C110, C116, C117, C123, C124, C127 +7
201uFC0603C6, C13, C17, C46, C51, C55, C58, C60, C68, C69, C148, C151, C152, C153, C154, C155 +4
183.32KR0402R21, R26, R60, R65, R76, R89, R118, R123, R133, R147, R152, R176, R181, R214, R223, R232 +2
120.012uFC0402C4, C31, C90, C92, C97, C99, C104, C106, C111, C113, C118, C120
120.015uFC0402C9, C27, C36, C45, C49, C54, C63, C94, C101, C108, C115, C122
12261R0402R2, R6, R48, R70, R105, R106, R162, R163, R219, R220, R228, R229
124.75KR0402R7, R27, R66, R74, R95, R124, R128, R153, R164, R182, R221, R230
1247uFC1210C5, C7, C23, C25, C32, C34, C41, C43, C50, C52, C59, C61
12820pFC0402C22, C40, C91, C93, C98, C100, C105, C107, C112, C114, C119, C121
12DNPR0402R63, R69, R72, R77, R88, R90, R98, R99, R101, R103, R117, R119
12DNPC0402C130, C131, C133, C134, C136, C137, C139, C140, C142, C143, C146, C147
730.1KR0402R187, R202, R204, R206, R208, R210, R212
61.54KR0402R8, R75, R132, R213, R222, R231
6100R0402R14, R53, R82, R111, R140, R169
62.49KR0402R15, R54, R83, R112, R141, R170
62.4KR0402R25, R64, R93, R122, R151, R180
6205KR0402R61, R71, R85, R92, R100, R114
6220pFC0402C2, C20, C29, C38, C47, C56
622uHCLF7045TL1, L2, L3, L4, L5, L6
624.3KR0402R23, R62, R91, R120, R149, R178
627KR0402R18, R57, R86, R115, R144, R173
62KR0402R11, R50, R79, R108, R137, R166
62N7002KSOT23Q4, Q8, Q12, Q16, Q17, Q18
64.99KR0402R5, R44, R73, R102, R131, R160
647KR0402R47, R96, R125, R161, R218, R236
651.1KR0402R201, R203, R205, R207, R209, R211
66.04R0603R10, R49, R78, R107, R136, R165
66.49KR0402R29, R68, R97, R126, R155, R184
6DMP2066LDM-7SOT26Q1, Q5, Q9, Q13, Q14, Q15
6FIDUCIALFD1FD1, FD2, FD3, FD4, FD5, FD6
6LM6144ASO14U3, U10, U13, U16, U19, U22
6LTC4411TSOT23-5U1, U8, U11, U14, U17, U20
6MMDT2227MSOT26Q2, Q3, Q6, Q7, Q10, Q11
6MPMT4001AT1SOT23R1, R3, R4, R17, R20, R24
6PMEG3020EPSOD128D1, D2, D3, D4, D5, D6
6SDM10U45-7SOD523D7, D8, D9, D10, D11, D12
6TL1451APW16U2, U9, U12, U15, U18, U21
4CONN_1FOX_Mounting_HoleP7, P8, P9, P10
4CONN_5X2MEC1-105-02-L-D-NP-AP1, P2, P3, P4
3NFL21SP106X1C3DNFL21SPF2, F3, F4
20.051R0603R22, R185
20.39uFC0603C125, C126
2ADS7828PW16U5, U7
10.01uFC0402C128
110uHSLF6045L7
1330R0402R38
140.2KR0402R188
171.5KR0402R37
19.09KR0402R39
1AMSAT_LOGO_SMALLAMSAT_Logo_SmallG1
1INA195SOT23-5U23
1NTCS0603E3103FMTR0603TH1
1QSH-030-01-X-D-AQSH-030-01-L-D-AP5
1QTH-030-02-X-D-AQTH-030-02-L-D-AP6
1RIT_LOGO_SMALLRIT_Logo_SmallG2

Questions

How big is the Raw PCB?

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

What parts does the Raw use?

455 parts, built around the LM6144AIM, ADS7828E, LTC4411ES5 and TL1451ACD. 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 Raw KiCad files?

From the PCBench/PCBench repository on GitHub, at the commit this page was made from: the board is PCBs/Fox-1-MPPT_TL1451_MPPT_Flight_Rev1/raw.kicad_pcb. PCBKit opens the board in the browser, with nothing to install.

Can I use the Raw design in my own project?

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

More from PCBench/PCBench

12
  • 2 layers398.2 × 398.2 mmLargeWordClock LargeKickstarter, the printed circuit board in 3D

    LargeWordClock LargeKickstarter

    PCBench/PCBench

    resolution = [0.5, 0.5] pcbfolder = '../PCBs/' pcbnames = ["1Bitsy1bitsy"] iters = 30 env = PCBRoutingEnv(resolution=resolution, pcbfolder=pcbfolder, pcbnames=pcbnames) obs, info = env.reset() for in range(iters): act =…

    1,591 parts21MIT
  • 2 layers90 × 90 mmMod12003 mod12003, the printed circuit board in 3D

    Mod12003 mod12003

    PCBench/PCBench

    resolution = [0.5, 0.5] pcbfolder = '../PCBs/' pcbnames = ["1Bitsy1bitsy"] iters = 30 env = PCBRoutingEnv(resolution=resolution, pcbfolder=pcbfolder, pcbnames=pcbnames) obs, info = env.reset() for in range(iters): act =…

    452 parts21MIT
  • 2 layers88.9 × 114.3 mmRaw, the printed circuit board in 3D

    Raw

    PCBench/PCBench

    resolution = [0.5, 0.5] pcbfolder = '../PCBs/' pcbnames = ["1Bitsy1bitsy"] iters = 30 env = PCBRoutingEnv(resolution=resolution, pcbfolder=pcbfolder, pcbnames=pcbnames) obs, info = env.reset() for in range(iters): act =…

    190 parts21MIT
  • 2 layers100 × 100 mmMod1base mod1base, the printed circuit board in 3D

    Mod1base mod1base

    PCBench/PCBench

    resolution = [0.5, 0.5] pcbfolder = '../PCBs/' pcbnames = ["1Bitsy1bitsy"] iters = 30 env = PCBRoutingEnv(resolution=resolution, pcbfolder=pcbfolder, pcbnames=pcbnames) obs, info = env.reset() for in range(iters): act =…

    187 parts21MIT
  • 6 layers117 × 55 mmKiwiSDR PCB kiwi, the printed circuit board in 3D

    KiwiSDR PCB kiwi

    PCBench/PCBench

    resolution = [0.5, 0.5] pcbfolder = '../PCBs/' pcbnames = ["1Bitsy1bitsy"] iters = 30 env = PCBRoutingEnv(resolution=resolution, pcbfolder=pcbfolder, pcbnames=pcbnames) obs, info = env.reset() for in range(iters): act =…

    173 parts21MIT
  • 4 layers143 × 74 mmKitspace lpa96, the printed circuit board in 3D

    Kitspace lpa96

    PCBench/PCBench

    resolution = [0.5, 0.5] pcbfolder = '../PCBs/' pcbnames = ["1Bitsy1bitsy"] iters = 30 env = PCBRoutingEnv(resolution=resolution, pcbfolder=pcbfolder, pcbnames=pcbnames) obs, info = env.reset() for in range(iters): act =…

    161 parts21MIT
  • 2 layers101.6 × 99.7 mmRaw, the printed circuit board in 3D

    Raw

    PCBench/PCBench

    resolution = [0.5, 0.5] pcbfolder = '../PCBs/' pcbnames = ["1Bitsy1bitsy"] iters = 30 env = PCBRoutingEnv(resolution=resolution, pcbfolder=pcbfolder, pcbnames=pcbnames) obs, info = env.reset() for in range(iters): act =…

    158 parts21MIT
  • 4 layers36.1 × 32.7 mmKitspace tri panel 4up r0.1, the printed circuit board in 3D

    Kitspace tri panel 4up r0.1

    PCBench/PCBench

    resolution = [0.5, 0.5] pcbfolder = '../PCBs/' pcbnames = ["1Bitsy1bitsy"] iters = 30 env = PCBRoutingEnv(resolution=resolution, pcbfolder=pcbfolder, pcbnames=pcbnames) obs, info = env.reset() for in range(iters): act =…

    157 parts21MIT
  • 2 layers101.6 × 99.7 mmKarabas nano karabas nano revB, the printed circuit board in 3D

    Karabas nano karabas nano revB

    PCBench/PCBench

    resolution = [0.5, 0.5] pcbfolder = '../PCBs/' pcbnames = ["1Bitsy1bitsy"] iters = 30 env = PCBRoutingEnv(resolution=resolution, pcbfolder=pcbfolder, pcbnames=pcbnames) obs, info = env.reset() for in range(iters): act =…

    147 parts21MIT
  • 4 layers65 × 60 mmReworkctf reworkctf, the printed circuit board in 3D

    Reworkctf reworkctf

    PCBench/PCBench

    resolution = [0.5, 0.5] pcbfolder = '../PCBs/' pcbnames = ["1Bitsy1bitsy"] iters = 30 env = PCBRoutingEnv(resolution=resolution, pcbfolder=pcbfolder, pcbnames=pcbnames) obs, info = env.reset() for in range(iters): act =…

    143 parts21MIT
  • 2 layers99.1 × 99.1 mmRaw, the printed circuit board in 3D

    Raw

    PCBench/PCBench

    resolution = [0.5, 0.5] pcbfolder = '../PCBs/' pcbnames = ["1Bitsy1bitsy"] iters = 30 env = PCBRoutingEnv(resolution=resolution, pcbfolder=pcbfolder, pcbnames=pcbnames) obs, info = env.reset() for in range(iters): act =…

    77 parts21MIT
  • 2 layers645.9 × 78.2 mmAnalog esr meter esr meter rev a, the printed circuit board in 3D

    Analog esr meter esr meter rev a

    PCBench/PCBench

    resolution = [0.5, 0.5] pcbfolder = '../PCBs/' pcbnames = ["1Bitsy1bitsy"] iters = 30 env = PCBRoutingEnv(resolution=resolution, pcbfolder=pcbfolder, pcbnames=pcbnames) obs, info = env.reset() for in range(iters): act =…

    71 parts21MIT

Similar boards

  • 2 layers169.3 × 128 mmPSU PCB, the printed circuit board in 3D

    PSU PCB

    ThomasVDD/SmartSupply

    SmartSupply is a digital battery powered lab powersupply. It is Arduino compatible and can be controlled via PC over USB.

    134 parts96
  • 4 layers160 × 100 mmADC7177B1, the printed circuit board in 3D

    ADC7177B1

    BehrensG/ADC7177M1

    ADC module based on AD7177-2.

    262 parts
  • 4 layers150 × 95 mmSkysweep32 rev c, the printed circuit board in 3D

    Skysweep32 rev c

    bobberdolle1/SkySweep32

    Open-source passive multi-band RF monitoring system | 855–925 MHz, 2.4 GHz, 5.8 GHz | Rev C first prototype

    103 parts33GPL-3.0
  • 2 layers161.9 × 73.7 mmTangNano20KDock, the printed circuit board in 3D

    TangNano20KDock

    hoglet67/TangNano20KDock

    A dock board for Beeb FPGA on the Tang Nano 20K

    84 parts3
  • 2 layers62 × 129 mmEsp32-main, the printed circuit board in 3D

    Esp32-main

    nicolaeandreivasile/bike-embedded-app

    Embedded application for bikes that collect and display various riding data.

    93 parts1
  • 4 layers47.5 × 62 mmDraco, the printed circuit board in 3D

    Draco

    xdandys/draco

    Flight controller powered by TauLabs

    164 parts8
  • 4 layers90.8 × 47 mmPickit, the printed circuit board in 3D

    Pickit

    ananevego/ProjectFreeCad

    Конвертер библиотечных footprint-файлов KiCad .kicadmod в самостоятельные библиотеки FreePCB2 .fpl. Написан на Python 3.10+, внешние зависимости не нужны.

    122 parts
  • 2 layers100 × 95.5 mmVop24 lpcxpresso1769 basehw, the printed circuit board in 3D

    Vop24 lpcxpresso1769 basehw

    brengi/CESE-PCB

    Curso de Diseño de Circuitos Impresos de la Carrera de Especialización en Sistemas Embebidos

    121 parts7