// file: sfp_cage_and_connector_geom.txt // // date: 19-July-2012 Original Version // // 28-June-2013 Increase the size of the mounting // holes from the size that the data // sheet calls for. I'm still not // certain whether the AMP 1489779-1 // is a real "press fit" part requiring // 100s of pounds to press it in or // whether they mean that it will just // hold itself in place during soldering. // The applications note seems to indicate // that you just hand press it in. // In any case the recommended hole sizes // look too small compared to the actual // pins on the cage. // // 03-Sep-2013 Add Note on SMD placement coordinates. // // 9-Sep-2013 The center mounting pin at the back of // the SFP Cage is going to be cut off so // that this pcb hole may be used as a // real ground connection for pins on the // SFP Socket. Recall that the SFP Cage // is only grounded through "Jumpers". // This cut off pin is pin number 35. // Make a pad-stack for it, that is just // like the original pad-stack used for this // pin, but "tented". // // 23-Oct-2013 Add silkscreen for the outline of SMD connector // (with notched corner) and pin "1" location // // // Note about SFP Cage Mounting Hole Diameters in the PCB // from the 28-June-2013 edit of this geometry // // Recommended Number of Apparent Will Now Make // Hole Size these Holes Pin Size these Holes // ----------- ----------- -------- ------------- // 1.05mm 10 1.20mm 1.20mm // 0.95mm 9 1.05mm 1.10mm // 0.85mm 1 0.95mm 1.00mm // // // With this change in drill hole diameter, I'm not // changing the names of the Pin Pad-Stacks. The the // following Pad-Stacks will now have the following // drill hole size: // // Pad-Stack Name New Dill Hole Diameter // -------------- ---------------------- // SFP_1MM05 1.20mm // SFP_0MM95 1.10mm // SFP_0MM85 1.00mm // // // In these three Pad-Stacks the land ring width will // now be 0.20mm and the plane releif width will // now be 0.45m. // // // // // NOTE: In the assembly of the CMX cards we will actually use // AMP P/N 1489779-1 cages (combined top and bottom) // with AMP P/N 1367073-2 SMD connectors. // // AND: The SMD placement coordinates communicated to the assembly house // need to be changed from the Mentor placement coordinates // in order to represent the center and orientation of the SMD connector. // --> the X value commnunicated needs to be incremented by +0.9mm // --> the orientation angle needs to be incremented by +270 degrees // (assuming the placement in the design is at 0 degree) // // // This geometry is for both the SFP optical transceiver cage and // for its connector. This geometry was based on the datasheets // for the AMP 6367034 SFP cage bottom and on the AMP 1367073 // SFP connector. // // This geometry is rather complicated because there are not // many simple symmetries. The center of this geometry is thus // in a rather random place - but its center does match the // center of the coordinate system used in the official SFP // drawings. // // In the "normal" SFP application the center of this geometry // should be back 34.5 mm from the card edge. // // This geometry has the SFP module with its long axis horizontal // and the module plugs into the cage from the left. // // This geometry uses both through hole and SMD pad stacks. // $abort_enable = @false; $$lock_windows(@on) ; $$snap_diagonal(@off) ; $$snap_orthogonal(@off) ; $$create_component("SFP_Optical", @replace); $$page( 0.0, 0.0, 0.0, @mm, 0.0, 0.0, [ 0.0, 0.0, 'CO$SFP_Optical' ]); $$point_mode(@vertex); // Do not declare this to be a SMD component. // // $$attribute( "COMPONENT_LAYOUT_TYPE", "surface"); // $$attribute( "COMPONENT_HEIGHT", "10.0", , @scale , , [0.0, 0.0] ); $$attribute( "COMPONENT_OUTLINE_OVERHANG", "yes"); $$attribute( "COMPONENT_LAYOUT_SURFACE", "both"); // Setup the Component Placement Outline for this connector. // Start in the SW corner and go around CCW. $$initial([ -34.50, -8.12 ], , @nosnap ); $$terminal([ 7.80, -8.12 ] ); $$terminal([ 7.80, 8.12 ] ); $$terminal([ -34.50, 8.12 ] ); $$attribute( "COMPONENT_PLACEMENT_OUTLINE", "", @mark, @scale ); // Silkscreen: // // Just the basic box - including the part that is // out past the edge of the card $$path( "SILKSCREEN", 0.20 , , [ -41.50, -8.12, 7.80, -8.12 ] ); $$path( "SILKSCREEN", 0.20 , , [ 7.80, -8.12, 7.80, 8.12 ] ); $$path( "SILKSCREEN", 0.20 , , [ 7.80, 8.12, -41.50, 8.12 ] ); $$path( "SILKSCREEN", 0.20 , , [ -41.50, 8.12, -41.50, -8.12 ] ); // Now try to hint at the grounding fingers on the cage $$path( "SILKSCREEN", 0.20 , , [ -40.00, 0.70, -35.50, 0.70 ] ); $$path( "SILKSCREEN", 0.20 , , [ -35.50, 0.70, -35.50, -0.70 ] ); $$path( "SILKSCREEN", 0.20 , , [ -40.00, -0.70, -35.50, -0.70 ] ); $$path( "SILKSCREEN", 0.20 , , [ -40.00, 4.80, -35.50, 4.80 ] ); $$path( "SILKSCREEN", 0.20 , , [ -35.50, 4.80, -35.50, 3.40 ] ); $$path( "SILKSCREEN", 0.20 , , [ -40.00, 3.40, -35.50, 3.40 ] ); $$path( "SILKSCREEN", 0.20 , , [ -40.00, -4.80, -35.50, -4.80 ] ); $$path( "SILKSCREEN", 0.20 , , [ -35.50, -4.80, -35.50, -3.40 ] ); $$path( "SILKSCREEN", 0.20 , , [ -40.00, -3.40, -35.50, -3.40 ] ); $$path( "SILKSCREEN", 0.20 , , [ -40.00, 8.12, -38.50, 8.95 ] ); $$path( "SILKSCREEN", 0.20 , , [ -38.50, 8.95, -37.00, 8.95 ] ); $$path( "SILKSCREEN", 0.20 , , [ -37.00, 8.95, -35.50, 8.12 ] ); $$path( "SILKSCREEN", 0.20 , , [ -40.00, -8.12, -38.50, -8.95 ] ); $$path( "SILKSCREEN", 0.20 , , [ -38.50, -8.95, -37.00, -8.95 ] ); $$path( "SILKSCREEN", 0.20 , , [ -37.00, -8.95, -35.50, -8.12 ] ); // Now try to hint at the orientation of the SMD connector $$path( "SILKSCREEN", 0.20 , , [ -2.80, 5.60, -0.30, 5.60 ] ); $$path( "SILKSCREEN", 0.20 , , [ 2.10, 5.60, 4.60, 5.60 ] ); $$path( "SILKSCREEN", 0.20 , , [ 4.60, 5.60, 4.60, 4.60 ] ); $$path( "SILKSCREEN", 0.20 , , [ 4.60, -4.10, 4.60, -4.80 ] ); $$path( "SILKSCREEN", 0.20 , , [ 4.60, -4.80, 3.80, -5.60 ] ); $$path( "SILKSCREEN", 0.20 , , [ 3.80, -5.60, 2.10, -5.60 ] ); $$path( "SILKSCREEN", 0.20 , , [ -0.30, -5.60, -2.80, -5.60 ] ); $$path( "SILKSCREEN", 0.20 , , [ -2.80, -5.60, -2.80, -4.60 ] ); $$path( "SILKSCREEN", 0.20 , , [ -2.80, 4.10, -2.80, 5.60 ] ); // Now show the location of pin "1" $$text( "SILKSCREEN", "1", -5.0, 4.0, 1.6, @BR, 0, 0.7, 0.20, "std", "None", 0.0, 0.0 ); // Reference Designator $$text( "SILKSCREEN", "^$ref", 8.7, 0.0, 2.5, @CL, 0, 0.7, 0.20, "std", "None", 0.0, 0.0 ); // Mounting Holes 1.55 mm diameter // These are for mounting the SFP Optical Connector. $$attribute( "DRILL_DEFINITION_UNPLATED", "1.55", , @scale , , [ 0.90, 4.80]); $$attribute( "DRILL_DEFINITION_UNPLATED", "1.55", , @scale , , [ 0.90, -4.80]); $$circle( "POWER", 0.90, 4.80, 2.00, 0.0); $$circle( "POWER", 0.90, -4.80, 2.00, 0.0); // Define the pins // Start with the Western column of SMD pads // These run from pin #1 at the top to pin #10 at the bottom. // The center of these pads is 3.20 mm West of the center line of thiseometry. // The pitch of these pads is 0.8mm // Pin #10 is 3.80 mm below the center line of this geometry. $$attribute( "COMPONENT_DEFAULT_PADSTACK", "SFP_SMD_PAD"); $$attribute( "COMPONENT_PIN_DEFINITION", "1", , @scale , , [ -3.20, 3.40 ]); $$attribute( "COMPONENT_PIN_DEFINITION", "2", , @scale , , [ -3.20, 2.60 ]); $$attribute( "COMPONENT_PIN_DEFINITION", "3", , @scale , , [ -3.20, 1.80 ]); $$attribute( "COMPONENT_PIN_DEFINITION", "4", , @scale , , [ -3.20, 1.00 ]); $$attribute( "COMPONENT_PIN_DEFINITION", "5", , @scale , , [ -3.20, 0.20 ]); $$attribute( "COMPONENT_PIN_DEFINITION", "6", , @scale , , [ -3.20, -0.60 ]); $$attribute( "COMPONENT_PIN_DEFINITION", "7", , @scale , , [ -3.20, -1.40 ]); $$attribute( "COMPONENT_PIN_DEFINITION", "8", , @scale , , [ -3.20, -2.20 ]); $$attribute( "COMPONENT_PIN_DEFINITION", "9", , @scale , , [ -3.20, -3.00 ]); $$attribute( "COMPONENT_PIN_DEFINITION", "10", , @scale , , [ -3.20, -3.80 ]); // And now the Eastern column of pads that run from // pin #11 at the bottom up to pin #20 at the top. // The center of these pads is 5.00 mm East of the center line of this geometry. // Pin #11 is 3.40 mm below the center line of this geometry. $$attribute( "COMPONENT_PIN_DEFINITION", "11", , @scale , , [ 5.00, -3.40 ]); $$attribute( "COMPONENT_PIN_DEFINITION", "12", , @scale , , [ 5.00, -2.60 ]); $$attribute( "COMPONENT_PIN_DEFINITION", "13", , @scale , , [ 5.00, -1.80 ]); $$attribute( "COMPONENT_PIN_DEFINITION", "14", , @scale , , [ 5.00, -1.00 ]); $$attribute( "COMPONENT_PIN_DEFINITION", "15", , @scale , , [ 5.00, -0.20 ]); $$attribute( "COMPONENT_PIN_DEFINITION", "16", , @scale , , [ 5.00, 0.60 ]); $$attribute( "COMPONENT_PIN_DEFINITION", "17", , @scale , , [ 5.00, 1.40 ]); $$attribute( "COMPONENT_PIN_DEFINITION", "18", , @scale , , [ 5.00, 2.20 ]); $$attribute( "COMPONENT_PIN_DEFINITION", "19", , @scale , , [ 5.00, 3.00 ]); $$attribute( "COMPONENT_PIN_DEFINITION", "20", , @scale , , [ 5.00, 3.80 ]); // And now finally define the through hole ground pins that // hold the SFP cage to the circuit board. There are three // diameters of these cage ground pins: // 10 ground pins with 1.05 mm diameter // 9 ground pins with 0.95 mm diameter // 1 ground pin with 0.85 mm diameter // // All 20 of these pins should be grounded in the Net List. // That is, pins 21 through 40 are grounded. // // Try to number them starting in the SW corner and go around CCW. $$attribute( "COMPONENT_PADSTACK_OVERRIDE", "21, SFP_1MM05"); $$attribute( "COMPONENT_PIN_DEFINITION", "21", , @scale , , [ -25.00, -7.12 ]); $$attribute( "COMPONENT_PADSTACK_OVERRIDE", "22, SFP_1MM05"); $$attribute( "COMPONENT_PIN_DEFINITION", "22", , @scale , , [ -15.00, -7.12 ]); $$attribute( "COMPONENT_PADSTACK_OVERRIDE", "23, SFP_1MM05"); $$attribute( "COMPONENT_PIN_DEFINITION", "23", , @scale , , [ -5.00, -7.12 ]); $$attribute( "COMPONENT_PADSTACK_OVERRIDE", "24, SFP_1MM05"); $$attribute( "COMPONENT_PIN_DEFINITION", "24", , @scale , , [ 5.00, -7.12 ]); $$attribute( "COMPONENT_PADSTACK_OVERRIDE", "25, SFP_1MM05"); $$attribute( "COMPONENT_PIN_DEFINITION", "25", , @scale , , [ -10.00, 7.13 ]); $$attribute( "COMPONENT_PADSTACK_OVERRIDE", "26, SFP_1MM05"); $$attribute( "COMPONENT_PIN_DEFINITION", "26", , @scale , , [ -20.00, 7.13 ]); $$attribute( "COMPONENT_PADSTACK_OVERRIDE", "27, SFP_1MM05"); $$attribute( "COMPONENT_PIN_DEFINITION", "27", , @scale , , [ -30.00, 7.13 ]); $$attribute( "COMPONENT_PADSTACK_OVERRIDE", "28, SFP_1MM05"); $$attribute( "COMPONENT_PIN_DEFINITION", "28", , @scale , , [ -30.00, -1.45 ]); $$attribute( "COMPONENT_PADSTACK_OVERRIDE", "29, SFP_1MM05"); $$attribute( "COMPONENT_PIN_DEFINITION", "29", , @scale , , [ -10.00, -3.95 ]); $$attribute( "COMPONENT_PADSTACK_OVERRIDE", "30, SFP_1MM05"); $$attribute( "COMPONENT_PIN_DEFINITION", "30", , @scale , , [ -10.00, 1.45 ]); $$attribute( "COMPONENT_PADSTACK_OVERRIDE", "31, SFP_0MM95"); $$attribute( "COMPONENT_PIN_DEFINITION", "31", , @scale , , [ -7.20, -7.12 ]); $$attribute( "COMPONENT_PADSTACK_OVERRIDE", "32, SFP_0MM95"); $$attribute( "COMPONENT_PIN_DEFINITION", "32", , @scale , , [ -2.50, -7.12 ]); $$attribute( "COMPONENT_PADSTACK_OVERRIDE", "33, SFP_0MM95"); $$attribute( "COMPONENT_PIN_DEFINITION", "33", , @scale , , [ 2.50, -7.12 ]); $$attribute( "COMPONENT_PADSTACK_OVERRIDE", "34, SFP_0MM95"); $$attribute( "COMPONENT_PIN_DEFINITION", "34", , @scale , , [ 7.10, -4.80 ]); $$attribute( "COMPONENT_PADSTACK_OVERRIDE", "35, SFP_0MM95_tented"); $$attribute( "COMPONENT_PIN_DEFINITION", "35", , @scale , , [ 7.10, 0.00 ]); $$attribute( "COMPONENT_PADSTACK_OVERRIDE", "36, SFP_0MM95"); $$attribute( "COMPONENT_PIN_DEFINITION", "36", , @scale , , [ 7.10, 4.80 ]); $$attribute( "COMPONENT_PADSTACK_OVERRIDE", "37, SFP_0MM95"); $$attribute( "COMPONENT_PIN_DEFINITION", "37", , @scale , , [ 2.50, 7.13 ]); $$attribute( "COMPONENT_PADSTACK_OVERRIDE", "38, SFP_0MM95"); $$attribute( "COMPONENT_PIN_DEFINITION", "38", , @scale , , [ -2.50, 7.13 ]); $$attribute( "COMPONENT_PADSTACK_OVERRIDE", "39, SFP_0MM95"); $$attribute( "COMPONENT_PIN_DEFINITION", "39", , @scale , , [ -7.20, 7.13 ]); $$attribute( "COMPONENT_PADSTACK_OVERRIDE", "40, SFP_0MM85"); $$attribute( "COMPONENT_PIN_DEFINITION", "40", , @scale , , [ 0.00, 7.13 ]); //---------------------------------------------------------------------------- // SMD Pad for the SFP Optical Connector. $$lock_windows(@on); $$create_pin("SFP_SMD_PAD", @replace); $$page(0.0,0.0,0.0, @mm, 0.0, 0.0, [0.0, 0.0, 'PI$SFP_SMD_PAD']); $$point_mode(@vertex); $$polygon( "PAD_1", , [ 1.00, 0.25, 1.00, -0.25, -1.00, -0.25, -1.00, 0.25, 1.00, 0.25 ] ); $$polygon( "SOLDER_MASK_1", , [ 1.05, 0.30, 1.05, -0.30, -1.05, -0.30, -1.05, 0.30, 1.05, 0.30 ] ); $$polygon( "PASTE_MASK_1", , [ 1.00, 0.25, 1.00, -0.25, -1.00, -0.25, -1.00, 0.25, 1.00, 0.25 ] ); $$attribute( "TERMINAL_SURFACE_DEFINITION", ""); //---------------------------------------------------------------------------- $$lock_windows(@on); $$create_pin("SFP_1MM05"); $$page(0.0, 0.0, 0.0, @mm, 0.0, 0.0, [0.0,0.0,'PI$SFP_1MM05'] ); $$point_mode(@vertex); $$attribute( "TERMINAL_THRUHOLE_DEFINITION", ""); $$attribute( "TERMINAL_DRILL_SIZE", "", , @scale , , [ 1.20, 0.0 ]); $$circle( "PAD", 0.0, 0.0, 1.60, 0.0); $$circle( "SIGNAL", 0.0, 0.0, 1.60, 0.0); $$circle( "SOLDER_MASK", 0.0, 0.0, 1.60, 0.0); $$circle( "POWER", 0.0, 0.0, 2.10, 0.0); //---------------------------------------------------------------------------- $$lock_windows(@on); $$create_pin("SFP_0MM95"); $$page(0.0, 0.0, 0.0, @mm, 0.0, 0.0, [0.0,0.0,'PI$SFP_0MM95'] ); $$point_mode(@vertex); $$attribute( "TERMINAL_THRUHOLE_DEFINITION", ""); $$attribute( "TERMINAL_DRILL_SIZE", "", , @scale , , [ 1.10, 0.0 ]); $$circle( "PAD", 0.0, 0.0, 1.50, 0.0); $$circle( "SIGNAL", 0.0, 0.0, 1.50, 0.0); $$circle( "SOLDER_MASK", 0.0, 0.0, 1.50, 0.0); $$circle( "POWER", 0.0, 0.0, 2.00, 0.0); //---------------------------------------------------------------------------- $$lock_windows(@on); $$create_pin("SFP_0MM95_tented"); $$page(0.0, 0.0, 0.0, @mm, 0.0, 0.0, [0.0,0.0,'PI$SFP_0MM95_tented'] ); $$point_mode(@vertex); $$attribute( "TERMINAL_THRUHOLE_DEFINITION", ""); $$attribute( "TERMINAL_DRILL_SIZE", "", , @scale , , [ 1.10, 0.0 ]); $$circle( "PAD", 0.0, 0.0, 1.50, 0.0); $$circle( "SIGNAL", 0.0, 0.0, 1.50, 0.0); $$circle( "POWER", 0.0, 0.0, 2.00, 0.0); //---------------------------------------------------------------------------- $$lock_windows(@on); $$create_pin("SFP_0MM85"); $$page(0.0, 0.0, 0.0, @mm, 0.0, 0.0, [0.0,0.0,'PI$SFP_0MM85'] ); $$point_mode(@vertex); $$attribute( "TERMINAL_THRUHOLE_DEFINITION", ""); $$attribute( "TERMINAL_DRILL_SIZE", "", , @scale , , [ 1.00, 0.0 ]); $$circle( "PAD", 0.0, 0.0, 1.40, 0.0); $$circle( "SIGNAL", 0.0, 0.0, 1.40, 0.0); $$circle( "SOLDER_MASK", 0.0, 0.0, 1.40, 0.0); $$circle( "POWER", 0.0, 0.0, 1.90, 0.0); //----------------------------------------------------------------------------