Cogitan
Documentation menu

API reference

RSFQ logic

RSFQ cell margins, the analytic SPICE engine, composed circuits, timing, chip-level yield and bias. Paths are shown as the hosted API serves them, under https://api.cogitan.ai/v1/fluxus; a local engine serves the same route under /api. GET routes are free on the hosted API; every POST consumes one call of quota.
POST

/v1/fluxus/chip/analyze

engine path /api/chip/analyze · metered

Combined chip analysis: ONE call -> verify + timing + yield + bias.

What it does, in full

Combined chip analysis: ONE call -> verify + timing + yield + bias.

The PRIMARY endpoint for the unified chip-analysis UI. Bundles all four sub-analyses over the same composed circuit, each keeping its own source / confidence / caveats. Yield is timing-gated only when the nominal timing analysis closed. If a sub-analysis errors, its slot carries {"error": {...}} and the others still return -- the call never 500s on a sub-failure (only a malformed top-level request is a 400). Sync def so the (CPU-bound) engines run in the threadpool.

Request

Body: ChipAnalyzeRequest

Combined chip analysis: one call bundling verify + timing + yield + bias.

The PRIMARY endpoint for the unified chip-analysis UI.

cellstype list[CircuitCell]unit
wirestype list[object]unit
clock_period_pstype number | nullunit ps
sigma_ictype number | nullunit
sigma_ltype number | nullunit
n_trialstype integer | nullunit
seedtype integer | nullunit
processtype string | nullunit

Object: CircuitCell

One placed cell instance in a circuit-verify request.

name selects the cell type (jtl / splitter / custom); params overrides its spec knobs. A custom cell additionally supplies cir (raw netlist) and ports (logical port name -> net name in that netlist).

idrequiredtype stringunit
kindtype string | nullunit
namerequiredtype stringunit
paramstype map[string, number] | nullunit
cirtype string | nullunit
portstype map[string, string] | nullunit

Example

curl
curl -s "$FLUXUS_API/chip/analyze" -H "Authorization: Bearer $COGITAN_API_KEY" \
  -H 'content-type: application/json' \
  -d '{"cells": [{"id": "J1", "kind": "sfq", "name": "jtl", "params": {}}, {"id": "S1", "kind": "sfq", "name": "splitter", "params": {}}, {"id": "J2", "kind": "sfq", "name": "jtl", "params": {}}], "wires": [{"from": ["J1", "out"], "to": ["S1", "in"]}, {"from": ["S1", "outa"], "to": ["J2", "in"]}], "n_trials": 200, "seed": 1}'

No CLI command answers this route.

Example body: the RSFQ test suite's library chain

What it refuses

No refusal list is served for this route. Invalid input is a 400 or 422 with the error envelope; any refusal it makes is described above.

Responses: 200 Successful Response; 422 Validation Error.

Validated for

This route has no card in the capability manifest; read its description above for what it rests on.

POST

/v1/fluxus/chip/bias

engine path /api/chip/bias · metered

First-order RSFQ bias-network sizing for a composed circuit.

What it does, in full

First-order RSFQ bias-network sizing for a composed circuit.

Reads every standing DC bias source in the merged deck and reports total + per-cell bias current, resistor-bias sizing (Rb = Vsupply/Ibias), and an honest static-power figure with the ERSFQ/eSFQ zero-static-power note. Returns the engine contract incl. source / caveat (HONEST: first- order, NOT a routed/extracted bias network). Bad input -> 400 envelope.

Request

Body: ChipBiasRequest

First-order RSFQ bias-network sizing for a composed circuit.

cellstype list[CircuitCell]unit
wirestype list[object]unit
supply_mvtype number | nullunit
target_margintype number | nullunit
ersfq_modetype boolean | nullunit
clock_ghztype number | nullunit GHz
ripple_fractype number | nullunit

Object: CircuitCell

One placed cell instance in a circuit-verify request.

name selects the cell type (jtl / splitter / custom); params overrides its spec knobs. A custom cell additionally supplies cir (raw netlist) and ports (logical port name -> net name in that netlist).

idrequiredtype stringunit
kindtype string | nullunit
namerequiredtype stringunit
paramstype map[string, number] | nullunit
cirtype string | nullunit
portstype map[string, string] | nullunit

Example

curl
curl -s "$FLUXUS_API/chip/bias" -H "Authorization: Bearer $COGITAN_API_KEY" \
  -H 'content-type: application/json' \
  -d '{"cells": [{"id": "J1", "kind": "sfq", "name": "jtl", "params": {}}, {"id": "S1", "kind": "sfq", "name": "splitter", "params": {}}, {"id": "J2", "kind": "sfq", "name": "jtl", "params": {}}], "wires": [{"from": ["J1", "out"], "to": ["S1", "in"]}, {"from": ["S1", "outa"], "to": ["J2", "in"]}]}'

No CLI command answers this route.

Example body: the RSFQ test suite's library chain

What it refuses

No refusal list is served for this route. Invalid input is a 400 or 422 with the error envelope; any refusal it makes is described above.

Responses: 200 Successful Response; 422 Validation Error.

Validated for

This route has no card in the capability manifest; read its description above for what it rests on.

POST

/v1/fluxus/chip/extract

engine path /api/chip/extract · metered

Emit an extraction-ready handoff manifest for a real extractor.

What it does, in full

Emit an extraction-ready handoff manifest for a real extractor.

The HONEST path to real inductances: a human/tool-readable manifest of the composed circuit's instances + wires for InductEx/FastHenry on the laid-out GDS, rather than a faked field solve. Returns {manifest}; bad input -> 400 envelope.

Request

Body: ChipExtractRequest

Extraction-ready handoff manifest for a real inductance extractor.

cellstype list[CircuitCell]unit
wirestype list[object]unit

Object: CircuitCell

One placed cell instance in a circuit-verify request.

name selects the cell type (jtl / splitter / custom); params overrides its spec knobs. A custom cell additionally supplies cir (raw netlist) and ports (logical port name -> net name in that netlist).

idrequiredtype stringunit
kindtype string | nullunit
namerequiredtype stringunit
paramstype map[string, number] | nullunit
cirtype string | nullunit
portstype map[string, string] | nullunit

Example

curl
curl -s "$FLUXUS_API/chip/extract" -H "Authorization: Bearer $COGITAN_API_KEY" \
  -H 'content-type: application/json' \
  -d '{"cells": [{"id": "u0", "name": "jtl"}], "wires": []}'

No CLI command answers this route.

Example body: one jtl cell

What it refuses

No refusal list is served for this route. Invalid input is a 400 or 422 with the error envelope; any refusal it makes is described above.

Responses: 200 Successful Response; 422 Validation Error.

Validated for

This route has no card in the capability manifest; read its description above for what it rests on.

POST

/v1/fluxus/chip/margin

engine path /api/chip/margin · metered

Assembled GLOBAL bias-rail (and Ic) margin for a composed passive circuit.

What it does, in full

Assembled GLOBAL bias-rail (and Ic) margin for a composed passive circuit.

A real chip shares ONE bias rail across every cell, so the band that matters at tapeout is where the WHOLE composed chain still works -- always tighter than any single cell, and pinned by whichever stage gives out first. Walks one global scale on every standing bias source (and, by default, every JJ Ic), re-judging the end-to-end functional verdict, and returns the assembled band + the limiting stage + honest caveats. Passive dataflow only; a clocked circuit returns supported: False (HTTP 200). Sync def so the (CPU-bound) margin walk runs in the threadpool. Bad input -> 400 envelope.

