app: stacked_cores: 57xx: do some runs where only one pos core is wired

into the output
This commit is contained in:
colin 2022-11-11 03:35:24 +00:00
parent ea6799b764
commit b7112fab86
3 changed files with 378 additions and 21 deletions

View File

@ -21,14 +21,17 @@ def extract_57xx_tx(meas_rows: list) -> tuple:
)
buf_gates = read_db(lambda name: name.startswith("57-"))
# buf_gates = read_db(lambda name: name.startswith("57-"))
buf_gates = read_db(lambda name: name.startswith("57-buf-1p-2n-"))
sweep_buf_inputs = lambda points=101: [(m, None, m, -m, None, -m) for m in sweep_1d(points)]
sweep_pos_input = lambda mneg, points=101: [(m, None, m, mneg, None, mneg) for m in sweep_1d(points)]
sweep_2n1p_input = lambda points=101: [(m, None, None, -m, None, -m) for m in sweep_1d(points)]
for name, meas in natsorted(buf_gates.items()):
# trace = eval_series(meas, sweep_buf_inputs(41), extract_57xx_tx, y_idx=1)
trace = eval_series(meas, sweep_pos_input(0, 41), extract_57xx_tx, y_idx=1)
# trace = eval_series(meas, sweep_pos_input(0, 41), extract_57xx_tx, y_idx=1)
trace = eval_series(meas, sweep_2n1p_input(41), extract_57xx_tx, y_idx=1)
plot(f"{name}", "a1", trace)
plot_slope(f"slope {name}", "a1", trace)

View File

