// // file: vson_10_geom // // date: 19-Jan-2023 Original version of this special 10 pin part // // // This is the TPS51200 DDR4 Terminator and Reference // voltage regulator on the Disco-Kraken board. // // // This geometry mostly comes from the TI TPS51200 data sheet // // Basic Design: // // The SMD Package is between 2.90 mm and 3.10 mm on a side square. // // All 10 pins are along the two vertical sides of this package. // // Pin Pitch is 0.50 mm // // Pin Length is between 0.30 mm and 0.50 mm and the pins come // out flush with the edge of the package // // Pad lands are 0.60 mm in X by 0.24 mm in Y // // Center to Center the pads are 2.80 mm apart +- 1.400 mm in X // // Thus the outer edges of Pad Lands are 3.40 mm apart. // // Thus the pads stick out from the edge of the package by 0.20 mm. // // // Solder Mask is back by 0.05 mm on all edges // // Paste Stencil opening for the Pads is 0.24 mm x 0.60 mm 100% of land area // // Paste Stencil opening is centered on the Pad Land. // // // Thermal Pad is 1.65 mm in X by 2.40 mm in Y. // // There are 4 Vias in the Thermal Pad all 0.30 mm diameter // // Two Thermal Pad Vias are located: X = 0.0 mm Y = +- 0.95 mm // Two Thermal Pad Vias are located: X = +- 0.575 mm Y = 0.0 mm // // The Thermal Pad Paste Stencil had 2 openings // // Each opening is 1.50 mm in X by 1.06 in Y // These openings are centered on X and their centers are at Y = +- 0.63 // // Note the paste stencil opening is 66% of the land area // // // The interior tip of the signal pad land is 0.275 mm from // the thermal pad land, i.e. the air gap between the signal // pad land and the thermal pad land is 0.195 mm. // // // I will use the following Signal Pad Design: // // The pcb signal pads land 0.24 mm x 0.60 mm // The Solder Mask opening 0.34 mm x 0.70 mm centered on land // The Solder Stencil opening 0.24 mm x 0.60 mm centered on land // // // // Lay this out with the Pin #1 in the top left-hand corner, NW corner. // // Label the 4 "Thermal Vias" as component pins: 11:14 // //---------------------------------------------------------------------------- $abort_enable = @false; $$lock_windows(@on) ; $$snap_diagonal(@off) ; $$snap_orthogonal(@off) ; //---------------------------------------------------------------------------- //---------------------------------------------------------------------------- // Pads with a long axis horizontal $$lock_windows(@on); $$create_pin("vson_10_horz_pad", @replace); $$page(0.0,0.0,0.0, @mm, 0.0, 0.0, [0.0, 0.0, 'PI$vson_10_horz_pad']); $$point_mode(@vertex); $$polygon( "PAD_1", , [ 0.30, 0.12, -0.30, 0.12, -0.30, -0.12, 0.30, -0.12 ]); $$polygon( "SOLDER_MASK_1", , [ 0.35, 0.17, -0.35, 0.17, -0.35, -0.17, 0.35, -0.17 ]); $$polygon( "PASTE_MASK_1", , [ 0.30, 0.12, -0.30, 0.12, -0.30, -0.12, 0.30, -0.12 ]); $$attribute( "TERMINAL_SURFACE_DEFINITION", ""); //---------------------------------------------------------------------------- //---------------------------------------------------------------------------- // "Pads" with a long axis vertical // These "Pads" are just used as an easy way to add // ears to the center rectangular Thermal Pad. $$lock_windows(@on); $$create_pin("vson_10_vert_pad", @replace); $$page(0.0,0.0,0.0, @mm, 0.0, 0.0, [0.0, 0.0, 'PI$vson_10_vert_pad']); $$point_mode(@vertex); $$polygon( "PAD_1", , [ 0.12, 0.30, -0.12, 0.30, -0.12, -0.30, 0.12, -0.30 ]); $$polygon( "SOLDER_MASK_1", , [ 0.17, 0.35, -0.17, 0.35, -0.17, -0.35, 0.17, -0.35 ]); $$attribute( "TERMINAL_SURFACE_DEFINITION", ""); //---------------------------------------------------------------------------- //---------------------------------------------------------------------------- // Through Hole Pin/Pad Stack for the 9 "Thermal Vias" // These are component pins 25 through 33. // // 0.30 mm finished hole diameter // 0.60 mm land pad // 0.85 mm plane relief // 0.28 mm PrePreg_5 flash to indicate a // via that is plugged from the top // // --> 0.275 mm clearance from edge of drill hole to Planes // // --> for 1.00 mm spacing there is a 0.15 mm wide neck // in the Ground web between drills // $$lock_windows(@on); $$create_pin( "vson_10_thd_pin" ); $$page(0.0, 0.0, 0.0, @mm, 0.0, 0.0, [ 0.0, 0.0, 'PI$vson_10_thd_pin' ] ); $$point_mode(@vertex); $$attribute( "TERMINAL_THRUHOLE_DEFINITION", ""); $$attribute( "TERMINAL_DRILL_SIZE", "", , @scale , , [ 0.30, 0.0 ]); $$circle( "SIGNAL", 0.0, 0.0, 0.60, 0.0 ); $$circle( "POWER", 0.0, 0.0, 0.85, 0.0 ); $$circle( "PREPREG_5", 0.0, 0.0, 0.28, 0.0 ); //---------------------------------------------------------------------------- $$lock_windows(@on) ; $$create_component("VSON_10", @replace); $$page( 0.0, 0.0, 0.0, @mm, 0.0, 0.0, [ 0.0, 0.0, 'CO$VSON_10' ]); $$point_mode(@vertex); $$attribute( "COMPONENT_LAYOUT_SURFACE", "both"); $$attribute( "COMPONENT_HEIGHT", "1.20", , @scale , , [0.0, 0.0] ); // // Component Placement Outline for the QFN-24 // $$initial([ -1.80, -1.80 ], , @nosnap ); $$terminal([ -1.80, 1.80 ] ); $$terminal([ 1.80, 1.80 ] ); $$terminal([ 1.80, -1.80 ] ); $$attribute( "COMPONENT_PLACEMENT_OUTLINE", "", @mark, @scale ); // // Silkscreen // $$template_line_style( @Solid ); $$initial([ -2.00, -2.00 ], , @nosnap ); $$terminal([ -2.00, 2.00 ] ); $$terminal([ 2.00, 2.00 ] ); $$terminal([ 2.00, -2.00 ] ); $$terminal([ -2.00, -2.00 ] ); $$path( "SILKSCREEN_1", 0.20 ); $$circle( "SILKSCREEN_1", -2.5, 2.5, 0.5, 0.20 ); $$circle( "SILKSCREEN_1", -2.5, 2.5, 1.0, 0.20 ); // // End of Silkscreen // // Reference Designator $$text( "SILKSCREEN", "^$ref", 0.0, 4.3, 2.0, @CC, 0, 0.7, 0.20, "std", "None", 0.0, 0.0 ); // Setup the Local Fiducial Marks //$$circle( "PAD_1", 0.00, 4.50, 1.0, 0.0); //$$circle( "SOLDER_MASK_1", 0.00, 4.50, 1.3, 0.0); //$$circle( "PAD_1", 0.00, -4.50, 1.0, 0.0); //$$circle( "SOLDER_MASK_1", 0.00, -4.50, 1.3, 0.0); // // Now place the center Thermal Pad // // - Copper on Breakout 1 and Sheet_Dielectric_1 // // - Solder Mask Relief for this Thermal Pad // // - Paste Mask openings // $$polygon( "BREAKOUT_1", , [ -0.825, -1.20, 0.825, -1.20, 0.825, 1.20, -0.825, 1.20 ]); $$polygon( "SOLDER_MASK_1", , [ -0.875, -1.25, 0.875, -1.25, 0.875, 1.25, -0.875, 1.25 ]); $$polygon( "SHEET_DIELECTRIC_1", , [ -0.975, -1.35, 0.975, -1.35, 0.975, 1.35, -0.975, 1.35 ]); $$polygon( "PASTE_MASK_1", , [ -0.75, 0.10, 0.75, 0.10, 0.75, 1.16, -0.75, 1.16 ]); $$polygon( "PASTE_MASK_1", , [ -0.75, -1.16, 0.75, -1.16, 0.75, -0.10, -0.75, -0.10 ]); $$polygon( "PASTE_MASK_1", , [ 0.125, 1.36, 0.375, 1.36, 0.375, 1.70, 0.125, 1.70 ]); $$polygon( "PASTE_MASK_1", , [ -0.375, 1.36, -0.125, 1.36, -0.125, 1.70, -0.375, 1.70 ]); $$polygon( "PASTE_MASK_1", , [ 0.125, -1.70, 0.375, -1.70, 0.375, -1.36, 0.125, -1.36 ]); $$polygon( "PASTE_MASK_1", , [ -0.375, -1.70, -0.125, -1.70, -0.125, -1.36, -0.375, -1.36 ]); // Define the pins // Pads Along the Left-Hand Edge $$attribute( "COMPONENT_PIN_DEFINITION", "1", , @scale , , [ -1.400, 1.00 ]); $$attribute( "COMPONENT_PADSTACK_OVERRIDE", "1, vson_10_horz_pad"); $$attribute( "COMPONENT_PIN_DEFINITION", "2", , @scale , , [ -1.400, 0.50 ]); $$attribute( "COMPONENT_PADSTACK_OVERRIDE", "2, vson_10_horz_pad"); $$attribute( "COMPONENT_PIN_DEFINITION", "3", , @scale , , [ -1.400, 0.00 ]); $$attribute( "COMPONENT_PADSTACK_OVERRIDE", "3, vson_10_horz_pad"); $$attribute( "COMPONENT_PIN_DEFINITION", "4", , @scale , , [ -1.400, -0.50 ]); $$attribute( "COMPONENT_PADSTACK_OVERRIDE", "4, vson_10_horz_pad"); $$attribute( "COMPONENT_PIN_DEFINITION", "5", , @scale , , [ -1.400, -1.00 ]); $$attribute( "COMPONENT_PADSTACK_OVERRIDE", "5, vson_10_horz_pad"); // Pads Along the Right-Hand Edge $$attribute( "COMPONENT_PIN_DEFINITION", "6", , @scale , , [ 1.400, -1.00 ]); $$attribute( "COMPONENT_PADSTACK_OVERRIDE", "6, vson_10_horz_pad"); $$attribute( "COMPONENT_PIN_DEFINITION", "7", , @scale , , [ 1.400, -0.50 ]); $$attribute( "COMPONENT_PADSTACK_OVERRIDE", "7, vson_10_horz_pad"); $$attribute( "COMPONENT_PIN_DEFINITION", "8", , @scale , , [ 1.400, 0.00 ]); $$attribute( "COMPONENT_PADSTACK_OVERRIDE", "8, vson_10_horz_pad"); $$attribute( "COMPONENT_PIN_DEFINITION", "9", , @scale , , [ 1.400, 0.50 ]); $$attribute( "COMPONENT_PADSTACK_OVERRIDE", "9, vson_10_horz_pad"); $$attribute( "COMPONENT_PIN_DEFINITION", "10", , @scale , , [ 1.400, 1.00 ]); $$attribute( "COMPONENT_PADSTACK_OVERRIDE", "10, vson_10_horz_pad"); // // Now the 4 Thermal Vias in the center for the Thermal Pad // $$attribute( "COMPONENT_PIN_DEFINITION", "11", , @scale , , [ 0.00, 0.95 ]); $$attribute( "COMPONENT_PADSTACK_OVERRIDE", "11, vson_10_thd_pin"); $$attribute( "COMPONENT_PIN_DEFINITION", "12", , @scale , , [ 0.00, -0.95 ]); $$attribute( "COMPONENT_PADSTACK_OVERRIDE", "12, vson_10_thd_pin"); $$attribute( "COMPONENT_PIN_DEFINITION", "13", , @scale , , [ -0.575, 0.00 ]); $$attribute( "COMPONENT_PADSTACK_OVERRIDE", "13, vson_10_thd_pin"); $$attribute( "COMPONENT_PIN_DEFINITION", "14", , @scale , , [ 0.575, 0.00 ]); $$attribute( "COMPONENT_PADSTACK_OVERRIDE", "14, vson_10_thd_pin"); // // Now 4 "Pins" that are just more copper for the Thermal Pad // // These "Pins" are not explicitly connected to anything // in the Net List. They are electrically connected to // and are part of the center Thermal Pad. // $$attribute( "COMPONENT_PIN_DEFINITION", "15", , @scale , , [ -0.25, 1.40 ]); $$attribute( "COMPONENT_PADSTACK_OVERRIDE", "15, vson_10_vert_pad"); $$attribute( "COMPONENT_PIN_DEFINITION", "16", , @scale , , [ -0.25, -1.40 ]); $$attribute( "COMPONENT_PADSTACK_OVERRIDE", "16, vson_10_vert_pad"); $$attribute( "COMPONENT_PIN_DEFINITION", "17", , @scale , , [ 0.25, -1.40 ]); $$attribute( "COMPONENT_PADSTACK_OVERRIDE", "17, vson_10_vert_pad"); $$attribute( "COMPONENT_PIN_DEFINITION", "18", , @scale , , [ 0.25, 1.40 ]); $$attribute( "COMPONENT_PADSTACK_OVERRIDE", "18, vson_10_vert_pad"); //----------------------------------------------------------------------------