app: stacked_cores: 47-xx: cascade two buffers and vary their parameterization

This commit is contained in:
2022-10-16 17:21:10 -07:00
parent c458b3135b
commit ff2c79162c
2 changed files with 237 additions and 1 deletions

View File

@@ -158,6 +158,23 @@ class SimParams46(SimParams):
def t_mid(self) -> float:
return 4e-9
class SimParams47(SimParams):
@property
def run(self) -> str:
return "47"
@property
def is_inverter(self) -> bool:
return False
@property
def t_last(self) -> float:
return 5e-9
@property
def t_mid(self) -> float:
return 4e-9
sims = [
# params, human friendly db name, normalization
@@ -304,6 +321,18 @@ sims = [
(SimParams46(7, 1, 600, "2e10"), None, 20000),
(SimParams46(7, 1, 600, _3e10), None, 20000),
(SimParams46(4, 2, 600, "2e10"), None, 20000),
(SimParams47(5, 1, 400, "5e9"), None, 20000),
(SimParams47(5, 1, 400, "8e9"), None, 20000),
(SimParams47(5, 1, 400, "1e10"), None, 20000),
(SimParams47(5, 1, 400, "2e10"), None, 20000),
(SimParams47(5, 1, 400, "4e10"), None, 20000),
(SimParams47(7, 1, 600, "5e9"), None, 20000),
(SimParams47(7, 1, 600, "8e9"), None, 20000),
(SimParams47(7, 1, 600, "1e10"), None, 20000),
(SimParams47(7, 1, 600, "2e10"), None, 20000),
(SimParams47(7, 1, 600, _3e10), None, 20000),
(SimParams47(4, 2, 600, "2e10"), None, 20000),
]
measurements = { real.machine_name: [human, norm, None, None] for (real, human, norm) in sims }
@@ -3738,4 +3767,129 @@ Piecewise(
)
""")
set_meas("47-0.0004rad-5coupling-3_1_winding-5e9-drive", """
Piecewise(
[
[ -16759, 1164 ], # -1.00, M1=-13497
[ 16712, 2756 ], # 1.00, M1=-7528
]
)
""")
set_meas("47-0.0004rad-5coupling-3_1_winding-8e9-drive", """
Piecewise(
[
[ -16828, -8107 ], # -1.00, M1=-12624
[ 16772, -5884 ], # 1.00, M1=-4215
]
)
""")
set_meas("47-0.0004rad-5coupling-3_1_winding-1e10-drive", """
Piecewise(
[
[ -16854, -14076 ], # -1.00, M1=-11998
[ -16545, -14068 ], # -0.35, M1=-11961
[ -7375, -13452 ], # -0.20, M1=-9609
[ 4140, -12512 ], # -0.10, M1=-6400
[ 9313, -12046 ], # 0.00, M1=-5027
[ 11841, -11810 ], # 0.10, M1=-4377
[ 14247, -11582 ], # 0.20, M1=-3766
[ 16258, -11398 ], # 0.35, M1=-3299
[ 16786, -11358 ], # 1.00, M1=-3214
]
)
""")
set_meas("47-0.0004rad-5coupling-3_1_winding-2e10-drive", """
Piecewise(
[
[ -16920, -16586 ], # -1.00, M1=-10963
[ 16827, -15737 ], # 1.00, M1=-1168
]
)
""")
set_meas("47-0.0004rad-5coupling-3_1_winding-4e10-drive", """
Piecewise(
[
[ -16987, -14442 ], # -1.00, M1=-8976
[ 16829, -13443 ], # 1.00, M1= 421
]
)
""")
set_meas("47-0.00059999997rad-7coupling-3_1_winding-5e9-drive", """
Piecewise(
[
[ -16763, 2041 ], # -1.00, M1=-13759
[ 16734, 3545 ], # 1.00, M1=-8164
]
)
""")
set_meas("47-0.00059999997rad-7coupling-3_1_winding-8e9-drive", """
Piecewise(
[
[ -16829, -6479 ], # -1.00, M1=-12766
[ -14123, -6313 ], # -0.35, M1=-12124
[ -1242, -5418 ], # -0.20, M1=-8708
[ 5339, -4994 ], # -0.10, M1=-7104
[ 8141, -4824 ], # 0.00, M1=-6461
[ 10321, -4693 ], # 0.10, M1=-5972
[ 12538, -4563 ], # 0.20, M1=-5485
[ 15644, -4382 ], # 0.35, M1=-4806
[ 16799, -4325 ], # 1.00, M1=-4619
]
)
""")
set_meas("47-0.00059999997rad-7coupling-3_1_winding-1e10-drive", """
Piecewise(
[
[ -16852, -12074 ], # -1.00, M1=-12070
[ -16512, -12067 ], # -0.35, M1=-12033
[ -5580, -11331 ], # -0.20, M1=-9189
[ 4228, -10606 ], # -0.10, M1=-6584
[ 8721, -10256 ], # 0.00, M1=-5425
[ 11561, -10031 ], # 0.10, M1=-4723
[ 14334, -9799 ], # 0.20, M1=-4037
[ 16256, -9638 ], # 0.35, M1=-3580
[ 16813, -9600 ], # 1.00, M1=-3486
]
)
""")
set_meas("47-0.00059999997rad-7coupling-3_1_winding-2e10-drive", """
Piecewise(
[
[ -16902, -16514 ], # -1.00, M1=-10719
[ -16701, -16513 ], # -0.20, M1=-10675
[ -5648, -16369 ], # -0.10, M1=-7360
[ 8575, -15470 ], # 0.00, M1=-3263
[ 15217, -14725 ], # 0.10, M1=-1597
[ 16344, -14580 ], # 0.20, M1=-1314
[ 16843, -14510 ], # 1.00, M1=-1188
]
)
""")
set_meas("47-0.00059999997rad-7coupling-3_1_winding-30000001024e0-drive", """
Piecewise(
[
[ -16932, -14525 ], # -1.00, M1=-9579
[ 16845, -12288 ], # 1.00, M1= 63
]
)
""")
set_meas("47-0.00059999997rad-4coupling-5_1_winding-2e10-drive", """
Piecewise(
[
[ -16785, -15047 ], # -1.00, M1=-12562
[ 16793, -12591 ], # 1.00, M1=-6601
]
)
""")
if __name__ == '__main__': main()

View File

@@ -1118,6 +1118,25 @@ fn drive_map_3stack_with_init_inv_then_buff(amp0: f32) -> [[ClockState; 3]; 5] {
]
}
#[allow(unused)]
fn drive_map_3stack_with_init_buff_cascade(amp0: f32) -> [[ClockState; 3]; 5] {
use ClockState as C;
// amplitudes are inverted from what you would expect.
// hold(-1) puts the core into a positive M
[
// init S0; charge S1 negative, S2 *positive*
[C::hold(-amp0), C::hold_high(), C::hold_low()],
// let the cores settle; open S1 for receive
[C::release(-amp0), C::release_high(), C::hold_low()],
// write S0 -> S1 (pushes S1 from neg -> pos)
[C::hold_high(), C::float(), C::hold_low()],
// open S2 for receive
[C::hold_high(), C::float(), C::release_low()],
// write S1 -> S2 by clearing whatever *wasn't* cleared (pushes S2 pos -> neg)
[C::hold_high(), C::hold_low(), C::float()],
]
}
#[allow(unused)]
fn drive_map_4stack_with_init4(amp0: f32, amp1: f32, amp2: f32, amp3: f32) -> [[ClockState; 4]; 3] {
use ClockState as C;
@@ -4876,7 +4895,7 @@ fn main() {
}
}
if true {
if false {
let p46xx = params_v2
.with_clock_phase_duration(ps(1000))
.with_clock_decay(ps(50))
@@ -4938,6 +4957,69 @@ fn main() {
}
}
}
if true {
let p47xx = params_v2
.with_clock_phase_duration(ps(1000))
.with_clock_decay(ps(50))
.with_ctl_conductivity(5e2)
.with_coupling_conductivity(5e3)
;
for init_set in [
&[
// establish the domain/range
1.00,
-1.00,
][..],
&[
0.00,
0.20,
-0.20,
0.10,
-0.10,
0.35,
-0.35,
][..],
] {
for (coupling_loops, s0_loops, s_major, cur_flt) in [
(5, 1, um(400), 1e10),
(7, 1, um(600), 8e9),
(7, 1, um(600), 1e10),
(7, 1, um(600), 2e10),
(7, 1, um(600), 5e9),
(7, 1, um(600), 3e10),
(5, 1, um(400), 5e9),
(4, 2, um(600), 2e10),
(5, 1, um(400), 8e9),
(5, 1, um(400), 2e10),
(5, 1, um(400), 4e10),
] {
for &init_flt in init_set {
// coupling loops (M0 -> M1) + (M1 -> M2) + control slots
let slots_per_asym = 2*s0_loops;
let net_slots = 2*slots_per_asym + 1;
let mut params = p47xx
.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)
;
params = couple_asymmetric_buffer(&params, 0 /* sender core */, s0_loops, 1 /* slot offset */, net_slots);
params = couple_asymmetric_buffer(&params, 1 /* sender core */, s0_loops, 1 + slots_per_asym /* slot offset */, net_slots);
let name = asymmetric_inverter_name(&params, "47", 2*s0_loops + 1, init_flt);
run_sim(
&name,
drive_map_3stack_with_init_buff_cascade(init_flt),
params,
);
}
}
}
}
}