PCB Workbench
Id: pcb · Ninth entry in the workbench dropdown
PCB is the electronics flow: schematic capture and board layout, with the schematic and the board as two views of one design. It runs eCAD's sheet-and-board editor on the document's schematic in place of the 3D view.
What it offers
PCB creates no features. It adds:
- the schematic or board editor, drawn in place of the 3D view (The eCAD editor);
- the Assembly parts pane, listing the parts that can be placed (brought to the front when you enter the workbench, unless you left another tab in front of it), and the Inspector pane, for the selection;
- the editor's commands in the workbench row (below).
Parts and assembly placement
Assembly parts lists native occurrences with symbols or pads. A part you add to the assembly
takes the next free reference designator for its symbol's prefix (U1, U2, R1…),
and its symbol's value (KiCad's Value field: R for a resistor, LM358 for that op amp),
which you type over with the part's own in the Inspector (10k; see
Inspector). The value is what the sheet draws under the reference,
what the parts BOM groups by, and what the netlist and pick-and-place write. The designator is
written into its BOM row in the same undo step as the add. The BOM owns it: rename a part in
the BOM pane's Reference_Designator column, and both sheets and the board follow. A part the
board seats on its own goes on the schematic clear of the parts already there. A footprint
left unnamed in Pads takes the part's name. A part whose pads or symbol a sheet cannot hold (a
zero-sized pad, say) is not listed, and a notice says which part and why. The board follows that list on its own: an occurrence with pads gains its
footprint on the next frame, with no view switch and no button, and a part placed on the
PCB schematic is on the board in the same undo step. Update from parts forces that
pass, re-framing the board when it added or removed a part — for a sync that was undone, or a stored board out of step
with its components. A board is an assembly, and the sheets are two views of it: every
symbol and every footprint is an assembly component, added through Add component, and
there is no other way to put one down. Deleting a component on the schematic, the board or the
Diagram deletes the assembly component it is, in the same undo step; the other views let go of
it and a notice lists what went. Duplicate (Ctrl+D) on a component whose part has every
occurrence on the sheet adds another occurrence of that part to the assembly and, on the
schematic, puts its symbol in your hand (a part with pads is seated by the board on its own).
A board saved before 2026-10-14 may hold symbols and footprints with no assembly behind them:
opening it gives it one, with no undo step and nothing to save — one assembly component per
footprint, labelled and posed as it was drawn, from a part that is its own symbol and pads (it
has no source file, so Update components has nothing to read for it).
Symbols and pads come from their native parts. Update Components refreshes both snapshots.
A part edited in its own open tab (a pin renumbered, a footprint renamed), saved or not, reaches
the board when you switch to the board's tab, as it reaches any open assembly. A notice names
the part and what the update carried over, and one Undo takes it back. When the part file was
changed while the board was not open, each component placed from it is ringed in amber, on the
schematic and on the board, and a card over the top of the sheet names the parts. Its
Update parts button takes the saved versions in as one undo step; Later folds the card and
keeps what is placed. Entering the workbench never updates by itself.
Deleting a part's occurrence from the assembly also takes it off the schematic, the board and the
Diagram, and removes its harness connections. The wires and tracks that ran to it stay,
unconnected. A notice lists what went, and one undo brings it all back.
An electronics part can be placed before it has a 3D model; its ports and occurrence
still exist, and a later model arrives through the same refresh.
Moving or rotating a board placement updates that occurrence's assembly transform in the same undo step, and the reverse: a component moved or turned in the Assembly workbench (the gizmo, the transform parameters) moves its footprint on the board in that edit's own step. A pose a board cannot hold — a tilt, a turn that is no quarter — leaves the footprint where it was, and a notice says so. Board coordinates are micrometres with Y down; assembly coordinates are millimetres with Y up. A bottom-side placement turns the part over about Y. A top-side part sits at Z = 0 and a bottom-side part 1.6 mm below it: the board is a fixed 1.6 mm thick, with no thickness setting.
Checking the schematic
The Inspector's Connectivity section lists the schematic's nets and holds the electrical rules check (ERC). Run electrical rules check grades how the pins are joined by their electrical types, which KiCad parts carry and the Symbol workbench sets. The rules are a reduced form of KiCad's:
- Errors: a pin joined to no other pin; two outputs, or an output and a power output, on one net (KiCad's default pin map, one finding per net and pair of types); a power input on a net with no power output and no power flag; a no-connect pin that is joined; two parts with one reference.
- Warnings: the weaker pairs in KiCad's map (an unspecified pin joined to anything, a tri-state to an output); a unit of a multi-unit part with none of its pins joined (one finding for the unit, not one per pin); a no-connect cross on a pin that is joined; a net with two names; a wire end that touches nothing.
Click a finding to zoom the sheet to it; a ring marks each finding there. The row selects nothing, so the list stays where it is. A finding that one edit answers offers it under its row, as one undo step:
- Mark no-connect puts a blue cross on a pin that is meant to stay open.
- Add a power flag marks a net as driven from off the board, as KiCad's
PWR_FLAGdoes. A supply that comes in through a connector is passive, so without the flag its power inputs are reported undriven.
The same marks are on the schematic's toolbar, for placing them as you draw rather than after a finding:
- No-connect (Q) puts the cross on the pin clicked. Clicking a marked pin again takes it off.
- Power flag puts a
PWR_FLAGon the pin clicked. Clicked on a wire, it flags that net's first power input, or its first pin when it has none. Clicking a flagged pin again takes it off. - Power symbol (P) places a power symbol for the net chosen on the tool card's dropdown:
GND, VCC, +3V3, +5V, or a name typed in the field under it. A ground is drawn as bars under its pin; a
supply is an arrow above it. Every symbol of one name is one net, wherever it sits on the
sheet, as KiCad's are. The symbol's reference is
#PWR1,#PWR2and so on. It is not a part: the board, the BOM, pick & place and the KiCad netlist leave it out, and the net keeps its name. Its pin is a power input, as KiCad's is, so a power net with no power output still wants a power flag.
The findings follow every edit while they are shown; Hide the findings takes the rows and the rings away. The unit rule works on today's model, where every unit of a part is placed together: an unused unit shows up as one whose pins are all open.
Manufacturing files
File ▸ Export has a row of its own for the board, enabled once the board has parts on it:
-
Fabrication (zip) writes
<name>-fabrication.zipfor the board house: Gerber X2 copper, solder mask, paste and silkscreen for each side, the board outline (Edge_Cuts), Excellon drill files for plated holes (vias and component holes) and, when there are any, non-plated ones, the two CSVs below, and aREADME.txtnaming every file's layer. All files share one origin, the board outline's lower-left corner, in millimetres with Y up, viewed from the top. -
Pick & place (CSV) writes
<name>-pos.csv, one row per placed part in JLCPCB's CPL columns:Designator,Val,Package,Mid X,Mid Y,Rotation,Layer. Mid X and Mid Y are the footprint's origin, in millimetres from the same corner. Rotation is degrees counter-clockwise seen from the top; a bottom-side part's is its mirrored footprint's, also seen from the top. Layer isToporBottom. -
Parts BOM (CSV) writes
<name>-bom.csvin JLCPCB's BOM columns:Comment,Designator,Footprint,Quantity, one line per value and footprint, with every reference that uses it ("R1,R2"). Comment is the part's value. Every part on the schematic is listed, placed or not; power symbols are not. -
Netlist (KiCad) writes
<name>.net, the schematic's netlist in KiCad's.netformat (export versionE), for another tool: each part with its value, footprint and library, and each net with its pins, their names and electrical types. A footprint taken from a KiCad library is written with its library's nickname,Resistor_SMD:R_0805_2012Metric, the name of the.prettyfolder it came from, so Pcbnew's Update PCB from Schematic can find it; a footprint drawn in Pads has no library and is written by its bare name. The nets have the names the Connectivity section lists. A net with no pin is left out. Power symbols are left out too, as KiCad leaves them out, and their nets keep their names (GND,+5V). This row is enabled once the schematic has parts, placed on the board or not.
The assembly's own BOM (CSV) beside it is the mechanical one and keeps its columns.
STEP exports the board as the 3D view shows it, for the mechanical side. The board is one
solid: its outline, 1.6 mm thick, with a hole through it for every via and through-hole pad.
Each pad, track segment and via ring is its own thin copper solid, named by layer and net
(PCB_F.Cu/GND#3), and each via barrel is a tube (PCB_Vias#1). The copper solids overlap
where a track meets a pad, because they are not fused. A zone's fill is one copper solid per
piece, with its holes cut, named the same way. The part bodies are placed as they are
on the board, bottom-side parts under it. Each part is one product, named after its part
(lm358), not the file it came from, and each placement is named by its reference (U1).
Solder mask and silkscreen are not exported.
A board with design-rule findings still exports, since the files are complete, but the dialog
stays open with the findings on its status line and a notice, so the files are not ordered
unread. From a script, document_export takes fabrication, pick_place_csv,
ecad_bom_csv and kicad_netlist.
Copper zones
A zone is a polygon on one copper layer that pours one net, usually GND. Choose Draw zone, pick the net in the Inspector (GND is chosen for you when the sheet has one), and click the corners on the active layer; click the first corner again, double-click or press Enter to close it. It is filled at once and selected, so its corners can be dragged. Dragging a corner or the whole zone refills it when it is let go, and dragging the dot in the middle of an edge puts a new corner there.
The fill is the zone's polygon inside the board outline by the edge clearance, kept clear of every pad, track and via of another net by the larger of the two nets' class clearances (see Net classes below). A surface-mount pad, a track or a via of the zone's own net is solid copper under the fill. A through-hole pad of its net is joined by a thermal relief: a gap all round it, at least its net's class clearance, bridged by up to four spokes, left, right, up and down, each laid only where the fill is there to meet it. Parts narrower than the zone's minimum width are left out, and a piece of fill that touches no copper of its net is removed. A via with no net inside a zone counts as the zone's own, so a via dropped in a pour stitches it to the other side. Where two zones of different nets overlap, the one drawn first keeps the ground they share. The Inspector shows the filled area, the pieces and holes, and the spokes each relieved pad got, and sets the net, the layer, the thermal gap, the spoke width and the minimum width.
The fill is copper like any other: it joins the pads of its net, so their airwires go, and the design rule check holds it to the board's clearances. It is not refilled on every edit. After tracks or parts move, the zone's outline turns the warning colour, and Fill zones (B) refills every zone. The design rule check refills before it checks. The manufacturing files are made from a fresh fill whatever the board shows, and the zone is written to the copper Gerber as regions. The 3D view and the STEP export show the fill that was last made.
Net classes
A net class is a clearance, a track width and a via size for a group of nets: wider, further
apart supply nets, say. Default is always there and is the board's own Design rules. Open
Net classes in the board's Inspector to add a class (Add net class starts one with the
Default sizes), rename it, set its sizes, and give it patterns: net names, separated by
commas, where * is any run of characters and ? any one, so +*V* takes +5V and +3V3. Pick a
net, or select a track, pad, via or zone, and the section says which class the net is in and why;
Put in assigns it to a class outright. An assignment beats a pattern, the first class whose
pattern matches beats the later ones, and a net nothing puts anywhere is Default.
Two nets keep the larger of their two classes' clearances, the rule KiCad uses. The design rule check reads it for every pair, names the class in the finding ("Power clearance 0.400 mm required"), and flags a track narrower than its net's class width. A zone keeps the same clearance from other nets' copper. A new track from a pad starts at the width of the pad's net's class, and a layer change drops a via of the class's size; Apply net widths gives every track its class's width. A width set for one net under Design rules beats its class's width. The autorouter reads the class widths but not yet the class clearances or vias.
Toolbar buttons
Eighteen of their own, which are eCAD's own commands, lit and greyed by eCAD's own rules. The schematic's tools are there in the schematic, the board's on the board, and a tool's own commands while it is in hand. A command that is on the row but cannot act yet is drawn greyed, with the reason on hover.
| Button | Id | Offered | What it does |
|---|---|---|---|
| Schematic | pcb.view.schematic | always | Shows the schematic |
| PCB | pcb.view.board | always | Shows the board, laid out from the schematic's parts and nets; greyed while the autorouter runs |
| Select | pcb.sheet.tool.select | in the schematic | Picks and drags components, wires and labels; drag between terminals to connect |
| Draw wire | pcb.sheet.tool.wire | in the schematic | Draws a wire from a pin or grid point |
| Junction | pcb.sheet.tool.junction | in the schematic | Joins two crossing wires with a dot, or removes one |
| Net label | pcb.sheet.tool.label | in the schematic | Names a net by labelling a wire or pin |
| No-connect | pcb.sheet.tool.no_connect | in the schematic | Marks the pin clicked as meant to be left open (), so the electrical rule check does not ask for it to be joined; a second click takes the mark off |
| Power flag | pcb.sheet.tool.power_flag | in the schematic | Puts a PWR_FLAG on the pin clicked, or on the net of the wire clicked, so its power inputs read as driven from off the sheet; a second click takes it off |
| Power symbol | pcb.sheet.tool.power | in the schematic | Places a power symbol (GND, VCC, +3V3, +5V or a typed name); every symbol of one name is one net, which the netlist carries under that name |
| Select | pcb.board.tool.select | on the board | Drags parts; picks tracks and vias |
| Route track | pcb.board.tool.route | on the board | Draws a copper track from a pad |
| Draw zone | pcb.board.tool.zone | on the board | Draws a copper zone corner by corner on the active layer, pouring the net chosen in the Inspector (GND until one is chosen); closing it fills it |
| Copper layer | pcb.board.layer | on the board | Opens the board's copper layers by name (F.Cu … B.Cu), the one tracks go on ticked |
| Rotate 90° | pcb.sheet.place.rotate | while placing a part | Turns the part being placed a quarter turn |
| Bend direction | pcb.sheet.wire.bend | while drawing a wire | Switches which way the wire bends: vertical or horizontal first |
| Finish wire | pcb.sheet.wire.finish | while drawing a wire | Ends the wire being drawn; greyed until one is started |
| Corner direction | pcb.board.route.corner | while routing a track | Switches which way the track corners: 45° or straight first |
| Place via | pcb.board.route.via | while routing a track | Drops a via and carries the track on to the next copper layer; greyed until a track is started on a board with more than one layer |
| Finish track | pcb.board.route.finish | while routing a track | Ends the track being drawn; greyed until one is started |
| Close zone | pcb.board.zone.finish | while drawing a zone | Closes the zone being drawn and fills it; greyed until it has three corners |
| Fill zones | pcb.board.zones.fill | on the board | Refills every zone against the copper as it is now (B); greyed while the board has no zones |
After its own eighteen the row carries one borrowed button, Assembly's Add component
(assembly.add_component, always offered) — see Assembly — so a part can be
placed without leaving the board.
Copper layer is a menu rather than six buttons, because a layer's name depends on how many
the board has: the second layer is B.Cu on a two-layer board and In1.Cu on a four-layer one.
Its entries are buttons of their own, pcb.board.layer.1 to pcb.board.layer.6, one for each
layer the board has. The menu's label names the layer tracks go on.
Undo and Redo are the main toolbar's own, so the row carries neither. With the pointer over the editor, the mouse wheel zooms without fixed limits; the Zoom buttons have the same range. F fits it (the main toolbar's Zoom to fit does not). Keys reach the editor wherever the pointer is, unless a text field has the keyboard. The selection is deleted with Delete and turned with R, as in eCAD's own editor. Ctrl+D duplicates on the schematic; the board has no duplicate. Pressing Select or Escape puts any tool down, which is why the row has no "Done" buttons.
Choosing this workbench while a sketch is being edited finishes the sketch, as its Finish button does, so the drawing is kept.