app: stacked_cores: complete some 59-xx runs

they don't look super insightful/promising.
This commit is contained in:
colin 2022-11-17 01:17:42 +00:00
parent a2a851b26f
commit 38aa677aad
3 changed files with 401 additions and 6 deletions

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" }
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
@ -29,6 +29,10 @@ def times_of_interest(sim_name: str) -> list:
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

@ -3076,4 +3076,244 @@ DB = {
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

@ -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(), ],
]
}
@ -6145,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,
);
}
@ -6579,7 +6593,7 @@ fn main() {
}
}
if true {
if false {
for init_set in [
&[
// establish rough domain/range
@ -6737,6 +6751,143 @@ fn main() {
}
}
}
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,
);
}
}
}
}
}
}