Compare commits
2 Commits
57e12cbe32
...
12f286c3c7
Author | SHA1 | Date |
---|---|---|
colin | 12f286c3c7 | |
colin | 9c17d3b45d |
|
@ -191,8 +191,13 @@ _48xx_study = from_params(
|
|||
|
||||
_49xx_study = from_params(
|
||||
[
|
||||
# TODO
|
||||
# slope ranges are measured from x=0 to x=0.2
|
||||
# y(0)=0.90, y(1)=0.99, slope0>0.28
|
||||
SimParams50(5e2, 4e4, 4000, 200, 5, 1, 400, "2e10"),
|
||||
# y(0)=0.79, y(1)=0.98, slope0=0.36 to 0.27
|
||||
SimParams50(5e3, 4e4, 4000, 200, 5, 1, 400, "2e10"),
|
||||
# y(0)=0.65, y(1)=0.95, slope0=0.44 to 0.31
|
||||
SimParams50(5e3, 4e4, 4000, 200, 5, 1, 400, "1e10"),
|
||||
|
||||
# y(0)=0.09, y(1)=0.17, slope0=0.07. "best" comparable 47-xx sim
|
||||
# SimParams47(5, 1, 400, "1e10"),
|
||||
|
@ -226,6 +231,10 @@ _49xx_study = from_params(
|
|||
# SimParams50(1e4, 2e4, 2000, 100, 5, 1, 400, "2e10"),
|
||||
# y(0)=0.30, y(1)=0.40, slope0>0.09
|
||||
# SimParams50(2e4, 2e4, 2000, 100, 5, 1, 400, "1e10"),
|
||||
|
||||
SimParams51(1e3, 2e4, 2000, 100, 5, 1, 400, "2e10"),
|
||||
SimParams51(2e3, 2e4, 2000, 100, 5, 1, 400, "2e10"),
|
||||
SimParams51(5e3, 2e4, 2000, 100, 5, 1, 400, _3e10),
|
||||
]
|
||||
)
|
||||
|
||||
|
|
|
@ -235,6 +235,23 @@ class SimParams50(SimParamsV3):
|
|||
def t_mid(self) -> float:
|
||||
return 4e-12 * self.clock_length_ps
|
||||
|
||||
class SimParams51(SimParamsV3):
|
||||
@property
|
||||
def run(self) -> str:
|
||||
return "51"
|
||||
|
||||
@property
|
||||
def is_inverter(self) -> bool:
|
||||
return True
|
||||
|
||||
@property
|
||||
def t_last(self) -> float:
|
||||
return 2e-12 * self.clock_length_ps
|
||||
|
||||
@property
|
||||
def t_init(self) -> float:
|
||||
return 1e-12 * self.clock_length_ps
|
||||
|
||||
sims = [
|
||||
# params, human friendly db name, normalization
|
||||
(SimParams40(6, 1, 400, "5e10"), "fwd_40_6_3_1_5e10", 17000),
|
||||
|
@ -439,7 +456,13 @@ sims = [
|
|||
(SimParams50(1e4, 2e4, 2000, 100, 5, 1, 400, "1e10"), None, 20000),
|
||||
(SimParams50(1e4, 2e4, 2000, 100, 5, 1, 400, "2e10"), None, 20000),
|
||||
(SimParams50(2e4, 2e4, 2000, 100, 5, 1, 400, "1e10"), None, 20000),
|
||||
(SimParams50(2e4, 2e4, 4000, 200, 5, 1, 400, "2e10"), None, 20000),
|
||||
(SimParams50(5e2, 4e4, 4000, 200, 5, 1, 400, "2e10"), None, 20000),
|
||||
(SimParams50(5e3, 4e4, 4000, 200, 5, 1, 400, "1e10"), None, 20000),
|
||||
(SimParams50(5e3, 4e4, 4000, 200, 5, 1, 400, "2e10"), None, 20000),
|
||||
|
||||
(SimParams51(1e3, 2e4, 2000, 100, 5, 1, 400, "2e10"), None, 20000),
|
||||
(SimParams51(2e3, 2e4, 2000, 100, 5, 1, 400, "2e10"), None, 20000),
|
||||
(SimParams51(5e3, 2e4, 2000, 100, 5, 1, 400, _3e10), None, 20000),
|
||||
]
|
||||
|
||||
measurements = { real.machine_name: [human, norm, None, None] for (real, human, norm) in sims }
|
||||
|
@ -4898,7 +4921,11 @@ set_meas("50-0.0004rad-1000ctl_cond-20000coupling_cond-2000ps-100ps-5ctl-5coupli
|
|||
Piecewise(
|
||||
[
|
||||
[ -17427, 4252 ], # -1.000, M1=-12305
|
||||
[ -15269, 5104 ], # -0.200, M1=-11411
|
||||
[ -110, 9208 ], # -0.100, M1=-6920
|
||||
[ 3269, 10079 ], # -0.070, M1=-5895
|
||||
[ 6604, 10894 ], # 0.000, M1=-4913
|
||||
[ 10959, 11919 ], # 0.100, M1=-3666
|
||||
[ 16740, 13291 ], # 1.000, M1=-1934
|
||||
]
|
||||
)
|
||||
|
@ -4952,11 +4979,13 @@ Piecewise(
|
|||
[ -14966, 4108 ], # -0.130, M1=-11033
|
||||
[ -12700, 4794 ], # -0.120, M1=-10348
|
||||
[ -10348, 5479 ], # -0.110, M1=-9664
|
||||
[ -7974, 6152 ], # -0.100, M1=-8984
|
||||
[ -5593, 6821 ], # -0.090, M1=-8300
|
||||
[ -3210, 7517 ], # -0.080, M1=-7588
|
||||
[ -846, 8215 ], # -0.070, M1=-6872
|
||||
[ 1466, 8878 ], # -0.060, M1=-6186
|
||||
[ 7967, 10735 ], # 0.000, M1=-4212
|
||||
[ 12706, 11973 ], # 0.100, M1=-2840
|
||||
[ 16755, 13090 ], # 1.000, M1=-1516
|
||||
]
|
||||
)
|
||||
|
@ -4966,6 +4995,8 @@ set_meas("50-0.0004rad-2000ctl_cond-20000coupling_cond-2000ps-100ps-5ctl-5coupli
|
|||
Piecewise(
|
||||
[
|
||||
[ -17730, 7307 ], # -1.000, M1=-11351
|
||||
[ -17492, 7545 ], # -0.200, M1=-11122
|
||||
[ -17311, 7667 ], # -0.100, M1=-11002
|
||||
[ -17214, 7709 ], # -0.090, M1=-10960
|
||||
[ -16931, 7834 ], # -0.080, M1=-10838
|
||||
[ -16177, 8165 ], # -0.070, M1=-10510
|
||||
|
@ -5008,8 +5039,18 @@ set_meas("50-0.0004rad-5000ctl_cond-20000coupling_cond-2000ps-100ps-5ctl-5coupli
|
|||
Piecewise(
|
||||
[
|
||||
[ -18082, 3583 ], # -1.000, M1=-11466
|
||||
[ -17810, 3787 ], # -0.200, M1=-11214
|
||||
[ -17731, 3848 ], # -0.120, M1=-11140
|
||||
[ -17701, 3874 ], # -0.100, M1=-11108
|
||||
[ -17683, 3884 ], # -0.090, M1=-11097
|
||||
[ -17630, 3909 ], # -0.070, M1=-11064
|
||||
[ -17522, 3957 ], # -0.050, M1=-11005
|
||||
[ -13081, 5195 ], # -0.030, M1=-9465
|
||||
[ -3399, 7497 ], # -0.020, M1=-6549
|
||||
[ 6241, 9671 ], # -0.010, M1=-3725
|
||||
[ 10894, 10687 ], # 0.000, M1=-2354
|
||||
[ 16083, 11810 ], # 0.050, M1= -775
|
||||
[ 16377, 11907 ], # 0.100, M1= -635
|
||||
[ 16869, 12160 ], # 1.000, M1= -258
|
||||
]
|
||||
)
|
||||
|
@ -5055,4 +5096,73 @@ Piecewise(
|
|||
)
|
||||
""")
|
||||
|
||||
set_meas("50-0.0004rad-500ctl_cond-40000coupling_cond-4000ps-200ps-5ctl-5coupling-3_1_winding-2e10-drive", """
|
||||
Piecewise(
|
||||
[
|
||||
[ -17439, 13243 ], # -1.000, M1=-11394
|
||||
[ -17115, 13551 ], # -0.200, M1=-11152
|
||||
[ -7315, 16318 ], # -0.100, M1=-7850
|
||||
[ 8831, 16749 ], # 0.000, M1=-2973
|
||||
[ 13401, 16778 ], # 0.100, M1=-1604
|
||||
[ 16756, 16787 ], # 1.000, M1= -484
|
||||
]
|
||||
)
|
||||
""")
|
||||
|
||||
set_meas("50-0.0004rad-5000ctl_cond-40000coupling_cond-4000ps-200ps-5ctl-5coupling-3_1_winding-1e10-drive", """
|
||||
Piecewise(
|
||||
[
|
||||
[ -17679, 4637 ], # -1.000, M1=-11683
|
||||
[ -17453, 4861 ], # -0.200, M1=-11461
|
||||
[ -17354, 4940 ], # -0.120, M1=-11382
|
||||
[ -17328, 4957 ], # -0.110, M1=-11365
|
||||
[ -17284, 4980 ], # -0.100, M1=-11342
|
||||
[ -17200, 5019 ], # -0.090, M1=-11303
|
||||
[ -16274, 5424 ], # -0.070, M1=-10900
|
||||
[ -13045, 6569 ], # -0.060, M1=-9769
|
||||
[ -8261, 8048 ], # -0.050, M1=-8297
|
||||
[ -3416, 9500 ], # -0.040, M1=-6828
|
||||
[ 1429, 10929 ], # -0.030, M1=-5370
|
||||
[ 6039, 12284 ], # -0.020, M1=-3955
|
||||
[ 8583, 13014 ], # -0.010, M1=-3163
|
||||
[ 9463, 13253 ], # 0.000, M1=-2891
|
||||
[ 12891, 14121 ], # 0.050, M1=-1877
|
||||
[ 16088, 14947 ], # 0.100, M1= -877
|
||||
[ 16761, 15235 ], # 1.000, M1= -496
|
||||
]
|
||||
)
|
||||
""")
|
||||
|
||||
set_meas("50-0.0004rad-5000ctl_cond-40000coupling_cond-4000ps-200ps-5ctl-5coupling-3_1_winding-2e10-drive", """
|
||||
Piecewise(
|
||||
[
|
||||
[ -17870, 9437 ], # -1.000, M1=-10755
|
||||
[ -17705, 9613 ], # -0.350, M1=-10579
|
||||
[ -17656, 9663 ], # -0.250, M1=-10529
|
||||
[ -17627, 9694 ], # -0.200, M1=-10498
|
||||
[ -17585, 9733 ], # -0.150, M1=-10459
|
||||
[ -17554, 9763 ], # -0.120, M1=-10430
|
||||
[ -17527, 9788 ], # -0.100, M1=-10405
|
||||
[ -17511, 9801 ], # -0.090, M1=-10391
|
||||
[ -17464, 9834 ], # -0.070, M1=-10357
|
||||
[ -17366, 9896 ], # -0.050, M1=-10295
|
||||
[ -13069, 11459 ], # -0.030, M1=-8663
|
||||
[ -3376, 14111 ], # -0.020, M1=-5523
|
||||
[ 6319, 15855 ], # -0.010, M1=-2530
|
||||
[ 11902, 16301 ], # 0.000, M1= -813
|
||||
[ 15944, 16406 ], # 0.050, M1= 459
|
||||
[ 16258, 16415 ], # 0.100, M1= 598
|
||||
[ 16799, 16436 ], # 1.000, M1= 973
|
||||
]
|
||||
)
|
||||
""")
|
||||
|
||||
set_meas("51-0.0004rad-1000ctl_cond-20000coupling_cond-2000ps-100ps-5ctl-5coupling-3_1_winding-2e10-drive", """
|
||||
Piecewise(
|
||||
[
|
||||
[ 16910, -16375 ], # 1.000
|
||||
]
|
||||
)
|
||||
""")
|
||||
|
||||
if __name__ == '__main__': main()
|
||||
|
|
|
@ -1189,6 +1189,19 @@ fn drive_map_3stack_multi_clock_buffer(amp0: f32) -> [[ClockState; 3]; 5] {
|
|||
]
|
||||
}
|
||||
|
||||
#[allow(unused)]
|
||||
fn drive_map_3stack_multi_clock_buffer_quick_one_cycle(amp0: f32) -> [[ClockState; 3]; 2] {
|
||||
use ClockState as C;
|
||||
// amplitudes are inverted from what you would expect.
|
||||
// hold(-1) puts the core into a positive M
|
||||
[
|
||||
// init S0 pos; charge S1 neg, S2 pos
|
||||
[C::release(-amp0), C::release_high(), C::release_low()],
|
||||
// clear S0 (P->N) -> S1 (N->P) -> S2 (P->N)
|
||||
[C::hold_high(), C::float(), 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;
|
||||
|
@ -5426,7 +5439,7 @@ fn main() {
|
|||
}
|
||||
}
|
||||
}
|
||||
if true {
|
||||
if false {
|
||||
for init_set in [
|
||||
&[
|
||||
// targeted
|
||||
|
@ -5439,6 +5452,21 @@ fn main() {
|
|||
// -0.065,
|
||||
// -0.055,
|
||||
// -0.045,
|
||||
-0.04,
|
||||
-0.06,
|
||||
-0.07,
|
||||
-0.08
|
||||
-0.03,
|
||||
-0.02,
|
||||
-0.09,
|
||||
-0.01,
|
||||
-0.035,
|
||||
-0.045,
|
||||
-0.055,
|
||||
0.05,
|
||||
0.02,
|
||||
0.01,
|
||||
0.03,
|
||||
][..],
|
||||
&[
|
||||
// establish the domain/range
|
||||
|
@ -5451,10 +5479,10 @@ fn main() {
|
|||
&[
|
||||
-0.20,
|
||||
-0.10,
|
||||
-0.05,
|
||||
0.10,
|
||||
][..],
|
||||
&[
|
||||
-0.05,
|
||||
0.05,
|
||||
-0.15,
|
||||
-0.25,
|
||||
|
@ -5464,9 +5492,12 @@ fn main() {
|
|||
][..],
|
||||
] {
|
||||
for (ctl_cond, coupling_cond, clock_duration, clock_decay, coupling_loops, s0_loops, s_major, cur_flt) in [
|
||||
(5e2, 4e4, ps(4000), ps(200), 5, 1, um(400), 2e10),
|
||||
// y(0)=0.65, y(1)=0.95, slope0=0.44 to 0.31
|
||||
(5e3, 4e4, ps(4000), ps(200), 5, 1, um(400), 1e10),
|
||||
|
||||
// worth pursuing in more detail:
|
||||
// y(0)=0.76, y(1)=0.99
|
||||
(5e3, 4e4, ps(4000), ps(200), 5, 1, um(400), 2e10),
|
||||
// y(0)=0.61, y(1)=0.86, slope0>0.25
|
||||
(5e3, 2e4, ps(2000), ps(100), 5, 1, um(400), 2e10),
|
||||
// y(0)=0.63, y(1)=0.89, slope0>0.27
|
||||
|
@ -5479,6 +5510,9 @@ fn main() {
|
|||
// y(0)=0.60, y(1)=0.89, slope0=0.40 to 0.29
|
||||
(2e3, 2e4, ps(2000), ps(100), 5, 1, um(400), 1e10),
|
||||
|
||||
// too high TX
|
||||
// (5e2, 4e4, ps(4000), ps(200), 5, 1, um(400), 2e10),
|
||||
|
||||
// (1e4, 2e4, ps(2000), ps(100), 5, 1, um(400), 1e10),
|
||||
// (5e3, 2e4, ps(2000), ps(100), 5, 1, um(400), 1e10),
|
||||
// (2e4, 2e4, ps(2000), ps(100), 5, 1, um(400), 1e10),
|
||||
|
@ -5488,22 +5522,8 @@ fn main() {
|
|||
// (1e3, 2e4, ps(2000), ps(100), 5, 1, um(400), 5e9),
|
||||
|
||||
// (5e2, 2e4, ps(2000), ps(100), 5, 1, um(400), 1e10),
|
||||
// // y(0)=0.62, slope(0)=0.23, y(1)=0.80
|
||||
// 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),
|
||||
// (5e2, 5e3, ps(1000), ps(50), 7, 1, um(600), 1e10),
|
||||
// (5e2, 5e3, ps(1000), ps(50), 7, 1, um(600), 2e10),
|
||||
// (5e2, 5e3, ps(1000), ps(50), 7, 1, um(600), 5e9),
|
||||
// (5e2, 5e3, ps(1000), ps(50), 7, 1, um(600), 3e10),
|
||||
// (5e2, 5e3, ps(1000), ps(50), 5, 1, um(400), 5e9),
|
||||
// (5e2, 5e3, ps(1000), ps(50), 4, 2, um(600), 2e10),
|
||||
// (5e2, 5e3, ps(1000), ps(50), 4, 2, um(600), 5e10),
|
||||
// (5e2, 5e3, ps(1000), ps(50), 5, 1, um(400), 8e9),
|
||||
// (5e2, 5e3, ps(1000), ps(50), 5, 1, um(400), 2e10),
|
||||
// (5e2, 5e3, ps(1000), ps(50), 5, 1, um(400), 4e10),
|
||||
] {
|
||||
for &init_flt in init_set {
|
||||
// coupling loops (M0 -> M1) + (M1 -> M2) + control slots
|
||||
|
@ -5537,6 +5557,74 @@ fn main() {
|
|||
}
|
||||
}
|
||||
}
|
||||
if true {
|
||||
for init_set in [
|
||||
&[
|
||||
// targeted
|
||||
][..],
|
||||
&[
|
||||
// establish the domain/range
|
||||
1.00,
|
||||
-1.00,
|
||||
][..],
|
||||
&[
|
||||
0.00,
|
||||
][..],
|
||||
&[
|
||||
-0.20,
|
||||
-0.10,
|
||||
0.10,
|
||||
-0.05,
|
||||
][..],
|
||||
&[
|
||||
0.05,
|
||||
-0.15,
|
||||
-0.25,
|
||||
-0.35,
|
||||
0.20,
|
||||
-0.30,
|
||||
][..],
|
||||
] {
|
||||
for (ctl_cond, coupling_cond, clock_duration, clock_decay, coupling_loops, s0_loops, s_major, cur_flt) in [
|
||||
// from 50-xx
|
||||
(1e3, 2e4, ps(2000), ps(100), 5, 1, um(400), 2e10),
|
||||
(2e3, 2e4, ps(2000), ps(100), 5, 1, um(400), 2e10),
|
||||
(5e3, 2e4, ps(2000), ps(100), 5, 1, um(400), 3e10),
|
||||
// (2e3, 2e4, ps(2000), ps(100), 5, 1, um(400), 1e10),
|
||||
|
||||
] {
|
||||
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 = 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)
|
||||
;
|
||||
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_v3(
|
||||
¶ms, "51", coupling_loops /* ctl loops */, coupling_loops, 2*s0_loops + 1, init_flt
|
||||
);
|
||||
run_sim(
|
||||
&name,
|
||||
drive_map_3stack_multi_clock_buffer_quick_one_cycle(init_flt),
|
||||
params,
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
|
Loading…
Reference in New Issue