Request

Body: ChipMarginRequest

Assembled global bias-rail (and Ic) margin for a composed passive circuit.

Walks ONE shared scale on every bias source out from nominal until the WHOLE chain stops working, reporting the assembled band and the limiting stage.

cellstype list[CircuitCell]unit
wirestype list[object]unit
steptype number | nullunit
do_ictype boolean | nullunit
processtype string | nullunit

Object: CircuitCell

One placed cell instance in a circuit-verify request.

name selects the cell type (jtl / splitter / custom); params overrides its spec knobs. A custom cell additionally supplies cir (raw netlist) and ports (logical port name -> net name in that netlist).

idrequiredtype stringunit
kindtype string | nullunit
namerequiredtype stringunit
paramstype map[string, number] | nullunit
cirtype string | nullunit
portstype map[string, string] | nullunit

Example

curl
curl -s "$FLUXUS_API/chip/margin" -H "Authorization: Bearer $COGITAN_API_KEY" \
  -H 'content-type: application/json' \
  -d '{"cells": [{"id": "J1", "kind": "sfq", "name": "jtl", "params": {}}, {"id": "S1", "kind": "sfq", "name": "splitter", "params": {}}, {"id": "J2", "kind": "sfq", "name": "jtl", "params": {}}], "wires": [{"from": ["J1", "out"], "to": ["S1", "in"]}, {"from": ["S1", "outa"], "to": ["J2", "in"]}]}'

No CLI command answers this route.

Example body: the RSFQ test suite's library chain

What it refuses

No refusal list is served for this route. Invalid input is a 400 or 422 with the error envelope; any refusal it makes is described above.

Responses: 200 Successful Response; 422 Validation Error.

Validated for

This route has no card in the capability manifest; read its description above for what it rests on.

POST

/v1/fluxus/chip/parasitics

engine path /api/chip/parasitics · metered

First-order inductance ESTIMATE for one wire / route segment.

What it does, in full

First-order inductance ESTIMATE for one wire / route segment.

L = Ls_per_sq * (length/width) squares rule on a process sheet inductance. geometry is a length in um (number) or a {length_um, width_um?, n_squares?} dict; process is a process-registry name (the same record /api/process serves; an unknown name is a 400 unknown_process, never a silent default) or an override dict. Returns L_pH + sheet_L_status + the method / caveat that say this is an order-of-magnitude estimate, NEVER extraction. Bad input -> 400 envelope.

Request

Body: ChipParasiticsRequest

First-order inductance ESTIMATE for one wire / route segment.

geometry is a length in microns (number) or a {length_um, width_um?, n_squares?} dict; process is a preset name or an override dict.

geometrytype number | map[string, number | null] | nullunit
processtype string | object | nullunit

Example

curl
curl -s "$FLUXUS_API/chip/parasitics" -H "Authorization: Bearer $COGITAN_API_KEY" \
  -H 'content-type: application/json' \
  -d '{"geometry": {"length_um": 100, "width_um": 1}}'

No CLI command answers this route.

Example body: a 100 um by 1 um wire

What it refuses

No refusal list is served for this route. Invalid input is a 400 or 422 with the error envelope; any refusal it makes is described above.

Responses: 200 Successful Response; 422 Validation Error.

Validated for

This route has no card in the capability manifest; read its description above for what it rests on.

POST

/v1/fluxus/chip/process-compare

engine path /api/chip/process-compare · metered

Assembled bias margin of the SAME chip retargeted across fab processes.

What it does, in full

Assembled bias margin of the SAME chip retargeted across fab processes.

Retargets the composed netlist to each named process (JJ model swap + junction-area renorm to hold the design Ic) and recomputes the assembled bias band (coarse, bias-only). The margin shift across nodes reflects each process's IcRn / gap / specific-capacitance differences plus an un-reoptimized design. Passive dataflow only. Sync def (CPU-bound margin walks run in the threadpool). Bad input -> 400 envelope.

Request

Body: ChipProcessCompareRequest

Assembled bias margin of the same chip across several fab processes.

cellstype list[CircuitCell]unit
wirestype list[object]unit
processestype list[string] | nullunit
steptype number | nullunit

Object: CircuitCell

One placed cell instance in a circuit-verify request.

name selects the cell type (jtl / splitter / custom); params overrides its spec knobs. A custom cell additionally supplies cir (raw netlist) and ports (logical port name -> net name in that netlist).

idrequiredtype stringunit
kindtype string | nullunit
namerequiredtype stringunit
paramstype map[string, number] | nullunit
cirtype string | nullunit
portstype map[string, string] | nullunit

Example

curl
curl -s "$FLUXUS_API/chip/process-compare" -H "Authorization: Bearer $COGITAN_API_KEY" \
  -H 'content-type: application/json' \
  -d '{"cells": [{"id": "J1", "kind": "sfq", "name": "jtl", "params": {}}, {"id": "S1", "kind": "sfq", "name": "splitter", "params": {}}, {"id": "J2", "kind": "sfq", "name": "jtl", "params": {}}], "wires": [{"from": ["J1", "out"], "to": ["S1", "in"]}, {"from": ["S1", "outa"], "to": ["J2", "in"]}]}'

No CLI command answers this route.

Example body: the RSFQ test suite's library chain

What it refuses

No refusal list is served for this route. Invalid input is a 400 or 422 with the error envelope; any refusal it makes is described above.

Responses: 200 Successful Response; 422 Validation Error.

Validated for

This route has no card in the capability manifest; read its description above for what it rests on.

GET

/v1/fluxus/chip/processes

engine path /api/chip/processes · free

List the literature-anchored RSFQ process records (for the UI selector).

What it does, in full

List the literature-anchored RSFQ process records (for the UI selector).

Each record carries its source / confidence / caveat (the honesty contract) verbatim -- these are order-of-magnitude ANCHORS, not fab-calibrated PDK data.

Request

No parameters.

Example

curl
curl -s "$FLUXUS_API/chip/processes" -H "Authorization: Bearer $COGITAN_API_KEY"

No CLI command answers this route.

Example body: no parameters

What it refuses

No refusal list is served for this route. Invalid input is a 400 or 422 with the error envelope; any refusal it makes is described above.

Responses: 200 Successful Response.

Validated for

This route has no card in the capability manifest; read its description above for what it rests on.

POST

/v1/fluxus/chip/validate-point

engine path /api/chip/validate-point · metered

Three-way operating-point validation: surrogate vs analytic vs JoSIM.

What it does, in full

Three-way operating-point validation: surrogate vs analytic vs JoSIM.

The trust handle: pick an operating point (global bias_factor / ic_factor on the shared rail + JJ Ic) and get, side by side, the FAST surrogate verdict, the EXACT analytic verdict, and REAL JoSIM on the SAME flattened deck (degrading cleanly to available: False when no JoSIM binary is installed), with agreement flags. Scaled points are passive-only; clocked circuits validate at nominal. A missing JoSIM binary is a clean 200 (agreement exact_vs_josim: None); only a malformed request is a 400, including a custom-cell cir with a file-touching JoSIM directive (refused before JoSIM runs, see josim_confirm.check_deck). Sync def so the (subprocess + CPU) work runs in the threadpool.

Request

Body: ChipValidatePointRequest

Three-way validation at ONE operating point: surrogate vs analytic vs JoSIM.

