Compare commits

...

6 Commits

Author SHA1 Message Date
colin 7bb8199b02 app: stacked_cores: 61-xx: complete more runs
still nothing with >> 1.0x amplification.
though we do see configurations which might *locally* amplify:
- 2:1 inp coupling and 4:1 output coupling
        - output is amplified relative to the middle cores
        - but the middle cores transition less than fully
2022-11-19 11:18:24 +00:00
colin cca6a7c8cd app: stacked_cores: complete more 61-xx runs 2022-11-18 23:54:34 +00:00
colin 9cb9c4dd66 app: stacked_cores: 61-xx: complete a few first-pass runs over an alternatively-parameterized complementary buffer 2022-11-18 10:20:49 +00:00
colin da199568ff app: stacked_cores: 53-xx: do another run with greater asymmetry
5:1 does worse than 3:1 here
2022-11-18 02:47:09 +00:00
colin eccd865cf7 app: stacked_cores: 60-xx: new experiment that tries moving a value along a 4-core loop
it does this in a non-complementary way; and it doesn't get more than
about 0.60 amplification
2022-11-17 23:28:49 +00:00
colin e13ddbdc1f app: stacked_cores: complete more 59-xx runs 2022-11-17 09:45:19 +00:00
6 changed files with 1310 additions and 14 deletions

View File

