circuitRF Reference Guide

Smith Chart

Narrowband impedance matching done by hand, with one curve per component and a handle on every joint - drag it and watch the load move.

What it is, and when to reach for the Match Designer instead

The Smith Chart tool is a scratchpad for narrowband impedance matching, done by hand. You state one impedance — the thing being matched — and then add two-pin components outward from it, in series and in shunt, watching where the impedance at the far end lands.

The chart draws one curve per component: the path the impedance takes as that component grows from nothing to the value you set. So a network is not a list of numbers, it is a visible walk across the chart. Every joint in that walk carries a gripper, and dragging one changes the component it belongs to and moves everything downstream of it live.

That last sentence is the whole tool. The question a matching network actually poses is "if I make this one a bit bigger, where does the load end up?", and this answers it by letting you drag it and look.

Generator f R X 2.3 GHz 8.6 Ω -12.8 Ω 2.45 GHz 8 Ω -12 Ω 2.6 GHz 7.5 Ω -11.3 Ω + − Load f R X 2.3 GHz 35.4 Ω 7.865 Ω 2.45 GHz 49.98 Ω -0.1002 Ω 2.6 GHz 56.14 Ω -23.09 Ω Chart Z₀ 50 Ω 1 0.5 2 5 10 1 -1 0.2 -0.2 0.5 -0.5 2 -2 5 -5 10 -10 Q=2.291 2.3 GHz 2.45 GHz 2.6 GHz Q Network + − TermG Generator Z = 8 − j12 L L1 L = 1.97 nH C C1 C = 2.98 pF 2.45 GHz · load 49.98 − j0.1002 Ω · Γ 0.001024 ∠ -102° (-0.0002076, -0.001002) · VSWR 1.002 · mismatch 0.00 dB Generator f R X 2.3 GHz 8.6 Ω -12.8 Ω 2.45 GHz 8 Ω -12 Ω 2.6 GHz 7.5 Ω -11.3 Ω + − Load f R X 2.3 GHz 35.4 Ω 7.865 Ω 2.45 GHz 49.98 Ω -0.1002 Ω 2.6 GHz 56.14 Ω -23.09 Ω Chart Z₀ 50 Ω 1 0.5 2 5 10 1 -1 0.2 -0.2 0.5 -0.5 2 -2 5 -5 10 -10 Q=2.291 2.3 GHz 2.45 GHz 2.6 GHz Q Network + − TermG Generator Z = 8 − j12 L L1 L = 1.97 nH C C1 C = 2.98 pF 2.45 GHz · load 49.98 − j0.1002 Ω · Γ 0.001024 ∠ -102° (-0.0002076, -0.001002) · VSWR 1.002 · mismatch 0.00 dB
The Smith Chart document on the shipped Smith Chart example: the generator table over three frequencies, the two trajectories of an L match with a gripper at each joint, the three load points with their conjugate targets, the swept band through them, and the network the walk is a picture of.

Open it from Tools › Smith Chart for a new scratch document, or by opening a .csmith in the project tree. Tools › Smith Chart opens it in a window of its own, the size of the workspace window and offset a little down and to the right of it — the tool is three panes and a docked tab in an ordinary workspace window leaves too little of any of them to work in. If your workspace window is large enough that a docked tab would still be a full window's worth of space, it opens as a tab instead; and a .csmith opened from the project tree always opens as a tab, because you asked for the file. Drag the tab wherever you prefer either way.

It is an ordinary circuitRF document, not a separate application: it gets a tab, a • dirty mark, Save and Save As — on the tab's menu, on the shell's File menu and on the chart's own top strip — Undo and Redo on the keys you already use, tear-off and floating, and it is restored when you reopen the workspace. It also needs no workspace at all — a scratch chart opens with nothing else loaded, and Save As gives it a home later.

This tool and the Match Designer answer different questions

Reaching for the wrong one wastes an afternoon, so it is worth being blunt about which is which.