Scales the composed deck to (bias_factor, ic_factor) and reports the fast surrogate verdict, the exact analytic verdict, and (when a JoSIM binary is present) real JoSIM on the SAME flattened deck, with agreement flags.

cellstype list[CircuitCell]unit
wirestype list[object]unit
bias_factortype number | nullunit
ic_factortype number | nullunit
run_josimtype boolean | nullunit
timeout_stype number | nullunit s> 0, <= 60
processtype string | nullunit

Object: CircuitCell

One placed cell instance in a circuit-verify request.

name selects the cell type (jtl / splitter / custom); params overrides its spec knobs. A custom cell additionally supplies cir (raw netlist) and ports (logical port name -> net name in that netlist).

idrequiredtype stringunit
kindtype string | nullunit
namerequiredtype stringunit
paramstype map[string, number] | nullunit
cirtype string | nullunit
portstype map[string, string] | nullunit

Example

curl
curl -s "$FLUXUS_API/chip/validate-point" -H "Authorization: Bearer $COGITAN_API_KEY" \
  -H 'content-type: application/json' \
  -d '{"cells": [{"id": "J1", "kind": "sfq", "name": "jtl", "params": {}}, {"id": "S1", "kind": "sfq", "name": "splitter", "params": {}}, {"id": "J2", "kind": "sfq", "name": "jtl", "params": {}}], "wires": [{"from": ["J1", "out"], "to": ["S1", "in"]}, {"from": ["S1", "outa"], "to": ["J2", "in"]}]}'

No CLI command answers this route.

Example body: the RSFQ test suite's library chain

What it refuses

No refusal list is served for this route. Invalid input is a 400 or 422 with the error envelope; any refusal it makes is described above.

Responses: 200 Successful Response; 422 Validation Error.

Validated for

This route has no card in the capability manifest; read its description above for what it rests on.

POST

/v1/fluxus/chip/yield

engine path /api/chip/yield · metered

Chip-level RSFQ yield by analytic Monte Carlo over a composed circuit.

What it does, in full

Chip-level RSFQ yield by analytic Monte Carlo over a composed circuit.

Under per-junction Ic (area) + per-inductor L Gaussian process variation, what fraction of dies keep EVERY cell functional end to end? This is the CORRECT RSFQ-logic yield model and REPLACES the misapplied transmon frequency-collision model for RSFQ layouts. Returns yield_fraction, per-cell pass rates, limiting cell(s), and intact source / caveats (HONEST: analytic-engine yield over a process-variation MODEL, not fab- measured). Sync def so the (CPU-bound) Monte Carlo runs in the threadpool. Bad input -> 400 envelope.

Request

Body: ChipYieldRequest

Chip-level RSFQ yield by analytic Monte Carlo over a composed circuit.

This is the CORRECT RSFQ-logic yield model (it replaces the misapplied transmon frequency-collision model for RSFQ layouts).

cellstype list[CircuitCell]unit
wirestype list[object]unit
sigma_ictype number | nullunit
sigma_ltype number | nullunit
n_trialstype integer | nullunit
seedtype integer | nullunit
methodtype string | nullunit

Object: CircuitCell

One placed cell instance in a circuit-verify request.

name selects the cell type (jtl / splitter / custom); params overrides its spec knobs. A custom cell additionally supplies cir (raw netlist) and ports (logical port name -> net name in that netlist).

idrequiredtype stringunit
kindtype string | nullunit
namerequiredtype stringunit
paramstype map[string, number] | nullunit
cirtype string | nullunit
portstype map[string, string] | nullunit

Example

curl
curl -s "$FLUXUS_API/chip/yield" -H "Authorization: Bearer $COGITAN_API_KEY" \
  -H 'content-type: application/json' \
  -d '{"cells": [{"id": "J1", "kind": "sfq", "name": "jtl", "params": {}}, {"id": "S1", "kind": "sfq", "name": "splitter", "params": {}}, {"id": "J2", "kind": "sfq", "name": "jtl", "params": {}}], "wires": [{"from": ["J1", "out"], "to": ["S1", "in"]}, {"from": ["S1", "outa"], "to": ["J2", "in"]}], "n_trials": 200, "seed": 1}'

No CLI command answers this route.

Example body: the RSFQ test suite's library chain

What it refuses

No refusal list is served for this route. Invalid input is a 400 or 422 with the error envelope; any refusal it makes is described above.

Responses: 200 Successful Response; 422 Validation Error.

Validated for

This route has no card in the capability manifest; read its description above for what it rests on.

POST

/v1/fluxus/circuit/deck

engine path /api/circuit/deck · metered

Export the composed circuit as a JoSIM-runnable .cir deck.

What it does, in full

Export the composed circuit as a JoSIM-runnable .cir deck.

The honest handoff: every instance's bare cell is built, nets/designators prefixed per instance, wired ports unified, and the whole thing emitted as one deck behind a single shared jmitll model. driven (default True) adds the same stimulus + .tran / .print the analytic verify uses, so JoSIM runs the identical experiment. Returns {deck, driven, format}; bad input -> 400 envelope. format="wrspice" translates the same deck to WRspice (see /api/sfq/cir).

Request

Body: CircuitDeckRequest

JoSIM-ready .cir export of a composed circuit (the honest handoff).

cellstype list[CircuitCell]unit
wirestype list[object]unit
driventype booleanunit default true
formattype "josim" | "wrspice"unit default "josim"

Object: CircuitCell

One placed cell instance in a circuit-verify request.

name selects the cell type (jtl / splitter / custom); params overrides its spec knobs. A custom cell additionally supplies cir (raw netlist) and ports (logical port name -> net name in that netlist).

idrequiredtype stringunit
kindtype string | nullunit
namerequiredtype stringunit
paramstype map[string, number] | nullunit
cirtype string | nullunit
portstype map[string, string] | nullunit

Example

curl
curl -s "$FLUXUS_API/circuit/deck" -H "Authorization: Bearer $COGITAN_API_KEY" \
  -H 'content-type: application/json' \
  -d '{"cells": [{"id": "J1", "kind": "sfq", "name": "jtl", "params": {}}, {"id": "S1", "kind": "sfq", "name": "splitter", "params": {}}, {"id": "J2", "kind": "sfq", "name": "jtl", "params": {}}], "wires": [{"from": ["J1", "out"], "to": ["S1", "in"]}, {"from": ["S1", "outa"], "to": ["J2", "in"]}]}'

No CLI command answers this route.

Example body: the RSFQ test suite's library chain

What it refuses

No refusal list is served for this route. Invalid input is a 400 or 422 with the error envelope; any refusal it makes is described above.

Responses: 200 Successful Response; 422 Validation Error.

Validated for

This route has no card in the capability manifest; read its description above for what it rests on.

POST

/v1/fluxus/circuit/josim

engine path /api/circuit/josim · metered

Confirm a composed circuit (or raw deck) against REAL JoSIM.

What it does, in full

Confirm a composed circuit (or raw deck) against REAL JoSIM.

Accepts either cells (+ optional wires) -- the driven deck is built via composed_deck_cir -- or a raw deck string (wins if supplied). Shells out to a JoSIM binary under a hard timeout when one is on PATH / FLUXUS_JOSIM; otherwise degrades cleanly to available: False / source: "analytic". NEVER hangs and NEVER 500s when JoSIM is absent. A deck using a file-touching directive (.include, .file, .iv, .control, a cus(...) source, or any directive off the allowlist in josim_confirm.check_deck) is refused with a 400 naming it, before JoSIM runs. binary is the bare executable name, never its path. Returns the josim_confirm contract plus josim_available; the confirmed deck text comes back only when JoSIM ran (otherwise deck_withheld names /api/circuit/deck). timeout_s above JOSIM_TIMEOUT_MAX_S (the request budget) is a 422. Sync def so the (subprocess-bound) call runs in the threadpool.

