circuitRF Reference Guide

The Schematic Editor

Where a circuit is drawn: placing components from the Library Palette, wiring them, editing their values, and setting up the analysis that simulates the result.

The schematic is the electrical view of a cell — what the circuit is, as opposed to what it looks like on a symbol or what gets manufactured in a layout. It is the view you spend most of your time in, and it is the only one an analysis runs on.

Orientation

circuitRF — FET S-Parameters + − + − Vdc V1 Vdc = VGS V I IProbe IGS + − Term Term1 Num = 1 Z = 50 Ω C C1 C = 1 mF L L1 L = 1 mH Angelov Q1 Ipk = 0.1 A Vpk = -1 V P1 = 1 Alpha = 2 VAR VAR VAR1 VGS = -2 VDS = 48 I IProbe IDS C C2 C = 1 mF L L2 L = 1 mH + − Vdc V2 Vdc = VDS V + − Term Term2 Num = 2 Z = 50 Ω circuitRF — FET S-Parameters + − + − Vdc V1 Vdc = VGS V I IProbe IGS + − Term Term1 Num = 1 Z = 50 Ω C C1 C = 1 mF L L1 L = 1 mH Angelov Q1 Ipk = 0.1 A Vpk = -1 V P1 = 1 Alpha = 2 VAR VAR VAR1 VGS = -2 VDS = 48 I IProbe IDS C C2 C = 1 mF L L2 L = 1 mH + − Vdc V2 Vdc = VDS V + − Term Term2 Num = 2 Z = 50 Ω
The schematic editor with the shipped FET S-parameter test bench open.

A schematic is a view of a cell, exactly as its symbol and its layout are; the cell folder holds schematic/, symbol/ and layout/ side by side and a cell need not have all three. Opening one opens a document tab.

You do not need a cell library to start. File ▸ New Schematic opens a standalone scratch sheet you can wire up and simulate immediately, with no workspace around it, and save into a workspace later if it turns out to be worth keeping.

Two things about the canvas are worth knowing before you draw on it:

The Library Palette

All Search… R GND L M M C NonlinearC + − Term + − TermG VAR VAR MEAS I IProbe V VProbe + − Vdc P1Tone ITone + − VTone 1 2 S2P G L WSProbe 1 2 3 S3P 1 2 SPICE TLIN MLIN SourceTuner LoadTuner 1+ 1- Z1P wBond Match SRLC PLC PRC PRL PRLC All Search… R GND L M M C NonlinearC + − Term + − TermG VAR VAR MEAS I IProbe V VProbe + − Vdc P1Tone ITone + − VTone 1 2 S2P G L WSProbe 1 2 3 S3P 1 2 SPICE TLIN MLIN SourceTuner LoadTuner 1+ 1- Z1P wBond Match SRLC PLC PRC PRL PRLC
The Library Palette on the All category: every built-in component, four tiles to a row at the width the default dock layout gives the left column.

The palette is where every placeable part lives. It has two controls above the tiles and they do different jobs:

The tile grid is a reflow grid: the number of columns follows the panel's width, so widening the palette gets you more tiles per row rather than bigger tiles.

Placing a component

There are two gestures, and they place the identical thing — a kit part in particular resolves through the same path either way, so a drag and a click can never disagree about what you get.

  1. Click a tile to arm it. The tile highlights, and a ghost of the symbol follows the cursor over the canvas. Click on the canvas to drop one. The tool stays armed, so click again to place another — this is the fast way to lay down five capacitors. Click the tile a second time, or press Esc, to disarm.
  2. Or drag the tile onto the canvas. The ghost follows the drag, snapped to the connection grid, and the component lands where you release. A drag places exactly one part and leaves nothing armed, which is what you want when you are placing one part in the middle of doing something else.

While a placement is armed, R rotates the ghost 90° counter-clockwise and Shift+R clockwise — the same two keys that rotate a selection when nothing is armed, so there is one pair of rotate keys to remember rather than two.

The ghost is the real symbol, not a stand-in

For a part from an imported kit the ghost is built by resolving the cell's own primary symbol, not from its generic SymbolKind. Kit parts share one kind, so a ghost drawn from the kind alone would show a plain box during the drag and then place the kit's real artwork — the drag showing one thing and the result another.