The Match Designer (its chapter) designs and computes a network for you. It is broadband: you give it two terminations and a band, and it synthesises a bandpass ladder from a Fano-optimum prototype, absorbs both terminations into it, and hands you a list of solutions to choose between. Use it when the band is wide enough that the answer is a filter problem.

This tool computes nothing. It is narrowband, and you are the algorithm: it evaluates what you build, instantly, and draws it. Use it when the band is narrow enough that two or three parts will do, when you want to see why a match is narrow, or when you have a network already and want to know what one component is doing in it.

There is deliberately no Solve button here, and no optimiser, no goal and no error function. Adding one would put the Designer's synthesis in two places, and the second copy would be worse.

Stating the generator

The generator is an impedance and nothing else — no available power, no dBm. Everything in this tool is a linear immittance.

It is a table: one row per frequency, each carrying a resistance and a reactance.

One row The ordinary case — "50 Ω at 2 GHz". That one frequency is then the design frequency, and there is no swept band to draw.
Several rows What makes the per-frequency load points interesting. Rows are kept sorted by frequency, and two rows at one frequency is a refusal naming the frequency rather than a silent last-wins.

Every cell is edited the way every other value in circuitRF is: double-click to open, type, Return to commit, Escape to revert, clicking away commits. Type a unit and it is honoured — 2, 2 GHz and 1800 MHz all mean what they look like, and opening the editor pre-selects only the number so the unit is left alone.

Two square buttons sit at the right of the Generator heading.

Import .s1p… reads a one-port Touchstone file and replaces the table with one row per file frequency, converting S11 to an impedance against the file's own stated reference. Two things about it are worth knowing:

Conjugate negates every row's reactance, once. It is an ordinary undoable edit and not a persistent flag — pressing it twice puts the table back. A flag would mean the number in the table and the number the tool uses disagreed, and there is no way to display that which does not eventually mislead somebody.

The design frequency is a row of the table — there is nothing to set

The design frequency is what the trajectories are drawn at, what the reactances are computed at, and what the status strip reports. It is the generator row nearest the table's median frequency and there is no field for it. An odd number of rows gives you the middle row; an even number falls exactly between two of them, and the higher one wins — so a two-row table at 1.8 and 2.2 GHz is drawn at 2.2 GHz.

It is always one of the frequencies you typed, which is the point: the design frequency's load point is one of the labelled ones on the chart, and its generator impedance is a row you can read rather than a value interpolated between two.

It used to be a field you typed into, which could be put outside the table's span, and that turned it red and refused the whole document. A row of the table is inside its own span, so the rule, the red field and the refusal all went with it. To move the design frequency, move the table.

Shift-drag a generator glyph to change its impedance

Each generator-table row is drawn on the chart as a faint +. Hold Shift and drag one and you are editing that row: the two cells in the table follow the pointer live, and so does every trajectory, every load point and the band — you are moving the impedance the whole cascade starts from. The row's frequency is untouched.

The modifier is the point. An unmodified press on a glyph pans the chart exactly as a press on empty space does, so this is not something you can nudge by accident; and the whole drag is one undo entry, like every other drag on this chart.

Building the cascade

The network is an ordered list. Element 0 is nearest the generator; each element is either series (in the through path) or shunt (from the through path to ground). There are no branches, no nesting and no sub-circuits — that constraint is what makes a per-element curve mean something, because a walk across a chart has to be a walk.

