Skip to content

tscircuit/circuit-json-to-spice

Repository files navigation

circuit-json-to-spice

Convert Circuit JSON into ngspice compatible SPICE netlists

Installation

npm install circuit-json-to-spice

Usage

import { circuitJsonToSpice, convertSpiceNetlistToString } from "circuit-json-to-spice"

// Convert Circuit JSON to SPICE netlist
const spiceNetlist = circuitJsonToSpice(circuitJson)

// Convert to SPICE string format
const spiceString = spiceNetlist.toSpiceString()

Example: Converting tscircuit code to SPICE

Here's a complete example showing how to create a circuit with tscircuit and convert it to SPICE:

import { Circuit, sel } from "tscircuit"
import { circuitJsonToSpice } from "circuit-json-to-spice"

// Create a simple RC circuit
const circuit = new Circuit()

circuit.add(
  <board>
    <resistor name="R1" resistance="1k" />
    <capacitor
      name="C1" 
      capacitance="1uF"
      connections={{
        pin1: sel.R1.pin1,
      }}
    />
  </board>
)

// Render the circuit to get Circuit JSON
await circuit.renderUntilSettled()
const circuitJson = circuit.getCircuitJson()

// Convert to SPICE
const spiceNetlist = circuitJsonToSpice(circuitJson)
const spiceString = spiceNetlist.toSpiceString()

console.log(spiceString)

Output:

Circuit JSON to SPICE Netlist
RR1 N1 N2 1K
CC1 N1 N3 1U
.END

Supported Components

Currently supports the following tscircuit components:

  • Resistors (simple_resistor) - Converted to SPICE R components
  • Capacitors (simple_capacitor) - Converted to SPICE C components

More components will be added in future releases.

Value Formatting

The library automatically formats component values using standard SPICE notation:

  • Resistors: 10001K, 10000001MEG
  • Capacitors: 0.0000011U, 0.0000000011N, 0.0000000000011P

References

About

Convert Circuit JSON into ngspice compatible SPICE netlists

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Contributors 4

  •  
  •  
  •  
  •