Example Usage
To demonstrate the usage of JoSIM Tools in all four modes of operation we choose a simple RSFQ splitter cell
This file has the following specification file:
time B01TX1 B01TX2 B1 B2 B3 B03|X0RX B03|X0RX2
4.00E-011 0 0 0 0 0 0 0
1.47E-010 1 1 1 1 1 0 0
1.66E-010 1 1 1 1 1 1 1
2.36E-010 2 2 2 2 2 1 1
2.55E-010 3 3 3 3 3 2 2
2.74E-010 3 3 3 3 3 3 3
The examples are run directly out of the examples directory.
Verify
mode = "verify"
[verify]
method = "spec_file"
circuit = "data/example_splitter.cir"
file = "data/example_splitter.sp"
$ josim-tools ./verify/simple_spec_file.toml
JoSIM Tools 1.1.4
SUCCESS
Margin Analysis
mode = "margin"
[parameters]
#Globals
Btotal = {"nominal" = 1}
Ltotal = {"nominal" = 1}
Itotal = {"nominal" = 1}
# Junctions
B01rx2_unscaled = {"nominal" = 1}
B01tx1_unscaled = {"nominal" = 2}
B1_unscaled = {"nominal" = 3.25}
B2_unscaled = {"nominal" = 2.5}
# Currents
IB01rx2_unscaled = {"nominal" = 155e-6}
IB01tx1_unscaled = {"nominal" = 130e-6}
IB1_unscaled = {"nominal" = 569e-6}
# Inductors
L01_rx2_unscaled = {"nominal" = 0.2e-12}
L01_tx1_unscaled = {"nominal" = 2.5e-12}
L02_tx1_unscaled = {"nominal" = 3.3e-12}
L03_tx1_unscaled = {"nominal" = 8e-12}
L1_unscaled = {"nominal" = 1.4e-12}
L2_unscaled = {"nominal" = 2e-12}
L3_unscaled = {"nominal" = 0.4e-12}
L4_unscaled = {"nominal" = 1.9e-12}
L5_unscaled = {"nominal" = 2e-12}
[verify]
method = "spec_file"
circuit = "data/example_splitter.cir"
file = "data/example_splitter.sp"
$ josim-tools ./margin/simple_margin_analysis_all.toml
JoSIM Tools 1.1.4
Btotal : 15.5 [ #####|#### ] 12.7
Ltotal : 54.8 [ ####################|########################## ] 71.7
Itotal : 18.3 [ ######|###### ] 18.3
B01rx2_unscaled : 90.0 [ #################################|############################# ] 80.2
B01tx1_unscaled : 49.2 [ ##################|################## ] 49.2
B1_unscaled : 32.3 [ ###########|############### ] 40.8
B2_unscaled : 38.0 [ ##############|###### ] 18.3
IB01rx2_unscaled: 57.7 [ #####################|################## ] 49.2
IB01tx1_unscaled: 90.0 [ #################################|############## ] 38.0
IB1_unscaled : 23.9 [ ########|########### ] 32.3
L01_rx2_unscaled: 90.0 [ #################################|################################# ] 90.0
L01_tx1_unscaled: 90.0 [ #################################|################################# ] 90.0
L02_tx1_unscaled: 90.0 [ #################################|################################# ] 90.0
L03_tx1_unscaled: 90.0 [ #################################|################################# ] 90.0
L1_unscaled : 90.0 [ #################################|################################# ] 90.0
L2_unscaled : 85.8 [ ###############################|################################# ] 90.0
L3_unscaled : 90.0 [ #################################|################################# ] 90.0
L4_unscaled : 90.0 [ #################################|################################# ] 90.0
L5_unscaled : 90.0 [ #################################|################################# ] 90.0
Critical margin: 12.7 % ['Btotal+']
Here we see the critical margin is 12.7%
and is towards the upper side of Btotal
Yield Analysis
mode = "yield"
[yield]
num_samples = 128
[parameters]
Btotal = {nominal = 1, variance = 0.1}
Ltotal = {nominal = 1, variance = 0.1}
Itotal = {nominal = 1, variance = 0.1}
[verify]
method = "spec_file"
circuit = "data/example_splitter.cir"
file = "data/example_splitter.sp"
$ josim-tools ./yield/simple_yield_analysis.toml
JoSIM Tools 1.1.4
Yield: 90 / 128 = 70.3 %
Optimization
We will now attempt to improve the critical margin identified by the margin analysis.
mode = "optimize"
[optimize]
method = "hybrid"
search_radius = 0.15
converge = 0.0005
max_iterations = 1000
output = "output/simple_hybrid_optimize.cir"
[margin]
max_search = 1.5
min_search = 0.5
scan_steps = 1
binary_search_steps = 15
[parameters]
Btotal = {nominal = 1, min=0.5, max=1.5}
Ltotal = {nominal = 1, min=0.5, max=1.5}
Itotal = {nominal = 1, min=0.5, max=1.5}
[verify]
method = "spec_file"
circuit = "data/example_splitter.cir"
file = "data/example_splitter.sp"
$ josim-tools ./optimize/advanced_hybrid_optimize.toml
JoSIM Tools 1.1.4
Starting value optimization
Analyzing point
.
.
.
Verifying next guess
Analyzing point
Adding point to list of guesses
Doing margin analysis of point:
Btotal: 21.1 [ #######|####### ] 21.6
Ltotal: 37.7 [ #############|################# ] 50.0
Itotal: 25.7 [ #########|######## ] 24.5
Critical margin: 21.1 % ['Btotal-']
Adding all margin boundaries to points of failure
Finished analyzing point
Guess score estimation error: 0.0
Convergence reached
Optimized:
point: [0.52176166 1.49948778 0.50816279]
score: 18.85875836212533
Here we can see that we have managed to improve the critical margin (Btotal+
) of 12.7%
to a new critical margin Btotal-
of 21.1%
.