Compare commits

...

3 Commits

Author SHA1 Message Date
colin 38aa677aad app: stacked_cores: complete some 59-xx runs
they don't look super insightful/promising.
2022-11-17 01:17:42 +00:00
colin a2a851b26f app: stacked_cores: 58-xx: try merging cores via a complementary buffer
results aren't any better than the earlier complementary buffers
2022-11-16 12:29:27 +00:00
colin 9d4e245388 app: stacked_cores: new 58-xx sim which tries a complementary buffer into a pre-charged output 2022-11-11 22:59:57 +00:00
5 changed files with 1108 additions and 10 deletions

View File

@ -0,0 +1,43 @@
#!/usr/bin/env python3
from natsort import natsorted
from stacked_cores_52xx import *
from stacked_cores_52xx_plotters import *
def extract_58xx_tx(meas_rows: list) -> tuple:
"""
extracts a flat tuple of input/output M mappings from a 58xx run
"""
return (
meas_rows[0].m[0], # input (neg)
meas_rows[0].m[2], # I/O (pos)
meas_rows[0].m[3], # I/O (neg)
meas_rows[0].m[5], # input (pos)
meas_rows[1].m[2], # output (pos)
meas_rows[1].m[3], # output (neg)
0.5 * (meas_rows[1].m[2] - meas_rows[1].m[3]) # output (diff)
)
buf_gates = read_db(lambda name: name.startswith("58-"))
sweep_buf_inputs = lambda points=101: [(-m, m, -m, m, None, None, None) for m in sweep_1d(points)]
sweep_mpos = lambda mneg, points=101: [(mneg, m, mneg, m, None, None, None) for m in sweep_1d(points)]
for name, meas in natsorted(buf_gates.items()):
# sweep Mneg = -Mpos
# trace = eval_series(meas, sweep_buf_inputs(41), extract_58xx_tx, y_idx=6)
# plot(f"{name}", "Mpos", trace)
# plot_slope(f"slope {name}", "Mpos", trace)
# sweep M0 with M1 fixed constant (to check for some `max(M+, M-)`-like effect
trace = eval_series(meas, sweep_mpos(-5000, 41), extract_58xx_tx, y_idx=6)
plot(f"{name}", "Mneg=-5000", trace)
plot_slope(f"slope {name}", "Mneg=-5000", trace)
trace = eval_series(meas, sweep_mpos(5000, 41), extract_58xx_tx, y_idx=6)
plot(f"{name}", "Mneg=5000", trace)
plot_slope(f"slope {name}", "Mneg=5000", 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" }
PREFIXES = { "52", "53", "54", "55", "56", "57", "58", "59" }
def times_of_interest(sim_name: str) -> list:
# could be more intelligent, extracting e.g. the clock duration from the name
@ -27,6 +27,12 @@ def times_of_interest(sim_name: str) -> list:
return [4e-9, 6e-9]
if sim_name.startswith("57-"):
return [4e-9, 6e-9]
if sim_name.startswith("58-"):
return [4e-9, 6e-9]
if sim_name.startswith("59-buf-inner_input-"):
return [2e-9, 4e-9]
if sim_name.startswith("59-buf-edge_input-"):
return [4e-9, 6e-9]
## USER-FACING FUNCTIONS

View File

@ -2592,4 +2592,728 @@ DB = {
MeasRow(6e-09, [-28765, 3057, -28922, -28773, -10817, -28781]),
],
}),
'58-buf-0.0004rad-2000ctl_cond-20000coupling_cond-2000ps-100ps-4ctl-4coupling-5_1_5_1_winding-2e10-drive-': ParameterizedMeas({
(-1.000, 1.000,): [
MeasRow(4e-09, [ 16825, -17294, -17292, 16243, -17747, -17703]),
MeasRow(6e-09, [-27897, -5218, -16601, 14065, -12827, -27939]),
],
(-0.060, -0.060,): [
MeasRow(4e-09, [ -5092, -17433, -4412, -4484, -17435, -5190]),
MeasRow(6e-09, [-27905, -9769, -5037, -5081, -9860, -27902]),
],
(-0.040, -0.070,): [
MeasRow(4e-09, [ -8560, -17434, 2047, -8423, -17437, 1724]),
MeasRow(6e-09, [-27909, -10542, 1050, -8810, -8342, -27895]),
],
(-0.020, -0.080,): [
MeasRow(4e-09, [-12000, -17434, 4962, -12190, -17437, 5551]),
MeasRow(6e-09, [-27911, -11335, 3817, -12335, -7550, -27896]),
],
(-0.010, -0.090,): [
MeasRow(4e-09, [-15347, -17441, 6161, -15535, -17446, 6011]),
MeasRow(6e-09, [-27927, -12154, 5034, -15358, -7519, -27898]),
],
( 0.000, 0.000,): [
MeasRow(4e-09, [ 6637, -17439, 3593, 3649, -17442, 6579]),
MeasRow(6e-09, [-27891, -6977, 2102, 2136, -7044, -27889]),
],
( 0.010, -0.110,): [
MeasRow(4e-09, [-17064, -17662, 8613, -17251, -17679, 6770]),
MeasRow(6e-09, [-27929, -12725, 7365, -16423, -7600, -27897]),
],
( 0.010, -0.100,): [
MeasRow(4e-09, [-16619, -17578, 8090, -16768, -17587, 6789]),
MeasRow(6e-09, [-27934, -12565, 6883, -16177, -7506, -27896]),
],
( 0.010, -0.010,): [
MeasRow(4e-09, [ 6228, -17439, 4693, 2510, -17441, 6930]),
MeasRow(6e-09, [-27892, -7046, 3083, 1140, -7004, -27888]),
],
( 0.020, -0.020,): [
MeasRow(4e-09, [ 5760, -17439, 5617, 1481, -17441, 7277]),
MeasRow(6e-09, [-27893, -7142, 3913, 256, -6971, -27887]),
],
( 0.030, -0.110,): [
MeasRow(4e-09, [-17064, -17663, 10372, -17254, -17676, 7527]),
MeasRow(6e-09, [-27930, -12694, 8929, -16420, -7462, -27894]),
],
( 0.030, -0.030,): [
MeasRow(4e-09, [ 4798, -17440, 6514, 457, -17441, 7647]),
MeasRow(6e-09, [-27892, -7354, 4735, -616, -6932, -27886]),
],
( 0.040, -0.040,): [
MeasRow(4e-09, [ 1809, -17439, 7520, -647, -17441, 8057]),
MeasRow(6e-09, [-27893, -8020, 5749, -1586, -6866, -27884]),
],
( 0.050, -0.050,): [
MeasRow(4e-09, [ -1607, -17438, 8665, -2199, -17441, 8526]),
MeasRow(6e-09, [-27898, -8784, 6898, -2966, -6786, -27884]),
],
( 0.060, -0.140,): [
MeasRow(4e-09, [-17370, -17715, 14259, -17395, -17639, 8956]),
MeasRow(6e-09, [-27931, -12712, 12289, -16558, -7176, -27893]),
],
( 0.060, -0.120,): [
MeasRow(4e-09, [-17297, -17700, 13641, -17399, -17662, 8983]),
MeasRow(6e-09, [-27931, -12695, 11760, -16539, -7183, -27893]),
],
( 0.060, -0.060,): [
MeasRow(4e-09, [ -5088, -17437, 9985, -5434, -17439, 9062]),
MeasRow(6e-09, [-27901, -9583, 8170, -5900, -6728, -27886]),
],
( 0.070, -0.070,): [
MeasRow(4e-09, [ -8556, -17437, 11859, -8900, -17438, 9734]),
MeasRow(6e-09, [-27908, -10378, 9919, -9065, -6657, -27891]),
],
( 0.080, -0.130,): [
MeasRow(4e-09, [-17347, -17694, 15116, -17282, -17582, 12127]),
MeasRow(6e-09, [-27931, -12672, 13046, -16515, -6442, -27898]),
],
( 0.080, -0.080,): [
MeasRow(4e-09, [-11998, -17428, 14545, -12387, -17438, 12132]),
MeasRow(6e-09, [-27911, -11147, 12355, -12246, -6229, -27894]),
],
( 0.090, -0.130,): [
MeasRow(4e-09, [-17342, -17683, 15551, -17204, -17532, 14744]),
MeasRow(6e-09, [-27930, -12666, 13443, -16484, -5841, -27889]),
],
( 0.100, -0.160,): [
MeasRow(4e-09, [-17376, -17692, 15827, -17160, -17472, 15663]),
MeasRow(6e-09, [-27931, -12682, 13694, -16467, -5610, -27892]),
],
( 0.100, -0.100,): [
MeasRow(4e-09, [-16591, -17514, 15978, -16376, -17384, 15672]),
MeasRow(6e-09, [-27933, -12358, 13796, -15847, -5531, -27890]),
],
( 0.110, -0.180,): [
MeasRow(4e-09, [-17397, -17697, 15856, -17150, -17426, 16117]),
MeasRow(6e-09, [-27931, -12694, 13725, -16467, -5490, -27898]),
],
( 0.110, -0.140,): [
MeasRow(4e-09, [-17352, -17675, 15901, -17109, -17410, 16121]),
MeasRow(6e-09, [-27930, -12661, 13761, -16437, -5476, -27898]),
],
( 0.120, -0.120,): [
MeasRow(4e-09, [-17274, -17649, 16004, -17027, -17363, 16345]),
MeasRow(6e-09, [-27930, -12618, 13845, -16371, -5401, -27897]),
],
( 0.130, -0.150,): [
MeasRow(4e-09, [-17360, -17673, 15985, -17080, -17366, 16391]),
MeasRow(6e-09, [-27931, -12660, 13834, -16418, -5394, -27896]),
],
( 0.130, -0.130,): [
MeasRow(4e-09, [-17333, -17659, 16018, -17055, -17356, 16392]),
MeasRow(6e-09, [-27930, -12638, 13858, -16397, -5386, -27896]),
],
( 0.140, -0.160,): [
MeasRow(4e-09, [-17370, -17675, 16015, -17079, -17359, 16411]),
MeasRow(6e-09, [-27930, -12663, 13859, -16418, -5384, -27896]),
],
( 0.150, -0.150,): [
MeasRow(4e-09, [-17357, -17666, 16067, -17055, -17345, 16428]),
MeasRow(6e-09, [-27931, -12651, 13903, -16400, -5368, -27896]),
],
( 0.170, -0.170,): [
MeasRow(4e-09, [-17378, -17671, 16107, -17057, -17335, 16456]),
MeasRow(6e-09, [-27931, -12662, 13940, -16406, -5356, -27896]),
],
( 0.180, -0.180,): [
MeasRow(4e-09, [-17388, -17674, 16120, -17059, -17331, 16470]),
MeasRow(6e-09, [-27931, -12666, 13950, -16407, -5349, -27896]),
],
( 0.200, -0.200,): [
MeasRow(4e-09, [-17407, -17678, 16143, -17064, -17325, 16495]),
MeasRow(6e-09, [-27932, -12672, 13969, -16411, -5338, -27896]),
],
( 0.230, -0.230,): [
MeasRow(4e-09, [-17430, -17687, 16148, -17080, -17319, 16523]),
MeasRow(6e-09, [-27931, -12686, 13978, -16430, -5328, -27895]),
],
( 0.250, -0.250,): [
MeasRow(4e-09, [-17443, -17691, 16151, -17090, -17315, 16539]),
MeasRow(6e-09, [-27932, -12691, 13978, -16434, -5321, -27895]),
],
( 0.300, -0.300,): [
MeasRow(4e-09, [-17475, -17698, 16164, -17117, -17311, 16574]),
MeasRow(6e-09, [-27931, -12706, 13994, -16458, -5311, -27895]),
],
( 1.000, -1.000,): [
MeasRow(4e-09, [-17698, -17741, 16246, -17283, -17301, 16826]),
MeasRow(6e-09, [-27942, -12798, 14081, -16595, -5259, -27893]),
],
}),
'58-buf-0.0004rad-2000ctl_cond-20000coupling_cond-2000ps-100ps-8ctl-8coupling-3_1_3_1_winding-1e10-drive-': ParameterizedMeas({
(-1.000, 1.000,): [
MeasRow(4e-09, [ 16996, -18409, -17937, 16015, -18875, -18865]),
MeasRow(6e-09, [-30384, -3269, -16929, 13723, -13446, -30388]),
],
( 1.000, -1.000,): [
MeasRow(4e-09, [-18866, -18866, 16010, -17936, -18400, 16983]),
MeasRow(6e-09, [-30387, -13468, 13739, -16930, -3125, -30386]),
],
}),
'58-buf-0.0004rad-2000ctl_cond-20000coupling_cond-2000ps-100ps-8ctl-8coupling-3_1_3_1_winding-5e9-drive-': ParameterizedMeas({
(-1.000, 1.000,): [
MeasRow(4e-09, [ 16879, -18197, -17829, 15995, -18674, -18610]),
MeasRow(6e-09, [-29641, -4802, -16866, 14323, -14315, -29648]),
],
(-0.060, -0.060,): [
MeasRow(4e-09, [ 3987, -18442, 2755, 2899, -18439, 4100]),
MeasRow(6e-09, [-29641, -7996, 1774, 1734, -7825, -29644]),
],
(-0.040, -0.070,): [
MeasRow(4e-09, [ 2934, -18443, 4360, 1619, -18438, 5099]),
MeasRow(6e-09, [-29643, -8123, 2839, 921, -7687, -29645]),
],
(-0.020, -0.080,): [
MeasRow(4e-09, [ 1478, -18444, 5794, 510, -18436, 5894]),
MeasRow(6e-09, [-29642, -8439, 3983, -18, -7511, -29646]),
],
(-0.010, -0.090,): [
MeasRow(4e-09, [ -98, -18444, 6361, -471, -18436, 6267]),
MeasRow(6e-09, [-29642, -8861, 4501, -930, -7427, -29646]),
],
( 0.000, 0.000,): [
MeasRow(4e-09, [ 6732, -18446, 4443, 4576, -18442, 6850]),
MeasRow(6e-09, [-29643, -7140, 3161, 3092, -6953, -29645]),
],
( 0.010, -0.110,): [
MeasRow(4e-09, [ -3412, -18442, 7242, -3635, -18433, 7024]),
MeasRow(6e-09, [-29642, -9783, 5389, -3942, -7259, -29645]),
],
( 0.010, -0.100,): [
MeasRow(4e-09, [ -1741, -18444, 7204, -1993, -18434, 7027]),
MeasRow(6e-09, [-29642, -9299, 5280, -2371, -7241, -29645]),
],
( 0.010, -0.010,): [
MeasRow(4e-09, [ 6404, -18446, 5329, 3685, -18441, 7176]),
MeasRow(6e-09, [-29643, -7114, 3671, 2573, -6981, -29645]),
],
( 0.020, -0.020,): [
MeasRow(4e-09, [ 6078, -18447, 6210, 2817, -18440, 7505]),
MeasRow(6e-09, [-29643, -7099, 4210, 2014, -6990, -29644]),
],
( 0.030, -0.110,): [
MeasRow(4e-09, [ -3409, -18442, 8010, -3641, -18433, 7777]),
MeasRow(6e-09, [-29642, -9750, 6050, -3948, -7059, -29644]),
],
( 0.030, -0.030,): [
MeasRow(4e-09, [ 5720, -18448, 7071, 1989, -18440, 7842]),
MeasRow(6e-09, [-29643, -7128, 4832, 1351, -6951, -29644]),
],
( 0.040, -0.040,): [
MeasRow(4e-09, [ 5329, -18449, 7855, 1276, -18439, 8189]),
MeasRow(6e-09, [-29642, -7194, 5465, 708, -6879, -29643]),
],
( 0.050, -0.050,): [
MeasRow(4e-09, [ 4876, -18449, 8447, 813, -18438, 8548]),
MeasRow(6e-09, [-29641, -7294, 5962, 287, -6796, -29643]),
],
( 0.060, -0.140,): [
MeasRow(4e-09, [ -8550, -18440, 9312, -8760, -18431, 8899]),
MeasRow(6e-09, [-29644, -11253, 7525, -8895, -6809, -29643]),
],
( 0.060, -0.120,): [
MeasRow(4e-09, [ -5107, -18442, 9212, -5340, -18433, 8903]),
MeasRow(6e-09, [-29642, -10215, 7199, -5586, -6780, -29643]),
],
( 0.060, -0.060,): [
MeasRow(4e-09, [ 4287, -18449, 8921, 526, -18437, 8917]),
MeasRow(6e-09, [-29641, -7443, 6380, 31, -6708, -29643]),
],
( 0.070, -0.070,): [
MeasRow(4e-09, [ 3031, -18448, 9366, 275, -18436, 9290]),
MeasRow(6e-09, [-29642, -7795, 6830, -198, -6616, -29643]),
],
( 0.080, -0.130,): [
MeasRow(4e-09, [ -6825, -18441, 10048, -7055, -18433, 9658]),
MeasRow(6e-09, [-29641, -10697, 8039, -7241, -6599, -29643]),
],
( 0.080, -0.080,): [
MeasRow(4e-09, [ 1526, -18446, 9801, -2, -18437, 9666]),
MeasRow(6e-09, [-29642, -8218, 7285, -459, -6523, -29643]),
],
( 0.090, -0.130,): [
MeasRow(4e-09, [ -6824, -18441, 10445, -7059, -18433, 10040]),
MeasRow(6e-09, [-29642, -10682, 8383, -7243, -6499, -29643]),
],
( 0.100, -0.160,): [
MeasRow(4e-09, [-11983, -18440, 11120, -12200, -18432, 10422]),
MeasRow(6e-09, [-29640, -12255, 9389, -12225, -6437, -29644]),
],
( 0.100, -0.100,): [
MeasRow(4e-09, [ -1722, -18444, 10666, -2030, -18437, 10429]),
MeasRow(6e-09, [-29642, -9141, 8216, -2394, -6350, -29644]),
],
( 0.110, -0.180,): [
MeasRow(4e-09, [-15297, -18458, 12172, -15498, -18457, 10807]),
MeasRow(6e-09, [-29644, -13272, 10611, -15255, -6376, -29645]),
],
( 0.110, -0.140,): [
MeasRow(4e-09, [ -8545, -18440, 11339, -8783, -18433, 10815]),
MeasRow(6e-09, [-29644, -11181, 9301, -8908, -6310, -29645]),
],
( 0.120, -0.120,): [
MeasRow(4e-09, [ -5100, -18441, 11581, -5363, -18435, 11212]),
MeasRow(6e-09, [-29642, -10118, 9237, -5598, -6178, -29646]),
],
( 0.130, -0.150,): [
MeasRow(4e-09, [-10264, -18435, 12680, -10528, -18432, 11611]),
MeasRow(6e-09, [-29642, -11658, 10610, -10595, -6116, -29646]),
],
( 0.130, -0.130,): [
MeasRow(4e-09, [ -6819, -18440, 12173, -7081, -18434, 11614]),
MeasRow(6e-09, [-29642, -10612, 9878, -7255, -6088, -29646]),
],
( 0.140, -0.160,): [
MeasRow(4e-09, [-11979, -18402, 13590, -12285, -18432, 12023]),
MeasRow(6e-09, [-29640, -12140, 11565, -12295, -6022, -29647]),
],
( 0.150, -0.150,): [
MeasRow(4e-09, [-10262, -18382, 13902, -10595, -18431, 12445]),
MeasRow(6e-09, [-29642, -11572, 11676, -10655, -5900, -29647]),
],
( 0.170, -0.170,): [
MeasRow(4e-09, [-13679, -18250, 15096, -14114, -18387, 13822]),
MeasRow(6e-09, [-29641, -12508, 13051, -14046, -5540, -29645]),
],
( 0.180, -0.180,): [
MeasRow(4e-09, [-15275, -18195, 15449, -15544, -18335, 14558]),
MeasRow(6e-09, [-29644, -12953, 13529, -15347, -5324, -29642]),
],
( 0.200, -0.200,): [
MeasRow(4e-09, [-16862, -18322, 15831, -16724, -18263, 15452]),
MeasRow(6e-09, [-29648, -13543, 14018, -16155, -5058, -29641]),
],
( 0.230, -0.230,): [
MeasRow(4e-09, [-17823, -18575, 15870, -17303, -18194, 16128]),
MeasRow(6e-09, [-29643, -14042, 14154, -16536, -4855, -29647]),
],
( 0.250, -0.250,): [
MeasRow(4e-09, [-18141, -18679, 15814, -17521, -18177, 16353]),
MeasRow(6e-09, [-29641, -14223, 14133, -16680, -4793, -29647]),
],
( 0.300, -0.300,): [
MeasRow(4e-09, [-18298, -18708, 15819, -17626, -18162, 16502]),
MeasRow(6e-09, [-29642, -14295, 14150, -16753, -4748, -29646]),
],
( 1.000, -1.000,): [
MeasRow(4e-09, [-18610, -18668, 15994, -17830, -18188, 16868]),
MeasRow(6e-09, [-29645, -14337, 14336, -16866, -4683, -29644]),
],
}),
'58-buf-0.0004rad-2000ctl_cond-20000coupling_cond-2000ps-100ps-13ctl-13coupling-1_1_1_1_winding-5e9-drive-': ParameterizedMeas({
(-1.000, 1.000,): [
MeasRow(4e-09, [ 16191, -18730, -18443, 16092, -18727, -18335]),
MeasRow(6e-09, [-30153, 5202, -17632, 14459, -12072, -30161]),
],
(-0.080, -0.080,): [
MeasRow(4e-09, [ -8612, -18611, -6152, -6161, -18612, -8623]),
MeasRow(6e-09, [-30154, -7499, -8835, -8838, -7504, -30156]),
],
(-0.060, -0.060,): [
MeasRow(4e-09, [ -2381, -18621, -993, -999, -18622, -2390]),
MeasRow(6e-09, [-30154, -4436, -4708, -4706, -4443, -30156]),
],
(-0.040, -0.080,): [
MeasRow(4e-09, [ -8616, -18624, 4725, -7172, -18624, 3809]),
MeasRow(6e-09, [-30154, -7490, 2000, -12325, -1140, -30154]),
],
(-0.040, -0.070,): [
MeasRow(4e-09, [ -5500, -18625, 4546, -4310, -18627, 3808]),
MeasRow(6e-09, [-30154, -5951, 1243, -9348, -1222, -30154]),
],
(-0.040, -0.040,): [
MeasRow(4e-09, [ 3809, -18635, 3974, 3972, -18637, 3803]),
MeasRow(6e-09, [-30153, -1384, -793, -789, -1390, -30155]),
],
(-0.020, -0.080,): [
MeasRow(4e-09, [ -8616, -18629, 8047, -7670, -18633, 9763]),
MeasRow(6e-09, [-30154, -7486, 5629, -14102, 1953, -30153]),
],
(-0.010, -0.090,): [
MeasRow(4e-09, [-11709, -18629, 8588, -10577, -18635, 12426]),
MeasRow(6e-09, [-30153, -9044, 7044, -15975, 3442, -30156]),
],
( 0.000, 0.000,): [
MeasRow(4e-09, [ 13609, -18575, 8041, 8043, -18577, 13609]),
MeasRow(6e-09, [-30152, 3450, 1800, 1808, 3449, -30153]),
],
( 0.010, -0.130,): [
MeasRow(4e-09, [-17961, -19318, 9688, -18307, -19096, 14090]),
MeasRow(6e-09, [-30155, -12596, 9294, -17404, 3885, -30153]),
],
( 0.010, -0.110,): [
MeasRow(4e-09, [-16817, -18874, 9470, -16083, -18529, 13929]),
MeasRow(6e-09, [-30160, -11716, 8969, -17056, 4387, -30153]),
],
( 0.010, -0.100,): [
MeasRow(4e-09, [-14735, -18641, 9358, -13453, -18473, 13924]),
MeasRow(6e-09, [-30156, -10534, 8508, -16644, 4435, -30153]),
],
( 0.010, -0.010,): [
MeasRow(4e-09, [ 12430, -18653, 8440, 7627, -18488, 13942]),
MeasRow(6e-09, [-30155, 2801, 2389, 1271, 3724, -30153]),
],
( 0.020, -0.020,): [
MeasRow(4e-09, [ 9766, -18650, 8832, 7157, -18418, 14168]),
MeasRow(6e-09, [-30151, 1465, 3248, 520, 4006, -30153]),
],
( 0.030, -0.110,): [
MeasRow(4e-09, [-16816, -18872, 10108, -16081, -18431, 14291]),
MeasRow(6e-09, [-30160, -11704, 9571, -17065, 4646, -30154]),
],
( 0.030, -0.030,): [
MeasRow(4e-09, [ 6845, -18646, 9226, 5903, -18377, 14297]),
MeasRow(6e-09, [-30154, 19, 4114, -955, 4195, -30154]),
],
( 0.040, -0.040,): [
MeasRow(4e-09, [ 3815, -18641, 9635, 3512, -18337, 14412]),
MeasRow(6e-09, [-30153, -1440, 5006, -3493, 4346, -30154]),
],
( 0.050, -0.050,): [
MeasRow(4e-09, [ 731, -18636, 10064, 810, -18298, 14520]),
MeasRow(6e-09, [-30154, -2918, 6019, -6355, 4506, -30155]),
],
( 0.060, -0.180,): [
MeasRow(4e-09, [-18334, -19425, 12510, -19155, -19283, 14856]),
MeasRow(6e-09, [-30154, -12786, 11785, -17564, 4021, -30155]),
],
( 0.060, -0.140,): [
MeasRow(4e-09, [-18147, -19369, 11863, -18763, -19134, 14848]),
MeasRow(6e-09, [-30154, -12673, 11237, -17481, 4157, -30155]),
],
( 0.060, -0.120,): [
MeasRow(4e-09, [-17575, -19125, 11659, -17448, -18652, 14735]),
MeasRow(6e-09, [-30159, -12228, 11051, -17286, 4605, -30155]),
],
( 0.060, -0.060,): [
MeasRow(4e-09, [ -2375, -18631, 10516, -2011, -18259, 14623]),
MeasRow(6e-09, [-30155, -4420, 7074, -9328, 4660, -30155]),
],
( 0.070, -0.070,): [
MeasRow(4e-09, [ -5494, -18627, 11092, -4890, -18222, 14723]),
MeasRow(6e-09, [-30154, -5928, 8233, -12313, 4804, -30155]),
],
( 0.080, -0.130,): [
MeasRow(4e-09, [-17890, -19196, 13279, -18130, -18826, 14982]),
MeasRow(6e-09, [-30156, -12382, 12378, -17378, 4518, -30156]),
],
( 0.080, -0.080,): [
MeasRow(4e-09, [ -8611, -18603, 12323, -7830, -18187, 14823]),
MeasRow(6e-09, [-30155, -7415, 9993, -15093, 4932, -30155]),
],
( 0.090, -0.130,): [
MeasRow(4e-09, [-17854, -19128, 13924, -18055, -18768, 15066]),
MeasRow(6e-09, [-30156, -12291, 12863, -17361, 4604, -30156]),
],
( 0.100, -0.160,): [
MeasRow(4e-09, [-18156, -19158, 14409, -18690, -18987, 15167]),
MeasRow(6e-09, [-30153, -12424, 13217, -17491, 4445, -30156]),
],
( 0.100, -0.100,): [
MeasRow(4e-09, [-14722, -18387, 14634, -13798, -18121, 15026]),
MeasRow(6e-09, [-30156, -10189, 13249, -16702, 5188, -30156]),
],
( 0.110, -0.180,): [
MeasRow(4e-09, [-18154, -19057, 14958, -18588, -18942, 15241]),
MeasRow(6e-09, [-30154, -12318, 13609, -17503, 4537, -30156]),
],
( 0.110, -0.140,): [
MeasRow(4e-09, [-17970, -19024, 14829, -18288, -18816, 15247]),
MeasRow(6e-09, [-30154, -12216, 13507, -17394, 4631, -30156]),
],
( 0.120, -0.120,): [
MeasRow(4e-09, [-17357, -18619, 15599, -17127, -18366, 15301]),
MeasRow(6e-09, [-30159, -11582, 14044, -17203, 5080, -30156]),
],
( 0.130, -0.150,): [
MeasRow(4e-09, [-18004, -18871, 15499, -18235, -18775, 15410]),
MeasRow(6e-09, [-30153, -12075, 14010, -17417, 4763, -30156]),
],
( 0.130, -0.130,): [
MeasRow(4e-09, [-17699, -18712, 15711, -17595, -18539, 15402]),
MeasRow(6e-09, [-30156, -11806, 14147, -17277, 4967, -30156]),
],
( 0.140, -0.160,): [
MeasRow(4e-09, [-18048, -18853, 15615, -18259, -18775, 15490]),
MeasRow(6e-09, [-30153, -12077, 14107, -17442, 4808, -30156]),
],
( 0.150, -0.150,): [
MeasRow(4e-09, [-17988, -18799, 15713, -18141, -18720, 15553]),
MeasRow(6e-09, [-30153, -12000, 14176, -17407, 4882, -30156]),
],
( 0.170, -0.170,): [
MeasRow(4e-09, [-18068, -18810, 15740, -18233, -18742, 15638]),
MeasRow(6e-09, [-30154, -12043, 14204, -17457, 4914, -30156]),
],
( 0.180, -0.180,): [
MeasRow(4e-09, [-18087, -18812, 15747, -18254, -18746, 15669]),
MeasRow(6e-09, [-30154, -12053, 14211, -17473, 4927, -30155]),
],
( 0.200, -0.200,): [
MeasRow(4e-09, [-18114, -18812, 15760, -18284, -18753, 15716]),
MeasRow(6e-09, [-30154, -12064, 14223, -17497, 4947, -30155]),
],
( 0.220, -0.220,): [
MeasRow(4e-09, [-18129, -18809, 15776, -18297, -18755, 15754]),
MeasRow(6e-09, [-30155, -12069, 14235, -17508, 4965, -30155]),
],
( 0.230, -0.230,): [
MeasRow(4e-09, [-18134, -18807, 15783, -18301, -18756, 15770]),
MeasRow(6e-09, [-30155, -12070, 14240, -17513, 4974, -30155]),
],
( 0.250, -0.250,): [
MeasRow(4e-09, [-18144, -18803, 15799, -18309, -18756, 15798]),
MeasRow(6e-09, [-30154, -12071, 14252, -17521, 4989, -30155]),
],
( 0.300, -0.300,): [
MeasRow(4e-09, [-18165, -18794, 15838, -18321, -18755, 15862]),
MeasRow(6e-09, [-30155, -12072, 14281, -17536, 5023, -30155]),
],
( 1.000, -1.000,): [
MeasRow(4e-09, [-18335, -18725, 16092, -18442, -18732, 16189]),
MeasRow(6e-09, [-30158, -12074, 14459, -17634, 5200, -30153]),
],
}),
'59-buf-edge_input-0.0004rad-2000ctl_cond-20000coupling_cond-2000ps-100ps-6ctl-6coupling-1_1_5_1_winding-5e9-drive-': ParameterizedMeas({
(-1.000, 1.000,): [
MeasRow(4e-09, [-17310, -21348, -21214, 16433]),
MeasRow(6e-09, [-28793, -17980, -10178, -28773]),
],
( 0.000, 0.000,): [
MeasRow(4e-09, [ 950, -21396, -21396, 956]),
MeasRow(6e-09, [-28776, -16982, -16979, -28778]),
],
( 0.050, -0.050,): [
MeasRow(4e-09, [ 2222, -21398, -21396, 454]),
MeasRow(6e-09, [-28776, -16900, -16968, -28778]),
],
( 0.100, -0.100,): [
MeasRow(4e-09, [ 6829, -21402, -21394, -9]),
MeasRow(6e-09, [-28773, -15941, -17022, -28778]),
],
( 0.150, -0.150,): [
MeasRow(4e-09, [ 12509, -21403, -21388, -5512]),
MeasRow(6e-09, [-28774, -13652, -17365, -28779]),
],
( 0.200, -0.200,): [
MeasRow(4e-09, [ 15461, -21356, -21339, -12663]),
MeasRow(6e-09, [-28768, -11439, -17744, -28783]),
],
( 0.250, -0.250,): [
MeasRow(4e-09, [ 15976, -21303, -21349, -16597]),
MeasRow(6e-09, [-28774, -10481, -17942, -28792]),
],
( 0.300, -0.300,): [
MeasRow(4e-09, [ 16249, -21289, -21359, -17060]),
MeasRow(6e-09, [-28773, -10338, -17967, -28788]),
],
( 1.000, -1.000,): [
MeasRow(4e-09, [ 16435, -21213, -21349, -17310]),
MeasRow(6e-09, [-28771, -10181, -17980, -28793]),
],
}),
'59-buf-edge_input-0.0004rad-2000ctl_cond-20000coupling_cond-2000ps-100ps-6ctl-6coupling-5_1_1_1_winding-5e9-drive-': ParameterizedMeas({
(-1.000, 1.000,): [
MeasRow(4e-09, [-21117, -21589, -17443, 16645]),
MeasRow(6e-09, [-28784, -16744, 14743, -28762]),
],
( 0.000, 0.000,): [
MeasRow(4e-09, [ 12628, -19185, -19187, 12627]),
MeasRow(6e-09, [-28762, 7051, 7041, -28764]),
],
( 0.050, -0.050,): [
MeasRow(4e-09, [ 13975, -18770, -19664, 10139]),
MeasRow(6e-09, [-28766, 8660, 4681, -28766]),
],
( 0.100, -0.100,): [
MeasRow(4e-09, [ 14538, -18561, -19632, 3780]),
MeasRow(6e-09, [-28767, 9980, 82, -28765]),
],
( 0.150, -0.150,): [
MeasRow(4e-09, [ 15013, -18378, -19600, -2721]),
MeasRow(6e-09, [-28766, 11184, -4484, -28765]),
],
( 0.200, -0.200,): [
MeasRow(4e-09, [ 15425, -18218, -19574, -9200]),
MeasRow(6e-09, [-28766, 12293, -8964, -28766]),
],
( 0.250, -0.250,): [
MeasRow(4e-09, [ 15765, -18076, -19585, -15553]),
MeasRow(6e-09, [-28766, 13282, -13227, -28767]),
],
( 0.300, -0.300,): [
MeasRow(4e-09, [ 15929, -17867, -20574, -19492]),
MeasRow(6e-09, [-28765, 13867, -16131, -28776]),
],
( 1.000, -1.000,): [
MeasRow(4e-09, [ 16643, -17441, -21590, -21119]),
MeasRow(6e-09, [-28761, 14738, -16745, -28787]),
],
}),
'59-buf-edge_input-0.0004rad-2000ctl_cond-20000coupling_cond-2000ps-100ps-8ctl-8coupling-1_1_3_1_winding-5e9-drive-': ParameterizedMeas({
(-1.000, 1.000,): [
MeasRow(4e-09, [-17716, -21034, -20580, 16410]),
MeasRow(6e-09, [-29662, -17771, -6331, -29649]),
],
( 0.000, 0.000,): [
MeasRow(4e-09, [ 3383, -20950, -20951, 3518]),
MeasRow(6e-09, [-29650, -15491, -15377, -29653]),
],
( 0.050, -0.050,): [
MeasRow(4e-09, [ 9243, -20956, -20948, 731]),
MeasRow(6e-09, [-29647, -13121, -16690, -29654]),
],
( 0.100, -0.100,): [
MeasRow(4e-09, [ 14205, -20947, -20935, -2111]),
MeasRow(6e-09, [-29648, -10775, -16982, -29656]),
],
( 0.150, -0.150,): [
MeasRow(4e-09, [ 15422, -20859, -20856, -11065]),
MeasRow(6e-09, [-29645, -8271, -17414, -29659]),
],
( 0.200, -0.200,): [
MeasRow(4e-09, [ 15862, -20764, -20923, -16860]),
MeasRow(6e-09, [-29649, -6809, -17704, -29668]),
],
( 0.250, -0.250,): [
MeasRow(4e-09, [ 16149, -20736, -20982, -17429]),
MeasRow(6e-09, [-29649, -6602, -17741, -29663]),
],
( 0.300, -0.300,): [
MeasRow(4e-09, [ 16203, -20711, -20982, -17516]),
MeasRow(6e-09, [-29648, -6543, -17747, -29663]),
],
( 1.000, -1.000,): [
MeasRow(4e-09, [ 16410, -20579, -21035, -17715]),
MeasRow(6e-09, [-29647, -6333, -17766, -29667]),
],
}),
'59-buf-inner_input-0.0004rad-2000ctl_cond-20000coupling_cond-2000ps-100ps-6ctl-6coupling-1_1_5_1_winding-5e9-drive-': ParameterizedMeas({
(-1.000, 1.000,): [
MeasRow(2e-09, [-16780, -16945, 16657, -16468]),
MeasRow(4e-09, [-12343, -28758, -28755, -3232]),
],
( 0.000, 0.000,): [
MeasRow(2e-09, [-16769, 1852, 1873, -16769]),
MeasRow(4e-09, [ -7850, -28756, -28757, -7850]),
],
( 0.050, -0.050,): [
MeasRow(2e-09, [-16772, 3137, 733, -16766]),
MeasRow(4e-09, [ -7565, -28757, -28757, -8092]),
],
( 0.100, -0.100,): [
MeasRow(2e-09, [-16775, 4025, 75, -16764]),
MeasRow(4e-09, [ -7376, -28756, -28757, -8240]),
],
( 0.150, -0.150,): [
MeasRow(2e-09, [-16777, 4971, -619, -16761]),
MeasRow(4e-09, [ -7174, -28756, -28757, -8395]),
],
( 0.200, -0.200,): [
MeasRow(2e-09, [-16780, 6453, -1990, -16757]),
MeasRow(4e-09, [ -6827, -28756, -28757, -8682]),
],
( 0.250, -0.250,): [
MeasRow(2e-09, [-16785, 8458, -4049, -16753]),
MeasRow(4e-09, [ -6326, -28754, -28757, -9111]),
],
( 0.300, -0.300,): [
MeasRow(2e-09, [-16787, 10431, -6151, -16747]),
MeasRow(4e-09, [ -5802, -28757, -28756, -9566]),
],
( 1.000, -1.000,): [
MeasRow(2e-09, [-16465, 16655, -16949, -16786]),
MeasRow(4e-09, [ -3209, -28755, -28758, -12355]),
],
}),
'59-buf-inner_input-0.0004rad-2000ctl_cond-20000coupling_cond-2000ps-100ps-6ctl-6coupling-5_1_1_1_winding-5e9-drive-': ParameterizedMeas({
(-1.000, 1.000,): [
MeasRow(2e-09, [ -2358, -14791, 16965, -16583]),
MeasRow(4e-09, [ 6446, -28758, -28749, 16836]),
],
( 0.000, 0.000,): [
MeasRow(2e-09, [-17373, 11619, 11663, -17397]),
MeasRow(4e-09, [ 15194, -28759, -28760, 15194]),
],
( 0.050, -0.050,): [
MeasRow(2e-09, [-17568, 12482, 9712, -16985]),
MeasRow(4e-09, [ 15466, -28757, -28758, 14239]),
],
( 0.100, -0.100,): [
MeasRow(2e-09, [-17687, 13072, 7548, -16478]),
MeasRow(4e-09, [ 15618, -28756, -28759, 12941]),
],
( 0.150, -0.150,): [
MeasRow(2e-09, [-17654, 13618, 5664, -15972]),
MeasRow(4e-09, [ 15794, -28755, -28760, 11834]),
],
( 0.200, -0.200,): [
MeasRow(2e-09, [-17572, 14052, 4345, -15546]),
MeasRow(4e-09, [ 15945, -28754, -28758, 11096]),
],
( 0.250, -0.250,): [
MeasRow(2e-09, [-17492, 14404, 3281, -15119]),
MeasRow(4e-09, [ 16054, -28754, -28759, 10566]),
],
( 0.300, -0.300,): [
MeasRow(2e-09, [-17417, 14713, 2217, -14462]),
MeasRow(4e-09, [ 16143, -28754, -28759, 10230]),
],
( 1.000, -1.000,): [
MeasRow(2e-09, [-16582, 16963, -14771, -2430]),
MeasRow(4e-09, [ 16840, -28747, -28759, 6390]),
],
}),
'59-buf-inner_input-0.0004rad-2000ctl_cond-20000coupling_cond-2000ps-100ps-8ctl-8coupling-1_1_3_1_winding-5e9-drive-': ParameterizedMeas({
(-1.000, 1.000,): [
MeasRow(2e-09, [-17100, -17453, 16522, -16381]),
MeasRow(4e-09, [-10910, -29628, -29627, 5065]),
],
( 0.000, 0.000,): [
MeasRow(2e-09, [-16833, 3190, 3244, -16834]),
MeasRow(4e-09, [ -2084, -29627, -29627, -2168]),
],
( 0.020, -0.020,): [
MeasRow(2e-09, [-16835, 3976, 2482, -16832]),
MeasRow(4e-09, [ -1727, -29627, -29627, -2487]),
],
( 0.050, -0.050,): [
MeasRow(2e-09, [-16838, 5006, 1563, -16830]),
MeasRow(4e-09, [ -1270, -29627, -29627, -2857]),
],
( 0.070, -0.070,): [
MeasRow(2e-09, [-16839, 5506, 1161, -16829]),
MeasRow(4e-09, [ -1054, -29628, -29627, -3020]),
],
( 0.100, -0.100,): [
MeasRow(2e-09, [-16841, 6163, 670, -16827]),
MeasRow(4e-09, [ -776, -29628, -29627, -3221]),
],
( 0.120, -0.120,): [
MeasRow(2e-09, [-16842, 6590, 354, -16826]),
MeasRow(4e-09, [ -596, -29627, -29627, -3350]),
],
( 0.150, -0.150,): [
MeasRow(2e-09, [-16845, 7319, -240, -16824]),
MeasRow(4e-09, [ -284, -29627, -29627, -3588]),
],
( 0.200, -0.200,): [
MeasRow(2e-09, [-16849, 9050, -1940, -16820]),
MeasRow(4e-09, [ 485, -29625, -29627, -4256]),
],
( 0.250, -0.250,): [
MeasRow(2e-09, [-16854, 11030, -4077, -16815]),
MeasRow(4e-09, [ 1383, -29628, -29627, -5099]),
],
( 0.300, -0.300,): [
MeasRow(2e-09, [-16857, 12678, -6176, -16811]),
MeasRow(4e-09, [ 2169, -29628, -29626, -5945]),
],
( 1.000, -1.000,): [
MeasRow(2e-09, [-16379, 16518, -17460, -17104]),
MeasRow(4e-09, [ 5102, -29626, -29628, -10949]),
],
}),
}

