// File: base_t_xfrmr_dual_bga_with_vias // // Date: 4-Sept-2014 Original Rev. // // 3-Jun-2016 Adjust Solder Mask openings for normal // "Un-Tenting" of all Pin/Pad Stack Via Lands // // 29-Jun-2016 Change the Geometry name to DUAL_BASE_T_MAG // // // // This geometry is for the Dual BGA Base-T Transformer. // Specifically this geometry is for the Pulse Engineering // HX5201NL. // // This version of the HX5201NL has BGA Pads and Vias for // for each of the 48 pins on the device. // // This is a 10/100/1000Base-T, dual, extended temperature // range, PoE, BGA, Auto MDIX "magnetics" that has an // aspect ratio that reduces the size of the foot print of // this dual transformer on the PCB in trade for a taller // part. With the ATCA card we have height for this taller // type of "magnetics". // // This geometry is made with its long axis vertical with // pin #1 in the SW corner, just as in the data sheet for // this part. The center of this geometry is in the // physical center of the component. // // The geometry includes its own BGA SMD pad-stack that // has both a 0.76 mm Land diameter BGA Pad and a // via that is the equivalent of a standard Via_0mm65 // routing via. The distance from the center of the // BGA Pad to the center of the Via is 1.20 mm. // // There are 48 of these pads on the HX5201NL. // // It's pretty clear that this part started as an English // design. Obviously a metric layout will be used in // this Mentor geometry. // // // The horizontal X spacing to the columns is: // // 1.60 mm, 2.24 mm, 4.57 mm, 5.23 mm // // Note that these values will be increased or decreased // by 1.20 mm when using pin/pad stacks that include // an offset via. // // These are calculated from the following rather // inconsistent data-sheet data: // // 0.206 -> 5.2324 mm 0.206 - 0.026 -> 4.572 mm // 5.25 mm 5.25 - 0.64 -> 4.61 mm // // 0.206 - 0.118 -> 2.2352 mm 0.206 - 0.143 -> 1.6002 mm // 5.25 - 3.00 -> 2.25 mm 5.25 - 3.63 -> 1.62 mm // // I do not know if I should believe the English or Metric // version of these dimensions - they are not the same. // As the English dimensions look closest to whole even // numbers I will use them as the bases and correctly // convert them to Metric myself. // // // The vertical Y spacing to the rows is 5x 41 mils // with the distance to the output pad of 0.274". // This gives: // // 1.78 mm, 2.82 mm, 3.86 mm, 4.90 mm, 5.94 mm, 6.99 mm // // These are calculated from the following rather // inconsistent data-sheet data: // // 0.550 / 2 -> 6.985 mm 13.97 / 2 -> 6.985 // // 0.550 / 2 - 0.041 -> 5.9436 mm // // 0.550 / 2 - 0.082 -> 4.9002 mm // // 0.550 / 2 - 0.123 -> 3.8608 mm // // 0.550 / 2 - 0.164 -> 2.8194 mm // // 0.550 / 2 - 0.205 -> 1.7780 mm // // // // The Component outline will be: // 15.00 mm in X which gives a total of 0.27 mm clearance in X // 17.50 mm in Y which gives a total of 0.23 mm clearance in Y // // // Pin Numbering: // // The pin numbering used in this geometry basically matches // that used in the data sheet for this part. The general // concept is that the pin numbering makes sense in the // schematic but is some what not regular on the // component itself. // // // Tran 1 Tran 2 Tran 3 Tran 4 // -------- -------- -------- -------- // Pri Sec Pri Sec Pri Sec Pri Sec // --- --- --- --- --- --- --- --- // Dir 1 7 4 10 24 18 21 15 // CT 2 8 5 11 23 17 20 14 // Cmp 3 9 6 12 22 16 19 13 // // // One assumes that you could flip Dir-Cmp just so long as you // do it on both the Primary and Seconday. // // These are dual port magnetics so the pins are numbered // L1:L24 and R1:R24. // // $abort_enable = @false; $$lock_windows(@on) ; $$snap_diagonal(@off) ; $$snap_orthogonal(@off) ; // //---------------------------------------------------------------------- // // Plain SMD BGA Pad pin/pad stack for the ethernet magnetics // // 0.76 mm pad land // 0.86 mm soldermask opening $$create_pin("xfrmr_pad", @replace); $$page(0.0, 0.0, 0.0, @mm, 0.0, 0.0, [0.0,0.0,'PI$xfrmr_pad'] ); $$point_mode(@vertex); $$circle( "PAD", 0.0, 0.0, 0.76, 0.0); $$circle( "PASTE_MASK", 0.0, 0.0, 0.76, 0.0); $$circle( "SOLDER_MASK", 0.0, 0.0, 0.96, 0.0); $$attribute( "TERMINAL_SURFACE_DEFINITION", ""); // //---------------------------------------------------------------------- // // Ethernet Magnetics VIA_E PadStack Pad with a Via 1.20 mm to the East // ----------------------=== ---- // // When using the XFRMR_PAD_VIA_E padstack you must instance it with // $$attribute( "COMPONENT_PIN_DEFINITION", ... // that has X,Y values shifted from the actual bga pad location. // // Specifically when using the XFRMR_PAD_VIA_E padstack // COMPONENT_PIN_DEFINITION X value = bga pad X value plus 1.20 mm // COMPONENT_PIN_DEFINITION Y value = bga pad Y value. // // Note that for now the via is tented on side 1 to prevent // soldering problems with the non-soldermasked traces on // the Ethernet Magnetics module but is open on side 2 // to help prevent problems with the Hub Module PCB. // $$create_pin("XFRMR_PAD_VIA_E"); $$page(0.0, 0.0, 0.0, @mm, 0.0, 0.0, [0.0,0.0,'PI$XFRMR_PAD_VIA_E'] ); $$point_mode(@vertex); $$attribute( "TERMINAL_THRUHOLE_DEFINITION", ""); $$attribute( "TERMINAL_DRILL_SIZE", "", , @scale , , [ 0.30, 0.0 ]); $$circle( "SIGNAL", 0.00, 0.00, 0.65, 0.0); $$circle( "SOLDER_MASK", 0.00, 0.00, 0.60, 0.0); $$circle( "POWER", 0.00, 0.00, 1.05, 0.0); $$path( "BREAKOUT_1", 0.25, , [ -1.20, 0.00, 0.00, 0.00 ] ); $$circle( "BREAKOUT_1", -1.20, 0.00, 0.76, 0.0); $$circle( "PASTE_MASK_1", -1.20, 0.00, 0.76, 0.0); $$circle( "SOLDER_MASK_1", -1.20, 0.00, 0.96, 0.0); // //---------------------------------------------------------------------------- // // Ethernet Magnetics VIA_W PadStack Pad with a Via 1.20 mm to the West // ----------------------=== ---- // // When using the XFRMR_PAD_VIA_W padstack you must instance it with // $$attribute( "COMPONENT_PIN_DEFINITION", ... // that has X,Y values shifted from the actual bga pad location. // // Specifically when using the XFRMR_PAD_VIA_W padstack // COMPONENT_PIN_DEFINITION X value = bga pad X value minus 1.20 mm // COMPONENT_PIN_DEFINITION Y value = bga pad Y value. // // Note that for now the via is tented on side 1 to prevent // soldering problems with the non-soldermasked traces on // the Ethernet Magnetics module but is open on side 2 // to help prevent problems with the Hub Module PCB. // $$create_pin("XFRMR_PAD_VIA_W"); $$page(0.0, 0.0, 0.0, @mm, 0.0, 0.0, [0.0,0.0,'PI$XFRMR_PAD_VIA_W'] ); $$point_mode(@vertex); $$attribute( "TERMINAL_THRUHOLE_DEFINITION", ""); $$attribute( "TERMINAL_DRILL_SIZE", "", , @scale , , [ 0.30, 0.0 ]); $$circle( "SIGNAL", 0.00, 0.00, 0.65, 0.0); $$circle( "SOLDER_MASK", 0.00, 0.00, 0.60, 0.0); $$circle( "POWER", 0.00, 0.00, 1.05, 0.0); $$path( "BREAKOUT_1", 0.25, , [ 1.20, 0.00, 0.00, 0.00 ] ); $$circle( "BREAKOUT_1", 1.20, 0.00, 0.76, 0.0); $$circle( "PASTE_MASK_1", 1.20, 0.00, 0.76, 0.0); $$circle( "SOLDER_MASK_1", 1.20, 0.00, 0.96, 0.0); // //---------------------------------------------------------------------------- // $$create_component("DUAL_BASE_T_MAG"); $$page(0.0, 0.0, 0.0, @mm, 0.0, 0.0, [0.0,0.0,'CO$DUAL_BASE_T_MAG'] ); $$point_mode(@vertex); $$attribute( "COMPONENT_HEIGHT", "", , @scale , , [ 17.0, 0.0 ]); $$attribute( "COMPONENT_OUTLINE_OVERHANG", "yes"); $$attribute( "COMPONENT_LAYOUT_SURFACE", "both"); // // Component Outline // $$initial([ 7.50, 8.75 ], , @nosnap ); $$terminal([ -7.50, 8.75 ]); $$terminal([ -7.50, -8.75 ]); $$terminal([ 7.50, -8.75 ]); $$terminal([ 7.50, 8.75 ]); $$attribute( "COMPONENT_PLACEMENT_OUTLINE", "", @mark, @scale ); // // Silkscreen Outline then Details // $$template_line_style( @Solid ); $$initial([ 7.50, 8.75 ], , @nosnap ); $$terminal([ -7.50, 8.75 ]); $$terminal([ -7.50, -8.75 ]); $$terminal([ 7.50, -8.75 ]); $$terminal([ 7.50, 8.75 ]); $$path( "SILKSCREEN_1", 0.20 ); // Mark Pin Number 1 $$circle( "SILKSCREEN_1", -8.1, -9.4, 0.8, 0.20 ); $$circle( "SILKSCREEN_1", -8.1, -9.4, 0.6, 0.20 ); // Silkscreen End of // // Reference Designator // $$text( "SILKSCREEN", "^$ref", 0.0, -0.8, 1.6, @BC, 0, 0.80, 0.20, "std", "None", 0.0, 0.0 ); // // Now the 48 pins on this Transformer: // // // First the Left Hand Port L1:L24 // $$attribute( "COMPONENT_PIN_DEFINITION", "L1", , @scale , , [ -4.03, -6.99 ]); $$attribute( "COMPONENT_PADSTACK_OVERRIDE", "L1, XFRMR_PAD_VIA_E"); $$attribute( "COMPONENT_PIN_DEFINITION", "L2", , @scale , , [ -5.77, -5.94 ]); $$attribute( "COMPONENT_PADSTACK_OVERRIDE", "L2, XFRMR_PAD_VIA_W"); $$attribute( "COMPONENT_PIN_DEFINITION", "L3", , @scale , , [ -4.03, -4.90 ]); $$attribute( "COMPONENT_PADSTACK_OVERRIDE", "L3, XFRMR_PAD_VIA_E"); $$attribute( "COMPONENT_PIN_DEFINITION", "L4", , @scale , , [ -5.77, -3.86 ]); $$attribute( "COMPONENT_PADSTACK_OVERRIDE", "L4, XFRMR_PAD_VIA_W"); $$attribute( "COMPONENT_PIN_DEFINITION", "L5", , @scale , , [ -4.03, -2.82 ]); $$attribute( "COMPONENT_PADSTACK_OVERRIDE", "L5, XFRMR_PAD_VIA_E"); $$attribute( "COMPONENT_PIN_DEFINITION", "L6", , @scale , , [ -5.77, -1.78 ]); $$attribute( "COMPONENT_PADSTACK_OVERRIDE", "L6, XFRMR_PAD_VIA_W"); $$attribute( "COMPONENT_PIN_DEFINITION", "L7", , @scale , , [ -5.77, 1.78 ]); $$attribute( "COMPONENT_PADSTACK_OVERRIDE", "L7, XFRMR_PAD_VIA_W"); $$attribute( "COMPONENT_PIN_DEFINITION", "L8", , @scale , , [ -4.03, 2.82 ]); $$attribute( "COMPONENT_PADSTACK_OVERRIDE", "L8, XFRMR_PAD_VIA_E"); $$attribute( "COMPONENT_PIN_DEFINITION", "L9", , @scale , , [ -5.77, 3.86 ]); $$attribute( "COMPONENT_PADSTACK_OVERRIDE", "L9, XFRMR_PAD_VIA_W"); $$attribute( "COMPONENT_PIN_DEFINITION", "L10", , @scale , , [ -4.03, 4.90 ]); $$attribute( "COMPONENT_PADSTACK_OVERRIDE", "L10, XFRMR_PAD_VIA_E"); $$attribute( "COMPONENT_PIN_DEFINITION", "L11", , @scale , , [ -5.77, 5.94 ]); $$attribute( "COMPONENT_PADSTACK_OVERRIDE", "L11, XFRMR_PAD_VIA_W"); $$attribute( "COMPONENT_PIN_DEFINITION", "L12", , @scale , , [ -4.03, 6.99 ]); $$attribute( "COMPONENT_PADSTACK_OVERRIDE", "L12, XFRMR_PAD_VIA_E"); $$attribute( "COMPONENT_PIN_DEFINITION", "L13", , @scale , , [ -1.04, 6.99 ]); $$attribute( "COMPONENT_PADSTACK_OVERRIDE", "L13, XFRMR_PAD_VIA_E"); $$attribute( "COMPONENT_PIN_DEFINITION", "L14", , @scale , , [ -2.80, 5.94 ]); $$attribute( "COMPONENT_PADSTACK_OVERRIDE", "L14, XFRMR_PAD_VIA_W"); $$attribute( "COMPONENT_PIN_DEFINITION", "L15", , @scale , , [ -1.04, 4.90 ]); $$attribute( "COMPONENT_PADSTACK_OVERRIDE", "L15, XFRMR_PAD_VIA_E"); $$attribute( "COMPONENT_PIN_DEFINITION", "L16", , @scale , , [ -2.80, 3.86 ]); $$attribute( "COMPONENT_PADSTACK_OVERRIDE", "L16, XFRMR_PAD_VIA_W"); $$attribute( "COMPONENT_PIN_DEFINITION", "L17", , @scale , , [ -1.04, 2.82 ]); $$attribute( "COMPONENT_PADSTACK_OVERRIDE", "L17, XFRMR_PAD_VIA_E"); $$attribute( "COMPONENT_PIN_DEFINITION", "L18", , @scale , , [ -2.80, 1.78 ]); $$attribute( "COMPONENT_PADSTACK_OVERRIDE", "L18, XFRMR_PAD_VIA_W"); $$attribute( "COMPONENT_PIN_DEFINITION", "L19", , @scale , , [ -2.80, -1.78 ]); $$attribute( "COMPONENT_PADSTACK_OVERRIDE", "L19, XFRMR_PAD_VIA_W"); $$attribute( "COMPONENT_PIN_DEFINITION", "L20", , @scale , , [ -1.04, -2.82 ]); $$attribute( "COMPONENT_PADSTACK_OVERRIDE", "L20, XFRMR_PAD_VIA_E"); $$attribute( "COMPONENT_PIN_DEFINITION", "L21", , @scale , , [ -2.80, -3.86 ]); $$attribute( "COMPONENT_PADSTACK_OVERRIDE", "L21, XFRMR_PAD_VIA_W"); $$attribute( "COMPONENT_PIN_DEFINITION", "L22", , @scale , , [ -1.04, -4.90 ]); $$attribute( "COMPONENT_PADSTACK_OVERRIDE", "L22, XFRMR_PAD_VIA_E"); $$attribute( "COMPONENT_PIN_DEFINITION", "L23", , @scale , , [ -2.80, -5.94 ]); $$attribute( "COMPONENT_PADSTACK_OVERRIDE", "L23, XFRMR_PAD_VIA_W"); $$attribute( "COMPONENT_PIN_DEFINITION", "L24", , @scale , , [ -1.04, -6.99 ]); $$attribute( "COMPONENT_PADSTACK_OVERRIDE", "L24, XFRMR_PAD_VIA_E"); // // Now the Right Hand Port R1:R24 // $$attribute( "COMPONENT_PIN_DEFINITION", "R1", , @scale , , [ 2.80, -6.99 ]); $$attribute( "COMPONENT_PADSTACK_OVERRIDE", "R1, XFRMR_PAD_VIA_E"); $$attribute( "COMPONENT_PIN_DEFINITION", "R2", , @scale , , [ 1.04, -5.94 ]); $$attribute( "COMPONENT_PADSTACK_OVERRIDE", "R2, XFRMR_PAD_VIA_W"); $$attribute( "COMPONENT_PIN_DEFINITION", "R3", , @scale , , [ 2.80, -4.90 ]); $$attribute( "COMPONENT_PADSTACK_OVERRIDE", "R3, XFRMR_PAD_VIA_E"); $$attribute( "COMPONENT_PIN_DEFINITION", "R4", , @scale , , [ 1.04, -3.86 ]); $$attribute( "COMPONENT_PADSTACK_OVERRIDE", "R4, XFRMR_PAD_VIA_W"); $$attribute( "COMPONENT_PIN_DEFINITION", "R5", , @scale , , [ 2.80, -2.82 ]); $$attribute( "COMPONENT_PADSTACK_OVERRIDE", "R5, XFRMR_PAD_VIA_E"); $$attribute( "COMPONENT_PIN_DEFINITION", "R6", , @scale , , [ 1.04, -1.78 ]); $$attribute( "COMPONENT_PADSTACK_OVERRIDE", "R6, XFRMR_PAD_VIA_W"); $$attribute( "COMPONENT_PIN_DEFINITION", "R7", , @scale , , [ 1.04, 1.78 ]); $$attribute( "COMPONENT_PADSTACK_OVERRIDE", "R7, XFRMR_PAD_VIA_W"); $$attribute( "COMPONENT_PIN_DEFINITION", "R8", , @scale , , [ 2.80, 2.82 ]); $$attribute( "COMPONENT_PADSTACK_OVERRIDE", "R8, XFRMR_PAD_VIA_E"); $$attribute( "COMPONENT_PIN_DEFINITION", "R9", , @scale , , [ 1.04, 3.86 ]); $$attribute( "COMPONENT_PADSTACK_OVERRIDE", "R9, XFRMR_PAD_VIA_W"); $$attribute( "COMPONENT_PIN_DEFINITION", "R10", , @scale , , [ 2.80, 4.90 ]); $$attribute( "COMPONENT_PADSTACK_OVERRIDE", "R10, XFRMR_PAD_VIA_E"); $$attribute( "COMPONENT_PIN_DEFINITION", "R11", , @scale , , [ 1.04, 5.94 ]); $$attribute( "COMPONENT_PADSTACK_OVERRIDE", "R11, XFRMR_PAD_VIA_W"); $$attribute( "COMPONENT_PIN_DEFINITION", "R12", , @scale , , [ 2.80, 6.99 ]); $$attribute( "COMPONENT_PADSTACK_OVERRIDE", "R12, XFRMR_PAD_VIA_E"); $$attribute( "COMPONENT_PIN_DEFINITION", "R13", , @scale , , [ 5.77, 6.99 ]); $$attribute( "COMPONENT_PADSTACK_OVERRIDE", "R13, XFRMR_PAD_VIA_E"); $$attribute( "COMPONENT_PIN_DEFINITION", "R14", , @scale , , [ 4.03, 5.94 ]); $$attribute( "COMPONENT_PADSTACK_OVERRIDE", "R14, XFRMR_PAD_VIA_W"); $$attribute( "COMPONENT_PIN_DEFINITION", "R15", , @scale , , [ 5.77, 4.90 ]); $$attribute( "COMPONENT_PADSTACK_OVERRIDE", "R15, XFRMR_PAD_VIA_E"); $$attribute( "COMPONENT_PIN_DEFINITION", "R16", , @scale , , [ 4.03, 3.86 ]); $$attribute( "COMPONENT_PADSTACK_OVERRIDE", "R16, XFRMR_PAD_VIA_W"); $$attribute( "COMPONENT_PIN_DEFINITION", "R17", , @scale , , [ 5.77, 2.82 ]); $$attribute( "COMPONENT_PADSTACK_OVERRIDE", "R17, XFRMR_PAD_VIA_E"); $$attribute( "COMPONENT_PIN_DEFINITION", "R18", , @scale , , [ 4.03, 1.78 ]); $$attribute( "COMPONENT_PADSTACK_OVERRIDE", "R18, XFRMR_PAD_VIA_W"); $$attribute( "COMPONENT_PIN_DEFINITION", "R19", , @scale , , [ 4.03, -1.78 ]); $$attribute( "COMPONENT_PADSTACK_OVERRIDE", "R19, XFRMR_PAD_VIA_W"); $$attribute( "COMPONENT_PIN_DEFINITION", "R20", , @scale , , [ 5.77, -2.82 ]); $$attribute( "COMPONENT_PADSTACK_OVERRIDE", "R20, XFRMR_PAD_VIA_E"); $$attribute( "COMPONENT_PIN_DEFINITION", "R21", , @scale , , [ 4.03, -3.86 ]); $$attribute( "COMPONENT_PADSTACK_OVERRIDE", "R21, XFRMR_PAD_VIA_W"); $$attribute( "COMPONENT_PIN_DEFINITION", "R22", , @scale , , [ 5.77, -4.90 ]); $$attribute( "COMPONENT_PADSTACK_OVERRIDE", "R22, XFRMR_PAD_VIA_E"); $$attribute( "COMPONENT_PIN_DEFINITION", "R23", , @scale , , [ 4.03, -5.94 ]); $$attribute( "COMPONENT_PADSTACK_OVERRIDE", "R23, XFRMR_PAD_VIA_W"); $$attribute( "COMPONENT_PIN_DEFINITION", "R24", , @scale , , [ 5.77, -6.99 ]); $$attribute( "COMPONENT_PADSTACK_OVERRIDE", "R24, XFRMR_PAD_VIA_E");