// // file: qfn_16_on_semi_bot // // 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_2. // 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_6 // to indicate the location of a Via that needs to be // Plugged from the Bottom. This works because in the // Hub design the QFN_16_On_Semi_Bot package is only // instanced on the Bottom 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_5 to indicate the Top // 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. Move the silkscreen // to the correct side. // // // // // // // On the Hub Module this Geometry is used for: // // ON-Semi NB7VQ14M 1:4 Fanout of MGT Signal BOTTOM Side // // // // This geometry is just for the Bottom version of the // QFN_16_On_Semi. // // All details about this QFN_16_On_Semi_Bot geometry are // in the qfn_16_on_semi_top file. // // Except for the Thermal/Ground Via Through Holes this geometry // uses the pin/pad stacks from the QFN_16_On_Semi_Top geometry. // This bottom geometry needs its own Thermal/Ground Via Through Hole // geometry because these holes must be plugged from the Bottom. // Note that this works in the Hub design because this geometry // is only placed on the Bottom side of the card. // // The basic differences between the Top and Bot versions of // the QFN_16_On_Semi Geometry are: // // - Which surface get the "back side metal" for the center // Thermal/Ground pad. // // - Which surface gets the Plugs for the Thermal/Ground Via // Through Holes. // $abort_enable = @false; $$lock_windows(@on) ; $$snap_diagonal(@off) ; $$snap_orthogonal(@off) ; //---------------------------------------------------------------------------- // // Through Hole Pin/Pad Stack for the "Thermal Vias" BOTTOM 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_Bot" ); $$page(0.0, 0.0, 0.0, @mm, 0.0, 0.0, [ 0.0, 0.0, 'PI$QFN_16_On_Semi_THD_Pin_Bot' ] ); $$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_6", 0.0, 0.0, 0.28, 0.0 ); //---------------------------------------------------------------------------- // // Now start the actual QFN-16 On-Semi Bottom Geometry // $$lock_windows(@on) ; $$create_component("QFN_16_On_Semi_Bot", @replace); $$page( 0.0, 0.0, 0.0, @mm, 0.0, 0.0, [ 0.0, 0.0, 'CO$QFN_16_On_Semi_Bot' ]); $$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_bot // $$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_2", -2.6, 1.8, 0.8, 0.20 ); $$circle( "SILKSCREEN_2", -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 2 // // - Backside Copper is on SHEET_DIELECTRIC_2 // // - Solder Mask Relief for this Thermal Pad // // - Paste Mask openings // $$polygon( "BREAKOUT_2", , [ -0.88, -0.88, 0.88, -0.88, 0.88, 0.88, -0.88, 0.88 ] ); $$polygon( "SOLDER_MASK_2", , [ -0.93, -0.93, 0.93, -0.93, 0.93, 0.93, -0.93, 0.93 ] ); $$polygon( "PASTE_MASK_2", , [ 0.10, 0.10, 0.84, 0.10, 0.84, 0.84, 0.10, 0.84 ] ); $$polygon( "PASTE_MASK_2", , [ -0.10, 0.10, -0.84, 0.10, -0.84, 0.84, -0.10, 0.84 ] ); $$polygon( "PASTE_MASK_2", , [ 0.10, -0.10, 0.84, -0.10, 0.84, -0.84, 0.10, -0.84 ] ); $$polygon( "PASTE_MASK_2", , [ -0.10, -0.10, -0.84, -0.10, -0.84, -0.84, -0.10, -0.84 ] ); $$polygon( "SHEET_DIELECTRIC_2", , [ -0.79, -0.79, 0.90, -0.79, 0.90, 0.90, -0.79, 0.90 ] ); // // Plugs from the Bottom of Pins 18 and 19 // // Pins 18 and 19 need plugs from the Bottom (just like all 4 // of the center thermal pad pins) and they also need plugs from // the Top because they are so close to a bypass capacitor. // Indicate here the plugs from the Bottom for Pins 18 and 19. // $$circle( "PREPREG_5", -0.55, 0.55, 0.28, 0.0 ); $$circle( "PREPREG_5", -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_Bot" ); $$attribute( "COMPONENT_PADSTACK_OVERRIDE", "18, QFN_16_On_Semi_THD_Pin_Bot" ); $$attribute( "COMPONENT_PADSTACK_OVERRIDE", "19, QFN_16_On_Semi_THD_Pin_Bot" ); $$attribute( "COMPONENT_PADSTACK_OVERRIDE", "20, QFN_16_On_Semi_THD_Pin_Bot" );