View File

@ -4,7 +4,7 @@ import plotly.express as px
from pandas import DataFrame
import scipy.optimize as opt
unit_to_m = lambda u: -17000 + 34000 * u
unit_to_m = lambda u: -18000 + 36000 * u
sweep_1d = lambda points=101: [unit_to_m(x/(points-1)) for x in range(points)]
def plot(name: str, x_name: str, y_series: list):
@ -18,7 +18,7 @@ def plot_slope(name: str, x_name: str, y_series: list):
plot(name, x_name, slope)
def extract_slope(y_series: list):
dist = 2 * 34000 / (len(y_series) - 1)
dist = 2 * 36000 / (len(y_series) - 1)
known = [ (next - prev)/dist for (prev, next) in zip(y_series[:-2], y_series[2:]) ]
return [known[0]] + known + [known[-1]]

View File

@ -1352,15 +1352,29 @@ fn drive_map_or_gate(amp0: f32, amp1: f32) -> [[ClockState; 4]; 4] {
#[allow(unused)]
fn drive_map_buf_53(amp0: f32, amp1: f32) -> [[ClockState; 4]; 2] {
fn drive_map_complementary_buf_center_inputs_53(amp0: f32, amp1: f32) -> [[ClockState; 4]; 2] {
use ClockState as C;
// amplitudes are inverted from what you would expect.
// hold(-1) puts the core into a positive M
[
// init S1 pos, S2 pos; charge S0 neg, S3 neg
[C::release_high(), C::release(-amp0), C::release(-amp1), C::release_high()],
[C::release_high(), C::release(-amp0), C::release(-amp1), C::release_high(),],
// clear S1 -> S0, S2 -> S3
[C::float(), C::hold_high(), C::hold_high(), C::float(), ],
[C::float(), C::hold_high(), C::hold_high(), C::float(), ],
]
}
#[allow(unused)]
fn drive_map_complementary_buf_edge_inputs_59(amp0: f32, amp1: 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, S3 pos; charge S1 neg, S2 neg
[C::hold(-amp0), C::hold_high(), C::hold_high(), C::hold(-amp1), ],
[C::release(-amp0), C::release_high(), C::release_high(), C::release(-amp1),],
// clear S0 -> S1, S3 -> S2
[C::hold_high(), C::float(), C::float(), C::hold_high(), ],
]
}
@ -1370,7 +1384,7 @@ fn drive_map_split_54(amp: f32) -> [[ClockState; 3]; 4] {
// amplitudes are inverted from what you would expect.
// hold(-1) puts the core into a positive M
[
// init S1 pos; charge S0 neg, S3 neg
// init S1 pos; charge S0 neg, S2 neg
[C::release_high(), C::release(-amp), C::release_high()],
// clear S1 -> {S0, S2}
[C::float(), C::hold_high(), C::float(), ],
@ -1430,6 +1444,21 @@ fn drive_map_buf_57(amp0: f32, amp1: f32) -> [[ClockState; 6]; 3] {
]
}
#[allow(unused)]
fn drive_map_buf_58(amp0: f32, amp1: 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 S2/S5 pos, S3/S0 pos; charge S1/S4 neg
[C::hold(-amp1), C::hold_high(), C::hold(-amp0), C::hold(-amp1), C::hold_high(), C::hold(-amp0), ],
// let settle
[C::release(-amp1), C::release_high(), C::release(-amp0), C::release(-amp1), C::release_high(), C::release(-amp0),],
// clear S0 -> S1 -> S2, S5 -> S4 -> S3
[C::hold_high(), C::float(), C::float(), C::float(), C::float(), C::hold_high(), ],
]
}
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 {
@ -6130,7 +6159,7 @@ fn main() {
};
run_sim(
&name,
drive_map_buf_53(init_flt_a, init_flt_b),
drive_map_complementary_buf_center_inputs_53(init_flt_a, init_flt_b),
params,
);
}
@ -6194,7 +6223,7 @@ fn main() {
// e.g. L=3, A=6 gives 39
// y(-20900) = -4200 y(16800) = 10700
// slope = 055 from x-17000 to -2700
// slope = 0.55 from x-17000 to -2700
(true, 2e3, 2e4, ps(2000), ps(100), 8, 2, um(400), 2e9),
// y(-21400) = -400, y(16900) = 16900
// slope = 0.75 from x=-17000 to -7000
@ -6363,7 +6392,7 @@ fn main() {
}
}
if true {
if false {
for init_set in [
&[
// establish rough domain/range
@ -6563,6 +6592,302 @@ fn main() {
}
}
}
if false {
for init_set in [
&[
// establish rough domain/range
( 1.00, -1.00),
(-1.00, 1.00), // technically extraneous
][..],
&[
( 0.00, 0.00),
( 0.30, -0.30),
( 0.20, -0.20),
( 0.10, -0.10),
// (-1.00, -1.00), // uninitialized case
][..],
&[
// negative side
// (-0.10, 0.10),
// (-0.20, 0.20),
// (-0.25, 0.25),
// (-0.05, 0.05),
// (-0.15, 0.15),
][..],
&[
// more detailed sweep
( 0.05, -0.05),
( 0.15, -0.15),
// ( 0.25, -0.25),
][..],
&[
// because M1, M5 are init LOW, (0, 0) results in the neighbors being init > 0.
// so try to find the set point where they can be (0, 0)
(-0.06, -0.06),
// (-0.08, -0.08),
// (-0.04, -0.04),
(-0.04, -0.07), // +0.02, -0.01
(-0.02, -0.08), // +0.04, -0.02
(-0.01, -0.09), // +0.05, -0.03
( 0.01, -0.10), // +0.07, -0.04
( 0.01, -0.11), // +0.07, -0.05
( 0.03, -0.11), // +0.09, -0.05
( 0.06, -0.12), // +0.12, -0.06
( 0.08, -0.13), // +0.14, -0.07
( 0.09, -0.13), // +0.15, -0.07
( 0.10, -0.16), // +0.16, -0.10
( 0.11, -0.14), // +0.17, -0.08
( 0.13, -0.15), // +0.19, -0.09
( 0.14, -0.16), // +0.20, -0.10
][..],
&[
// even more verbosity
// (-0.02, 0.02),
// (-0.07, 0.07),
// (-0.12, 0.12),
// (-0.17, 0.17),
// (-0.22, 0.22),
( 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, s_major, cur_flt) in [
// total slot use is L*(4*A + 1),
// where L is the "coupling loops" and A is the inp_loops ("asymmetric loops")
// e.g. L=8, A=1 gives 40
// e.g. L=4, A=2 gives 36
// e.g. L=3, A=3 gives 39
// special case of A=0 is L*(2 + 1)
// L=13, A=0 gives 39
// Y(-18700, 15800) = ( 15300, -17300)
// slope: 0.92
(2e3, 2e4, ps(2000), ps(100), 13, 0, um(400), 5e9),
// Y(-18600, 16900) = ( 14300, -16900)
// slope: 0.91
(2e3, 2e4, ps(2000), ps(100), 8, 1, um(400), 5e9),
// Y(-17700, 16800) = ( 14100, -16600)
// slope: 0.91
(2e3, 2e4, ps(2000), ps(100), 4, 2, um(400), 2e10),
// Y(-18900, 17000) = ( 13700, -16900)
// (2e3, 2e4, ps(2000), ps(100), 8, 1, um(400), 1e10),
] {
for &(init_flt_a, init_flt_b) in init_set {
// layout:
// M0 => M1 => M2 <-> M3 <= M4 <= M5
//
// `=>` means asymmetric, `->` means symmetric
let slots_per_asym = (2*inp_loops).max(1);
let net_slots = 2*slots_per_asym + 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)
;
for i in 0..slots_per_asym {
// couple output core 2 to output 3
params = params.with_coupling(2, 3, 1+i, net_slots, CouplingMethod::Direct);
}
if inp_loops != 0 {
// couple input M0 -> M1
params = couple_asymmetric_buffer_bi(&params, 0 /* low core */, inp_loops /* M0 loops */, 0 /* M1 loops */, 1 /* slot offset */, net_slots);
// couple M1 -> M2
params = couple_asymmetric_buffer_bi(&params, 1 /* low core */, inp_loops /* M1 loops */, 0 /* M2 loops */, 1 + slots_per_asym /* slot offset */, net_slots);
// couple input M5 -> M4
params = couple_asymmetric_buffer_bi(&params, 4 /* low core */, 0 /* M4 loops */, inp_loops /* M5 loops */, 1 /* slot offset */, net_slots);
// couple M4 -> M3
params = couple_asymmetric_buffer_bi(&params, 3 /* low core */, 0 /* M3 loops */, inp_loops /* M4 loops */, 1 + slots_per_asym /* slot offset */, net_slots);
} else {
// directly couple M0 -> M1, M1 -> M2, M5 -> M4, M4 -> M3
params = params.with_coupling(0, 1, 1, net_slots, CouplingMethod::Direct);
params = params.with_coupling(1, 2, 2, net_slots, CouplingMethod::Direct);
params = params.with_coupling(3, 4, 2, net_slots, CouplingMethod::Direct);
params = params.with_coupling(4, 5, 1, net_slots, CouplingMethod::Direct);
}
let name = asymmetric_binary_gate_name_v2(
&params,
"58-buf",
coupling_loops /* ctl loops */,
coupling_loops,
2*inp_loops + 1,
2*inp_loops + 1,
init_flt_a,
init_flt_b,
);
run_sim(
&name,
drive_map_buf_58(init_flt_a, init_flt_b),
params,
);
}
}
}
}
if true {
for init_set in [
&[
// establish rough domain/range
( 1.00, -1.00),
(-1.00, 1.00), // technically extraneous
][..],
&[
( 0.00, 0.00),
( 0.30, -0.30),
( 0.20, -0.20),
( 0.10, -0.10),
// (-1.00, -1.00), // uninitialized case
][..],
&[
// negative side
// (-0.10, 0.10),
// (-0.20, 0.20),
// (-0.25, 0.25),
// (-0.05, 0.05),
// (-0.15, 0.15),
][..],
&[
// 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.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 (edge_input, ctl_cond, coupling_cond, clock_duration, clock_decay, coupling_loops, inp_loops, out_loops, s_major, cur_flt) in [
// total slot use is L*(inp_loops + out_loops + 1),
// where L is the "coupling loops" (control loops)
// e.g. L=10, inp=1, out=2 gives 40
// e.g. L=8, inp=1, out=3 gives 40
// e.g. L=6, inp=1, out=5 gives 42
// e.g. L=4, inp=1, out=8 gives 40
// e.g. L=4, inp=2, out=7 gives 40
// e.g. L=3, inp=2, out=10 gives 39
(false, 2e3, 2e4, ps(2000), ps(100), 8, 1, 3, um(400), 5e9),
(false, 2e3, 2e4, ps(2000), ps(100), 6, 5, 1, um(400), 5e9),
(false, 2e3, 2e4, ps(2000), ps(100), 6, 1, 5, um(400), 5e9),
(true, 2e3, 2e4, ps(2000), ps(100), 8, 1, 3, um(400), 5e9),
(true, 2e3, 2e4, ps(2000), ps(100), 6, 5, 1, um(400), 5e9),
(true, 2e3, 2e4, ps(2000), ps(100), 6, 1, 5, um(400), 5e9),
// (false, 2e3, 2e4, ps(2000), ps(100), 4, 1, 8, um(400), 2e10),
// (false, 2e3, 2e4, ps(2000), ps(100), 4, 2, 7, um(400), 2e10),
// (2e3, 2e4, ps(2000), ps(100), 3, 2, 10, um(400), 2e10),
] {
for &(init_flt_a, init_flt_b) in init_set {
// layout:
// M0 -> M1 <-> M2 <- M3
let net_slots = inp_loops + out_loops + 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 M3 -> M2
params = params.with_coupling(3, 2, 1+i, net_slots, CouplingMethod::Direct);
}
for i in 0..out_loops {
// couple output M1 -> M2
params = params.with_coupling(1, 2, 1+inp_loops+i, net_slots, CouplingMethod::Direct);
}
let base = if edge_input {
"59-buf-edge_input"
} else {
"59-buf-inner_input"
};
let name = asymmetric_binary_gate_name_v2(
&params,
&base,
coupling_loops /* ctl loops */,
coupling_loops,
inp_loops,
out_loops,
init_flt_a,
init_flt_b,
);
if edge_input {
run_sim(
&name,
drive_map_complementary_buf_edge_inputs_59(init_flt_a, init_flt_b),
params,
);
} else {
run_sim(
&name,
drive_map_complementary_buf_center_inputs_53(init_flt_a, init_flt_b),
params,
);
}
}
}
}
}
}