Skip to the content
PCBKitNew board
2 layers100 × 100 mmMod1base mod1base, the printed circuit board in 3D

Mod1base mod1base

PCBench/PCBench21

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
100 × 100 mm
Copper layers
2
Thickness
1.6 mm
Parts
187
Nets
99
Pads
515
Tracks, vias
1,418, 47
Routed
Yes
KiCad
KiCad 5 (file 20171130)
Created
28 Mar 2023
Updated
18 Jan 2024

Overview

Mod1base mod1base is an open-source printed circuit board by PCBench, from the PCBench/PCBench repository on GitHub, published under the MIT licence. It is a 2-layer board of 100 × 100 mm with 187 parts on 99 nets, routed with 1,418 tracks and 47 vias.

It is built around the ATSAMD20G18A-AU, 74HCT245PW and FT230XS-R, with the LM1117DT-3.3, 1SMA5929BT3G and DRTR5V0U2SR among its other parts. Its parts include 40 resistors, 24 capacitors, 12 connectors, 10 switches and 5 ICs. It belongs with the SAM D and SAM boards of this library.

Main components

8

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

187
QtyValueFootprintReferences
204k7IPC7351-Nominal:RESC1608X50R1, R12, R13, R14, R15, R16, R18, R19, R20, R21, R22, R23, R24, R25, R26, R35 +4
12100IPC7351-Nominal:RESC1608X50R2, R3, R6, R7, R8, R9, R10, R11, R27, R28, R29, R30
11SCREWmech:SCREW-4-SUPPORTEDMP1, MP2, MP3, MP4, MP5, MP6, MP7, MP8, MP9, MP10, MP11
8100nIPC7351-Nominal:CAPC1608X55C1, C2, C3, C10, C12, C15, C16, C21
5220pIPC7351-Nominal:CAPC1608X55C8, C9, C17, C18, C20
52u2IPC7351-Nominal:CAPC2012X70C4, C5, C11, C14, C19
310kIPC7351-Nominal:RESC1608X50R34, R36, R37
327IPC7351-Nominal:RESC1608X50R31, R32, R33
210u/25IPC7351-Nominal:CAPMP6032X280C6, C7
222uIPC7351-Nominal:CAPC3216X70C22, C23
25034801000FFCJ6, J7
26u8manuf:BOURNS-SRN3015L1, L2
2COMconn-100mil:CONN-100MIL-M-1x6-SHROUDJ1, J8
2EVE-JBBF2020Bmanuf:PANASONIC-EVEJBSW9, SW10
2SOFT2manuf:ESWITCH-TL1105SW3, SW4
2STOREmanuf:ESWITCH-TL1105SW7, SW8
112V 500mAconn-cui:CONN-PJ-037AJ10
11SMA5929BT3GIPC7351-Nominal:DIOM5226X203DZ2
11k91IPC7351-Nominal:RESC1608X50R38
122u/25IPC7351-Nominal:CAPMP7343X310C24
16u8/10IPC7351-Nominal:CAPMP3528X210C13
174HCT245PWIPC7351-Nominal:SOP65P640X110-20U3
1750mAIPC7351-Nominal:RESC3216X60RT1
1ALL_LOADmanuf:ESWITCH-TL1105SW6
1AP3211smd-semi:SOT-23-6U5
1ATSAMD20G18A-AUIPC7351-Nominal:QFP50P900X900X120-48U1
1DRTR5V0U2SRsmd-semi:SOT-143DZ1
1EXTRAconn-test:TEST-SMD-SMALLTP1
1FANconn-100mil:CONN-100MIL-M-1x2J11
1FT230XSIPC7351-Nominal:SOP63P600X160-16U4
1INconn-100mil:CONN-100MIL-M-1x4-SHROUDJ4
1IRLML6402smd-semi:SOT-23Q1
1LCDconn-100mil:CONN-100MIL-M-1x12-SHROUDJ5
1LM1117DT-3.3smd-semi:TO-252U2
1LOGOLogo_silk_polarity_center_10x2.8mmG***
1LOGOLOGOG***_2
1MBR0520smd-semi:SOD-123D1
1OUTconn-100mil:CONN-100MIL-M-1x4-SHROUDJ3
1PRESETSmanuf:ESWITCH-TL1105SW2
1PWRSENSEconn-100mil:CONN-100MIL-M-1x2J12
1SOFT1manuf:ESWITCH-TL1105SW1
1SOFT3manuf:ESWITCH-TL1105SW5
1SWDconn-100mil:CONN-100MIL-M-2x5J2
1TBDIPC7351-Nominal:RESC3216X60R17
1USBconn-fci:CONN-61729J9

The 112 most common of 187 parts.

Questions

How big is the Mod1base mod1base PCB?

It measures 100 × 100 mm and has 2 copper layers, 1.6 mm thick.

What parts does the Mod1base mod1base use?

187 parts, built around the ATSAMD20G18A-AU, 74HCT245PW, FT230XS-R and LM1117DT-3.3. 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 Mod1base mod1base KiCad files?

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

Can I use the Mod1base mod1base 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
  • 4 layers95 × 95 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 =…

    455 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
  • 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

  • 4 layers49.2 × 28 mmAis usbc, the printed circuit board in 3D

    Ais usbc

    xenbedded/pixel-c-support

    Support hardware and software for running custom code on the Google Pixel C.

    61 parts
  • 4 layers61 × 31.8 mm4 layer demo, the printed circuit board in 3D

    4 layer demo

    masumbiswas515/Coursera-Assignments-of-Mastering-KiCAD-Open-Source-PCB-Design-for-Beginners

    This respiratory consists of the peer graded assignments of the Coursera course, Mastering KiCAD: Open-Source PCB Design for Beginners.

    45 partsMIT
  • 2 layers121.9 × 95.9 mmECE445-Wattbalance PCB, the printed circuit board in 3D

    ECE445-Wattbalance PCB

    Royalflamejlh/WattBalance

    A small Kibble Watt Balance made to demonstrating an accurate alternative to scales.

    80 parts
  • 2 layers43.8 × 31.8 mmCbu, the printed circuit board in 3D

    Cbu

    0x007E/cbu

    CAN-Bus UART

    53 parts
  • 2 layers99.8 × 90.3 mmCjb, the printed circuit board in 3D

    Cjb

    0x007E/cjb

    Color JukeBox

    123 parts
  • 2 layers76.2 × 50.8 mmDir, the printed circuit board in 3D

    Dir

    0x007E/dir

    Digital Radio

    127 parts
  • 2 layers92.7 × 62.2 mmMgc, the printed circuit board in 3D

    Mgc

    0x007E/mgc

    MeGARCard - Development Platform

    121 parts