@ -2129,6 +2129,10 @@ DB = {
MeasRow(4e-09, [ 16454, -17198, 16466, -17137, -17413, -17122]),
MeasRow(6e-09, [-29550, 16298, -29717, -29735, -14958, -29708]),
],
( 0.120, -0.120,): [
MeasRow(4e-09, [ 16523, -17197, 16539, -17185, -17419, -17172]),
MeasRow(6e-09, [-29550, 16291, -29717, -29737, -14944, -29708]),
],
( 0.150, -0.150,): [
MeasRow(4e-09, [ 16592, -17193, 16610, -17235, -17428, -17224]),
MeasRow(6e-09, [-29549, 16310, -29717, -29737, -14965, -29708]),
@ -2288,4 +2292,304 @@ DB = {
MeasRow(6e-09, [-28763, 15632, -28759, -28780, -13374, -28777]),
],
}),
'57-buf-1p-2n-0.0004rad-2000ctl_cond-20000coupling_cond-2000ps-100ps-3ctl-3coupling-5_1_3_1_winding-1e10-drive-': ParameterizedMeas({
(-1.000, -1.000,): [
MeasRow(4e-09, [-17107, -17151, -16813, -17012, -17260, -16997]),
MeasRow(6e-09, [-27678, -14252, -28550, -27793, -9249, -27735]),
],
(-1.000, 1.000,): [
MeasRow(4e-09, [-17082, -16963, -16793, 16689, -16953, 16686]),
MeasRow(6e-09, [-27756, -16733, -28607, -27671, 13620, -27614]),
],
(-0.200, 0.200,): [
MeasRow(4e-09, [-12088, -16866, -12576, 12675, -16915, 12386]),
MeasRow(6e-09, [-27668, -16666, -28599, -27686, 10906, -27630]),
],
(-0.100, 0.100,): [
MeasRow(4e-09, [ 174, -16866, -1502, 7499, -16914, 7552]),
MeasRow(6e-09, [-27619, -14158, -28605, -27698, 6085, -27645]),
],
( 0.000, 0.000,): [
MeasRow(4e-09, [ 3098, -16876, -76, 3150, -16917, 3708]),
MeasRow(6e-09, [-27619, -12711, -28603, -27709, 3443, -27655]),
],
( 0.020, -0.020,): [
MeasRow(4e-09, [ 3700, -16877, 70, 2354, -16917, 2952]),
MeasRow(6e-09, [-27619, -12428, -28602, -27709, 2945, -27658]),
],
( 0.050, -0.050,): [
MeasRow(4e-09, [ 4550, -16878, 408, 1279, -16915, 1846]),
MeasRow(6e-09, [-27619, -12024, -28603, -27710, 2223, -27660]),
],
( 0.100, -0.100,): [
MeasRow(4e-09, [ 6019, -16874, 1312, -113, -16910, 269]),
MeasRow(6e-09, [-27621, -11344, -28602, -27714, 1172, -27664]),
],
( 0.150, -0.150,): [
MeasRow(4e-09, [ 7768, -16866, 5689, -5386, -16905, -5337]),
MeasRow(6e-09, [-27620, -9610, -28598, -27727, -2540, -27675]),
],
( 0.200, -0.200,): [
MeasRow(4e-09, [ 11739, -16867, 12112, -12198, -16906, -12192]),
MeasRow(6e-09, [-27627, -6743, -28596, -27746, -7332, -27693]),
],
( 0.250, -0.250,): [
MeasRow(4e-09, [ 15836, -16907, 16218, -16320, -17032, -16304]),
MeasRow(6e-09, [-27625, -4705, -28588, -27773, -10139, -27713]),
],
( 1.000, -1.000,): [
MeasRow(4e-09, [ 16744, -16974, 16790, -16983, -17144, -16977]),
MeasRow(6e-09, [-27622, -4420, -28588, -27800, -10547, -27741]),
],
}),
'57-buf-1p-2n-0.0004rad-2000ctl_cond-20000coupling_cond-2000ps-100ps-3ctl-3coupling-5_1_3_1_winding-2e10-drive-': ParameterizedMeas({
(-1.000, -1.000,): [
MeasRow(4e-09, [-17269, -17328, -16860, -17140, -17478, -17129]),
MeasRow(6e-09, [-28605, -13683, -29027, -28770, -7593, -28745]),
],
(-1.000, 1.000,): [
MeasRow(4e-09, [-17247, -17097, -16842, 16759, -17040, 16767]),
MeasRow(6e-09, [-28633, -16795, -29074, -28567, 15364, -28506]),
],
(-0.200, 0.200,): [
MeasRow(4e-09, [-16920, -17068, -16677, 16226, -17053, 16249]),
MeasRow(6e-09, [-28621, -16789, -29070, -28571, 15241, -28512]),
],
(-0.100, 0.100,): [
MeasRow(4e-09, [-12153, -16975, -13157, 12994, -17042, 12832]),
MeasRow(6e-09, [-28574, -16765, -29064, -28585, 14208, -28533]),
],
( 0.000, 0.000,): [
MeasRow(4e-09, [ 4817, -16987, -76, 5614, -17041, 6866]),
MeasRow(6e-09, [-28532, -12545, -29053, -28650, 7897, -28606]),
],
( 0.020, -0.020,): [
MeasRow(4e-09, [ 5831, -16989, 802, 4197, -17041, 5770]),
MeasRow(6e-09, [-28534, -11811, -29051, -28656, 6809, -28616]),
],
( 0.050, -0.050,): [
MeasRow(4e-09, [ 7260, -16986, 2634, 1310, -17034, 1601]),
MeasRow(6e-09, [-28536, -10126, -29049, -28675, 3834, -28645]),
],
( 0.070, -0.070,): [
MeasRow(4e-09, [ 8277, -16983, 5578, -4029, -17027, -3929]),
MeasRow(6e-09, [-28542, -7764, -29042, -28713, -568, -28693]),
],
( 0.100, -0.100,): [
MeasRow(4e-09, [ 11693, -16983, 12486, -12280, -17027, -12236]),
MeasRow(6e-09, [-28561, -3313, -29030, -28785, -7528, -28770]),
],
( 0.120, -0.120,): [
MeasRow(4e-09, [ 15358, -17014, 16109, -16143, -17143, -16100]),
MeasRow(6e-09, [-28552, -564, -29020, -28826, -10976, -28804]),
],
( 0.150, -0.150,): [
MeasRow(4e-09, [ 16301, -17031, 16580, -16761, -17210, -16739]),
MeasRow(6e-09, [-28557, -81, -29027, -28823, -11510, -28802]),
],
( 0.170, -0.170,): [
MeasRow(4e-09, [ 16376, -17035, 16615, -16805, -17217, -16784]),
MeasRow(6e-09, [-28556, -38, -29026, -28825, -11557, -28803]),
],
( 0.200, -0.200,): [
MeasRow(4e-09, [ 16450, -17038, 16653, -16853, -17226, -16835]),
MeasRow(6e-09, [-28557, 7, -29025, -28826, -11600, -28805]),
],
( 0.220, -0.220,): [
MeasRow(4e-09, [ 16486, -17040, 16670, -16876, -17230, -16861]),
MeasRow(6e-09, [-28556, 26, -29024, -28827, -11624, -28805]),
],
( 0.250, -0.250,): [
MeasRow(4e-09, [ 16529, -17040, 16697, -16905, -17236, -16890]),
MeasRow(6e-09, [-28556, 51, -29025, -28827, -11652, -28806]),
],
( 1.000, -1.000,): [
MeasRow(4e-09, [ 16834, -17069, 16847, -17120, -17337, -17114]),
MeasRow(6e-09, [-28553, 188, -29025, -28831, -11892, -28812]),
],
}),
'57-buf-1p-2n-0.0004rad-2000ctl_cond-20000coupling_cond-2000ps-100ps-3ctl-3coupling-5_1_5_1_winding-49999998976e0-drive-': ParameterizedMeas({
(-1.000, -1.000,): [
MeasRow(4e-09, [-17476, -17535, -16864, -17556, -17796, -17574]),
MeasRow(6e-09, [-29696, -12620, -29786, -29737, -3824, -29699]),
],
(-1.000, 1.000,): [
MeasRow(4e-09, [-17478, -17232, -16850, 16971, -16939, 16994]),
MeasRow(6e-09, [-29719, -15322, -29805, -29614, 15976, -29647]),
],
(-0.200, 0.200,): [
MeasRow(4e-09, [-17241, -17191, -16823, 16658, -17111, 16706]),
MeasRow(6e-09, [-29715, -15340, -29804, -29617, 15908, -29650]),
],
(-0.100, 0.100,): [
MeasRow(4e-09, [-17096, -17194, -16791, 16434, -17135, 16481]),
MeasRow(6e-09, [-29715, -15338, -29803, -29619, 15860, -29651]),
],
( 0.000, 0.000,): [
MeasRow(4e-09, [ 7130, -17108, -249, 7030, -17143, 8147]),
MeasRow(6e-09, [-29633, -10306, -29797, -29667, 11214, -29672]),
],
( 0.050, -0.050,): [
MeasRow(4e-09, [ 15632, -17136, 16713, -16491, -17306, -16444]),
MeasRow(6e-09, [-29628, 1702, -29789, -29761, -8820, -29711]),
],
( 0.100, -0.100,): [
MeasRow(4e-09, [ 16436, -17165, 16780, -17148, -17419, -17132]),
MeasRow(6e-09, [-29632, 2202, -29788, -29760, -9410, -29708]),
],
( 0.150, -0.150,): [
MeasRow(4e-09, [ 16571, -17170, 16793, -17246, -17445, -17236]),
MeasRow(6e-09, [-29632, 2284, -29788, -29761, -9501, -29708]),
],
( 0.200, -0.200,): [
MeasRow(4e-09, [ 16642, -17172, 16815, -17295, -17464, -17288]),
MeasRow(6e-09, [-29631, 2326, -29787, -29760, -9562, -29708]),
],
( 0.250, -0.250,): [
MeasRow(4e-09, [ 16693, -17171, 16830, -17330, -17480, -17326]),
MeasRow(6e-09, [-29631, 2359, -29787, -29761, -9600, -29708]),
],
( 1.000, -1.000,): [
MeasRow(4e-09, [ 16931, -17146, 16853, -17560, -17643, -17571]),
MeasRow(6e-09, [-29628, 2531, -29785, -29763, -9868, -29710]),
],
}),
'57-buf-1p-2n-0.0004rad-2000ctl_cond-20000coupling_cond-2000ps-100ps-6ctl-6coupling-3_1_3_1_winding-1e10-drive-': ParameterizedMeas({
(-1.000, -1.000,): [
MeasRow(4e-09, [-18034, -18043, -16824, -18223, -18872, -18206]),
MeasRow(6e-09, [-29643, -13572, -29825, -29643, -8118, -29655]),
],
(-1.000, 1.000,): [
MeasRow(4e-09, [-18102, -17652, -16824, 17043, -16855, 17038]),
MeasRow(6e-09, [-29664, -16432, -29838, -29611, 16645, -29627]),
],
(-0.200, 0.200,): [
MeasRow(4e-09, [-17718, -17548, -16736, 16617, -17211, 16613]),
MeasRow(6e-09, [-29659, -16439, -29834, -29614, 16596, -29629]),
],
(-0.100, 0.100,): [
MeasRow(4e-09, [-12258, -17275, -12663, 12661, -17566, 12703]),
MeasRow(6e-09, [-29640, -16043, -29837, -29618, 16168, -29633]),
],
( 0.000, 0.000,): [
MeasRow(4e-09, [ 8669, -17301, -1, 8542, -17564, 9110]),
MeasRow(6e-09, [-29628, -6136, -29833, -29621, 12211, -29637]),
],
( 0.050, -0.050,): [
MeasRow(4e-09, [ 10492, -17305, 884, 1707, -17550, 1841]),
MeasRow(6e-09, [-29630, -2945, -29831, -29626, 6260, -29642]),
],
( 0.100, -0.100,): [
MeasRow(4e-09, [ 12546, -17303, 12669, -12357, -17534, -12255]),
MeasRow(6e-09, [-29629, 2216, -29817, -29629, -5531, -29643]),
],
( 0.150, -0.150,): [
MeasRow(4e-09, [ 16344, -17288, 16594, -17607, -18245, -17593]),
MeasRow(6e-09, [-29629, 5496, -29813, -29632, -10579, -29645]),
],
( 0.200, -0.200,): [
MeasRow(4e-09, [ 16611, -17270, 16740, -17849, -18341, -17842]),
MeasRow(6e-09, [-29627, 5689, -29814, -29633, -10855, -29645]),
],
( 0.250, -0.250,): [
MeasRow(4e-09, [ 16675, -17253, 16760, -17913, -18387, -17904]),
MeasRow(6e-09, [-29625, 5752, -29813, -29633, -10950, -29645]),
],
( 1.000, -1.000,): [
MeasRow(4e-09, [ 17021, -17152, 16826, -18246, -18660, -18230]),
MeasRow(6e-09, [-29624, 6063, -29811, -29638, -11445, -29647]),
],
}),
'57-buf-1p-2n-0.0004rad-2000ctl_cond-20000coupling_cond-2000ps-100ps-6ctl-6coupling-3_1_3_1_winding-3e9-drive-': ParameterizedMeas({
(-1.000, -1.000,): [
MeasRow(4e-09, [-17679, -17701, -16769, -17860, -18381, -17850]),
MeasRow(6e-09, [-28044, -14526, -28129, -28036, -10406, -28047]),
],
(-1.000, 1.000,): [
MeasRow(4e-09, [-17710, -17367, -16770, 16904, -16799, 16900]),
MeasRow(6e-09, [-28059, -15902, -28139, -28030, 11734, -28040]),
],
(-0.200, 0.200,): [
MeasRow(4e-09, [ -1287, -17082, -1476, 8820, -17289, 8837]),
MeasRow(6e-09, [-28036, -11553, -28113, -28027, 6457, -28038]),
],
(-0.100, 0.100,): [
MeasRow(4e-09, [ 889, -17085, -24, 5557, -17282, 5619]),
MeasRow(6e-09, [-28036, -9992, -28117, -28031, 4428, -28042]),
],
( 0.000, 0.000,): [
MeasRow(4e-09, [ 3806, -17089, 0, 2042, -17272, 2153]),
MeasRow(6e-09, [-28035, -8227, -28117, -28029, 2345, -28040]),
],
( 0.050, -0.050,): [
MeasRow(4e-09, [ 5309, -17091, 2, 635, -17269, 787]),
MeasRow(6e-09, [-28036, -7420, -28116, -28030, 1468, -28040]),
],
( 0.100, -0.100,): [
MeasRow(4e-09, [ 6685, -17093, 31, 193, -17270, 276]),
MeasRow(6e-09, [-28037, -6827, -28117, -28029, 1105, -28040]),
],
( 0.150, -0.150,): [
MeasRow(4e-09, [ 7991, -17096, 127, 62, -17271, 93]),
MeasRow(6e-09, [-28033, -6328, -28117, -28029, 937, -28040]),
],
( 0.200, -0.200,): [
MeasRow(4e-09, [ 9213, -17100, 1497, -1343, -17267, -1303]),
MeasRow(6e-09, [-28033, -5674, -28122, -28029, 24, -28040]),
],
( 0.250, -0.250,): [
MeasRow(4e-09, [ 10359, -17101, 5568, -5368, -17260, -5322]),
MeasRow(6e-09, [-28036, -4654, -28122, -28028, -2511, -28039]),
],
( 1.000, -1.000,): [
MeasRow(4e-09, [ 16874, -17041, 16771, -17867, -18200, -17856]),
MeasRow(6e-09, [-28036, -1101, -28112, -28041, -11439, -28050]),
],
}),
'57-buf-1p-2n-0.0004rad-2000ctl_cond-20000coupling_cond-2000ps-100ps-6ctl-6coupling-3_1_3_1_winding-5e9-drive-': ParameterizedMeas({
(-1.000, -1.000,): [
MeasRow(4e-09, [-17834, -17850, -16784, -18018, -18596, -18006]),
MeasRow(6e-09, [-28776, -14156, -28981, -28770, -9584, -28781]),
],
(-1.000, 1.000,): [
MeasRow(4e-09, [-17878, -17490, -16785, 16970, -16819, 16965]),
MeasRow(6e-09, [-28785, -15727, -28993, -28757, 15886, -28766]),
],
(-0.200, 0.200,): [
MeasRow(4e-09, [-12301, -17159, -12653, 12581, -17407, 12551]),
MeasRow(6e-09, [-28768, -14862, -28919, -28760, 13908, -28771]),
],
(-0.100, 0.100,): [
MeasRow(4e-09, [ 1438, -17175, -303, 9373, -17409, 9468]),
MeasRow(6e-09, [-28766, -10702, -28893, -28757, 10826, -28767]),
],
( 0.000, 0.000,): [
MeasRow(4e-09, [ 6861, -17182, 0, 6078, -17398, 6396]),
MeasRow(6e-09, [-28766, -7015, -28892, -28761, 8150, -28769]),
],
( 0.050, -0.050,): [
MeasRow(4e-09, [ 8272, -17185, 35, 4268, -17394, 4684]),
MeasRow(6e-09, [-28763, -5901, -28892, -28759, 6843, -28768]),
],
( 0.100, -0.100,): [
MeasRow(4e-09, [ 9540, -17190, 373, 1232, -17391, 1398]),
MeasRow(6e-09, [-28763, -4506, -28892, -28760, 4450, -28770]),
],
( 0.150, -0.150,): [
MeasRow(4e-09, [ 10731, -17190, 5570, -5369, -17380, -5295]),
MeasRow(6e-09, [-28766, -2318, -28899, -28760, -573, -28770]),
],
( 0.200, -0.200,): [
MeasRow(4e-09, [ 12412, -17188, 12653, -12387, -17374, -12327]),
MeasRow(6e-09, [-28767, 69, -28927, -28762, -5905, -28772]),
],
( 0.250, -0.250,): [
MeasRow(4e-09, [ 15565, -17184, 16175, -16734, -17799, -16717]),
MeasRow(6e-09, [-28763, 2321, -28926, -28773, -9566, -28782]),
],
( 1.000, -1.000,): [
MeasRow(4e-09, [ 16942, -17093, 16783, -18033, -18401, -18019]),
MeasRow(6e-09, [-28765, 3057, -28922, -28773, -10817, -28781]),
],
}),
}

