app: stacked_cores: 47-xx: cascade two buffers and vary their parameterization
This commit is contained in:
@@ -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()
|
||||
|
@@ -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(¶ms, 0 /* sender core */, s0_loops, 1 /* slot offset */, net_slots);
|
||||
params = couple_asymmetric_buffer(¶ms, 1 /* sender core */, s0_loops, 1 + slots_per_asym /* slot offset */, net_slots);
|
||||
let name = asymmetric_inverter_name(¶ms, "47", 2*s0_loops + 1, init_flt);
|
||||
run_sim(
|
||||
&name,
|
||||
drive_map_3stack_with_init_buff_cascade(init_flt),
|
||||
params,
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
Reference in New Issue
Block a user