Request

Body: CircuitJosimRequest

Confirm a composed circuit OR a raw deck against real JoSIM.

Supply either cells (+ optional wires) -- the driven deck is built and confirmed -- or a raw deck string (wins if both are present). Degrades cleanly to available: False when no JoSIM binary is installed; never hangs (hard subprocess timeout) and never 500s.

cellstype list[CircuitCell]unit
wirestype list[object]unit
decktype string | nullunit
timeout_stype number | nullunit s> 0, <= 60

Object: CircuitCell

One placed cell instance in a circuit-verify request.

name selects the cell type (jtl / splitter / custom); params overrides its spec knobs. A custom cell additionally supplies cir (raw netlist) and ports (logical port name -> net name in that netlist).

idrequiredtype stringunit
kindtype string | nullunit
namerequiredtype stringunit
paramstype map[string, number] | nullunit
cirtype string | nullunit
portstype map[string, string] | nullunit

Example

curl
curl -s "$FLUXUS_API/circuit/josim" -H "Authorization: Bearer $COGITAN_API_KEY" \
  -H 'content-type: application/json' \
  -d '{"cells": [{"id": "J1", "kind": "sfq", "name": "jtl", "params": {}}, {"id": "S1", "kind": "sfq", "name": "splitter", "params": {}}, {"id": "J2", "kind": "sfq", "name": "jtl", "params": {}}], "wires": [{"from": ["J1", "out"], "to": ["S1", "in"]}, {"from": ["S1", "outa"], "to": ["J2", "in"]}]}'

No CLI command answers this route.

Example body: the RSFQ test suite's library chain

What it refuses

No refusal list is served for this route. Invalid input is a 400 or 422 with the error envelope; any refusal it makes is described above.

Responses: 200 Successful Response; 422 Validation Error.

Validated for

This route has no card in the capability manifest; read its description above for what it rests on.

POST

/v1/fluxus/circuit/timing

engine path /api/circuit/timing · metered

Analytic (nominal-inductance) timing analysis of a composed circuit.

What it does, in full

Analytic (nominal-inductance) timing analysis of a composed circuit.

Composes the cells+wires, drives + simulates once on the analytic engine, and reports per-path propagation delay, clock arrival + worst-case skew, per-stage setup/hold margins, fmax (passive circuits only; refused with a caveat when clocked cells are present), and a closure verdict against the optional clock_period_ps. A stage that should fire and did not is a violation, so a dead circuit never closes. Returns the engine's stable contract incl. source / confidence / caveats (HONEST: nominal, NOT post-layout). Interconnect delay is added only for wires given a length_um: each becomes a PTL hop of driver + length / v + receiver, with v from the stripline geometry, eps_r and the London depth (fluxus.sfq.ptl, Swihart 1961), reported under ptl and in each path's ptl_delay_ps. Bad input -> 400 envelope.

Request

Body: CircuitTimingRequest

Analytic (nominal-inductance) timing analysis of a composed circuit.

A wire may carry length_um (and driver_delay_ps / receiver_delay_ps) to make it a PTL hop; ptl sets the line.

cellstype list[CircuitCell]unit
wirestype list[object]unit
clock_period_pstype number | nullunit ps
ptltype PTLConfig | nullunit

Object: CircuitCell

One placed cell instance in a circuit-verify request.

name selects the cell type (jtl / splitter / custom); params overrides its spec knobs. A custom cell additionally supplies cir (raw netlist) and ports (logical port name -> net name in that netlist).

idrequiredtype stringunit
kindtype string | nullunit
namerequiredtype stringunit
paramstype map[string, number] | nullunit
cirtype string | nullunit
portstype map[string, string] | nullunit

Object: PTLConfig

PTL line for wires that carry length_um (see fluxus.sfq.ptl).

eps_r is required whenever a wire has a length: no process record in the repository carries a dielectric constant. Geometry defaults to the process record's wiring stack (mitll_sfq5ee: M6 between M4 and M7, Tolpygo et al. 2021); any field given here overrides it. Driver and receiver junction delays have no default; give them here or per wire.

eps_rtype number | nullunit >= 1, <= 100
processtype string | nullunit
lambda_nmtype number | nullunit > 0
t_signal_nmtype number | nullunit > 0
d1_nmtype number | nullunit > 0
t_ground1_nmtype number | nullunit > 0
d2_nmtype number | nullunit > 0
t_ground2_nmtype number | nullunit > 0
width_umtype number | nullunit um> 0
driver_delay_pstype number | nullunit ps>= 0, <= 1000
receiver_delay_pstype number | nullunit ps>= 0, <= 1000

Example

curl
curl -s "$FLUXUS_API/circuit/timing" -H "Authorization: Bearer $COGITAN_API_KEY" \
  -H 'content-type: application/json' \
  -d '{"cells": [{"id": "J1", "kind": "sfq", "name": "jtl", "params": {}}, {"id": "S1", "kind": "sfq", "name": "splitter", "params": {}}, {"id": "J2", "kind": "sfq", "name": "jtl", "params": {}}], "wires": [{"from": ["J1", "out"], "to": ["S1", "in"]}, {"from": ["S1", "outa"], "to": ["J2", "in"]}]}'

No CLI command answers this route.

Example body: the RSFQ test suite's library chain

What it refuses

No refusal list is served for this route. Invalid input is a 400 or 422 with the error envelope; any refusal it makes is described above.

Responses: 200 Successful Response; 422 Validation Error.

Validated for

This route has no card in the capability manifest; read its description above for what it rests on.

POST

/v1/fluxus/circuit/verify

engine path /api/circuit/verify · metered

Compose wired RSFQ cells into ONE netlist and verify it end-to-end.

What it does, in full

Compose wired RSFQ cells into ONE netlist and verify it end-to-end.

Builds each cell's bare graph, prefixes its nets by instance id, unifies wired ports into shared nodes, merges into a single deck behind one shared jmitll model, drives the detected input with a single SFQ pulse, and simulates on the analytic SPICE engine to confirm the pulse propagates stage-to-stage to the output. Returns per-stage slip counts, the end-to-end output pulse count, the input->output propagation delay, and a functional verdict. Un-clocked SFQ dataflow (jtl / splitter / custom) composes; clocked cells (dff / and2 / or2) are scoped out of v1 with a clear note. Sync def so the (CPU-bound) engine runs in the threadpool. Bad input (no cells, malformed wires, unknown cells/ports, clocked cells) yields a 400 with the structured error envelope.

Request

Body: CircuitVerifyRequest

Compose wired cells into one netlist and verify it end-to-end.

cells are the placed instances; wires connect them as {"from": [cellId, port], "to": [cellId, port]}. The service composes the full deck, drives the detected input with one SFQ pulse, and checks the pulse propagates stage-to-stage to the output on the analytic SPICE engine.

cellstype list[CircuitCell]unit
wirestype list[object]unit

Object: CircuitCell

One placed cell instance in a circuit-verify request.

name selects the cell type (jtl / splitter / custom); params overrides its spec knobs. A custom cell additionally supplies cir (raw netlist) and ports (logical port name -> net name in that netlist).