+ − TermG Generator Z = 8 − j12 L L1 L = 1.97 nH C C1 C = 2.98 pF + − TermG Generator Z = 8 − j12 L L1 L = 1.97 nH C C1 C = 2.98 pF
The network strip as the example draws it: the generator on the left, the cascade growing rightward, one ground under each shunt column, and the load at the far end.
Add ▾ Appends at the end, nearest the load.
Copy / Paste Copy puts the cascade on the clipboard as a real schematic selection (below); Paste replaces the whole cascade with one. Paste is greyed when the clipboard holds no circuitRF schematic selection, and the state is re-read whenever you come back to the window.
Delete Removes the selected element; the chain closes up. The Delete key does the same thing when no marker is selected on the chart.
↕ / drag Reorders. Dragging an element along the strip does the same thing — and the whole drawing follows the pointer as you go, with the other parts stepping aside and the wires re-drawn, so what you see while dragging is exactly what dropping will leave.
Zoom to Fit (F) Frames the whole drawing. The strip re-frames itself whenever the drawing changes size — adding, deleting or mirroring — and keeps your zoom when it does not.
Zoom Box (Z) Arms the next left-drag to draw a box, and frames that box. Esc cancels. It is the schematic and layout editors' own zoom box, because this strip is drawn by the schematic renderer.
enabled Unticking an element makes it contribute nothing and draw no curve — without deleting it. It keeps its values and its place. That is the difference between trying something and losing it.

These are the elements, and every one of them is a component circuitRF already has — which is what makes the copied network (below) a circuit that really simulates.

Element Placement What it is
R, L, C series or shunt The three single-parameter parts.
SRLC series or shunt R, L and C in series in one part — a real capacitor with its ESR and ESL, rather than three components wired together.
PRLC series or shunt R, L and C in parallel — a tank.
SRL, SRC, SLC series or shunt The same series branch with one element left out: a lossy inductor, a lossy capacitor (or an RC damper), and a lossless series trap. Reach for one of these rather than an SRLC whenever the third value is not a number you meant — it is one fewer slider and one fewer thing to read.
PRL, PRC, PLC series or shunt Their parallel duals: a damped choke, a leaky capacitor or shunt RC, and a lossless tank.
Z1P series or shunt A complex impedance, constant over frequency. The frequency independence is the point of it.
S1P series or shunt A one-port Touchstone file — a measured part.
S2P series only A two-port Touchstone file. A 2-port with its second port grounded is a different component than the one you placed, and a shunt one-port is what S1P and Z1P are for.
TLIN series An ideal transmission line with its own Z0 and electrical length.
Open stub, Shorted stub shunt The same line as a stub, far end open or grounded.
Click a component to see which curve is its

Selecting an element in the strip draws its trajectory thicker on the chart and fades the other trajectories back, so a cascade of five parts stops being five curves of similar colour and starts being an answer to which one is this. Click the strip's empty background — or press Esc — and everything goes back; that also drops any selected markers, because this window has two selections and one key.

Only the element curves move. The load points, the swept band, the constant-Q arcs and any overlays you have added are left exactly as they were: those are what you are matching to.

Selecting an element shows its sliders underneath — one for an L, three for an SRLC, two for an SRL or a line, and none at all for S1P or S2P, whose value is a file. A part has a slider for each value it actually carries and no others. Each row is a label, a slider and a value you can type. The slider is logarithmic over a decade either side of the current value for R, L, C and Z0, and linear for an electrical length and for the parts of a Z1P; typing a value outside the range re-centres the range rather than clamping the value. Dragging is live: every step re-evaluates and redraws, and one drag is one undo entry.

A line's length is quoted at its own reference frequency

A TLIN carries both a characteristic impedance and an electrical length, and the length is stated in degrees at the element's own Fref, scaling as θ(f) = E·f/Fref. That is what makes a line come apart at the band edges like a real one.

Fref defaults to the design frequency when the element is placed and then stays put. It does not follow the design frequency afterwards: a line that silently re-specified itself whenever you retuned would be a different physical line each time, and the per-frequency load points would stop meaning anything. It is an editable field on the element's row, so you can move it deliberately.

Discrete component values

The sliders and the grippers are continuous, so a two-element match lands on something like 2.37 nH and 1.64 pF — values nobody can order. The staircase button on the strip's toolbar restricts every inductance and capacitance in the design to a list of values you can actually buy, and snaps the ones already there when you switch it on.

With it on, every edit lands on the list: a slider drag steps from value to value, a gripper on the chart steps with it, and a number you type is taken to the nearest entry. Turning it on is one undo entry — the flag and the values it moved come back together — and the strip says how many values moved. Turning it off moves nothing: the list values are the design now, and the way back is undo.

