Print NGSPICE result as JSON
ngspice-json-cli can
- Simulate Ngspice circuit.(via ngspice program)
- Get ngspice printed result as Json type
:) You can also run ngspice-json-cli as server-mode https://www.ngspicecloud.com
ngspice-json-cli.mov
- Install ngspice
Click the right link to download Ngspice. download ngspice
Currently, the version 27 and 34 have been confirmed to be support.
- Install ngspice-json-cli from git
> git clone https://github.com/devkingsejong/ngspice-json-cli.git
> cd ngspice-json-cli
> pip install -r ngspicejson/requirements.txt
- Test run
> python -m ngspicejson.ngspice_json_cli run --command="show all" --file="default_test_circuit.cir" --debug="True"
That command will be returned json array.
Command | Notes |
---|---|
run | The simulation result is print in the data type mentioned below.(You can use --option value.) |
version | Print version information. |
server | Run ngspice-json-cli as server mode. |
{"ngspice": "34", "ngspice-json-cli": "0.0.1"}
Command | Notes | required |
---|---|---|
--command STR | You can designate the command to be executed after loading the circuit in Ngspice. | Y |
--file PATH | Please specify the path of the circuit code to be simulated in Ngspice. | Y |
--tag STR | If you want to print the tag with the result, enter the tag value.(Ignore False value of the debug option.) | N |
--debug BOOL | If you want to print the debug messages, set value to true. | N |
--real BOOL | If you want to print the original Ngspice output, set value to true. | N |
Displays errors returned by the Ngspice program.(This data type is always assigned as the first value in the list
{
"type":"NGSPICE_CLI_ERROR",
"contents":[
"Error: no such vector 2"
],
"real":""
}
Parse Initialnal Trainsient Solution Value.
open/close button
{
"type":"INITIAL_TRANSIENT_SOLUTION",
"contents":[
{
"node":"int",
"values":[
{
"key":"Voltage",
"values":[
"0"
]
}
]
},
{
"node":"in",
"values":[
{
"key":"Voltage",
"values":[
"0"
]
}
]
},
{
"node":"out",
"values":[
{
"key":"Voltage",
"values":[
"0"
]
}
]
},
{
"node":"v1#branch",
"values":[
{
"key":"Voltage",
"values":[
"0"
]
}
]
}
],
"real":""
}
Parse Node Model's Value.(In general, this value printed when the 'show all ' command is executed.)
open/close button
{
"type":"NODEMODEL",
"contents":[
{
"title":"Capacitor",
"description":"Fixed capacitor",
"contents":[
{
"model":"c2",
"values":[
{
"key":"model",
"values":[
"C"
]
},
{
"key":"capacitance",
"values":[
"1e-07"
]
},
{
"key":"dtemp",
"values":[
"0"
]
},
{
"key":"bv_max",
"values":[
"1e+99"
]
},
{
"key":"i",
"values":[
"4.28591e-05"
]
},
{
"key":"p",
"values":[
"4.06377e-06"
]
}
]
},
{
"model":"c1",
"values":[
{
"key":"model",
"values":[
"C"
]
},
{
"key":"capacitance",
"values":[
"1e-06"
]
},
{
"key":"dtemp",
"values":[
"0"
]
},
{
"key":"bv_max",
"values":[
"1e+99"
]
},
{
"key":"i",
"values":[
"0.000443373"
]
},
{
"key":"p",
"values":[
"6.10419e-05"
]
}
]
}
]
},
{
"title":"Resistor",
"description":"Simple linear resistor",
"contents":[
{
"model":"r2",
"values":[
{
"key":"model",
"values":[
"R"
]
},
{
"key":"resistance",
"values":[
"1000"
]
},
{
"key":"ac",
"values":[
"1000"
]
},
{
"key":"dtemp",
"values":[
"0"
]
},
{
"key":"bv_max",
"values":[
"1e+99"
]
},
{
"key":"noisy",
"values":[
"1"
]
},
{
"key":"i",
"values":[
"-4.28591e-05"
]
},
{
"key":"p",
"values":[
"1.8369e-06"
]
}
]
},
{
"model":"r1",
"values":[
{
"key":"model",
"values":[
"R"
]
},
{
"key":"resistance",
"values":[
"10000"
]
},
{
"key":"ac",
"values":[
"10000"
]
},
{
"key":"dtemp",
"values":[
"0"
]
},
{
"key":"bv_max",
"values":[
"1e+99"
]
},
{
"key":"noisy",
"values":[
"1"
]
},
{
"key":"i",
"values":[
"-0.000486232"
]
},
{
"key":"p",
"values":[
"0.00236422"
]
}
]
}
]
},
{
"title":"Vsource",
"description":"Independent voltage source",
"contents":[
{
"model":"v1",
"values":[
{
"key":"dc",
"values":[
"0"
]
},
{
"key":"acmag",
"values":[
"0"
]
},
{
"key":"pulse",
"values":[
"0",
"5",
"1e-06",
"1e-06",
"1e-06",
"1",
"1"
]
},
{
"key":"sin",
"values":[
"0",
"5",
"1e-06",
"1e-06",
"1e-06",
"1",
"1"
]
},
{
"key":"exp",
"values":[
"0",
"5",
"1e-06",
"1e-06",
"1e-06",
"1",
"1"
]
},
{
"key":"pwl",
"values":[
"0",
"5",
"1e-06",
"1e-06",
"1e-06",
"1",
"1"
]
},
{
"key":"sffm",
"values":[
"0",
"5",
"1e-06",
"1e-06",
"1e-06",
"1",
"1"
]
},
{
"key":"am",
"values":[
"0",
"5",
"1e-06",
"1e-06",
"1e-06",
"1",
"1"
]
},
{
"key":"trnoise",
"values":[
"0",
"5",
"1e-06",
"1e-06",
"1e-06",
"1",
"1"
]
},
{
"key":"trrandom",
"values":[
"0",
"5",
"1e-06",
"1e-06",
"1e-06",
"1",
"1"
]
},
{
"key":"i",
"values":[
"-0.000486232"
]
},
{
"key":"p",
"values":[
"-0.00243116"
]
}
]
}
]
}
],
"real":""
}
Parse Ngspice Verison.
{
"type":"NGSPICE_VERSION",
"contents":[
{
"key":"version",
"values":[
"34"
]
}
],
"real": ""
}
Parse Tabular Contents(In general, this value printed when the 'print' command is executed.)
If there are multiple print statements in the circuit, result data will be separated printed like "print_#1".
open/close button
{
"type":"TABULARCONTENTS",
"contents":[
{
"key":"print_#1",
"values":[
{
"data_name":"time",
"values":[
"0.000000e+00",
"1.000000e-08",
"2.000000e-08",
"4.000000e-08",
"8.000000e-08",
"1.600000e-07",
"3.200000e-07",
"6.400000e-07",
"1.000000e-06",
"1.005125e-06",
"1.015374e-06",
"1.035874e-06",
"1.061343e-06",
"1.112281e-06",
"1.214156e-06",
"1.417908e-06",
"1.633075e-06",
"1.969139e-06",
"2.000000e-06",
"2.047146e-06",
"2.141437e-06",
"2.330020e-06",
"2.707185e-06",
"3.461515e-06",
"4.970176e-06",
"7.987498e-06",
"1.398750e-05",
"1.998750e-05",
"2.598750e-05",
"3.198750e-05",
"3.798750e-05",
"4.398750e-05",
"4.998750e-05",
"5.598750e-05",
"6.198750e-05",
"6.798750e-05",
"7.398750e-05",
"7.998750e-05",
"8.598750e-05",
"9.198750e-05",
"9.798750e-05",
"1.039875e-04",
"1.099875e-04",
"1.159875e-04",
"1.219875e-04",
"1.279875e-04",
"1.339875e-04",
"1.399875e-04",
"1.459875e-04",
"1.519875e-04",
"1.579875e-04",
"1.639875e-04",
"1.699875e-04",
"1.759875e-04",
"1.819875e-04",
"1.879875e-04",
"1.939875e-04",
"1.999875e-04",
"2.059875e-04",
"2.119875e-04",
"2.179875e-04",
"2.239875e-04",
"2.299875e-04",
"2.359875e-04",
"2.419875e-04",
"2.479875e-04",
"2.539875e-04",
"2.599875e-04",
"2.659875e-04",
"2.719875e-04",
"2.779875e-04",
"2.839875e-04",
"2.899875e-04",
"2.959875e-04",
"3.000000e-04"
]
},
{
"data_name":"v1#branch",
"values":[
"0.000000e+00",
"0.000000e+00",
"0.000000e+00",
"0.000000e+00",
"0.000000e+00",
"0.000000e+00",
"0.000000e+00",
"0.000000e+00",
"0.000000e+00",
"-2.56242e-06",
"-7.68724e-06",
"-1.79369e-05",
"-3.06713e-05",
"-5.61400e-05",
"-1.07077e-04",
"-2.08949e-04",
"-3.16527e-04",
"-4.84546e-04",
"-4.99975e-04",
"-4.99973e-04",
"-4.99968e-04",
"-4.99959e-04",
"-4.99940e-04",
"-4.99902e-04",
"-4.99827e-04",
"-4.99677e-04",
"-4.99380e-04",
"-4.99084e-04",
"-4.98791e-04",
"-4.98499e-04",
"-4.98208e-04",
"-4.97919e-04",
"-4.97631e-04",
"-4.97344e-04",
"-4.97059e-04",
"-4.96774e-04",
"-4.96491e-04",
"-4.96208e-04",
"-4.95927e-04",
"-4.95646e-04",
"-4.95366e-04",
"-4.95087e-04",
"-4.94808e-04",
"-4.94531e-04",
"-4.94254e-04",
"-4.93977e-04",
"-4.93702e-04",
"-4.93427e-04",
"-4.93152e-04",
"-4.92878e-04",
"-4.92604e-04",
"-4.92331e-04",
"-4.92058e-04",
"-4.91786e-04",
"-4.91514e-04",
"-4.91243e-04",
"-4.90972e-04",
"-4.90701e-04",
"-4.90431e-04",
"-4.90161e-04",
"-4.89891e-04",
"-4.89622e-04",
"-4.89353e-04",
"-4.89084e-04",
"-4.88815e-04",
"-4.88547e-04",
"-4.88279e-04",
"-4.88011e-04",
"-4.87744e-04",
"-4.87477e-04",
"-4.87210e-04",
"-4.86943e-04",
"-4.86677e-04",
"-4.86410e-04",
"-4.86232e-04"
]
}
]
},
{
"key":"print_#2",
"values":[
{
"data_name":"time",
"values":[
"0.000000e+00",
"1.000000e-08",
"2.000000e-08",
"4.000000e-08",
"8.000000e-08",
"1.600000e-07",
"3.200000e-07",
"6.400000e-07",
"1.000000e-06",
"1.005125e-06",
"1.015374e-06",
"1.035874e-06",
"1.061343e-06",
"1.112281e-06",
"1.214156e-06",
"1.417908e-06",
"1.633075e-06",
"1.969139e-06",
"2.000000e-06",
"2.047146e-06",
"2.141437e-06",
"2.330020e-06",
"2.707185e-06",
"3.461515e-06",
"4.970176e-06",
"7.987498e-06",
"1.398750e-05",
"1.998750e-05",
"2.598750e-05",
"3.198750e-05",
"3.798750e-05",
"4.398750e-05",
"4.998750e-05",
"5.598750e-05",
"6.198750e-05",
"6.798750e-05",
"7.398750e-05",
"7.998750e-05",
"8.598750e-05",
"9.198750e-05",
"9.798750e-05",
"1.039875e-04",
"1.099875e-04",
"1.159875e-04",
"1.219875e-04",
"1.279875e-04",
"1.339875e-04",
"1.399875e-04",
"1.459875e-04",
"1.519875e-04",
"1.579875e-04",
"1.639875e-04",
"1.699875e-04",
"1.759875e-04",
"1.819875e-04",
"1.879875e-04",
"1.939875e-04",
"1.999875e-04",
"2.059875e-04",
"2.119875e-04",
"2.179875e-04",
"2.239875e-04",
"2.299875e-04",
"2.359875e-04",
"2.419875e-04",
"2.479875e-04",
"2.539875e-04",
"2.599875e-04",
"2.659875e-04",
"2.719875e-04",
"2.779875e-04",
"2.839875e-04",
"2.899875e-04",
"2.959875e-04",
"3.000000e-04"
]
},
{
"data_name":"v1#branch",
"values":[
"0.000000e+00",
"0.000000e+00",
"0.000000e+00",
"0.000000e+00",
"0.000000e+00",
"0.000000e+00",
"0.000000e+00",
"0.000000e+00",
"0.000000e+00",
"-2.56242e-06",
"-7.68724e-06",
"-1.79369e-05",
"-3.06713e-05",
"-5.61400e-05",
"-1.07077e-04",
"-2.08949e-04",
"-3.16527e-04",
"-4.84546e-04",
"-4.99975e-04",
"-4.99973e-04",
"-4.99968e-04",
"-4.99959e-04",
"-4.99940e-04",
"-4.99902e-04",
"-4.99827e-04",
"-4.99677e-04",
"-4.99380e-04",
"-4.99084e-04",
"-4.98791e-04",
"-4.98499e-04",
"-4.98208e-04",
"-4.97919e-04",
"-4.97631e-04",
"-4.97344e-04",
"-4.97059e-04",
"-4.96774e-04",
"-4.96491e-04",
"-4.96208e-04",
"-4.95927e-04",
"-4.95646e-04",
"-4.95366e-04",
"-4.95087e-04",
"-4.94808e-04",
"-4.94531e-04",
"-4.94254e-04",
"-4.93977e-04",
"-4.93702e-04",
"-4.93427e-04",
"-4.93152e-04",
"-4.92878e-04",
"-4.92604e-04",
"-4.92331e-04",
"-4.92058e-04",
"-4.91786e-04",
"-4.91514e-04",
"-4.91243e-04",
"-4.90972e-04",
"-4.90701e-04",
"-4.90431e-04",
"-4.90161e-04",
"-4.89891e-04",
"-4.89622e-04",
"-4.89353e-04",
"-4.89084e-04",
"-4.88815e-04",
"-4.88547e-04",
"-4.88279e-04",
"-4.88011e-04",
"-4.87744e-04",
"-4.87477e-04",
"-4.87210e-04",
"-4.86943e-04",
"-4.86677e-04",
"-4.86410e-04",
"-4.86232e-04"
]
},
{
"data_name":"in",
"values":[
"0.000000e+00",
"0.000000e+00",
"0.000000e+00",
"0.000000e+00",
"0.000000e+00",
"0.000000e+00",
"0.000000e+00",
"0.000000e+00",
"0.000000e+00",
"2.562416e-02",
"7.687249e-02",
"1.793691e-01",
"3.067137e-01",
"5.614029e-01",
"1.070781e+00",
"2.089538e+00",
"3.165373e+00",
"4.845694e+00",
"5.000000e+00",
"5.000000e+00",
"5.000000e+00",
"5.000000e+00",
"5.000000e+00",
"5.000000e+00",
"5.000000e+00",
"5.000000e+00",
"5.000000e+00",
"5.000000e+00",
"5.000000e+00",
"5.000000e+00",
"5.000000e+00",
"5.000000e+00",
"5.000000e+00",
"5.000000e+00",
"5.000000e+00",
"5.000000e+00",
"5.000000e+00",
"5.000000e+00",
"5.000000e+00",
"5.000000e+00",
"5.000000e+00",
"5.000000e+00",
"5.000000e+00",
"5.000000e+00",
"5.000000e+00",
"5.000000e+00",
"5.000000e+00",
"5.000000e+00",
"5.000000e+00",
"5.000000e+00",
"5.000000e+00",
"5.000000e+00",
"5.000000e+00",
"5.000000e+00",
"5.000000e+00",
"5.000000e+00",
"5.000000e+00",
"5.000000e+00",
"5.000000e+00",
"5.000000e+00",
"5.000000e+00",
"5.000000e+00",
"5.000000e+00",
"5.000000e+00",
"5.000000e+00",
"5.000000e+00",
"5.000000e+00",
"5.000000e+00",
"5.000000e+00",
"5.000000e+00",
"5.000000e+00",
"5.000000e+00",
"5.000000e+00",
"5.000000e+00",
"5.000000e+00"
]
}
]
}
],
"real":""
}
Parse the case, when the user prints only the data at a specific point. (such as v[t])
{
"type":"SPECIFIC_PRINT",
"contents":[
{
"key":"print_#0",
"values":[
{
"key":"time[k] ",
"values":[
" 1.000000e-04"
]
}
]
}
],
"real":""
}
Display Debug Messages.(This data type is always assigned as the last value in the list(if debug=True or tag value is assigned)
{
"type":"DEBUG_MESSAGE",
"contents":[
{
"key":"tag",
"values":[
"1bc29b36f623ba82aaf6724fd3b16718"
]
},
{
"key":"time",
"values":[
0.025753021240234375
]
}
],
"real":""
}
{
"type":"EXCEPTION",
"contents":{
"title":"NgspiceNotFoundException",
"description":"You should install NGSPICE. If your NGSPICE is alrealdy installed, check the alias settings."
},
"real":""
}
{
"type":"EXCEPTION",
"contents":{
"title":"SomethingBadException",
"description":"A fatal error that can not be processed by the program has occurred."
},
"real":""
}
- User can't change Ngspice options.
- Not available in version 3.6 or lower.
- Not have all of the error logging and exception handling.
- Can't cover all kinds of output.(feel free to report new data types)
******
** ngspice-34 : Circuit level simulation program
** The U. C. Berkeley CAD Group
** Copyright 1985-1994, Regents of the University of California.
** Copyright 2001-2020, The ngspice team.
** Please get your ngspice manual from http://ngspice.sourceforge.net/docs.html
** Please file your bug-reports at http://ngspice.sourceforge.net/bugrep.html
******
MIT