idrequiredtype stringunit
kindtype string | nullunit
namerequiredtype stringunit
paramstype map[string, number] | nullunit
cirtype string | nullunit
portstype map[string, string] | nullunit

Example

curl
curl -s "$FLUXUS_API/circuit/verify" -H "Authorization: Bearer $COGITAN_API_KEY" \
  -H 'content-type: application/json' \
  -d '{"cells": [{"id": "J1", "kind": "sfq", "name": "jtl", "params": {}}, {"id": "S1", "kind": "sfq", "name": "splitter", "params": {}}, {"id": "J2", "kind": "sfq", "name": "jtl", "params": {}}], "wires": [{"from": ["J1", "out"], "to": ["S1", "in"]}, {"from": ["S1", "outa"], "to": ["J2", "in"]}]}'

No CLI command answers this route.

Example body: the RSFQ test suite's library chain

What it refuses

No refusal list is served for this route. Invalid input is a 400 or 422 with the error envelope; any refusal it makes is described above.

Responses: 200 Successful Response; 422 Validation Error.

Validated for

This route has no card in the capability manifest; read its description above for what it rests on.

GET

/v1/fluxus/process

engine path /api/process · free

Named, literature-anchored RSFQ process / PDK parameter sets.

What it does, in full

Named, literature-anchored RSFQ process / PDK parameter sets.

Returns {processes: [record, ...]} for every node in the registry (MIT-LL SFQ5ee-style, AIST STP-style, generic teaching node). Each record carries source (citation), confidence ({low, medium} -- never high) and caveat (NOT fab-calibrated PDK data) verbatim. Treat values as order-of-magnitude anchors.

Request

No parameters.

Example

curl
curl -s "$FLUXUS_API/process" -H "Authorization: Bearer $COGITAN_API_KEY"

No CLI command answers this route.

Example body: no parameters

What it refuses

No refusal list is served for this route. Invalid input is a 400 or 422 with the error envelope; any refusal it makes is described above.

Responses: 200 Successful Response.

Validated for

This route has no card in the capability manifest; read its description above for what it rests on.

POST

/v1/fluxus/sfq/cir

engine path /api/sfq/cir · metered

Export the JoSIM .cir netlist for one RSFQ cell + experiment.

What it does, in full

Export the JoSIM .cir netlist for one RSFQ cell + experiment.