Inductance and capacitance only. A resistance in this vocabulary is as often a parasitic as a part — the R of an SRLC, an SRL or a PRC is an ESR or a leakage term, something you measure rather than order — so putting it on a preferred-value ladder would state something untrue about the design. A line's Z0, an electrical length and a Z1P's two parts are continuous quantities by construction and are not on any list.

Nearest is nearest by ratio, not by difference

The gap from 1.0 to 1.2 pF is 0.2 pF and the gap from 68 to 82 pF is 14 pF, so a list like this is a ratio scale — which is also why a component tolerance is ±5 % and not ±5 pF. The value halfway between two entries is their geometric mean, so 1.09 pF snaps down to 1.0 and 1.11 pF snaps up to 1.2. A value past either end of the list lands on that end.

Editing the list

Right-click the staircase button and choose Preferred values…, whether the toggle is on or off.

What ships is E12, the IEC 60063 preferred numbers — twelve values per decade, 1.0, 1.2, 1.5, 1.8, 2.2, 2.7, 3.3, 3.9, 4.7, 5.6, 6.8, 8.2 — running 0.1 pF to 100 nF for capacitors and 0.1 nH to 100 µH for inductors. If the range you buy from is stocked on something else, replace it.

Capacitors / Inductors The two lists. Both are committed together by Apply.
Text The whole list at once. Paste a column out of a spreadsheet, or a comma-separated row, or type it. A # starts a comment.
Rows One value at a time, with an × to remove and + Add value to append. A row commits when it loses focus or you press Enter.
Tidy Sorts, drops duplicates and re-spells every entry with its unit — the same tidying Apply does, run early so a pasted column can be checked first.
Apply Stores both lists. A design with the toggle on is re-snapped onto them, as one undo entry.
Revert to shipped values Both lists back to the E12 ladders above, at once.

A bare number is read as pF in the capacitor list and nH in the inductor list; anything else needs its unit, and a unit from the wrong list (2.2 nH among the capacitors) is refused rather than quietly ignored. An empty list is refused too — it would leave the toggle switched on and doing nothing, with nothing on screen to say why.

A comma separates values here; it is not a decimal point

circuitRF accepts 1,5 for one and a half in every field whose grammar leaves the comma free, and this field's does not: 1,2 in a list is either two values or one, and nothing in the text says which. In this box it is two — 1 pF and 2 pF. Write the decimal point as a point.

The list is yours, not the document's. It describes the parts you buy from, so it follows you between designs rather than travelling inside a .csmith — a file carrying its own copy would open on somebody else's machine snapping to a parts drawer they never chose. What the .csmith stores is whether the toggle is on.

Mirroring the drawing

The ⇆ button on the strip's toolbar (M) flips the drawing so the generator sits on the right and the cascade grows leftward.

+ − TermG Generator Z = 8 − j12 L L1 L = 1.97 nH C C1 C = 2.98 pF + − TermG Generator Z = 8 − j12 L L1 L = 1.97 nH C C1 C = 2.98 pF
The same network after the mirror button. The drawing and the symbols are reflected; the element order, the circuit and the chart are not.

It mirrors the drawing and nothing else. The element order does not change, the circuit does not change, and the chart does not mirror — the Γ plane's orientation is fixed by physics (inductive above the real axis, capacitive below), and a mirrored Smith chart is simply a wrong one. The symbols reflect along with their positions, which matters for a part like an S2P whose port 1 marking means something.

It is a view setting: it lives in the document, it marks it dirty, and it is one undo entry.

What the per-element curve means

This is the idea the whole tool is built on, so it gets its own section.

Each enabled element draws one curve, from the impedance at its input to the impedance at its output, by scaling that element's immittance from zero to its set value. A series element sweeps Zin + t·Ze and a shunt element sweeps Yin + t·Ye, for t from 0 to 1; a line sweeps its electrical length from zero to its full value.

