diff --git a/crates/applications/stacked_cores/scripts/plot_inverters.py b/crates/applications/stacked_cores/scripts/plot_inverters.py index ffee8e4..a25df65 100755 --- a/crates/applications/stacked_cores/scripts/plot_inverters.py +++ b/crates/applications/stacked_cores/scripts/plot_inverters.py @@ -192,7 +192,12 @@ _48xx_study = from_params( _49xx_study = from_params( [ SimParams47(5, 1, 400, "1e10"), - SimParams49(5e2, 1e4, 1000, 50, 5, 1, 400, "1e10"), + SimParams50(5e2, 1e4, 1000, 50, 5, 1, 400, "1e10"), + SimParams50(5e2, 2e4, 2000, 100, 5, 1, 400, "1e10"), + # too few measurements + # SimParams50(1e3, 2e4, 2000, 100, 5, 1, 400, "5e9"), + # SimParams50(1e3, 2e4, 2000, 100, 5, 1, 400, "1e10"), + # SimParams50(1e3, 2e4, 2000, 100, 5, 1, 400, "2e10"), ] ) diff --git a/crates/applications/stacked_cores/scripts/stacked_cores_40xx_db.py b/crates/applications/stacked_cores/scripts/stacked_cores_40xx_db.py index 33c5ddd..c3f6cd3 100755 --- a/crates/applications/stacked_cores/scripts/stacked_cores_40xx_db.py +++ b/crates/applications/stacked_cores/scripts/stacked_cores_40xx_db.py @@ -218,10 +218,10 @@ class SimParams48(SimParamsV3): def is_inverter(self) -> bool: return False -class SimParams49(SimParamsV3): +class SimParams50(SimParamsV3): @property def run(self) -> str: - return "49" + return "50" @property def is_inverter(self) -> bool: @@ -426,7 +426,11 @@ sims = [ (SimParams48(5e3, 5e4,10000, 500, 9, 1, 400, "5e8"), None, 20000), (SimParams48(5e3, 5e4,10000, 500, 9, 1, 400, "1e9"), None, 20000), - (SimParams49(5e2, 1e4, 1000, 50, 5, 1, 400, "1e10"), None, 20000), + (SimParams50(5e2, 1e4, 1000, 50, 5, 1, 400, "1e10"), None, 20000), + (SimParams50(5e2, 2e4, 2000, 100, 5, 1, 400, "1e10"), None, 20000), + (SimParams50(1e3, 2e4, 2000, 100, 5, 1, 400, "5e9"), None, 20000), + (SimParams50(1e3, 2e4, 2000, 100, 5, 1, 400, "1e10"), None, 20000), + (SimParams50(1e3, 2e4, 2000, 100, 5, 1, 400, "2e10"), None, 20000), ] measurements = { real.machine_name: [human, norm, None, None] for (real, human, norm) in sims } @@ -4842,20 +4846,59 @@ Piecewise( ) """) -set_meas("49-0.0004rad-500ctl_cond-10000coupling_cond-1000ps-50ps-5ctl-5coupling-3_1_winding-1e10-drive", """ +set_meas("50-0.0004rad-500ctl_cond-10000coupling_cond-1000ps-50ps-5ctl-5coupling-3_1_winding-1e10-drive", """ Piecewise( [ - [ -17425, -14614 ], # -1.000, M1=-12327 - [ -16995, -14581 ], # -0.350, M1=-12187 - [ -16407, -14537 ], # -0.300, M1=-12007 - [ -13065, -14308 ], # -0.250, M1=-11112 - [ -11921, -14219 ], # -0.240, M1=-10782 - [ -9616, -14046 ], # -0.220, M1=-10146 - [ -7293, -13863 ], # -0.200, M1=-9494 - [ -4961, -13662 ], # -0.180, M1=-8800 - [ -1448, -13371 ], # -0.150, M1=-7820 - [ 10233, -12281 ], # 0.000, M1=-4587 - [ 16749, -11617 ], # 1.000, M1=-2827 + [ -17425, 3923 ], # -1.000, M1=-12660 + [ -17001, 4090 ], # -0.350, M1=-12447 + [ -16429, 4261 ], # -0.300, M1=-12228 + [ -13120, 5011 ], # -0.250, M1=-11235 + [ -9690, 5770 ], # -0.220, M1=-10232 + [ -7385, 6255 ], # -0.200, M1=-9575 + [ -1872, 7376 ], # -0.150, M1=-7948 + [ 802, 7871 ], # -0.100, M1=-7164 + [ 5084, 8592 ], # 0.000, M1=-5944 + [ 9278, 9209 ], # 0.100, M1=-4806 + [ 13045, 9699 ], # 0.200, M1=-3809 + [ 16741, 10142 ], # 1.000, M1=-2780 + ] +) +""") + +set_meas("50-0.0004rad-500ctl_cond-20000coupling_cond-2000ps-100ps-5ctl-5coupling-3_1_winding-1e10-drive", """ +Piecewise( + [ + [ -17349, 4910 ], # -1.000, M1=-12580 + [ 4848, 8967 ], # 0.000, M1=-5823 + [ 16730, 10287 ], # 1.000, M1=-2565 + ] +) +""") + +set_meas("50-0.0004rad-1000ctl_cond-20000coupling_cond-2000ps-100ps-5ctl-5coupling-3_1_winding-5e9-drive", """ +Piecewise( + [ + [ -17260, -3784 ], # -1.000, M1=-13550 + [ 16709, -676 ], # 1.000, M1=-4803 + ] +) +""") + +set_meas("50-0.0004rad-1000ctl_cond-20000coupling_cond-2000ps-100ps-5ctl-5coupling-3_1_winding-1e10-drive", """ +Piecewise( + [ + [ -17427, 4252 ], # -1.000, M1=-12305 + [ 16740, 13291 ], # 1.000, M1=-1934 + ] +) +""") + +set_meas("50-0.0004rad-1000ctl_cond-20000coupling_cond-2000ps-100ps-5ctl-5coupling-3_1_winding-2e10-drive", """ +Piecewise( + [ + [ -17587, 10360 ], # -1.000, M1=-11417 + [ 10229, 16369 ], # 0.000, M1=-2240 + [ 16771, 16545 ], # 1.000, M1= -120 ] ) """) diff --git a/crates/applications/stacked_cores/src/main.rs b/crates/applications/stacked_cores/src/main.rs index 477f667..0604de8 100644 --- a/crates/applications/stacked_cores/src/main.rs +++ b/crates/applications/stacked_cores/src/main.rs @@ -1170,6 +1170,25 @@ fn drive_map_3stack_with_init_buff_cascade(amp0: f32) -> [[ClockState; 3]; 5] { ] } +#[allow(unused)] +fn drive_map_3stack_multi_clock_buffer(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 negative + [C::hold(-amp0), C::hold_high(), C::hold_high()], + // let the cores settle; open S1 for receive + [C::release(-amp0), C::release_high(), C::hold_high()], + // write S0 -> S1 (pushes S1 from neg -> pos) + [C::hold_high(), C::float(), C::hold_high()], + // open S2 for receive + [C::hold_high(), C::float(), C::release_high()], + // write S1 -> S2 by (pushes S2 neg -> low) + [C::hold_high(), C::hold_high(), 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; @@ -5409,6 +5428,12 @@ fn main() { } if true { for init_set in [ + &[ + // targeted + // -0.22, + // -0.18, + // -0.27, + ][..], &[ // establish the domain/range 1.00, @@ -5416,6 +5441,8 @@ fn main() { ][..], &[ 0.00, + ][..], + &[ -0.20, -0.35, -0.25, @@ -5425,11 +5452,19 @@ fn main() { -0.10, 0.20, 0.10, + -0.05, 0.35, ][..], ] { for (ctl_cond, coupling_cond, clock_duration, clock_decay, coupling_loops, s0_loops, s_major, cur_flt) in [ - (5e2, 1e4, ps(1000), ps(50), 5, 1, um(400), 1e10), + (1e3, 2e4, ps(2000), ps(100), 5, 1, um(400), 5e9), + (1e3, 2e4, ps(2000), ps(100), 5, 1, um(400), 1e10), + (1e3, 2e4, ps(2000), ps(100), 5, 1, um(400), 2e10), + + (5e2, 2e4, ps(2000), ps(100), 5, 1, um(400), 1e10), + // y(0)=0.62, slope(0)=0.23, y(1)=0.80 + (5e2, 1e4, ps(1000), ps(50), 5, 1, um(400), 1e10), + // old 47-xx runs // (5e2, 5e3, ps(1000), ps(50), 5, 1, um(400), 1e10), // (5e2, 5e3, ps(1000), ps(50), 7, 1, um(600), 8e9), @@ -5465,11 +5500,11 @@ fn main() { params = couple_asymmetric_buffer(¶ms, 1 /* sender core */, s0_loops, 1 + slots_per_asym /* slot offset */, net_slots); let name = asymmetric_inverter_name_v3( - ¶ms, "49", coupling_loops /* ctl loops */, coupling_loops, 2*s0_loops + 1, init_flt + ¶ms, "50", coupling_loops /* ctl loops */, coupling_loops, 2*s0_loops + 1, init_flt ); run_sim( &name, - drive_map_3stack_with_init_buff_cascade(init_flt), + drive_map_3stack_multi_clock_buffer(init_flt), params, ); }