Skip to the content
PCBKitNew board
2 layers101.6 × 99.7 mmKarabas nano karabas nano revB, the printed circuit board in 3D

Karabas nano karabas nano revB

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
101.6 × 99.7 mm
Copper layers
2
Thickness
1.6 mm
Parts
147
Nets
156
Pads
832
Tracks, vias
4,306, 396
Routed
Yes
KiCad
KiCad 5 (file 20171130)
Created
28 Mar 2023
Updated
18 Jan 2024

Overview

Karabas nano karabas nano revB 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 101.6 × 99.7 mm with 147 parts on 156 nets, routed with 4,306 tracks and 396 vias.

It is built around the ATMEGA8A-AU, EPM3256ATC144-10N and 74HC04D, with the LM1117-3.3, 1N4148W and BC846B among its other parts. Its parts include 36 switches, 32 capacitors, 30 resistors, 9 diodes and 9 connectors. It belongs with the AVR (ATmega, ATtiny) and FPGA and CPLD boards of this library.

Main components

6

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

147
QtyValueFootprintReferences
15100nFCapacitor_SMD:C_0805_2012MetricC5, C6, C7, C16, C18, C19, C20, C21, C22, C23, C24, C25, C26, C27, C32
91N4148WDiode_SMD:D_SOD-123D1, D2, D3, D4, D5, D6, D7, D8, D9
810kResistor_SMD:R_0805_2012MetricR21, R23, R24, R26, R27, R28, R29, R30
610uFCapacitor_SMD:C_0805_2012MetricC10, C11, C12, C13, C28, C29
510kResistor_SMD:R_Array_Convex_4x0612RN1, RN2, RN3, RN4, RN5
4470Resistor_SMD:R_0805_2012MetricR1, R2, R4, R5
4510Resistor_SMD:R_0805_2012MetricR7, R10, R13, R22
475Resistor_SMD:R_0805_2012MetricR16, R17, R18, R19
4MountingHoleMountingHole:MountingHole_2.5mm_PadH1, H2, H3, H4
31kResistor_SMD:R_0805_2012MetricR8, R11, R14
32kResistor_SMD:R_0805_2012MetricR9, R12, R15
2100pCapacitor_SMD:C_0805_2012MetricC1, C3
21nFCapacitor_SMD:C_0805_2012MetricC30, C31
222pCapacitor_SMD:C_0805_2012MetricC2, C4
24k7Resistor_SMD:R_0805_2012MetricR3, R6
10Switches:TACTILE_SWITCH_SMD_5.2MMSW12
11Switches:TACTILE_SWITCH_SMD_5.2MMSW3
110nFCapacitor_SMD:C_0805_2012MetricC15
110pCapacitor_SMD:C_0805_2012MetricC8
110uFCapacitor_SMD:CP_Elec_5x4.4C14
12Switches:TACTILE_SWITCH_SMD_5.2MMSW4
120MHzClocks:HC49USY4
1220uFCapacitor_SMD:CP_Elec_8x6.5C9
127C512Package_LCC:PLCC-32_11.4x14.0mm_P1.27mmU2
128MHzClocks:HC49USY1
12k2Resistor_SMD:R_0805_2012MetricR20
13Switches:TACTILE_SWITCH_SMD_5.2MMSW5
133kResistor_SMD:R_0805_2012MetricR25
13n3Capacitor_SMD:C_0805_2012MetricC17
14Switches:TACTILE_SWITCH_SMD_5.2MMSW6
14.43MHzClocks:HC49USY3
15Switches:TACTILE_SWITCH_SMD_5.2MMSW7
16Switches:TACTILE_SWITCH_SMD_5.2MMSW8
16MHzClocks:HC49USY2
17Switches:TACTILE_SWITCH_SMD_5.2MMSW9
174HC04Package_SO:SOIC-14_3.9x8.7mm_P1.27mmU5
18Switches:TACTILE_SWITCH_SMD_5.2MMSW10
19Switches:TACTILE_SWITCH_SMD_5.2MMSW11
1ASwitches:TACTILE_SWITCH_SMD_5.2MMSW14
1A/VConnectors:AUDIO_JACK_3.5MM_SMDJ3
1AD724Package_SO:SOIC-16W_7.5x10.3mm_P1.27mmU9
1ATmega8A-AUPackage_QFP:TQFP-32_7x7mm_P0.8mmU4
1BSwitches:TACTILE_SWITCH_SMD_5.2MMSW30
1BC846Bdigikey-footprints:SOT-23-3Q1
1BS62LV1600Package_SO:TSOP-II-44_10.16x18.41mm_P0.8mmU3
1BUSConnectors:1X16J4
1BUSConnector_PinHeader_2.54mm:PinHeader_2x20_P2.54mm_VerticalJ6
1CSwitches:TACTILE_SWITCH_SMD_5.2MMSW24
1CSSwitches:TACTILE_SWITCH_SMD_5.2MMSW15
1DSwitches:TACTILE_SWITCH_SMD_5.2MMSW20
1DC 5VConnector_BarrelJack:BarrelJack_Wuerth_6941xx301002J1
1ESwitches:TACTILE_SWITCH_SMD_5.2MMSW19
1EPM3256ATC144Package_QFP:LQFP-144_20x20mm_P0.5mmU6
1EnterSwitches:TACTILE_SWITCH_SMD_5.2MMSW41
1FSwitches:TACTILE_SWITCH_SMD_5.2MMSW23
1GSwitches:TACTILE_SWITCH_SMD_5.2MMSW26
1HSwitches:TACTILE_SWITCH_SMD_5.2MMSW29
1ISwitches:TACTILE_SWITCH_SMD_5.2MMSW34
1JSwitches:TACTILE_SWITCH_SMD_5.2MMSW32
1JTAGConnector_PinHeader_2.54mm:PinHeader_2x05_P2.54mm_VerticalJ7
1KSwitches:TACTILE_SWITCH_SMD_5.2MMSW35
1KEYBOARDConnector_PinHeader_2.54mm:PinHeader_2x08_P2.54mm_VerticalJ8
1KEYBOARDConnector_PinHeader_2.54mm:PinHeader_2x10_P2.54mm_VerticalJ5
1LSwitches:TACTILE_SWITCH_SMD_5.2MMSW38
1LM1117-3.3Package_TO_SOT_SMD:SOT-223U13
1MSwitches:TACTILE_SWITCH_SMD_5.2MMSW36
1MicroSDfootprints:GCT-MEM2055-00-190-01-AU7
1NSwitches:TACTILE_SWITCH_SMD_5.2MMSW33
1NMISwitches:TACTILE_SWITCH_SMD_5.2MMSW2
1OSwitches:TACTILE_SWITCH_SMD_5.2MMSW37
1PSwitches:TACTILE_SWITCH_SMD_5.2MMSW40
1QSwitches:TACTILE_SWITCH_SMD_5.2MMSW13
1RSwitches:TACTILE_SWITCH_SMD_5.2MMSW22
1RESETSwitches:TACTILE_SWITCH_SMD_5.2MMSW1
1RGBConnector_PinHeader_2.54mm:PinHeader_1x05_P2.54mm_VerticalJ9
1SSwitches:TACTILE_SWITCH_SMD_5.2MMSW17
1SSSwitches:TACTILE_SWITCH_SMD_5.2MMSW39
1SpaceSwitches:TACTILE_SWITCH_SMD_5.2MMSW42
1TSwitches:TACTILE_SWITCH_SMD_5.2MMSW25
1TAPE IN/OUTConnectors:AUDIO_JACK_3.5MM_SMDJ2