View File

@ -6378,8 +6378,8 @@ fn main() {
][..],
&[
// negative side
// (-0.10, 0.10),
// (-0.20, 0.20),
(-0.10, 0.10),
(-0.20, 0.20),
// (-0.25, 0.25),
// (-0.05, 0.05),
// (-0.15, 0.15),
@ -6417,7 +6417,7 @@ fn main() {
( 0.23, -0.23),
][..],
] {
for (ctl_cond, coupling_cond, clock_duration, clock_decay, coupling_loops, pos_inp_loops, neg_inp_loops, s_major, cur_flt) in [
for (pos_cores, neg_cores, ctl_cond, coupling_cond, clock_duration, clock_decay, coupling_loops, pos_inp_loops, neg_inp_loops, s_major, cur_flt) in [
// total slot use is L*(6*A + 1),
// where L is the "coupling loops" and A is the inp_loops ("asymmetric loops")
// e.g. L=6, A=1 gives 42
@ -6426,10 +6426,31 @@ fn main() {
// special case of A=0 is L*(3 + 1)
// L=10, A=0 gives 40
// Y ranges -17000 to 0
// peak slope: 0.68
(1, 2, 2e3, 2e4, ps(2000), ps(100), 3, 2, 1, um(400), 2e10),
// Y ranges -17000 to -4000
// peak slope: 0.50
(1, 2, 2e3, 2e4, ps(2000), ps(100), 3, 2, 1, um(400), 1e10),
// Y ranges -16000 to +6000
// slope: 0.64
(1, 2, 2e3, 2e4, ps(2000), ps(100), 6, 1, 1, um(400), 1e10),
// Y ranges -16000 to -1000
// peak slope: 0.48
(1, 2, 2e3, 2e4, ps(2000), ps(100), 6, 1, 1, um(400), 3e9),
// Y(16900, -17600) = (2500, -9900)
// slope: 0.51
(1, 2, 2e3, 2e4, ps(2000), ps(100), 3, 2, 2, um(400), 5e10),
// Y(16900, -18000) = (3100, -10900)
// peak slope: 0.73
(1, 2, 2e3, 2e4, ps(2000), ps(100), 6, 1, 1, um(400), 5e9),
// Y(-18000, 17000) = (-13300, 15600)
// Y( 17000, -18000) = ( 15600, -13400)
// slope: 0.83
(2e3, 2e4, ps(2000), ps(100), 6, 1, 1, um(400), 5e9),
// (2, 2, 2e3, 2e4, ps(2000), ps(100), 6, 1, 1, um(400), 5e9),
// Y(-17700, 16900) = (-14600, 3000)
// Y( 16900, -17700) = ( 3000, -14600)
// slope: 0.51
@ -6438,11 +6459,12 @@ fn main() {
// Y(-18500, 17200) = (-15300, 16900)
// Y( 17200, -18500) = ( 16900, -15400)
// slope: 0.94
(2e3, 2e4, ps(2000), ps(100), 6, 1, 1, um(400), 2e10),
// (2, 2, 2e3, 2e4, ps(2000), ps(100), 6, 1, 1, um(400), 2e10),
// Y(-17500, 17000) = (-15200, 16400)
// Y( 17000, -17600) = ( 16400, -15100)
// slope: 0.95
(2e3, 2e4, ps(2000), ps(100), 3, 2, 2, um(400), 5e10),
// (2, 2, 2e3, 2e4, ps(2000), ps(100), 3, 2, 2, um(400), 5e10),
] {
for &(init_flt_a, init_flt_b) in init_set {
// layout:
@ -6476,33 +6498,61 @@ fn main() {
params = params.with_coupling(1, 4, 1+i, net_slots, CouplingMethod::Outside);
}
if pos_inp_loops != 0 {
// couple input M0 -> output M1
params = couple_asymmetric_buffer_bi(&params, 0 /* low core */, pos_inp_loops /* M0 loops */, 0 /* M1 loops */, 1 + slots_per_asym /* slot offset */, net_slots);
// couple input M2 -> output M1
params = couple_asymmetric_buffer_bi(&params, 1 /* low core */, 0 /* M1 loops */, pos_inp_loops /* M2 loops */, 1 + 2*slots_per_asym /* slot offset */, net_slots);
if pos_cores > 0 {
// couple input M0 -> output M1
params = couple_asymmetric_buffer_bi(&params, 0 /* low core */, pos_inp_loops /* M0 loops */, 0 /* M1 loops */, 1 + slots_per_asym /* slot offset */, net_slots);
}
if pos_cores > 1 {
// couple input M2 -> output M1
params = couple_asymmetric_buffer_bi(&params, 1 /* low core */, 0 /* M1 loops */, pos_inp_loops /* M2 loops */, 1 + 2*slots_per_asym /* slot offset */, net_slots);
}
} else {
// directly couple M0 -> M1, M2 -> M1
for i in 0..slots_per_asym {
params = params.with_coupling(0, 1, 1 + slots_per_asym + i, net_slots, CouplingMethod::Direct);
params = params.with_coupling(2, 1, 1 + 2*slots_per_asym + i, net_slots, CouplingMethod::Direct);
if pos_cores > 0 {
params = params.with_coupling(0, 1, 1 + slots_per_asym + i, net_slots, CouplingMethod::Direct);
}
if pos_cores > 1 {
params = params.with_coupling(2, 1, 1 + 2*slots_per_asym + i, net_slots, CouplingMethod::Direct);
}
}
}
if neg_inp_loops != 0 {
// couple input M3 -> output M4
params = couple_asymmetric_buffer_bi(&params, 3 /* low core */, neg_inp_loops /* M3 loops */, 0 /* M4 loops */, 1 + slots_per_asym /* slot offset */, net_slots);
// couple input M5 -> output M4
params = couple_asymmetric_buffer_bi(&params, 4 /* low core */, 0 /* M4 loops */, neg_inp_loops /* M5 loops */, 1 + 2*slots_per_asym /* slot offset */, net_slots);
if neg_cores > 0 {
// couple input M3 -> output M4
params = couple_asymmetric_buffer_bi(&params, 3 /* low core */, neg_inp_loops /* M3 loops */, 0 /* M4 loops */, 1 + slots_per_asym /* slot offset */, net_slots);
}
if neg_cores > 1 {
// couple input M5 -> output M4
params = couple_asymmetric_buffer_bi(&params, 4 /* low core */, 0 /* M4 loops */, neg_inp_loops /* M5 loops */, 1 + 2*slots_per_asym /* slot offset */, net_slots);
}
} else {
// directly couple M3 -> M4, M5 -> M4
for i in 0..slots_per_asym {
params = params.with_coupling(3, 4, 1 + slots_per_asym + i, net_slots, CouplingMethod::Direct);
params = params.with_coupling(5, 4, 1 + 2*slots_per_asym + i, net_slots, CouplingMethod::Direct);
if neg_cores > 0 {
params = params.with_coupling(3, 4, 1 + slots_per_asym + i, net_slots, CouplingMethod::Direct);
}
if neg_cores > 1 {
params = params.with_coupling(5, 4, 1 + 2*slots_per_asym + i, net_slots, CouplingMethod::Direct);
}
}
}
let prefix = if pos_cores == 2 && neg_cores == 2 {
"".into()
} else {
format!("-{pos_cores}p-{neg_cores}n")
};
let name = asymmetric_binary_gate_name_v2(
&params, "57-buf", coupling_loops /* ctl loops */, coupling_loops, 2*pos_inp_loops + 1, 2*neg_inp_loops + 1, init_flt_a, init_flt_b
&params,
&format!("57-buf{}", prefix),
coupling_loops /* ctl loops */,
coupling_loops,
2*pos_inp_loops + 1,
2*neg_inp_loops + 1,
init_flt_a,
init_flt_b,
);
run_sim(
&name,