PCB-FPW developer documentation based on version: 0.0.11

Functions

bga.h File Reference

Header file for functions for BGA footprints (Ball Gate Array). More...

Go to the source code of this file.

Functions

int bga_create_element ()
 Create an Element for a BGA package.
int bga_create_packages_list ()
 Create a list of known BGA packages.
int bga_drc ()
 Do some Design Rule Checking for the BGA package type.
int bga_get_default_footprint_values ()
 Look up default values for BGA footprints.
int bga_set_gui_constraints ()
 Set GUI constraints for the BGA package type.
int bga_write_footprint ()
 Write a footprint for a BGA package.
void bga_init ()

Detailed Description

Header file for functions for BGA footprints (Ball Gate Array).

Author:
Copyright 2007, 2008, 2009, 2010, 2011 by Bert Timmerman <bert.timmerman@xs4all.nl>

This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.

Definition in file bga.h.


Function Documentation

int bga_create_element (  ) 
int bga_create_packages_list (  ) 

Create a list of known BGA packages.

The data in this list can be used in a combo box to select a pre-defined package.

Returns:
EXIT_SUCCESS when a packages list was created, EXIT_FAILURE when errors were encountered.

Definition at line 378 of file bga.c.

int bga_drc (  ) 

Do some Design Rule Checking for the BGA package type.

  • check for allowed pad shapes.
  • check for zero sized packages.
  • check for a zero sized courtyard.
  • check for minimum clearance between copper (X-direction).
  • check for minimum clearance between copper (Y-direction).
  • If any fiducials exist:
    • check for zero fiducial pad diameter.
    • check for zero width solder mask clearance.
    • check for minimum clearance between copper (between pads and fiducials, if any fiducials exist).
  • check for clearance of the package length with regard to the courtyard dimensions.
  • check for clearance of the package width with regard to the courtyard dimensions.
  • check for any silk lines or texts touching bare copper.
  • check for soldermask clearance (solder mask overlapping copper at the solder fillet area or worse).
  • check for a reasonable silk line width.
Returns:
EXIT_SUCCESS when no DRC violations were encountered, EXIT_FAILURE when DRC violations were found.

Todo:
Check for minimum clearance between pad copper and fiducial pad copper (including solder mask clearances).
Todo:
Check for any silk lines or texts touching bare copper.
Todo:
Check for soldermask clearance (solder mask overlapping copper at the solder fillet area or worse).

Definition at line 501 of file bga.c.

References courtyard_clearance_with_package, courtyard_length, courtyard_width, fiducial, fiducial_pad_diameter, fiducial_pad_solder_mask_clearance, footprint_name, footprint_type, MIL, MIL_100, MM, NO_UNITS, package_body_height, package_body_length, package_body_width, pad_clearance, pad_diameter, pad_shapes_type, pin1_square, pitch_x, pitch_y, silkscreen_line_width, silkscreen_package_outline, units_type, and verbose.

Referenced by write_footprint().

int bga_get_default_footprint_values (  ) 

Look up default values for BGA footprints.