The 138 most common of 147 parts.

Questions

How big is the Karabas nano karabas nano revB PCB?

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

What parts does the Karabas nano karabas nano revB use?

147 parts, built around the ATMEGA8A-AU, EPM3256ATC144-10N, 74HC04D and LM1117-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 Karabas nano karabas nano revB KiCad files?

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

Can I use the Karabas nano karabas nano revB 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
  • 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
  • 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 layers99.6 × 99.6 mmKarabas nano revF, the printed circuit board in 3D

    Karabas nano revF

    Vakon84/karabas-nano

    ZX Spectrum compatible machine with real Z80 CPU and all logic inside the CPLD Altera EPM3256ATC144 (or EPM7512).

    155 parts1WTFPL
  • 2 layers213 × 65.1 mmSizif512, the printed circuit board in 3D

    Sizif512

    UzixLS/zx-sizif-512

    ZX Spectrum CPLD-based clone for rubber case

    206 parts195MIT
  • 2 layers170 × 64 mmZx multisound, the printed circuit board in 3D

    Zx multisound

    UzixLS/zx-multisound

    ZX Spectrum soundcard for NEMOBUS/ZXBUS

    200 parts40MIT
  • 2 layers170 × 63.6 mmUzixLS zx multisound zx multisound, the printed circuit board in 3D

    UzixLS zx multisound zx multisound

    punkfab/pcb-corpus

    235 real KiCad boards from open-source hardware repositories, prepared as a placement and routing benchmark

    194 parts1
  • 2 layers100 × 102 mmMpair, the printed circuit board in 3D

    Mpair

    marpi82/mpair

    Advanced Air Quality Monitoring Station based on ESP32's

    198 parts2
  • 2 layers302 × 135 mmModulo, the printed circuit board in 3D

    Modulo

    nodep/myAmp

    Battery powered, solid state, guitar amplifier schematic and PCB

    201 parts4GPL-3.0
  • 2 layers32 × 43.7 mmNoahESC, the printed circuit board in 3D

    NoahESC

    zosko/NoahESC

    NoahESC - Atmega8 based ESC

    50 parts3