Header menu logo issie

CircuitCheck Type

Whether the open design currently builds into a simulation, which is all the Simulation tab needs in order to decide whether its button reads "Start Simulation" or "See Problems", and whether to offer the waveform simulator. It is here, in the model, because answering it means flattening the whole hierarchy: the tab used to ask on every render, so a large design was flattened again for every frame it was visible. Now it is answered once per edit, on a delay, and the last answer stands while a new one is worked out - a button that is briefly a moment out of date, in exchange for an editor that does not stop. The verdict is reached by validateCircuitSimulation, which builds the graph and no FastSimulation, so answering it allocates no step arrays.

Record fields

Record Field Description

CheckPending

Full Usage: CheckPending

Field type: bool

Set while a delayed re-check is outstanding. The view asks whenever it sees a stale verdict, and it renders many times per edit, so without this each one would schedule a check. Named CheckPending rather than Pending because Model.Pending is the mouse-drag queue, and two record fields of one name make every `{model with Pending = ...}` ambiguous.

Field type: bool

Verdict

Full Usage: Verdict

Field type: (Result<bool, SimulationError> * LoadedComponent list) option

The last verdict - Ok carrying whether the design is synchronous - together with the design it was reached from, which is what says whether it is still the current answer. None until the first check has run.

Field type: (Result<bool, SimulationError> * LoadedComponent list) option

Type something to start searching.