Footprint values can be looked up by placing a question mark "?" in front of the footprint name.
If the footprint name is recognised the known values will be loaded and the entries involved in the GUI will be updated accordingly.
Currently the following footprints are supported:

  • BGA100C100P10X10_1100X1100X140,
  • BGA100C100P10X10_1100X1100X170,
  • BGA100C100P10X10_1100X1100X170A,
  • BGA100C100P10X10_1100X1100X200,
  • BGA100C100P10X10_1100X1100X350,
  • BGA100C50P10X10_600X600X110,
  • BGA100C50P11X11_600X600X100,
  • BGA100C50P14X14_800X800X120,
  • BGA100C50P14X14_800X800X135,
  • BGA100C50P15X15_1000X1000X120,
  • BGA100C65P10X10_800X800X140,
  • BGA100C80P10X10_1000X1000X140,
  • BGA100C80P10X10_1000X1000X150,
  • BGA100C80P10X10_900X900X100,
  • BGA100C80P10X10_900X900X120,
  • BGA100C80P10X10_900X900X120A,
  • BGA100C80P10X10_900X900X140,
  • BGA100C80P10X10_900X900X150,
  • BGA100C80P10X10_900X900X160,
  • BGA100C80P11X11_1100X1100X140,
  • BGA100C80P12X12_1000X1000X140,
  • BGA1020C100P32X32_3300X3300X350,
  • BGA1023C100P32X32_3300X3300X272,
  • BGA1023C100P32X32_3300X3300X287,
  • BGA1023C100P32X32_3300X3300X350,
  • BGA1024C100P32X32_3300X3300X350,
  • BGA103C65P8X13_600X900X100,
  • BGA1036C100P44X44_4500X4500X275,
  • BGA1056C100P39X39_4000X4000X380,
  • BGA1056C100P39X39_4000X4000X400,
  • BGA105C50P15X15_800X800X140,
  • BGA105C65P11X11_800X800X140,
  • BGA107C80P10X14_1050X1300X120,
  • BGA107C80P10X14_1050X1300X140,
  • BGA107C80P10X14_1050X1600X140,
  • BGA1089C100P33X33_3500X3500X350,
  • BGA1089C127P33X33_4250X4250X350,
  • BGA108C100P12X12_1300X1300X85,
  • BGA108C80P12X12_1000X1000X140,
  • BGA109C50P12X12_700X700X100,
  • BGA109C80P12X12_1000X1000X140,
  • BGA10C50P3X4_150X200X63,
  • BGA10C50P3X4_220X250X60,
  • BGA10C50P3X4_220X250X94,
  • BGA10N50P3X4_200X250X94,
  • BGA111C80P12X13_1000X1100X140,
  • BGA111C80P12X13_1100X1100X140,
  • BGA112C50P12X12_700X700X112,
  • BGA112C80P11X11_1000X1000X130,
  • BGA1148C100P34X34_3500X3500X340,
  • BGA114C80P6X19_550X1600X140,
  • BGA114C80P6X19_550X1600X150,
  • BGA1152C100P34X34_3500X3500X244,
  • BGA1152C100P34X34_3500X3500X332,
  • BGA1152C100P34X34_3500X3500X340,
  • BGA1152C100P34X34_3500X3500X350,
  • BGA1156C100P34X34_3500X3500X260,
  • BGA1156C100P34X34_3500X3500X311,
  • BGA1156C100P34X34_3500X3500X350,
  • BGA1156C100P34X34_3500X3500X380,
  • BGA1156C100P34X34_3500X3500X400,
  • BGA1156C100P34X34_3600X3600X450,
  • BGA115C80P10X14_800X1200X140,
  • BGA1160C100P39X39_4000X4000X245,
  • BGA1172C100P39X39_4000X4000X310,
  • BGA119C127P7X17_1400X2200X196,
  • BGA119C127P7X17_1400X2200X221,
  • BGA119C127P7X17_1400X2200X240,
  • BGA120C50P11X11_600X600X100,
  • BGA120C50P11X11_600X600X80,
  • BGA120C50P13X13_700X700X140,
  • BGA120C80P10X13_1000X1300X120,
  • BGA1216C100P41X41_4250X4250X380,
  • BGA1216C100P41X41_4250X4250X400,
  • BGA121C100P11X11_1200X1200X185,
  • BGA121C100P11X11_1200X1200X350,
  • BGA121C50P14X14_1000X1300X110,
  • BGA121C50P14X14_1000X1300X130,
  • BGA121C50P14X14_1050X1600X130,
  • BGA121C65P11X11_800X800X130,
  • BGA124C100P14X14_1500X1500X170,
  • BGA124C50P13X13_800X800X120,
  • BGA124C65P12X12_900X900X140,
  • BGA127C80P12X13_10500X1200X140,
  • BGA1284C100P36X36_3750X3750X380,
  • BGA1284C100P36X36_3750X3750X400,
Returns:
EXIT_SUCCESS when default values for a footprint were found, EXIT_FAILURE when the footprint name was not found.

Definition at line 912 of file bga.c.

References count_x, count_y, courtyard_length, courtyard_line_width, courtyard_width, fiducial, fiducial_pad_clearance, fiducial_pad_diameter, fiducial_pad_solder_mask_clearance, footprint_name, footprint_units, number_of_columns, number_of_pins, number_of_rows, package_body_height, package_body_length, package_body_width, package_is_radial, pad_clearance, pad_diameter, pad_shape, pad_solder_mask_clearance, pin_drill_diameter, pin_pad_exceptions_string, pitch_x, pitch_y, silkscreen_length, silkscreen_line_width, silkscreen_width, and verbose.

Referenced by on_footprint_name_entry_changed().

int bga_set_gui_constraints (  ) 

Set GUI constraints for the BGA package type.

This function is only to be compiled for GUI targets.

Returns:
EXIT_SUCCESS when the function is completed.

Definition at line 4765 of file bga.c.

References gui_constraints_disable_heel_and_toe_goals_tab_widgets(), gui_constraints_disable_thermal_tab_widgets(), and widget.

Referenced by on_footprint_type_entry_changed().

Here is the call graph for this function:

int bga_write_footprint (  )