Author diagrams

Use every 0.7 primitive deliberately

Exhaustive families, variants, options, semantic ports, and canonical orientations.

sheet
5 / 15
rev
v0.7
sections
5
compiled
6

Every direction-sensitive family defaults to orientation=right; a rotationally symmetric node such as junction rejects the option outright. Aliases are still accepted, but the names in these tables are the ones 0.5 emits — an alias is rewritten to its canonical terminal before anything downstream sees it, so these are the names a host must key on.

01 / ElectricalSources, connectivity, switching, and instruments

Kind type variants Stable ports
source voltage-dc, voltage-ac, voltage-pulse, current-dc, current-ac, battery, vcvs, vccs, ccvs, cccs negative, positive; dependent sources add control-positive, control-negative
junction, testpoint node
connector in, out
power vcc, vdd, vss, positive, negative in
switch spst, spdt, pushbutton, relay in, out; SPDT: common, normally-open, normally-closed; relay: coil1, coil2
protection fuse, breaker in, out
amplifier opamp, comparator, instrumentation positive, negative, out, v+, v-
resonator crystal, ceramic in, out
meter voltmeter, ammeter in, out
load lamp, motor, speaker, buzzer in, out
connector:J7 "mains inlet" at (90, 150) #slate
protection:CB7 "breaker" at (270, 150) #amber [type=breaker]
switch:KM7 "isolator" at (460, 150) #cyan [type=spst]
meter:A7 "A" at (660, 150) #purple [type=ammeter]
load:MT7 "motor" at (860, 150) #emerald [type=motor]
testpoint:TP7 "TP7" at (460, 310) #cyan

J7.out -> CB7.in #slate [line]
CB7.out -> KM7.in #amber [line]
KM7.out -> A7.in #cyan [line]
A7.out -> MT7.in #emerald [line marker-end=arrow]
KM7.out -> TP7.node #cyan [ortho]
compiled by @schemd/core → shown in the rail

A relay is two circuits in one symbol: in/out carry the load, coil1/coil2 carry the control that closes it. That separation is why the contactor above needs no second component to be honest about what switches it.

02 / ElectricalPassives and semiconductor variants

Passives share in/out; diodes expose anode/cathode. Transistor controls are base for BJT, gate for FET/IGBT, plus collector/emitter or drain/source.

Kind Variants
resistor fixed, variable, rheostat, potentiometer, thermistor, ldr
capacitor fixed, variable, polarized
inductor fixed, coupled, transformer
diode standard, schottky, zener, led, photodiode, varactor, scr, triac
transistor npn, pnp, nmos, pmos, njfet, pjfet, nigbt, pigbt
port optional width=1..256; in, out
ground signal, earth, chassis; in
resistor:RV7 "variable" at (100, 150) #amber [type=variable]
capacitor:CT7 "polarized" at (290, 150) #cyan [type=polarized orientation=down]
inductor:LC7 "coupled" at (480, 150) #purple [type=coupled]
diode:DZ7 "Zener" at (670, 150) #blue [type=zener]
transistor:QM7 "n-MOS" at (860, 150) #emerald [type=nmos orientation=up]
compiled by @schemd/core → shown in the rail

Note that the variant changes the symbol, never the port contract. A potentiometer and a fixed resistor are both wired in to out, so swapping one for the other is a one-word edit rather than a rewiring.

03 / DigitalLogic, sequential blocks, and explicit buses

Classical gates are and, or, not, nand, nor, xor, and xnor; they use indexed in1..inN, out1..outN and accept standard=ieee|iec.

Kind type variants Stable special ports
buffer plain, tristate, tristate-inverter, schmitt, schmitt-inverter in1, out1; tri-state adds enable
logic high, low, unknown, high-z out
clock out
flipflop sr-latch, d-latch, d, jk, t clock, enable, preset, clear, q, nq, plus type inputs
mux mux, demux indexed data ports, select, enable
encoder, decoder indexed inputs/outputs
register in, out, clock, enable, clear; width=2..256
counter indexed output, clock, enable, clear
adder half, full indexed inputs/outputs
comparator in1, in2, gt, eq, lt
bus tap, splitter, joiner bus, tap, or indexed branches; width=2..256
port:LEVEL "level" at (80, 130) #blue
port:SETPT "setpoint" at (80, 250) #amber
comparator:CP7 "level ? setpoint" at (400, 190) #cyan
junction:OVER "over" at (650, 190) #cyan
mux:PICK "select" at (860, 190) #purple [type=mux]
register:HOLD7 "hold" at (650, 420) #emerald [width=1]
clock:SMPCLK "SMPCLK" at (200, 420) #amber
port:VALVE "valve" at (1050, 190) #emerald

LEVEL.out -> CP7.in1 #blue [digital line]
SETPT.out -> CP7.in2 #amber [digital line]
CP7.gt -> OVER.node #cyan [digital line]
OVER.node -> PICK.select #cyan [digital ortho]
OVER.node -> HOLD7.in1 #cyan [digital line]
SMPCLK.out -> HOLD7.clock #amber [digital ortho]
PICK.out1 -> VALVE.in #emerald [digital line marker-end=arrow]
compiled by @schemd/core → shown in the rail

