When you copy a schematic from a book or the Internet onto a perfboard, the hardest part is following by eye "which pin has to connect to which pin", one at a time. Patterndo's schematic import reads the connection information from a schematic photo and draws connection hints (a ratsnest) as dotted lines between pins on the board. A person just wires along the dotted lines, which greatly reduces the mistake of missing a pin while reading the drawing. This article covers the steps to use it, how to fix the recognition result, how to enter connection information directly as JSON, and the causes when it does not work. For how to read schematics, check Reading Schematic Symbols first.
What a ratsnest is
A ratsnest is a technique, widely used in circuit board design tools, that shows pins not yet wired but which must be connected, with thin lines. In Patterndo, pins that belong to the same net are joined with dotted lines of the same color. Even if a net has many pins, it does not draw lines between every pin and draws only the minimum dotted lines that connect most shortly, so even the power net of a 16-pin IC does not look complicated.
Before you start
- Place the parts on the board first. Put on the board a part for each part in the schematic (ICs, resistors, LEDs, and so on) and set the pins to fit the holes (Getting Started with Patterndo).
- Matching part numbers is handy. If you put numbers like the schematic's U1 and R1 in the number field of the properties panel, they pair up automatically.
- Prepare the image. Use a schematic photo or screenshot (PNG, JPG), and use the table below to get it into a readable state.
| Easy-to-read image | Hard-to-read image |
|---|---|
| A drawing in crisp black lines on a white background | A blurry, tilted, shadowed photo |
| A digital schematic with ICs drawn as rectangular boxes with pin numbers | An analog drawing with curves and diagonals |
| Lines run only horizontally and vertically, with dots (●) at junctions | Lines run diagonally or cross without dots |
| Part numbers written near the boxes | Text that overlaps or is very small |
Recognition reads only horizontal and vertical lines, so diagonal wires are not recognized. The image is shrunk so that one side is 1600 pixels or less. Title and explanatory text lines at the top of the drawing are cut off automatically, and areas painted with a highlighter are erased before reading.
The import steps
- From the More (⋯) menu on the top bar, choose Import schematic or netlist, or search for "schematic" in Ctrl+K command search.
- Click the dotted box in the window to pick a file, or drag a file onto the box. It accepts schematic images (PNG, JPG) and netlists (KiCad, the Protel format from EasyEDA and Altium, PADS, SPICE, JSON). With the window open, you can paste a schematic screenshot straight in with Ctrl+V.
- Wait until the "Reading the schematic…" indicator disappears. It usually takes a few seconds, and it stops with a timeout if it goes over 16 seconds.
- The Connection hints panel opens at the bottom of the board and dotted lines appear over the board.
Automatic photo recognition is a draft that reads IC boxes, IEC resistor symbols (small rectangles), the two plates of a capacitor, and junction dots. Crossings without a dot are not connected, and zigzag resistor symbols are not read yet. Always check the result by eye, and when accuracy matters, use one of the methods in "Importing accurately from a netlist" below.
Reading the connection hints panel
| Element | What it does |
|---|---|
| Select, Connect, Erase | Switch tools. Explained in detail below |
| Undo, Redo | Undo and reapply hint edits one step at a time |
| Hide VCC/GND | Hides the dotted lines of power nets named VCC, VDD, GND, VSS, 0V, 5V, 9V so you see only signal lines |
| Image | Shows or hides the imported schematic image inside the panel |
| Collapse, Other file | Folds the panel away to see more of the board, or loads another schematic or netlist |
| Place missing parts | Places parts that are in the schematic but not on the board into free spots and pairs them in one go |
| JSON | Downloads the current connection information as the file schematic-netlist.json |
| Place as jumpers and rewire | See "Place as jumpers and rewire" below |
| Close | Ends the connection hints and clears them all |
The top line of the panel shows nets done, ratsnest lines left, and parts matched, with a progress bar. The list shows each net with a color box, its name, and the connected pins (as part number.pin, like R1.2 and LED1.A), and the mark on the right tells you its state. ✓ means the net is fully connected on the board, a number is how many ratsnest lines are left, something like "3/4" means some pins have no board part yet, and a red ⚠ is a possible short where the net is joined to another net on the board. Click a net to highlight its dotted lines and pins and dim the rest.
Fixing the recognition result
Pairing parts
Under the list, Board matching has a select box for each schematic part, with the paired board part on the right. Automatic matching compares part number, model name, value, and type, and picks the most similar part. If the pairing is wrong or says "(none)", pick the right board part yourself in the box. Multiple units inside one IC, like U3A and U3B of a 74LS00, are paired to the same board IC.
Fixing connections
After choosing a tool, click a pin on the board or a pin in the image.
- Link: click one pin and then another and the two pins become the same net. If a pin already belongs to another net, the two nets merge into one. The first pin blinks with a yellow ring, and Esc cancels it.
- Erase: click a pin or a dotted line and that pin leaves the net. If only one pin is left in a net, the net disappears.
- Select: the tool you start with. You can edit the board as usual, and clicking a dotted line highlights its net.
If you clicked wrong, press Undo. If a pin number was misread, just reconnect based on the board's pin.
Wiring along the dotted lines
- Check that every pin of every part has a dotted line connected.
- Start with the signal lines and draw along the dotted lines with the W wire tool. If you hid power, show it at the end and check.
- Once a connection is really wired, its dotted line disappears and a ✓ appears next to the net. The dotted lines that remain are exactly the missing connections.
- Handle places that must cross with jumpers (Wiring Methods Compared).
After wiring, turn on simulation to check that it does the same thing (Using Patterndo Simulation).
Entering connection information directly as JSON
If the image is hard to read, you can write the connection information as a JSON file yourself and load it in the same window. You only have to write up a few lines of the schematic, so for small circuits this method is more accurate.
{
"version": 1,
"parts": [
{ "ref": "U1", "model": "74LS00" },
{ "ref": "R1", "value": "330", "type": "Resistor" },
{ "ref": "LED1", "type": "LED" }
],
"nets": [
{ "name": "N1", "nodes": [ { "ref": "U1", "pin": "3" }, { "ref": "R1", "pin": "1" } ] },
{ "name": "N2", "nodes": [ { "ref": "R1", "pin": "2" }, { "ref": "LED1", "pin": "A" } ] }
]
} | Item | Rule |
|---|---|
| version | Must be 1 |
| parts | The parts list. ref (the part number) is required; value, model (IC model), and type are optional |
| nets | The nets list. name is the net name and nodes is the list of pins to connect |
| nodes | ref is a part number that exists in parts (case-insensitive) and pin is the pin name |
Pin names must match those used in the editor. For ICs use pin numbers (1, 2, 3…), for resistors 1 and 2, and for LEDs and diodes A and K. For transistors, use the pin roles (E, B, C) set in the properties. A net in which two or more parts and pins cannot be found is skipped, and if the version is different or parts and nets are missing, you get notices like "This is not a schematic JSON" and "Unsupported schematic JSON version". The file downloaded with the panel's JSON button has the same format, so you can edit it and load it again.
Place as jumpers and rewire
The Place as jumpers and rewire button places a jumper on the board for each hint dotted line and then opens the auto-rewire window. It is meant to have auto-rewire redraw those connections as copper wiring (Using Auto-Rewire). If there is a net that would tie power and ground into one line, it says "This would tie VCC and GND into one line" and does not place it.
Notices and fixes
| Message | Cause | Fix |
|---|---|---|
| Could not find the IC box as line segments. Connect directly in the image | The IC was not recognized as a rectangle | Check the box is a closed line, and click the pins in the image to connect directly |
| There are too many IC boxes. Check the connection hints once | More than 12 IC boxes were picked up | Split the drawing and import only part of it at a time |
| Could barely read the part numbers from the photo | Text recognition failed | The part numbers are already matched with the board, so check Board matching |
| Could barely find any junction dots. Check the crossing connections once | The junction dots (●) are small or missing | Check by hand whether the crossings are connected and fix them |
| Schematic extraction timed out | The image is too complex or large | Crop or shrink the image and try again |
| Could not read the image | A damaged or unsupported file | Save it again as PNG or JPG |
| There are no jumpers to place. Check the board part matching and nets | No board parts are paired | Assign parts in the Board matching boxes |
Importing accurately from a netlist
A more accurate route than photo recognition is a netlist exported by a schematic program. A netlist spells out the parts and pin connections as text, so nothing can be misread.
- KiCad: in the schematic editor, use File → Export → Netlist to make a .net file. It includes pin function names (A and K, E, B, and C), so polarized parts pair up correctly too.
- EasyEDA, Altium, DipTrace: choose the Protel (Tango) format when exporting the netlist. The PADS format is accepted as well.
- SPICE tools such as LTspice: save the netlist to a file, or copy and paste it. Node 0 becomes GND.
- Convert a photo with AI: press [Copy AI instructions] in the window, send them to a chat AI together with the schematic photo, and paste the JSON answer into the paste box.
If you write one by hand, put one net per line like this and paste it in.
VCC: U1.8 U1.4 R1.1 GND: U1.1 C1.- D1.K OUT: U1.3 R3.1
Parts that are in the netlist but not on the board can be placed into free spots in one go with Place missing parts. The IC pin count comes from the largest pin number in the nets, and if the model name matches a built-in IC, it is placed as that model.
Summary
Schematic and netlist import is a helper that shows the connections read from a photo or a netlist as dotted lines (a ratsnest), and erases each line once it is wired so only the remaining connections show. Photo recognition is a draft; a netlist is the most accurate. Check and fix the board matching and connections by eye, and then wire along the dotted lines by hand. The overall order for moving a drawing onto a board is explained in Moving a Schematic onto Perfboard in 7 Steps.