@ -58,6 +58,9 @@ class ParameterizedMeas:
def runs(self) -> list:
return self.meas.values()
def num_runs(self) -> int:
return len(self.meas)
def __repr__(self) -> str:
meas_entries = "\n".join(
f" {format_float_tuple(k)}: {indented(format_list(v))}," for (k, v) in natsorted(self.meas.items())

View File

@ -17,9 +17,9 @@ buf_gates = read_db(lambda name: name.startswith("53-buf-no_inp_couple-"))
for name, meas in natsorted(buf_gates.items()):
print(name)
# normal M2 = -M1 sweep
# trace = eval_series(meas, sweep_buf_inputs(), extract_53xx_tx, y_idx=0)
# plot(name, "a0", trace)
# plot_slope(f"slope {name}", "a0", trace)
trace = eval_series(meas, sweep_buf_inputs(points=41), extract_53xx_tx, y_idx=0)
plot(name, "a0", trace)
plot_slope(f"slope {name}", "a0", trace)
# M2 = 0.25 - M1 shifted sweep
# trace = eval_series(meas, sweep_buf_inputs(8500), extract_53xx_tx, y_idx=0)
@ -27,6 +27,6 @@ for name, meas in natsorted(buf_gates.items()):
# plot_slope(f"slope In=0.25-Ip {name}", "a0", trace)
# M2 fixed at 0.0 while M1 sweeps
trace = eval_series(meas, sweep_m1(0.0), extract_53xx_tx, y_idx=0)
plot(f"In=0 {name}", "a0", trace)
plot_slope(f"slope In=0 {name}", "a0", trace)
# trace = eval_series(meas, sweep_m1(0.0), extract_53xx_tx, y_idx=0)
# plot(f"In=0 {name}", "a0", trace)
# plot_slope(f"slope In=0 {name}", "a0", trace)

View File

@ -0,0 +1,30 @@
#!/usr/bin/env python3
from natsort import natsorted
from stacked_cores_52xx import *
from stacked_cores_52xx_plotters import *
def extract_60xx_tx(meas_rows: list) -> tuple:
"""
extracts a flat tuple of input/output M mappings from a 60xx run
"""
return (
meas_rows[0].m[0], # input
meas_rows[1].m[2], # output
# meas_rows[1].m[1], # intermediate
# meas_rows[1].m[3], # intermediate
)
buf_gates = read_db(lambda name: name.startswith("60-"))
sweep_inv_input = lambda points=101: [(m, None) for m in sweep_1d(points)]
for name, meas in natsorted(buf_gates.items()):
trace = eval_series(meas, sweep_inv_input(41), extract_60xx_tx, y_idx=1)
plot(f"{name}", "M", trace)
plot_slope(f"slope {name}", "M", trace)

View File

@ -11,7 +11,7 @@ from stacked_cores_52xx_db import DB
## CONSTANTS/CONFIGURATION
# list of sims to extract details for
PREFIXES = { "52", "53", "54", "55", "56", "57", "58", "59" }
PREFIXES = { "52", "53", "54", "55", "56", "57", "58", "59", "60", "61" }
def times_of_interest(sim_name: str) -> list:
# could be more intelligent, extracting e.g. the clock duration from the name
@ -33,12 +33,20 @@ def times_of_interest(sim_name: str) -> list:
return [2e-9, 4e-9]
if sim_name.startswith("59-buf-edge_input-"):
return [4e-9, 6e-9]
if sim_name.startswith("60-"):
return [4e-9, 6e-9]
if sim_name.startswith("61-"):
return [4e-9, 6e-9]
## USER-FACING FUNCTIONS
def read_db(name_filter=lambda name: True) -> dict:
return { name: meas for (name, meas) in DB.items() if name_filter(name) }
def read_db(name_filter=lambda name: True, min_meas: int=0) -> dict:
return {
name: meas for (name, meas) in DB.items()
if name_filter(name) \
and meas.num_runs() >= min_meas
}
def update_db():
db = compute_db()

View File

@ -1449,6 +1449,56 @@ DB = {
MeasRow(4e-09, [ 14276, -32225, -32228, -13778]),
],
}),
'53-buf-no_inp_couple-0.0004rad-2000ctl_cond-20000coupling_cond-2000ps-100ps-4ctl-4coupling-5_1_5_1_winding-4e10-drive-': ParameterizedMeas({
(-1.000, -1.000,): [
MeasRow(2e-09, [-17937, -18013, -18012, -17942]),
MeasRow(4e-09, [-11241, -29048, -29054, -11288]),
],
(-1.000, 1.000,): [
MeasRow(2e-09, [-17685, -18049, 17074, -17215]),
MeasRow(4e-09, [-16766, -29033, -28931, 11212]),
],
(-0.250, 0.250,): [
MeasRow(2e-09, [-17517, -17403, 16667, -17291]),
MeasRow(4e-09, [-16741, -29023, -28933, 10885]),
],
(-0.200, 0.200,): [
MeasRow(2e-09, [-17289, -15924, 16589, -17264]),
MeasRow(4e-09, [-16702, -29014, -28934, 10478]),
],
(-0.150, 0.150,): [
MeasRow(2e-09, [-17293, -9638, 16295, -17320]),
MeasRow(4e-09, [-16267, -28966, -28931, 7575]),
],
(-0.100, 0.100,): [
MeasRow(2e-09, [-17351, -3235, 15114, -17370]),
MeasRow(4e-09, [-12723, -28937, -28927, 4301]),
],
(-0.050, 0.050,): [
MeasRow(2e-09, [-17366, 2821, 11293, -17373]),
MeasRow(4e-09, [ -7883, -28922, -28928, -48]),
],
(-0.020, 0.020,): [
MeasRow(2e-09, [-17369, 5950, 9045, -17371]),
MeasRow(4e-09, [ -5293, -28922, -28922, -2408]),
],
( 0.000, 0.000,): [
MeasRow(2e-09, [-17371, 7637, 7615, -17371]),
MeasRow(4e-09, [ -3787, -28917, -28924, -3823]),
],
( 0.100, -0.100,): [
MeasRow(2e-09, [-17370, 15097, -3331, -17353]),
MeasRow(4e-09, [ 4370, -28921, -28947, -12810]),
],
( 0.200, -0.200,): [
MeasRow(2e-09, [-17262, 16587, -16023, -17308]),
MeasRow(4e-09, [ 10554, -28928, -29022, -16710]),
],
( 1.000, -1.000,): [
MeasRow(2e-09, [-17215, 17073, -18049, -17689]),
MeasRow(4e-09, [ 11237, -28925, -29042, -16773]),
],
}),
'53-buf-no_inp_couple-0.0004rad-2000ctl_cond-20000coupling_cond-2000ps-100ps-8ctl-8coupling-3_1_3_1_winding-2e10-drive-': ParameterizedMeas({
(-1.000, -1.000,): [
MeasRow(2e-09, [-19084, -19340, -19343, -19083]),
@ -3085,18 +3135,34 @@ DB = {
MeasRow(4e-09, [ 950, -21396, -21396, 956]),
MeasRow(6e-09, [-28776, -16982, -16979, -28778]),
],
( 0.020, -0.020,): [
MeasRow(4e-09, [ 1326, -21397, -21396, 719]),
MeasRow(6e-09, [-28776, -16967, -16982, -28778]),
],
( 0.050, -0.050,): [
MeasRow(4e-09, [ 2222, -21398, -21396, 454]),
MeasRow(6e-09, [-28776, -16900, -16968, -28778]),
],
( 0.070, -0.070,): [
MeasRow(4e-09, [ 3544, -21399, -21396, 292]),
MeasRow(6e-09, [-28775, -16697, -16952, -28778]),
],
( 0.100, -0.100,): [
MeasRow(4e-09, [ 6829, -21402, -21394, -9]),
MeasRow(6e-09, [-28773, -15941, -17022, -28778]),
],
( 0.120, -0.120,): [
MeasRow(4e-09, [ 9137, -21404, -21393, -1365]),
MeasRow(6e-09, [-28770, -15207, -17123, -28778]),
],
( 0.150, -0.150,): [
MeasRow(4e-09, [ 12509, -21403, -21388, -5512]),
MeasRow(6e-09, [-28774, -13652, -17365, -28779]),
],
( 0.170, -0.170,): [
MeasRow(4e-09, [ 14489, -21397, -21381, -8384]),
MeasRow(6e-09, [-28772, -12571, -17537, -28784]),
],
( 0.200, -0.200,): [
MeasRow(4e-09, [ 15461, -21356, -21339, -12663]),
MeasRow(6e-09, [-28768, -11439, -17744, -28783]),
@ -3123,18 +3189,34 @@ DB = {
MeasRow(4e-09, [ 12628, -19185, -19187, 12627]),
MeasRow(6e-09, [-28762, 7051, 7041, -28764]),
],
( 0.020, -0.020,): [
MeasRow(4e-09, [ 13253, -18989, -19383, 11959]),
MeasRow(6e-09, [-28764, 7745, 6321, -28766]),
],
( 0.050, -0.050,): [
MeasRow(4e-09, [ 13975, -18770, -19664, 10139]),
MeasRow(6e-09, [-28766, 8660, 4681, -28766]),
],
( 0.070, -0.070,): [
MeasRow(4e-09, [ 14211, -18684, -19653, 7652]),
MeasRow(6e-09, [-28766, 9198, 2856, -28764]),
],
( 0.100, -0.100,): [
MeasRow(4e-09, [ 14538, -18561, -19632, 3780]),
MeasRow(6e-09, [-28767, 9980, 82, -28765]),
],
( 0.120, -0.120,): [
MeasRow(4e-09, [ 14738, -18484, -19618, 1181]),
MeasRow(6e-09, [-28767, 10476, -1754, -28765]),
],
( 0.150, -0.150,): [
MeasRow(4e-09, [ 15013, -18378, -19600, -2721]),
MeasRow(6e-09, [-28766, 11184, -4484, -28765]),
],
( 0.170, -0.170,): [
MeasRow(4e-09, [ 15185, -18311, -19588, -5319]),
MeasRow(6e-09, [-28766, 11637, -6277, -28765]),
],
( 0.200, -0.200,): [
MeasRow(4e-09, [ 15425, -18218, -19574, -9200]),
MeasRow(6e-09, [-28766, 12293, -8964, -28766]),
@ -3161,18 +3243,34 @@ DB = {
MeasRow(4e-09, [ 3383, -20950, -20951, 3518]),
MeasRow(6e-09, [-29650, -15491, -15377, -29653]),
],
( 0.020, -0.020,): [
MeasRow(4e-09, [ 5763, -20953, -20949, 1493]),
MeasRow(6e-09, [-29650, -14374, -16291, -29654]),
],
( 0.050, -0.050,): [
MeasRow(4e-09, [ 9243, -20956, -20948, 731]),
MeasRow(6e-09, [-29647, -13121, -16690, -29654]),
],
( 0.070, -0.070,): [
MeasRow(4e-09, [ 11467, -20957, -20948, 470]),
MeasRow(6e-09, [-29649, -12349, -16769, -29655]),
],
( 0.100, -0.100,): [
MeasRow(4e-09, [ 14205, -20947, -20935, -2111]),
MeasRow(6e-09, [-29648, -10775, -16982, -29656]),
],
( 0.120, -0.120,): [
MeasRow(4e-09, [ 14915, -20914, -20905, -5642]),
MeasRow(6e-09, [-29646, -9684, -17165, -29657]),
],
( 0.150, -0.150,): [
MeasRow(4e-09, [ 15422, -20859, -20856, -11065]),
MeasRow(6e-09, [-29645, -8271, -17414, -29659]),
],
( 0.170, -0.170,): [
MeasRow(4e-09, [ 15621, -20819, -20829, -14611]),
MeasRow(6e-09, [-29646, -7394, -17581, -29663]),
],
( 0.200, -0.200,): [
MeasRow(4e-09, [ 15862, -20764, -20923, -16860]),
MeasRow(6e-09, [-29649, -6809, -17704, -29668]),
@ -3199,18 +3297,58 @@ DB = {
MeasRow(2e-09, [-16769, 1852, 1873, -16769]),
MeasRow(4e-09, [ -7850, -28756, -28757, -7850]),
],
( 0.010, -0.010,): [
MeasRow(2e-09, [-16769, 2156, 1575, -16768]),
MeasRow(4e-09, [ -7781, -28756, -28757, -7912]),
],
( 0.020, -0.020,): [
MeasRow(2e-09, [-16770, 2453, 1296, -16767]),
MeasRow(4e-09, [ -7713, -28757, -28757, -7971]),
],
( 0.030, -0.030,): [
MeasRow(2e-09, [-16771, 2716, 1067, -16767]),
MeasRow(4e-09, [ -7655, -28757, -28757, -8020]),
],
( 0.040, -0.040,): [
MeasRow(2e-09, [-16772, 2938, 888, -16766]),
MeasRow(4e-09, [ -7607, -28757, -28757, -8058]),
],
( 0.050, -0.050,): [
MeasRow(2e-09, [-16772, 3137, 733, -16766]),
MeasRow(4e-09, [ -7565, -28757, -28757, -8092]),
],
( 0.060, -0.060,): [
MeasRow(2e-09, [-16773, 3321, 593, -16766]),
MeasRow(4e-09, [ -7525, -28756, -28757, -8124]),
],
( 0.070, -0.070,): [
MeasRow(2e-09, [-16773, 3499, 460, -16765]),
MeasRow(4e-09, [ -7487, -28756, -28757, -8153]),
],
( 0.080, -0.080,): [
MeasRow(2e-09, [-16774, 3673, 331, -16765]),
MeasRow(4e-09, [ -7451, -28756, -28757, -8182]),
],
( 0.100, -0.100,): [
MeasRow(2e-09, [-16775, 4025, 75, -16764]),
MeasRow(4e-09, [ -7376, -28756, -28757, -8240]),
],
( 0.120, -0.120,): [
MeasRow(2e-09, [-16776, 4388, -186, -16763]),
MeasRow(4e-09, [ -7299, -28756, -28757, -8299]),
],
( 0.130, -0.130,): [
MeasRow(2e-09, [-16776, 4572, -318, -16762]),
MeasRow(4e-09, [ -7260, -28756, -28757, -8329]),
],
( 0.150, -0.150,): [
MeasRow(2e-09, [-16777, 4971, -619, -16761]),
MeasRow(4e-09, [ -7174, -28756, -28757, -8395]),
],
( 0.170, -0.170,): [
MeasRow(2e-09, [-16778, 5454, -1025, -16760]),
MeasRow(4e-09, [ -7065, -28757, -28757, -8482]),
],
( 0.200, -0.200,): [
MeasRow(2e-09, [-16780, 6453, -1990, -16757]),
MeasRow(4e-09, [ -6827, -28756, -28757, -8682]),
@ -3237,22 +3375,70 @@ DB = {
MeasRow(2e-09, [-17373, 11619, 11663, -17397]),
MeasRow(4e-09, [ 15194, -28759, -28760, 15194]),
],
( 0.010, -0.010,): [
MeasRow(2e-09, [-17422, 11835, 11401, -17339]),
MeasRow(4e-09, [ 15262, -28758, -28760, 15107]),
],
( 0.020, -0.020,): [
MeasRow(2e-09, [-17463, 12016, 11029, -17262]),
MeasRow(4e-09, [ 15320, -28758, -28760, 14959]),
],
( 0.030, -0.030,): [
MeasRow(2e-09, [-17500, 12183, 10597, -17173]),
MeasRow(4e-09, [ 15374, -28757, -28760, 14743]),
],
( 0.040, -0.040,): [
MeasRow(2e-09, [-17535, 12341, 10155, -17080]),
MeasRow(4e-09, [ 15424, -28757, -28759, 14499]),
],
( 0.050, -0.050,): [
MeasRow(2e-09, [-17568, 12482, 9712, -16985]),
MeasRow(4e-09, [ 15466, -28757, -28758, 14239]),
],
( 0.060, -0.060,): [
MeasRow(2e-09, [-17595, 12608, 9271, -16887]),
MeasRow(4e-09, [ 15501, -28757, -28758, 13974]),
],
( 0.070, -0.070,): [
MeasRow(2e-09, [-17620, 12730, 8832, -16786]),
MeasRow(4e-09, [ 15533, -28757, -28757, 13710]),
],
( 0.080, -0.080,): [
MeasRow(2e-09, [-17644, 12848, 8398, -16682]),
MeasRow(4e-09, [ 15562, -28756, -28757, 13449]),
],
( 0.100, -0.100,): [
MeasRow(2e-09, [-17687, 13072, 7548, -16478]),
MeasRow(4e-09, [ 15618, -28756, -28759, 12941]),
],
( 0.120, -0.120,): [
MeasRow(2e-09, [-17693, 13290, 6738, -16276]),
MeasRow(4e-09, [ 15683, -28755, -28760, 12458]),
],
( 0.130, -0.130,): [
MeasRow(2e-09, [-17685, 13402, 6357, -16174]),
MeasRow(4e-09, [ 15720, -28755, -28760, 12233]),
],
( 0.150, -0.150,): [
MeasRow(2e-09, [-17654, 13618, 5664, -15972]),
MeasRow(4e-09, [ 15794, -28755, -28760, 11834]),
],
( 0.170, -0.170,): [
MeasRow(2e-09, [-17621, 13804, 5082, -15792]),
MeasRow(4e-09, [ 15859, -28755, -28759, 11503]),
],
( 0.180, -0.180,): [
MeasRow(2e-09, [-17604, 13892, 4819, -15707]),
MeasRow(4e-09, [ 15890, -28755, -28759, 11356]),
],
( 0.200, -0.200,): [
MeasRow(2e-09, [-17572, 14052, 4345, -15546]),
MeasRow(4e-09, [ 15945, -28754, -28758, 11096]),
],
( 0.230, -0.230,): [
MeasRow(2e-09, [-17523, 14270, 3701, -15304]),
MeasRow(4e-09, [ 16014, -28754, -28759, 10762]),
],
( 0.250, -0.250,): [
MeasRow(2e-09, [-17492, 14404, 3281, -15119]),
MeasRow(4e-09, [ 16054, -28754, -28759, 10566]),
@ -3275,18 +3461,38 @@ DB = {
MeasRow(2e-09, [-16833, 3190, 3244, -16834]),
MeasRow(4e-09, [ -2084, -29627, -29627, -2168]),
],
( 0.010, -0.010,): [
MeasRow(2e-09, [-16834, 3583, 2855, -16833]),
MeasRow(4e-09, [ -1905, -29627, -29627, -2333]),
],
( 0.020, -0.020,): [
MeasRow(2e-09, [-16835, 3976, 2482, -16832]),
MeasRow(4e-09, [ -1727, -29627, -29627, -2487]),
],
( 0.030, -0.030,): [
MeasRow(2e-09, [-16836, 4356, 2131, -16831]),
MeasRow(4e-09, [ -1557, -29626, -29627, -2628]),
],
( 0.040, -0.040,): [
MeasRow(2e-09, [-16837, 4704, 1821, -16830]),
MeasRow(4e-09, [ -1403, -29626, -29627, -2753]),
],
( 0.050, -0.050,): [
MeasRow(2e-09, [-16838, 5006, 1563, -16830]),
MeasRow(4e-09, [ -1270, -29627, -29627, -2857]),
],
( 0.060, -0.060,): [
MeasRow(2e-09, [-16839, 5268, 1348, -16829]),
MeasRow(4e-09, [ -1156, -29627, -29627, -2944]),
],
( 0.070, -0.070,): [
MeasRow(2e-09, [-16839, 5506, 1161, -16829]),
MeasRow(4e-09, [ -1054, -29628, -29627, -3020]),
],
( 0.080, -0.080,): [
MeasRow(2e-09, [-16840, 5733, 986, -16828]),
MeasRow(4e-09, [ -957, -29628, -29627, -3091]),
],
( 0.100, -0.100,): [
MeasRow(2e-09, [-16841, 6163, 670, -16827]),
MeasRow(4e-09, [ -776, -29628, -29627, -3221]),
@ -3295,14 +3501,30 @@ DB = {
MeasRow(2e-09, [-16842, 6590, 354, -16826]),
MeasRow(4e-09, [ -596, -29627, -29627, -3350]),
],
( 0.130, -0.130,): [
MeasRow(2e-09, [-16843, 6816, 179, -16826]),
MeasRow(4e-09, [ -500, -29627, -29627, -3421]),
],
( 0.150, -0.150,): [
MeasRow(2e-09, [-16845, 7319, -240, -16824]),
MeasRow(4e-09, [ -284, -29627, -29627, -3588]),
],
( 0.170, -0.170,): [
MeasRow(2e-09, [-16847, 7939, -815, -16823]),
MeasRow(4e-09, [ -12, -29626, -29627, -3815]),
],
( 0.180, -0.180,): [
MeasRow(2e-09, [-16847, 8290, -1160, -16822]),
MeasRow(4e-09, [ 144, -29626, -29627, -3951]),
],
( 0.200, -0.200,): [
MeasRow(2e-09, [-16849, 9050, -1940, -16820]),
MeasRow(4e-09, [ 485, -29625, -29627, -4256]),
],
( 0.230, -0.230,): [
MeasRow(2e-09, [-16852, 10251, -3220, -16817]),
MeasRow(4e-09, [ 1028, -29627, -29627, -4760]),
],
( 0.250, -0.250,): [
MeasRow(2e-09, [-16854, 11030, -4077, -16815]),
MeasRow(4e-09, [ 1383, -29628, -29627, -5099]),
@ -3316,4 +3538,618 @@ DB = {
MeasRow(4e-09, [ 5102, -29626, -29628, -10949]),
],
}),
'60-inv-0.0004rad-2000ctl_cond-20000coupling_cond-2000ps-100ps-3coupling-6_1_1_1_winding-15000000512e0-drive-': ParameterizedMeas({
(-1.000,): [
MeasRow(4e-09, [-19973, -19481, 16446, -17601]),
MeasRow(6e-09, [-28808, -10309, 9038, -8405]),
],
( 0.000,): [
MeasRow(4e-09, [ 11535, -17349, 16533, -16906]),
MeasRow(6e-09, [-28222, 15694, -9961, 13548]),
],
( 1.000,): [
MeasRow(4e-09, [ 16858, -16846, 16833, -16861]),
MeasRow(6e-09, [-28204, 16532, -12447, 16213]),
],
}),
'60-inv-0.0004rad-2000ctl_cond-20000coupling_cond-2000ps-100ps-6coupling-1_1_3_1_winding-5e9-drive-': ParameterizedMeas({
(-1.000,): [
MeasRow(4e-09, [-17060, -17411, 16421, -16835]),
MeasRow(6e-09, [-28790, -9371, 9324, -9708]),
],
(-0.300,): [
MeasRow(4e-09, [-16782, -17297, 16486, -16857]),
MeasRow(6e-09, [-28777, -9153, 9311, -9666]),
],
(-0.200,): [
MeasRow(4e-09, [-12487, -16983, 16564, -16784]),
MeasRow(6e-09, [-28768, -6700, 7575, -7804]),
],
(-0.100,): [
MeasRow(4e-09, [ 1943, -16993, 16570, -16790]),
MeasRow(6e-09, [-28767, 728, 1156, -1392]),
],
( 0.000,): [
MeasRow(4e-09, [ 12707, -16959, 16644, -16804]),
MeasRow(6e-09, [-28764, 5622, -2835, 2635]),
],
( 0.100,): [
MeasRow(4e-09, [ 14452, -16908, 16735, -16810]),
MeasRow(6e-09, [-28769, 6384, -3326, 3208]),
],
( 0.200,): [
MeasRow(4e-09, [ 15334, -16882, 16779, -16815]),
MeasRow(6e-09, [-28765, 6759, -3565, 3482]),
],
( 0.300,): [
MeasRow(4e-09, [ 15871, -16865, 16808, -16821]),
MeasRow(6e-09, [-28763, 6995, -3714, 3653]),
],
( 1.000,): [
MeasRow(4e-09, [ 16848, -16837, 16846, -16846]),
MeasRow(6e-09, [-28752, 7405, -3987, 3941]),
],
}),
'60-inv-0.0004rad-2000ctl_cond-20000coupling_cond-2000ps-100ps-6coupling-3_1_1_1_winding-5e9-drive-': ParameterizedMeas({
(-1.000,): [
MeasRow(4e-09, [-19897, -19577, 16316, -17616]),
MeasRow(6e-09, [-28895, -11361, 9590, -9866]),
],
(-0.300,): [
MeasRow(4e-09, [-18753, -18946, 16391, -17423]),
MeasRow(6e-09, [-28855, -9953, 9059, -9051]),
],
(-0.200,): [
MeasRow(4e-09, [ -9981, -17654, 16175, -16906]),
MeasRow(6e-09, [-28764, -2270, 4059, -3290]),
],
(-0.100,): [
MeasRow(4e-09, [ 3502, -17663, 16185, -16917]),
MeasRow(6e-09, [-28765, 7363, -2695, 4296]),
],
(-0.050,): [
MeasRow(4e-09, [ 8439, -17547, 16297, -16911]),
MeasRow(6e-09, [-28764, 10713, -4671, 6750]),
],
( 0.000,): [
MeasRow(4e-09, [ 11342, -17361, 16462, -16898]),
MeasRow(6e-09, [-28764, 12716, -5623, 8081]),
],
( 0.050,): [
MeasRow(4e-09, [ 13669, -17160, 16624, -16882]),
MeasRow(6e-09, [-28772, 14256, -6291, 9100]),
],
( 0.100,): [
MeasRow(4e-09, [ 14653, -17063, 16695, -16874]),
MeasRow(6e-09, [-28766, 14846, -6545, 9506]),
],
( 0.150,): [
MeasRow(4e-09, [ 15100, -17022, 16725, -16871]),
MeasRow(6e-09, [-28764, 15074, -6655, 9685]),
],
( 0.200,): [
MeasRow(4e-09, [ 15443, -16990, 16747, -16869]),
MeasRow(6e-09, [-28763, 15222, -6737, 9820]),
],
( 0.300,): [
MeasRow(4e-09, [ 15880, -16951, 16774, -16866]),
MeasRow(6e-09, [-28760, 15353, -6840, 9991]),
],
( 1.000,): [
MeasRow(4e-09, [ 16860, -16843, 16834, -16857]),
MeasRow(6e-09, [-28752, 15582, -7052, 10360]),
],
}),
'60-inv-0.0004rad-2000ctl_cond-20000coupling_cond-2000ps-100ps-6coupling-3_1_3_1_winding-5e9-drive-': ParameterizedMeas({
(-1.000,): [
MeasRow(4e-09, [-19732, -19469, 16457, -17437]),
MeasRow(6e-09, [-28893, -11232, 8909, -9545]),
],
(-0.300,): [
MeasRow(4e-09, [-18578, -18889, 16463, -17285]),
MeasRow(6e-09, [-28859, -9891, 8264, -8751]),
],
(-0.250,): [
MeasRow(4e-09, [-16089, -17936, 16321, -16947]),
MeasRow(6e-09, [-28809, -7290, 6693, -6974]),
],
(-0.200,): [
MeasRow(4e-09, [ -9962, -17729, 16234, -16843]),
MeasRow(6e-09, [-28763, -2636, 2763, -2991]),
],
(-0.150,): [
MeasRow(4e-09, [ -3230, -17728, 16239, -16847]),
MeasRow(6e-09, [-28763, 2034, -1202, 1028]),
],
(-0.100,): [
MeasRow(4e-09, [ 3493, -17732, 16249, -16854]),
MeasRow(6e-09, [-28764, 6447, -4842, 4721]),
],
(-0.050,): [
MeasRow(4e-09, [ 8219, -17583, 16359, -16856]),
MeasRow(6e-09, [-28764, 9484, -7059, 7098]),
],
( 0.000,): [
MeasRow(4e-09, [ 11174, -17372, 16511, -16852]),
MeasRow(6e-09, [-28762, 11392, -8242, 8474]),
],
( 0.050,): [
MeasRow(4e-09, [ 13562, -17141, 16670, -16842]),
MeasRow(6e-09, [-28772, 12924, -9084, 9511]),
],
( 0.100,): [
MeasRow(4e-09, [ 14572, -17033, 16742, -16839]),
MeasRow(6e-09, [-28764, 13545, -9410, 9927]),
],
( 0.150,): [
MeasRow(4e-09, [ 15032, -16990, 16770, -16840]),
MeasRow(6e-09, [-28763, 13815, -9555, 10107]),
],
( 0.200,): [
MeasRow(4e-09, [ 15384, -16958, 16792, -16842]),
MeasRow(6e-09, [-28762, 14013, -9663, 10240]),
],
( 0.250,): [
MeasRow(4e-09, [ 15638, -16937, 16807, -16844]),
MeasRow(6e-09, [-28761, 14153, -9743, 10336]),
],
( 0.300,): [
MeasRow(4e-09, [ 15835, -16922, 16817, -16846]),
MeasRow(6e-09, [-28760, 14258, -9805, 10408]),
],
( 1.000,): [
MeasRow(4e-09, [ 16858, -16849, 16850, -16856]),
MeasRow(6e-09, [-28753, 14774, -10128, 10772]),
],
}),
'60-inv-0.0004rad-2000ctl_cond-20000coupling_cond-2000ps-100ps-8coupling-2_1_2_1_winding-5e9-drive-': ParameterizedMeas({
(-1.000,): [
MeasRow(4e-09, [-19461, -19286, 16436, -17402]),
MeasRow(6e-09, [-29671, -10410, 8545, -9195]),
],
(-0.300,): [
MeasRow(4e-09, [-19131, -19093, 16451, -17367]),
MeasRow(6e-09, [-29663, -10010, 8380, -8983]),
],
(-0.250,): [
MeasRow(4e-09, [-18817, -18946, 16459, -17329]),
MeasRow(6e-09, [-29661, -9671, 8215, -8771]),
],
(-0.200,): [
MeasRow(4e-09, [-16478, -17983, 16407, -17025]),
MeasRow(6e-09, [-29658, -7241, 6850, -7130]),
],
(-0.150,): [
MeasRow(4e-09, [ -8997, -17635, 16283, -16862]),
MeasRow(6e-09, [-29645, -1566, 2150, -2326]),
],
(-0.100,): [
MeasRow(4e-09, [ -343, -17642, 16287, -16867]),
MeasRow(6e-09, [-29646, 4488, -2971, 2874]),
],
(-0.050,): [
MeasRow(4e-09, [ 7227, -17595, 16333, -16872]),
MeasRow(6e-09, [-29645, 9590, -7083, 7103]),
],
( 0.000,): [
MeasRow(4e-09, [ 11105, -17368, 16509, -16867]),
MeasRow(6e-09, [-29644, 12253, -8907, 9164]),
],
( 0.050,): [
MeasRow(4e-09, [ 13785, -17127, 16688, -16854]),
MeasRow(6e-09, [-29653, 14087, -10054, 10523]),
],
( 0.100,): [
MeasRow(4e-09, [ 14562, -17051, 16741, -16850]),
MeasRow(6e-09, [-29647, 14598, -10365, 10899]),
],
( 0.150,): [
MeasRow(4e-09, [ 15048, -17005, 16773, -16849]),
MeasRow(6e-09, [-29645, 14879, -10559, 11133]),
],
( 0.200,): [
MeasRow(4e-09, [ 15383, -16974, 16794, -16848]),
MeasRow(6e-09, [-29644, 15040, -10693, 11293]),
],
( 0.250,): [
MeasRow(4e-09, [ 15636, -16951, 16808, -16849]),
MeasRow(6e-09, [-29643, 15134, -10794, 11412]),
],
( 0.300,): [
MeasRow(4e-09, [ 15833, -16935, 16818, -16850]),
MeasRow(6e-09, [-29642, 15200, -10874, 11504]),
],
( 1.000,): [
MeasRow(4e-09, [ 16859, -16848, 16849, -16857]),
MeasRow(6e-09, [-29635, 15487, -11297, 11974]),
],
}),
'61-buf-neg_out-2_1windings_in-1_1windings_out-1windings_couple-0.0004rad-2000ctl_cond-20000coupling_cond-2000ps-100ps-8coupling-2e10-drive-': ParameterizedMeas({
( 0.000, 0.000,): [
MeasRow(4e-09, [-17903, -18968, 10689, 10693, -18970, -17901]),
MeasRow(6e-09, [-16920, 2138, -30867, -30869, 2133, -16920]),
],
( 0.100, -0.100,): [
MeasRow(4e-09, [-17702, -18439, 16456, -18815, -19513, -17953]),
MeasRow(6e-09, [-16914, 7305, -30870, -30877, -13825, -16837]),
],
( 0.200, -0.200,): [
MeasRow(4e-09, [-17677, -18320, 16707, -19009, -19586, -17968]),
MeasRow(6e-09, [-16914, 7518, -30870, -30877, -14004, -16836]),
],
( 1.000, -1.000,): [
MeasRow(4e-09, [-17640, -18069, 17240, -19454, -19801, -18007]),
MeasRow(6e-09, [-16914, 7960, -30870, -30876, -14449, -16835]),
],
}),
'61-buf-neg_out-2_1windings_in-2_1windings_out-2windings_couple-0.0004rad-2000ctl_cond-20000coupling_cond-2000ps-100ps-6coupling-2e10-drive-': ParameterizedMeas({
(-1.000, 1.000,): [
MeasRow(4e-09, [-17712, -20248, -18458, 16667, -18884, -17397]),
MeasRow(6e-09, [-16797, -16215, -30295, -30287, -2598, -16887]),
],
( 0.000, 0.000,): [
MeasRow(4e-09, [-17598, -19619, 10712, 10717, -19619, -17596]),
MeasRow(6e-09, [-16873, -6765, -30283, -30283, -6787, -16872]),
],
( 0.200, -0.200,): [
MeasRow(4e-09, [-17448, -19132, 16323, -18147, -20033, -17662]),
MeasRow(6e-09, [-16889, -2913, -30286, -30293, -15978, -16796]),
],
( 1.000, -1.000,): [
MeasRow(4e-09, [-17397, -18883, 16669, -18456, -20247, -17710]),
MeasRow(6e-09, [-16888, -2580, -30286, -30295, -16234, -16799]),
],
}),
'61-buf-pos_out-2_1windings_in-0_0windings_out-1windings_couple-0.0004rad-2000ctl_cond-20000coupling_cond-2000ps-100ps-8coupling-2e10-drive-': ParameterizedMeas({
(-0.100, -0.100,): [
MeasRow(4e-09, [ 16862, -18032, -18498, -18500, -18031, 16866]),
MeasRow(6e-09, [ 13648, -6586, -30892, -30893, -6634, 13817]),
],
( 0.000, 0.000,): [
MeasRow(4e-09, [ 16862, -17183, 12512, 12514, -17181, 16865]),
MeasRow(6e-09, [ 14264, 14023, -30874, -30874, 13993, 14420]),
],
( 0.010, -0.080,): [
MeasRow(4e-09, [ 16862, -17218, 13225, -18453, -17945, 16866]),
MeasRow(6e-09, [ 13898, 16563, -30873, -30884, -14061, 14153]),
],
( 0.010, -0.050,): [
MeasRow(4e-09, [ 16862, -17178, 13222, -16941, -17559, 16866]),
MeasRow(6e-09, [ 13934, 16528, -30873, -30884, -12757, 14199]),
],
( 0.020, -0.080,): [
MeasRow(4e-09, [ 16862, -17212, 13623, -18451, -17942, 16866]),
MeasRow(6e-09, [ 13895, 16593, -30873, -30885, -14097, 14151]),
],
( 0.020, -0.020,): [
MeasRow(4e-09, [ 16862, -17174, 13623, 1966, -17163, 16865]),
MeasRow(6e-09, [ 14161, 16019, -30873, -30873, 4531, 14332]),
],
( 0.040, -0.100,): [
MeasRow(4e-09, [ 16862, -17205, 14326, -18518, -17967, 16866]),
MeasRow(6e-09, [ 13876, 16647, -30870, -30885, -14216, 14135]),
],
( 0.050, -0.150,): [
MeasRow(4e-09, [ 16862, -17191, 15114, -18632, -18001, 16865]),
MeasRow(6e-09, [ 13882, 16704, -30868, -30884, -14361, 14146]),
],
( 0.050, -0.100,): [
MeasRow(4e-09, [ 16862, -17185, 15110, -18514, -17955, 16866]),
MeasRow(6e-09, [ 13871, 16702, -30868, -30885, -14259, 14134]),
],
( 0.050, -0.050,): [
MeasRow(4e-09, [ 16862, -17141, 15098, -16926, -17533, 16866]),
MeasRow(6e-09, [ 13921, 16670, -30868, -30885, -12995, 14193]),
],
( 0.060, -0.120,): [
MeasRow(4e-09, [ 16862, -17145, 16167, -18563, -17953, 16866]),
MeasRow(6e-09, [ 13863, 16749, -30871, -30885, -14327, 14131]),
],
( 0.070, -0.130,): [
MeasRow(4e-09, [ 16862, -17129, 16417, -18586, -17955, 16866]),
MeasRow(6e-09, [ 13866, 16756, -30871, -30884, -14349, 14138]),
],
( 0.070, -0.070,): [
MeasRow(4e-09, [ 16862, -17118, 16409, -18376, -17871, 16866]),
MeasRow(6e-09, [ 13867, 16755, -30871, -30885, -14173, 14135]),
],
( 0.080, -0.140,): [
MeasRow(4e-09, [ 16862, -17119, 16514, -18608, -17958, 16866]),
MeasRow(6e-09, [ 13861, 16759, -30871, -30884, -14363, 14132]),
],
( 0.100, -0.100,): [
MeasRow(4e-09, [ 16862, -17093, 16629, -18511, -17912, 16866]),
MeasRow(6e-09, [ 13847, 16763, -30871, -30885, -14279, 14116]),
],
( 0.100, 0.000,): [
MeasRow(4e-09, [ 16862, -17044, 16601, 12452, -17086, 16866]),
MeasRow(6e-09, [ 14260, 15984, -30871, -30874, 12934, 14415]),
],
( 0.200, -0.200,): [
MeasRow(4e-09, [ 16862, -17002, 16887, -18711, -17976, 16865]),
MeasRow(6e-09, [ 13858, 16773, -30870, -30885, -14424, 14132]),
],
( 1.000, -1.000,): [
MeasRow(4e-09, [ 16863, -16729, 17385, -19143, -18169, 16866]),
MeasRow(6e-09, [ 13832, 16789, -30869, -30886, -14705, 14109]),
],
}),
'61-buf-pos_out-2_1windings_in-0_0windings_out-2windings_couple-0.0004rad-2000ctl_cond-20000coupling_cond-2000ps-100ps-8coupling-2e10-drive-': ParameterizedMeas({
( 1.000, -1.000,): [
MeasRow(4e-09, [ 16864, -17281, 17418, -19440, -18751, 16864]),
MeasRow(6e-09, [ 14383, 13495, -30870, -30877, -16556, 14548]),
],
}),
'61-buf-pos_out-2_1windings_in-1_1windings_out-1windings_couple-0.0004rad-2000ctl_cond-20000coupling_cond-2000ps-100ps-8coupling-2e10-drive-': ParameterizedMeas({
( 0.000, 0.000,): [
MeasRow(4e-09, [ 16354, -17564, 11558, 11572, -17568, 16342]),
MeasRow(6e-09, [ -1324, 6443, -30869, -30870, 6425, -1318]),
],
( 1.000, -1.000,): [
MeasRow(4e-09, [ 16544, -16772, 17539, -19164, -18620, 16333]),
MeasRow(6e-09, [ -6945, 14172, -30871, -30877, -12582, 10629]),
],
}),
'61-buf-pos_out-2_1windings_in-1_2windings_out-1windings_couple-0.0004rad-2000ctl_cond-20000coupling_cond-2000ps-100ps-7coupling-2e10-drive-': ParameterizedMeas({
( 1.000, -1.000,): [
MeasRow(4e-09, [ 17330, -16156, 17283, -18651, -17792, 17061]),
MeasRow(6e-09, [ 2782, 15481, -30707, -30714, -12134, 13898]),
],
}),
'61-buf-pos_out-2_1windings_in-1_2windings_out-1windings_couple-0.0004rad-2000ctl_cond-20000coupling_cond-2000ps-100ps-8coupling-2e10-drive-': ParameterizedMeas({
( 1.000, -1.000,): [
MeasRow(4e-09, [ 17689, -16694, 17701, -19387, -18319, 17617]),
MeasRow(6e-09, [ 11997, 2393, -30871, -30872, -13275, 15689]),
],
}),
'61-buf-pos_out-2_1windings_in-2_1windings_out-2windings_couple-0.0004rad-2000ctl_cond-20000coupling_cond-2000ps-100ps-6coupling-2e10-drive-': ParameterizedMeas({
( 1.000, -1.000,): [
MeasRow(4e-09, [ 16187, -17741, 16913, -18248, -19226, 16098]),
MeasRow(6e-09, [ -2905, 1055, -30287, -30296, -14558, 10198]),
],
}),
'61-buf-pos_out-2_1windings_in-4_1windings_out-1windings_couple-0.0004rad-2000ctl_cond-20000coupling_cond-2000ps-100ps-5coupling-2e10-drive-': ParameterizedMeas({
( 1.000, -1.000,): [
MeasRow(4e-09, [ 16110, -17683, 16792, -17798, -18888, 16124]),
MeasRow(6e-09, [ -6054, -1286, -30121, -30142, -13332, 7960]),
],
}),
'61-buf-pos_out-4_1windings_in-0_0windings_out-0windings_couple-0.0004rad-2000ctl_cond-20000coupling_cond-2000ps-100ps-7coupling-2e10-drive-': ParameterizedMeas({
( 1.000, -1.000,): [
MeasRow(4e-09, [ 16862, -15918, 18152, -19512, -17756, 16864]),
MeasRow(6e-09, [ 14040, 16853, -30703, -30738, 6529, 14393]),
],
}),
'61-buf-pos_out-4_1windings_in-0_0windings_out-1windings_couple-0.0004rad-2000ctl_cond-20000coupling_cond-2000ps-100ps-6coupling-2e10-drive-': ParameterizedMeas({
( 1.000, -1.000,): [
MeasRow(4e-09, [ 16866, -16456, 17771, -19027, -17659, 16868]),
MeasRow(6e-09, [ 13711, 16773, -30281, -30297, -13352, 13914]),
],
}),
'61-buf-pos_out-4_1windings_in-0_0windings_out-2windings_couple-0.0004rad-2000ctl_cond-20000coupling_cond-2000ps-100ps-5coupling-2e10-drive-': ParameterizedMeas({
(-0.100, -0.100,): [
MeasRow(4e-09, [ 16872, -17437, -17739, -17742, -17438, 16869]),
MeasRow(6e-09, [ 12922, -9192, -30132, -30130, -9246, 13049]),
],
(-0.050, -0.120,): [
MeasRow(4e-09, [ 16872, -17059, -7684, -17859, -17410, 16869]),
MeasRow(6e-09, [ 13059, -1620, -30126, -30127, -11507, 13151]),
],
(-0.040, -0.120,): [
MeasRow(4e-09, [ 16872, -17062, -2968, -17859, -17409, 16869]),
MeasRow(6e-09, [ 13175, 1811, -30124, -30126, -12519, 13265]),
],
(-0.030, -0.020,): [
MeasRow(4e-09, [ 16872, -17011, 1755, 6109, -17016, 16870]),
MeasRow(6e-09, [ 13375, -1833, -30118, -30115, 2742, 13569]),
],
(-0.030, -0.010,): [
MeasRow(4e-09, [ 16872, -17012, 1753, 7682, -17017, 16869]),
MeasRow(6e-09, [ 13360, -2265, -30118, -30113, 3914, 13565]),
],
(-0.020, -0.080,): [
MeasRow(4e-09, [ 16872, -17046, 6130, -17148, -17290, 16869]),
MeasRow(6e-09, [ 13134, 8286, -30123, -30127, -13943, 13276]),
],
(-0.010, -0.080,): [
MeasRow(4e-09, [ 16872, -17048, 7716, -17148, -17290, 16869]),
MeasRow(6e-09, [ 13115, 9464, -30119, -30127, -14303, 13273]),
],
( 0.000, 0.000,): [
MeasRow(4e-09, [ 16872, -17018, 8560, 8555, -17019, 16870]),
MeasRow(6e-09, [ 13357, 2370, -30113, -30110, 2354, 13486]),
],
( 0.010, -0.080,): [
MeasRow(4e-09, [ 16872, -17050, 9254, -17148, -17290, 16869]),
MeasRow(6e-09, [ 13106, 10586, -30115, -30128, -14642, 13273]),
],
( 0.010, -0.050,): [
MeasRow(4e-09, [ 16872, -17020, 9251, -7707, -17006, 16869]),
MeasRow(6e-09, [ 13300, 7522, -30112, -30119, -7940, 13303]),
],
( 0.020, -0.080,): [
MeasRow(4e-09, [ 16872, -17051, 9846, -17148, -17290, 16869]),
MeasRow(6e-09, [ 13110, 11015, -30115, -30128, -14771, 13276]),
],
( 0.020, -0.020,): [
MeasRow(4e-09, [ 16872, -17020, 9847, 6035, -17015, 16870]),
MeasRow(6e-09, [ 13385, 4189, -30113, -30115, 65, 13461]),
],
( 0.040, -0.100,): [
MeasRow(4e-09, [ 16872, -17071, 11056, -17756, -17388, 16869]),
MeasRow(6e-09, [ 13111, 12056, -30121, -30129, -15451, 13280]),
],
( 0.050, -0.150,): [
MeasRow(4e-09, [ 16872, -17080, 11826, -17938, -17429, 16869]),
MeasRow(6e-09, [ 13112, 12648, -30122, -30129, -15725, 13281]),
],
( 0.050, -0.100,): [
MeasRow(4e-09, [ 16872, -17072, 11832, -17756, -17388, 16869]),
MeasRow(6e-09, [ 13112, 12599, -30122, -30129, -15600, 13280]),
],
( 0.050, -0.050,): [
MeasRow(4e-09, [ 16872, -17022, 11845, -7704, -17005, 16869]),
MeasRow(6e-09, [ 13306, 9321, -30120, -30119, -8334, 13305]),
],
( 0.060, -0.120,): [
MeasRow(4e-09, [ 16872, -17076, 13028, -17859, -17408, 16869]),
MeasRow(6e-09, [ 13112, 13456, -30120, -30130, -15861, 13280]),
],
( 0.070, -0.130,): [
MeasRow(4e-09, [ 16873, -17070, 15108, -17882, -17408, 16869]),
MeasRow(6e-09, [ 13099, 14786, -30112, -30133, -16108, 13272]),
],
( 0.070, -0.070,): [
MeasRow(4e-09, [ 16873, -17020, 15102, -16049, -17114, 16869]),
MeasRow(6e-09, [ 13110, 14293, -30112, -30130, -15033, 13265]),
],
( 0.080, -0.140,): [
MeasRow(4e-09, [ 16873, -17055, 16171, -17903, -17400, 16869]),
MeasRow(6e-09, [ 13101, 15305, -30116, -30134, -16184, 13282]),
],
( 0.100, -0.100,): [
MeasRow(4e-09, [ 16872, -17004, 16690, -17748, -17343, 16869]),
MeasRow(6e-09, [ 13103, 15478, -30115, -30133, -16142, 13284]),
],
( 0.100, 0.000,): [
MeasRow(4e-09, [ 16872, -16955, 16674, 8571, -16966, 16870]),
MeasRow(6e-09, [ 13371, 8452, -30116, -30109, -1, 13454]),
],
( 0.200, -0.200,): [
MeasRow(4e-09, [ 16872, -16942, 16965, -18015, -17393, 16869]),
MeasRow(6e-09, [ 13103, 15603, -30114, -30136, -16226, 13285]),
],
( 1.000, -1.000,): [
MeasRow(4e-09, [ 16873, -16809, 17401, -18429, -17508, 16870]),
MeasRow(6e-09, [ 13109, 15769, -30113, -30142, -16332, 13296]),
],
}),
'61-buf-pos_out-6_1windings_in-0_0windings_out-1windings_couple-0.0004rad-2000ctl_cond-20000coupling_cond-2000ps-100ps-4coupling-2e10-drive-': ParameterizedMeas({
(-0.100, -0.100,): [
MeasRow(4e-09, [ 16854, -16944, -16479, -16506, -16946, 16855]),
MeasRow(6e-09, [ 13476, -7795, -27981, -27983, -7902, 13652]),
],
(-0.030, -0.020,): [
MeasRow(4e-09, [ 16854, -16836, 3770, 4853, -16837, 16855]),
MeasRow(6e-09, [ 13760, 3132, -27952, -27952, 4163, 13896]),
],
(-0.030, -0.010,): [
MeasRow(4e-09, [ 16854, -16836, 3743, 5599, -16837, 16855]),
MeasRow(6e-09, [ 13750, 2920, -27952, -27957, 4758, 13883]),
],
(-0.020, -0.010,): [
MeasRow(4e-09, [ 16854, -16837, 4821, 5590, -16837, 16855]),
MeasRow(6e-09, [ 13733, 3760, -27951, -27956, 4473, 13868]),
],
( 0.000, 0.000,): [
MeasRow(4e-09, [ 16854, -16837, 6162, 6165, -16838, 16855]),
MeasRow(6e-09, [ 13696, 4648, -27954, -27955, 4569, 13835]),
],
( 0.020, -0.020,): [
MeasRow(4e-09, [ 16854, -16838, 7023, 4795, -16837, 16855]),
MeasRow(6e-09, [ 13708, 5671, -27952, -27951, 3277, 13855]),
],
( 0.050, -0.050,): [
MeasRow(4e-09, [ 16854, -16840, 8336, -1707, -16833, 16855]),
MeasRow(6e-09, [ 13697, 8285, -27947, -27957, -1939, 13813]),
],
( 0.070, -0.070,): [
MeasRow(4e-09, [ 16854, -16841, 9970, -8609, -16828, 16855]),
MeasRow(6e-09, [ 13494, 10783, -27956, -27964, -6550, 13749]),
],
( 0.100, -0.100,): [
MeasRow(4e-09, [ 16854, -16854, 15997, -16506, -16935, 16855]),
MeasRow(6e-09, [ 13489, 15372, -27947, -27979, -11039, 13930]),
],
( 0.200, -0.200,): [
MeasRow(4e-09, [ 16854, -16753, 16959, -17532, -17059, 16855]),
MeasRow(6e-09, [ 13454, 15633, -27949, -27980, -11669, 13873]),
],
( 1.000, -1.000,): [
MeasRow(4e-09, [ 16854, -16475, 17447, -18019, -17159, 16855]),
MeasRow(6e-09, [ 13450, 15768, -27947, -27991, -12006, 13870]),
],
}),
'61-buf-pos_out-6_1windings_in-0_0windings_out-2windings_couple-0.0004rad-2000ctl_cond-20000coupling_cond-2000ps-100ps-4coupling-2e10-drive-': ParameterizedMeas({
( 1.000, -1.000,): [
MeasRow(4e-09, [ 16857, -16663, 17505, -18247, -17239, 16857]),
MeasRow(6e-09, [ 13464, 10716, -27951, -27983, -15026, 13941]),
],
}),
'61-buf-pos_out-6_1windings_in-1_1windings_out-1windings_couple-0.0004rad-2000ctl_cond-20000coupling_cond-2000ps-100ps-4coupling-2e10-drive-': ParameterizedMeas({
(-0.100, -0.100,): [
MeasRow(4e-09, [ 16685, -17005, -16485, -16518, -17009, 16684]),
MeasRow(6e-09, [ 10542, -8699, -27976, -27977, -8718, 10559]),
],
( 0.000, 0.000,): [
MeasRow(4e-09, [ 16660, -16873, 6332, 6337, -16874, 16659]),
MeasRow(6e-09, [ 5318, 1498, -27950, -27952, 1482, 5311]),
],
( 0.100, -0.100,): [
MeasRow(4e-09, [ 16740, -16884, 16006, -16519, -16995, 16681]),
MeasRow(6e-09, [ 560, 9321, -27949, -27975, -10937, 11758]),
],
( 0.200, -0.200,): [
MeasRow(4e-09, [ 16800, -16766, 17000, -17665, -17164, 16637]),
MeasRow(6e-09, [ 285, 9943, -27954, -27975, -11490, 11931]),
],
( 1.000, -1.000,): [
MeasRow(4e-09, [ 16806, -16493, 17533, -18171, -17286, 16618]),
MeasRow(6e-09, [ 176, 10395, -27954, -27983, -11788, 12030]),
],
}),
'61-buf-pos_out-6_2windings_in-0_0windings_out-1windings_couple-0.0004rad-2000ctl_cond-20000coupling_cond-2000ps-100ps-4coupling-2e10-drive-': ParameterizedMeas({
(-0.100, -0.100,): [
MeasRow(4e-09, [ 16856, -17157, -16608, -16641, -17162, 16855]),
MeasRow(6e-09, [ 13608, -4537, -28003, -28005, -4595, 13751]),
],
( 0.000, 0.000,): [
MeasRow(4e-09, [ 16856, -16884, 11615, 11607, -16882, 16854]),
MeasRow(6e-09, [ 13804, 15757, -27949, -27952, 15736, 13972]),
],
( 0.100, -0.100,): [
MeasRow(4e-09, [ 16856, -16899, 15269, -16636, -17134, 16854]),
MeasRow(6e-09, [ 13600, 16669, -27941, -27986, -10311, 13872]),
],
( 0.200, -0.200,): [
MeasRow(4e-09, [ 16856, -16903, 16718, -17681, -17382, 16854]),
MeasRow(6e-09, [ 13479, 16705, -27943, -27991, -11358, 13779]),
],
( 1.000, -1.000,): [
MeasRow(4e-09, [ 16857, -16493, 17124, -18144, -17548, 16854]),
MeasRow(6e-09, [ 13456, 16718, -27938, -28003, -11819, 13771]),
],
}),
'61-buf-pos_out-6_2windings_in-0_0windings_out-2windings_couple-0.0004rad-2000ctl_cond-20000coupling_cond-2000ps-100ps-4coupling-2e10-drive-': ParameterizedMeas({
( 0.000, 0.000,): [
MeasRow(4e-09, [ 16855, -17005, 11879, 11883, -17003, 16856]),
MeasRow(6e-09, [ 13917, 9179, -27953, -27955, 9145, 14043]),
],
( 1.000, -1.000,): [
MeasRow(4e-09, [ 16858, -16778, 17131, -18402, -17745, 16855]),
MeasRow(6e-09, [ 13720, 16406, -27938, -28021, -15939, 13792]),
],
}),
'61-buf-pos_out-8_1windings_in-0_0windings_out-1windings_couple-0.0004rad-2000ctl_cond-20000coupling_cond-2000ps-100ps-4coupling-2e10-drive-': ParameterizedMeas({
(-0.100, -0.100,): [
MeasRow(4e-09, [ 16852, -16945, -16423, -16459, -16947, 16853]),
MeasRow(6e-09, [ 13946, -7607, -27966, -27969, -7688, 14112]),
],
( 0.000, 0.000,): [
MeasRow(4e-09, [ 16853, -16834, 5227, 5237, -16834, 16854]),
MeasRow(6e-09, [ 14020, 4694, -27949, -27951, 4684, 14176]),
],
( 0.100, -0.100,): [
MeasRow(4e-09, [ 16852, -16850, 16049, -16455, -16937, 16853]),
MeasRow(6e-09, [ 13886, 15608, -27939, -27970, -11479, 14210]),
],
( 0.200, -0.200,): [
MeasRow(4e-09, [ 16853, -16640, 17352, -18178, -17145, 16853]),
MeasRow(6e-09, [ 13887, 15835, -27944, -27969, -12366, 14188]),
],
( 1.000, -1.000,): [
MeasRow(4e-09, [ 16852, -16366, 18072, -18846, -17265, 16854]),
MeasRow(6e-09, [ 13899, 15945, -27944, -27977, -12752, 14196]),
],
}),
}

View File

@ -195,10 +195,10 @@ impl Params {
assert!(self.hardcoded_control_and_sense);
Torus::new_xz(Meters::new(self.sx() - self.s_major, self.sy(), self.sz(n)), self.io_major, self.io_minor)
}
/// the last core gets an external output in place of its coupling loop
fn sense(&self, n: u32) -> Torus {
Torus::new_xz(Meters::new(self.sx() + self.s_major, self.sy(), self.sz(n)), self.io_major, self.io_minor)
}
// the last core gets an external output in place of its coupling loop
// fn sense(&self, n: u32) -> Torus {
// Torus::new_xz(Meters::new(self.sx() + self.s_major, self.sy(), self.sz(n)), self.io_major, self.io_minor)
// }
fn s(&self, n: u32) -> Torus {
Torus::new_xy(Meters::new(self.sx(), self.sy(), self.sz(n)), self.s_major, self.s_minor)
}
@ -1378,6 +1378,20 @@ fn drive_map_complementary_buf_edge_inputs_59(amp0: f32, amp1: f32) -> [[ClockSt
]
}
#[allow(unused)]
fn drive_map_complementary_buf_center_inputs_61(amp0: f32, amp1: f32, amp_load: f32) -> [[ClockState; 6]; 3] {
use ClockState as C;
// amplitudes are inverted from what you would expect.
// hold(-1) puts the core into a positive M
[
// init S0, S5 as load, S2 pos, S3 pos/inp; charge S1 neg, S4 neg
[C::hold(-amp_load), C::hold_high(), C::hold(-amp0), C::hold(-amp1), C::hold_high(), C::hold(-amp_load), ],
[C::release(-amp_load), C::release_high(), C::release(-amp0), C::release(-amp1), C::release_high(), C::release(-amp_load),],
// clear S2 -> S1, S3 -> S4
[C::float(), C::float(), C::hold_high(), C::hold_high(), C::float(), C::float(), ],
]
}
#[allow(unused)]
fn drive_map_split_54(amp: f32) -> [[ClockState; 3]; 4] {
use ClockState as C;
@ -1459,6 +1473,20 @@ fn drive_map_buf_58(amp0: f32, amp1: f32) -> [[ClockState; 6]; 3] {
]
}
#[allow(unused)]
fn drive_map_quad_loop_60(amp: f32) -> [[ClockState; 4]; 3] {
use ClockState as C;
// amplitudes are inverted from what you would expect.
// hold(-1) puts the core into a positive M
[
// init S0 pos; charge S1 neg, S3 neg, S2 pos
[C::hold(-amp), C::hold_high(), C::hold_low(), C::hold_high(), ],
[C::release(-amp), C::release_high(), C::release_low(), C::release_high(),],
// clear (S0 -> S1, S3) -> S2
[C::hold_high(), C::float(), C::float(), C::float(), ],
]
}
fn asymmetric_inverter_name(p: &Params, sim_id: &str, windings: u32, init_flt: f32) -> String {
let init_int = (init_flt.abs() * 100.0 + 0.5) as u32;
let init_level = if init_flt > 0.0 {
@ -1536,6 +1564,21 @@ fn asymmetric_inverter_name_v3(p: &Params, sim_id: &str, ctl_loops: u32, couplin
format!("{sim_id}-{s_major}rad-{ctl_cond}ctl_cond-{coupling_cond}coupling_cond-{clock_length}ps-{clock_decay}ps-{ctl_loops}ctl-{coupling_loops}coupling-{windings}_1_winding-{input_str}-drive-{init_level}")
}
/// v4 has separate windings_a and windings_b
/// and we drop ctl_loops
fn asymmetric_inverter_name_v4(p: &Params, sim_id: &str, coupling_loops: u32, windings_a: u32, windings_b: u32, init_flt: f32) -> String {
let init_level = init_float_str(init_flt);
let s_major = p.s_major;
let ctl_cond = p.ctl_conductivity as u64;
let coupling_cond = p.coupling_conductivity as u64;
let clock_length = (p.clock_phase_duration * 1e12 + 0.5) as u64;
let clock_decay = (p.clock_decay * 1e12 + 0.5) as u64;
let input_str = exp_format(p.input_magnitude);
format!("{sim_id}-{s_major}rad-{ctl_cond}ctl_cond-{coupling_cond}coupling_cond-{clock_length}ps-{clock_decay}ps-{coupling_loops}coupling-{windings_a}_1_{windings_b}_1_winding-{input_str}-drive-{init_level}")
}
fn asymmetric_binary_gate_name(p: &Params, sim_id: &str, ctl_loops: u32, coupling_loops: u32, windings: u32, init_flt_a: f32, init_flt_b: f32) -> String {
let init_level_a = init_float_str(init_flt_a);
let init_level_b = init_float_str(init_flt_b);
@ -1564,6 +1607,21 @@ fn asymmetric_binary_gate_name_v2(p: &Params, sim_id: &str, ctl_loops: u32, coup
format!("{sim_id}-{s_major}rad-{ctl_cond}ctl_cond-{coupling_cond}coupling_cond-{clock_length}ps-{clock_decay}ps-{ctl_loops}ctl-{coupling_loops}coupling-{windings_a}_1_{windings_b}_1_winding-{input_str}-drive-{init_level_a}-{init_level_b}")
}
fn gate_name_custom_2_input(p: &Params, sim_id: &str, init_flt0: f32, init_flt1: f32) -> String {
let init_level0 = init_float_str(init_flt0);
let init_level1 = init_float_str(init_flt1);
let s_major = p.s_major;
let ctl_cond = p.ctl_conductivity as u64;
let coupling_cond = p.coupling_conductivity as u64;
let clock_length = (p.clock_phase_duration * 1e12 + 0.5) as u64;
let clock_decay = (p.clock_decay * 1e12 + 0.5) as u64;
let coupling_loops = p.coupling_loops;
let input_str = exp_format(p.input_magnitude);
format!("{sim_id}-{s_major}rad-{ctl_cond}ctl_cond-{coupling_cond}coupling_cond-{clock_length}ps-{clock_decay}ps-{coupling_loops}coupling-{input_str}-drive-{init_level0}-{init_level1}")
}
/// couple `sender` to the `sender+1` core by using `loops` loops, including a crossover so that
/// when the sender goes high -> low, the receiver *also* goes high -> low ("inverting").
/// `loops` must be >= 1.
@ -6075,6 +6133,8 @@ fn main() {
// e.g. L=3, A=3 gives 39
// special case of A=0 is L*(2 + 1)
// TODO
(false, 2e3, 2e4, ps(2000), ps(100), 4, 2, 2, um(400), 4e10),
// slope is 1.01 from x=8500 to x=16999; averages 0.97 outside
(false, 2e3, 2e4, ps(2000), ps(100), 8, 1, 1, um(400), 2e10),
@ -6752,7 +6812,7 @@ fn main() {
}
}
if true {
if false {
for init_set in [
&[
// establish rough domain/range
@ -6888,6 +6948,365 @@ fn main() {
}
}
}
if false {
for init_set in [
&[
// establish rough domain/range
1.00,
-1.00,
][..],
&[
0.00,
0.30,
-0.30,
0.20,
-0.20,
0.10,
-0.10,
][..],
&[
// more detailed sweep
0.05,
-0.05,
0.15,
-0.15,
0.25,
-0.25,
][..],
&[
// even more verbosity
0.02,
-0.02,
0.07,
-0.07,
0.12,
-0.12,
0.17,
-0.17,
0.22,
-0.22,
][..],
&[
0.01,
-0.01,
0.03,
-0.03,
0.04,
-0.04,
0.06,
-0.06,
0.08,
-0.08,
0.13,
-0.13,
0.18,
-0.18,
0.23,
-0.23,
][..],
] {
for (ctl_cond, coupling_cond, clock_duration, clock_decay, coupling_loops, inp_loops, out_loops, s_major, cur_flt) in [
// total slot use is L*(2*max(inp_loops, out_loops) + 1),
// where L is the "coupling loops" (control loops)
// e.g. L=13, inp=1, out=1 gives 39
// e.g. L=8, inp<=2, out<=2 gives 40
// e.g. L=6, inp<=3, out<=3 gives 42
// e.g. L=4, inp<=4, out<=4 gives 36
// e.g. L=3, inp<=6, out<=6 gives 39
(2e3, 2e4, ps(2000), ps(100), 3, 6, 1, um(400), 15e9),
// (2e3, 2e4, ps(2000), ps(100), 13, 1, 1, um(400), 5e9),
// maps to [7700, -11900]
// slope: -0.63 peak
(2e3, 2e4, ps(2000), ps(100), 8, 2, 2, um(400), 5e9),
// maps to [7900, -10700]
// slope: -0.64 peak
(2e3, 2e4, ps(2000), ps(100), 6, 3, 3, um(400), 5e9),
// maps to [8600, -7500]
// slope: -0.57 peak
(2e3, 2e4, ps(2000), ps(100), 6, 3, 1, um(400), 5e9),
// maps to [9700, -4400]
// slope: -0.44 peak
(2e3, 2e4, ps(2000), ps(100), 6, 1, 3, um(400), 5e9),
] {
for &init_flt in init_set {
// ideal layout... but this would require 3 slots
// /--------\
// M0 -> M1 M2 -> M3
// \---------/
//
// actual layout: 2 slots
// M0 -> M1 -> M2 <- M3
// \-------->-------/
let slot_group_size = inp_loops.max(out_loops);
let net_slots = 2*slot_group_size + 1;
let mut params = params_v2
.with_clock_phase_duration(clock_duration)
.with_clock_decay(clock_decay)
.with_ctl_conductivity(ctl_cond)
.with_coupling_conductivity(coupling_cond)
.with_s_major(s_major)
.with_coupling_loops(coupling_loops)
.with_input_magnitude(cur_flt)
// control loops
.with_coupling(0, 0, 0, net_slots, CouplingMethod::Control)
.with_coupling(1, 1, 0, net_slots, CouplingMethod::Control)
.with_coupling(2, 2, 0, net_slots, CouplingMethod::Control)
.with_coupling(3, 3, 0, net_slots, CouplingMethod::Control)
;
for i in 0..inp_loops {
// couple input M0 -> M1
params = params.with_coupling(0, 1, 1+i, net_slots, CouplingMethod::Direct);
// couple input M0 -> M3
params = params.with_coupling(0, 3, 1+slot_group_size+i, net_slots, CouplingMethod::Outside);
}
for i in 0..out_loops {
// couple intermediary M1 -> M2
params = params.with_coupling(1, 2, 1+slot_group_size+i, net_slots, CouplingMethod::Direct);
// couple intermediary M3 -> M2
params = params.with_coupling(3, 2, 1+i, net_slots, CouplingMethod::Direct);
}
let name = asymmetric_inverter_name_v4(
&params,
"60-inv",
coupling_loops,
inp_loops,
out_loops,
init_flt,
);
run_sim(
&name,
drive_map_quad_loop_60(init_flt),
params,
);
}
}
}
}
if true {
for init_set in [
// M2, M3 are treated as X and -X, respectively.
// because it's differential, testing (-1, 1) is sort of extraneous with (1, -1).
// generally only need to test the X > 0 region, if X == -X.
// but also test some cases where X != -X, due to error
&[
// establish rough domain/range
( 1.00, -1.00),
][..],
&[
( 0.00, 0.00),
// (-1.00, 1.00), // technically extraneous
( 0.20, -0.20),
( 0.10, -0.10),
(-0.10, -0.10), // try to get _real_ M=0
// (-1.00, -1.00), // uninitialized case
][..],
&[
// more detailed sweep
( 0.05, -0.05),
( 0.02, -0.02),
( 0.07, -0.07),
][..],
// &[
// // bias M2 to be 0.15 lower what we expect
// (-0.20, 0.05),
// (-0.10, -0.05),
// (-0.25, 0.10),
// (-0.05, -0.10),
// ( 0.00, -0.15),
// (-0.15, 0.00),
// ( 0.10, -0.25),
// ( 0.20, -0.35),
// ],
&[
// test some asymmetries -- specifically where A1 is higher than expected
// ( 0.30, 0.00),
// ( 0.30, -0.20),
// ( 0.30, -0.10),
(-0.03, -0.02),
(-0.03, -0.01),
(-0.02, -0.01),
(-0.02, 0.00),
(-0.01, -0.02),
(-0.01, -0.03),
( 0.00, -0.04),
( 0.00, -0.03),
( 0.10, 0.00),
( 0.05, -0.10),
( 0.05, -0.15),
( 0.07, -0.13),
( 0.02, -0.08),
( 0.04, -0.10),
( 0.06, -0.12),
( 0.08, -0.14),
( 0.01, -0.08),
( 0.01, -0.05),
(-0.02, -0.08),
(-0.01, -0.08),
(-0.04, -0.12),
(-0.05, -0.12),
][..],
&[
// more asymmetries
( 0.20, 0.00),
( 0.20, -0.10),
( 0.20, 0.10),
( 0.00, -0.10),
(-0.05, -0.20),
(-0.10, -0.30),
][..],
&[
// unexpected scenarios
(-0.20, -0.20),
(-0.10, -0.10),
( 0.10, 0.10),
][..],
] {
for (init_out, ctl_cond, coupling_cond, clock_duration, clock_decay, coupling_loops, out_couple_slots, inp_slots, inp_recv_slots, out_slots, out_recv_slots, s_major, cur_flt) in [
// total slot use is L*(A + Yc + Yl + 1),
// where L is the "coupling loops" and A is the inp_slots (half "asymmetric loops"),
// Yc is out_couple_slots, Yl is out_slots
// e.g. L= 6, Yc=2, A=2, Yl=2 gives 6*7 = 42
// e.g. L= 7, Yc=1, A=2, Yl=2 gives 7*6 = 42
// e.g. L= 8, Yc=1, A=2, Yl=1 gives 8*5 = 40
// special case of A=0 is L*(2 + 1)
// areas of focus (annotated further below)
("pos", 2e3, 2e4, ps(2000), ps(100), 4, 1, 8, 1, 0, 0, um(400), 2e10),
("pos", 2e3, 2e4, ps(2000), ps(100), 4, 1, 6, 2, 0, 0, um(400), 2e10),
("pos", 2e3, 2e4, ps(2000), ps(100), 4, 2, 6, 2, 0, 0, um(400), 2e10),
("pos", 2e3, 2e4, ps(2000), ps(100), 4, 1, 6, 1, 0, 0, um(400), 2e10),
("pos", 2e3, 2e4, ps(2000), ps(100), 5, 2, 4, 1, 0, 0, um(400), 2e10),
("pos", 2e3, 2e4, ps(2000), ps(100), 8, 1, 2, 1, 0, 0, um(400), 2e10),
// // (16700, -18500) -> (-2600, -16200); slope: 0.38 (0.47 peak)
// // ("neg", 2e3, 2e4, ps(2000), ps(100), 6, 2, 2, 1, 2, 1, um(400), 2e10), // asym load
// // (17200, -19500) -> (8000, -14400); slope: 0.60 (0.70 peak)
// ("neg", 2e3, 2e4, ps(2000), ps(100), 8, 1, 2, 1, 1, 1, um(400), 2e10), // sym load, min
// // (16900, -18200) -> (1100, -14600)
// // outer is -> (10200, -2900) -- PRETTY GOOD BY COMPARISON
// // ("pos", 2e3, 2e4, ps(2000), ps(100), 6, 2, 2, 1, 2, 1, um(400), 2e10), // asym load
// // (17500, -19200) -> (14200, -12600)
// ("pos", 2e3, 2e4, ps(2000), ps(100), 8, 1, 2, 1, 1, 1, um(400), 2e10), // sym load, min
// (16800, -17800) -> (-1300, -13300)
// outer is -> (8000, -6100) -- more exterior transition than interior
("pos", 2e3, 2e4, ps(2000), ps(100), 5, 1, 2, 1, 4, 1, um(400), 2e10),
// TODO
("pos", 2e3, 2e4, ps(2000), ps(100), 5, 1, 1, 1, 4, 1, um(400), 2e10),
// TODO
("pos", 2e3, 2e4, ps(2000), ps(100), 4, 1, 4, 1, 4, 1, um(400), 2e10),
// // SUS: too many slots (48)
// // (17700, -19400) -> (2400, -13300)
// // ("pos", 2e3, 2e4, ps(2000), ps(100), 8, 1, 2, 1, 1, 2, um(400), 2e10),
// // (17300, -18700) -> (15500, -12100)
// ("pos", 2e3, 2e4, ps(2000), ps(100), 7, 1, 2, 1, 1, 2, um(400), 2e10),
// // recreating 53-xx
// // (17400, -19400) -> (13500, -16600)
// ("pos", 2e3, 2e4, ps(2000), ps(100), 8, 2, 2, 1, 0, 0, um(400), 2e10),
// // 53-xx with less out-core coupling
// // (17400, -19100) -> (16800, -14700); slope: 0.90 (0.98 peak)
// ("pos", 2e3, 2e4, ps(2000), ps(100), 8, 1, 2, 1, 0, 0, um(400), 2e10),
// // (17800, -19000) -> (16800, -13400)
// ("pos", 2e3, 2e4, ps(2000), ps(100), 6, 1, 4, 1, 0, 0, um(400), 2e10),
// // **SELECT: (17400, -18400) -> (15800, -16300); slope: 0.93 (0.97 peak)
// ("pos", 2e3, 2e4, ps(2000), ps(100), 5, 2, 4, 1, 0, 0, um(400), 2e10),
// // (17500, -18200) -> (10700, -15000)
// ("pos", 2e3, 2e4, ps(2000), ps(100), 4, 2, 6, 1, 0, 0, um(400), 2e10),
// (17400, -1800) -> (15800, -12000); slope: 0.82 (1.01 peak)
// ("pos", 2e3, 2e4, ps(2000), ps(100), 4, 1, 6, 1, 0, 0, um(400), 2e10),
// (18100, -18800) -> (15900, -12800)
("pos", 2e3, 2e4, ps(2000), ps(100), 4, 1, 8, 1, 0, 0, um(400), 2e10),
// (17500, -18200) -> (10400, -11800); slope: 0.62
// ("pos", 2e3, 2e4, ps(2000), ps(100), 4, 1, 6, 1, 1, 1, um(400), 2e10),
// (17100, -18100) -> (16700, -11800)
("pos", 2e3, 2e4, ps(2000), ps(100), 4, 1, 6, 2, 0, 0, um(400), 2e10),
// **SELECT: (17100, -18400) -> (16400, -15900)
("pos", 2e3, 2e4, ps(2000), ps(100), 4, 2, 6, 2, 0, 0, um(400), 2e10),
// completely decouple the output cores from eachother
// (18200, -19500) -> (16700, 6500)
// ("pos", 2e3, 2e4, ps(2000), ps(100), 7, 0, 4, 1, 0, 0, um(400), 2e10),
] {
for &(init_flt_a, init_flt_b) in init_set {
// each core is coupled to 1, 2, or 3 others + control slots
// M2 -> M1 & M3 -> M4 are asymmetric (tx input -> output)
// M1 <-> M4 is symmetrics (outputs)
// M1 -> M0, M4 -> M5 may be asym or not
let slots_into_out = inp_slots.max(inp_recv_slots);
let slots_out_of_out = out_slots.max(out_recv_slots);
let slots_between_out = out_couple_slots;
let net_slots = slots_into_out + slots_out_of_out + slots_between_out + 1;
let mut params = params_v2
.with_clock_phase_duration(clock_duration)
.with_clock_decay(clock_decay)
.with_ctl_conductivity(ctl_cond)
.with_coupling_conductivity(coupling_cond)
.with_s_major(s_major)
.with_coupling_loops(coupling_loops)
.with_input_magnitude(cur_flt)
// control loops
.with_coupling(0, 0, 0, net_slots, CouplingMethod::Control)
.with_coupling(1, 1, 0, net_slots, CouplingMethod::Control)
.with_coupling(2, 2, 0, net_slots, CouplingMethod::Control)
.with_coupling(3, 3, 0, net_slots, CouplingMethod::Control)
.with_coupling(4, 4, 0, net_slots, CouplingMethod::Control)
.with_coupling(5, 5, 0, net_slots, CouplingMethod::Control)
;
if inp_slots != inp_recv_slots {
// couple input M2 -> output M1
params = couple_asymmetric_buffer_bi(&params, 1 /* low core */, inp_recv_slots/2, inp_slots/2, 1 /* slot offset */, net_slots);
// couple input M3 -> output M4
params = couple_asymmetric_buffer_bi(&params, 3 /* low core */, inp_slots/2, inp_recv_slots/2, 1 /* slot offset */, net_slots);
} else {
for i in 0..inp_slots {
params = params.with_coupling(1, 2, 1+i, net_slots, CouplingMethod::Direct);
params = params.with_coupling(3, 4, 1+i, net_slots, CouplingMethod::Direct);
}
}
if out_slots != out_recv_slots {
// couple output M1 -> load M0
params = couple_asymmetric_buffer_bi(&params, 0 /* low core */, out_recv_slots/2, out_slots/2, 1 + slots_into_out /* slot offset */, net_slots);
// couple output M4 -> load M5
params = couple_asymmetric_buffer_bi(&params, 4 /* low core */, out_slots/2, out_recv_slots/2, 1 + slots_into_out /* slot offset */, net_slots);
} else {
for i in 0..out_slots {
params = params.with_coupling(0, 1, 1+slots_into_out+i, net_slots, CouplingMethod::Direct);
params = params.with_coupling(4, 5, 1+slots_into_out+i, net_slots, CouplingMethod::Direct);
}
}
for i in 0..slots_between_out {
// couple output M1 to output M4
params = params.with_coupling(1, 4, 1+slots_into_out+slots_out_of_out+i, net_slots, CouplingMethod::Outside);
}
let name = gate_name_custom_2_input(
&params,
&format!("61-buf-{init_out}_out-{inp_slots}_{inp_recv_slots}windings_in-{out_slots}_{out_recv_slots}windings_out-{slots_between_out}windings_couple"),
init_flt_a,
init_flt_b,
);
let init_flt_out = match init_out {
"pos" => 1.0,
"neg" => -1.0,
_ => panic!(),
};
run_sim(
&name,
drive_map_complementary_buf_center_inputs_61(init_flt_a, init_flt_b, init_flt_out),
params,
);
}
}
}
}
}