// // file: qfn_16_on_semi_top // // date: 9-Nov-2012 Original Version for CMX // // 12-Apr-2015 Revision for NB7VQ14M on the Hub Module // Note that On-Semi may now be recommending // a pad width of 0.30mm (vs earlier 0.25 mm). // // 14-Apr-2015 Change pad width to 0.30 mm. See On-Semi SOLDERRM-D // // 10-Aug-2016 Rework this whole geometry in to my "new, simple" // format for QFN Exposed Pad devices. Dump a lot // of the old notes and comments. Look at the CMX // version of this Geometry if you want to see the // old stuff. Split QFN-16 into 3 versions: TI, // On-Semi for Top, On-Semi for the Bottom side. // // 13-Sep-2016 Move the backside metal for the center thermal/gnd // pad from Breakout_2 to Sheet_Dielectric_1. // Handling of the backside metal is described in // the Hub trace routing details file. // Adjust the size of the backside center pad and // adjust the diameter of drill via lands for the // center pad. // // 10-Dec-2016 To the Pin/Pad Stack for the Center Thermal Pad Via // geometry add a 0.28 mm diameter flash on PREPREG_5 // to indicate the location of a Via that needs to be // Plugged from the Top. This works because in the Hub // design the QFN_16_On_Semi_Toop package is only // instanced on the top side of the card. // // 13-Dec-2016 It's now clear that I need to plug pins 18 and 19 // from both the Top and from the Bottom. Instead of // making another pin/pad stack I will add to the main // body of this geometry the required 0.28 mm diameter // flashes on on PREPREG_6 to indicate the Bottom // plugs of pins 18 and 19. Note that this implies // a fixed known placement orientation as used on HUB. // // 20-Jan-2017 Reduce the windows in the Solder Stencil to give // about 71% coverage of the center pcb pad. It had // been set for about 75% coverage. // // // // // On the Hub Module this Geometry is used for: // // ON-Semi NB7VQ14M 1:4 Fanout of MGT Signal TOP Side // // // // This geometry is for the 3mm x 3mm QFN-16 // Quad Flat No-leads 16 pin. // // There are some differences in pad sizes between the On-Semi // and TI devices. There are also differences between the PCB // layout recomendations from On-Semi and TI for the QFN-16. // I've given up on trying to make a common Geometry that will // for for both and I'm switching to using a separate // geometry for each company's parts. // // // Recall that the center pad must be a Through Hole Device pad // as it must attach to the ground planes to carry away heat. // // Like other QFN packages there are special considerations // wrt Solder Mask openings and control of the Solder Paste // placement on the center pad. The Thermal Vias must be // "plugged" to prevent the solder for the center Exposed // Pad from wicking into these vias. // // // PCB PAD Layout - See On-Semi SOLDERRM Rev. D March 2016 // - TI QFN PCB Attachment SLUA271A Sept 2007 // // // On-Semi Device Dimensions: // // Center Pad: 1.65 mm sq min, 1.75 mm sq typ, 1.85 mm sq max // // Perimeter Pad Length: 0.30 mm min, 0.40 mm typ, 0.50 mm max // Perimeter Pad Width: 0.18 mm min, 0.30 mm max // // --> Heel-to-Hell Distance: 2.00 mm min, 2.20 mm typ, 2.40 mm max // // --> The Toe-to-Toe Distance is defined as 3.00 mm by the device size. // // // On-Semi Recommended PCB Dimensions: // // Perimeter PCB Pad: 0.58 mm x 0.30 mm // // Center-to-Center PCB Pad Spacing across the layout: 2.72 mm // // Center PCB Pad: 1.84 mm x 1.84 mm square // // Stencil: 70% to 80% of the center pad land area --> 1.59 mm sq // // --> Clearance: 0.15 mm center pad to perimeter pads PCB <-- very tight // // --> Perimeter Pad Heel-to-Heel Distance: 2.14 mm // // --> The PCB pad typically extends 0.03 mm further inward // than the Device pad. // // --> The PCB pad typically extends 0.15 mm further outward // than the Device pad. // // // // // This Geometry Exposed Pad Design: // // The pcb Exposed pad will be 1.76 mm x 1.76 mm. // This is exactly in the middle of the range of the Exposed // pad size on the package. Typically they say that PCB // center pad land size should equal package Exposed pad size // on the device. The ON-Semi document shows the pcb center // pad land being 1.84 mm square. // // There are 4 through holes spaced 0.55mm in X and Y from 0,0 // This make these holes 1.10mm apart in either X or Y // // These 4 pins are numbered 17:20 in the normal CCW layout // // The Solder Mask will be 1.86 mm x 1.86 mm centered on 0,0 // i.e. the Solder Mask is 0.05mm bigger at every edge // // The solder stincil will be: // 4 sections 0.74mm x 0.74mm i.e. about 71% // of the pcb center pad area. The solder stincil // goes out to within 0.04 mm of the edges of the // center pcb pad and has a 0.20 mm wide bars making // a cross in the center where no solder paste is applied. // // // // This Geometry Perimeter Pad Design: // // The pcb signal pads are 0.28 mm x 0.61 mm // // The Solder Mask opening is 0.38 mm x 0.71 mm centered on the pad // // The Solder Stencil opening is 0.28 mm x 0.61 mm centered on the pad // // Center-to-Center Pad Spacing across the device: 2.76 mm // // --> PCB Pad Heel-to-Heel Distance: 2.15 mm // // --> Clearance to the 1.76 mm sq center pad: 0.195 mm // // --> PCB Pad Toe-to-Toe Distance: 3.37 mm // // --> The PCB pad typically extends 0.025 mm further inward // than the Device pad. // // --> The PCB pad typically extends 0.185 mm further outward // than the Device pad. // // //---------------------------------------------------------------------------- // // // Lay this out with the Pin #1 in the top lefthand corner. // // Label the 4 DAP pads as pins: 17, 18, 19, 20 // // //---------------------------------------------------------------------------- // $abort_enable = @false; $$lock_windows(@on) ; $$snap_diagonal(@off) ; $$snap_orthogonal(@off) ; // //---------------------------------------------------------------------------- // // Pads with a long Vertical axis. $$lock_windows(@on); $$create_pin("QFN_16_On_Semi_Vert_Pad", @replace); $$page(0.0,0.0,0.0, @mm, 0.0, 0.0, [0.0, 0.0, 'PI$QFN_16_On_Semi_Vert_Pad']); $$point_mode(@vertex); $$polygon( "PAD", , [ 0.14, 0.31, -0.14, 0.31, -0.14, -0.31, 0.14, -0.31 ] ); $$polygon( "SOLDER_MASK", , [ 0.19, 0.36, -0.19, 0.36, -0.19, -0.36, 0.19, -0.36 ] ); $$polygon( "PASTE_MASK", , [ 0.14, 0.31, -0.14, 0.31, -0.14, -0.31, 0.14, -0.31 ] ); $$attribute( "TERMINAL_SURFACE_DEFINITION", ""); //---------------------------------------------------------------------------- // Pads with a long Horizontal axis. $$lock_windows(@on); $$create_pin("QFN_16_On_Semi_Horz_Pad", @replace); $$page(0.0,0.0,0.0, @mm, 0.0, 0.0, [0.0, 0.0, 'PI$QFN_16_On_Semi_Horz_Pad']); $$point_mode(@vertex); $$polygon( "PAD", , [ 0.31, 0.14, -0.31, 0.14, -0.31, -0.14, 0.31, -0.14 ] ); $$polygon( "SOLDER_MASK", , [ 0.36, 0.19, -0.36, 0.19, -0.36, -0.19, 0.36, -0.19 ] ); $$polygon( "PASTE_MASK", , [ 0.31, 0.14, -0.31, 0.14, -0.31, -0.14, 0.31, -0.14 ] ); $$attribute( "TERMINAL_SURFACE_DEFINITION", ""); //---------------------------------------------------------------------------- // // Through Hole Pin/Pad Stack for the "Thermal Vias" TOP Side // // 0.30 mm finished hole diameter // 0.48 mm land pad // 0.85 mm plane relief // 0.50 mm solder mask to un-tent the via on both sides // 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( "QFN_16_On_Semi_THD_Pin_Top" ); $$page(0.0, 0.0, 0.0, @mm, 0.0, 0.0, [ 0.0, 0.0, 'PI$QFN_16_On_Semi_THD_Pin_Top' ] ); $$point_mode(@vertex); $$attribute( "TERMINAL_THRUHOLE_DEFINITION", ""); $$attribute( "TERMINAL_DRILL_SIZE", "", , @scale , , [ 0.30, 0.0 ]); $$circle( "SIGNAL", 0.0, 0.0, 0.48, 0.0 ); $$circle( "POWER", 0.0, 0.0, 0.85, 0.0 ); $$circle( "SOLDER_MASK", 0.0, 0.0, 0.50, 0.0 ); $$circle( "PREPREG_5", 0.0, 0.0, 0.28, 0.0 ); //---------------------------------------------------------------------------- // // Now start the actual QFN-16 On-Semi Top Geometry // $$lock_windows(@on) ; $$create_component("QFN_16_On_Semi_Top", @replace); $$page( 0.0, 0.0, 0.0, @mm, 0.0, 0.0, [ 0.0, 0.0, 'CO$QFN_16_On_Semi_Top' ]); $$point_mode(@vertex); // // $$attribute( "COMPONENT_LAYOUT_TYPE", "surface"); // $$attribute( "COMPONENT_LAYOUT_SURFACE", "both"); $$attribute( "COMPONENT_HEIGHT", "1.20", , @scale , , [0.0, 0.0] ); // // Component Placement Outline for the qfn_16_on_semi_top // $$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 Outline then Details // $$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", 0.20 ); // // Mark Pin Number 1 // $$circle( "SILKSCREEN_1", -2.6, 1.8, 0.8, 0.20 ); $$circle( "SILKSCREEN_1", -2.6, 1.8, 0.6, 0.20 ); // Silkscreen End of // // Reference Designator // $$text( "SILKSCREEN", "^$ref", 0.0, 3.9, 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 under the IC is on Breakout 1 // // - Backside Copper is on SHEET_DIELECTRIC_1 // // - Solder Mask Relief for this Thermal Pad // // - Paste Mask openings // $$polygon( "BREAKOUT_1", , [ -0.88, -0.88, 0.88, -0.88, 0.88, 0.88, -0.88, 0.88 ] ); $$polygon( "SOLDER_MASK_1", , [ -0.93, -0.93, 0.93, -0.93, 0.93, 0.93, -0.93, 0.93 ] ); $$polygon( "PASTE_MASK_1", , [ 0.10, 0.10, 0.84, 0.10, 0.84, 0.84, 0.10, 0.84 ] ); $$polygon( "PASTE_MASK_1", , [ -0.10, 0.10, -0.84, 0.10, -0.84, 0.84, -0.10, 0.84 ] ); $$polygon( "PASTE_MASK_1", , [ 0.10, -0.10, 0.84, -0.10, 0.84, -0.84, 0.10, -0.84 ] ); $$polygon( "PASTE_MASK_1", , [ -0.10, -0.10, -0.84, -0.10, -0.84, -0.84, -0.10, -0.84 ] ); $$polygon( "SHEET_DIELECTRIC_1", , [ -0.79, -0.90, 0.90, -0.90, 0.90, 0.79, -0.79, 0.79 ] ); // // Plugs from the Bottom of Pins 18 and 19 // // Pins 18 and 19 need plugs from the Top (just like all 4 // of the center thermal pad pins) and they also need plugs from // the Bottom because they are so close to a bypass capacitor. // Indicate here the plugs from the Bottom for Pins 18 and 19. // $$circle( "PREPREG_6", -0.55, 0.55, 0.28, 0.0 ); $$circle( "PREPREG_6", -0.55, -0.55, 0.28, 0.0 ); // // Define the pins: // ------------------ // // Pads Along the Left-Hand Edge $$attribute( "COMPONENT_PIN_DEFINITION", "1", , @scale , , [ -1.38, 0.75 ]); $$attribute( "COMPONENT_PADSTACK_OVERRIDE", "1, QFN_16_On_Semi_Horz_Pad" ); $$attribute( "COMPONENT_PIN_DEFINITION", "2", , @scale , , [ -1.38, 0.25 ]); $$attribute( "COMPONENT_PADSTACK_OVERRIDE", "2, QFN_16_On_Semi_Horz_Pad" ); $$attribute( "COMPONENT_PIN_DEFINITION", "3", , @scale , , [ -1.38, -0.25 ]); $$attribute( "COMPONENT_PADSTACK_OVERRIDE", "3, QFN_16_On_Semi_Horz_Pad" ); $$attribute( "COMPONENT_PIN_DEFINITION", "4", , @scale , , [ -1.38, -0.75 ]); $$attribute( "COMPONENT_PADSTACK_OVERRIDE", "4, QFN_16_On_Semi_Horz_Pad" ); // Pads Along the Bottom Edge $$attribute( "COMPONENT_PIN_DEFINITION", "5", , @scale , , [ -0.75, -1.38 ]); $$attribute( "COMPONENT_PADSTACK_OVERRIDE", "5, QFN_16_On_Semi_Vert_Pad" ); $$attribute( "COMPONENT_PIN_DEFINITION", "6", , @scale , , [ -0.25, -1.38 ]); $$attribute( "COMPONENT_PADSTACK_OVERRIDE", "6, QFN_16_On_Semi_Vert_Pad" ); $$attribute( "COMPONENT_PIN_DEFINITION", "7", , @scale , , [ 0.25, -1.38 ]); $$attribute( "COMPONENT_PADSTACK_OVERRIDE", "7, QFN_16_On_Semi_Vert_Pad" ); $$attribute( "COMPONENT_PIN_DEFINITION", "8", , @scale , , [ 0.75, -1.38 ]); $$attribute( "COMPONENT_PADSTACK_OVERRIDE", "8, QFN_16_On_Semi_Vert_Pad" ); // Pads Along the Right-Hand Edge $$attribute( "COMPONENT_PIN_DEFINITION", "9", , @scale , , [ 1.38, -0.75 ]); $$attribute( "COMPONENT_PADSTACK_OVERRIDE", "9, QFN_16_On_Semi_Horz_Pad" ); $$attribute( "COMPONENT_PIN_DEFINITION", "10", , @scale , , [ 1.38, -0.25 ]); $$attribute( "COMPONENT_PADSTACK_OVERRIDE", "10, QFN_16_On_Semi_Horz_Pad" ); $$attribute( "COMPONENT_PIN_DEFINITION", "11", , @scale , , [ 1.38, 0.25 ]); $$attribute( "COMPONENT_PADSTACK_OVERRIDE", "11, QFN_16_On_Semi_Horz_Pad" ); $$attribute( "COMPONENT_PIN_DEFINITION", "12", , @scale , , [ 1.38, 0.75 ]); $$attribute( "COMPONENT_PADSTACK_OVERRIDE", "12, QFN_16_On_Semi_Horz_Pad" ); // Pads Along the Top Edge $$attribute( "COMPONENT_PIN_DEFINITION", "13", , @scale , , [ 0.75, 1.38 ]); $$attribute( "COMPONENT_PADSTACK_OVERRIDE", "13, QFN_16_On_Semi_Vert_Pad" ); $$attribute( "COMPONENT_PIN_DEFINITION", "14", , @scale , , [ 0.25, 1.38 ]); $$attribute( "COMPONENT_PADSTACK_OVERRIDE", "14, QFN_16_On_Semi_Vert_Pad" ); $$attribute( "COMPONENT_PIN_DEFINITION", "15", , @scale , , [ -0.25, 1.38 ]); $$attribute( "COMPONENT_PADSTACK_OVERRIDE", "15, QFN_16_On_Semi_Vert_Pad" ); $$attribute( "COMPONENT_PIN_DEFINITION", "16", , @scale , , [ -0.75, 1.38 ]); $$attribute( "COMPONENT_PADSTACK_OVERRIDE", "16, QFN_16_On_Semi_Vert_Pad" ); // Center Pad with 2x2 Drill Array Thermal/Ground Connection $$attribute( "COMPONENT_PIN_DEFINITION", "17", , @scale , , [ 0.55, 0.55 ]); $$attribute( "COMPONENT_PIN_DEFINITION", "18", , @scale , , [ -0.55, 0.55 ]); $$attribute( "COMPONENT_PIN_DEFINITION", "19", , @scale , , [ -0.55, -0.55 ]); $$attribute( "COMPONENT_PIN_DEFINITION", "20", , @scale , , [ 0.55, -0.55 ]); $$attribute( "COMPONENT_PADSTACK_OVERRIDE", "17, QFN_16_On_Semi_THD_Pin_Top" ); $$attribute( "COMPONENT_PADSTACK_OVERRIDE", "18, QFN_16_On_Semi_THD_Pin_Top" ); $$attribute( "COMPONENT_PADSTACK_OVERRIDE", "19, QFN_16_On_Semi_THD_Pin_Top" ); $$attribute( "COMPONENT_PADSTACK_OVERRIDE", "20, QFN_16_On_Semi_THD_Pin_Top" );