Add PCB layout and panel design

PCB:
- 28x100mm 2-layer board outline
- Mounting holes for M3 screws
- Component placement guide with coordinates
- Routing guidelines and design rules

Panel:
- 6HP (30x128.5mm) Eurorack panel specification
- SVG design with hole positions
- Supports aluminum, PCB, or acrylic manufacturing

Updated main README with full project documentation.
This commit is contained in:
2026-01-23 03:40:00 +01:00
parent 64f9e34fc3
commit c4e1a43dfa
7 changed files with 739 additions and 17 deletions
+99 -17
View File
@@ -1,35 +1,117 @@
# SN-L00
# SN-L00 Latency Tester
Eurorack latency testing module by SubModular.
Eurorack module for measuring round-trip latency in audio/CV signal chains.
## Overview
**Organization**: [SubModular](https://git.sub-net.at/submodular) / Sub-Net e.U.
SN-L00 measures round-trip latency in Eurorack signal chains. Useful for testing delay through effects, digital modules, audio interfaces, and DAW processing.
## Features
- Measures latency from 0.01ms to 999ms
- 128×32 OLED display showing milliseconds
- Three modes: Single shot, Continuous, Statistics
- Skiff-friendly depth (<25mm)
- USB serial output for logging
## Specifications
| Parameter | Value |
|-----------|-------|
| Width | 6 HP (30mm) |
| Depth | <25mm |
| Power +12V | ~25mA |
| Power -12V | 0mA |
| Resolution | 0.01ms |
| Output | 0-3.3V trigger |
| Input | 0-10V tolerant |
## Project Structure
```
hardware/
kicad/ # Schematics and PCB
panel/ # Front panel design
firmware/ # Microcontroller code (if applicable)
docs/ # Documentation and user manual
SN-L00/
├── hardware/
│ ├── BOM.md # Bill of materials with LCSC part numbers
│ ├── kicad/ # KiCad schematic and PCB
│ │ ├── SN-L00.kicad_pro
│ │ ├── SN-L00.kicad_sch
│ │ ├── SN-L00.kicad_pcb
│ │ ├── README.md # ASCII schematic reference
│ │ └── PCB_LAYOUT.md # Placement guide
│ └── panel/
│ ├── PANEL_SPEC.md # Dimensions and specifications
│ └── SN-L00_panel.svg # Panel design
├── firmware/
│ ├── CMakeLists.txt # Pico SDK build
│ ├── README.md # Build instructions
│ ├── include/ # Header files
│ └── src/ # Source files
└── docs/
└── DESIGN.md # Technical design document
```
## Specifications
## Hardware
- Width: TBD HP
- Power: TBD mA (+12V), TBD mA (-12V)
- Depth: TBD mm
### Components
## Status
| Part | Description |
|------|-------------|
| MCU | RP2040-Zero (Waveshare) |
| Display | 0.91" OLED 128×32 I2C |
| Output buffer | 74LVC1G17 Schmitt trigger |
| Input buffer | MCP6001 op-amp |
| Regulator | AMS1117-3.3 LDO |
Early development - concept phase.
Full BOM with LCSC part numbers in [hardware/BOM.md](hardware/BOM.md).
### Manufacturing
- PCB: 2-layer, 28×100mm
- Assembly: PCBWay or similar (SMD parts)
- Hand-solder: RP2040-Zero module, OLED module
- Panel: Aluminum or PCB (6HP)
## Firmware
Built with Raspberry Pi Pico SDK.
```bash
export PICO_SDK_PATH=/path/to/pico-sdk
cd firmware
mkdir build && cd build
cmake .. && make
```
Flash `sn_l00.uf2` via USB bootloader.
See [firmware/README.md](firmware/README.md) for details.
## Usage
1. Connect **TRIG OUT** to your signal chain input
2. Connect your signal chain output to **RETURN IN**
3. Press button to measure latency
4. Long press to toggle continuous mode
### Modes
- **SINGLE**: Press to measure once
- **CONT**: Auto-measures every 500ms, shows live reading
- **STATS**: Shows min/max/average after continuous mode
## Typical Latency Values
| Source | Expected Latency |
|--------|------------------|
| Analog modules | <0.1ms |
| Digital Eurorack (DSP) | 1-5ms |
| Audio interface round-trip | 3-20ms |
| DAW + plugins | 5-50ms+ |
## License
TBD
---
## Links
*SubModular - Eurorack hardware by Sub-Net e.U.*
- Repository: https://git.sub-net.at/submodular/SN-L00
- Organization: https://git.sub-net.at/submodular
- Parent: [Sub-Net e.U.](https://sub-net.at)
View File
+216
View File
@@ -0,0 +1,216 @@
# SN-L00 PCB Layout Guide
## Board Dimensions
| Parameter | Value | Notes |
|-----------|-------|-------|
| Width | 28.0mm | 6HP panel = 30mm, PCB 1mm clearance each side |
| Height | 100.0mm | Fits standard 3U with clearance |
| Thickness | 1.6mm | Standard PCB |
| Layers | 2 | Front + Back copper |
| Depth (mounted) | ~22mm | Skiff-friendly (<25mm) |
## Mounting Holes
| Hole | Position | Size |
|------|----------|------|
| MH1 (top) | 14.0, 5.0 | 3.2mm (M3) |
| MH2 (bottom) | 14.0, 95.0 | 3.2mm (M3) |
## Component Placement (Top to Bottom)
```
0mm 28mm
│←────── 28mm ───────→│
┌────────────────────┐ ─┬─ 0mm
│ ○ MH1 (M3) │ │
│ │ │ 5mm
├────────────────────┤ ─┤
│ │ │
│ ┌──────────────┐ │ │
│ │ OLED │ │ │ 10-25mm
│ │ MOD2 │ │ │
│ │ (128x32) │ │ │
│ └──────────────┘ │ │
│ │ │
├────────────────────┤ ─┤
│ [BTN] │ │ 28-35mm
│ SW1 │ │
├────────────────────┤ ─┤
│ │ │
│ ┌──────────────┐ │ │
│ │ RP2040-Zero │ │ │ 38-55mm
│ │ MOD1 │ │ │
│ │ (18x23mm) │ │ │
│ └──────────────┘ │ │
│ │ │
├────────────────────┤ ─┤
│ SMD Components │ │
│ U1 U2 U3 │ │ 58-75mm
│ C1-C5 R1-R6 │ │
│ D1-D4 D2(LED) │ │
├────────────────────┤ ─┤
│ │ │
│ ○ J2 ○ J3 │ │ 78-88mm
│ TRIG RETURN │ │
│ │ │
├────────────────────┤ ─┤
│ ═══════════════ │ │ 88-95mm
│ J1 │ │
│ (Eurorack 2x5) │ │
├────────────────────┤ ─┤
│ ○ MH2 (M3) │ │ 95mm
└────────────────────┘ ─┴─ 100mm
```
## Detailed Placement Coordinates
### Modules (Hand-solder)
| Ref | Component | Center X | Center Y | Rotation |
|-----|-----------|----------|----------|----------|
| MOD2 | OLED 128x32 | 14.0 | 17.5 | 0° |
| MOD1 | RP2040-Zero | 14.0 | 46.5 | 0° |
### User Interface
| Ref | Component | Center X | Center Y | Rotation |
|-----|-----------|----------|----------|----------|
| SW1 | Tactile 6x6mm | 14.0 | 31.5 | 0° |
| D2 | Power LED | 24.0 | 31.5 | 0° |
| R2 | LED resistor 1K | 24.0 | 36.0 | 90° |
### Connectors
| Ref | Component | Center X | Center Y | Rotation |
|-----|-----------|----------|----------|----------|
| J2 | Thonkiconn TRIG | 7.0 | 83.0 | 0° |
| J3 | Thonkiconn RETURN | 21.0 | 83.0 | 0° |
| J1 | 2x5 Eurorack | 14.0 | 92.0 | 0° |
### Power Section (Back side recommended)
| Ref | Component | Center X | Center Y | Rotation | Side |
|-----|-----------|----------|----------|----------|------|
| D1 | SS14 Schottky | 7.0 | 65.0 | 0° | Back |
| U1 | AMS1117-3.3 | 14.0 | 65.0 | 0° | Back |
| C1 | 10uF input | 10.0 | 60.0 | 0° | Back |
| C2 | 10uF output | 18.0 | 60.0 | 0° | Back |
| C3 | 100nF output | 21.0 | 60.0 | 0° | Back |
### Signal Conditioning
| Ref | Component | Center X | Center Y | Rotation | Side |
|-----|-----------|----------|----------|----------|------|
| U2 | 74LVC1G17 | 7.0 | 72.0 | 0° | Front |
| C4 | 100nF (U2) | 7.0 | 68.0 | 0° | Front |
| R3 | 100R trig | 7.0 | 76.0 | 90° | Front |
| U3 | MCP6001 | 21.0 | 72.0 | 0° | Front |
| C5 | 100nF (U3) | 21.0 | 68.0 | 0° | Front |
| R4 | 10K input | 21.0 | 76.0 | 90° | Front |
| R5 | 10K divider | 18.0 | 76.0 | 90° | Front |
| R6 | 22K divider | 18.0 | 72.0 | 90° | Front |
| D3 | BAT54 clamp | 24.0 | 70.0 | 90° | Front |
| D4 | BAT54 clamp | 24.0 | 74.0 | 90° | Front |
### Button
| Ref | Component | Center X | Center Y | Rotation |
|-----|-----------|----------|----------|----------|
| R1 | 10K pullup | 10.0 | 35.0 | 0° |
## Routing Guidelines
### Net Classes
| Class | Width | Clearance | Via Drill |
|-------|-------|-----------|-----------|
| Default | 0.25mm | 0.2mm | 0.3mm |
| Power | 0.5mm | 0.3mm | 0.4mm |
| Signal | 0.2mm | 0.2mm | 0.3mm |
### Power Routing
1. **+12V** path: J1 pin 4 → D1 → C1 → U1 VIN
2. **+3.3V** path: U1 VOUT → C2/C3 → distribute to all ICs
3. **GND**: Use ground pour on back layer, via stitch near decoupling caps
### Signal Routing Priority
1. I2C (SDA/SCL): Keep short, parallel, 0.5mm spacing
2. TRIG_OUT: Direct from RP2040 GP2 → U2 → R3 → J2
3. RETURN_IN: J3 → R4 → divider → U3 → RP2040 GP3
4. BTN: RP2040 GP4 → R1 → SW1 → GND
### Ground Plane
- Fill back copper with GND zone
- Via stitch every 5-10mm
- Keep clear around power input for thermal relief
- Connect GND pins of J2/J3 directly to plane
## Design Rules (PCBWay Compatible)
| Parameter | Value |
|-----------|-------|
| Min trace width | 0.15mm (0.2mm preferred) |
| Min clearance | 0.15mm (0.2mm preferred) |
| Min via drill | 0.3mm |
| Min via diameter | 0.6mm |
| Min hole size | 0.3mm |
| Min annular ring | 0.15mm |
## Silkscreen
### Front
- Component references (small, 0.8mm text)
- Jack labels: "TRIG" and "RETURN"
- "SN-L00 v0.1" at bottom
- "SubModular" at top
### Back
- "SN-L00" centered
- Pin 1 indicators for ICs
- Polarity markers for D1, power header
- "git.sub-net.at/submodular/SN-L00"
## Gerber Output
When exporting for PCBWay:
```
Required files:
- F.Cu (Front copper)
- B.Cu (Back copper)
- F.SilkS (Front silkscreen)
- B.SilkS (Back silkscreen)
- F.Mask (Front soldermask)
- B.Mask (Back soldermask)
- Edge.Cuts (Board outline)
- *.drl (Drill file)
Settings:
- Format: Gerber X2
- Drill: Excellon
- Units: mm
- Coordinate format: 4.6
```
## Assembly Notes
1. PCBWay can assemble all SMD parts on both sides
2. Hand-solder: MOD1 (RP2040-Zero), MOD2 (OLED)
3. Jacks (J2, J3) can be assembled or hand-soldered
4. Power header (J1) usually hand-soldered for alignment
## Checking Before Order
- [ ] DRC passes with no errors
- [ ] All nets connected (no airwires)
- [ ] Mounting holes align with panel
- [ ] Jacks align with panel holes
- [ ] Power header polarity marked
- [ ] Silkscreen readable and not over pads
- [ ] Ground plane connected properly
+191
View File
@@ -0,0 +1,191 @@
(kicad_pcb
(version 20240108)
(generator "pcbnew")
(generator_version "8.0")
(general
(thickness 1.6)
(legacy_teardrops no)
)
(paper "A4")
(title_block
(title "SN-L00 Latency Tester")
(date "2026-01-23")
(rev "0.1")
(company "SubModular")
)
(layers
(0 "F.Cu" signal)
(31 "B.Cu" signal)
(32 "B.Adhes" user "B.Adhesive")
(33 "F.Adhes" user "F.Adhesive")
(34 "B.Paste" user)
(35 "F.Paste" user)
(36 "B.SilkS" user "B.Silkscreen")
(37 "F.SilkS" user "F.Silkscreen")
(38 "B.Mask" user)
(39 "F.Mask" user)
(40 "Dwgs.User" user "User.Drawings")
(41 "Cmts.User" user "User.Comments")
(42 "Eco1.User" user "User.Eco1")
(43 "Eco2.User" user "User.Eco2")
(44 "Edge.Cuts" user)
(45 "Margin" user)
(46 "B.CrtYd" user "B.Courtyard")
(47 "F.CrtYd" user "F.Courtyard")
(48 "B.Fab" user)
(49 "F.Fab" user)
(50 "User.1" user)
(51 "User.2" user)
(52 "User.3" user)
(53 "User.4" user)
(54 "User.5" user)
(55 "User.6" user)
(56 "User.7" user)
(57 "User.8" user)
(58 "User.9" user)
)
(setup
(pad_to_mask_clearance 0)
(allow_soldermask_bridges_in_footprints no)
(pcbplotparams
(layerselection 0x00010fc_ffffffff)
(plot_on_all_layers_selection 0x0000000_00000000)
(disableapertmacros no)
(usegerberextensions no)
(usegerberattributes yes)
(usegerberadvancedattributes yes)
(creategerberjobfile yes)
(dashed_line_dash_ratio 12.000000)
(dashed_line_gap_ratio 3.000000)
(svgprecision 4)
(plotframeref no)
(viasonmask no)
(mode 1)
(useauxorigin no)
(hpglpennumber 1)
(hpglpenspeed 20)
(hpglpendiameter 15.000000)
(pdf_front_fp_property_popups yes)
(pdf_back_fp_property_popups yes)
(dxfpolygonmode yes)
(dxfimperialunits yes)
(dxfusepcbnewfont yes)
(psnegative no)
(psa4output no)
(plotreference yes)
(plotvalue yes)
(plotfptext yes)
(plotinvisibletext no)
(sketchpadsonfab no)
(subtractmaskfromsilk no)
(outputformat 1)
(mirror no)
(drillshape 1)
(scaleselection 1)
(outputdirectory "")
)
)
(net 0 "")
(net 1 "GND")
(net 2 "+12V")
(net 3 "+3.3V")
(net 4 "SDA")
(net 5 "SCL")
(net 6 "TRIG_OUT")
(net 7 "RETURN_IN")
(net 8 "BTN")
;; Board outline - 6HP Eurorack PCB
;; Width: 28mm (6HP = 30mm panel, PCB slightly narrower)
;; Height: 100mm (fits behind panel with clearance)
(gr_rect
(start 0 0)
(end 28 100)
(stroke
(width 0.15)
(type solid)
)
(fill none)
(layer "Edge.Cuts")
(uuid "board-outline")
)
;; Mounting holes (M3, 3.2mm)
;; Top mounting hole
(footprint "MountingHole:MountingHole_3.2mm_M3"
(layer "F.Cu")
(uuid "mh1")
(at 14 5)
(property "Reference" "MH1"
(at 0 -3 0)
(layer "F.SilkS")
(effects (font (size 1 1) (thickness 0.15)))
)
(property "Value" "MountingHole"
(at 0 3 0)
(layer "F.Fab")
(effects (font (size 1 1) (thickness 0.15)))
)
(pad "" np_thru_hole circle
(at 0 0)
(size 3.2 3.2)
(drill 3.2)
(layers "*.Cu" "*.Mask")
)
)
;; Bottom mounting hole
(footprint "MountingHole:MountingHole_3.2mm_M3"
(layer "F.Cu")
(uuid "mh2")
(at 14 95)
(property "Reference" "MH2"
(at 0 -3 0)
(layer "F.SilkS")
(effects (font (size 1 1) (thickness 0.15)))
)
(property "Value" "MountingHole"
(at 0 3 0)
(layer "F.Fab")
(effects (font (size 1 1) (thickness 0.15)))
)
(pad "" np_thru_hole circle
(at 0 0)
(size 3.2 3.2)
(drill 3.2)
(layers "*.Cu" "*.Mask")
)
)
;; Component placement guide (active from top to bottom):
;; Y=10-25: OLED module (MOD2)
;; Y=28-35: Button (SW1)
;; Y=38-55: RP2040-Zero (MOD1)
;; Y=58-75: SMD components (LDO, buffers, passives)
;; Y=78-90: Jacks (J2, J3) and Power header (J1)
;; Text annotations for assembly
(gr_text "SN-L00 v0.1"
(at 14 98 0)
(layer "F.SilkS")
(uuid "title-text")
(effects
(font (size 1.2 1.2) (thickness 0.2))
(justify center)
)
)
(gr_text "SubModular"
(at 14 2 0)
(layer "F.SilkS")
(uuid "company-text")
(effects
(font (size 0.8 0.8) (thickness 0.15))
(justify center)
)
)
;; Ground plane zones would be added here
;; (zone ...)
)
View File
+161
View File
@@ -0,0 +1,161 @@
# SN-L00 Panel Specification
## Eurorack 6HP Panel Dimensions
| Parameter | Value | Notes |
|-----------|-------|-------|
| Width | 30.00mm | 6 × 5.08mm (6HP) |
| Height | 128.50mm | 3U standard |
| Thickness | 1.5-2.0mm | Aluminum or PCB |
| Corner radius | 0mm | Square corners |
## Mounting Holes
Eurorack standard mounting rail positions:
| Hole | X | Y | Diameter | Notes |
|------|---|---|----------|-------|
| Top Left | 7.5mm | 3.0mm | 3.2mm | Horizontal slot optional |
| Top Right | 22.5mm | 3.0mm | 3.2mm | Horizontal slot optional |
| Bottom Left | 7.5mm | 125.5mm | 3.2mm | Horizontal slot optional |
| Bottom Right | 22.5mm | 125.5mm | 3.2mm | Horizontal slot optional |
**Note**: Slots (elongated holes) of 3.2mm × 4mm allow for rail tolerance.
## Component Holes
| Component | X | Y | Diameter | Notes |
|-----------|---|---|----------|-------|
| OLED cutout | 15.0mm | 25.0mm | 28×12mm rect | Rectangular window |
| Button | 15.0mm | 45.0mm | 7.0mm | For 6mm tactile + cap |
| LED (power) | 24.0mm | 45.0mm | 3.0mm | For 3mm LED or light pipe |
| Jack TRIG | 7.5mm | 95.0mm | 6.0mm | Thonkiconn PJ398SM |
| Jack RETURN | 22.5mm | 95.0mm | 6.0mm | Thonkiconn PJ398SM |
## Panel Layout Drawing
```
←───── 30.00mm ─────→
┌─────────────────────┐ ─┬─ 0.00mm
│ ○ ○ │ │ 3.00mm (mounting holes)
│ │ │
│ SubModular │ │ 12.00mm
│ │ │
│ ┌───────────────┐ │ │
│ │ │ │ │
│ │ OLED │ │ │ 19-31mm (display window)
│ │ DISPLAY │ │ │
│ │ │ │ │
│ └───────────────┘ │ │
│ │ │
│ SN-L00 │ │ 38.00mm
│ │ │
│ ◯ • │ │ 45.00mm (button + LED)
│ BTN PWR │ │
│ │ │
│ │ │
│ │ │
│ ┌───┐ ┌───┐ │ │
│ │ │ │ │ │ │
│ │ ○ │ │ ○ │ │ │ 95.00mm (jacks)
│ │ │ │ │ │ │
│ └───┘ └───┘ │ │
│ TRIG RETURN │ │ 105.00mm (labels)
│ │ │
│ LATENCY TESTER │ │ 115.00mm
│ │ │
│ ○ ○ │ │ 125.50mm (mounting holes)
└─────────────────────┘ ─┴─ 128.50mm
```
## OLED Display Window
The 0.91" 128×32 OLED module dimensions:
| Parameter | Value |
|-----------|-------|
| Module size | ~38 × 12mm |
| Active area | ~22 × 6mm |
| Mounting | Pin header on edge |
**Panel cutout**: 28mm × 10mm rectangle, centered at (15.0, 25.0)
Alternatively, a slightly larger window (30 × 12mm) gives tolerance for module alignment.
## Material Options
### Option A: Aluminum (Professional)
- Material: 1.5mm aluminum 5052-H32
- Finish: Brushed, anodized black
- Printing: Laser engraved or UV printed
- Cost: ~€10-15/panel (qty 5)
### Option B: PCB Panel (DIY-friendly)
- Material: 1.6mm FR4
- Finish: Black soldermask, ENIG
- Printing: Silkscreen white
- Cost: ~€2-5/panel (qty 5 from PCBWay)
### Option C: Acrylic (Budget)
- Material: 3mm black acrylic
- Finish: Laser cut
- Printing: Engraved or adhesive labels
- Cost: ~€3-5/panel
## PCB Panel Design
If using a PCB as the panel:
```
Front copper: None (for clean look) or decorative pattern
Back copper: Optional ground plane
Silkscreen: All text and graphics
Soldermask: Black (or custom color)
```
## Graphics & Text
### Suggested Layout
| Element | Position | Size | Font |
|---------|----------|------|------|
| "SubModular" | Top center, Y=12mm | 2.5mm | Bold sans-serif |
| "SN-L00" | Above button, Y=38mm | 3.0mm | Bold |
| "TRIG" | Below left jack, Y=105mm | 2.0mm | Regular |
| "RETURN" | Below right jack, Y=105mm | 2.0mm | Regular |
| "LATENCY TESTER" | Bottom, Y=115mm | 1.5mm | Light |
### Icon Ideas
- Small waveform graphic near jacks
- Clock/timer icon
- Sub-Net logo (if available)
## Hole Tolerances
| Hole Type | Nominal | Tolerance |
|-----------|---------|-----------|
| Mounting | 3.2mm | +0.1/-0.0 |
| Jack | 6.0mm | +0.1/-0.0 |
| Button | 7.0mm | +0.2/-0.0 |
| LED | 3.0mm | +0.1/-0.0 |
## Files to Create
For manufacturing:
1. **DXF/DWG** - For laser cutting (aluminum/acrylic)
2. **KiCad PCB** - For PCB panel
3. **SVG** - For graphics reference
4. **PDF** - Dimensional drawing
## Assembly
1. Mount OLED module with M2 standoffs or double-sided tape
2. Jacks mount through panel, secured with nut
3. Button may need extension shaft or cap
4. LED can use light pipe for front visibility
+72
View File
@@ -0,0 +1,72 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg xmlns="http://www.w3.org/2000/svg"
width="30mm" height="128.5mm"
viewBox="0 0 30 128.5">
<title>SN-L00 Eurorack Panel</title>
<desc>6HP Eurorack panel for SN-L00 Latency Tester</desc>
<defs>
<style>
.panel { fill: #1a1a1a; }
.hole { fill: none; stroke: #ff0000; stroke-width: 0.1; }
.cutout { fill: none; stroke: #00ff00; stroke-width: 0.1; }
.text { fill: #ffffff; font-family: Arial, sans-serif; }
.text-small { font-size: 2px; }
.text-medium { font-size: 2.5px; }
.text-large { font-size: 3px; }
.silkscreen { fill: none; stroke: #ffffff; stroke-width: 0.2; }
</style>
</defs>
<!-- Panel background -->
<rect class="panel" x="0" y="0" width="30" height="128.5"/>
<!-- Mounting holes (3.2mm) - RED for drill -->
<!-- Top mounting holes -->
<circle class="hole" cx="7.5" cy="3" r="1.6"/>
<circle class="hole" cx="22.5" cy="3" r="1.6"/>
<!-- Bottom mounting holes -->
<circle class="hole" cx="7.5" cy="125.5" r="1.6"/>
<circle class="hole" cx="22.5" cy="125.5" r="1.6"/>
<!-- OLED display window (28x10mm rectangle) - GREEN for cutout -->
<rect class="cutout" x="1" y="20" width="28" height="10" rx="0.5"/>
<!-- Button hole (7mm) -->
<circle class="hole" cx="15" cy="45" r="3.5"/>
<!-- LED hole (3mm) -->
<circle class="hole" cx="24" cy="45" r="1.5"/>
<!-- Jack holes (6mm) -->
<circle class="hole" cx="7.5" cy="95" r="3"/>
<circle class="hole" cx="22.5" cy="95" r="3"/>
<!-- Text labels - WHITE silkscreen -->
<text class="text text-medium" x="15" y="12" text-anchor="middle">SubModular</text>
<text class="text text-large" x="15" y="38" text-anchor="middle" font-weight="bold">SN-L00</text>
<text class="text text-small" x="15" y="52" text-anchor="middle">BTN</text>
<text class="text text-small" x="24" y="52" text-anchor="middle">PWR</text>
<text class="text text-small" x="7.5" y="105" text-anchor="middle">TRIG</text>
<text class="text text-small" x="22.5" y="105" text-anchor="middle">RETURN</text>
<text class="text text-small" x="15" y="115" text-anchor="middle">LATENCY TESTER</text>
<!-- Decorative elements -->
<!-- Jack nut indicators (circles around jacks) -->
<circle class="silkscreen" cx="7.5" cy="95" r="5"/>
<circle class="silkscreen" cx="22.5" cy="95" r="5"/>
<!-- Display frame -->
<rect class="silkscreen" x="0.5" y="19.5" width="29" height="11" rx="0.5"/>
<!-- Horizontal lines for visual separation -->
<line class="silkscreen" x1="2" y1="55" x2="28" y2="55"/>
<line class="silkscreen" x1="2" y1="85" x2="28" y2="85"/>
<line class="silkscreen" x1="2" y1="110" x2="28" y2="110"/>
</svg>

After

Width:  |  Height:  |  Size: 2.7 KiB