A comparator publishes three answers — gt, eq, lt — rather than one boolean, so a datapath that cares about which way a threshold was crossed does not need a second gate to find out.

04 / QuantumNamed gates, two-track CNOT, multi-track operators, and classical results

Single-qubit shells are hadamard, qgate, xgate, ygate, zgate, sgate, sdg, tgate, tdg, sx, phase, rx, ry, rz, and ugate; they use in/out. qgate accepts parameter, phase, and matrix detail rows.

Kind Stable ports and options
cnot control rail in1, out1; target rail in2, out2; legacy aliases in, out, control, target remain accepted
measure in, out, classical
reset in, out
prepare out
control in, out, control; control=positive, negative, or classical
swap, cz, cphase, toffoli, controlled, barrier, delay indexed inN, outN, controlN, targetN; bounded wires, controls, targets
classical-bit in, out
classical-register in, out, width=2..256

cnot always owns exactly two continuous qubit rails. Use the indexed through-ports when composing a circuit; control and target address the marker locations for compatibility and interaction metadata. initial and final belong to UML state/activity diagrams—they are not quantum state boundaries. Start a quantum rail with prepare, and terminate it with measure or a system port when it remains unmeasured.

prepare:T0 "|1\rangle" at (80, 110) #blue
prepare:T1 "|0\rangle" at (80, 250) #blue
prepare:T2 "|0\rangle" at (80, 390) #blue
toffoli:CCX "CCX" at (420, 250) #purple [controls=2 targets=1]
measure:MT7 "M" at (700, 390) #cyan
classical-bit:CR7 "c_0" at (880, 390) #emerald

T0.out -> CCX.in1 #blue [quantum line]
T1.out -> CCX.in2 #blue [quantum line]
T2.out -> CCX.in3 #blue [quantum line]
CCX.out3 -> MT7.in #purple [quantum line]
MT7.classical -> CR7.in #cyan [classical line marker-end=arrow]
compiled by @schemd/core → shown in the rail

The rails are indexed and continuous: inN enters, outN leaves, and the operator sits across all of them. measure is the only place a quantum rail becomes classical, which is why its classical port — not its out — feeds the classical bit.

cnot is the two-track case of the same rule, and the one most often written wrongly. It owns exactly two continuous rails: the control enters at in1 and leaves unchanged at out1, the target enters at in2 and leaves at out2. The legacy control and target names still resolve — they address the marker positions — but a composed circuit should use the indexed through-ports, because those are the terminals the netlist and the full-mode metadata carry.

prepare:R0 "|0\rangle" at (90, 110) #blue
prepare:R1 "|1\rangle" at (90, 250) #blue
cnot:CX "CNOT" at (450, 180) #purple
port:CBIT "control" at (780, 110) #emerald
port:TBIT "target" at (780, 250) #emerald

R0.out -> CX.in1 #blue [quantum line]
R1.out -> CX.in2 #blue [quantum line]
CX.out1 -> CBIT.in #purple [quantum line]
CX.out2 -> TBIT.in #purple [quantum line marker-end=arrow]
compiled by @schemd/core → shown in the rail

05 / UMLStructural, deployment, activity, state, and interaction nodes

The UML catalog includes:

  • Structure: class, interface, provided-interface, required-interface, enumeration, datatype, object, component, component-port, artifact, node, device, execution, system, package, note.
  • Behavior: actor, usecase, state, action, decision, merge, fork, join, activity-final, flow-final, object-node, send-signal, receive-signal, partition.
  • Interaction/state: lifeline, activation, destruction, fragment, interaction, gate, found, lost, choice, state-junction, history, entry, exit, terminate, region, initial, final.

Sized rectangular nodes accept bounded width and height. Class-like nodes additionally accept stereotype, attributes, and operations. Their ports are left, right, top, and bottom.

Relations are association, dependency, generalization, realization, aggregation, composition, message, synchronous, asynchronous, return, control-flow, object-flow, assembly, delegation, transition, include, and extend.

lifeline:REL7 "Release job" at (220, 270) #cyan [width=170 height=400]
lifeline:CDN7 "Package mirror" at (620, 270) #amber [width=170 height=400]
artifact:PROV7 "provenance.json" at (880, 110) #emerald [width=170 height=80]

REL7.right90 -> CDN7.left90 #cyan [line synchronous label="upload(0.7.0)"]
CDN7.left180 -> REL7.right180 #amber [line return dashed label="checksum"]
REL7.right270 -> CDN7.left270 #cyan [line asynchronous label="attest build"]
PROV7.bottom -> CDN7.top #emerald [ortho dependency label="provenance"]
compiled by @schemd/core → shown in the rail

A lifeline exposes leftNN and rightNN, placing a port exactly NN units below its top edge — which is what lets three messages sit at three exact heights without a layout engine deciding for us.