Generator f R X 2 GHz 15 Ω -25 Ω + − Load f R X 2 GHz 112.7 Ω -0.185 Ω Chart Z₀ 50 Ω 1 0.5 2 5 10 1 -1 0.2 -0.2 0.5 -0.5 2 -2 5 -5 10 -10 Q Network + − TermG Generator Z = 15 − j25 L L1 L = 3.81 nH C C1 C = 2.43 pF TLIN TL1 Z = 75 Ω E = 90 deg F = 2 GHz 2 GHz · load 112.7 − j0.185 Ω · Γ 0.3855 ∠ -0.104° (0.3855, -0.0006984) · VSWR 2.255 · mismatch 0.70 dB Generator f R X 2 GHz 15 Ω -25 Ω + − Load f R X 2 GHz 112.7 Ω -0.185 Ω Chart Z₀ 50 Ω 1 0.5 2 5 10 1 -1 0.2 -0.2 0.5 -0.5 2 -2 5 -5 10 -10 Q Network + − TermG Generator Z = 15 − j25 L L1 L = 3.81 nH C C1 C = 2.43 pF TLIN TL1 Z = 75 Ω E = 90 deg F = 2 GHz 2 GHz · load 112.7 − j0.185 Ω · Γ 0.3855 ∠ -0.104° (0.3855, -0.0006984) · VSWR 2.255 · mismatch 0.70 dB
Three elements and therefore three curves: a series inductor walking a constant-resistance circle, a shunt capacitor walking a constant-conductance circle, and a 75 ohm quarter-wave line taking 50 ohms to 112.5 - a half turn about the LINE's own impedance, not about the chart's centre. The arrowhead on each says which way the walk runs; the ring at each joint is the gripper that drags the element it belongs to.

For the everyday parts that is exactly the classical construction, and it produces exactly the classical curves:

a series reactance walks a constant-resistance circle
a shunt susceptance walks a constant-conductance circle
a series resistance walks the real-part line
a line rotates about its own Z0 — the figure's third curve is a 75 Ω quarter wave taking 50 Ω to 112.5 Ω — which is why a tool that fixed lines at 50 Ω could not draw the most common move there is

Nothing about the familiar picture changes. What the rule buys you is that the multi-parameter parts need no special case: an SRLC's Zin + t(R + jX) is a straight segment in the Z plane and so a circular arc on the chart — one curve, one gripper, no discontinuity.

Why it scales the immittance and not the component value

"From nothing to its value" most naturally suggests sweeping the capacitance or the inductance itself, and that reading does not survive contact with a capacitor: as C → 0 the reactance −1/ωC runs to −∞, so an SRLC's curve would leave the chart at one end and come back. That is a true picture of a nonsensical question.

Three details you will meet:

Dragging a gripper

There is a gripper at every node of the walk — N+1 of them for N elements, drawn as a small hollow ring in the curve's own colour, brightening under the pointer and filling while you drag.

A drag changes one parameter — the element's active parameter, which is the one whose slider you last touched, and which starts at a sensible default per type: the reactance, never the loss — L for a series part, C for a parallel one, and whichever of the two it has when it carries only one — and the electrical length for a line. The active row is marked in the slider panel, so the connection between the slider I just used and the handle on the chart is visible rather than remembered. Click a slider's label to make it the active one without moving anything.

Only the part of your drag the parameter can actually reach is used. That is not an approximation — it is what drag along the arc means, and it is why the gripper follows the curve rather than the cursor.

A drag that asks for something unbuildable pins, and says so

Inductances, capacitances and resistances are non-negative; a line's Z0 is positive; an electrical length is non-negative. A drag that would demand otherwise pins at the boundary and the status strip names the parameter and the limit. It does not quietly produce a negative inductance, and it does not stop following your hand either — so you can drag back out of the pin.

One drag is one undo entry, pushed when you release, carrying the value from when you pressed. The same is true of a slider drag, a Q drag, a paste and a mirror toggle.

The load points, and their targets

Every row of the generator table puts a load point on the chart, labelled with its frequency. The design frequency's point is drawn emphasised and the others are secondary. Together they are the picture of the network coming apart at the band edges — which, on a narrowband match, is the thing you are actually deciding about.