Builds the cell deck for the given experiment (default = the cell's canonical active case) with optional params overrides and emits it as JoSIM-runnable .cir text. Powers the "download .cir" button. Bad cell/param/experiment yields a 400 with the structured error envelope.

format="wrspice" returns the same circuit in WRspice syntax under the same cir key, plus probes (each JoSIM .print and the WRspice vector it became), untranslated, notes and verified (true only for a deck that was itself run in WRspice). The default format="josim" response is unchanged apart from format.

Both formats carry tests: the exported experiment as a /api/sfq/netlist/margins test (inputs empty because the deck drives its own stimulus, expected the library experiment's per-junction slip counts; postable as is), deck_pulses_ps (the stimulus times the deck already drives) and experiments (the cell's experiments, each its own deck).

Request

Body: SFQCirRequest

JoSIM (or WRspice) .cir export for one RSFQ cell + experiment.

cellrequiredtype stringunit
paramstype map[string, number] | nullunit
experimenttype string | nullunit
formattype "josim" | "wrspice"unit default "josim"

Example

curl
curl -s "$FLUXUS_API/sfq/cir" -H "Authorization: Bearer $COGITAN_API_KEY" \
  -H 'content-type: application/json' \
  -d '{"cell": "jtl"}'

No CLI command answers this route.

Example body: the jtl library cell

What it refuses

No refusal list is served for this route. Invalid input is a 400 or 422 with the error envelope; any refusal it makes is described above.

Responses: 200 Successful Response; 422 Validation Error.

Validated for

This route has no card in the capability manifest; read its description above for what it rests on.

POST

/v1/fluxus/sfq/netlist

engine path /api/sfq/netlist · metered

Score a user-supplied SFQ netlist (custom-cell live feedback).

What it does, in full

Score a user-supplied SFQ netlist (custom-cell live feedback).

Request

Body: NetlistRequest

Score a raw SFQ netlist with the Margo surrogate.

cirrequiredtype stringunit

Example

curl
curl -s "$FLUXUS_API/sfq/netlist" -H "Authorization: Bearer $COGITAN_API_KEY" \
  -H 'content-type: application/json' \
  -d '{"cir": ".model jmitll jj(rtype=1, vg=2.8mV, cap=0.07pF, r0=160, rN=16, icrit=0.1mA)\nLIN in s1 2p\nB01 s1 g1 jmitll area=2.16\nLP01 g1 0 0.086p\nLRB01 g1 q1 0.086p\nRB01 q1 s1 5.23\nIB01 0 b1 pwl(0 0 50p 150u)\nLPR01 s1 b1 0.278p\nL01 s1 s2 2.425p\nB02 s2 g2 jmitll area=2.16\nLP02 g2 0 0.086p\nLRB02 g2 q2 0.086p\nRB02 q2 s2 5.23\nIB02 0 b2 pwl(0 0 50p 150u)\nLPR02 s2 b2 0.278p\nLOUT s2 out 2.031p\nROUT out 0 2\nVIN in 0 pwl(0 0 197.5p 0 200p 827.132u 202.5p 0)\n.tran 0.25p 400p 0 0.25p\n.print PHASE B01\n.print PHASE B02\n.print DEVI ROUT\n.end\n"}'

No CLI command answers this route.

Example body: the starter netlist from fluxus.cell_library.example_netlist()

What it refuses

No refusal list is served for this route. Invalid input is a 400 or 422 with the error envelope; any refusal it makes is described above.

Responses: 200 Successful Response; 422 Validation Error.

Validated for

This route has no card in the capability manifest; read its description above for what it rests on.

POST

/v1/fluxus/sfq/netlist/margins

engine path /api/sfq/netlist/margins · metered

Margins of a user netlist under a user functional test.

What it does, in full

Margins of a user netlist under a user functional test.

Runs the analytic engine (the one behind every exact-engine library margin) on the caller's netlist. Each knob (global bias, global ic, or each_bias / each_inductor / each_ic one element at a time) is walked out from nominal in bracket_step steps until a test fails, then bisected to resolution. Returns per-knob low / high (last passing factors), the first failing factors, censoring, what limited each edge, the critical (nearest-edge) element, and run counts. confirm="josim" reruns the boundary points of the global knobs and the critical element in JoSIM where a binary is found.

These are analytic-engine margins, not surrogate output. A netlist the engine cannot simulate (transmission lines, unsupported sources, symbolic values, too large) is a 400 naming the reason. Runtime is capped by budget_s (default and maximum: the request budget); the response echoes the budget_s used (budget_from says whether it was the request's or the server default) and elapsed_s. Knobs left when the budget runs out are listed in not_swept. Every response carries estimate (points, transients and seconds the sweep can take, counted and timed from the nominal run); estimate_only=true returns only that. Sync def so the CPU-bound sweep runs in the threadpool.

Request

Body: NetlistMarginsRequest

Bias / Ic / inductance margins of a user netlist (analytic engine).

cirrequiredtype stringunit
portstype map[string, string] | nullunit
testsrequiredtype list[NetlistTest]unit at least 1 items
knobstype list["bias" | "ic" | "each_bias" | "each_inductor" | "each_ic"]unit
bias_sourcestype list[string] | nullunit
rangestype map[string, list[number]] | nullunit
bracket_steptype numberunit default 0.05>= 0.005, <= 0.25
resolutiontype numberunit default 0.005>= 0.0005, <= 0.05
drc_gatetype booleanunit default true
tran_step_pstype number | nullunit ps>= 0.01, <= 1
confirmtype "josim" | nullunit
budget_stype number | nullunit s> 0, <= 60
estimate_onlytype booleanunit default false

Object: NetlistTest

One functional test of a user netlist.

inputs maps a port (a key of the request's ports) to the centre times in ps of the SFQ pulses driven into it; a driven port missing from a test is held quiet. expected maps a junction name (B01) or a port name to the SFQ pulse count that junction must show; a port resolves to the junction nearest its net through inductors.

nametype string | nullunit
inputstype map[string, list[number]]unit
expectedrequiredtype map[string, integer]unit
t_stop_pstype number | nullunit ps

Object: NetlistDrive

How a port is driven: an ideal Phi0 voltage pulse (the library testbench convention) or a current trigger of peak_ua into the port net, for a netlist that carries its own feeder junction there.

kindtype "voltage" | "current"unit default "voltage"
peak_uatype number | nullunit uA> 0, <= 5000
half_width_pstype number | nullunit ps> 0, <= 50

Example

curl
curl -s "$FLUXUS_API/sfq/netlist/margins" -H "Authorization: Bearer $COGITAN_API_KEY" \
  -H 'content-type: application/json' \
  -d '{"cir": ".model jmitll jj(rtype=1, vg=2.8mV, cap=0.07pF, r0=160, rN=16, icrit=0.1mA)\nLIN in s1 2p\nB01 s1 g1 jmitll area=2.16\nLP01 g1 0 0.086p\nLRB01 g1 q1 0.086p\nRB01 q1 s1 5.23\nIB01 0 b1 pwl(0 0 50p 150u)\nLPR01 s1 b1 0.278p\nL01 s1 s2 2.425p\nB02 s2 g2 jmitll area=2.16\nLP02 g2 0 0.086p\nLRB02 g2 q2 0.086p\nRB02 q2 s2 5.23\nIB02 0 b2 pwl(0 0 50p 150u)\nLPR02 s2 b2 0.278p\nLOUT s2 out 2.031p\nROUT out 0 2\n", "ports": {"in": "in"}, "tests": [{"name": "one", "inputs": {"in": [200]}, "expected": {"B01": 1, "B02": 1}}], "knobs": ["bias"], "ranges": {"bias": [0.9, 1.1]}, "resolution": 0.01}'

No CLI command answers this route.

Example body: the library JTL as a bare netlist, one pulse in, one out

What it refuses

  • a netlist the engine cannot simulate (transmission lines, unsupported sources, symbolic values) -> HTTP 400 unsupported
  • over a cap in envelope, an unknown port, junction or bias source, or a bad test definition -> HTTP 400 bad_request naming it
  • the nominal run alone exceeds the budget -> HTTP 400 budget
  • budget_s above envelope.budget_s.max, or a field out of range -> HTTP 422
  • the netlist fails its own test at nominal -> HTTP 200 with refused_reason and no margins
  • the run cap or the time budget is spent -> HTTP 200 with stopped and every knob not finished in not_swept; a knob cut off mid-walk is dropped, not served as an edge

Responses: 200 Successful Response; 422 Validation Error.

Validated for

fidelity analytic_transient_engine

the library margin walk (spice_cells.bias_margin) on the library JTL: the bisected high bias edge lands inside the walk's last 0.05 bracket (tests/test_sfq_netlist_margins.py). That is agreement with the same engine, not with JoSIM.

The full sfq_netlist_margins card
POST

/v1/fluxus/sfq/optimize

engine path /api/sfq/optimize · metered

Maximize the analytic bias-margin width over a cell's knobs.

What it does, in full

Maximize the analytic bias-margin width over a cell's knobs.

Coordinate-ascent inverse design, functional-gated, bounded to <= 60 analytic margin evaluations. Sync def so the (CPU-bound) search runs in the threadpool. Bad cell name yields a 400 envelope.

Request

Body: SFQOptimizeRequest

Coordinate-ascent margin maximization for one RSFQ cell.

cellrequiredtype stringunit

Example

curl
curl -s "$FLUXUS_API/sfq/optimize" -H "Authorization: Bearer $COGITAN_API_KEY" \
  -H 'content-type: application/json' \
  -d '{"cell": "jtl"}'

No CLI command answers this route.

Example body: the jtl library cell

What it refuses

No refusal list is served for this route. Invalid input is a 400 or 422 with the error envelope; any refusal it makes is described above.

Responses: 200 Successful Response; 422 Validation Error.

Validated for

This route has no card in the capability manifest; read its description above for what it rests on.

POST

/v1/fluxus/sfq/physics

engine path /api/sfq/physics · metered

Physics-unit knobs (bias% / βL / βc) for one cell -- read and set.

What it does, in full

Physics-unit knobs (bias% / βL / βc) for one cell -- read and set.

READ: returns each defined physics knob's current value and the raw spec field it maps to. SET: when targets is supplied (e.g. {"betac": 1.0}), also returns applied_params -- the raw spec overrides that realize those targets with the junction Ic held fixed, ready to post back as params. Fast (pure arithmetic). Bad cell / param / target -> 400 envelope.

Request

Body: SFQPhysicsRequest

Physics-unit knobs (bias% / βL / βc) for one cell; optionally set targets.

cellrequiredtype stringunit
paramstype map[string, number] | nullunit
targetstype map[string, number] | nullunit

Example

curl
curl -s "$FLUXUS_API/sfq/physics" -H "Authorization: Bearer $COGITAN_API_KEY" \
  -H 'content-type: application/json' \
  -d '{"cell": "jtl"}'

No CLI command answers this route.

Example body: the jtl library cell

What it refuses

No refusal list is served for this route. Invalid input is a 400 or 422 with the error envelope; any refusal it makes is described above.

Responses: 200 Successful Response; 422 Validation Error.

Validated for

This route has no card in the capability manifest; read its description above for what it rests on.

POST

/v1/fluxus/sfq/predict

engine path /api/sfq/predict · metered

Fast surrogate margin prediction for an RSFQ cell or raw netlist.

What it does, in full

Fast surrogate margin prediction for an RSFQ cell or raw netlist.

Accepts a named cell (+ optional params) or a raw cir netlist. Returns the surrogate's functional verdict and bias/Ic band factors (or abstains). Sync def so model inference runs in the threadpool. Bad input yields a 400 with the structured error envelope.

Request

Body: SFQPredictRequest

Surrogate margin prediction: a named cell (+params) OR a raw cir netlist.

celltype string | nullunit
paramstype map[string, number] | nullunit
cirtype string | nullunit

Example

curl
curl -s "$FLUXUS_API/sfq/predict" -H "Authorization: Bearer $COGITAN_API_KEY" \
  -H 'content-type: application/json' \
  -d '{"cell": "dff"}'

Example body: the dff library cell at its defaults

What it refuses

  • outside the trained envelope -> abstained=true with null band factors, rather than a guess
  • unknown cell name or knob -> HTTP 400 with the structured error

Responses: 200 Successful Response; 422 Validation Error.

Validated for

fidelity surrogate_of_josim

JoSIM margin characterization under the FED drive (current-triggered feeder, reference feeder F0), which is what a real SFQ cell sees. The previous corpus used an ideal-voltage source that forces a 2*pi phase advance regardless of bias and censored the lower edge of every margin; it was regenerated on 2026-08-20, 4800 designs per cell, zero censored.

The full sfq_predict card
POST

/v1/fluxus/sfq/predict/batch

engine path /api/sfq/predict/batch · metered

Predict many designs of one cell in a single call.

What it does, in full

Predict many designs of one cell in a single call.

Each entry in specs is the same param object /api/sfq/predict takes, and each result is byte-identical to what that endpoint would return for the same design -- same envelope gate, same conformal escalation, same per-quantity refusal. The gate is the same function the single path calls, including the graph check on the built deck (the batch skipped that until 2026-10-11, audit RC-023). results is positionally aligned with specs; a spec that fails validation becomes an error object in its own slot rather than failing the batch. A value that is not a finite number is refused for the whole request by the schema, with a 422 naming specs[i].knob, like any other wrongly typed value.

This exists because per-call overhead dominates: 11.2 ms/spec one at a time versus 0.25-0.30 ms/spec batched (measured 2026-10-11 over 1000 specs, deck build and graph check included), so a 1000-cell sweep goes from about 11 s to about 0.3 s. Requests over 5000 specs are TRUNCATED and say so in a clamped block rather than being rejected.

Request

Body: SFQPredictBatchRequest

Many designs of ONE cell in a single call.

cellrequiredtype stringunit
specsrequiredtype list[map[string, number]]unit

Example

curl
curl -s "$FLUXUS_API/sfq/predict/batch" -H "Authorization: Bearer $COGITAN_API_KEY" \
  -H 'content-type: application/json' \
  -d '{"cell": "jtl", "specs": [{}, {"bias_ua": 140}]}'

No CLI command answers this route.

Example body: the jtl library cell, two biases

What it refuses

No refusal list is served for this route. Invalid input is a 400 or 422 with the error envelope; any refusal it makes is described above.

Responses: 200 Successful Response; 422 Validation Error.

Validated for

This route has no card in the capability manifest; read its description above for what it rests on.

GET

/v1/fluxus/sfq/schema

engine path /api/sfq/schema · free

Real per-cell knob schema (the UI's single source of truth).

What it does, in full

Real per-cell knob schema (the UI's single source of truth).

Knob keys are the exact dataclass field names (so the UI posts them straight back as params); ranges come from the cell_problems / comparator knob dicts and defaults from the validated base specs. DFF exposes a curated subset of its search knobs.

Request

No parameters.

Example

curl
curl -s "$FLUXUS_API/sfq/schema" -H "Authorization: Bearer $COGITAN_API_KEY"

No CLI command answers this route.

Example body: no parameters

What it refuses

No refusal list is served for this route. Invalid input is a 400 or 422 with the error envelope; any refusal it makes is described above.

Responses: 200 Successful Response.

Validated for

This route has no card in the capability manifest; read its description above for what it rests on.

POST

/v1/fluxus/spice/cell

engine path /api/spice/cell · metered

Analytic SPICE engine margins for one RSFQ cell (jtl/splitter/dff).

What it does, in full

Analytic SPICE engine margins for one RSFQ cell (jtl/splitter/dff).

Runs the JoSIM-validated, WSL-free analytic engine: functional verdict, per-JJ slip counts, and coarse-step bias/Ic margin bands. Sync def so the (CPU-bound) engine runs in the threadpool. A bad cell name or unknown param yields a 400 with the structured error envelope.

Request

Body: SpiceCellRequest

Run the analytic SPICE engine on a named RSFQ cell.

cellrequiredtype stringunit
paramstype map[string, number] | nullunit

Example

curl
curl -s "$FLUXUS_API/spice/cell" -H "Authorization: Bearer $COGITAN_API_KEY" \
  -H 'content-type: application/json' \
  -d '{"cell": "jtl"}'

Example body: the `fluxus spice` example in the CLI help

What it refuses

No refusal list is served for this route. Invalid input is a 400 or 422 with the error envelope; any refusal it makes is described above.

Responses: 200 Successful Response; 422 Validation Error.

Validated for

This route has no card in the capability manifest; read its description above for what it rests on.

POST

/v1/fluxus/spice/characterize

engine path /api/spice/characterize · metered

One-call single-cell datasheet: margins + timing + yield + surrogate.

What it does, in full

One-call single-cell datasheet: margins + timing + yield + surrogate.

Runs the standard characterization battery for one RSFQ cell and bundles it: exact-engine functional verdict + bias/Ic margins, propagation delay + max toggle rate (fmax), process-variation yield, and a fast surrogate cross-check (surrogate_agrees). Each section keeps its own source / note; a section the exact engine cannot serve fast (e.g. the DRO latch) passes an unsupported payload instead of failing the datasheet. Sync def so the (CPU-bound, ~1-2 min) battery runs in the threadpool. Only a malformed request (bad cell / param) is a 400.

Request

Body: SpiceCharacterizeRequest

One-call single-cell datasheet: margins + timing + yield + surrogate check.

cellrequiredtype stringunit
paramstype map[string, number] | nullunit
ic_sigma_pcttype number | nullunit %
l_sigma_pcttype number | nullunit %
n_trialstype integer | nullunit

Example

curl
curl -s "$FLUXUS_API/spice/characterize" -H "Authorization: Bearer $COGITAN_API_KEY" \
  -H 'content-type: application/json' \
  -d '{"cell": "jtl"}'

No CLI command answers this route.

Example body: the jtl library cell

What it refuses

  • unknown cell name or knob -> HTTP 400 with the structured error

Responses: 200 Successful Response; 422 Validation Error.

Validated for

fidelity analytic_transient_engine

JoSIM. The quality gate (fluxus.neural.validate_spice_cells) requires per-JJ slip counts to match JoSIM exactly, and bias/Ic margin bands to agree within one sweep step, on JTL, splitter and comparator-DFF.

The full spice_characterize card
POST

/v1/fluxus/spice/shmoo

engine path /api/spice/shmoo · metered

2D bias x Ic operating-region (shmoo) map for one RSFQ cell.

What it does, in full

2D bias x Ic operating-region (shmoo) map for one RSFQ cell.

Sweeps an n x n grid (n clamped 5..13, default 9) of bias x Ic scale factors through the analytic engine, marking each point functional iff the full truth table passes. Sync def so the (CPU-bound) sweep runs in the threadpool. COST: n*n analytic transients (~1 s each); default n=9 is ~81 sims (~1-2 min). Bad input yields a 400 envelope.

Request

Body: SpiceShmooRequest

2D bias x Ic operating-region (shmoo) sweep for one RSFQ cell.

cellrequiredtype stringunit
paramstype map[string, number] | nullunit
ntype integer | nullunit

Example

curl
curl -s "$FLUXUS_API/spice/shmoo" -H "Authorization: Bearer $COGITAN_API_KEY" \
  -H 'content-type: application/json' \
  -d '{"cell": "jtl", "n": 5}'

No CLI command answers this route.

Example body: the jtl library cell on a 5 x 5 grid

What it refuses

No refusal list is served for this route. Invalid input is a 400 or 422 with the error envelope; any refusal it makes is described above.

Responses: 200 Successful Response; 422 Validation Error.

Validated for

This route has no card in the capability manifest; read its description above for what it rests on.

POST

/v1/fluxus/spice/sweep

engine path /api/spice/sweep · metered

1-D sensitivity curve: one knob vs. one metric for an RSFQ cell.

What it does, in full

1-D sensitivity curve: one knob vs. one metric for an RSFQ cell.

Varies knob across its schema range in n points (clamped 5..21) and computes metric (bias_margin / ic_margin band width, delay ps, or functional 1/0) at each via the analytic engine; non-evaluable points are null rather than failing the sweep. Sync def so the (CPU-bound) sweep runs in the threadpool. Bad cell/knob/metric yields a 400 envelope.

Request

Body: SpiceSweepRequest

1-D sensitivity sweep of one knob vs. one metric for an RSFQ cell.

cellrequiredtype stringunit
knobrequiredtype stringunit
metricrequiredtype stringunit
ntype integer | nullunit

Example

curl
curl -s "$FLUXUS_API/spice/sweep" -H "Authorization: Bearer $COGITAN_API_KEY" \
  -H 'content-type: application/json' \
  -d '{"cell": "jtl", "knob": "bias_ua", "metric": "functional", "n": 5}'

No CLI command answers this route.

Example body: the jtl library cell

What it refuses

No refusal list is served for this route. Invalid input is a 400 or 422 with the error envelope; any refusal it makes is described above.

Responses: 200 Successful Response; 422 Validation Error.

Validated for

This route has no card in the capability manifest; read its description above for what it rests on.

POST

/v1/fluxus/spice/timing

engine path /api/spice/timing · metered

Propagation delay + max operating frequency for one RSFQ cell.

What it does, in full

Propagation delay + max operating frequency for one RSFQ cell.

Runs the analytic engine on the cell's canonical active experiment (or a named one): propagation_delay_ps (slips timed at their voltage peak; passive cells: input-JJ first slip -> output-JJ first slip; clocked dff/and2/or2: clock edge -> output-JJ first slip, the same reference /api/circuit/verify uses) and fmax_ghz (bounded pulse/clock-train scan for the minimum functional period). Either may be null for cell types that do not support a metric. Sync def so the (CPU-bound) engine runs in the threadpool. Bad input yields a 400 envelope.

Request

Body: SpiceTimingRequest

Propagation delay + max operating frequency for one RSFQ cell.

cellrequiredtype stringunit
paramstype map[string, number] | nullunit
experimenttype string | nullunit

Example

curl
curl -s "$FLUXUS_API/spice/timing" -H "Authorization: Bearer $COGITAN_API_KEY" \
  -H 'content-type: application/json' \
  -d '{"cell": "jtl"}'

No CLI command answers this route.

Example body: the jtl library cell

What it refuses

No refusal list is served for this route. Invalid input is a 400 or 422 with the error envelope; any refusal it makes is described above.

Responses: 200 Successful Response; 422 Validation Error.

Validated for

This route has no card in the capability manifest; read its description above for what it rests on.

POST

/v1/fluxus/spice/trapped-flux

engine path /api/spice/trapped-flux · metered

How much static trapped flux a cell's loop tolerates, or the yield under a drawn trapped flux (plus optional Ic spread).

What it does, in full

How much static trapped flux a cell's loop tolerates, or the yield under a drawn trapped flux (plus optional Ic spread).

mode="tolerance" (default): for each target inductor, the contiguous working window of static flux around zero, in Phi0, on the analytic engine with the full truth table as the gate, plus the pulse counts at the first failure on each side. mode="yield": the fraction of n_trials drawn devices that work with flux ~ N(0, trap_sigma_phi0) per target and per-junction Ic ~ N(1, ic_sigma_pct). The response states what is modelled, what is assumed (the target loop and the flux size) and what is not modelled (the probability of trapping a vortex). Bad input -> 400.

Request

Body: SpiceTrappedFluxRequest

Trapped-flux tolerance (or yield) for one RSFQ library cell.

cellrequiredtype stringunit
paramstype map[string, number] | nullunit
targetstype list[string] | nullunit
modetype "tolerance" | "yield"unit default "tolerance"
phi_max_phi0type number | nullunit Phi0
trap_sigma_phi0type number | nullunit Phi0
ic_sigma_pcttype number | nullunit %
n_trialstype integer | nullunit
seedtype integer | nullunit

Example

curl
curl -s "$FLUXUS_API/spice/trapped-flux" -H "Authorization: Bearer $COGITAN_API_KEY" \
  -H 'content-type: application/json' \
  -d '{"cell": "jtl"}'

No CLI command answers this route.

Example body: the jtl library cell

What it refuses

No refusal list is served for this route. Invalid input is a 400 or 422 with the error envelope; any refusal it makes is described above.

Responses: 200 Successful Response; 422 Validation Error.

Validated for

This route has no card in the capability manifest; read its description above for what it rests on.

POST

/v1/fluxus/spice/waveform

engine path /api/spice/waveform · metered

Per-JJ phase(t) traces + slip-event times for one RSFQ experiment.

What it does, in full

Per-JJ phase(t) traces + slip-event times for one RSFQ experiment.

Runs the analytic engine on the named experiment (default = the cell's canonical active case) and returns the phase trace (downsampled to <= 400 points) and slip-event times per junction (each at the slip's voltage peak). Sync def so the engine runs in the threadpool. Bad input yields a 400 envelope.

Request

Body: SpiceWaveformRequest

Per-JJ phase(t) traces for one RSFQ cell + experiment.

cellrequiredtype stringunit
paramstype map[string, number] | nullunit
experimenttype string | nullunit

Example

curl
curl -s "$FLUXUS_API/spice/waveform" -H "Authorization: Bearer $COGITAN_API_KEY" \
  -H 'content-type: application/json' \
  -d '{"cell": "jtl"}'

No CLI command answers this route.

Example body: the jtl library cell

What it refuses

No refusal list is served for this route. Invalid input is a 400 or 422 with the error envelope; any refusal it makes is described above.

Responses: 200 Successful Response; 422 Validation Error.

Validated for

This route has no card in the capability manifest; read its description above for what it rests on.

POST

/v1/fluxus/spice/yield

engine path /api/spice/yield · metered

Process-variation Monte Carlo yield (the tapeout question).

What it does, in full

Process-variation Monte Carlo yield (the tapeout question).

Each trial perturbs EVERY junction's critical current independently (Gaussian on each JJ area; effective Ic = icrit*area) and optionally each inductor, then checks the full truth table; yield_fraction = functional / n_trials from a seeded RNG. Sync def so the (CPU-bound) Monte Carlo runs in the threadpool. COST: n_trials * #experiments analytic transients (~1 s each); n_trials clamped <= 120, default 40 (~40 s). Bad input yields a 400 envelope.

Request

Body: SpiceYieldRequest

Per-junction process-variation Monte Carlo yield for one RSFQ cell.

cellrequiredtype stringunit
paramstype map[string, number] | nullunit
ic_sigma_pcttype number | nullunit %
l_sigma_pcttype number | nullunit %
n_trialstype integer | nullunit

Example

curl
curl -s "$FLUXUS_API/spice/yield" -H "Authorization: Bearer $COGITAN_API_KEY" \
  -H 'content-type: application/json' \
  -d '{"cell": "jtl", "n_trials": 20}'

No CLI command answers this route.

Example body: the jtl library cell, 20 trials

What it refuses

No refusal list is served for this route. Invalid input is a 400 or 422 with the error envelope; any refusal it makes is described above.

Responses: 200 Successful Response; 422 Validation Error.

Validated for

This route has no card in the capability manifest; read its description above for what it rests on.

Generated from Fluxus 0.3.0 at commit b9aa57d on 2026-10-20 by python -m fluxus.docs_bundle.