Skip to content

Giux-CalcLab / SPICE Simulator

Limits & Imported Netlists

Browser and server simulation are deliberately different execution paths. Local graphical runs use ngspice WebAssembly in the browser. Server runs accept a documented structural subset, apply fixed workload limits, and compile the requested analysis into server-owned commands.

Current profile-specific server limits

Giux-CalcLab selects these limits from the authenticated scientific profile before validating a job. They change quantitative capacity only; every profile uses the same deny-by-default SPICE syntax and control-language allowlist.

LimitGuestRegisteredTrusted
Netlist size64 KiB1 MiB4 MiB
Physical lines51210,00050,000
Bytes per physical line1,0244,0968,192
Elements2565,00020,000
Distinct nodes1282,00010,000
Models645122,048
Measurements645122,048
Estimated analysis points200,0002,000,00010,000,000
Estimated point workload2,000,00050,000,000250,000,000

These are initial benchmark ceilings and can be recalibrated from measured scientific workloads. Point workload is estimated from analysis points and circuit size before the job is admitted. The first physical line is treated as the SPICE title, and a terminating .end is required. Sandbox identity, CPU and memory controls, runtime, process, network, temporary storage, and output-size limits remain separate profile controls.

Server netlist subset

The current server validator accepts:

  • R, C, and L passives with valid positive SPICE values.
  • Independent V and I sources with validated numeric, DC, AC, PULSE, or SIN forms.
  • D diodes and Q bipolar transistors.
  • .model definitions for D, NPN, and PNP using numeric allowlisted parameters.
  • Exactly one .op, .dc, .ac, or .tran analysis.
  • The documented AC/DC/transient .meas/.measure subset.

Editor transformers, center-tapped transformers, subcircuits, arbitrary coupled-inductor or X-element content, external includes and libraries, behavioral extensions, and other element families are not accepted by the current server profile.

Control-language boundary

A submitted .control block may declare only op, dc, ac, tran, meas, or measure. Giux-CalcLab parses these declarations and does not execute the submitted block. The server creates its own fixed control sequence and numerical output command.

The following are rejected, including when they appear inside a control block:

  • Shell and file commands such as shell, source, write, and wrdata.
  • include, inc, lib, subcircuit, function, and option directives.
  • Variables, loops, alterations, and multiple analyses.
  • User plotting, printing, save/probe, Fourier, noise, pole-zero, transfer, and sensitivity directives.

Imported textual netlists

The browser import precheck accepts at most 4 MiB and 50,000 lines. It recognizes R/C/L/V/I/D/Q bodies, models and continuations, one supported analysis, restricted measurement declarations, and .end. It rejects the unsafe and unsupported constructs listed above.

Importing text does not draw or reconstruct a schematic. The imported text becomes the active netlist. A local run uses that accepted text in browser ngspice; a server run sends it through the selected Guest, Registered, or Trusted validator limits and the normal account, job, and resource checks.

Browser-only overlay scripts are available from the graphical editor Commands area, but the textual import precheck rejects their variables, loops, and alterations. See Analysis Overlays.

Other current boundaries

  • Verified Guests can run temporary server jobs but have no persistent workspace.
  • Only saved circuits and saved plot configurations have read-only share links; complete saved simulations are not shared as a separate object.
  • Imported netlists cannot be converted back into editable graphical schematics.
  • PNG and SVG are visual exports; persistent saved results use numerical waveform data.

Analysis syntax and measurements are documented in Running Analyses.