The Load panel, under the Generator table, is the same information as numbers: one row per generator frequency, in the same f / R / X columns, giving the impedance the cascade lands on there. The Generator table says where the design starts and this says where it ends, at the same frequencies, so the two read against each other row for row. It is not editable — there is no load component and nothing terminates the cascade, so the load is simply where the walk arrived — but the numbers are selectable and can be copied out. A row showing — is a frequency the cascade could not be evaluated at, which on a network containing a Touchstone element means that file does not cover it.

Beside each one is a faint ⊕ generator glyph, at Γ(Zgen) for that frequency — where the Generator table says the generator is.

Everything in the strip is against the chart's own Z0

The status strip states, for the design frequency: the load impedance, Γ in polar and rectangular, VSWR, and mismatch — and all four are taken against the chart's own reference impedance Z0, which is what "matched to 50 Ω" means. Land the load point on the middle of the chart and Γ goes to zero, VSWR to 1 and mismatch to 0 dB.

mismatch is the power that reflection costs, −10·log10(1 − |Γ|2) — the same Γ the VSWR beside it is made of, said in decibels. It is not a return loss: a return loss gets more negative as a match improves, and this goes to zero.

The ⊕ glyphs are a different question and carry no number: they mark the generator itself, at each frequency in the table. Landing a frequency's load point on the MIRROR of its glyph about the horizontal axis — the conjugate — is the conjugate match to the generator, which on a network that takes a device to 50 Ω is a different point from the middle of the chart.

Z0 is a single, real, document-wide reference impedance, 50 Ω by default and settable. Γ = (Z − Z0)/(Z + Z0), the grid is the ordinary fixed Smith grid, and every overlay is renormalized to it on the way in. A generator-referenced normalization that moved under your hands whenever you edited the table was considered and rejected on exactly that ground.

