diff --git a/crates/applications/stacked_cores/scripts/stacked_cores_52xx_db.py b/crates/applications/stacked_cores/scripts/stacked_cores_52xx_db.py index 8face97..a00a312 100644 --- a/crates/applications/stacked_cores/scripts/stacked_cores_52xx_db.py +++ b/crates/applications/stacked_cores/scripts/stacked_cores_52xx_db.py @@ -410,10 +410,34 @@ DB = { MeasRow(2e-09, [-17508, -17960, 16995, -17092]), MeasRow(4e-09, [-16634, -28456, -28448, 4261]), ], + (-0.250, 0.250,): [ + MeasRow(2e-09, [-17238, -15983, 16938, -17147]), + MeasRow(4e-09, [-16524, -28453, -28449, 3419]), + ], + (-0.220, 0.220,): [ + MeasRow(2e-09, [-17226, -14250, 16383, -17220]), + MeasRow(4e-09, [-16081, -28449, -28446, 2449]), + ], (-0.200, -0.200,): [ MeasRow(2e-09, [-17278, -3920, -4057, -17280]), MeasRow(4e-09, [ -9467, -28449, -28454, -9560]), ], + (-0.200, 0.200,): [ + MeasRow(2e-09, [-17245, -12380, 15802, -17275]), + MeasRow(4e-09, [-15313, -28447, -28445, 1429]), + ], + (-0.170, 0.170,): [ + MeasRow(2e-09, [-17268, -9550, 14257, -17292]), + MeasRow(4e-09, [-13980, -28448, -28448, -282]), + ], + (-0.150, 0.150,): [ + MeasRow(2e-09, [-17271, -7695, 12547, -17291]), + MeasRow(4e-09, [-13036, -28449, -28449, -1612]), + ], + (-0.120, 0.120,): [ + MeasRow(2e-09, [-17273, -5017, 10005, -17289]), + MeasRow(4e-09, [-11754, -28449, -28448, -3434]), + ], (-0.100, -0.300,): [ MeasRow(2e-09, [-17287, 3539, -12784, -17273]), MeasRow(4e-09, [ -3974, -28445, -28454, -14017]), @@ -422,10 +446,26 @@ DB = { MeasRow(2e-09, [-17280, -1, -52, -17282]), MeasRow(4e-09, [ -8685, -28446, -28452, -8721]), ], + (-0.100, 0.100,): [ + MeasRow(2e-09, [-17275, -3362, 8453, -17287]), + MeasRow(4e-09, [-11027, -28448, -28446, -4474]), + ], + (-0.070, 0.070,): [ + MeasRow(2e-09, [-17277, -1396, 6564, -17285]), + MeasRow(4e-09, [-10182, -28447, -28449, -5662]), + ], (-0.050, -0.200,): [ MeasRow(2e-09, [-17285, 3972, -6987, -17276]), MeasRow(4e-09, [ -5404, -28445, -28455, -11867]), ], + (-0.050, 0.050,): [ + MeasRow(2e-09, [-17277, -262, 5483, -17284]), + MeasRow(4e-09, [ -9651, -28447, -28451, -6338]), + ], + (-0.020, 0.020,): [ + MeasRow(2e-09, [-17279, 1532, 3855, -17283]), + MeasRow(4e-09, [ -8738, -28446, -28448, -7375]), + ], ( 0.000, -0.100,): [ MeasRow(2e-09, [-17282, 4246, -1577, -17280]), MeasRow(4e-09, [ -6504, -28444, -28454, -10022]), @@ -524,10 +564,34 @@ DB = { MeasRow(2e-09, [-18633, -19366, 17476, -17129]), MeasRow(4e-09, [-16353, -30862, -30866, 13132]), ], + (-0.250, 0.250,): [ + MeasRow(2e-09, [-17931, -16176, 17812, -17268]), + MeasRow(4e-09, [-15204, -30864, -30865, 12541]), + ], + (-0.220, 0.220,): [ + MeasRow(2e-09, [-17819, -14738, 17280, -17417]), + MeasRow(4e-09, [-14319, -30863, -30865, 11815]), + ], (-0.200, -0.200,): [ MeasRow(2e-09, [-17937, -4041, -4102, -17937]), MeasRow(4e-09, [ -5017, -30864, -30866, -5124]), ], + (-0.200, 0.200,): [ + MeasRow(2e-09, [-17830, -12743, 16669, -17567]), + MeasRow(4e-09, [-13135, -30864, -30864, 10878]), + ], + (-0.170, 0.170,): [ + MeasRow(2e-09, [-17852, -9550, 15683, -17796]), + MeasRow(4e-09, [-11334, -30864, -30865, 9413]), + ], + (-0.150, 0.150,): [ + MeasRow(2e-09, [-17884, -7426, 14863, -17888]), + MeasRow(4e-09, [-10240, -30863, -30866, 8422]), + ], + (-0.120, 0.120,): [ + MeasRow(2e-09, [-17924, -4285, 13111, -17941]), + MeasRow(4e-09, [ -8558, -30864, -30866, 6649]), + ], (-0.100, -0.300,): [ MeasRow(2e-09, [-17947, 5128, -14351, -17950]), MeasRow(4e-09, [ 3826, -30864, -30865, -12572]), @@ -536,10 +600,26 @@ DB = { MeasRow(2e-09, [-17943, 1245, 1215, -17940]), MeasRow(4e-09, [ -2878, -30864, -30866, -2961]), ], + (-0.100, 0.100,): [ + MeasRow(2e-09, [-17936, -2251, 11556, -17952]), + MeasRow(4e-09, [ -7454, -30864, -30865, 5222]), + ], + (-0.070, 0.070,): [ + MeasRow(2e-09, [-17940, 588, 9078, -17951]), + MeasRow(4e-09, [ -5581, -30864, -30865, 2888]), + ], (-0.050, -0.200,): [ MeasRow(2e-09, [-17949, 5960, -7439, -17935]), MeasRow(4e-09, [ 2834, -30864, -30865, -9248]), ], + (-0.050, 0.050,): [ + MeasRow(2e-09, [-17942, 2189, 7850, -17950]), + MeasRow(4e-09, [ -4270, -30864, -30866, 1560]), + ], + (-0.020, 0.020,): [ + MeasRow(2e-09, [-17944, 4113, 6275, -17947]), + MeasRow(4e-09, [ -2400, -30864, -30866, -182]), + ], ( 0.000, -0.100,): [ MeasRow(2e-09, [-17951, 6613, -553, -17938]), MeasRow(4e-09, [ 1592, -30864, -30866, -5794]), @@ -638,10 +718,34 @@ DB = { MeasRow(2e-09, [-18799, -19508, 17570, -17162]), MeasRow(4e-09, [-16581, -31210, -31209, 15188]), ], + (-0.250, 0.250,): [ + MeasRow(2e-09, [-18555, -18849, 17145, -17361]), + MeasRow(4e-09, [-16508, -31209, -31211, 14859]), + ], + (-0.220, 0.220,): [ + MeasRow(2e-09, [-18404, -18072, 17368, -17358]), + MeasRow(4e-09, [-16424, -31209, -31211, 14835]), + ], (-0.200, -0.200,): [ MeasRow(2e-09, [-18065, -9423, -9528, -18062]), MeasRow(4e-09, [ -6035, -31210, -31213, -6179]), ], + (-0.200, 0.200,): [ + MeasRow(2e-09, [-18271, -17413, 17570, -17353]), + MeasRow(4e-09, [-16342, -31209, -31211, 14821]), + ], + (-0.170, 0.170,): [ + MeasRow(2e-09, [-18069, -16325, 17787, -17367]), + MeasRow(4e-09, [-16157, -31209, -31210, 14701]), + ], + (-0.150, 0.150,): [ + MeasRow(2e-09, [-17949, -15084, 17422, -17490]), + MeasRow(4e-09, [-15534, -31206, -31210, 14103]), + ], + (-0.120, 0.120,): [ + MeasRow(2e-09, [-17972, -10612, 16063, -17819]), + MeasRow(4e-09, [-12596, -31209, -31209, 11784]), + ], (-0.100, -0.300,): [ MeasRow(2e-09, [-18067, 5167, -20131, -18852]), MeasRow(4e-09, [ 7226, -31209, -31209, -16382]), @@ -650,10 +754,26 @@ DB = { MeasRow(2e-09, [-18068, -1253, -1303, -18064]), MeasRow(4e-09, [ -2761, -31208, -31210, -2848]), ], + (-0.100, 0.100,): [ + MeasRow(2e-09, [-18007, -7418, 14962, -17991]), + MeasRow(4e-09, [-10486, -31209, -31210, 10122]), + ], + (-0.070, 0.070,): [ + MeasRow(2e-09, [-18061, -2730, 12268, -18067]), + MeasRow(4e-09, [ -7310, -31208, -31211, 7142]), + ], (-0.050, -0.200,): [ MeasRow(2e-09, [-18070, 6628, -14729, -18088]), MeasRow(4e-09, [ 6652, -31209, -31208, -13582]), ], + (-0.050, 0.050,): [ + MeasRow(2e-09, [-18066, 181, 9808, -18069]), + MeasRow(4e-09, [ -4971, -31208, -31210, 4642]), + ], + (-0.020, 0.020,): [ + MeasRow(2e-09, [-18068, 3737, 7127, -18069]), + MeasRow(4e-09, [ -1801, -31209, -31211, 1658]), + ], ( 0.000, -0.100,): [ MeasRow(2e-09, [-18074, 7689, -4284, -18062]), MeasRow(4e-09, [ 4493, -31209, -31211, -7374]), @@ -743,4 +863,158 @@ DB = { MeasRow(4e-09, [ 15203, -31209, -31211, -16592]), ], }), + '53-buf--0.0004rad-2000ctl_cond-20000coupling_cond-2000ps-100ps-13ctl-13coupling-1_1_winding-30000001024e0-drive-': ParameterizedMeas({ + (-1.000, -1.000,): [ + MeasRow(2e-09, [-20249, -21908, -21908, -20249]), + MeasRow(4e-09, [-10325, -32229, -32230, -10338]), + ], + (-1.000, 1.000,): [ + MeasRow(2e-09, [-19998, -19494, 16658, -17591]), + MeasRow(4e-09, [-13753, -32226, -32225, 14257]), + ], + (-0.250, 0.250,): [ + MeasRow(2e-09, [-19623, -19193, 16163, -17986]), + MeasRow(4e-09, [-13226, -32226, -32226, 13624]), + ], + (-0.220, 0.220,): [ + MeasRow(2e-09, [-19600, -19170, 16119, -18023]), + MeasRow(4e-09, [-13189, -32226, -32227, 13568]), + ], + (-0.200, -0.200,): [ + MeasRow(2e-09, [-19875, -20606, -20619, -19875]), + MeasRow(4e-09, [ -9437, -32228, -32229, -9453]), + ], + (-0.200, 0.200,): [ + MeasRow(2e-09, [-19585, -19148, 16085, -18050]), + MeasRow(4e-09, [-13162, -32226, -32227, 13524]), + ], + (-0.170, 0.170,): [ + MeasRow(2e-09, [-19558, -19103, 16030, -18096]), + MeasRow(4e-09, [-13108, -32226, -32226, 13449]), + ], + (-0.150, 0.150,): [ + MeasRow(2e-09, [-19532, -19059, 15998, -18127]), + MeasRow(4e-09, [-13058, -32226, -32226, 13398]), + ], + (-0.120, 0.120,): [ + MeasRow(2e-09, [-19265, -18179, 16261, -18117]), + MeasRow(4e-09, [-12413, -32226, -32226, 13436]), + ], + (-0.100, -0.300,): [ + MeasRow(2e-09, [-18977, -2453, -20395, -20234]), + MeasRow(4e-09, [ 1929, -32228, -32228, -12050]), + ], + (-0.100, -0.100,): [ + MeasRow(2e-09, [-19009, -7247, -7278, -19008]), + MeasRow(4e-09, [ -2908, -32225, -32226, -2940]), + ], + (-0.100, 0.100,): [ + MeasRow(2e-09, [-18954, -16638, 16600, -18120]), + MeasRow(4e-09, [-11372, -32224, -32226, 13411]), + ], + (-0.070, 0.070,): [ + MeasRow(2e-09, [-18913, -11406, 16557, -18117]), + MeasRow(4e-09, [ -8376, -32224, -32226, 12581]), + ], + (-0.050, -0.200,): [ + MeasRow(2e-09, [-18995, 8385, -20274, -20168]), + MeasRow(4e-09, [ 8411, -32226, -32227, -13340]), + ], + (-0.050, 0.050,): [ + MeasRow(2e-09, [-18938, -5052, 15561, -18542]), + MeasRow(4e-09, [ -4664, -32225, -32225, 10663]), + ], + (-0.020, 0.020,): [ + MeasRow(2e-09, [-19008, 4596, 13221, -18962]), + MeasRow(4e-09, [ 1073, -32223, -32226, 7438]), + ], + ( 0.000, -0.100,): [ + MeasRow(2e-09, [-18947, 13727, -14811, -19001]), + MeasRow(4e-09, [ 10851, -32225, -32225, -10094]), + ], + ( 0.000, 0.000,): [ + MeasRow(2e-09, [-19032, 10161, 10159, -19031]), + MeasRow(4e-09, [ 4740, -32222, -32224, 4737]), + ], + ( 0.020, -0.020,): [ + MeasRow(2e-09, [-18964, 13216, 4594, -19008]), + MeasRow(4e-09, [ 7435, -32225, -32225, 1066]), + ], + ( 0.050, -0.050,): [ + MeasRow(2e-09, [-18544, 15564, -5056, -18936]), + MeasRow(4e-09, [ 10673, -32224, -32226, -4685]), + ], + ( 0.070, -0.070,): [ + MeasRow(2e-09, [-18117, 16560, -11417, -18912]), + MeasRow(4e-09, [ 12602, -32225, -32225, -8409]), + ], + ( 0.100, -0.100,): [ + MeasRow(2e-09, [-18121, 16599, -16645, -18952]), + MeasRow(4e-09, [ 13432, -32225, -32226, -11403]), + ], + ( 0.100, 0.000,): [ + MeasRow(2e-09, [-18013, 16704, 4312, -18932]), + MeasRow(4e-09, [ 10288, -32224, -32225, 561]), + ], + ( 0.100, 0.100,): [ + MeasRow(2e-09, [-18234, 16560, 16555, -18232]), + MeasRow(4e-09, [ 8278, -32223, -32224, 8264]), + ], + ( 0.120, -0.120,): [ + MeasRow(2e-09, [-18118, 16261, -18185, -19264]), + MeasRow(4e-09, [ 13456, -32225, -32227, -12439]), + ], + ( 0.150, -0.150,): [ + MeasRow(2e-09, [-18128, 15999, -19058, -19530]), + MeasRow(4e-09, [ 13417, -32226, -32227, -13080]), + ], + ( 0.170, -0.170,): [ + MeasRow(2e-09, [-18095, 16031, -19103, -19556]), + MeasRow(4e-09, [ 13467, -32226, -32227, -13132]), + ], + ( 0.200, -0.200,): [ + MeasRow(2e-09, [-18051, 16085, -19149, -19582]), + MeasRow(4e-09, [ 13543, -32226, -32227, -13184]), + ], + ( 0.200, -0.100,): [ + MeasRow(2e-09, [-17960, 16889, -16571, -18961]), + MeasRow(4e-09, [ 13714, -32225, -32226, -11400]), + ], + ( 0.200, 0.000,): [ + MeasRow(2e-09, [-17829, 17055, 3172, -18929]), + MeasRow(4e-09, [ 10825, -32224, -32225, -108]), + ], + ( 0.200, 0.100,): [ + MeasRow(2e-09, [-17776, 17669, 16584, -18303]), + MeasRow(4e-09, [ 9288, -32224, -32224, 8100]), + ], + ( 0.220, -0.220,): [ + MeasRow(2e-09, [-18025, 16119, -19171, -19598]), + MeasRow(4e-09, [ 13585, -32226, -32227, -13214]), + ], + ( 0.250, -0.250,): [ + MeasRow(2e-09, [-17988, 16157, -19194, -19621]), + MeasRow(4e-09, [ 13640, -32226, -32227, -13249]), + ], + ( 0.300, -0.300,): [ + MeasRow(2e-09, [-17935, 16219, -19225, -19657]), + MeasRow(4e-09, [ 13721, -32226, -32227, -13302]), + ], + ( 0.300, -0.200,): [ + MeasRow(2e-09, [-17949, 16265, -19080, -19588]), + MeasRow(4e-09, [ 13716, -32226, -32227, -13170]), + ], + ( 0.300, -0.100,): [ + MeasRow(2e-09, [-17864, 17045, -16615, -18974]), + MeasRow(4e-09, [ 13886, -32225, -32226, -11451]), + ], + ( 0.300, 0.000,): [ + MeasRow(2e-09, [-17730, 17221, 2408, -18930]), + MeasRow(4e-09, [ 11123, -32225, -32225, -561]), + ], + ( 1.000, -1.000,): [ + MeasRow(2e-09, [-17594, 16657, -19494, -19998]), + MeasRow(4e-09, [ 14276, -32225, -32228, -13778]), + ], + }), } \ No newline at end of file diff --git a/crates/applications/stacked_cores/src/main.rs b/crates/applications/stacked_cores/src/main.rs index 2cadc7e..cf2b27f 100644 --- a/crates/applications/stacked_cores/src/main.rs +++ b/crates/applications/stacked_cores/src/main.rs @@ -5877,11 +5877,11 @@ fn main() { &[ // establish rough domain/range ( 1.00, -1.00), - (-1.00, -1.00), (-1.00, 1.00), // technically extraneous ( 0.00, 0.00), ( 0.20, -0.20), ( 0.10, -0.10), + (-1.00, -1.00), // uninitialized case ][..], &[ // more detailed sweep @@ -5890,6 +5890,27 @@ fn main() { ( 0.15, -0.15), ( 0.25, -0.25), ][..], + &[ + // even more verbosity + ( 0.02, -0.02), + ( 0.07, -0.07), + ( 0.12, -0.12), + ( 0.17, -0.17), + ( 0.22, -0.22), + ][..], + &[ + // negative side + (-0.10, 0.10), + (-0.20, 0.20), + (-0.25, 0.25), + (-0.05, 0.05), + (-0.15, 0.15), + (-0.02, 0.02), + (-0.07, 0.07), + (-0.12, 0.12), + (-0.17, 0.17), + (-0.22, 0.22), + ][..], &[ // test some asymmetries -- specifically where A1 is higher than expected ( 0.20, 0.00), @@ -5910,31 +5931,26 @@ fn main() { (-0.10, -0.10), ( 0.10, 0.10), ][..], - &[ - // even more verbosity - ( 0.02, -0.02), - ( 0.07, -0.07), - ( 0.12, -0.12), - ( 0.17, -0.17), - ( 0.22, -0.22), - ][..], ] { for (ctl_cond, coupling_cond, clock_duration, clock_decay, coupling_loops, inp_loops, s_major, cur_flt) in [ - // total slot use count is L*(4*A + 1), + // total slot use is L*(4*A + 1), // where L is the "coupling loops" and A is the inp_loops ("asymmetric loops") // e.g. L=8, A=1 gives 40 // e.g. L=4, A=2 gives 36 // e.g. L=3, A=3 gives 39 - (2e3, 2e4, ps(2000), ps(100), 8, 1, um(400), 3e10), - (2e3, 2e4, ps(2000), ps(100), 8, 1, um(400), 2e10), - (2e3, 2e4, ps(2000), ps(100), 4, 2, um(400), 3e10), // UNVERIFIED GEOM + // special case of A=0 is L*(2 + 1) + (2e3, 2e4, ps(2000), ps(100), 13, 0, um(400), 3e10), + // narrow region of >1 slope from x=0 to x=2700 + (2e3, 2e4, ps(2000), ps(100), 8, 1, um(400), 3e10), + (2e3, 2e4, ps(2000), ps(100), 8, 1, um(400), 2e10), + (2e3, 2e4, ps(2000), ps(100), 4, 2, um(400), 3e10), // UNVERIFIED GEOM ] { for &(init_flt_a, init_flt_b) in init_set { // each core is coupled to 2 others + control slots // M1 <-> M2 is symmetric (inputs) // M1 -> M0 & M2 -> M3 are asymmetric (tx input -> output) // M0 <-> M3 is symmetrics (outputs) - let slots_per_asym = 2*inp_loops; + let slots_per_asym = (2*inp_loops).max(1); let net_slots = 2*slots_per_asym + 1; let mut params = params_v2 .with_clock_phase_duration(clock_duration) @@ -5956,10 +5972,16 @@ fn main() { // couple input core 1 to core 2 params = params.with_coupling(1, 2, 1+i, net_slots, CouplingMethod::Direct); } - // couple input M1 -> output M0 - params = couple_asymmetric_buffer_bi(¶ms, 0 /* low core */, 0, inp_loops, 1 + slots_per_asym /* slot offset */, net_slots); - // couple input M2 -> output M3 - params = couple_asymmetric_buffer_bi(¶ms, 2 /* low core */, inp_loops, 0, 1 + slots_per_asym /* slot offset */, net_slots); + if inp_loops != 0 { + // couple input M1 -> output M0 + params = couple_asymmetric_buffer_bi(¶ms, 0 /* low core */, 0, inp_loops, 1 + slots_per_asym /* slot offset */, net_slots); + // couple input M2 -> output M3 + params = couple_asymmetric_buffer_bi(¶ms, 2 /* low core */, inp_loops, 0, 1 + slots_per_asym /* slot offset */, net_slots); + } else { + // directly couple M1->M0, M2->M3 + params = params.with_coupling(0, 1, 1 + slots_per_asym, net_slots, CouplingMethod::Direct); + params = params.with_coupling(2, 3, 1 + slots_per_asym, net_slots, CouplingMethod::Direct); + } let name = asymmetric_binary_gate_name( ¶ms, "53-buf-", coupling_loops /* ctl loops */, coupling_loops, 2*inp_loops + 1, init_flt_a, init_flt_b