Wiring, values and labels

Wire is W (or the toolbar button). Click from one pin to another; Enter finishes the wire in progress and returns you to Select, Esc cancels it. Select is S, and Esc from any tool comes back to it.

Double-click does three different things depending on what is under the cursor, and the distinction is worth learning because it is the fastest edit in the application:

Double-click on What opens
A component's value label (C = 1 pF) An inline edit box over the value itself. Type 1.2 nH, 50 Ω, 2 GHz and press Enter.
A component's body The full parameter editor for that instance — every parameter, not just the displayed ones.
A wire A net label on that wire, so you can name the net and refer to it in a measurement.

Arrow keys nudge the selection by one connection-grid step, or five with Shift held. F5 begins Move Labels, for pushing a crowded label block clear of the artwork without moving the component it belongs to.

Values are expressions, not just numbers: a VAR block on the sheet declares variables that any component value can refer to, and the same expression language drives sweeps and measurements. See Expressions and Measurements.

The context menu

circuitRF — FET S-Parameters + − + − Vdc V1 Vdc = VGS V I IProbe IGS + − Term Term1 Num = 1 Z = 50 Ω C C1 C = 1 mF L L1 L = 1 mH Angelov Q1 Ipk = 0.1 A Vpk = -1 V P1 = 1 Alpha = 2 VAR VAR VAR1 VGS = -2 VDS = 48 I IProbe IDS C C2 C = 1 mF L L2 L = 1 mH + − Vdc V2 Vdc = VDS V + − Term Term2 Num = 2 Z = 50 Ω Edit Parameters Push In Rotate 90° Mirror Horizontal M Mirror Vertical Shift+M Sort Placement by Name Move Labels F5 Reset Label Position Labels Disconnect Pins Disable (Open) Q Disable (Short) Copy Delete circuitRF — FET S-Parameters + − + − Vdc V1 Vdc = VGS V I IProbe IGS + − Term Term1 Num = 1 Z = 50 Ω C C1 C = 1 mF L L1 L = 1 mH Angelov Q1 Ipk = 0.1 A Vpk = -1 V P1 = 1 Alpha = 2 VAR VAR VAR1 VGS = -2 VDS = 48 I IProbe IDS C C2 C = 1 mF L L2 L = 1 mH + − Vdc V2 Vdc = VDS V + − Term Term2 Num = 2 Z = 50 Ω Edit Parameters Push In Rotate 90° Mirror Horizontal M Mirror Vertical Shift+M Sort Placement by Name Move Labels F5 Reset Label Position Labels Disconnect Pins Disable (Open) Q Disable (Short) Copy Delete
Right-clicking a component opens its context menu.

Right-clicking a component gives you the operations that apply to it: Edit Parameters, rotate and mirror, the two label commands, Labels ▸ for choosing which parameters show on the sheet, Disconnect, Copy and Delete. Items are disabled rather than hidden, so their positions stay put and you learn the menu by muscle memory.

Two more items appear only on a cell instance — Push In and Open Cell in New Tab. Those two are genuinely absent on a resistor rather than greyed, because they are not operations a resistor has; Hierarchy below is what they are for.

Right-clicking empty canvas gives a different, one-item menu: Pop Out. Nothing on the component menu applies when the click hit nothing, so the canvas menu carries only the one thing that always does — going back up a level. It is greyed out, with the reason on its tooltip, when you are already at the top of the schematic.

Hierarchy: putting one schematic inside another

Hierarchy is drawing a circuit once and using it in many places. A bias network, a matching section, a whole amplifier stage — draw it as its own cell, then drop that cell into a bigger schematic as a single component. The big schematic stays readable, and one edit to the cell reaches every place it is used.

Two things have to be true before any of it works, and they are the two that trip people up:

Step by step: a cell inside another schematic

  1. Create the cell. File ▸ New ▸ New Cell… (⇧⌘N / Ctrl+Shift+N), give it a name, and circuitRF makes the cell folder and opens its schematic. The command needs an open workspace — a cell is a folder inside one — so if it is greyed out, open or create a workspace first (The Workspace).

  2. Draw the sub-circuit, and give it pins. Wire it up as you would any schematic, then place a Pin at every point the outside world needs to connect to. The pins are the cell's ports — the pin numbered 1 becomes port 1 — and a cell with no pins places as a component nothing can be wired to. Pin, Port and Term is worth reading once if that distinction is new. Save with ⌘S.

  3. Open the schematic that will use it — a different one, and a saved one. A cell instance records where the cell is relative to the schematic holding it, so a scratch sheet from File ▸ New Schematic has nowhere to record it from; placing into one is refused with "Save the schematic before placing a cell" in Messages. Save it into the workspace first, or start it as a cell of its own.

  4. Drag the cell out of the Project Tree and onto the canvas. That is the placement gesture. Cells you author are not in the Library Palette — the palette carries the built-in library and any imported kits, and your own cells live in the Project Tree instead. It lands as one component with your cell's pins on it.

    If the cell has no symbol yet, you are offered an auto-generated one, built from the pin count from step 2. Accept it to keep moving; draw a proper one later in the Symbol Editor.

  5. Wire it in and set its parameters like any other component. Double-clicking its body opens the parameter editor for that instance.

  6. Push in to edit the cell from here. Click the instance once to select it, then use any of:

    • Right-click ▸ Push In — the item appears only on a cell instance. Right-clicking empty canvas offers Pop Out to come back up.
    • Toolbar button 18, and 19 to come back out (the toolbar below numbers them).
    • ⌘] / Ctrl+] in, ⌘[ / Ctrl+[ out — also on the View menu as Push Into Cell and Pop Out.

    You are now editing the cell's own schematic, in the same tab. A breadcrumb bar appears above the canvas showing how deep you are (X1, the instance you came through); every step in it is clickable, so you can jump straight back to any level rather than popping out one at a time. Push in again from there to go deeper.

Once that round trip works, everything else about hierarchy follows from it:

The other two views

The schematic is one of a cell's three views, and each is edited in its own editor:

View Editor What it owns
Schematic this page the electrical contents — instances, nets, values
Symbol Symbol Editor the glyph an instance draws, and where its pins sit
Layout Layout Editor the physical artwork, for fab handoff and EM

The symbol is what step 4 above places; the layout is what gets manufactured. A cell need not have all three — the cell folder holds schematic/, symbol/ and layout/ side by side and any of them may be absent.

Two commands under the Design menu move work between the schematic and the layout — Update Layout from Schematic (⌘U) and Update Schematic from Layout (⇧⌘U). Neither ever runs by itself; both are described in Schematic ⇄ layout.

A part that has no layout view of its own still reaches the board: its Footprint parameter — the last row of its parameter editor — names an SMT case size, an imported part or a .clay you drew, and that is what Update Layout places. See Footprints.

Simulating: an Analysis

A simulation in circuitRF is called an Analysis, and it is configured before it is run. An analysis is not a property of the circuit — it attaches to the test bench, the top schematic you actually simulate — so drawing a circuit does not by itself give you anything to run.

Open Simulate ▸ Setup Analyses… (the same list is also available as a dock panel), add the analyses you want, then press Run — ⌘R / Ctrl+R, or the ▶ button at the top of the list.

Setup Analyses FET_Harmonic_Balance_Sweep Results file: FET_Harmonic_Balance_Sweep.npy DC DC1 Operating point HB HB1 f₀=2 GHz, 3 harmonics SW Pin 45 pts: -10…34 Analyses run in listed order. Close Setup Analyses FET_Harmonic_Balance_Sweep Results file: FET_Harmonic_Balance_Sweep.npy DC DC1 Operating point HB HB1 f₀=2 GHz, 3 harmonics SW Pin 45 pts: -10…34 Analyses run in listed order. Close
Simulate > Setup Analyses on a test bench carrying two analyses: a DC operating point and a harmonic-balance run wrapped in a Pin drive sweep.

The example above is an ordinary two-analysis test bench: a DC operating point, and a Harmonic Balance run wrapped in a parametric sweep of the drive level Pin. Reading the panel:

Adding or editing a row opens the analysis editor, where the analysis is actually configured:

Edit Analysis Edit Analysis Type: DC S-Parameter Harmonic Balance Load Pull LP Pursuit Name: HB1 Enabled Tone (f₀) RFfreq GHz = 2E+09 Max harmonics 3 Tones: Single Multi Small-signal (WSProbe) Advanced Parametric Sweeps Top = innermost sweep = plot X axis. Rows below are outer (slower) sweeps. Variable Pin Spacing Cancel OK Edit Analysis Edit Analysis Type: DC S-Parameter Harmonic Balance Load Pull LP Pursuit Name: HB1 Enabled Tone (f₀) RFfreq GHz = 2E+09 Max harmonics 3 Tones: Single Multi Small-signal (WSProbe) Advanced Parametric Sweeps Top = innermost sweep = plot X axis. Rows below are outer (slower) sweeps. Variable Pin Spacing Cancel OK
The analysis editor on that harmonic-balance analysis: the type, the tone, the harmonic order, and the parametric sweep that wraps it. The dialog sizes to its content up to 650 px and scrolls past that, which is why the sweep rows run off the bottom.

The Type picker at the top decides everything below it — the body changes to the settings that type has. Here it is the harmonic-balance body: the fundamental tone (given as the expression RFfreq, resolved and previewed underneath), the unit, how many harmonics to retain, the single-versus-multi-tone choice, an Advanced block for the convergence controls, and the Parametric Sweeps section that wraps this analysis in one or more swept variables. The dialog grows to fit whatever the chosen type needs and scrolls beyond that, which is why the sweep's own Start / Stop / Step row runs off the bottom of the figure above.

Every analysis type, its full settings, and what it computes are in Simulations — DC, S-Parameters, Harmonic Balance, Parametric Sweep, Loadpull and Loadpull Pursuit.

What a run produces

Every analysis returns a DataSet — a named bundle of labelled, unit-bearing arrays — and the whole run goes into one .npy file. Open a Data Display to plot it, or read it straight into Python or MATLAB (Getting results out). Post-processing a run into named quantities is what Measurements are for.

The same run, headless

An analysis set up here runs identically from the command line — circuitrf sparam, dc, hb, lp or lpp against an elaborated netlist, with Simulate ▸ Generate Netlist producing the .cnl. See The Command Line.

Finding a component

Design ▸ Find Instance… — ⌘F / Ctrl+F — opens the Instances panel for the schematic you are working in and puts the cursor in its search box, so you can type a name straight away. The panel lists every component on the sheet by Name, Type and, where it adds something, the Cell/Part it comes from, sorted so that R2 comes before R10.

The panel always shows the schematic that has focus, and says which one in its header. Grounds, VAR and MEAS blocks are left out — they are rarely what you are looking for, and a sheet's grounds would bury its parts. The command is greyed out unless a schematic or a layout has focus; the panel itself is also under View ▸ Panels ▸ Instances.

Searching inside placed cells. By default only the level you are looking at is listed. Tick Include sub-cells and the panel also lists every component inside every placed cell, all the way down, named by its path — X1.X3.R5 is R5 inside X3 inside X1, so typing x1. lists everything under X1. The top level appears at once; the rest arrives a moment later (the panel shows Searching… meanwhile), and the window stays responsive while it does. With the box ticked the panel lists the whole tab from its top level, wherever you have pushed in to, so double-clicking X1.X3.R5 pushes down into X1, then X3, and zooms to R5 — and the list stays put for the next result. Unsaved edits in a cell you have open are included. A search that finds more than 100,000 components stops there and shows a + after the count. The box is remembered between sessions.

The toolbar

+ − 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 + − 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
Schematic editor toolbar
#ButtonWhat it does
1Zoom to Fit (F)
2Zoom Box (Z)
3Zoom Out
4Select (S)
5Wire (W)
6Place Ground (Shift+G)
7 + − + − Place Term (T)
8Place Pin (P)
9Rotate 90° CCW (R)
10Rotate 90° CW (Shift+R)
11Mirror Horizontal (M)
12Mirror Vertical (Shift+M)
13Delete (Del)
14Snap: Fine Grid (G)
15Disable → Open circuit (Q) — toggles if all selected are already disabled
16Disable → Short circuit (toggles if all selected are already disabled)
17Save schematic (Ctrl+S)
18Push Into Cell (Ctrl+])
19Pop Out (Ctrl+[)

Grouped by what you are doing, left to right:


See also: Symbol Editor · Layout Editor · Grid & Connectivity · Components · Pins, Ports & Terms · Simulations · File formats (.csch).