Constant Q and the swept band {#q}

Constant Q draws a pair of arcs on which |x|/r = Q, for the normalized impedance. Both branches are true circles — centre (0, ∓1/Q), radius √(1 + 1/Q²) — and they are drawn only inside the unit disc, because that is the only part of them that is an impedance.

Generator f R X 2 GHz 15 Ω -25 Ω + − Load f R X 2 GHz 112.7 Ω -0.185 Ω Chart Z₀ 50 Ω 1 0.5 2 5 10 1 -1 0.2 -0.2 0.5 -0.5 2 -2 5 -5 10 -10 Q=1.53 Q Network + − TermG Generator Z = 15 − j25 L L1 L = 3.81 nH C C1 C = 2.43 pF TLIN TL1 Z = 75 Ω E = 90 deg F = 2 GHz 2 GHz · load 112.7 − j0.185 Ω · Γ 0.3855 ∠ -0.104° (0.3855, -0.0006984) · VSWR 2.255 · mismatch 0.70 dB Generator f R X 2 GHz 15 Ω -25 Ω + − Load f R X 2 GHz 112.7 Ω -0.185 Ω Chart Z₀ 50 Ω 1 0.5 2 5 10 1 -1 0.2 -0.2 0.5 -0.5 2 -2 5 -5 10 -10 Q=1.53 Q Network + − TermG Generator Z = 15 − j25 L L1 L = 3.81 nH C C1 C = 2.43 pF TLIN TL1 Z = 75 Ω E = 90 deg F = 2 GHz 2 GHz · load 112.7 − j0.185 Ω · Γ 0.3855 ∠ -0.104° (0.3855, -0.0006984) · VSWR 2.255 · mismatch 0.70 dB
The same walk with the constant-Q pair switched on at Q = 1.75. Every point on the two arcs has |x|/r = Q, so a joint inside them is a wider-band network and a joint outside them is a narrower one.

They are the bandwidth drawn on the same picture as the match. A joint that sits inside the arcs is a lower-Q, wider-band network; a joint outside them is narrower. On a two-element L match the corner between the arcs is the one that sets the bandwidth, and its Q is exactly |X|/R there.

The swept band is a thin continuous locus through the load points, and it is always drawn. Its two ends are the generator table's first and last rows — it is exactly the part of the picture the generator can be asked about, because Zgen is interpolated between rows and never extrapolated past them. There is nothing to switch on and nothing to set.

It used to be a checkbox with a start, a stop and a point count beside it, which is three numbers to keep in step with the table and one more thing for a document to be refused over — and every honest value of the three was already written in the table one card higher up.

A single-row table draws no band: one row is one impedance, flat, so the locus is a single point and the load point already draws it.

Overlays and markers

Overlays put reference data under the work, and you add one exactly as you would add a trace to a Smith chart on a Data Display:

  1. pick the data in the source combo at the left of the chart's top strip;
  2. right-click the chart › Plot Properties…;
  3. press Add, and edit the trace card that appears.

The two sources circuitRF already has are both offered:

Because it is the ordinary trace card, everything on it is yours: the matrix element, a virtual Z or Y, a derived quantity — of which SourceStabilityCircle and LoadStabilityCircle are drawn as circles in the Γ plane — the colour, the line, the marker glyph, the reference impedance, the cube slice, and the trace's own markers. Remove one with the card's trash button.

Z₀ › Override Seeded on, at the chart's own Z₀, and on is the right answer: a 75 Ω part drawn on a 50 Ω chart without it is a curve in the wrong place that looks entirely plausible. Turn it off to see the file's own numbers.
Autoscale Seeded off for a trace you add here. A stability circle can be enormous, and one unlucky overlay would squash the cascade into a corner.
The chart's own curves The trajectories, the load points and the constant-Q arcs are rebuilt from your design on every edit, so their cards offer no trash and no source pickers — only how they look.
An overlay that does not resolve Is reported in the status strip, does not stop the document opening, and is kept: a reference whose file is temporarily missing is not deleted from your document.

Markers are the Data Display's own markers, which means placement, drag, the info box, the context menu and the editor all behave exactly as they do on a plot — including the constant-VSWR circle about a marker. A marker remembers which curve it is a reading on, by that curve's label, so deleting an element cannot silently move a reading onto the next one.

Markers here are placed freely, because on a matching chart a marker is usually a target you are aiming the network at rather than a sample of a swept curve. The glyph says which it is:

A ring The marker is floating — it is wherever you put it, and it is not sitting on anything. It is drawn the same way a marker on a loadpull contour is, for the same reason: it is a reading at a position.
A triangle The marker is on a curve. Hold Shift while dragging and it snaps onto the nearest curve on the chart — a trajectory, the band, an overlay, a stability circle — which is how you put one exactly on a locus rather than very nearly on one.

Dragging it again without Shift takes it off the curve and it goes back to a ring. So does Change to Trace…, which re-points it at another curve without moving it — the new curve runs somewhere else, so the marker is floating again and says so.

Change to Trace… lists only the traces you added. The tool's own curves are rebuilt from your design on every keystroke, so re-pointing a reading at one of those would be a reading of something that is gone by the next edit.

A VSWR circle is not centred on its marker

Except when the marker is at Γ = 0. The constant-VSWR locus about an arbitrary point is a circle whose centre is somewhere else entirely; circuitRF draws the true one. It is worth stating because the picture invites the opposite assumption.

Out to a schematic, and back

Copying the network out

Copy on the network toolbar, right-click the strip › Copy, or Edit › Copy with the network focused — one command behind all three. What goes on the clipboard is, all at once, the schematic JSON, vector SVG and PDF, and a PNG — the same clipboard the schematic editor's own Copy writes, so it pastes as real editable components into a .csch, and as a vector into a presentation.

circuitRF - Matched input + − + − TermG Generator Num = 1 Z = complex(8,-12) L L1 L = 1.97 nH C C1 C = 2.98 pF + − TermG load Num = 2 Z = 50 Ω circuitRF - Matched input + − + − TermG Generator Num = 1 Z = complex(8,-12) L L1 L = 1.97 nH C C1 C = 2.98 pF + − TermG load Num = 2 Z = 50 Ω
What Copy on the network strip puts into a schematic: the same parts at the same coordinates, with the generator end terminated as port 1 carrying the generator impedance at the design frequency and the load end as port 2 carrying the chart's Z0.

What lands is a complete, runnable two-port, not a fragment with dangling ends:

A Term carries one impedance and the generator table may carry many. When it does, the status strip says so on copy and names the frequency that was used. It is stated rather than prevented, because the copy is still the right circuit at the design frequency, which is what you wanted.

The copy follows the mirror. Someone who flipped the network to make a figure would not thank us for un-flipping it on the way out; the circuit is electrically identical either way.

Copy on the chart's own strip, left of Save — or right-click the chart › Copy, or Edit › Copy with the chart focused — does the same for the picture — PDF, SVG, the plot configuration and a 2× bitmap — with the trajectories, grippers, targets, Q arcs, load labels and markers all in it.

Pasting a schematic in

Paste on the network toolbar, right-click the strip › Paste, or Edit › Paste takes a selection copied out of a schematic and replaces the whole cascade with it, or refuses with a sentence naming what stopped it. One paste is one undo entry, restoring the entire previous network.

The button is greyed only when the clipboard holds nothing of circuitRF's at all. A selection that is one of ours but is not a cascade this tool can draw leaves it live, so that pressing it tells you which part was the problem — which is the whole point of the rules below, and more use than a grey button.

A refusal matters more here than a success would: a reader that accepted part of a paste would replace your network with something that is not what you copied, and report success.

Which selections are compatible — the five rules, in order
  1. Every component is one of the element types above, a ground, or a Term/Port.
  2. Every non-ground net has exactly two connections, except the two ends.
  3. There are exactly two end nets and the walk between them is unique. Any branch is a refusal naming the net — a cascade has no tee in it.
  4. Every part hanging off the through path has its other pin on ground, and nothing else does.
  5. No component carries a parameter this tool cannot represent — an expression, a swept variable, a hierarchical reference. That is a refusal naming the instance and the parameter, because silently dropping an expression would change the circuit.

Which end is the generator is decided by a Term/Port with the lowest Num if there is one, and otherwise by geometry: the leftmost end when the strip is drawn generator-left, the rightmost when it is mirrored. The strip says which of the two rules fired, because they can disagree and you are the only one who knows which you meant.

The generator table itself is not touched by a paste. What is replaced is the cascade; the ports that told the reader which end was which are then discarded. Overwriting a table you may have imported from an .s1p with a single number, on the strength of a paste you made to change the network, would be the wrong answer.

Running it headless

circuitrf smith evaluates a .csmith with no display: it prints what the status strip states, and then the walk one node at a time — which is the part worth having on a build machine, because it is what you diff between two revisions of a network. It writes the load reflection coefficient as a .s1p, and the chart as SVG, PDF or PNG, drawn by the same code the window draws with.

See smith in the CLI chapter for the options, the refusals and the exit codes.

What it will not do

Stated plainly, because each of these is a thing somebody reasonably expects.

It will not design a network for you. No synthesis, no optimiser, no goal, no error function. A network is judged by looking at it. That is the Match Designer's job.
It has no power, no dBm and no gain. The generator has an impedance and nothing else, and every quantity here is a linear immittance. A gain readout would be inventing a quantity the model does not have.
It has no branches and no hierarchy. One cascade, ground on the shunt side. This is not a simplification waiting to be relaxed — it is what makes a per-element curve mean something.
It has no layout and no physical length. A TLIN is an ideal line with an impedance and an electrical length. Microstrip and its family are a schematic's business.
It is not run by the simulation engine. A .csmith is evaluated in closed form, which is why it keeps up with a drag. It is checked against the engine: every element type in both placements is compared against the ordinary S-parameter analysis of the equivalent netlist.
There is no separate application. It is a document type. There is no standalone binary and none is planned.