00001
00025 #include "register_functions.c"
00026 #include "bga.h"
00027
00028
00035 int
00036 bga_create_element ()
00037 {
00038 gdouble xmax;
00039 gdouble xmin;
00040 gdouble ymax;
00041 gdouble ymin;
00042 gdouble dx;
00043 gint pin_number;
00044 gchar *pin_pad_name = g_strdup ("");
00045 gint i;
00046 gint j;
00047 FlagType pad_flag;
00048 ElementTypePtr element;
00049
00050 if (!element)
00051 {
00052 if (verbose)
00053 {
00054 g_log ("", G_LOG_LEVEL_WARNING,
00055 (_("[%s] could not create a valid element pointer for an element.")),
00056 footprint_type);
00057 }
00058 return (EXIT_FAILURE);
00059 }
00060
00061
00062 element->MarkX = 0;
00063 element->MarkY = 0;
00064
00065
00066 xmin = multiplier *
00067 (
00068 ((-pitch_x * number_of_columns) / 2.0) -
00069 (pad_diameter / 2.0) -
00070 pad_solder_mask_clearance
00071 );
00072 xmax = multiplier *
00073 (
00074 ((pitch_x * number_of_columns) / 2.0) +
00075 (pad_diameter / 2.0) +
00076 pad_solder_mask_clearance
00077 );
00078 ymin = multiplier *
00079 (
00080 ((-pitch_y * number_of_rows) / 2.0) -
00081 (pad_diameter / 2.0) -
00082 pad_solder_mask_clearance
00083 );
00084 ymax = multiplier *
00085 (
00086 ((pitch_y * number_of_rows) / 2.0) +
00087 (pad_diameter / 2.0) +
00088 pad_solder_mask_clearance
00089 );
00090
00091
00092 if ((multiplier * ((-package_body_length / 2.0) - courtyard_clearance_with_package)) < xmin)
00093 {
00094 xmin = (multiplier * ((-package_body_length / 2.0) - courtyard_clearance_with_package));
00095 }
00096 if ((multiplier * ((package_body_length / 2.0) + courtyard_clearance_with_package)) > xmax)
00097 {
00098 xmax = (multiplier * ((package_body_length / 2.0) + courtyard_clearance_with_package));
00099 }
00100 if ((multiplier * ((-package_body_width / 2.0) - courtyard_clearance_with_package)) < ymin)
00101 {
00102 ymin = (multiplier * ((-package_body_width / 2.0) - courtyard_clearance_with_package));
00103 }
00104 if ((multiplier * ((package_body_width / 2.0) + courtyard_clearance_with_package)) > ymax)
00105 {
00106 ymax = (multiplier * ((package_body_width / 2.0) + courtyard_clearance_with_package));
00107 }
00108
00109 if (multiplier * (-courtyard_length / 2.0) < xmin)
00110 {
00111 xmin = multiplier * (-courtyard_length / 2.0);
00112 }
00113 if (multiplier * (courtyard_length / 2.0) > xmax)
00114 {
00115 xmax = multiplier * (courtyard_length / 2.0);
00116 }
00117 if (multiplier * (-courtyard_width / 2.0) < ymin)
00118 {
00119 ymin = multiplier * (-courtyard_width / 2.0);
00120 }
00121 if (multiplier * (courtyard_width / 2.0) > ymax)
00122 {
00123 ymax = multiplier * (courtyard_width / 2.0);
00124 }
00125
00126 element->Name[1].Scale = 100;
00127 element->Name[1].X = 0.0 ;
00128 element->Name[1].Y = (ymin - 10000.0);
00129 element->Name[1].TextString = footprint_name;
00130 element->Name[1].Element = element;
00131 element->Name[1].Direction = EAST;
00132 element->Name[1].ID = ID++;
00133
00134 element->Name[2].Scale = 100;
00135 element->Name[2].X = 0.0 ;
00136 element->Name[2].Y = (ymin - 10000.0);
00137 element->Name[2].TextString = footprint_refdes;
00138 element->Name[2].Element = element;
00139 element->Name[2].Direction = EAST;
00140 element->Name[2].ID = ID++;
00141
00142 element->Name[3].Scale = 100;
00143 element->Name[3].X = 0.0 ;
00144 element->Name[3].Y = (ymin - 10000.0);
00145 element->Name[3].TextString = footprint_value;
00146 element->Name[3].Element = element;
00147 element->Name[3].Direction = EAST;
00148 element->Name[3].ID = ID++;
00149
00150 pin_number = 1;
00151 for (i = 0; (i < number_of_rows); i++)
00152
00153
00154
00155 {
00156 for (j = 0; (j < number_of_columns); j++)
00157
00158
00159 {
00160 if (pin1_square && (pin_number == 1))
00161 {
00162 pad_flag.f = SQUARE;
00163 }
00164 else
00165 {
00166 pad_flag.f = CLEAR;
00167 }
00168 pin_pad_name = g_strdup_printf ("%s%d", (row_letters[i]), (j + 1));
00169 if (get_pin_pad_exception (pin_pad_name))
00170 {
00171 create_new_pad
00172 (
00173 element,
00174 (int) (multiplier * ((((-number_of_columns -1) / 2.0) + 1 + j) * pitch_x)),
00175 (int) (multiplier * ((((-number_of_rows - 1) / 2.0) + 1 + i) * pitch_y)),
00176 (int) (multiplier * ((((-number_of_columns -1) / 2.0) + 1 + j) * pitch_x)),
00177 (int) (multiplier * ((((-number_of_rows - 1) / 2.0) + 1 + i) * pitch_y)),
00178 (int) (multiplier * pad_diameter),
00179 (int) (multiplier * pad_clearance),
00180 (int) (multiplier * (pad_diameter + (2 * pad_solder_mask_clearance))),
00181 pin_pad_name,
00182 g_strdup_printf ("%d", pin_number),
00183 pad_flag
00184 );
00185 }
00186 pin_number++;
00187 }
00188 }
00189
00190 if (fiducial)
00191 {
00192 pin_pad_name = g_strdup ("");
00193 pad_flag.f = NOPASTE;
00194 create_new_pad
00195 (
00196 element,
00197 (int) (multiplier * ((silkscreen_length - courtyard_length > 2) ?
00198 (courtyard_length / 2) :
00199 ((courtyard_length / 2 ) + 1))),
00200
00201 (int) (multiplier * ((silkscreen_width - courtyard_width > 2) ?
00202 (-courtyard_width / 2) :
00203 ((-courtyard_width / 2 ) - 1))),
00204
00205 (int) (multiplier * ((silkscreen_length - courtyard_length > 2) ?
00206 (courtyard_length / 2) :
00207 ((courtyard_length / 2 ) + 1))),
00208
00209 (int) (multiplier * ((silkscreen_width - courtyard_width > 2) ?
00210 (-courtyard_width / 2) :
00211 ((-courtyard_width / 2 ) - 1))),
00212
00213 (int) (multiplier * fiducial_pad_diameter),
00214 (int) (multiplier * fiducial_pad_solder_mask_clearance),
00215
00216 (int) (multiplier * (fiducial_pad_diameter +
00217 (2 * fiducial_pad_solder_mask_clearance))),
00218
00219 pin_pad_name,
00220 "0",
00221 pad_flag
00222 );
00223 pin_number++;
00224 create_new_pad
00225 (
00226 element,
00227 (int) (multiplier * ((silkscreen_length - courtyard_length > 2) ?
00228 (-courtyard_length / 2) :
00229 ((-courtyard_length / 2 ) - 1))),
00230
00231 (int) (multiplier * ((silkscreen_width - courtyard_width > 2) ?
00232 (courtyard_width / 2) :
00233 ((courtyard_width / 2 ) + 1))),
00234
00235 (int) (multiplier * ((silkscreen_length - courtyard_length > 2) ?
00236 (-courtyard_length / 2) :
00237 ((-courtyard_length / 2 ) - 1))),
00238
00239 (int) (multiplier * ((silkscreen_width - courtyard_width > 2) ?
00240 (courtyard_width / 2) :
00241 ((courtyard_width / 2 ) + 1))),
00242
00243 (int) (multiplier * fiducial_pad_diameter),
00244 (int) (multiplier * fiducial_pad_solder_mask_clearance),
00245
00246 (int) (multiplier * (fiducial_pad_diameter +
00247 (2 * fiducial_pad_solder_mask_clearance))),
00248
00249 pin_pad_name,
00250 "0",
00251 pad_flag
00252 );
00253 }
00254
00255 if (silkscreen_package_outline)
00256 {
00257 create_new_line
00258 (
00259 element,
00260 (int) (multiplier * (-package_body_length / 2.0)),
00261 (int) (multiplier * (-package_body_width / 2.0)),
00262 (int) (multiplier * (-package_body_length / 2.0)),
00263 (int) (multiplier * (package_body_width / 2.0)),
00264 (int) (multiplier * silkscreen_line_width)
00265 );
00266 create_new_line
00267 (
00268 element,
00269 (int) (multiplier * (package_body_length / 2.0)),
00270 (int) (multiplier * (-package_body_width / 2.0)),
00271 (int) (multiplier * (package_body_length / 2.0)),
00272 (int) (multiplier * (package_body_width / 2.0)),
00273 (int) (multiplier * silkscreen_line_width)
00274 );
00275 create_new_line
00276 (
00277 element,
00278 (int) (multiplier * (-package_body_length / 2.0)),
00279 (int) (multiplier * (-package_body_width / 2.0)),
00280 (int) (multiplier * (package_body_length / 2.0)),
00281 (int) (multiplier * (-package_body_width / 2.0)),
00282 (int) (multiplier * silkscreen_line_width)
00283 );
00284 create_new_line
00285 (
00286 element,
00287 (int) (multiplier * (package_body_length / 2.0)),
00288 (int) (multiplier * (package_body_width / 2.0)),
00289 (int) (multiplier * (-package_body_length / 2.0)),
00290 (int) (multiplier * (package_body_width / 2.0)),
00291 (int) (multiplier * silkscreen_line_width)
00292 );
00293 }
00294
00295 if (silkscreen_indicate_1)
00296 {
00297 for (dx = 0.0; dx < (pitch_x / 2.0); dx = dx + silkscreen_line_width)
00298 {
00299 create_new_line
00300 (
00301 element,
00302 (int) (multiplier * (-package_body_length / 2.0)),
00303 (int) (multiplier * ((-package_body_width / 2.0) + dx)),
00304 (int) (multiplier * ((-package_body_length / 2.0) + dx)),
00305 (int) (multiplier * (-package_body_width / 2.0)),
00306 (int) (multiplier * (silkscreen_line_width))
00307 );
00308 }
00309 }
00310
00311 if (courtyard)
00312 {
00313 create_new_line
00314 (
00315 element,
00316 (int) (xmin),
00317 (int) (ymin),
00318 (int) (xmin),
00319 (int) (ymax),
00320 (int) (multiplier * courtyard_line_width)
00321 );
00322 create_new_line
00323 (
00324 element,
00325 (int) (xmax),
00326 (int) (ymin),
00327 (int) (xmax),
00328 (int) (ymax),
00329 (int) (multiplier * courtyard_line_width)
00330 );
00331 create_new_line
00332 (
00333 element,
00334 (int) (xmin),
00335 (int) (ymin),
00336 (int) (xmax),
00337 (int) (ymin),
00338 (int) (multiplier * courtyard_line_width)
00339 );
00340 create_new_line
00341 (
00342 element,
00343 (int) (xmax),
00344 (int) (ymax),
00345 (int) (xmin),
00346 (int) (ymax),
00347 (int) (multiplier * courtyard_line_width)
00348 );
00349 }
00350
00351 if (attributes_in_footprint)
00352 {
00353 element = create_attributes_in_element (element);
00354 }
00355
00356 if (verbose)
00357 {
00358 g_log ("", G_LOG_LEVEL_INFO,
00359 (_("[%s] created an element for element: %s.")),
00360 footprint_type,
00361 footprint_filename);
00362 }
00363 current_element = (ElementTypePtr) &element;
00364 return (EXIT_SUCCESS);
00365 }
00366
00367
00377 int
00378 bga_create_packages_list ()
00379 {
00380 g_list_free (packages_list);
00381 packages_list = g_list_append (packages_list, "BGA100C100P10X10_1100X1100X140");
00382 packages_list = g_list_append (packages_list, "BGA100C100P10X10_1100X1100X170");
00383 packages_list = g_list_append (packages_list, "BGA100C100P10X10_1100X1100X170A");
00384 packages_list = g_list_append (packages_list, "BGA100C100P10X10_1100X1100X200");
00385 packages_list = g_list_append (packages_list, "BGA100C100P10X10_1100X1100X350");
00386 packages_list = g_list_append (packages_list, "BGA100C50P10X10_600X600X110");
00387 packages_list = g_list_append (packages_list, "BGA100C50P11X11_600X600X100");
00388 packages_list = g_list_append (packages_list, "BGA100C50P14X14_800X800X120");
00389 packages_list = g_list_append (packages_list, "BGA100C50P14X14_800X800X135");
00390 packages_list = g_list_append (packages_list, "BGA100C50P15X15_1000X1000X120");
00391 packages_list = g_list_append (packages_list, "BGA100C65P10X10_800X800X140");
00392 packages_list = g_list_append (packages_list, "BGA100C80P10X10_1000X1000X140");
00393 packages_list = g_list_append (packages_list, "BGA100C80P10X10_1000X1000X150");
00394 packages_list = g_list_append (packages_list, "BGA100C80P10X10_900X900X100");
00395 packages_list = g_list_append (packages_list, "BGA100C80P10X10_900X900X120");
00396 packages_list = g_list_append (packages_list, "BGA100C80P10X10_900X900X120A");
00397 packages_list = g_list_append (packages_list, "BGA100C80P10X10_900X900X140");
00398 packages_list = g_list_append (packages_list, "BGA100C80P10X10_900X900X150");
00399 packages_list = g_list_append (packages_list, "BGA100C80P10X10_900X900X160");
00400 packages_list = g_list_append (packages_list, "BGA100C80P11X11_1100X1100X140");
00401 packages_list = g_list_append (packages_list, "BGA100C80P12X12_1200X1200X140");
00402 packages_list = g_list_append (packages_list, "BGA1020C100P32X32_3300X3300X350");
00403 packages_list = g_list_append (packages_list, "BGA1023C100P32X32_3300X3300X272");
00404 packages_list = g_list_append (packages_list, "BGA1023C100P32X32_3300X3300X287");
00405 packages_list = g_list_append (packages_list, "BGA1023C100P32X32_3300X3300X350");
00406 packages_list = g_list_append (packages_list, "BGA1024C100P32X32_3300X3300X350");
00407 packages_list = g_list_append (packages_list, "BGA1036C100P44X44_4500X4500X275");
00408 packages_list = g_list_append (packages_list, "BGA103C65P8X13_600X900X100");
00409 packages_list = g_list_append (packages_list, "BGA1056C100P39X39_4000X4000X380");
00410 packages_list = g_list_append (packages_list, "BGA1056C100P39X39_4000X4000X400");
00411 packages_list = g_list_append (packages_list, "BGA105C50P15X15_800X800X140");
00412 packages_list = g_list_append (packages_list, "BGA105C65P11X11_800X800X140");
00413 packages_list = g_list_append (packages_list, "BGA107C80P10X14_1050X1300X120");
00414 packages_list = g_list_append (packages_list, "BGA107C80P10X14_1050X1300X140");
00415 packages_list = g_list_append (packages_list, "BGA107C80P10X14_1050X1600X140");
00416 packages_list = g_list_append (packages_list, "BGA1089C100P33X33_3500X3500X350");
00417 packages_list = g_list_append (packages_list, "BGA1089C127P33X33_4250X4250X350");
00418 packages_list = g_list_append (packages_list, "BGA108C100P12X12_1300X1300X185");
00419 packages_list = g_list_append (packages_list, "BGA108C80P12X12_1000X1000X140");
00420 packages_list = g_list_append (packages_list, "BGA109C50P12X12_700X700X100");
00421 packages_list = g_list_append (packages_list, "BGA109C80P12X12_1000X1000X140");
00422 packages_list = g_list_append (packages_list, "BGA10C50P3X4_150X200X63");
00423 packages_list = g_list_append (packages_list, "BGA10C50P3X4_220X250X60");
00424 packages_list = g_list_append (packages_list, "BGA10C50P3X4_200X250X94");
00425 packages_list = g_list_append (packages_list, "BGA10N50P3X4_200X250X94");
00426 packages_list = g_list_append (packages_list, "BGA111C80P12X13_1000X1100X140");
00427 packages_list = g_list_append (packages_list, "BGA111C80P12X13_1100X1100X140");
00428 packages_list = g_list_append (packages_list, "BGA112C50P12X12_700X700X112");
00429 packages_list = g_list_append (packages_list, "BGA112C80P11X11_1000X1000X130");
00430 packages_list = g_list_append (packages_list, "BGA1148C100P34X34_3500X3500X340");
00431 packages_list = g_list_append (packages_list, "BGA114C80P6X19_550X1600X140");
00432 packages_list = g_list_append (packages_list, "BGA114C80P6X19_550X1600X150");
00433 packages_list = g_list_append (packages_list, "BGA1152C100P34X34_3500X3500X244");
00434 packages_list = g_list_append (packages_list, "BGA1152C100P34X34_3500X3500X332");
00435 packages_list = g_list_append (packages_list, "BGA1152C100P34X34_3500X3500X340");
00436 packages_list = g_list_append (packages_list, "BGA1152C100P34X34_3500X3500X350");
00437 packages_list = g_list_append (packages_list, "BGA1156C100P34X34_3500X3500X260");
00438 packages_list = g_list_append (packages_list, "BGA1156C100P34X34_3500X3500X311");
00439 packages_list = g_list_append (packages_list, "BGA1156C100P34X34_3500X3500X350");
00440 packages_list = g_list_append (packages_list, "BGA1156C100P34X34_3500X3500X380");
00441 packages_list = g_list_append (packages_list, "BGA1156C100P34X34_3500X3500X400");
00442 packages_list = g_list_append (packages_list, "BGA1156C100P34X34_3600X3600X450");
00443 packages_list = g_list_append (packages_list, "BGA115C80P10X14_800X1200X140");
00444 packages_list = g_list_append (packages_list, "BGA1160C100P39X39_4000X4000X245");
00445 packages_list = g_list_append (packages_list, "BGA1172C100P39X39_4000X4000X310");
00446 packages_list = g_list_append (packages_list, "BGA119C127P7X17_1400X2200X196");
00447 packages_list = g_list_append (packages_list, "BGA119C127P7X17_1400X2200X221");
00448 packages_list = g_list_append (packages_list, "BGA119C127P7X17_1400X2200X240");
00449 packages_list = g_list_append (packages_list, "BGA120C50P11X11_600X600X100");
00450 packages_list = g_list_append (packages_list, "BGA120C50P11X11_600X600X80");
00451 packages_list = g_list_append (packages_list, "BGA120C50P13X13_700X700X140");
00452 packages_list = g_list_append (packages_list, "BGA120C80P10X13_1000X1300X120");
00453 packages_list = g_list_append (packages_list, "BGA1216C100P41X41_4250X4250X380");
00454 packages_list = g_list_append (packages_list, "BGA1216C100P41X41_4250X4250X400");
00455 packages_list = g_list_append (packages_list, "BGA121C100P11X11_1200X1200X185");
00456 packages_list = g_list_append (packages_list, "BGA121C100P11X11_1200X1200X350");
00457 packages_list = g_list_append (packages_list, "BGA121C50P14X14_1000X1300X110");
00458 packages_list = g_list_append (packages_list, "BGA121C50P14X14_1000X1300X130");
00459 packages_list = g_list_append (packages_list, "BGA121C50P14X14_1050X1600X130");
00460 packages_list = g_list_append (packages_list, "BGA121C65P11X11_800X800X130");
00461 packages_list = g_list_append (packages_list, "BGA124C100P14X14_1500X1500X170");
00462 packages_list = g_list_append (packages_list, "BGA124C50P13X13_800X800X120");
00463 packages_list = g_list_append (packages_list, "BGA124C65P12X12_900X900X140");
00464 packages_list = g_list_append (packages_list, "BGA127C80P12X13_10500X1200X140");
00465 packages_list = g_list_append (packages_list, "BGA1284C100P36X36_3750X3750X380");
00466 packages_list = g_list_append (packages_list, "BGA1284C100P36X36_3750X3750X400");
00467 return (EXIT_SUCCESS);
00468 }
00469
00470
00500 int
00501 bga_drc ()
00502 {
00503 int result = EXIT_SUCCESS;
00504 if (verbose)
00505 {
00506 g_log ("", G_LOG_LEVEL_INFO,
00507 (_("[%s] DRC Check: checking package %s.")),
00508 footprint_type, footprint_name);
00509 }
00510
00511 switch (pad_shapes_type)
00512 {
00513 case NO_SHAPE:
00514 {
00515 if (verbose)
00516 {
00517 g_log ("", G_LOG_LEVEL_WARNING,
00518 (_("[%s] DRC Error: NO_SHAPE specified for check for allowed pad shapes.")),
00519 footprint_type);
00520 }
00521 result = EXIT_FAILURE;
00522 break;
00523 }
00524 case ROUND:
00525 {
00526 break;
00527 }
00528 case SQUARE:
00529 {
00530 if (verbose)
00531 {
00532 g_log ("", G_LOG_LEVEL_WARNING,
00533 (_("[%s] DRC Error: square pad shape specified for check for allowed pad shapes.")),
00534 footprint_type);
00535 }
00536 result = EXIT_FAILURE;
00537 break;
00538 }
00539 case OCTAGONAL:
00540 {
00541 if (verbose)
00542 {
00543 g_log ("", G_LOG_LEVEL_WARNING,
00544 (_("[%s] DRC Error: octagonal pad shape specified for check for allowed pad shapes.")),
00545 footprint_type);
00546 }
00547 result = EXIT_FAILURE;
00548 break;
00549 }
00550 case ROUND_ELONGATED:
00551 {
00552 if (verbose)
00553 {
00554 g_log ("", G_LOG_LEVEL_WARNING,
00555 (_("[%s] DRC Error: round elongated pad shape specified for check for allowed pad shapes.")),
00556 footprint_type);
00557 }
00558 result = EXIT_FAILURE;
00559 break;
00560 }
00561 default:
00562 {
00563 if (verbose)
00564 {
00565 g_log ("", G_LOG_LEVEL_WARNING,
00566 (_("[%s] DRC Error: no valid pad shape type specified.")),
00567 footprint_type);
00568 }
00569 result = EXIT_FAILURE;
00570 break;
00571 }
00572 }
00573
00574 if (pin1_square)
00575 {
00576 if (verbose)
00577 {
00578 g_log ("", G_LOG_LEVEL_WARNING,
00579 (_("[%s] DRC Error: package should not have a square pad #1.")),
00580 footprint_type);
00581 }
00582 result = EXIT_FAILURE;
00583 }
00584
00585 if (package_body_length <= 0.0)
00586 {
00587 if (verbose)
00588 {
00589 g_log ("", G_LOG_LEVEL_WARNING,
00590 (_("[%s] DRC Error: specified package body length is too small.")),
00591 footprint_type);
00592 }
00593 result = EXIT_FAILURE;
00594 }
00595 if (package_body_width <= 0.0)
00596 {
00597 if (verbose)
00598 {
00599 g_log ("", G_LOG_LEVEL_WARNING,
00600 (_("[%s] DRC Error: specified package body width is too small.")),
00601 footprint_type);
00602 }
00603 result = EXIT_FAILURE;
00604 }
00605 if (package_body_height <= 0.0)
00606 {
00607 if (verbose)
00608 {
00609 g_log ("", G_LOG_LEVEL_WARNING,
00610 (_("[%s] DRC Error: specified package body height is too small.")),
00611 footprint_type);
00612 }
00613 result = EXIT_FAILURE;
00614 }
00615
00616 if (courtyard_length <= 0.0)
00617 {
00618 if (verbose)
00619 {
00620 g_log ("", G_LOG_LEVEL_WARNING,
00621 (_("[%s] DRC Error: specified courtyard length is too small.")),
00622 footprint_type);
00623 }
00624 result = EXIT_FAILURE;
00625 }
00626 if (courtyard_width <= 0.0)
00627 {
00628 if (verbose)
00629 {
00630 g_log ("", G_LOG_LEVEL_WARNING,
00631 (_("[%s] DRC Error: specified courtyard width is too small.")),
00632 footprint_type);
00633 }
00634 result = EXIT_FAILURE;
00635 }
00636
00637 if (pitch_x - pad_diameter < pad_clearance)
00638 {
00639 if (verbose)
00640 {
00641 g_log ("", G_LOG_LEVEL_WARNING,
00642 (_("[%s] DRC Error: minimum clearance between copper (X-direction) is too small.")),
00643 footprint_type);
00644 }
00645 result = EXIT_FAILURE;
00646 }
00647
00648 if (pitch_y - pad_diameter < pad_clearance)
00649 {
00650 if (verbose)
00651 {
00652 g_log ("", G_LOG_LEVEL_WARNING,
00653 (_("[%s] DRC Error: minimum clearance between copper (Y-direction) is too small.")),
00654 footprint_type);
00655 }
00656 result = EXIT_FAILURE;
00657 }
00658
00659 if (fiducial)
00660 {
00661
00662 if (fiducial_pad_diameter == 0.0)
00663 {
00664 if (verbose)
00665 {
00666 g_log ("", G_LOG_LEVEL_WARNING,
00667 (_("[%s] DRC Error: zero width fiducial pad.")),
00668 footprint_type);
00669 }
00670 result = EXIT_FAILURE;
00671 }
00672
00673 if (fiducial_pad_solder_mask_clearance == 0.0)
00674 {
00675 if (verbose)
00676 {
00677 g_log ("", G_LOG_LEVEL_WARNING,
00678 (_("[%s] DRC Error: fiducial has zero width solder mask clearance.")),
00679 footprint_type);
00680 }
00681 result = EXIT_FAILURE;
00682 }
00686
00687
00688 #if 0
00689 if ()
00690 {
00691 if (verbose)
00692 {
00693 g_log ("", G_LOG_LEVEL_WARNING,
00694 (_("[%s] DRC Error: specified distance between fiducial and nearest pad is to small.")),
00695 footprint_type);
00696 }
00697 result = EXIT_FAILURE;
00698 }
00699 #endif
00700 }
00701
00702
00703 if (package_body_length - courtyard_length < courtyard_clearance_with_package)
00704 {
00705 if (verbose)
00706 {
00707 g_log ("", G_LOG_LEVEL_WARNING,
00708 (_("[%s] DRC Error: clearance of the package length with regard to the courtyard dimensions is too small.")),
00709 footprint_type);
00710 }
00711 result = EXIT_FAILURE;
00712 }
00713
00714
00715 if (package_body_width - courtyard_width < courtyard_clearance_with_package)
00716 {
00717 if (verbose)
00718 {
00719 g_log ("", G_LOG_LEVEL_WARNING,
00720 (_("[%s] DRC Error: clearance of the package width with regard to the courtyard dimensions is too small.")),
00721 footprint_type);
00722 }
00723 result = EXIT_FAILURE;
00724 }
00730
00731 if (silkscreen_package_outline && (silkscreen_line_width == 0.0))
00732 {
00733 if (verbose)
00734 {
00735 g_log ("", G_LOG_LEVEL_WARNING,
00736 (_("[%s] DRC Error: silkscreen line width is too small.")),
00737 footprint_type);
00738 }
00739 result = EXIT_FAILURE;
00740 }
00741 switch (units_type)
00742 {
00743 case NO_UNITS:
00744 {
00745 if (verbose)
00746 {
00747 g_log ("", G_LOG_LEVEL_WARNING,
00748 (_("[%s] DRC Error: no units specified.")),
00749 footprint_type);
00750 }
00751 result = EXIT_FAILURE;
00752 break;
00753 }
00754 case MIL:
00755 if (silkscreen_package_outline && (silkscreen_line_width > 40.0))
00756 {
00757 if (verbose)
00758 {
00759 g_log ("", G_LOG_LEVEL_WARNING,
00760 (_("[%s] DRC Error: silkscreen line width too wide.")),
00761 footprint_type);
00762 }
00763 result = EXIT_FAILURE;
00764 break;
00765 }
00766 case MIL_100:
00767 if (silkscreen_package_outline && (silkscreen_line_width > 4000.0))
00768 {
00769 if (verbose)
00770 {
00771 g_log ("", G_LOG_LEVEL_WARNING,
00772 (_("[%s] DRC Error: silkscreen line width too wide.")),
00773 footprint_type);
00774 }
00775 result = EXIT_FAILURE;
00776 break;
00777 }
00778 case MM:
00779 if (silkscreen_package_outline && (silkscreen_line_width > 1.0))
00780 {
00781 if (verbose)
00782 {
00783 g_log ("", G_LOG_LEVEL_WARNING,
00784 (_("[%s] DRC Error: silkscreen line width too wide.")),
00785 footprint_type);
00786 }
00787 result = EXIT_FAILURE;
00788 break;
00789 }
00790 default:
00791 {
00792 if (verbose)
00793 {
00794 g_log ("", G_LOG_LEVEL_WARNING,
00795 (_("[%s] DRC Error: no valid units type specified.")),
00796 footprint_type);
00797 }
00798 result = EXIT_FAILURE;
00799 break;
00800 }
00801 }
00802
00803 if (verbose && (result == EXIT_SUCCESS))
00804 {
00805 g_log ("", G_LOG_LEVEL_INFO,
00806 (_("[%s] DRC Check: no errors while checking package %s.")),
00807 footprint_type, footprint_name);
00808 }
00809 return (result);
00810 }
00811
00812
00911 int
00912 bga_get_default_footprint_values ()
00913 {
00914 if (!strcmp (footprint_name, "?BGA100C100P10X10_1100X1100X140"))
00915 {
00916 footprint_units = g_strdup ("mm");
00917 number_of_pins = 100;
00918 pin_pad_exceptions_string = g_strdup ("");
00919 package_body_width = 11.00;
00920 package_body_length = 11.00;
00921 package_body_height = 1.40;
00922 package_is_radial = FALSE;
00923 number_of_columns = 10;
00924 number_of_rows = 10;
00925 pitch_x = 1.00;
00926 pitch_y = 1.00;
00927 count_x = 0;
00928 count_y = 0;
00929 pad_shape = g_strdup ("circular pad");
00930 pin_drill_diameter = 0.0;
00931 pad_diameter = 0.40;
00932 pad_clearance = 0.15;
00933 pad_solder_mask_clearance = 0.15;
00934 fiducial = FALSE;
00935 fiducial_pad_diameter = 0.00;
00936 fiducial_pad_clearance = 0.00;
00937 fiducial_pad_solder_mask_clearance = 0.00;
00938 courtyard_length = 13.00;
00939 courtyard_width = 13.00;
00940 courtyard_line_width = 0.05;
00941 silkscreen_length = 11.00;
00942 silkscreen_width = 11.00;
00943 silkscreen_line_width = 0.20;
00944 g_free (footprint_name);
00945 footprint_name = g_strdup ("BGA100C100P10X10_1100X1100X140");
00946 return (EXIT_SUCCESS);
00947 }
00948 else if (!strcmp (footprint_name, "?BGA100C100P10X10_1100X1100X170"))
00949 {
00950 footprint_units = g_strdup ("mm");
00951 number_of_pins = 100;
00952 pin_pad_exceptions_string = g_strdup ("");
00953 package_body_width = 11.00;
00954 package_body_length = 11.00;
00955 package_body_height = 1.70;
00956 package_is_radial = FALSE;
00957 number_of_columns = 10;
00958 number_of_rows = 10;
00959 pitch_x = 1.00;
00960 pitch_y = 1.00;
00961 count_x = 0;
00962 count_y = 0;
00963 pad_shape = g_strdup ("circular pad");
00964 pin_drill_diameter = 0.0;
00965 pad_diameter = 0.40;
00966 pad_clearance = 0.15;
00967 pad_solder_mask_clearance = 0.15;
00968 fiducial = FALSE;
00969 fiducial_pad_diameter = 0.00;
00970 fiducial_pad_clearance = 0.00;
00971 fiducial_pad_solder_mask_clearance = 0.00;
00972 courtyard_length = 13.00;
00973 courtyard_width = 13.00;
00974 courtyard_line_width = 0.05;
00975 silkscreen_length = 11.00;
00976 silkscreen_width = 11.00;
00977 silkscreen_line_width = 0.20;
00978 g_free (footprint_name);
00979 footprint_name = g_strdup ("BGA100C100P10X10_1100X1100X170");
00980 if (verbose)
00981 {
00982 g_log ("", G_LOG_LEVEL_INFO,
00983 (_("%s is also known as")),
00984 footprint_name,
00985 " JEDEC MO-192AAC-1.");
00986 }
00987 return (EXIT_SUCCESS);
00988 }
00989 else if (!strcmp (footprint_name, "?BGA100C100P10X10_1100X1100X170A"))
00990 {
00991 footprint_units = g_strdup ("mm");
00992 number_of_pins = 100;
00993 pin_pad_exceptions_string = g_strdup ("");
00994 package_body_width = 11.00;
00995 package_body_length = 11.00;
00996 package_body_height = 1.70;
00997 package_is_radial = FALSE;
00998 number_of_columns = 10;
00999 number_of_rows = 10;
01000 pitch_x = 1.00;
01001 pitch_y = 1.00;
01002 count_x = 0;
01003 count_y = 0;
01004 pad_shape = g_strdup ("circular pad");
01005 pin_drill_diameter = 0.0;
01006 pad_diameter = 0.45;
01007 pad_clearance = 0.075;
01008 pad_solder_mask_clearance = 0.075;
01009 fiducial = FALSE;
01010 fiducial_pad_diameter = 0.00;
01011 fiducial_pad_clearance = 0.00;
01012 fiducial_pad_solder_mask_clearance = 0.00;
01013 courtyard_length = 13.00;
01014 courtyard_width = 13.00;
01015 courtyard_line_width = 0.05;
01016 silkscreen_length = 11.00;
01017 silkscreen_width = 11.00;
01018 silkscreen_line_width = 0.20;
01019 g_free (footprint_name);
01020 footprint_name = g_strdup ("BGA100C100P10X10_1100X1100X170A");
01021 return (EXIT_SUCCESS);
01022 }
01023 else if (!strcmp (footprint_name, "?BGA100C100P10X10_1100X1100X200"))
01024 {
01025 footprint_units = g_strdup ("mm");
01026 number_of_pins = 100;
01027 pin_pad_exceptions_string = g_strdup ("");
01028 package_body_width = 11.00;
01029 package_body_length = 11.00;
01030 package_body_height = 2.00;
01031 package_is_radial = FALSE;
01032 number_of_columns = 10;
01033 number_of_rows = 10;
01034 pitch_x = 1.00;
01035 pitch_y = 1.00;
01036 count_x = 0;
01037 count_y = 0;
01038 pad_shape = g_strdup ("circular pad");
01039 pin_drill_diameter = 0.0;
01040 pad_diameter = 0.40;
01041 pad_clearance = 0.075;
01042 pad_solder_mask_clearance = 0.075;
01043 fiducial = FALSE;
01044 fiducial_pad_diameter = 0.00;
01045 fiducial_pad_clearance = 0.00;
01046 fiducial_pad_solder_mask_clearance = 0.00;
01047 courtyard_length = 13.00;
01048 courtyard_width = 13.00;
01049 courtyard_line_width = 0.05;
01050 silkscreen_length = 11.00;
01051 silkscreen_width = 11.00;
01052 silkscreen_line_width = 0.20;
01053 g_free (footprint_name);
01054 footprint_name = g_strdup ("BGA100C100P10X10_1100X1100X200");
01055 return (EXIT_SUCCESS);
01056 }
01057 else if (!strcmp (footprint_name, "?BGA100C100P10X10_1100X1100X350"))
01058 {
01059 footprint_units = g_strdup ("mm");
01060 number_of_pins = 100;
01061 pin_pad_exceptions_string = g_strdup ("");
01062 package_body_width = 11.00;
01063 package_body_length = 11.00;
01064 package_body_height = 1.70;
01065 package_is_radial = FALSE;
01066 number_of_columns = 10;
01067 number_of_rows = 10;
01068 pitch_x = 1.00;
01069 pitch_y = 1.00;
01070 count_x = 0;
01071 count_y = 0;
01072 pad_shape = g_strdup ("circular pad");
01073 pin_drill_diameter = 0.0;
01074 pad_diameter = 0.45;
01075 pad_clearance = 0.15;
01076 pad_solder_mask_clearance = 0.15;
01077 fiducial = FALSE;
01078 fiducial_pad_diameter = 0.00;
01079 fiducial_pad_clearance = 0.00;
01080 fiducial_pad_solder_mask_clearance = 0.00;
01081 courtyard_length = 13.00;
01082 courtyard_width = 13.00;
01083 courtyard_line_width = 0.05;
01084 silkscreen_length = 11.00;
01085 silkscreen_width = 11.00;
01086 silkscreen_line_width = 0.20;
01087 g_free (footprint_name);
01088 footprint_name = g_strdup ("BGA100C100P10X10_1100X1100X350");
01089 return (EXIT_SUCCESS);
01090 }
01091 else if (!strcmp (footprint_name, "?BGA100C50P10X10_600X600X110"))
01092 {
01093 footprint_units = g_strdup ("mm");
01094 number_of_pins = 100;
01095 pin_pad_exceptions_string = g_strdup ("");
01096 package_body_width = 6.00;
01097 package_body_length = 6.00;
01098 package_body_height = 1.10;
01099 package_is_radial = FALSE;
01100 number_of_columns = 10;
01101 number_of_rows = 10;
01102 pitch_x = 0.50;
01103 pitch_y = 0.50;
01104 count_x = 0;
01105 count_y = 0;
01106 pad_shape = g_strdup ("circular pad");
01107 pin_drill_diameter = 0.0;
01108 pad_diameter = 0.25;
01109 pad_clearance = 0.075;
01110 pad_solder_mask_clearance = 0.075;
01111 fiducial = TRUE;
01112 fiducial_pad_diameter = 1.00;
01113 fiducial_pad_solder_mask_clearance = 1.00;
01114 courtyard_length = 8.00;
01115 courtyard_width = 8.00;
01116 courtyard_line_width = 0.05;
01117 silkscreen_length = 6.00;
01118 silkscreen_width = 6.00;
01119 silkscreen_line_width = 0.20;
01120 g_free (footprint_name);
01121 footprint_name = g_strdup ("BGA100C50P10X10_600X600X110");
01122 if (verbose)
01123 {
01124 g_log ("", G_LOG_LEVEL_INFO,
01125 (_("%s is also known as")),
01126 footprint_name,
01127 " JEDEC MO-195.");
01128 }
01129 return (EXIT_SUCCESS);
01130 }
01131 else if (!strcmp (footprint_name, "?BGA100C50P11X11_600X600X100"))
01132 {
01133 footprint_units = g_strdup ("mm");
01134 number_of_pins = 100;
01135 pin_pad_exceptions_string = g_strconcat
01136 (
01137 "A1,A6,A11,",
01138 "D5,D6,D7,",
01139 "E4,E8,",
01140 "F1,F4,F6,F8,F11,",
01141 "G4,G8,",
01142 "H5,H6,H7,",
01143 "L1,L6,L11",
01144 NULL
01145 );
01146 package_body_width = 6.00;
01147 package_body_length = 6.00;
01148 package_body_height = 1.00;
01149 package_is_radial = FALSE;
01150 number_of_columns = 11;
01151 number_of_rows = 11;
01152 pitch_x = 0.50;
01153 pitch_y = 0.50;
01154 count_x = 0;
01155 count_y = 0;
01156 pad_shape = g_strdup ("circular pad");
01157 pin_drill_diameter = 0.0;
01158 pad_diameter = 0.25;
01159 pad_clearance = 0.075;
01160 pad_solder_mask_clearance = 0.075;
01161 fiducial = TRUE;
01162 fiducial_pad_diameter = 1.00;
01163 fiducial_pad_clearance = 1.00;
01164 fiducial_pad_solder_mask_clearance = 1.00;
01165 courtyard_length = 7.00;
01166 courtyard_width = 7.00;
01167 courtyard_line_width = 0.05;
01168 silkscreen_length = 6.00;
01169 silkscreen_width = 6.00;
01170 silkscreen_line_width = 0.20;
01171 g_free (footprint_name);
01172 footprint_name = g_strdup ("BGA100C50P11X11_600X600X100");
01173 return (EXIT_SUCCESS);
01174 }
01175 else if (!strcmp (footprint_name, "?BGA100C50P14X14_800X800X120"))
01176 {
01177 footprint_units = g_strdup ("mm");
01178 number_of_pins = 100;
01179 pin_pad_exceptions_string = g_strconcat
01180 (
01181 "C3,C4,C5,C6,C7,C9,C10,C11,C12,",
01182 "D3,D4,D5,D6,D7,D8,D9,D10,D11,D12,",
01183 "E3,E4,E5,E6,E7,E8,E9,E10,E11,E12,",
01184 "F3,F4,F5,F6,F7,F8,F9,F10,F11,F12,",
01185 "G4,G5,G6,G7,G8,G9,G10,G11,G12,",
01186 "H3,H4,H5,H6,H7,H8,H9,H10,H11,",
01187 "J3,J4,J5,J6,J7,J8,J9,J10,J11,J12,",
01188 "K3,K4,K5,K6,K7,K8,K9,K10,K11,K12,",
01189 "L3,L4,L5,L6,L7,L8,L9,L10,L11,L12,",
01190 "M3,M4,M5,M6,M8,M9,M10,M11,M12,",
01191 NULL
01192 );
01193 package_body_width = 8.00;
01194 package_body_length = 8.00;
01195 package_body_height = 1.20;
01196 package_is_radial = FALSE;
01197 number_of_columns = 14;
01198 number_of_rows = 14;
01199 pitch_x = 0.50;
01200 pitch_y = 0.50;
01201 count_x = 0;
01202 count_y = 0;
01203 pad_shape = g_strdup ("circular pad");
01204 pin_drill_diameter = 0.0;
01205 pad_diameter = 0.25;
01206 pad_clearance = 0.075;
01207 pad_solder_mask_clearance = 0.075;
01208 fiducial = TRUE;
01209 fiducial_pad_diameter = 1.00;
01210 fiducial_pad_clearance = 1.00;
01211 fiducial_pad_solder_mask_clearance = 1.00;
01212 courtyard_length = 10.00;
01213 courtyard_width = 10.00;
01214 courtyard_line_width = 0.05;
01215 silkscreen_length = 8.00;
01216 silkscreen_width = 8.00;
01217 silkscreen_line_width = 0.20;
01218 g_free (footprint_name);
01219 footprint_name = g_strdup ("BGA100C50P14X14_800X800X120");
01220 return (EXIT_SUCCESS);
01221 }
01222 else if (!strcmp (footprint_name, "?BGA100C50P14X14_800X800X135"))
01223 {
01224 footprint_units = g_strdup ("mm");
01225 number_of_pins = 100;
01226 pin_pad_exceptions_string = g_strconcat
01227 (
01228 "C4,C5,C6,C7,C8,C9,C10,C11,",
01229 "D3,D4,D5,D6,D7,D8,D9,D10,D11,D12,",
01230 "E3,E4,E5,E6,E7,E8,E9,E10,E11,E12,",
01231 "F3,F4,F5,F6,F7,F8,F9,F10,F11,F12,",
01232 "G3,G4,G5,G6,G7,G8,G9,G10,G11,G12,",
01233 "H3,H4,H5,H6,H7,H8,H9,H10,H11,H12,",
01234 "J3,J4,J5,J6,J7,J8,J9,J10,J11,J12,",
01235 "K3,K4,K5,K6,K7,K8,K9,K10,K11,K12,",
01236 "L3,L4,L5,L6,L7,L8,L9,L10,L11,L12,",
01237 "M4,M5,M6,M7,M8,M9,M10,M11,",
01238 NULL
01239 );
01240 package_body_width = 8.00;
01241 package_body_length = 8.00;
01242 package_body_height = 1.35;
01243 package_is_radial = FALSE;
01244 number_of_columns = 14;
01245 number_of_rows = 14;
01246 pitch_x = 0.50;
01247 pitch_y = 0.50;
01248 count_x = 0;
01249 count_y = 0;
01250 pad_shape = g_strdup ("circular pad");
01251 pin_drill_diameter = 0.0;
01252 pad_diameter = 0.25;
01253 pad_clearance = 0.075;
01254 pad_solder_mask_clearance = 0.075;
01255 fiducial = TRUE;
01256 fiducial_pad_diameter = 1.00;
01257 fiducial_pad_clearance = 1.00;
01258 fiducial_pad_solder_mask_clearance = 1.00;
01259 courtyard_length = 10.00;
01260 courtyard_width = 10.00;
01261 courtyard_line_width = 0.05;
01262 silkscreen_length = 8.00;
01263 silkscreen_width = 8.00;
01264 silkscreen_line_width = 0.20;
01265 g_free (footprint_name);
01266 footprint_name = g_strdup ("BGA100C50P14X14_800X800X135");
01267 return (EXIT_SUCCESS);
01268 }
01269 else if (!strcmp (footprint_name, "?BGA100C50P15X15_1000X1000X120"))
01270 {
01271 footprint_units = g_strdup ("mm");
01272 number_of_pins = 100;
01273 pin_pad_exceptions_string = g_strconcat
01274 (
01275 "B2,B14,",
01276 "C3,C4,C5,C6,C7,C8,C9,C10,C11,C12,C13,",
01277 "D3,D4,D5,D6,D7,D8,D9,D10,D11,D12,D13,",
01278 "E3,E4,E5,E6,E7,E8,E9,E10,E11,E12,E13,",
01279 "F3,F4,F5,F6,F7,F8,F9,F10,F11,F12,F13,",
01280 "G3,G4,G5,G6,G7,G8,G9,G10,G11,G12,G13,",
01281 "H3,H4,H5,H6,H7,H8,H9,H10,H11,H12,H13,",
01282 "J3,J4,J5,J6,J7,J8,J9,J10,J11,J12,J13,",
01283 "K3,K4,K5,K6,K7,K8,K9,K10,K11,K12,K13,",
01284 "L3,L4,L5,L6,L7,L8,L9,L10,L11,L12,L13,",
01285 "M3,M4,M5,M6,M7,M8,M9,M10,M11,M12,M13,",
01286 "N3,N4,N5,N6,N7,N8,N9,N10,N11,N12,N13,",
01287 "P2,P14,",
01288 NULL
01289 );
01290 package_body_width = 10.00;
01291 package_body_length = 10.00;
01292 package_body_height = 1.20;
01293 package_is_radial = FALSE;
01294 number_of_columns = 15;
01295 number_of_rows = 15;
01296 pitch_x = 0.50;
01297 pitch_y = 0.50;
01298 count_x = 0;
01299 count_y = 0;
01300 pad_shape = g_strdup ("circular pad");
01301 pin_drill_diameter = 0.0;
01302 pad_diameter = 0.25;
01303 pad_clearance = 0.075;
01304 pad_solder_mask_clearance = 0.075;
01305 fiducial = TRUE;
01306 fiducial_pad_diameter = 1.00;
01307 fiducial_pad_clearance = 1.00;
01308 fiducial_pad_solder_mask_clearance = 1.00;
01309 courtyard_length = 12.00;
01310 courtyard_width = 12.00;
01311 courtyard_line_width = 0.05;
01312 silkscreen_length = 10.00;
01313 silkscreen_width = 10.00;
01314 silkscreen_line_width = 0.20;
01315 g_free (footprint_name);
01316 footprint_name = g_strdup ("BGA100C50P15X15_1000X1000X120");
01317 return (EXIT_SUCCESS);
01318 }
01319 else if (!strcmp (footprint_name, "?BGA100C65P10X10_800X800X140"))
01320 {
01321 footprint_units = g_strdup ("mm");
01322 number_of_pins = 100;
01323 pin_pad_exceptions_string = g_strdup ("");
01324 package_body_width = 8.00;
01325 package_body_length = 8.00;
01326 package_body_height = 1.40;
01327 package_is_radial = FALSE;
01328 number_of_columns = 10;
01329 number_of_rows = 10;
01330 pitch_x = 0.65;
01331 pitch_y = 0.65;
01332 count_x = 0;
01333 count_y = 0;
01334 pad_shape = g_strdup ("circular pad");
01335 pin_drill_diameter = 0.0;
01336 pad_diameter = 0.30;
01337 pad_clearance = 0.075;
01338 pad_solder_mask_clearance = 0.075;
01339 fiducial = TRUE;
01340 fiducial_pad_diameter = 1.00;
01341 fiducial_pad_clearance = 1.00;
01342 fiducial_pad_solder_mask_clearance = 1.00;
01343 courtyard_length = 10.00;
01344 courtyard_width = 10.00;
01345 courtyard_line_width = 0.05;
01346 silkscreen_length = 8.00;
01347 silkscreen_width = 8.00;
01348 silkscreen_line_width = 0.20;
01349 g_free (footprint_name);
01350 footprint_name = g_strdup ("BGA100C65P10X10_800X800X140");
01351 return (EXIT_SUCCESS);
01352 }
01353 else if (!strcmp (footprint_name, "?BGA100C80P10X10_1000X1000X140"))
01354 {
01355 footprint_units = g_strdup ("mm");
01356 number_of_pins = 100;
01357 pin_pad_exceptions_string = g_strdup ("");
01358 package_body_width = 10.00;
01359 package_body_length = 10.00;
01360 package_body_height = 1.40;
01361 package_is_radial = FALSE;
01362 number_of_columns = 10;
01363 number_of_rows = 10;
01364 pitch_x = 0.80;
01365 pitch_y = 0.80;
01366 count_x = 0;
01367 count_y = 0;
01368 pad_shape = g_strdup ("circular pad");
01369 pin_drill_diameter = 0.0;
01370 pad_diameter = 0.45;
01371 pad_clearance = 0.075;
01372 pad_solder_mask_clearance = 0.075;
01373 fiducial = TRUE;
01374 fiducial_pad_diameter = 1.00;
01375 fiducial_pad_clearance = 1.00;
01376 fiducial_pad_solder_mask_clearance = 1.00;
01377 courtyard_length = 12.00;
01378 courtyard_width = 12.00;
01379 courtyard_line_width = 0.05;
01380 silkscreen_length = 10.00;
01381 silkscreen_width = 10.00;
01382 silkscreen_line_width = 0.20;
01383 g_free (footprint_name);
01384 footprint_name = g_strdup ("BGA100C80P10X10_1000X1000X140");
01385 return (EXIT_SUCCESS);
01386 }
01387 else if (!strcmp (footprint_name, "?BGA100C80P10X10_1000X1000X150"))
01388 {
01389 footprint_units = g_strdup ("mm");
01390 number_of_pins = 100;
01391 pin_pad_exceptions_string = g_strdup ("");
01392 package_body_width = 10.00;
01393 package_body_length = 10.00;
01394 package_body_height = 1.50;
01395 package_is_radial = FALSE;
01396 number_of_columns = 10;
01397 number_of_rows = 10;
01398 pitch_x = 0.80;
01399 pitch_y = 0.80;
01400 count_x = 0;
01401 count_y = 0;
01402 pad_shape = g_strdup ("circular pad");
01403 pin_drill_diameter = 0.0;
01404 pad_diameter = 0.40;
01405 pad_clearance = 0.075;
01406 pad_solder_mask_clearance = 0.075;
01407 fiducial = TRUE;
01408 fiducial_pad_diameter = 1.00;
01409 fiducial_pad_clearance = 1.00;
01410 fiducial_pad_solder_mask_clearance = 1.00;
01411 courtyard_length = 12.00;
01412 courtyard_width = 12.00;
01413 courtyard_line_width = 0.05;
01414 silkscreen_length = 10.00;
01415 silkscreen_width = 10.00;
01416 silkscreen_line_width = 0.20;
01417 g_free (footprint_name);
01418 footprint_name = g_strdup ("BGA100C80P10X10_1000X1000X150");
01419 return (EXIT_SUCCESS);
01420 }
01421 else if (!strcmp (footprint_name, "?BGA100C80P10X10_900X900X100"))
01422 {
01423 footprint_units = g_strdup ("mm");
01424 number_of_pins = 100;
01425 pin_pad_exceptions_string = g_strdup ("");
01426 package_body_width = 9.00;
01427 package_body_length = 9.00;
01428 package_body_height = 1.00;
01429 package_is_radial = FALSE;
01430 number_of_columns = 10;
01431 number_of_rows = 10;
01432 pitch_x = 0.80;
01433 pitch_y = 0.80;
01434 count_x = 0;
01435 count_y = 0;
01436 pad_shape = g_strdup ("circular pad");
01437 pin_drill_diameter = 0.0;
01438 pad_diameter = 0.35;
01439 pad_clearance = 0.075;
01440 pad_solder_mask_clearance = 0.075;
01441 fiducial = TRUE;
01442 fiducial_pad_diameter = 1.00;
01443 fiducial_pad_clearance = 1.00;
01444 fiducial_pad_solder_mask_clearance = 1.00;
01445 courtyard_length = 11.00;
01446 courtyard_width = 11.00;
01447 courtyard_line_width = 0.05;
01448 silkscreen_length = 9.00;
01449 silkscreen_width = 9.00;
01450 silkscreen_line_width = 0.20;
01451 g_free (footprint_name);
01452 footprint_name = g_strdup ("BGA100C80P10X10_900X900X100");
01453 return (EXIT_SUCCESS);
01454 }
01455 else if (!strcmp (footprint_name, "?BGA100C80P10X10_900X900X120"))
01456 {
01457 footprint_units = g_strdup ("mm");
01458 number_of_pins = 100;
01459 pin_pad_exceptions_string = g_strdup ("");
01460 package_body_width = 9.00;
01461 package_body_length = 9.00;
01462 package_body_height = 1.20;
01463 package_is_radial = FALSE;
01464 number_of_columns = 10;
01465 number_of_rows = 10;
01466 pitch_x = 0.80;
01467 pitch_y = 0.80;
01468 count_x = 0;
01469 count_y = 0;
01470 pad_shape = g_strdup ("circular pad");
01471 pin_drill_diameter = 0.0;
01472 pad_diameter = 0.35;
01473 pad_clearance = 0.075;
01474 pad_solder_mask_clearance = 0.075;
01475 fiducial = TRUE;
01476 fiducial_pad_diameter = 1.00;
01477 fiducial_pad_clearance = 1.00;
01478 fiducial_pad_solder_mask_clearance = 1.00;
01479 courtyard_length = 11.00;
01480 courtyard_width = 11.00;
01481 courtyard_line_width = 0.05;
01482 silkscreen_length = 9.00;
01483 silkscreen_width = 9.00;
01484 silkscreen_line_width = 0.20;
01485 g_free (footprint_name);
01486 footprint_name = g_strdup ("BGA100C80P10X10_900X900X120");
01487 return (EXIT_SUCCESS);
01488 }
01489 else if (!strcmp (footprint_name, "?BGA100C80P10X10_900X900X120A"))
01490 {
01491 footprint_units = g_strdup ("mm");
01492 number_of_pins = 100;
01493 pin_pad_exceptions_string = g_strdup ("");
01494 package_body_width = 9.00;
01495 package_body_length = 9.00;
01496 package_body_height = 1.20;
01497 package_is_radial = FALSE;
01498 number_of_columns = 10;
01499 number_of_rows = 10;
01500 pitch_x = 0.80;
01501 pitch_y = 0.80;
01502 count_x = 0;
01503 count_y = 0;
01504 pad_shape = g_strdup ("circular pad");
01505 pin_drill_diameter = 0.0;
01506 pad_diameter = 0.45;
01507 pad_clearance = 0.075;
01508 pad_solder_mask_clearance = 0.075;
01509 fiducial = TRUE;
01510 fiducial_pad_diameter = 1.00;
01511 fiducial_pad_clearance = 1.00;
01512 fiducial_pad_solder_mask_clearance = 1.00;
01513 courtyard_length = 11.00;
01514 courtyard_width = 11.00;
01515 courtyard_line_width = 0.05;
01516 silkscreen_length = 9.00;
01517 silkscreen_width = 9.00;
01518 silkscreen_line_width = 0.20;
01519 g_free (footprint_name);
01520 footprint_name = g_strdup ("BGA100C80P10X10_900X900X120A");
01521 if (verbose)
01522 {
01523 g_log ("", G_LOG_LEVEL_INFO,
01524 (_("%s is also known as")),
01525 footprint_name,
01526 " JEDEC MO-216.");
01527 }
01528 return (EXIT_SUCCESS);
01529 }
01530 else if (!strcmp (footprint_name, "?BGA100C80P10X10_900X900X140"))
01531 {
01532 footprint_units = g_strdup ("mm");
01533 number_of_pins = 100;
01534 pin_pad_exceptions_string = g_strdup ("");
01535 package_body_width = 9.00;
01536 package_body_length = 9.00;
01537 package_body_height = 1.40;
01538 package_is_radial = FALSE;
01539 number_of_columns = 10;
01540 number_of_rows = 10;
01541 pitch_x = 0.80;
01542 pitch_y = 0.80;
01543 count_x = 0;
01544 count_y = 0;
01545 pad_shape = g_strdup ("circular pad");
01546 pin_drill_diameter = 0.0;
01547 pad_diameter = 0.45;
01548 pad_clearance = 0.075;
01549 pad_solder_mask_clearance = 0.075;
01550 fiducial = TRUE;
01551 fiducial_pad_diameter = 1.00;
01552 fiducial_pad_clearance = 1.00;
01553 fiducial_pad_solder_mask_clearance = 1.00;
01554 courtyard_length = 11.00;
01555 courtyard_width = 11.00;
01556 courtyard_line_width = 0.05;
01557 silkscreen_length = 9.00;
01558 silkscreen_width = 9.00;
01559 silkscreen_line_width = 0.20;
01560 g_free (footprint_name);
01561 footprint_name = g_strdup ("BGA100C80P10X10_900X900X140");
01562 if (verbose)
01563 {
01564 g_log ("", G_LOG_LEVEL_INFO,
01565 (_("%s is also known as")),
01566 footprint_name,
01567 " JEDEC MO-205AB.");
01568 }
01569 return (EXIT_SUCCESS);
01570 }
01571 else if (!strcmp (footprint_name, "?BGA100C80P10X10_900X900X150"))
01572 {
01573 footprint_units = g_strdup ("mm");
01574 number_of_pins = 100;
01575 pin_pad_exceptions_string = g_strdup ("");
01576 package_body_width = 9.00;
01577 package_body_length = 9.00;
01578 package_body_height = 1.50;
01579 package_is_radial = FALSE;
01580 number_of_columns = 10;
01581 number_of_rows = 10;
01582 pitch_x = 0.80;
01583 pitch_y = 0.80;
01584 count_x = 0;
01585 count_y = 0;
01586 pad_shape = g_strdup ("circular pad");
01587 pin_drill_diameter = 0.0;
01588 pad_diameter = 0.45;
01589 pad_clearance = 0.15;
01590 pad_solder_mask_clearance = 0.15;
01591 fiducial = TRUE;
01592 fiducial_pad_diameter = 1.00;
01593 fiducial_pad_clearance = 1.00;
01594 fiducial_pad_solder_mask_clearance = 1.00;
01595 courtyard_length = 11.00;
01596 courtyard_width = 11.00;
01597 courtyard_line_width = 0.05;
01598 silkscreen_length = 9.00;
01599 silkscreen_width = 9.00;
01600 silkscreen_line_width = 0.20;
01601 g_free (footprint_name);
01602 footprint_name = g_strdup ("BGA100C80P10X10_900X900X150");
01603 return (EXIT_SUCCESS);
01604 }
01605 else if (!strcmp (footprint_name, "?BGA100C80P10X10_900X900X160"))
01606 {
01607 footprint_units = g_strdup ("mm");
01608 number_of_pins = 100;
01609 pin_pad_exceptions_string = g_strdup ("");
01610 package_body_width = 9.00;
01611 package_body_length = 9.00;
01612 package_body_height = 1.60;
01613 package_is_radial = FALSE;
01614 number_of_columns = 10;
01615 number_of_rows = 10;
01616 pitch_x = 0.80;
01617 pitch_y = 0.80;
01618 count_x = 0;
01619 count_y = 0;
01620 pad_shape = g_strdup ("circular pad");
01621 pin_drill_diameter = 0.0;
01622 pad_diameter = 0.45;
01623 pad_clearance = 0.075;
01624 pad_solder_mask_clearance = 0.075;
01625 fiducial = TRUE;
01626 fiducial_pad_diameter = 1.00;
01627 fiducial_pad_clearance = 1.00;
01628 fiducial_pad_solder_mask_clearance = 1.00;
01629 courtyard_length = 11.00;
01630 courtyard_width = 11.00;
01631 courtyard_line_width = 0.05;
01632 silkscreen_length = 9.00;
01633 silkscreen_width = 9.00;
01634 silkscreen_line_width = 0.20;
01635 g_free (footprint_name);
01636 footprint_name = g_strdup ("BGA100C80P10X10_900X900X160");
01637 if (verbose)
01638 {
01639 g_log ("", G_LOG_LEVEL_INFO,
01640 (_("%s is also known as")),
01641 footprint_name,
01642 " JEDEC MS-205.");
01643 }
01644 return (EXIT_SUCCESS);
01645 }
01646 else if (!strcmp (footprint_name, "?BGA100C80P11X11_1100X1100X140"))
01647 {
01648 footprint_units = g_strdup ("mm");
01649 number_of_pins = 100;
01650 pin_pad_exceptions_string = g_strconcat
01651 (
01652 "D5,D6,D7,",
01653 "E4,E5,E6,E7,E8,",
01654 "F4,F5,F6,F7,F8,",
01655 "G4,G5,G6,G7,G8,",
01656 "H5,H6,H7,",
01657 NULL
01658 );
01659 package_body_width = 11.00;
01660 package_body_length = 11.00;
01661 package_body_height = 1.40;
01662 package_is_radial = FALSE;
01663 number_of_columns = 11;
01664 number_of_rows = 11;
01665 pitch_x = 0.80;
01666 pitch_y = 0.80;
01667 count_x = 0;
01668 count_y = 0;
01669 pad_shape = g_strdup ("circular pad");
01670 pin_drill_diameter = 0.0;
01671 pad_diameter = 0.45;
01672 pad_clearance = 0.15;
01673 pad_solder_mask_clearance = 0.15;
01674 fiducial = TRUE;
01675 fiducial_pad_diameter = 1.00;
01676 fiducial_pad_clearance = 1.00;
01677 fiducial_pad_solder_mask_clearance = 1.00;
01678 courtyard_length = 13.00;
01679 courtyard_width = 13.00;
01680 courtyard_line_width = 0.05;
01681 silkscreen_length = 11.00;
01682 silkscreen_width = 11.00;
01683 silkscreen_line_width = 0.20;
01684 g_free (footprint_name);
01685 footprint_name = g_strdup ("BGA100C80P11X11_1100X1100X140");
01686 return (EXIT_SUCCESS);
01687 }
01688 else if (!strcmp (footprint_name, "?BGA100C80P12X12_1000X1000X140"))
01689 {
01690 footprint_units = g_strdup ("mm");
01691 number_of_pins = 100;
01692 pin_pad_exceptions_string = g_strconcat
01693 (
01694 "C3,C4,C5,C6,C7,C8,C9,C10,",
01695 "D3,D10,",
01696 "E3,E5,E6,E7,E8,E10,",
01697 "F3,F5,F6,F7,F8,F10,",
01698 "G3,G5,E6,G7,G8,G10,",
01699 "H3,H5,H6,H7,H8,H10,",
01700 "J3,J10,",
01701 "K3,K4,K5,K6,K7,K8,K9,K10,",
01702 NULL
01703 );
01704 package_body_width = 10.00;
01705 package_body_length = 10.00;
01706 package_body_height = 1.40;
01707 package_is_radial = FALSE;
01708 number_of_columns = 12;
01709 number_of_rows = 12;
01710 pitch_x = 0.80;
01711 pitch_y = 0.80;
01712 count_x = 0;
01713 count_y = 0;
01714 pad_shape = g_strdup ("circular pad");
01715 pin_drill_diameter = 0.0;
01716 pad_diameter = 0.40;
01717 pad_clearance = 0.075;
01718 pad_solder_mask_clearance = 0.075;
01719 fiducial = TRUE;
01720 fiducial_pad_diameter = 1.00;
01721 fiducial_pad_clearance = 1.00;
01722 fiducial_pad_solder_mask_clearance = 1.00;
01723 courtyard_length = 12.00;
01724 courtyard_width = 12.00;
01725 courtyard_line_width = 0.05;
01726 silkscreen_length = 10.00;
01727 silkscreen_width = 10.00;
01728 silkscreen_line_width = 0.20;
01729 g_free (footprint_name);
01730 footprint_name = g_strdup ("BGA100C80P12X12_1000X1000X140");
01731 if (verbose)
01732 {
01733 g_log ("", G_LOG_LEVEL_INFO,
01734 (_("%s is also known as")),
01735 footprint_name,
01736 " JEDEC MO-205AC.");
01737 }
01738 return (EXIT_SUCCESS);
01739 }
01740 else if (!strcmp (footprint_name, "?BGA1020C100P32X32_3300X3300X350"))
01741 {
01742 footprint_units = g_strdup ("mm");
01743 number_of_pins = 1020;
01744 pin_pad_exceptions_string = g_strconcat
01745 (
01746 "A1,A32,",
01747 "AM1,AM32,",
01748 NULL
01749 );
01750 package_body_width = 33.00;
01751 package_body_length = 33.00;
01752 package_body_height = 3.50;
01753 package_is_radial = FALSE;
01754 number_of_columns = 32;
01755 number_of_rows = 32;
01756 pitch_x = 1.00;
01757 pitch_y = 1.00;
01758 count_x = 0;
01759 count_y = 0;
01760 pad_shape = g_strdup ("circular pad");
01761 pin_drill_diameter = 0.0;
01762 pad_diameter = 0.50;
01763 pad_clearance = 0.075;
01764 pad_solder_mask_clearance = 0.075;
01765 fiducial = FALSE;
01766 fiducial_pad_diameter = 0.00;
01767 fiducial_pad_clearance = 0.00;
01768 fiducial_pad_solder_mask_clearance = 0.00;
01769 courtyard_length = 37.00;
01770 courtyard_width = 37.00;
01771 courtyard_line_width = 0.05;
01772 silkscreen_length = 33.00;
01773 silkscreen_width = 33.00;
01774 silkscreen_line_width = 0.20;
01775 g_free (footprint_name);
01776 footprint_name = g_strdup ("BGA1020C100P32X32_3300X3300X350");
01777 if (verbose)
01778 {
01779 g_log ("", G_LOG_LEVEL_INFO,
01780 (_("%s is also known as")),
01781 footprint_name,
01782 " JEDEC MS-034AAP-1.");
01783 }
01784 return (EXIT_SUCCESS);
01785 }
01786 else if (!strcmp (footprint_name, "?BGA1023C100P32X32_3300X3300X272"))
01787 {
01788 footprint_units = g_strdup ("mm");
01789 number_of_pins = 1023;
01790 pin_pad_exceptions_string = g_strconcat
01791 (
01792 "A1",
01793 NULL
01794 );
01795 package_body_width = 33.00;
01796 package_body_length = 33.00;
01797 package_body_height = 2.72;
01798 package_is_radial = FALSE;
01799 number_of_columns = 32;
01800 number_of_rows = 32;
01801 pitch_x = 1.00;
01802 pitch_y = 1.00;
01803 count_x = 0;
01804 count_y = 0;
01805 pad_shape = g_strdup ("circular pad");
01806 pin_drill_diameter = 0.0;
01807 pad_diameter = 0.50;
01808 pad_clearance = 0.075;
01809 pad_solder_mask_clearance = 0.075;
01810 fiducial = FALSE;
01811 fiducial_pad_diameter = 0.00;
01812 fiducial_pad_clearance = 0.00;
01813 fiducial_pad_solder_mask_clearance = 0.00;
01814 courtyard_length = 37.00;
01815 courtyard_width = 37.00;
01816 courtyard_line_width = 0.05;
01817 silkscreen_length = 33.00;
01818 silkscreen_width = 33.00;
01819 silkscreen_line_width = 0.20;
01820 g_free (footprint_name);
01821 footprint_name = g_strdup ("BGA1023C100P32X32_3300X3300X272");
01822 return (EXIT_SUCCESS);
01823 }
01824 else if (!strcmp (footprint_name, "?BGA1023C100P32X32_3300X3300X287"))
01825 {
01826 footprint_units = g_strdup ("mm");
01827 number_of_pins = 1023;
01828 pin_pad_exceptions_string = g_strconcat
01829 (
01830 "A1",
01831 NULL
01832 );
01833 package_body_width = 33.00;
01834 package_body_length = 33.00;
01835 package_body_height = 2.87;
01836 package_is_radial = FALSE;
01837 number_of_columns = 32;
01838 number_of_rows = 32;
01839 pitch_x = 1.00;
01840 pitch_y = 1.00;
01841 count_x = 0;
01842 count_y = 0;
01843 pad_shape = g_strdup ("circular pad");
01844 pin_drill_diameter = 0.0;
01845 pad_diameter = 0.45;
01846 pad_clearance = 0.075;
01847 pad_solder_mask_clearance = 0.075;
01848 fiducial = FALSE;
01849 fiducial_pad_diameter = 0.00;
01850 fiducial_pad_clearance = 0.00;
01851 fiducial_pad_solder_mask_clearance = 0.00;
01852 courtyard_length = 35.00;
01853 courtyard_width = 35.00;
01854 courtyard_line_width = 0.05;
01855 silkscreen_length = 33.00;
01856 silkscreen_width = 33.00;
01857 silkscreen_line_width = 0.20;
01858 g_free (footprint_name);
01859 footprint_name = g_strdup ("BGA1023C100P32X32_3300X3300X287");
01860 return (EXIT_SUCCESS);
01861 }
01862 else if (!strcmp (footprint_name, "?BGA1023C100P32X32_3300X3300X350"))
01863 {
01864 footprint_units = g_strdup ("mm");
01865 number_of_pins = 1023;
01866 pin_pad_exceptions_string = g_strconcat
01867 (
01868 "A1",
01869 NULL
01870 );
01871 package_body_width = 33.00;
01872 package_body_length = 33.00;
01873 package_body_height = 3.50;
01874 package_is_radial = FALSE;
01875 number_of_columns = 32;
01876 number_of_rows = 32;
01877 pitch_x = 1.00;
01878 pitch_y = 1.00;
01879 count_x = 0;
01880 count_y = 0;
01881 pad_shape = g_strdup ("circular pad");
01882 pin_drill_diameter = 0.0;
01883 pad_diameter = 0.40;
01884 pad_clearance = 0.15;
01885 pad_solder_mask_clearance = 0.15;
01886 fiducial = FALSE;
01887 fiducial_pad_diameter = 0.00;
01888 fiducial_pad_clearance = 0.00;
01889 fiducial_pad_solder_mask_clearance = 0.00;
01890 courtyard_length = 35.00;
01891 courtyard_width = 35.00;
01892 courtyard_line_width = 0.05;
01893 silkscreen_length = 33.00;
01894 silkscreen_width = 33.00;
01895 silkscreen_line_width = 0.20;
01896 g_free (footprint_name);
01897 footprint_name = g_strdup ("BGA1023C100P32X32_3300X3300X350");
01898 return (EXIT_SUCCESS);
01899 }
01900 else if (!strcmp (footprint_name, "?BGA1024C100P32X32_3300X3300X350"))
01901 {
01902 footprint_units = g_strdup ("mm");
01903 number_of_pins = 1024;
01904 pin_pad_exceptions_string = g_strdup ("");
01905 package_body_width = 33.00;
01906 package_body_length = 33.00;
01907 package_body_height = 3.50;
01908 package_is_radial = FALSE;
01909 number_of_columns = 32;
01910 number_of_rows = 32;
01911 pitch_x = 1.00;
01912 pitch_y = 1.00;
01913 count_x = 0;
01914 count_y = 0;
01915 pad_shape = g_strdup ("circular pad");
01916 pin_drill_diameter = 0.0;
01917 pad_diameter = 0.45;
01918 pad_clearance = 0.15;
01919 pad_solder_mask_clearance = 0.15;
01920 fiducial = FALSE;
01921 fiducial_pad_diameter = 0.00;
01922 fiducial_pad_clearance = 0.00;
01923 fiducial_pad_solder_mask_clearance = 0.00;
01924 courtyard_length = 35.00;
01925 courtyard_width = 35.00;
01926 courtyard_line_width = 0.05;
01927 silkscreen_length = 33.00;
01928 silkscreen_width = 33.00;
01929 silkscreen_line_width = 0.20;
01930 g_free (footprint_name);
01931 footprint_name = g_strdup ("BGA1024C100P32X32_3300X3300X350");
01932 return (EXIT_SUCCESS);
01933 }
01934 else if (!strcmp (footprint_name, "?BGA103C65P8X13_600X900X100"))
01935 {
01936 footprint_units = g_strdup ("mm");
01937 number_of_pins = 103;
01938 pin_pad_exceptions_string = g_strconcat
01939 (
01940 "C3",
01941 NULL
01942 );
01943 package_body_length = 6.00;
01944 package_body_width = 9.00;
01945 package_body_height = 1.00;
01946 package_is_radial = FALSE;
01947 number_of_columns = 8;
01948 number_of_rows = 13;
01949 pitch_x = 0.65;
01950 pitch_y = 0.65;
01951 count_x = 0;
01952 count_y = 0;
01953 pad_shape = g_strdup ("circular pad");
01954 pin_drill_diameter = 0.0;
01955 pad_diameter = 0.25;
01956 pad_clearance = 0.075;
01957 pad_solder_mask_clearance = 0.075;
01958 fiducial = TRUE;
01959 fiducial_pad_diameter = 1.00;
01960 fiducial_pad_clearance = 1.00;
01961 fiducial_pad_solder_mask_clearance = 1.00;
01962 courtyard_length = 8.00;
01963 courtyard_width = 11.00;
01964 courtyard_line_width = 0.05;
01965 silkscreen_length = 6.00;
01966 silkscreen_width = 9.00;
01967 silkscreen_line_width = 0.20;
01968 g_free (footprint_name);
01969 footprint_name = g_strdup ("BGA103C65P8X13_600X900X100");
01970 return (EXIT_SUCCESS);
01971 }
01972 else if (!strcmp (footprint_name, "?BGA1036C100P44X44_4500X4500X275"))
01973 {
01974 footprint_units = g_strdup ("mm");
01975 number_of_pins = 1036;
01976 pin_pad_exceptions_string = g_strconcat
01977 (
01978 "H8,H9,H10,H11,H12,H13,H14,H15,H16,H17,H18,H19,H20,H21,H22,",
01979 "H23,H24,H25,H26,H27,H28,H29,H30,H31,H32,H33,H34,H35,H36,H37,",
01980 "J8,J9,J10,J11,J12,J13,J14,J15,J16,J17,J18,J19,J20,J21,J22,",
01981 "J23,J24,J25,J26,J27,J28,J29,J30,J31,J32,J33,J34,J35,J36,J37,",
01982 "K8,K9,K10,K11,K12,K13,K14,K15,K16,K17,K18,K19,K20,K21,K22,",
01983 "K23,K24,K25,K26,K27,K28,K29,K30,K31,K32,K33,K34,K35,K36,K37,",
01984 "L8,L9,L10,L11,L12,L13,L14,L15,L16,L17,L18,L19,L20,L21,L22,",
01985 "L23,L24,L25,L26,L27,L28,L29,L30,L31,L32,L33,L34,L35,L36,L37,",
01986 "M8,M9,M10,M11,M12,M13,M14,M15,M16,M17,M18,M19,M20,M21,M22,",
01987 "M23,M24,M25,M26,M27,M28,M29,M30,M31,M32,M33,M34,M35,M36,M37,",
01988 "N8,N9,N10,N11,N12,N13,N14,N15,N16,N17,N18,N19,N20,N21,N22,",
01989 "N23,N24,N25,N26,N27,N28,N29,N30,N31,N32,N33,N34,N35,N36,N37,",
01990 "P8,P9,P10,P11,P12,P13,P14,P15,P16,P17,P18,P19,P20,P21,P22,",
01991 "P23,P24,P25,P26,P27,P28,P29,P30,P31,P32,P33,P34,P35,P36,P37,",
01992 "R8,R9,R10,R11,R12,R13,R14,R15,R16,R17,R18,R19,R20,R21,R22,",
01993 "R23,R24,R25,R26,R27,R28,R29,R30,R31,R32,R33,R34,R35,R36,R37,",
01994 "T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,",
01995 "T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,T34,T35,T36,T37,",
01996 "U8,U9,U10,U11,U12,U13,U14,U15,U16,U17,U18,U19,U20,U21,U22,",
01997 "U23,U24,U25,U26,U27,U28,U29,U30,U31,U32,U33,U34,U35,U36,U37,",
01998 "V8,V9,V10,V11,V12,V13,V14,V15,V16,V17,V18,V19,V20,V21,V22,",
01999 "V23,V24,V25,V26,V27,V28,V29,V30,V31,V32,V33,V34,V35,V36,V37,",
02000 "W8,W9,W10,W11,W12,W13,W14,W15,W16,W17,W18,W19,W20,W21,W22,",
02001 "W23,W24,W25,W26,W27,W28,W29,W30,W31,W32,W33,W34,W35,W36,W37,",
02002 "Y8,Y9,Y10,Y11,Y12,Y13,Y14,Y15,Y16,Y17,Y18,Y19,Y20,Y21,Y22,",
02003 "Y23,Y24,Y25,Y26,Y27,Y28,Y29,Y30,Y31,Y32,Y33,Y34,Y35,Y36,Y37,",
02004 "AA8,AA9,AA10,AA11,AA12,AA13,AA14,AA15,AA16,AA17,AA18,AA19,AA20,AA21,AA22,",
02005 "AA23,AA24,AA25,AA26,AA27,AA28,AA29,AA30,AA31,AA32,AA33,AA34,AA35,AA36,AA37,",
02006 "AB8,AB9,AB10,AB11,AB12,AB13,AB14,AB15,AB16,AB17,AB18,AB19,AB20,AB21,AB22,",
02007 "AB23,AB24,AB25,AB26,AB27,AB28,AB29,AB30,AB31,AB32,AB33,AB34,AB35,AB36,AB37,",
02008 "AC8,AC9,AC10,AC11,AC12,AC13,AC14,AC15,AC16,AC17,AC18,AC19,AC20,AC21,AC22,",
02009 "AC23,AC24,AC25,AC26,AC27,AC28,AC29,AC30,AC31,AC32,AC33,AC34,AC35,AC36,AC37,",
02010 "AD8,AD9,AD10,AD11,AD12,AD13,AD14,AD15,AD16,AD17,AD18,AD19,AD20,AD21,AD22,",
02011 "AD23,AD24,AD25,AD26,AD27,AD28,AD29,AD30,AD31,AD32,AD33,AD34,AD35,AD36,AD37,",
02012 "AE8,AE9,AE10,AE11,AE12,AE13,AE14,AE15,AE16,AE17,AE18,AE19,AE20,AE21,AE22,",
02013 "AE23,AE24,AE25,AE26,AE27,AE28,AE29,AE30,AE31,AE32,AE33,AE34,AE35,AE36,AE37,",
02014 "AF8,AF9,AF10,AF11,AF12,AF13,AF14,AF15,AF16,AF17,AF18,AF19,AF20,AF21,AF22,",
02015 "AF23,AF24,AF25,AF26,AF27,AF28,AF29,AF30,AF31,AF32,AF33,AF34,AF35,AF36,AF37,",
02016 "AG8,AG9,AG10,AG11,AG12,AG13,AG14,AG15,AG16,AG17,AG18,AG19,AG20,AG21,AG22,",
02017 "AG23,AG24,AG25,AG26,AG27,AG28,AG29,AG30,AG31,AG32,AG33,AG34,AG35,AG36,AG37,",
02018 "AH8,AH9,AH10,AH11,AH12,AH13,AH14,AH15,AH16,AH17,AH18,AH19,AH20,AH21,AH22,",
02019 "AH23,AH24,AH25,AH26,AH27,AH28,AH29,AH30,AH31,AH32,AH33,AH34,AH35,AH36,AH37,",
02020 "AJ8,AJ9,AJ10,AJ11,AJ12,AJ13,AJ14,AJ15,AJ16,AJ17,AJ18,AJ19,AJ20,AJ21,AJ22,",
02021 "AJ23,AJ24,AJ25,AJ26,AJ27,AJ28,AJ29,AJ30,AJ31,AJ32,AJ33,AJ34,AJ35,AJ36,AJ37,",
02022 "AK8,AK9,AK10,AK11,AK12,AK13,AK14,AK15,AK16,AK17,AK18,AK19,AK20,AK21,AK22,",
02023 "AK23,AK24,AK25,AK26,AK27,AK28,AK29,AK30,AK31,AK32,AK33,AK34,AK35,AK36,AK37,",
02024 "AL8,AL9,AL10,AL11,AL12,AL13,AL14,AL15,AL16,AL17,AL18,AL19,AL20,AL21,AL22,",
02025 "AL23,AL24,AL25,AL26,AL27,AL28,AL29,AL30,AL31,AL32,AL33,AL34,AL35,AL36,AL37,",
02026 "AM8,AM9,AM10,AM11,AM12,AM13,AM14,AM15,AM16,AM17,AM18,AM19,AM20,AM21,AM22,",
02027 "AM23,AM24,AM25,AM26,AM27,AM28,AM29,AM30,AM31,AM32,AM33,AM34,AM35,AM36,AM37,",
02028 "AN8,AN9,AN10,AN11,AN12,AN13,AN14,AN15,AN16,AN17,AN18,AN19,AN20,AN21,AN22,",
02029 "AN23,AN24,AN25,AN26,AN27,AN28,AN29,AN30,AN31,AN32,AN33,AN34,AN35,AN36,AN37,",
02030 "AP8,AP9,AP10,AP11,AP12,AP13,AP14,AP15,AP16,AP17,AP18,AP19,AP20,AP21,AP22,",
02031 "AP23,AP24,AP25,AP26,AP27,AP28,AP29,AP30,AP31,AP32,AP33,AP34,AP35,AP36,AP37,",
02032 "AR8,AR9,AR10,AR11,AR12,AR13,AR14,AR15,AR16,AR17,AR18,AR19,AR20,AR21,AR22,",
02033 "AR23,AR24,AR25,AR26,AR27,AR28,AR29,AR30,AR31,AR32,AR33,AR34,AR35,AR36,AR37,",
02034 "AT8,AT9,AT10,AT11,AT12,AT13,AT14,AT15,AT16,AT17,AT18,AT19,AT20,AT21,AT22,",
02035 "AT23,AT24,AT25,AT26,AT27,AT28,AT29,AT30,AT31,AT32,AT33,AT34,AT35,AT36,AT37,",
02036 "AU8,AU9,AU10,AU11,AU12,AU13,AU14,AU15,AU16,AU17,AU18,AU19,AU20,AU21,AU22,",
02037 "AU23,AU24,AU25,AU26,AU27,AU28,AU29,AU30,AU31,AU32,AU33,AU34,AU35,AU36,AU37,",
02038 NULL
02039 );
02040 package_body_width = 45.00;
02041 package_body_length = 45.00;
02042 package_body_height = 2.75;
02043 package_is_radial = FALSE;
02044 number_of_columns = 44;
02045 number_of_rows = 44;
02046 pitch_x = 1.00;
02047 pitch_y = 1.00;
02048 count_x = 0;
02049 count_y = 0;
02050 pad_shape = g_strdup ("circular pad");
02051 pin_drill_diameter = 0.0;
02052 pad_diameter = 0.55;
02053 pad_clearance = 0.075;
02054 pad_solder_mask_clearance = 0.075;
02055 fiducial = FALSE;
02056 fiducial_pad_diameter = 0.00;
02057 fiducial_pad_clearance = 0.00;
02058 fiducial_pad_solder_mask_clearance = 0.00;
02059 courtyard_length = 49.00;
02060 courtyard_width = 49.00;
02061 courtyard_line_width = 0.05;
02062 silkscreen_length = 45.00;
02063 silkscreen_width = 45.00;
02064 silkscreen_line_width = 0.20;
02065 g_free (footprint_name);
02066 footprint_name = g_strdup ("BGA1036C100P44X44_4500X4500X275");
02067 return (EXIT_SUCCESS);
02068 }
02069 else if (!strcmp (footprint_name, "?BGA1056C100P39X39_4000X4000X380"))
02070 {
02071 footprint_units = g_strdup ("mm");
02072 number_of_pins = 1056;
02073 pin_pad_exceptions_string = g_strconcat
02074 (
02075 "A1,A2,A3,A37,A38,A39,",
02076 "B1,B2,B38,B39,",
02077 "C1,C39,",
02078 "K10,K11,K12,K13,K14,K15,K16,K17,K18,K19,K20,K21,K22,K23,K24,K25,K26,K27,K28,K29,K30,",
02079 "L10,L11,L12,L13,L14,L15,L16,L17,L18,L19,L20,L21,L22,L23,L24,L25,L26,L27,L28,L29,L30,",
02080 "M10,M11,M12,M13,M14,M15,M16,M17,M18,M19,M20,M21,M22,M23,M24,M25,M26,M27,M28,M29,M30,",
02081 "N10,N11,N12,N13,N14,N15,N16,N17,N18,N19,N20,N21,N22,N23,N24,N25,N26,N27,N28,N29,N30,",
02082 "P10,P11,P12,P13,P14,P15,P16,P17,P18,P19,P20,P21,P22,P23,P24,P25,P26,P27,P28,P29,P30,",
02083 "R10,R11,R12,R13,R14,R15,R16,R17,R18,R19,R20,R21,R22,R23,R24,R25,R26,R27,R28,R29,R30,",
02084 "T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,",
02085 "U10,U11,U12,U13,U14,U15,U16,U17,U18,U19,U20,U21,U22,U23,U24,U25,U26,U27,U28,U29,U30,",
02086 "V10,V11,V12,V13,V14,V15,V16,V17,V18,V19,V20,V21,V22,V23,V24,V25,V26,V27,V28,V29,V30,",
02087 "W10,W11,W12,W13,W14,W15,W16,W17,W18,W19,W20,W21,W22,W23,W24,W25,W26,W27,W28,W29,W30,",
02088 "Y10,Y11,Y12,Y13,Y14,Y15,Y16,Y17,Y18,Y19,Y20,Y21,Y22,Y23,Y24,Y25,Y26,Y27,Y28,Y29,Y30,",
02089 "AA10,AA11,AA12,AA13,AA14,AA15,AA16,AA17,AA18,AA19,AA20,AA21,AA22,AA23,AA24,AA25,AA26,AA27,AA28,AA29,AA30,",
02090 "AB10,AB11,AB12,AB13,AB14,AB15,AB16,AB17,AB18,AB19,AB20,AB21,AB22,AB23,AB24,AB25,AB26,AB27,AB28,AB29,AB30,",
02091 "AC10,AC11,AC12,AC13,AC14,AC15,AC16,AC17,AC18,AC19,AC20,AC21,AC22,AC23,AC24,AC25,AC26,AC27,AC28,AC29,AC30,",
02092 "AD10,AD11,AD12,AD13,AD14,AD15,AD16,AD17,AD18,AD19,AD20,AD21,AD22,AD23,AD24,AD25,AD26,AD27,AD28,AD29,AD30,",
02093 "AE10,AE11,AE12,AE13,AE14,AE15,AE16,AE17,AE18,AE19,AE20,AE21,AE22,AE23,AE24,AE25,AE26,AE27,AE28,AE29,AE30,",
02094 "AF10,AF11,AF12,AF13,AF14,AF15,AF16,AF17,AF18,AF19,AF20,AF21,AF22,AF23,AF24,AF25,AF26,AF27,AF28,AF29,AF30,",
02095 "AG10,AG11,AG12,AG13,AG14,AG15,AG16,AG17,AG18,AG19,AG20,AG21,AG22,AG23,AG24,AG25,AG26,AG27,AG28,AG29,AG30,",
02096 "AH10,AH11,AH12,AH13,AH14,AH15,AH16,AH17,AH18,AH19,AH20,AH21,AH22,AH23,AH24,AH25,AH26,AH27,AH28,AH29,AH30,",
02097 "AJ10,AJ11,AJ12,AJ13,AJ14,AJ15,AJ16,AJ17,AJ18,AJ19,AJ20,AJ21,AJ22,AJ23,AJ24,AJ25,AJ26,AJ27,AJ28,AJ29,AJ30,",
02098 "AK10,AK11,AK12,AK13,AK14,AK15,AK16,AK17,AK18,AK19,AK20,AK21,AK22,AK23,AK24,AK25,AK26,AK27,AK28,AK29,AK30,",
02099 "AU1,AU39,",
02100 "AV1,AV2,AV38,AV39,",
02101 "AW1,AW2,AW3,AW37,AW38,AW39,",
02102 NULL
02103 );
02104 package_body_width = 40.00;
02105 package_body_length = 40.00;
02106 package_body_height = 3.80;
02107 package_is_radial = FALSE;
02108 number_of_columns = 39;
02109 number_of_rows = 39;
02110 pitch_x = 1.00;
02111 pitch_y = 1.00;
02112 count_x = 0;
02113 count_y = 0;
02114 pad_shape = g_strdup ("circular pad");
02115 pin_drill_diameter = 0.0;
02116 pad_diameter = 0.50;
02117 pad_clearance = 0.15;
02118 pad_solder_mask_clearance = 0.15;
02119 fiducial = FALSE;
02120 fiducial_pad_diameter = 0.00;
02121 fiducial_pad_clearance = 0.00;
02122 fiducial_pad_solder_mask_clearance = 0.00;
02123 courtyard_length = 44.00;
02124 courtyard_width = 44.00;
02125 courtyard_line_width = 0.05;
02126 silkscreen_length = 40.00;
02127 silkscreen_width = 40.00;
02128 silkscreen_line_width = 0.20;
02129 g_free (footprint_name);
02130 footprint_name = g_strdup ("BGA1056C100P39X39_4000X4000X380");
02131 return (EXIT_SUCCESS);
02132 }
02133 else if (!strcmp (footprint_name, "?BGA1056C100P39X39_4000X4000X400"))
02134 {
02135 footprint_units = g_strdup ("mm");
02136 number_of_pins = 1056;
02137 pin_pad_exceptions_string = g_strconcat
02138 (
02139 "A1,A2,A3,A37,A38,A39,",
02140 "B1,B2,B38,B39,",
02141 "C1,C39,",
02142 "K10,K11,K12,K13,K14,K15,K16,K17,K18,K19,K20,K21,K22,K23,K24,K25,K26,K27,K28,K29,K30,",
02143 "L10,L11,L12,L13,L14,L15,L16,L17,L18,L19,L20,L21,L22,L23,L24,L25,L26,L27,L28,L29,L30,",
02144 "M10,M11,M12,M13,M14,M15,M16,M17,M18,M19,M20,M21,M22,M23,M24,M25,M26,M27,M28,M29,M30,",
02145 "N10,N11,N12,N13,N14,N15,N16,N17,N18,N19,N20,N21,N22,N23,N24,N25,N26,N27,N28,N29,N30,",
02146 "P10,P11,P12,P13,P14,P15,P16,P17,P18,P19,P20,P21,P22,P23,P24,P25,P26,P27,P28,P29,P30,",
02147 "R10,R11,R12,R13,R14,R15,R16,R17,R18,R19,R20,R21,R22,R23,R24,R25,R26,R27,R28,R29,R30,",
02148 "T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,",
02149 "U10,U11,U12,U13,U14,U15,U16,U17,U18,U19,U20,U21,U22,U23,U24,U25,U26,U27,U28,U29,U30,",
02150 "V10,V11,V12,V13,V14,V15,V16,V17,V18,V19,V20,V21,V22,V23,V24,V25,V26,V27,V28,V29,V30,",
02151 "W10,W11,W12,W13,W14,W15,W16,W17,W18,W19,W20,W21,W22,W23,W24,W25,W26,W27,W28,W29,W30,",
02152 "Y10,Y11,Y12,Y13,Y14,Y15,Y16,Y17,Y18,Y19,Y20,Y21,Y22,Y23,Y24,Y25,Y26,Y27,Y28,Y29,Y30,",
02153 "AA10,AA11,AA12,AA13,AA14,AA15,AA16,AA17,AA18,AA19,AA20,AA21,AA22,AA23,AA24,AA25,AA26,AA27,AA28,AA29,AA30,",
02154 "AB10,AB11,AB12,AB13,AB14,AB15,AB16,AB17,AB18,AB19,AB20,AB21,AB22,AB23,AB24,AB25,AB26,AB27,AB28,AB29,AB30,",
02155 "AC10,AC11,AC12,AC13,AC14,AC15,AC16,AC17,AC18,AC19,AC20,AC21,AC22,AC23,AC24,AC25,AC26,AC27,AC28,AC29,AC30,",
02156 "AD10,AD11,AD12,AD13,AD14,AD15,AD16,AD17,AD18,AD19,AD20,AD21,AD22,AD23,AD24,AD25,AD26,AD27,AD28,AD29,AD30,",
02157 "AE10,AE11,AE12,AE13,AE14,AE15,AE16,AE17,AE18,AE19,AE20,AE21,AE22,AE23,AE24,AE25,AE26,AE27,AE28,AE29,AE30,",
02158 "AF10,AF11,AF12,AF13,AF14,AF15,AF16,AF17,AF18,AF19,AF20,AF21,AF22,AF23,AF24,AF25,AF26,AF27,AF28,AF29,AF30,",
02159 "AG10,AG11,AG12,AG13,AG14,AG15,AG16,AG17,AG18,AG19,AG20,AG21,AG22,AG23,AG24,AG25,AG26,AG27,AG28,AG29,AG30,",
02160 "AH10,AH11,AH12,AH13,AH14,AH15,AH16,AH17,AH18,AH19,AH20,AH21,AH22,AH23,AH24,AH25,AH26,AH27,AH28,AH29,AH30,",
02161 "AJ10,AJ11,AJ12,AJ13,AJ14,AJ15,AJ16,AJ17,AJ18,AJ19,AJ20,AJ21,AJ22,AJ23,AJ24,AJ25,AJ26,AJ27,AJ28,AJ29,AJ30,",
02162 "AK10,AK11,AK12,AK13,AK14,AK15,AK16,AK17,AK18,AK19,AK20,AK21,AK22,AK23,AK24,AK25,AK26,AK27,AK28,AK29,AK30,",
02163 "AU1,AU39,",
02164 "AV1,AV2,AV38,AV39,",
02165 "AW1,AW2,AW3,AW37,AW38,AW39,",
02166 NULL
02167 );
02168 package_body_width = 40.00;
02169 package_body_length = 40.00;
02170 package_body_height = 4.00;
02171 package_is_radial = FALSE;
02172 number_of_columns = 39;
02173 number_of_rows = 39;
02174 pitch_x = 1.00;
02175 pitch_y = 1.00;
02176 count_x = 0;
02177 count_y = 0;
02178 pad_shape = g_strdup ("circular pad");
02179 pin_drill_diameter = 0.0;
02180 pad_diameter = 0.50;
02181 pad_clearance = 0.075;
02182 pad_solder_mask_clearance = 0.075;
02183 fiducial = FALSE;
02184 fiducial_pad_diameter = 0.00;
02185 fiducial_pad_clearance = 0.00;
02186 fiducial_pad_solder_mask_clearance = 0.00;
02187 courtyard_length = 44.00;
02188 courtyard_width = 44.00;
02189 courtyard_line_width = 0.05;
02190 silkscreen_length = 40.00;
02191 silkscreen_width = 40.00;
02192 silkscreen_line_width = 0.20;
02193 g_free (footprint_name);
02194 footprint_name = g_strdup ("BGA1056C100P39X39_4000X4000X400");
02195 return (EXIT_SUCCESS);
02196 }
02197 else if (!strcmp (footprint_name, "?BGA105C65P11X11_800X800X140"))
02198 {
02199 footprint_units = g_strdup ("mm");
02200 number_of_pins = 105;
02201 pin_pad_exceptions_string = g_strconcat
02202 (
02203 "D4,D5,D6,D7,D8,",
02204 "E4,E8,",
02205 "F4,F8,",
02206 "G4,G8,",
02207 "H4,H5,H6,H7,H8,",
02208 NULL
02209 );
02210 package_body_width = 8.00;
02211 package_body_length = 8.00;
02212 package_body_height = 1.40;
02213 package_is_radial = FALSE;
02214 number_of_columns = 11;
02215 number_of_rows = 11;
02216 pitch_x = 0.65;
02217 pitch_y = 0.65;
02218 count_x = 0;
02219 count_y = 0;
02220 pad_shape = g_strdup ("circular pad");
02221 pin_drill_diameter = 0.0;
02222 pad_diameter = 0.35;
02223 pad_clearance = 0.075;
02224 pad_solder_mask_clearance = 0.075;
02225 fiducial = TRUE;
02226 fiducial_pad_diameter = 1.00;
02227 fiducial_pad_clearance = 1.00;
02228 fiducial_pad_solder_mask_clearance = 1.00;
02229 courtyard_length = 10.00;
02230 courtyard_width = 10.00;
02231 courtyard_line_width = 0.05;
02232 silkscreen_length = 8.00;
02233 silkscreen_width = 8.00;
02234 silkscreen_line_width = 0.20;
02235 g_free (footprint_name);
02236 footprint_name = g_strdup ("BGA105C65P11X11_800X800X140");
02237 if (verbose)
02238 {
02239 g_log ("", G_LOG_LEVEL_INFO,
02240 (_("%s is also known as")),
02241 footprint_name,
02242 " JEDEC MO-225.");
02243 }
02244 return (EXIT_SUCCESS);
02245 }
02246 else if (!strcmp (footprint_name, "?BGA105C50P15X15_800X800X140"))
02247 {
02248 footprint_units = g_strdup ("mm");
02249 number_of_pins = 105;
02250 pin_pad_exceptions_string = g_strconcat
02251 (
02252 "B14,",
02253 "C3,C4,C5,C6,C7,C8,C9,C10,C11,C12,C13,",
02254 "D3,D4,D5,D6,D7,D8,D9,D10,D11,D12,D13,",
02255 "E3,E4,E6,E7,E8,E9,E10,E12,E13,",
02256 "F3,F4,F5,F6,F7,F8,F9,F10,F11,F12,F13,",
02257 "G2,G3,G4,G5,G6,G7,G8,G9,G10,G11,G12,G13,",
02258 "H3,H4,H5,H6,H7,H8,H9,H10,H11,H12,H13,",
02259 "J3,J4,J5,J6,J7,J8,J9,J10,J11,J12,J13,",
02260 "K3,K4,K5,K6,K7,K8,K9,K10,K12,K13,",
02261 "L3,L4,L6,L7,L8,L9,L10,L12,L13,",
02262 "M3,M4,M5,M6,M7,M8,M9,M10,M11,M12,M13,",
02263 "N3,N4,N5,N6,N7,N8,N9,N10,N11,N12,N13,",
02264 "P2,P14,",
02265 NULL
02266 );
02267 package_body_width = 8.00;
02268 package_body_length = 8.00;
02269 package_body_height = 1.40;
02270 package_is_radial = FALSE;
02271 number_of_columns = 15;
02272 number_of_rows = 15;
02273 pitch_x = 0.50;
02274 pitch_y = 0.50;
02275 count_x = 0;
02276 count_y = 0;
02277 pad_shape = g_strdup ("circular pad");
02278 pin_drill_diameter = 0.0;
02279 pad_diameter = 0.25;
02280 pad_clearance = 0.075;
02281 pad_solder_mask_clearance = 0.075;
02282 fiducial = TRUE;
02283 fiducial_pad_diameter = 1.00;
02284 fiducial_pad_clearance = 1.00;
02285 fiducial_pad_solder_mask_clearance = 1.00;
02286 courtyard_length = 10.00;
02287 courtyard_width = 10.00;
02288 courtyard_line_width = 0.05;
02289 silkscreen_length = 8.00;
02290 silkscreen_width = 8.00;
02291 silkscreen_line_width = 0.20;
02292 g_free (footprint_name);
02293 footprint_name = g_strdup ("BGA105C50P15X15_800X800X140");
02294 return (EXIT_SUCCESS);
02295 }
02296 else if (!strcmp (footprint_name, "?BGA107C80P10X14_1050X1300X120"))
02297 {
02298 footprint_units = g_strdup ("mm");
02299 number_of_pins = 107;
02300 pin_pad_exceptions_string = g_strconcat
02301 (
02302 "A1,A3,A4,A5,A6,A7,A8,",
02303 "C1,C10,",
02304 "D1,D10,",
02305 "E1,E10,",
02306 "F1,F10,",
02307 "G1,G10,",
02308 "H1,H10,",
02309 "J1,J10,",
02310 "K1,K10,",
02311 "L1,L10,",
02312 "M1,M10,",
02313 "P3,P4,P5,P6,P7,P8,",
02314 NULL
02315 );
02316 package_body_length = 10.50;
02317 package_body_width = 13.00;
02318 package_body_height = 1.20;
02319 package_is_radial = FALSE;
02320 number_of_columns = 10;
02321 number_of_rows = 14;
02322 pitch_x = 0.80;
02323 pitch_y = 0.80;
02324 count_x = 0;
02325 count_y = 0;
02326 pad_shape = g_strdup ("circular pad");
02327 pin_drill_diameter = 0.0;
02328 pad_diameter = 0.40;
02329 pad_clearance = 0.075;
02330 pad_solder_mask_clearance = 0.075;
02331 fiducial = TRUE;
02332 fiducial_pad_diameter = 1.00;
02333 fiducial_pad_clearance = 1.00;
02334 fiducial_pad_solder_mask_clearance = 1.00;
02335 courtyard_length = 12.50;
02336 courtyard_width = 15.00;
02337 courtyard_line_width = 0.05;
02338 silkscreen_length = 10.50;
02339 silkscreen_width = 13.00;
02340 silkscreen_line_width = 0.20;
02341 g_free (footprint_name);
02342 footprint_name = g_strdup ("BGA107C80P10X14_1050X1300X120");
02343 return (EXIT_SUCCESS);
02344 }
02345 else if (!strcmp (footprint_name, "?BGA107C80P10X14_1050X1300X140"))
02346 {
02347 footprint_units = g_strdup ("mm");
02348 number_of_pins = 107;
02349 pin_pad_exceptions_string = g_strconcat
02350 (
02351 "A1,A3,A4,A5,A6,A7,A8,",
02352 "C1,C10,",
02353 "D1,D10,",
02354 "E1,E10,",
02355 "F1,F10,",
02356 "G1,G10,",
02357 "H1,H10,",
02358 "J1,J10,",
02359 "K1,K10,",
02360 "L1,L10,",
02361 "M1,M10,",
02362 "P3,P4,P5,P6,P7,P8,",
02363 NULL
02364 );
02365 package_body_length = 10.50;
02366 package_body_width = 13.00;
02367 package_body_height = 1.40;
02368 package_is_radial = FALSE;
02369 number_of_columns = 10;
02370 number_of_rows = 14;
02371 pitch_x = 0.80;
02372 pitch_y = 0.80;
02373 count_x = 0;
02374 count_y = 0;
02375 pad_shape = g_strdup ("circular pad");
02376 pin_drill_diameter = 0.0;
02377 pad_diameter = 0.40;
02378 pad_clearance = 0.075;
02379 pad_solder_mask_clearance = 0.075;
02380 fiducial = TRUE;
02381 fiducial_pad_diameter = 1.00;
02382 fiducial_pad_clearance = 1.00;
02383 fiducial_pad_solder_mask_clearance = 1.00;
02384 courtyard_length = 12.50;
02385 courtyard_width = 15.00;
02386 courtyard_line_width = 0.05;
02387 silkscreen_length = 10.50;
02388 silkscreen_width = 13.00;
02389 silkscreen_line_width = 0.20;
02390 g_free (footprint_name);
02391 footprint_name = g_strdup ("BGA107C80P10X14_1050X1300X140");
02392 return (EXIT_SUCCESS);
02393 }
02394 else if (!strcmp (footprint_name, "?BGA107C80P10X14_1050X1600X140"))
02395 {
02396 footprint_units = g_strdup ("mm");
02397 number_of_pins = 107;
02398 pin_pad_exceptions_string = g_strconcat
02399 (
02400 "A1,A3,A4,A5,A6,A7,A8,",
02401 "C1,C10,",
02402 "D1,D10,",
02403 "E1,E10,",
02404 "F1,F10,",
02405 "G1,G10,",
02406 "H1,H10,",
02407 "J1,J10,",
02408 "K1,K10,",
02409 "L1,L10,",
02410 "M1,M10,",
02411 "P3,P4,P5,P6,P7,P8,",
02412 NULL
02413 );
02414 package_body_length = 10.50;
02415 package_body_width = 16.00;
02416 package_body_height = 1.40;
02417 package_is_radial = FALSE;
02418 number_of_columns = 10;
02419 number_of_rows = 14;
02420 pitch_x = 0.80;
02421 pitch_y = 0.80;
02422 count_x = 0;
02423 count_y = 0;
02424 pad_shape = g_strdup ("circular pad");
02425 pin_drill_diameter = 0.0;
02426 pad_diameter = 0.40;
02427 pad_clearance = 0.075;
02428 pad_solder_mask_clearance = 0.075;
02429 fiducial = TRUE;
02430 fiducial_pad_diameter = 1.00;
02431 fiducial_pad_clearance = 1.00;
02432 fiducial_pad_solder_mask_clearance = 1.00;
02433 courtyard_length = 12.50;
02434 courtyard_width = 18.00;
02435 courtyard_line_width = 0.05;
02436 silkscreen_length = 10.50;
02437 silkscreen_width = 16.00;
02438 silkscreen_line_width = 0.20;
02439 g_free (footprint_name);
02440 footprint_name = g_strdup ("BGA107C80P10X14_1050X1600X140");
02441 return (EXIT_SUCCESS);
02442 }
02443 else if (!strcmp (footprint_name, "?BGA1089C100P33X33_3500X3500X350"))
02444 {
02445 footprint_units = g_strdup ("mm");
02446 number_of_pins = 1089;
02447 pin_pad_exceptions_string = g_strdup ("");
02448 package_body_width = 35.00;
02449 package_body_length = 35.00;
02450 package_body_height = 3.50;
02451 package_is_radial = FALSE;
02452 number_of_columns = 33;
02453 number_of_rows = 33;
02454 pitch_x = 1.00;
02455 pitch_y = 1.00;
02456 count_x = 0;
02457 count_y = 0;
02458 pad_shape = g_strdup ("circular pad");
02459 pin_drill_diameter = 0.0;
02460 pad_diameter = 0.45;
02461 pad_clearance = 0.15;
02462 pad_solder_mask_clearance = 0.15;
02463 fiducial = FALSE;
02464 fiducial_pad_diameter = 0.00;
02465 fiducial_pad_clearance = 0.00;
02466 fiducial_pad_solder_mask_clearance = 0.00;
02467 courtyard_length = 37.00;
02468 courtyard_width = 37.00;
02469 courtyard_line_width = 0.05;
02470 silkscreen_length = 35.00;
02471 silkscreen_width = 35.00;
02472 silkscreen_line_width = 0.20;
02473 g_free (footprint_name);
02474 footprint_name = g_strdup ("BGA1089C100P33X33_3500X3500X350");
02475 return (EXIT_SUCCESS);
02476 }
02477 else if (!strcmp (footprint_name, "?BGA1089C127P33X33_4250X4250X350"))
02478 {
02479 footprint_units = g_strdup ("mm");
02480 number_of_pins = 1089;
02481 pin_pad_exceptions_string = g_strdup ("");
02482 package_body_width = 42.50;
02483 package_body_length = 42.50;
02484 package_body_height = 3.50;
02485 package_is_radial = FALSE;
02486 number_of_columns = 33;
02487 number_of_rows = 33;
02488 pitch_x = 1.27;
02489 pitch_y = 1.27;
02490 count_x = 0;
02491 count_y = 0;
02492 pad_shape = g_strdup ("circular pad");
02493 pin_drill_diameter = 0.0;
02494 pad_diameter = 0.55;
02495 pad_clearance = 0.15;
02496 pad_solder_mask_clearance = 0.15;
02497 fiducial = FALSE;
02498 fiducial_pad_diameter = 0.00;
02499 fiducial_pad_clearance = 0.00;
02500 fiducial_pad_solder_mask_clearance = 0.00;
02501 courtyard_length = 46.50;
02502 courtyard_width = 46.50;
02503 courtyard_line_width = 0.05;
02504 silkscreen_length = 42.50;
02505 silkscreen_width = 42.50;
02506 silkscreen_line_width = 0.20;
02507 g_free (footprint_name);
02508 footprint_name = g_strdup ("BGA1089C127P33X33_4250X4250X350");
02509 return (EXIT_SUCCESS);
02510 }
02511 else if (!strcmp (footprint_name, "?BGA108C100P12X12_1300X1300X185"))
02512 {
02513 footprint_units = g_strdup ("mm");
02514 number_of_pins = 108;
02515 pin_pad_exceptions_string = g_strconcat
02516 (
02517 "D4,D5,D6,D7,D8,D9,",
02518 "E4,E5,E6,E7,E8,E9,",
02519 "F4,F5,F6,F7,F8,F9,",
02520 "G4,G5,G6,G7,G8,G9,",
02521 "H4,H5,H6,H7,H8,H9,",
02522 "J4,J5,J6,J7,J8,J9,",
02523 NULL
02524 );
02525 package_body_width = 13.00;
02526 package_body_length = 13.00;
02527 package_body_height = 1.85;
02528 package_is_radial = FALSE;
02529 number_of_columns = 12;
02530 number_of_rows = 12;
02531 pitch_x = 1.00;
02532 pitch_y = 1.00;
02533 count_x = 0;
02534 count_y = 0;
02535 pad_shape = g_strdup ("circular pad");
02536 pin_drill_diameter = 0.0;
02537 pad_diameter = 0.55;
02538 pad_clearance = 0.075;
02539 pad_solder_mask_clearance = 0.075;
02540 fiducial = TRUE;
02541 fiducial_pad_diameter = 1.00;
02542 fiducial_pad_clearance = 1.00;
02543 fiducial_pad_solder_mask_clearance = 1.00;
02544 courtyard_length = 17.00;
02545 courtyard_width = 17.00;
02546 courtyard_line_width = 0.05;
02547 silkscreen_length = 13.00;
02548 silkscreen_width = 13.00;
02549 silkscreen_line_width = 0.20;
02550 g_free (footprint_name);
02551 footprint_name = g_strdup ("BGA108C100P12X12_1300X1300X185");
02552 if (verbose)
02553 {
02554 g_log ("", G_LOG_LEVEL_INFO,
02555 (_("%s is also known as")),
02556 footprint_name,
02557 " JEDEC MO-192AAD-1.");
02558 }
02559 return (EXIT_SUCCESS);
02560 }
02561 else if (!strcmp (footprint_name, "?BGA108C80P12X12_1000X1000X140"))
02562 {
02563 footprint_units = g_strdup ("mm");
02564 number_of_pins = 108;
02565 pin_pad_exceptions_string = g_strconcat
02566 (
02567 "D4,D5,D6,D7,D8,D9,",
02568 "E4,E5,E6,E7,E8,E9,",
02569 "F4,F5,F6,F7,F8,F9,",
02570 "G4,G5,G6,G7,G8,G9,",
02571 "H4,H5,H6,H7,H8,H9,",
02572 "J4,J5,J6,J7,J8,J9,",
02573 NULL
02574 );
02575 package_body_width = 10.00;
02576 package_body_length = 10.00;
02577 package_body_height = 1.40;
02578 package_is_radial = FALSE;
02579 number_of_columns = 12;
02580 number_of_rows = 12;
02581 pitch_x = 0.80;
02582 pitch_y = 0.80;
02583 count_x = 0;
02584 count_y = 0;
02585 pad_shape = g_strdup ("circular pad");
02586 pin_drill_diameter = 0.0;
02587 pad_diameter = 0.45;
02588 pad_clearance = 0.075;
02589 pad_solder_mask_clearance = 0.075;
02590 fiducial = TRUE;
02591 fiducial_pad_diameter = 1.00;
02592 fiducial_pad_clearance = 1.00;
02593 fiducial_pad_solder_mask_clearance = 1.00;
02594 courtyard_length = 12.00;
02595 courtyard_width = 12.00;
02596 courtyard_line_width = 0.05;
02597 silkscreen_length = 10.00;
02598 silkscreen_width = 10.00;
02599 silkscreen_line_width = 0.20;
02600 g_free (footprint_name);
02601 footprint_name = g_strdup ("BGA108C80P12X12_1000X1000X140");
02602 if (verbose)
02603 {
02604 g_log ("", G_LOG_LEVEL_INFO,
02605 (_("%s is also known as")),
02606 footprint_name,
02607 " JEDEC MO-205AC.");
02608 }
02609 return (EXIT_SUCCESS);
02610 }
02611 else if (!strcmp (footprint_name, "?BGA109C50P12X12_700X700X100"))
02612 {
02613 footprint_units = g_strdup ("mm");
02614 number_of_pins = 109;
02615 pin_pad_exceptions_string = g_strconcat
02616 (
02617 "D5,D6,D7,D8,D9,",
02618 "E4,E5,E6,E7,E8,E9,",
02619 "F4,F5,F6,F7,F8,F9,",
02620 "G4,G5,G6,G7,G8,G9,",
02621 "H4,H5,H6,H7,H8,H9,",
02622 "J4,J5,J6,J7,J8,J9,",
02623 NULL
02624 );
02625 package_body_width = 7.00;
02626 package_body_length = 7.00;
02627 package_body_height = 1.00;
02628 package_is_radial = FALSE;
02629 number_of_columns = 12;
02630 number_of_rows = 12;
02631 pitch_x = 0.50;
02632 pitch_y = 0.50;
02633 count_x = 0;
02634 count_y = 0;
02635 pad_shape = g_strdup ("circular pad");
02636 pin_drill_diameter = 0.0;
02637 pad_diameter = 0.25;
02638 pad_clearance = 0.075;
02639 pad_solder_mask_clearance = 0.075;
02640 fiducial = TRUE;
02641 fiducial_pad_diameter = 1.00;
02642 fiducial_pad_clearance = 1.00;
02643 fiducial_pad_solder_mask_clearance = 1.00;
02644 courtyard_length = 9.00;
02645 courtyard_width = 9.00;
02646 courtyard_line_width = 0.05;
02647 silkscreen_length = 7.00;
02648 silkscreen_width = 7.00;
02649 silkscreen_line_width = 0.20;
02650 g_free (footprint_name);
02651 footprint_name = g_strdup ("BGA109C50P12X12_700X700X100");
02652 return (EXIT_SUCCESS);
02653 }
02654 else if (!strcmp (footprint_name, "?BGA109C80P12X12_1000X1000X140"))
02655 {
02656 footprint_units = g_strdup ("mm");
02657 number_of_pins = 109;
02658 pin_pad_exceptions_string = g_strconcat
02659 (
02660 "D5,D6,D7,D8,D9,",
02661 "E4,E5,E6,E7,E8,E9,",
02662 "F4,F5,F6,F7,F8,F9,",
02663 "G4,G5,G6,G7,G8,G9,",
02664 "H4,H5,H6,H7,H8,H9,",
02665 "J4,J5,J6,J7,J8,J9,",
02666 NULL
02667 );
02668 package_body_width = 10.00;
02669 package_body_length = 10.00;
02670 package_body_height = 1.40;
02671 package_is_radial = FALSE;
02672 number_of_columns = 12;
02673 number_of_rows = 12;
02674 pitch_x = 0.80;
02675 pitch_y = 0.80;
02676 count_x = 0;
02677 count_y = 0;
02678 pad_shape = g_strdup ("circular pad");
02679 pin_drill_diameter = 0.0;
02680 pad_diameter = 0.45;
02681 pad_clearance = 0.075;
02682 pad_solder_mask_clearance = 0.075;
02683 fiducial = TRUE;
02684 fiducial_pad_diameter = 1.00;
02685 fiducial_pad_clearance = 1.00;
02686 fiducial_pad_solder_mask_clearance = 1.00;
02687 courtyard_length = 12.00;
02688 courtyard_width = 12.00;
02689 courtyard_line_width = 0.05;
02690 silkscreen_length = 10.00;
02691 silkscreen_width = 10.00;
02692 silkscreen_line_width = 0.20;
02693 g_free (footprint_name);
02694 footprint_name = g_strdup ("BGA109C80P12X12_1000X1000X140");
02695 if (verbose)
02696 {
02697 g_log ("", G_LOG_LEVEL_INFO,
02698 (_("%s is also known as")),
02699 footprint_name,
02700 " JEDEC MO-205AC.");
02701 }
02702 return (EXIT_SUCCESS);
02703 }
02704 else if (!strcmp (footprint_name, "?BGA10C50P3X4_150X200X63"))
02705 {
02706 footprint_units = g_strdup ("mm");
02707 number_of_pins = 10;
02708 pin_pad_exceptions_string = g_strconcat
02709 (
02710 "B2,",
02711 "C2,",
02712 NULL
02713 );
02714 package_body_length = 1.50;
02715 package_body_width = 2.00;
02716 package_body_height = 0.63;
02717 package_is_radial = FALSE;
02718 number_of_columns = 3;
02719 number_of_rows = 4;
02720 pitch_x = 0.50;
02721 pitch_y = 0.50;
02722 count_x = 0;
02723 count_y = 0;
02724 pad_shape = g_strdup ("circular pad");
02725 pin_drill_diameter = 0.0;
02726 pad_diameter = 0.25;
02727 pad_clearance = 0.075;
02728 pad_solder_mask_clearance = 0.075;
02729 fiducial = FALSE;
02730 fiducial_pad_diameter = 0.00;
02731 fiducial_pad_clearance = 0.00;
02732 fiducial_pad_solder_mask_clearance = 0.00;
02733 courtyard_length = 3.50;
02734 courtyard_width = 4.00;
02735 courtyard_line_width = 0.05;
02736 silkscreen_length = 2.00;
02737 silkscreen_width = 2.50;
02738 silkscreen_line_width = 0.20;
02739 g_free (footprint_name);
02740 footprint_name = g_strdup ("BGA10C50P3X4_150X200X63");
02741 return (EXIT_SUCCESS);
02742 }
02743 else if (!strcmp (footprint_name, "?BGA10C50P3X4_220X250X60"))
02744 {
02745 footprint_units = g_strdup ("mm");
02746 number_of_pins = 10;
02747 pin_pad_exceptions_string = g_strconcat
02748 (
02749 "B2,",
02750 "C2,",
02751 NULL
02752 );
02753 package_body_length = 2.20;
02754 package_body_width = 2.50;
02755 package_body_height = 0.60;
02756 package_is_radial = FALSE;
02757 number_of_columns = 3;
02758 number_of_rows = 4;
02759 pitch_x = 0.50;
02760 pitch_y = 0.50;
02761 count_x = 0;
02762 count_y = 0;
02763 pad_shape = g_strdup ("circular pad");
02764 pin_drill_diameter = 0.0;
02765 pad_diameter = 0.25;
02766 pad_clearance = 0.075;
02767 pad_solder_mask_clearance = 0.075;
02768 fiducial = FALSE;
02769 fiducial_pad_diameter = 0.00;
02770 fiducial_pad_clearance = 0.00;
02771 fiducial_pad_solder_mask_clearance = 0.00;
02772 courtyard_length = 4.20;
02773 courtyard_width = 4.50;
02774 courtyard_line_width = 0.05;
02775 silkscreen_length = 2.20;
02776 silkscreen_width = 2.50;
02777 silkscreen_line_width = 0.20;
02778 g_free (footprint_name);
02779 footprint_name = g_strdup ("BGA10C50P3X4_220X250X60");
02780 if (verbose)
02781 {
02782 g_log ("", G_LOG_LEVEL_INFO,
02783 (_("%s is also known as")),
02784 footprint_name,
02785 " JEDEC MO-211BD.");
02786 }
02787 return (EXIT_SUCCESS);
02788 }
02789 else if (!strcmp (footprint_name, "?BGA10C50P3X4_200X250X94"))
02790 {
02791 footprint_units = g_strdup ("mm");
02792 number_of_pins = 10;
02793 pin_pad_exceptions_string = g_strconcat
02794 (
02795 "B2,",
02796 "C2,",
02797 NULL
02798 );
02799 package_body_length = 2.00;
02800 package_body_width = 2.50;
02801 package_body_height = 0.94;
02802 package_is_radial = FALSE;
02803 number_of_columns = 3;
02804 number_of_rows = 4;
02805 pitch_x = 0.50;
02806 pitch_y = 0.50;
02807 count_x = 0;
02808 count_y = 0;
02809 pad_shape = g_strdup ("circular pad");
02810 pin_drill_diameter = 0.0;
02811 pad_diameter = 0.25;
02812 pad_clearance = 0.075;
02813 pad_solder_mask_clearance = 0.075;
02814 fiducial = FALSE;
02815 fiducial_pad_diameter = 0.00;
02816 fiducial_pad_clearance = 0.00;
02817 fiducial_pad_solder_mask_clearance = 0.00;
02818 courtyard_length = 4.20;
02819 courtyard_width = 4.50;
02820 courtyard_line_width = 0.05;
02821 silkscreen_length = 2.20;
02822 silkscreen_width = 2.50;
02823 silkscreen_line_width = 0.20;
02824 g_free (footprint_name);
02825 footprint_name = g_strdup ("BGA10C50P3X4_200X250X94");
02826 if (verbose)
02827 {
02828 g_log ("", G_LOG_LEVEL_INFO,
02829 (_("%s is also known as")),
02830 footprint_name,
02831 " JEDEC MO-211BD.");
02832 }
02833 return (EXIT_SUCCESS);
02834 }
02835 else if (!strcmp (footprint_name, "?BGA10N50P3X4_200X250X94"))
02836 {
02837 footprint_units = g_strdup ("mm");
02838 number_of_pins = 10;
02839 pin_pad_exceptions_string = g_strconcat
02840 (
02841 "B2,",
02842 "C2,",
02843 NULL
02844 );
02845 package_body_length = 2.00;
02846 package_body_width = 2.50;
02847 package_body_height = 0.94;
02848 package_is_radial = FALSE;
02849 number_of_columns = 3;
02850 number_of_rows = 4;
02851 pitch_x = 0.50;
02852 pitch_y = 0.50;
02853 count_x = 0;
02854 count_y = 0;
02855 pad_shape = g_strdup ("circular pad");
02856 pin_drill_diameter = 0.0;
02857 pad_diameter = 0.21;
02858 pad_clearance = 0.075;
02859 pad_solder_mask_clearance = 0.075;
02860 fiducial = FALSE;
02861 fiducial_pad_diameter = 0.00;
02862 fiducial_pad_clearance = 0.00;
02863 fiducial_pad_solder_mask_clearance = 0.00;
02864 courtyard_length = 3.00;
02865 courtyard_width = 3.50;
02866 courtyard_line_width = 0.05;
02867 silkscreen_length = 2.00;
02868 silkscreen_width = 2.50;
02869 silkscreen_line_width = 0.20;
02870 g_free (footprint_name);
02871 footprint_name = g_strdup ("BGA10N50P3X4_200X250X94");
02872 if (verbose)
02873 {
02874 g_log ("", G_LOG_LEVEL_INFO,
02875 (_("%s is also known as")),
02876 footprint_name,
02877 " JEDEC MO-211BC.");
02878 }
02879 return (EXIT_SUCCESS);
02880 }
02881 else if (!strcmp (footprint_name, "?BGA111C80P12X13_1000X1100X140"))
02882 {
02883 footprint_units = g_strdup ("mm");
02884 number_of_pins = 111;
02885 pin_pad_exceptions_string = g_strconcat
02886 (
02887 "A1,A3,A4,A5,A6,A7,A8,A9,A10",
02888 "D1,D2,D11,D12,",
02889 "E1,E2,E11,E12,",
02890 "F1,F2,F11,F12,",
02891 "G1,G2,G11,G12,",
02892 "H1,H2,H11,H12,",
02893 "J1,J2,J11,J12,",
02894 "K1,K2,K11,K12,",
02895 "N3,N4,N5,N6,N7,N8,N9,N10",
02896 NULL
02897 );
02898 package_body_length = 10.00;
02899 package_body_width = 11.00;
02900 package_body_height = 1.40;
02901 package_is_radial = FALSE;
02902 number_of_columns = 12;
02903 number_of_rows = 13;
02904 pitch_x = 0.80;
02905 pitch_y = 0.80;
02906 count_x = 0;
02907 count_y = 0;
02908 pad_shape = g_strdup ("circular pad");
02909 pin_drill_diameter = 0.0;
02910 pad_diameter = 0.40;
02911 pad_clearance = 0.075;
02912 pad_solder_mask_clearance = 0.075;
02913 fiducial = TRUE;
02914 fiducial_pad_diameter = 1.00;
02915 fiducial_pad_clearance = 1.00;
02916 fiducial_pad_solder_mask_clearance = 1.00;
02917 courtyard_length = 12.00;
02918 courtyard_width = 13.00;
02919 courtyard_line_width = 0.05;
02920 silkscreen_length = 10.00;
02921 silkscreen_width = 11.00;
02922 silkscreen_line_width = 0.20;
02923 g_free (footprint_name);
02924 footprint_name = g_strdup ("BGA111C80P12X13_1000X1100X140");
02925 return (EXIT_SUCCESS);
02926 }
02927 else if (!strcmp (footprint_name, "?BGA111C80P12X13_1100X1100X140"))
02928 {
02929 footprint_units = g_strdup ("mm");
02930 number_of_pins = 111;
02931 pin_pad_exceptions_string = g_strconcat
02932 (
02933 "A1,A3,A4,A5,A6,A7,A8,A9,A10",
02934 "D1,D2,D11,D12,",
02935 "E1,E2,E11,E12,",
02936 "F1,F2,F11,F12,",
02937 "G1,G2,G11,G12,",
02938 "H1,H2,H11,H12,",
02939 "J1,J2,J11,J12,",
02940 "K1,K2,K11,K12,",
02941 "N3,N4,N5,N6,N7,N8,N9,N10",
02942 NULL
02943 );
02944 package_body_width = 11.00;
02945 package_body_length = 11.00;
02946 package_body_height = 1.40;
02947 package_is_radial = FALSE;
02948 number_of_columns = 12;
02949 number_of_rows = 13;
02950 pitch_x = 0.80;
02951 pitch_y = 0.80;
02952 count_x = 0;
02953 count_y = 0;
02954 pad_shape = g_strdup ("circular pad");
02955 pin_drill_diameter = 0.0;
02956 pad_diameter = 0.40;
02957 pad_clearance = 0.075;
02958 pad_solder_mask_clearance = 0.075;
02959 fiducial = TRUE;
02960 fiducial_pad_diameter = 1.00;
02961 fiducial_pad_clearance = 1.00;
02962 fiducial_pad_solder_mask_clearance = 1.00;
02963 courtyard_length = 13.00;
02964 courtyard_width = 13.00;
02965 courtyard_line_width = 0.05;
02966 silkscreen_length = 11.00;
02967 silkscreen_width = 11.00;
02968 silkscreen_line_width = 0.20;
02969 g_free (footprint_name);
02970 footprint_name = g_strdup ("BGA111C80P12X13_1100X1100X140");
02971 return (EXIT_SUCCESS);
02972 }
02973 else if (!strcmp (footprint_name, "?BGA112C50P12X12_700X700X112"))
02974 {
02975 footprint_units = g_strdup ("mm");
02976 number_of_pins = 112;
02977 pin_pad_exceptions_string = g_strconcat
02978 (
02979 "D5,D6,D7,D8,",
02980 "E4,E5,E6,E7,E8,E9,",
02981 "E4,F5,F6,F7,F8,F9,",
02982 "G4,G5,G6,G7,G8,G9,",
02983 "H4,H5,H6,H7,H8,H9,",
02984 "J5,J6,J7,J8,",
02985 NULL
02986 );
02987 package_body_width = 7.00;
02988 package_body_length = 7.00;
02989 package_body_height = 1.12;
02990 package_is_radial = FALSE;
02991 number_of_columns = 12;
02992 number_of_rows = 12;
02993 pitch_x = 0.50;
02994 pitch_y = 0.50;
02995 count_x = 0;
02996 count_y = 0;
02997 pad_shape = g_strdup ("circular pad");
02998 pin_drill_diameter = 0.0;
02999 pad_diameter = 0.25;
03000 pad_clearance = 0.075;
03001 pad_solder_mask_clearance = 0.075;
03002 fiducial = TRUE;
03003 fiducial_pad_diameter = 1.00;
03004 fiducial_pad_clearance = 1.00;
03005 fiducial_pad_solder_mask_clearance = 1.00;
03006 courtyard_length = 9.00;
03007 courtyard_width = 9.00;
03008 courtyard_line_width = 0.05;
03009 silkscreen_length = 7.00;
03010 silkscreen_width = 7.00;
03011 silkscreen_line_width = 0.20;
03012 g_free (footprint_name);
03013 footprint_name = g_strdup ("BGA112C50P12X12_700X700X112");
03014 if (verbose)
03015 {
03016 g_log ("", G_LOG_LEVEL_INFO,
03017 (_("%s is also known as")),
03018 footprint_name,
03019 " JEDEC MO-195.");
03020 }
03021 return (EXIT_SUCCESS);
03022 }
03023 else if (!strcmp (footprint_name, "?BGA112C80P11X11_1000X1000X130"))
03024 {
03025 footprint_units = g_strdup ("mm");
03026 number_of_pins = 112;
03027 pin_pad_exceptions_string = g_strconcat
03028 (
03029 "E5,E6,E7,",
03030 "F5,F6,F7,",
03031 "G5,G6,G7,",
03032 NULL
03033 );
03034 package_body_width = 10.00;
03035 package_body_length = 10.00;
03036 package_body_height = 1.30;
03037 package_is_radial = FALSE;
03038 number_of_columns = 11;
03039 number_of_rows = 11;
03040 pitch_x = 0.80;
03041 pitch_y = 0.80;
03042 count_x = 0;
03043 count_y = 0;
03044 pad_shape = g_strdup ("circular pad");
03045 pin_drill_diameter = 0.0;
03046 pad_diameter = 0.35;
03047 pad_clearance = 0.075;
03048 pad_solder_mask_clearance = 0.075;
03049 fiducial = TRUE;
03050 fiducial_pad_diameter = 1.00;
03051 fiducial_pad_clearance = 1.00;
03052 fiducial_pad_solder_mask_clearance = 1.00;
03053 courtyard_length = 12.00;
03054 courtyard_width = 12.00;
03055 courtyard_line_width = 0.05;
03056 silkscreen_length = 10.00;
03057 silkscreen_width = 10.00;
03058 silkscreen_line_width = 0.20;
03059 g_free (footprint_name);
03060 footprint_name = g_strdup ("BGA112C80P11X11_1000X1000X130");
03061 return (EXIT_SUCCESS);
03062 }
03063 else if (!strcmp (footprint_name, "?BGA1148C100P34X34_3500X3500X340"))
03064 {
03065 footprint_units = g_strdup ("mm");
03066 number_of_pins = 1148;
03067 pin_pad_exceptions_string = g_strconcat
03068 (
03069 "A1,A34,",
03070 "P14,P21,",
03071 "AA14,AA21,",
03072 "AP1,AP34,",
03073 NULL
03074 );
03075 package_body_width = 35.00;
03076 package_body_length = 35.00;
03077 package_body_height = 3.40;
03078 package_is_radial = FALSE;
03079 number_of_columns = 34;
03080 number_of_rows = 34;
03081 pitch_x = 1.00;
03082 pitch_y = 1.00;
03083 count_x = 0;
03084 count_y = 0;
03085 pad_shape = g_strdup ("circular pad");
03086 pin_drill_diameter = 0.0;
03087 pad_diameter = 0.50;
03088 pad_clearance = 0.075;
03089 pad_solder_mask_clearance = 0.075;
03090 fiducial = FALSE;
03091 fiducial_pad_diameter = 0.00;
03092 fiducial_pad_clearance = 0.00;
03093 fiducial_pad_solder_mask_clearance = 0.00;
03094 courtyard_length = 39.00;
03095 courtyard_width = 39.00;
03096 courtyard_line_width = 0.05;
03097 silkscreen_length = 35.00;
03098 silkscreen_width = 35.00;
03099 silkscreen_line_width = 0.20;
03100 g_free (footprint_name);
03101 footprint_name = g_strdup ("BGA1148C100P34X34_3500X3500X340");
03102 if (verbose)
03103 {
03104 g_log ("", G_LOG_LEVEL_INFO,
03105 (_("%s is also known as")),
03106 footprint_name,
03107 " JEDEC MS-034AAR-1.");
03108 }
03109 return (EXIT_SUCCESS);
03110 }
03111 else if (!strcmp (footprint_name, "?BGA114C80P6X19_550X1600X140"))
03112 {
03113 footprint_units = g_strdup ("mm");
03114 number_of_pins = 114;
03115 pin_pad_exceptions_string = g_strdup ("");
03116 package_body_length = 5.50;
03117 package_body_width = 16.00;
03118 package_body_height = 1.40;
03119 package_is_radial = FALSE;
03120 number_of_columns = 6;
03121 number_of_rows = 19;
03122 pitch_x = 0.80;
03123 pitch_y = 0.80;
03124 count_x = 0;
03125 count_y = 0;
03126 pad_shape = g_strdup ("circular pad");
03127 pin_drill_diameter = 0.0;
03128 pad_diameter = 0.45;
03129 pad_clearance = 0.075;
03130 pad_solder_mask_clearance = 0.075;
03131 fiducial = TRUE;
03132 fiducial_pad_diameter = 1.00;
03133 fiducial_pad_clearance = 1.00;
03134 fiducial_pad_solder_mask_clearance = 1.00;
03135 courtyard_length = 7.50;
03136 courtyard_width = 18.00;
03137 courtyard_line_width = 0.05;
03138 silkscreen_length = 5.50;
03139 silkscreen_width = 16.00;
03140 silkscreen_line_width = 0.20;
03141 g_free (footprint_name);
03142 footprint_name = g_strdup ("BGA114C80P6X19_550X1600X140");
03143 return (EXIT_SUCCESS);
03144 }
03145 else if (!strcmp (footprint_name, "?BGA114C80P6X19_550X1600X150"))
03146 {
03147 footprint_units = g_strdup ("mm");
03148 number_of_pins = 114;
03149 pin_pad_exceptions_string = g_strdup ("");
03150 package_body_length = 5.50;
03151 package_body_width = 16.00;
03152 package_body_height = 1.50;
03153 package_is_radial = FALSE;
03154 number_of_columns = 6;
03155 number_of_rows = 19;
03156 pitch_x = 0.80;
03157 pitch_y = 0.80;
03158 count_x = 0;
03159 count_y = 0;
03160 pad_shape = g_strdup ("circular pad");
03161 pin_drill_diameter = 0.0;
03162 pad_diameter = 0.40;
03163 pad_clearance = 0.075;
03164 pad_solder_mask_clearance = 0.075;
03165 fiducial = TRUE;
03166 fiducial_pad_diameter = 1.00;
03167 fiducial_pad_clearance = 1.00;
03168 fiducial_pad_solder_mask_clearance = 1.00;
03169 courtyard_length = 7.50;
03170 courtyard_width = 18.00;
03171 courtyard_line_width = 0.05;
03172 silkscreen_length = 5.50;
03173 silkscreen_width = 16.00;
03174 silkscreen_line_width = 0.20;
03175 g_free (footprint_name);
03176 footprint_name = g_strdup ("BGA114C80P6X19_550X1600X150");
03177 return (EXIT_SUCCESS);
03178 }
03179 else if (!strcmp (footprint_name, "?BGA1152C100P34X34_3500X3500X244"))
03180 {
03181 footprint_units = g_strdup ("mm");
03182 number_of_pins = 1148;
03183 pin_pad_exceptions_string = g_strconcat
03184 (
03185 "A1,A34,",
03186 "AP1,AP34,",
03187 NULL
03188 );
03189 package_body_width = 35.00;
03190 package_body_length = 35.00;
03191 package_body_height = 2.44;
03192 package_is_radial = FALSE;
03193 number_of_columns = 34;
03194 number_of_rows = 34;
03195 pitch_x = 1.00;
03196 pitch_y = 1.00;
03197 count_x = 0;
03198 count_y = 0;
03199 pad_shape = g_strdup ("circular pad");
03200 pin_drill_diameter = 0.0;
03201 pad_diameter = 0.50;
03202 pad_clearance = 0.075;
03203 pad_solder_mask_clearance = 0.075;
03204 fiducial = FALSE;
03205 fiducial_pad_diameter = 0.00;
03206 fiducial_pad_clearance = 0.00;
03207 fiducial_pad_solder_mask_clearance = 0.00;
03208 courtyard_length = 39.00;
03209 courtyard_width = 39.00;
03210 courtyard_line_width = 0.05;
03211 silkscreen_length = 35.00;
03212 silkscreen_width = 35.00;
03213 silkscreen_line_width = 0.20;
03214 g_free (footprint_name);
03215 footprint_name = g_strdup ("BGA1152C100P34X34_3500X3500X244");
03216 if (verbose)
03217 {
03218 g_log ("", G_LOG_LEVEL_INFO,
03219 (_("%s is also known as")),
03220 footprint_name,
03221 " JEDEC MS-034AAR-1.");
03222 }
03223 return (EXIT_SUCCESS);
03224 }
03225 else if (!strcmp (footprint_name, "?BGA1152C100P34X34_3500X3500X332"))
03226 {
03227 footprint_units = g_strdup ("mm");
03228 number_of_pins = 1148;
03229 pin_pad_exceptions_string = g_strconcat
03230 (
03231 "A1,A34,",
03232 "AP1,AP34,",
03233 NULL
03234 );
03235 package_body_width = 35.00;
03236 package_body_length = 35.00;
03237 package_body_height = 3.32;
03238 package_is_radial = FALSE;
03239 number_of_columns = 34;
03240 number_of_rows = 34;
03241 pitch_x = 1.00;
03242 pitch_y = 1.00;
03243 count_x = 0;
03244 count_y = 0;
03245 pad_shape = g_strdup ("circular pad");
03246 pin_drill_diameter = 0.0;
03247 pad_diameter = 0.50;
03248 pad_clearance = 0.075;
03249 pad_solder_mask_clearance = 0.075;
03250 fiducial = FALSE;
03251 fiducial_pad_diameter = 0.00;
03252 fiducial_pad_clearance = 0.00;
03253 fiducial_pad_solder_mask_clearance = 0.00;
03254 courtyard_length = 39.00;
03255 courtyard_width = 39.00;
03256 courtyard_line_width = 0.05;
03257 silkscreen_length = 35.00;
03258 silkscreen_width = 35.00;
03259 silkscreen_line_width = 0.20;
03260 g_free (footprint_name);
03261 footprint_name = g_strdup ("BGA1152C100P34X34_3500X3500X332");
03262 return (EXIT_SUCCESS);
03263 }
03264 else if (!strcmp (footprint_name, "?BGA1152C100P34X34_3500X3500X340"))
03265 {
03266 footprint_units = g_strdup ("mm");
03267 number_of_pins = 1148;
03268 pin_pad_exceptions_string = g_strconcat
03269 (
03270 "A1,A34,",
03271 "AP1,AP34,",
03272 NULL
03273 );
03274 package_body_width = 35.00;
03275 package_body_length = 35.00;
03276 package_body_height = 3.40;
03277 package_is_radial = FALSE;
03278 number_of_columns = 34;
03279 number_of_rows = 34;
03280 pitch_x = 1.00;
03281 pitch_y = 1.00;
03282 count_x = 0;
03283 count_y = 0;
03284 pad_shape = g_strdup ("circular pad");
03285 pin_drill_diameter = 0.0;
03286 pad_diameter = 0.50;
03287 pad_clearance = 0.075;
03288 pad_solder_mask_clearance = 0.075;
03289 fiducial = FALSE;
03290 fiducial_pad_diameter = 0.00;
03291 fiducial_pad_clearance = 0.00;
03292 fiducial_pad_solder_mask_clearance = 0.00;
03293 courtyard_length = 37.00;
03294 courtyard_width = 37.00;
03295 courtyard_line_width = 0.05;
03296 silkscreen_length = 35.00;
03297 silkscreen_width = 35.00;
03298 silkscreen_line_width = 0.20;
03299 g_free (footprint_name);
03300 footprint_name = g_strdup ("BGA1152C100P34X34_3500X3500X340");
03301 if (verbose)
03302 {
03303 g_log ("", G_LOG_LEVEL_INFO,
03304 (_("%s is also known as")),
03305 footprint_name,
03306 " JEDEC MS-034AAR-1.");
03307 }
03308 return (EXIT_SUCCESS);
03309 }
03310 else if (!strcmp (footprint_name, "?BGA1152C100P34X34_3500X3500X350"))
03311 {
03312 footprint_units = g_strdup ("mm");
03313 number_of_pins = 1148;
03314 pin_pad_exceptions_string = g_strconcat
03315 (
03316 "A1,A34,",
03317 "AP1,AP34,",
03318 NULL
03319 );
03320 package_body_width = 35.00;
03321 package_body_length = 35.00;
03322 package_body_height = 3.50;
03323 package_is_radial = FALSE;
03324 number_of_columns = 34;
03325 number_of_rows = 34;
03326 pitch_x = 1.00;
03327 pitch_y = 1.00;
03328 count_x = 0;
03329 count_y = 0;
03330 pad_shape = g_strdup ("circular pad");
03331 pin_drill_diameter = 0.0;
03332 pad_diameter = 0.50;
03333 pad_clearance = 0.075;
03334 pad_solder_mask_clearance = 0.075;
03335 fiducial = FALSE;
03336 fiducial_pad_diameter = 0.00;
03337 fiducial_pad_clearance = 0.00;
03338 fiducial_pad_solder_mask_clearance = 0.00;
03339 courtyard_length = 39.00;
03340 courtyard_width = 39.00;
03341 courtyard_line_width = 0.05;
03342 silkscreen_length = 35.00;
03343 silkscreen_width = 35.00;
03344 silkscreen_line_width = 0.20;
03345 g_free (footprint_name);
03346 footprint_name = g_strdup ("BGA1152C100P34X34_3500X3500X350");
03347 if (verbose)
03348 {
03349 g_log ("", G_LOG_LEVEL_INFO,
03350 (_("%s is also known as")),
03351 footprint_name,
03352 " JEDEC MS-034AAR-1.");
03353 }
03354 return (EXIT_SUCCESS);
03355 }
03356 else if (!strcmp (footprint_name, "?BGA1156C100P34X34_3500X3500X260"))
03357 {
03358 footprint_units = g_strdup ("mm");
03359 number_of_pins = 1156;
03360 pin_pad_exceptions_string = g_strdup ("");
03361 package_body_width = 35.00;
03362 package_body_length = 35.00;
03363 package_body_height = 2.60;
03364 package_is_radial = FALSE;
03365 number_of_columns = 34;
03366 number_of_rows = 34;
03367 pitch_x = 1.00;
03368 pitch_y = 1.00;
03369 count_x = 0;
03370 count_y = 0;
03371 pad_shape = g_strdup ("circular pad");
03372 pin_drill_diameter = 0.0;
03373 pad_diameter = 0.50;
03374 pad_clearance = 0.075;
03375 pad_solder_mask_clearance = 0.075;
03376 fiducial = FALSE;
03377 fiducial_pad_diameter = 0.00;
03378 fiducial_pad_clearance = 0.00;
03379 fiducial_pad_solder_mask_clearance = 0.00;
03380 courtyard_length = 39.00;
03381 courtyard_width = 39.00;
03382 courtyard_line_width = 0.05;
03383 silkscreen_length = 35.00;
03384 silkscreen_width = 35.00;
03385 silkscreen_line_width = 0.20;
03386 g_free (footprint_name);
03387 footprint_name = g_strdup ("BGA1156C100P34X34_3500X3500X260");
03388 if (verbose)
03389 {
03390 g_log ("", G_LOG_LEVEL_INFO,
03391 (_("%s is also known as")),
03392 footprint_name,
03393 " JEDEC MS-034AAR-1.");
03394 }
03395 return (EXIT_SUCCESS);
03396 }
03397 else if (!strcmp (footprint_name, "?BGA1156C100P34X34_3500X3500X311"))
03398 {
03399 footprint_units = g_strdup ("mm");
03400 number_of_pins = 1156;
03401 pin_pad_exceptions_string = g_strdup ("");
03402 package_body_width = 35.00;
03403 package_body_length = 35.00;
03404 package_body_height = 3.11;
03405 package_is_radial = FALSE;
03406 number_of_columns = 34;
03407 number_of_rows = 34;
03408 pitch_x = 1.00;
03409 pitch_y = 1.00;
03410 count_x = 0;
03411 count_y = 0;
03412 pad_shape = g_strdup ("circular pad");
03413 pin_drill_diameter = 0.0;
03414 pad_diameter = 0.50;
03415 pad_clearance = 0.075;
03416 pad_solder_mask_clearance = 0.075;
03417 fiducial = FALSE;
03418 fiducial_pad_diameter = 0.00;
03419 fiducial_pad_clearance = 0.00;
03420 fiducial_pad_solder_mask_clearance = 0.00;
03421 courtyard_length = 39.00;
03422 courtyard_width = 39.00;
03423 courtyard_line_width = 0.05;
03424 silkscreen_length = 35.00;
03425 silkscreen_width = 35.00;
03426 silkscreen_line_width = 0.20;
03427 g_free (footprint_name);
03428 footprint_name = g_strdup ("BGA1156C100P34X34_3500X3500X311");
03429 if (verbose)
03430 {
03431 g_log ("", G_LOG_LEVEL_INFO,
03432 (_("%s is also known as")),
03433 footprint_name,
03434 " JEDEC MS-034AAR-1.");
03435 }
03436 return (EXIT_SUCCESS);
03437 }
03438 else if (!strcmp (footprint_name, "?BGA1156C100P34X34_3500X3500X350"))
03439 {
03440 footprint_units = g_strdup ("mm");
03441 number_of_pins = 1156;
03442 pin_pad_exceptions_string = g_strdup ("");
03443 package_body_width = 35.00;
03444 package_body_length = 35.00;
03445 package_body_height = 3.50;
03446 package_is_radial = FALSE;
03447 number_of_columns = 34;
03448 number_of_rows = 34;
03449 pitch_x = 1.00;
03450 pitch_y = 1.00;
03451 count_x = 0;
03452 count_y = 0;
03453 pad_shape = g_strdup ("circular pad");
03454 pin_drill_diameter = 0.0;
03455 pad_diameter = 0.45;
03456 pad_clearance = 0.15;
03457 pad_solder_mask_clearance = 0.15;
03458 fiducial = FALSE;
03459 fiducial_pad_diameter = 0.00;
03460 fiducial_pad_clearance = 0.00;
03461 fiducial_pad_solder_mask_clearance = 0.00;
03462 courtyard_length = 37.00;
03463 courtyard_width = 37.00;
03464 silkscreen_length = 35.00;
03465 silkscreen_width = 35.00;
03466 g_free (footprint_name);
03467 footprint_name = g_strdup ("BGA1156C100P34X34_3500X3500X350");
03468 return (EXIT_SUCCESS);
03469 }
03470 else if (!strcmp (footprint_name, "?BGA1156C100P34X34_3500X3500X380"))
03471 {
03472 footprint_units = g_strdup ("mm");
03473 number_of_pins = 1156;
03474 pin_pad_exceptions_string = g_strdup ("");
03475 package_body_width = 35.00;
03476 package_body_length = 35.00;
03477 package_body_height = 3.80;
03478 package_is_radial = FALSE;
03479 number_of_columns = 34;
03480 number_of_rows = 34;
03481 pitch_x = 1.00;
03482 pitch_y = 1.00;
03483 count_x = 0;
03484 count_y = 0;
03485 pad_shape = g_strdup ("circular pad");
03486 pin_drill_diameter = 0.0;
03487 pad_diameter = 0.50;
03488 pad_clearance = 0.075;
03489 pad_solder_mask_clearance = 0.075;
03490 fiducial = FALSE;
03491 fiducial_pad_diameter = 0.00;
03492 fiducial_pad_clearance = 0.00;
03493 fiducial_pad_solder_mask_clearance = 0.00;
03494 courtyard_length = 39.00;
03495 courtyard_width = 39.00;
03496 courtyard_line_width = 0.05;
03497 silkscreen_length = 35.00;
03498 silkscreen_width = 35.00;
03499 silkscreen_line_width = 0.20;
03500 g_free (footprint_name);
03501 footprint_name = g_strdup ("BGA1156C100P34X34_3500X3500X380");
03502 return (EXIT_SUCCESS);
03503 }
03504 else if (!strcmp (footprint_name, "?BGA1156C100P34X34_3500X3500X400"))
03505 {
03506 footprint_units = g_strdup ("mm");
03507 number_of_pins = 1156;
03508 pin_pad_exceptions_string = g_strdup ("");
03509 package_body_width = 35.00;
03510 package_body_length = 35.00;
03511 package_body_height = 4.00;
03512 package_is_radial = FALSE;
03513 number_of_columns = 34;
03514 number_of_rows = 34;
03515 pitch_x = 1.00;
03516 pitch_y = 1.00;
03517 count_x = 0;
03518 count_y = 0;
03519 pad_shape = g_strdup ("circular pad");
03520 pin_drill_diameter = 0.0;
03521 pad_diameter = 0.50;
03522 pad_clearance = 0.075;
03523 pad_solder_mask_clearance = 0.075;
03524 fiducial = FALSE;
03525 fiducial_pad_diameter = 0.00;
03526 fiducial_pad_clearance = 0.00;
03527 fiducial_pad_solder_mask_clearance = 0.00;
03528 courtyard_length = 39.00;
03529 courtyard_width = 39.00;
03530 courtyard_line_width = 0.05;
03531 silkscreen_length = 35.00;
03532 silkscreen_width = 35.00;
03533 silkscreen_line_width = 0.20;
03534 g_free (footprint_name);
03535 footprint_name = g_strdup ("BGA1156C100P34X34_3500X3500X400");
03536 return (EXIT_SUCCESS);
03537 }
03538 else if (!strcmp (footprint_name, "?BGA1156C100P34X34_3600X3600X400"))
03539 {
03540 footprint_units = g_strdup ("mm");
03541 number_of_pins = 1156;
03542 pin_pad_exceptions_string = g_strdup ("");
03543 package_body_width = 36.00;
03544 package_body_length = 36.00;
03545 package_body_height = 4.50;
03546 package_is_radial = FALSE;
03547 number_of_columns = 34;
03548 number_of_rows = 34;
03549 pitch_x = 1.00;
03550 pitch_y = 1.00;
03551 count_x = 0;
03552 count_y = 0;
03553 pad_shape = g_strdup ("circular pad");
03554 pin_drill_diameter = 0.0;
03555 pad_diameter = 0.50;
03556 pad_clearance = 0.075;
03557 pad_solder_mask_clearance = 0.075;
03558 fiducial = FALSE;
03559 fiducial_pad_diameter = 0.00;
03560 fiducial_pad_clearance = 0.00;
03561 fiducial_pad_solder_mask_clearance = 0.00;
03562 courtyard_length = 40.00;
03563 courtyard_width = 40.00;
03564 courtyard_line_width = 0.05;
03565 silkscreen_length = 36.00;
03566 silkscreen_width = 36.00;
03567 silkscreen_line_width = 0.20;
03568 g_free (footprint_name);
03569 footprint_name = g_strdup ("BGA1156C100P34X34_3600X3600X450");
03570 return (EXIT_SUCCESS);
03571 }
03572 else if (!strcmp (footprint_name, "?BGA115C80P10X14_800X1200X140"))
03573 {
03574 footprint_units = g_strdup ("mm");
03575 number_of_pins = 115;
03576 pin_pad_exceptions_string = g_strconcat
03577 (
03578 "A3,A4,A5,A6,A7,A8,",
03579 "B3,B4,B5,B6,B7,B8,",
03580 "C1,",
03581 "N3,N4,N5,N6,N7,N8,",
03582 "P3,P4,P5,P6,P7,P8,",
03583 NULL
03584 );
03585 package_body_length = 8.00;
03586 package_body_width = 12.00;
03587 package_body_height = 1.40;
03588 package_is_radial = FALSE;
03589 number_of_columns = 10;
03590 number_of_rows = 14;
03591 pitch_x = 0.80;
03592 pitch_y = 0.80;
03593 count_x = 0;
03594 count_y = 0;
03595 pad_shape = g_strdup ("circular pad");
03596 pin_drill_diameter = 0.0;
03597 pad_diameter = 0.40;
03598 pad_clearance = 0.075;
03599 pad_solder_mask_clearance = 0.075;
03600 fiducial = TRUE;
03601 fiducial_pad_diameter = 1.00;
03602 fiducial_pad_clearance = 1.00;
03603 fiducial_pad_solder_mask_clearance = 1.00;
03604 courtyard_length = 10.00;
03605 courtyard_width = 14.00;
03606 courtyard_line_width = 0.05;
03607 silkscreen_length = 8.30;
03608 silkscreen_width = 12.00;
03609 silkscreen_line_width = 0.20;
03610 g_free (footprint_name);
03611 footprint_name = g_strdup ("BGA115C80P10X14_800X1200X140");
03612 return (EXIT_SUCCESS);
03613 }
03614 else if (!strcmp (footprint_name, "?BGA1160C100P39X39_4000X4000X245"))
03615 {
03616 footprint_units = g_strdup ("mm");
03617 number_of_pins = 1160;
03618 pin_pad_exceptions_string = g_strconcat
03619 (
03620 "A1,",
03621 "K10,K11,K12,K13,K14,K15,K16,K17,K18,K19,",
03622 "K20,K21,K22,K23,K24,K25,K26,K27,K28,K29,K30,",
03623 "L10,L11,L12,L13,L14,L15,L16,L17,L18,L19,",
03624 "L20,L21,L22,L23,L24,L25,L26,L27,L28,L29,L30,",
03625 "M10,M11,M12,M13,M14,M15,M16,M17,M18,M19,",
03626 "M20,M21,M22,M23,M24,M25,M26,M27,M28,M29,M30,",
03627 "N10,N11,N12,N13,N14,N15,N16,N17,N18,N19,",
03628 "N20,N21,N22,N23,N24,N25,N26,N27,N28,N29,N30,",
03629 "P10,P11,P12,P13,P14,P15,P16,P17,P18,P19,",
03630 "P20,P21,P22,P23,P24,P25,P26,P27,P28,P29,P30,",
03631 "R10,R11,R12,R13,R14,R15,R16,R17,R18,R19,",
03632 "R20,R21,R22,R23,R24,R25,R26,R27,R28,R29,R30,",
03633 "T10,T11,T12,T13,T14,T15,T25,T26,T27,T28,T29,T30,",
03634 "U10,U11,U12,U13,U14,U15,U25,U26,U27,U28,U29,U30,",
03635 "V10,V11,V12,V13,V14,V15,V25,V26,V27,V28,V29,V30,",
03636 "W10,W11,W12,W13,W14,W15,W25,W26,W27,W28,W29,W30,",
03637 "Y10,Y11,Y12,Y13,Y14,Y15,Y25,Y26,Y27,Y28,Y29,Y30,",
03638 "AA10,AA11,AA12,AA13,AA14,AA15,AA25,AA26,AA27,AA28,AA29,AA30,",
03639 "AB10,AB11,AB12,AB13,AB14,AB15,AB25,AB26,AB27,AB28,AB29,AB30,",
03640 "AC10,AC11,AC12,AC13,AC14,AC15,AC25,AC26,AC27,AC28,AC29,AC30,",
03641 "AD10,AD11,AD12,AD13,AD14,AD15,AD25,AD26,AD27,AD28,AD29,AD30,",
03642 "AE10,AE11,AE12,AE13,AE14,AE15,AE16,AE17,AE18,AE19,",
03643 "AE20,AE21,AE22,AE23,AE24,AE25,AE26,AE27,AE28,AE29,AE30,",
03644 "AF10,AF11,AF12,AF13,AF14,AF15,AF16,AF17,AF18,AF19,",
03645 "AF20,AF21,AF22,AF23,AF24,AF25,AF26,AF27,AF28,AF29,AF30,",
03646 "AG10,AG11,AG12,AG13,AG14,AG15,AG16,AG17,AG18,AG19,",
03647 "AG20,AG21,AG22,AG23,AG24,AG25,AG26,AG27,AG28,AG29,AG30,",
03648 "AH10,AH11,AH12,AH13,AH14,AH15,AH16,AH17,AH18,AH19,",
03649 "AH20,AH21,AH22,AH23,AH24,AH25,AH26,AH27,AH28,AH29,AH30,",
03650 "AJ10,AJ11,AJ12,AJ13,AJ14,AJ15,AJ16,AJ17,AJ18,AJ19,",
03651 "AJ20,AJ21,AJ22,AJ23,AJ24,AJ25,AJ26,AJ27,AJ28,AJ29,AJ30,",
03652 "AK10,AK11,AK12,AK13,AK14,AK15,AK16,AK17,AK18,AK19,",
03653 "AK20,AK21,AK22,AK23,AK24,AK25,AK26,AK27,AK28,AK29,AK30,",
03654 NULL
03655 );
03656 package_body_width = 40.00;
03657 package_body_length = 40.00;
03658 package_body_height = 2.45;
03659 package_is_radial = FALSE;
03660 number_of_columns = 39;
03661 number_of_rows = 39;
03662 pitch_x = 1.00;
03663 pitch_y = 1.00;
03664 count_x = 0;
03665 count_y = 0;
03666 pad_shape = g_strdup ("circular pad");
03667 pin_drill_diameter = 0.0;
03668 pad_diameter = 0.50;
03669 pad_clearance = 0.075;
03670 pad_solder_mask_clearance = 0.075;
03671 fiducial = FALSE;
03672 fiducial_pad_diameter = 0.00;
03673 fiducial_pad_clearance = 0.00;
03674 fiducial_pad_solder_mask_clearance = 0.00;
03675 courtyard_length = 44.00;
03676 courtyard_width = 44.00;
03677 courtyard_line_width = 0.05;
03678 silkscreen_length = 40.00;
03679 silkscreen_width = 40.00;
03680 silkscreen_line_width = 0.20;
03681 g_free (footprint_name);
03682 footprint_name = g_strdup ("BGA1160C100P39X39_4000X4000X245");
03683 if (verbose)
03684 {
03685 g_log ("", G_LOG_LEVEL_INFO,
03686 (_("%s is also known as")),
03687 footprint_name,
03688 " JEDEC MS-034.");
03689 }
03690 return (EXIT_SUCCESS);
03691 }
03692 else if (!strcmp (footprint_name, "?BGA1172C100P39X39_4000X4000X310"))
03693 {
03694 footprint_units = g_strdup ("mm");
03695 number_of_pins = 1172;
03696 pin_pad_exceptions_string = g_strconcat
03697 (
03698 "A1,A2,A3,A4,A5,A6,A7,A33,A34,A35,A36,A37,A38,A39,",
03699 "B1,B2,B3,B4,B5,B6,B34,B35,B36,B37,B38,B39,",
03700 "C1,C2,C3,C4,C5,C35,C36,C37,C38,C39,",
03701 "D1,D2,D3,D4,D36,D37,D38,D39,",
03702 "E1,E2,E3,E37,E38,E39,",
03703 "F1,F2,F38,F39,",
03704 "G1,G39,"
03705 "L12,L13,L14,L15,L16,L17,L18,L19,",
03706 "L20,L21,L22,L23,L24,L25,L26,L27,L28,",
03707 "M11,M12,M13,M14,M15,M16,M17,M18,M19,",
03708 "M20,M21,M22,M23,M24,M25,M26,M27,M28,M29,",
03709 "N11,N12,N13,N14,N15,N16,N17,N18,N19,",
03710 "N20,N21,N22,N23,N24,N25,N26,N27,N28,N29,",
03711 "P11,P12,P13,P14,P15,P16,P17,P18,P19,",
03712 "P20,P21,P22,P23,P24,P25,P26,P27,P28,P29,",
03713 "R11,R12,R13,R14,R15,R26,R27,R28,R29,",
03714 "T11,T12,T13,T14,T26,T27,T28,T29,",
03715 "U11,U12,U13,U14,U26,U27,U28,U29,",
03716 "V11,V12,V13,V14,V26,V27,V28,V29,",
03717 "W11,W12,W13,W14,W26,W27,W28,W29,",
03718 "Y11,Y12,Y13,Y14,Y26,Y27,Y28,Y29,",
03719 "AA11,AA12,AA13,AA14,AA26,AA27,AA28,AA29,",
03720 "AB11,AB12,AB13,AB14,AB26,AB27,AB28,AB29,",
03721 "AC11,AC12,AC13,AC14,AC26,AC27,AC28,AC29,",
03722 "AD11,AD12,AD13,AD14,AD26,AD27,AD28,AD29,",
03723 "AE11,AE12,AE13,AE14,AE26,AE27,AE28,AE29,",
03724 "AF11,AF12,AF13,AF14,AF15,AF16,AF17,AF18,AF19,",
03725 "AF20,AF21,AF22,AF23,AF24,AF25,AF26,AF27,AF28,AF29,",
03726 "AG11,AG12,AG13,AG14,AG15,AG16,AG17,AG18,AG19,",
03727 "AG20,AG21,AG22,AG23,AG24,AG25,AG26,AG27,AG28,AG29,",
03728 "AH11,AH12,AH13,AH14,AH15,AH16,AH17,AH18,AH19,",
03729 "AH20,AH21,AH22,AH23,AH24,AH25,AH26,AH27,AH28,AH29,",
03730 "AJ12,AJ13,AJ14,AJ15,AJ16,AJ17,AJ18,AJ19,",
03731 "AJ20,AJ21,AJ22,AJ23,AJ24,AJ25,AJ26,AJ27,AJ28,",
03732 "AN1,AN39,",
03733 "AP1,AP2,AK38,AK39,",
03734 "AR1,AR2,AR3,AR37,AR38,AR39,",
03735 "AT1,AT2,AT3,AT4,AT36,AT37,AT38,AT39,",
03736 "AU1,AU2,AU3,AU4,AU5,AU35,AU36,AU37,AU38,AU39,",
03737 "AV1,AV2,AV3,AV4,AV5,AV6,AV34,AV35,AV36,AV37,AV38,AV39,",
03738 "AW1,AW2,AW3,AW4,AW5,AW6,AW7,AW33,AW34,AW35,AW36,AW37,AW38,AW39,",
03739 NULL
03740 );
03741 package_body_width = 40.00;
03742 package_body_length = 40.00;
03743 package_body_height = 3.10;
03744 package_is_radial = FALSE;
03745 number_of_columns = 39;
03746 number_of_rows = 39;
03747 pitch_x = 1.00;
03748 pitch_y = 1.00;
03749 count_x = 0;
03750 count_y = 0;
03751 pad_shape = g_strdup ("circular pad");
03752 pin_drill_diameter = 0.0;
03753 pad_diameter = 0.50;
03754 pad_clearance = 0.075;
03755 pad_solder_mask_clearance = 0.075;
03756 fiducial = FALSE;
03757 fiducial_pad_diameter = 0.00;
03758 fiducial_pad_clearance = 0.00;
03759 fiducial_pad_solder_mask_clearance = 0.00;
03760 courtyard_length = 44.00;
03761 courtyard_width = 44.00;
03762 courtyard_line_width = 0.05;
03763 silkscreen_length = 40.00;
03764 silkscreen_width = 40.00;
03765 silkscreen_line_width = 0.20;
03766 g_free (footprint_name);
03767 footprint_name = g_strdup ("BGA1172C100P39X39_4000X4000X310");
03768 if (verbose)
03769 {
03770 g_log ("", G_LOG_LEVEL_INFO,
03771 (_("%s is also known as")), footprint_name,
03772 " JEDEC MS-034.");
03773 }
03774 return (EXIT_SUCCESS);
03775 }
03776 else if (!strcmp (footprint_name, "?BGA119C127P7X17_1400X2200X196"))
03777 {
03778 footprint_units = g_strdup ("mm");
03779 number_of_pins = 119;
03780 pin_pad_exceptions_string = g_strdup ("");
03781 package_body_length = 14.00;
03782 package_body_width = 22.00;
03783 package_body_height = 1.96;
03784 package_is_radial = FALSE;
03785 number_of_columns = 7;
03786 number_of_rows = 17;
03787 pitch_x = 1.27;
03788 pitch_y = 1.27;
03789 count_x = 0;
03790 count_y = 0;
03791 pad_shape = g_strdup ("circular pad");
03792 pin_drill_diameter = 0.0;
03793 pad_diameter = 0.60;
03794 pad_clearance = 0.075;
03795 pad_solder_mask_clearance = 0.075;
03796 fiducial = FALSE;
03797 fiducial_pad_diameter = 0.00;
03798 fiducial_pad_clearance = 0.00;
03799 fiducial_pad_solder_mask_clearance = 0.00;
03800 courtyard_length = 18.00;
03801 courtyard_width = 26.00;
03802 courtyard_line_width = 0.05;
03803 silkscreen_length = 14.00;
03804 silkscreen_width = 22.00;
03805 silkscreen_line_width = 0.20;
03806 g_free (footprint_name);
03807 footprint_name = g_strdup ("BGA119C127P7X17_1400X2200X196");
03808 return (EXIT_SUCCESS);
03809 }
03810 else if (!strcmp (footprint_name, "?BGA119C127P7X17_1400X2200X221"))
03811 {
03812 footprint_units = g_strdup ("mm");
03813 number_of_pins = 119;
03814 pin_pad_exceptions_string = g_strdup ("");
03815 package_body_length = 14.00;
03816 package_body_width = 22.00;
03817 package_body_height = 2.21;
03818 package_is_radial = FALSE;
03819 number_of_columns = 7;
03820 number_of_rows = 17;
03821 pitch_x = 1.27;
03822 pitch_y = 1.27;
03823 count_x = 0;
03824 count_y = 0;
03825 pad_shape = g_strdup ("circular pad");
03826 pin_drill_diameter = 0.0;
03827 pad_diameter = 0.60;
03828 pad_clearance = 0.075;
03829 pad_solder_mask_clearance = 0.075;
03830 fiducial = FALSE;
03831 fiducial_pad_diameter = 0.00;
03832 fiducial_pad_clearance = 0.00;
03833 fiducial_pad_solder_mask_clearance = 0.00;
03834 courtyard_length = 18.00;
03835 courtyard_width = 26.00;
03836 courtyard_line_width = 0.05;
03837 silkscreen_length = 14.00;
03838 silkscreen_width = 22.00;
03839 silkscreen_line_width = 0.20;
03840 g_free (footprint_name);
03841 footprint_name = g_strdup ("BGA119C127P7X17_1400X2200X221");
03842 return (EXIT_SUCCESS);
03843 }
03844 else if (!strcmp (footprint_name, "?BGA119C127P7X17_1400X2200X240"))
03845 {
03846 footprint_units = g_strdup ("mm");
03847 number_of_pins = 119;
03848 pin_pad_exceptions_string = g_strdup ("");
03849 package_body_length = 14.00;
03850 package_body_width = 22.00;
03851 package_body_height = 2.40;
03852 package_is_radial = FALSE;
03853 number_of_columns = 7;
03854 number_of_rows = 17;
03855 pitch_x = 1.27;
03856 pitch_y = 1.27;
03857 count_x = 0;
03858 count_y = 0;
03859 pad_shape = g_strdup ("circular pad");
03860 pin_drill_diameter = 0.0;
03861 pad_diameter = 0.60;
03862 pad_clearance = 0.075;
03863 pad_solder_mask_clearance = 0.075;
03864 fiducial = FALSE;
03865 fiducial_pad_diameter = 0.00;
03866 fiducial_pad_clearance = 0.00;
03867 fiducial_pad_solder_mask_clearance = 0.00;
03868 courtyard_length = 18.00;
03869 courtyard_width = 26.00;
03870 courtyard_line_width = 0.05;
03871 silkscreen_length = 14.00;
03872 silkscreen_width = 22.00;
03873 silkscreen_line_width = 0.20;
03874 g_free (footprint_name);
03875 footprint_name = g_strdup ("BGA119C127P7X17_1400X2200X240");
03876 return (EXIT_SUCCESS);
03877 }
03878 else if (!strcmp (footprint_name, "?BGA120C50P11X11_600X600X100"))
03879 {
03880 footprint_units = g_strdup ("mm");
03881 number_of_pins = 120;
03882 pin_pad_exceptions_string = g_strconcat
03883 (
03884 "C3,",
03885 NULL
03886 );
03887 package_body_width = 6.00;
03888 package_body_length = 6.00;
03889 package_body_height = 1.00;
03890 package_is_radial = FALSE;
03891 number_of_columns = 11;
03892 number_of_rows = 11;
03893 pitch_x = 0.50;
03894 pitch_y = 0.50;
03895 count_x = 0;
03896 count_y = 0;
03897 pad_shape = g_strdup ("circular pad");
03898 pin_drill_diameter = 0.0;
03899 pad_diameter = 0.25;
03900 pad_clearance = 0.075;
03901 pad_solder_mask_clearance = 0.075;
03902 fiducial = TRUE;
03903 fiducial_pad_diameter = 1.00;
03904 fiducial_pad_clearance = 1.00;
03905 fiducial_pad_solder_mask_clearance = 1.00;
03906 courtyard_length = 8.00;
03907 courtyard_width = 8.00;
03908 courtyard_line_width = 0.05;
03909 silkscreen_length = 6.00;
03910 silkscreen_width = 6.00;
03911 silkscreen_line_width = 0.20;
03912 g_free (footprint_name);
03913 footprint_name = g_strdup ("BGA120C50P11X11_600X600X100");
03914 return (EXIT_SUCCESS);
03915 }
03916 else if (!strcmp (footprint_name, "?BGA120C50P11X11_600X600X80"))
03917 {
03918 footprint_units = g_strdup ("mm");
03919 number_of_pins = 120;
03920 pin_pad_exceptions_string = g_strconcat
03921 (
03922 "C3,",
03923 NULL
03924 );
03925 package_body_width = 6.00;
03926 package_body_length = 6.00;
03927 package_body_height = 0.80;
03928 package_is_radial = FALSE;
03929 number_of_columns = 11;
03930 number_of_rows = 11;
03931 pitch_x = 0.50;
03932 pitch_y = 0.50;
03933 count_x = 0;
03934 count_y = 0;
03935 pad_shape = g_strdup ("circular pad");
03936 pin_drill_diameter = 0.0;
03937 pad_diameter = 0.25;
03938 pad_clearance = 0.075;
03939 pad_solder_mask_clearance = 0.075;
03940 fiducial = TRUE;
03941 fiducial_pad_diameter = 1.00;
03942 fiducial_pad_clearance = 1.00;
03943 fiducial_pad_solder_mask_clearance = 1.00;
03944 courtyard_length = 8.00;
03945 courtyard_width = 8.00;
03946 courtyard_line_width = 0.05;
03947 silkscreen_length = 6.00;
03948 silkscreen_width = 6.00;
03949 silkscreen_line_width = 0.20;
03950 g_free (footprint_name);
03951 footprint_name = g_strdup ("BGA120C50P11X11_600X600X80");
03952 return (EXIT_SUCCESS);
03953 }
03954 else if (!strcmp (footprint_name, "?BGA120C50P13X13_700X700X140"))
03955 {
03956 footprint_units = g_strdup ("mm");
03957 number_of_pins = 120;
03958 pin_pad_exceptions_string = g_strconcat
03959 (
03960 "D4,D5,D6,D7,D8,D9,D10,",
03961 "E4,E5,E6,E7,E8,E9,E10,",
03962 "F4,F5,F6,F7,F8,F9,F10,",
03963 "G4,G5,G6,G7,G8,G9,G10,",
03964 "H4,H5,H6,H7,H8,H9,H10,",
03965 "J4,J5,J6,J7,J8,J9,J10,",
03966 "K4,K5,K6,K7,K8,K9,K10,",
03967 NULL
03968 );
03969 package_body_width = 7.00;
03970 package_body_length = 7.00;
03971 package_body_height = 1.40;
03972 package_is_radial = FALSE;
03973 number_of_columns = 13;
03974 number_of_rows = 13;
03975 pitch_x = 0.50;
03976 pitch_y = 0.50;
03977 count_x = 0;
03978 count_y = 0;
03979 pad_shape = g_strdup ("circular pad");
03980 pin_drill_diameter = 0.0;
03981 pad_diameter = 0.25;
03982 pad_clearance = 0.075;
03983 pad_solder_mask_clearance = 0.075;
03984 fiducial = TRUE;
03985 fiducial_pad_diameter = 1.00;
03986 fiducial_pad_clearance = 1.00;
03987 fiducial_pad_solder_mask_clearance = 1.00;
03988 courtyard_length = 9.00;
03989 courtyard_width = 9.00;
03990 courtyard_line_width = 0.05;
03991 silkscreen_length = 7.00;
03992 silkscreen_width = 7.00;
03993 silkscreen_line_width = 0.20;
03994 g_free (footprint_name);
03995 footprint_name = g_strdup ("BGA120C50P13X13_700X700X140");
03996 return (EXIT_SUCCESS);
03997 }
03998 else if (!strcmp (footprint_name, "?BGA120C80P10X13_1000X1300X120"))
03999 {
04000 footprint_units = g_strdup ("mm");
04001 number_of_pins = 120;
04002 pin_pad_exceptions_string = g_strconcat
04003 (
04004 "E5,E6,",
04005 "F5,F6,",
04006 "G5,G6,",
04007 "H5,H6,",
04008 "J5,J6,",
04009 NULL
04010 );
04011 package_body_length = 10.00;
04012 package_body_width = 13.00;
04013 package_body_height = 1.20;
04014 package_is_radial = FALSE;
04015 number_of_columns = 10;
04016 number_of_rows = 13;
04017 pitch_x = 0.80;
04018 pitch_y = 0.80;
04019 count_x = 0;
04020 count_y = 0;
04021 pad_shape = g_strdup ("circular pad");
04022 pin_drill_diameter = 0.0;
04023 pad_diameter = 0.40;
04024 pad_clearance = 0.075;
04025 pad_solder_mask_clearance = 0.075;
04026 fiducial = TRUE;
04027 fiducial_pad_diameter = 1.00;
04028 fiducial_pad_clearance = 1.00;
04029 fiducial_pad_solder_mask_clearance = 1.00;
04030 courtyard_length = 12.00;
04031 courtyard_width = 15.00;
04032 courtyard_line_width = 0.05;
04033 silkscreen_length = 10.00;
04034 silkscreen_width = 13.00;
04035 silkscreen_line_width = 0.20;
04036 g_free (footprint_name);
04037 footprint_name = g_strdup ("BGA120C80P10X13_1000X1300X120");
04038 return (EXIT_SUCCESS);
04039 }
04040 else if (!strcmp (footprint_name, "?BGA1216C100P41X41_4250X4250X380"))
04041 {
04042 footprint_units = g_strdup ("mm");
04043 number_of_pins = 1216;
04044 pin_pad_exceptions_string = g_strconcat
04045 (
04046 "A1,A2,A3,A39,A40,A41,",
04047 "B1,B2,B40,B41,",
04048 "C1,C41,",
04049 "L11,L12,L13,L14,L15,L16,L17,L18,L19,L20,",
04050 "L21,L22,L23,L24,L25,L26,L27,L28,L29,L30,L31,",
04051 "M11,M12,M13,M14,M15,M16,M17,M18,M19,M20,",
04052 "M21,M22,M23,M24,M25,M26,M27,M28,M29,M30,M31,",
04053 "N11,N12,N13,N14,N15,N16,N17,N18,N19,N20,",
04054 "N21,N22,N23,N24,N25,N26,N27,N28,N29,N30,N31,",
04055 "P11,P12,P13,P14,P15,P16,P17,P18,P19,P20,",
04056 "P21,P22,P23,P24,P25,P26,P27,P28,P29,P30,P31,",
04057 "R11,R12,R13,R14,R15,R16,R17,R18,R19,R20,",
04058 "R21,R22,R23,R24,R25,R26,R27,R28,R29,R30,R31,",
04059 "T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,",
04060 "T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,",
04061 "U11,U12,U13,U14,U15,U16,U17,U18,U19,U20,",
04062 "U21,U22,U23,U24,U25,U26,U27,U28,U29,U30,U31,",
04063 "V11,V12,V13,V14,V15,V16,V17,V18,V19,V20,",
04064 "V21,V22,V23,V24,V25,V26,V27,V28,V29,V30,V31,",
04065 "W11,W12,W13,W14,W15,W16,W17,W18,W19,W20,",
04066 "W21,W22,W23,W24,W25,W26,W27,W28,W29,W30,W31,",
04067 "Y11,Y12,Y13,Y14,Y15,Y16,Y17,Y18,Y19,Y20,",
04068 "Y21,Y22,Y23,Y24,Y25,Y26,Y27,Y28,Y29,Y30,Y31,",
04069 "AA11,AA12,AA13,AA14,AA15,AA16,AA17,AA18,AA19,AA20,",
04070 "AA21,AA22,AA23,AA24,AA25,AA26,AA27,AA28,AA29,AA30,AA31,",
04071 "AB11,AB12,AB13,AB14,AB15,AB16,AB17,AB18,AB19,AB20,",
04072 "AB21,AB22,AB23,AB24,AB25,AB26,AB27,AB28,AB29,AB30,AB31,",
04073 "AC11,AC12,AC13,AC14,AC15,AC16,AC17,AC18,AC19,AC20,",
04074 "AC21,AC22,AC23,AC24,AC25,AC26,AC27,AC28,AC29,AC30,AC31,",
04075 "AD11,AD12,AD13,AD14,AD15,AD16,AD17,AD18,AD19,AD20,",
04076 "AD21,AD22,AD23,AD24,AD25,AD26,AD27,AD28,AD29,AD30,AD31,",
04077 "AE11,AE12,AE13,AE14,AE15,AE16,AE17,AE18,AE19,AE20,",
04078 "AE21,AE22,AE23,AE24,AE25,AE26,AE27,AE28,AE29,AE30,AE31,",
04079 "AF11,AF12,AF13,AF14,AF15,AF16,AF17,AF18,AF19,AF20,",
04080 "AF21,AF22,AF23,AF24,AF25,AF26,AF27,AF28,AF29,AF30,AF31,",
04081 "AG11,AG12,AG13,AG14,AG15,AG16,AG17,AG18,AG19,AG20,",
04082 "AG21,AG22,AG23,AG24,AG25,AG26,AG27,AG28,AG29,AG30,AG31,",
04083 "AH11,AH12,AH13,AH14,AH15,AH16,AH17,AH18,AH19,AH20,",
04084 "AH21,AH22,AH23,AH24,AH25,AH26,AH27,AH28,AH29,AH30,AH31,",
04085 "AJ11,AJ12,AJ13,AJ14,AJ15,AJ16,AJ17,AJ18,AJ19,AJ20,",
04086 "AJ21,AJ22,AJ23,AJ24,AJ25,AJ26,AJ27,AJ28,AJ29,AJ30,AJ31,",
04087 "AK11,AK12,AK13,AK14,AK15,AK16,AK17,AK18,AK19,AK20,",
04088 "AK21,AK22,AK23,AK24,AK25,AK26,AK27,AK28,AK29,AK30,AK31,",
04089 "AL11,AL12,AL13,AL14,AL15,AL16,AL17,AL18,AL19,AL20,",
04090 "AL21,AL22,AL23,AL24,AL25,AL26,AL27,AL28,AL29,AL30,AL31,",
04091 "AW1,AW41,",
04092 "AY1,AY2,AY40,AY41,",
04093 "BA1,BA2,BA3,BA39,BA40,BA41,",
04094 NULL
04095 );
04096 package_body_width = 42.50;
04097 package_body_length = 42.50;
04098 package_body_height = 3.80;
04099 package_is_radial = FALSE;
04100 number_of_columns = 41;
04101 number_of_rows = 41;
04102 pitch_x = 1.00;
04103 pitch_y = 1.00;
04104 count_x = 0;
04105 count_y = 0;
04106 pad_shape = g_strdup ("circular pad");
04107 pin_drill_diameter = 0.0;
04108 pad_diameter = 0.50;
04109 pad_clearance = 0.075;
04110 pad_solder_mask_clearance = 0.075;
04111 fiducial = FALSE;
04112 fiducial_pad_diameter = 0.00;
04113 fiducial_pad_clearance = 0.00;
04114 fiducial_pad_solder_mask_clearance = 0.00;
04115 courtyard_length = 46.50;
04116 courtyard_width = 46.50;
04117 courtyard_line_width = 0.05;
04118 silkscreen_length = 42.50;
04119 silkscreen_width = 42.50;
04120 silkscreen_line_width = 0.20;
04121 g_free (footprint_name);
04122 footprint_name = g_strdup ("BGA1216C100P41X41_4250X4250X380");
04123 return (EXIT_SUCCESS);
04124 }
04125 else if (!strcmp (footprint_name, "?BGA1216C100P41X41_4250X4250X400"))
04126 {
04127 footprint_units = g_strdup ("mm");
04128 number_of_pins = 1216;
04129 pin_pad_exceptions_string = g_strconcat
04130 (
04131 "A1,A2,A3,A39,A40,A41,",
04132 "B1,B2,B40,B41,",
04133 "C1,C41,",
04134 "L11,L12,L13,L14,L15,L16,L17,L18,L19,L20,",
04135 "L21,L22,L23,L24,L25,L26,L27,L28,L29,L30,L31,",
04136 "M11,M12,M13,M14,M15,M16,M17,M18,M19,M20,",
04137 "M21,M22,M23,M24,M25,M26,M27,M28,M29,M30,M31,",
04138 "N11,N12,N13,N14,N15,N16,N17,N18,N19,N20,",
04139 "N21,N22,N23,N24,N25,N26,N27,N28,N29,N30,N31,",
04140 "P11,P12,P13,P14,P15,P16,P17,P18,P19,P20,",
04141 "P21,P22,P23,P24,P25,P26,P27,P28,P29,P30,P31,",
04142 "R11,R12,R13,R14,R15,R16,R17,R18,R19,R20,",
04143 "R21,R22,R23,R24,R25,R26,R27,R28,R29,R30,R31,",
04144 "T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,",
04145 "T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,",
04146 "U11,U12,U13,U14,U15,U16,U17,U18,U19,U20,",
04147 "U21,U22,U23,U24,U25,U26,U27,U28,U29,U30,U31,",
04148 "V11,V12,V13,V14,V15,V16,V17,V18,V19,V20,",
04149 "V21,V22,V23,V24,V25,V26,V27,V28,V29,V30,V31,",
04150 "W11,W12,W13,W14,W15,W16,W17,W18,W19,W20,",
04151 "W21,W22,W23,W24,W25,W26,W27,W28,W29,W30,W31,",
04152 "Y11,Y12,Y13,Y14,Y15,Y16,Y17,Y18,Y19,Y20,",
04153 "Y21,Y22,Y23,Y24,Y25,Y26,Y27,Y28,Y29,Y30,Y31,",
04154 "AA11,AA12,AA13,AA14,AA15,AA16,AA17,AA18,AA19,AA20,",
04155 "AA21,AA22,AA23,AA24,AA25,AA26,AA27,AA28,AA29,AA30,AA31,",
04156 "AB11,AB12,AB13,AB14,AB15,AB16,AB17,AB18,AB19,AB20,",
04157 "AB21,AB22,AB23,AB24,AB25,AB26,AB27,AB28,AB29,AB30,AB31,",
04158 "AC11,AC12,AC13,AC14,AC15,AC16,AC17,AC18,AC19,AC20,",
04159 "AC21,AC22,AC23,AC24,AC25,AC26,AC27,AC28,AC29,AC30,AC31,",
04160 "AD11,AD12,AD13,AD14,AD15,AD16,AD17,AD18,AD19,AD20,",
04161 "AD21,AD22,AD23,AD24,AD25,AD26,AD27,AD28,AD29,AD30,AD31,",
04162 "AE11,AE12,AE13,AE14,AE15,AE16,AE17,AE18,AE19,AE20,",
04163 "AE21,AE22,AE23,AE24,AE25,AE26,AE27,AE28,AE29,AE30,AE31,",
04164 "AF11,AF12,AF13,AF14,AF15,AF16,AF17,AF18,AF19,AF20,",
04165 "AF21,AF22,AF23,AF24,AF25,AF26,AF27,AF28,AF29,AF30,AF31,",
04166 "AG11,AG12,AG13,AG14,AG15,AG16,AG17,AG18,AG19,AG20,",
04167 "AG21,AG22,AG23,AG24,AG25,AG26,AG27,AG28,AG29,AG30,AG31,",
04168 "AH11,AH12,AH13,AH14,AH15,AH16,AH17,AH18,AH19,AH20,",
04169 "AH21,AH22,AH23,AH24,AH25,AH26,AH27,AH28,AH29,AH30,AH31,",
04170 "AJ11,AJ12,AJ13,AJ14,AJ15,AJ16,AJ17,AJ18,AJ19,AJ20,",
04171 "AJ21,AJ22,AJ23,AJ24,AJ25,AJ26,AJ27,AJ28,AJ29,AJ30,AJ31,",
04172 "AK11,AK12,AK13,AK14,AK15,AK16,AK17,AK18,AK19,AK20,",
04173 "AK21,AK22,AK23,AK24,AK25,AK26,AK27,AK28,AK29,AK30,AK31,",
04174 "AL11,AL12,AL13,AL14,AL15,AL16,AL17,AL18,AL19,AL20,",
04175 "AL21,AL22,AL23,AL24,AL25,AL26,AL27,AL28,AL29,AL30,AL31,",
04176 "AW1,AW41,",
04177 "AY1,AY2,AY40,AY41,",
04178 "BA1,BA2,BA3,BA39,BA40,BA41,",
04179 NULL
04180 );
04181 package_body_width = 42.50;
04182 package_body_length = 42.50;
04183 package_body_height = 4.00;
04184 package_is_radial = FALSE;
04185 number_of_columns = 41;
04186 number_of_rows = 41;
04187 pitch_x = 1.00;
04188 pitch_y = 1.00;
04189 count_x = 0;
04190 count_y = 0;
04191 pad_shape = g_strdup ("circular pad");
04192 pin_drill_diameter = 0.0;
04193 pad_diameter = 0.50;
04194 pad_clearance = 0.075;
04195 pad_solder_mask_clearance = 0.075;
04196 fiducial = FALSE;
04197 fiducial_pad_diameter = 0.00;
04198 fiducial_pad_clearance = 0.00;
04199 fiducial_pad_solder_mask_clearance = 0.00;
04200 courtyard_length = 46.50;
04201 courtyard_width = 46.50;
04202 courtyard_line_width = 0.05;
04203 silkscreen_length = 42.50;
04204 silkscreen_width = 42.50;
04205 silkscreen_line_width = 0.20;
04206 g_free (footprint_name);
04207 footprint_name = g_strdup ("BGA1216C100P41X41_4250X4250X400");
04208 return (EXIT_SUCCESS);
04209 }
04210 else if (!strcmp (footprint_name, "?BGA121C100P11X11_1200X1200X185"))
04211 {
04212 footprint_units = g_strdup ("mm");
04213 number_of_pins = 121;
04214 pin_pad_exceptions_string = g_strdup ("");
04215 package_body_width = 12.00;
04216 package_body_length = 12.00;
04217 package_body_height = 1.85;
04218 package_is_radial = FALSE;
04219 number_of_columns = 11;
04220 number_of_rows = 11;
04221 pitch_x = 1.00;
04222 pitch_y = 1.00;
04223 count_x = 0;
04224 count_y = 0;
04225 pad_shape = g_strdup ("circular pad");
04226 pin_drill_diameter = 0.0;
04227 pad_diameter = 0.50;
04228 pad_clearance = 0.075;
04229 pad_solder_mask_clearance = 0.075;
04230 fiducial = FALSE;
04231 fiducial_pad_diameter = 0.00;
04232 fiducial_pad_clearance = 0.00;
04233 fiducial_pad_solder_mask_clearance = 0.00;
04234 courtyard_length = 16.00;
04235 courtyard_width = 16.00;
04236 courtyard_line_width = 0.05;
04237 silkscreen_length = 12.00;
04238 silkscreen_width = 12.00;
04239 silkscreen_line_width = 0.20;
04240 g_free (footprint_name);
04241 footprint_name = g_strdup ("BGA121C100P11X11_1200X1200X185");
04242 if (verbose)
04243 {
04244 g_log ("", G_LOG_LEVEL_INFO,
04245 (_("%s is also known as")), footprint_name,
04246 " JEDEC MO-192ABD-1.");
04247 }
04248 return (EXIT_SUCCESS);
04249 }
04250 else if (!strcmp (footprint_name, "?BGA121C100P11X11_1200X1200X350"))
04251 {
04252 footprint_units = g_strdup ("mm");
04253 number_of_pins = 121;
04254 pin_pad_exceptions_string = g_strdup ("");
04255 package_body_width = 12.00;
04256 package_body_length = 12.00;
04257 package_body_height = 3.50;
04258 package_is_radial = FALSE;
04259 number_of_columns = 11;
04260 number_of_rows = 11;
04261 pitch_x = 1.00;
04262 pitch_y = 1.00;
04263 count_x = 0;
04264 count_y = 0;
04265 pad_shape = g_strdup ("circular pad");
04266 pin_drill_diameter = 0.0;
04267 pad_diameter = 0.50;
04268 pad_clearance = 0.075;
04269 pad_solder_mask_clearance = 0.075;
04270 fiducial = FALSE;
04271 fiducial_pad_diameter = 0.00;
04272 fiducial_pad_clearance = 0.00;
04273 fiducial_pad_solder_mask_clearance = 0.00;
04274 courtyard_length = 16.00;
04275 courtyard_width = 16.00;
04276 courtyard_line_width = 0.05;
04277 silkscreen_length = 12.00;
04278 silkscreen_width = 12.00;
04279 silkscreen_line_width = 0.20;
04280 g_free (footprint_name);
04281 footprint_name = g_strdup ("BGA121C100P11X11_1200X1200X350");
04282 if (verbose)
04283 {
04284 g_log ("", G_LOG_LEVEL_INFO,
04285 (_("%s is also known as")), footprint_name,
04286 " JEDEC MO-192ABD-1.");
04287 }
04288 return (EXIT_SUCCESS);
04289 }
04290 else if (!strcmp (footprint_name, "?BGA121C50P14X14_1000X1300X110"))
04291 {
04292 footprint_units = g_strdup ("mm");
04293 number_of_pins = 121;
04294 pin_pad_exceptions_string = g_strconcat
04295 (
04296 "A1,A2,A13,A14,",
04297 "B1,B14,",
04298 "D5,D6,D7,D8,D9,D10,D11,",
04299 "E4,E5,E6,E7,E8,E9,E10,E11,",
04300 "F4,F5,F6,F7,F8,F9,F10,F11,",
04301 "G4,G5,G6,G7,G8,G9,G10,G11,",
04302 "H4,H5,H6,H7,H8,H9,H10,H11,",
04303 "J4,J5,J6,J7,J8,J9,J10,J11,",
04304 "K4,K5,K6,K7,K8,K9,K10,K11",
04305 "L4,L5,L6,L7,L8,L9,L10,L11",
04306 "N1,N14,",
04307 "P1,P2,P13,P14,",
04308 NULL
04309 );
04310 package_body_length = 10.00;
04311 package_body_width = 13.00;
04312 package_body_height = 1.10;
04313 package_is_radial = FALSE;
04314 number_of_columns = 14;
04315 number_of_rows = 14;
04316 pitch_x = 0.50;
04317 pitch_y = 0.50;
04318 count_x = 0;
04319 count_y = 0;
04320 pad_shape = g_strdup ("circular pad");
04321 pin_drill_diameter = 0.0;
04322 pad_diameter = 0.25;
04323 pad_clearance = 0.075;
04324 pad_solder_mask_clearance = 0.075;
04325 fiducial = TRUE;
04326 fiducial_pad_diameter = 1.00;
04327 fiducial_pad_clearance = 1.00;
04328 fiducial_pad_solder_mask_clearance = 1.00;
04329 courtyard_length = 12.00;
04330 courtyard_width = 15.00;
04331 courtyard_line_width = 0.05;
04332 silkscreen_length = 10.00;
04333 silkscreen_width = 13.00;
04334 silkscreen_line_width = 0.20;
04335 g_free (footprint_name);
04336 footprint_name = g_strdup ("BGA121C50P14X14_1000X1300X110");
04337 return (EXIT_SUCCESS);
04338 }
04339 else if (!strcmp (footprint_name, "?BGA121C50P14X14_1000X1300X130"))
04340 {
04341 footprint_units = g_strdup ("mm");
04342 number_of_pins = 121;
04343 pin_pad_exceptions_string = g_strconcat
04344 (
04345 "A1,A2,A13,A14,",
04346 "B1,B14,",
04347 "D5,D6,D7,D8,D9,D10,D11,",
04348 "E4,E5,E6,E7,E8,E9,E10,E11,",
04349 "F4,F5,F6,F7,F8,F9,F10,F11,",
04350 "G4,G5,G6,G7,G8,G9,G10,G11,",
04351 "H4,H5,H6,H7,H8,H9,H10,H11,",
04352 "J4,J5,J6,J7,J8,J9,J10,J11,",
04353 "K4,K5,K6,K7,K8,K9,K10,K11",
04354 "L4,L5,L6,L7,L8,L9,L10,L11",
04355 "N1,N14,",
04356 "P1,P2,P13,P14,",
04357 NULL
04358 );
04359 package_body_length = 10.00;
04360 package_body_width = 13.00;
04361 package_body_height = 1.30;
04362 package_is_radial = FALSE;
04363 number_of_columns = 14;
04364 number_of_rows = 14;
04365 pitch_x = 0.50;
04366 pitch_y = 0.50;
04367 count_x = 0;
04368 count_y = 0;
04369 pad_shape = g_strdup ("circular pad");
04370 pin_drill_diameter = 0.0;
04371 pad_diameter = 0.25;
04372 pad_clearance = 0.075;
04373 pad_solder_mask_clearance = 0.075;
04374 fiducial = TRUE;
04375 fiducial_pad_diameter = 1.00;
04376 fiducial_pad_clearance = 1.00;
04377 fiducial_pad_solder_mask_clearance = 1.00;
04378 courtyard_length = 12.00;
04379 courtyard_width = 15.00;
04380 courtyard_line_width = 0.05;
04381 silkscreen_length = 10.00;
04382 silkscreen_width = 13.00;
04383 silkscreen_line_width = 0.20;
04384 g_free (footprint_name);
04385 footprint_name = g_strdup ("BGA121C50P14X14_1000X1300X130");
04386 return (EXIT_SUCCESS);
04387 }
04388 else if (!strcmp (footprint_name, "?BGA121C50P14X14_1050X1600X130"))
04389 {
04390 footprint_units = g_strdup ("mm");
04391 number_of_pins = 121;
04392 pin_pad_exceptions_string = g_strconcat
04393 (
04394 "A1,A2,A13,A14,",
04395 "B1,B14,",
04396 "D5,D6,D7,D8,D9,D10,D11,",
04397 "E4,E5,E6,E7,E8,E9,E10,E11,",
04398 "F4,F5,F6,F7,F8,F9,F10,F11,",
04399 "G4,G5,G6,G7,G8,G9,G10,G11,",
04400 "H4,H5,H6,H7,H8,H9,H10,H11,",
04401 "J4,J5,J6,J7,J8,J9,J10,J11,",
04402 "K4,K5,K6,K7,K8,K9,K10,K11",
04403 "L4,L5,L6,L7,L8,L9,L10,L11",
04404 "N1,N14,",
04405 "P1,P2,P13,P14,",
04406 NULL
04407 );
04408 package_body_length = 10.50;
04409 package_body_width = 16.00;
04410 package_body_height = 1.30;
04411 package_is_radial = FALSE;
04412 number_of_columns = 14;
04413 number_of_rows = 14;
04414 pitch_x = 0.50;
04415 pitch_y = 0.50;
04416 count_x = 0;
04417 count_y = 0;
04418 pad_shape = g_strdup ("circular pad");
04419 pin_drill_diameter = 0.0;
04420 pad_diameter = 0.25;
04421 pad_clearance = 0.075;
04422 pad_solder_mask_clearance = 0.075;
04423 fiducial = TRUE;
04424 fiducial_pad_diameter = 1.00;
04425 fiducial_pad_clearance = 1.00;
04426 fiducial_pad_solder_mask_clearance = 1.00;
04427 courtyard_length = 12.50;
04428 courtyard_width = 18.00;
04429 courtyard_line_width = 0.05;
04430 silkscreen_length = 10.50;
04431 silkscreen_width = 16.00;
04432 silkscreen_line_width = 0.20;
04433 g_free (footprint_name);
04434 footprint_name = g_strdup ("BGA121C50P14X14_1050X1600X130");
04435 return (EXIT_SUCCESS);
04436 }
04437 else if (!strcmp (footprint_name, "?BGA121C65P11X11_800X800X130"))
04438 {
04439 footprint_units = g_strdup ("mm");
04440 number_of_pins = 121;
04441 pin_pad_exceptions_string = g_strdup ("");
04442 package_body_width = 8.00;
04443 package_body_length = 8.00;
04444 package_body_height = 1.30;
04445 package_is_radial = FALSE;
04446 number_of_columns = 11;
04447 number_of_rows = 11;
04448 pitch_x = 0.65;
04449 pitch_y = 0.65;
04450 count_x = 0;
04451 count_y = 0;
04452 pad_shape = g_strdup ("circular pad");
04453 pin_drill_diameter = 0.0;
04454 pad_diameter = 0.25;
04455 pad_clearance = 0.075;
04456 pad_solder_mask_clearance = 0.075;
04457 fiducial = TRUE;
04458 fiducial_pad_diameter = 1.00;
04459 fiducial_pad_clearance = 1.00;
04460 fiducial_pad_solder_mask_clearance = 1.00;
04461 courtyard_length = 10.00;
04462 courtyard_width = 10.00;
04463 courtyard_line_width = 0.05;
04464 silkscreen_length = 8.00;
04465 silkscreen_width = 8.00;
04466 silkscreen_line_width = 0.20;
04467 g_free (footprint_name);
04468 footprint_name = g_strdup ("BGA121C65P11X11_800X800X130");
04469 return (EXIT_SUCCESS);
04470 }
04471 else if (!strcmp (footprint_name, "?BGA124C100P14X14_1500X1500X170"))
04472 {
04473 footprint_units = g_strdup ("mm");
04474 number_of_pins = 124;
04475 pin_pad_exceptions_string = g_strconcat
04476 (
04477 "A3,A5,A7,A9,A11,A13,",
04478 "B2,B4,B6,B8,B10,B12,B14,",
04479 "C1,C3,C4,C5,C6,C7,C8,C9,C10,C11,C13,",
04480 "D2,D3,D4,D5,D6,D7,D8,D9,D10,D11,D12,D14,",
04481 "E1,E3,E5,E7,E9,E11,E13,",
04482 "F2,F4,F6,F8,F10,F11,F12,F14,",
04483 "G1,G2,G3,G4,G5,G6,G7,G8,G9,G10,G11,G12,G13,",
04484 "H3,H12,H14,",
04485 "J1,J2,J13,J14,",
04486 NULL
04487 );
04488 package_body_width = 15.00;
04489 package_body_length = 15.00;
04490 package_body_height = 1.70;
04491 package_is_radial = FALSE;
04492 number_of_columns = 14;
04493 number_of_rows = 14;
04494 pitch_x = 1.00;
04495 pitch_y = 1.00;
04496 count_x = 0;
04497 count_y = 0;
04498 pad_shape = g_strdup ("circular pad");
04499 pin_drill_diameter = 0.0;
04500 pad_diameter = 0.40;
04501 pad_clearance = 0.075;
04502 pad_solder_mask_clearance = 0.075;
04503 fiducial = FALSE;
04504 fiducial_pad_diameter = 0.00;
04505 fiducial_pad_clearance = 0.00;
04506 fiducial_pad_solder_mask_clearance = 0.00;
04507 courtyard_length = 17.00;
04508 courtyard_width = 17.00;
04509 courtyard_line_width = 0.05;
04510 silkscreen_length = 15.00;
04511 silkscreen_width = 15.00;
04512 silkscreen_line_width = 0.20;
04513 g_free (footprint_name);
04514 footprint_name = g_strdup ("BGA124C100P14X14_1500X1500X170");
04515 if (verbose)
04516 {
04517 g_log ("", G_LOG_LEVEL_INFO,
04518 (_("%s is also known as")), footprint_name,
04519 " JEDEC MO-192AAE-1.");
04520 }
04521 return (EXIT_SUCCESS);
04522 }
04523 else if (!strcmp (footprint_name, "?BGA124C50P13X13_800X800X120"))
04524 {
04525 footprint_units = g_strdup ("mm");
04526 number_of_pins = 124;
04527 pin_pad_exceptions_string = g_strconcat
04528 (
04529 "A1,A7,",
04530 "D5,D6,D7,D8,D9,D10,",
04531 "E4,E5,E6,E7,E8,E9,E10,",
04532 "F4,F5,F9,F10,",
04533 "G1,G4,G5,G7,G9,G10,G13,",
04534 "H4,H5,H9,H10,",
04535 "J4,J5,J6,J7,J8,J9,J10,",
04536 "K4,K5,K6,K7,K8,K9,K10,",
04537 "N7,",
04538 NULL
04539 );
04540 package_body_width = 8.00;
04541 package_body_length = 8.00;
04542 package_body_height = 1.20;
04543 package_is_radial = FALSE;
04544 number_of_columns = 13;
04545 number_of_rows = 13;
04546 pitch_x = 0.50;
04547 pitch_y = 0.50;
04548 count_x = 0;
04549 count_y = 0;
04550 pad_shape = g_strdup ("circular pad");
04551 pin_drill_diameter = 0.0;
04552 pad_diameter = 0.25;
04553 pad_clearance = 0.075;
04554 pad_solder_mask_clearance = 0.075;
04555 fiducial = TRUE;
04556 fiducial_pad_diameter = 1.00;
04557 fiducial_pad_clearance = 1.00;
04558 fiducial_pad_solder_mask_clearance = 1.00;
04559 courtyard_length = 10.00;
04560 courtyard_width = 10.00;
04561 courtyard_line_width = 0.05;
04562 silkscreen_length = 8.00;
04563 silkscreen_width = 8.00;
04564 silkscreen_line_width = 0.20;
04565 g_free (footprint_name);
04566 footprint_name = g_strdup ("BGA124C50P13X13_800X800X120");
04567 return (EXIT_SUCCESS);
04568 }
04569 else if (!strcmp (footprint_name, "?BGA124C65P12X12_900X900X140"))
04570 {
04571 footprint_units = g_strdup ("mm");
04572 number_of_pins = 124;
04573 pin_pad_exceptions_string = g_strconcat
04574 (
04575 "D4,D5,D6,D7,D8,D9,",
04576 "E4,E9,",
04577 "F4,F9,",
04578 "G4,G9,",
04579 "H4,H9,",
04580 "J4,J5,J6,J7,J8,J9,",
04581 NULL
04582 );
04583 package_body_width = 9.00;
04584 package_body_length = 9.00;
04585 package_body_height = 1.40;
04586 package_is_radial = FALSE;
04587 number_of_columns = 12;
04588 number_of_rows = 12;
04589 pitch_x = 0.65;
04590 pitch_y = 0.65;
04591 count_x = 0;
04592 count_y = 0;
04593 pad_shape = g_strdup ("circular pad");
04594 pin_drill_diameter = 0.0;
04595 pad_diameter = 0.35;
04596 pad_clearance = 0.075;
04597 pad_solder_mask_clearance = 0.075;
04598 fiducial = TRUE;
04599 fiducial_pad_diameter = 1.00;
04600 fiducial_pad_clearance = 1.00;
04601 fiducial_pad_solder_mask_clearance = 1.00;
04602 courtyard_length = 11.00;
04603 courtyard_width = 11.00;
04604 courtyard_line_width = 0.05;
04605 silkscreen_length = 9.00;
04606 silkscreen_width = 9.00;
04607 silkscreen_line_width = 0.20;
04608 g_free (footprint_name);
04609 footprint_name = g_strdup ("BGA124C65P12X12_900X900X140");
04610 if (verbose)
04611 {
04612 g_log ("", G_LOG_LEVEL_INFO,
04613 (_("%s is also known as")), footprint_name,
04614 " JEDEC MO-225.");
04615 }
04616 return (EXIT_SUCCESS);
04617 }
04618 else if (!strcmp (footprint_name, "?BGA127C80P12X13_1050X1200X140"))
04619 {
04620 footprint_units = g_strdup ("mm");
04621 number_of_pins = 127;
04622 pin_pad_exceptions_string = g_strconcat
04623 (
04624 "C1,C12,",
04625 "D1,D5,D12,",
04626 "E1,E6,E7,E12,",
04627 "F1,F6,F7,F12,",
04628 "G1,G6,G7,G12,",
04629 "H1,H6,H7,H12,",
04630 "J1,J6,J7,J12,",
04631 "K1,K12,",
04632 "L1,L12,",
04633 NULL
04634 );
04635 package_body_length = 10.50;
04636 package_body_width = 12.00;
04637 package_body_height = 1.40;
04638 package_is_radial = FALSE;
04639 number_of_columns = 12;
04640 number_of_rows = 13;
04641 pitch_x = 0.80;
04642 pitch_y = 0.80;
04643 count_x = 0;
04644 count_y = 0;
04645 pad_shape = g_strdup ("circular pad");
04646 pin_drill_diameter = 0.0;
04647 pad_diameter = 0.40;
04648 pad_clearance = 0.075;
04649 pad_solder_mask_clearance = 0.075;
04650 fiducial = TRUE;
04651 fiducial_pad_diameter = 1.00;
04652 fiducial_pad_clearance = 1.00;
04653 fiducial_pad_solder_mask_clearance = 1.00;
04654 courtyard_length = 12.50;
04655 courtyard_width = 14.00;
04656 courtyard_line_width = 0.05;
04657 silkscreen_length = 10.50;
04658 silkscreen_width = 12.00;
04659 silkscreen_line_width = 0.20;
04660 g_free (footprint_name);
04661 footprint_name = g_strdup ("BGA127C80P12X13_1050X1200X140");
04662 return (EXIT_SUCCESS);
04663 }
04664 else if (!strcmp (footprint_name, "?BGA1284C100P36X36_3750X3750X380"))
04665 {
04666 footprint_units = g_strdup ("mm");
04667 number_of_pins = 1284;
04668 pin_pad_exceptions_string = g_strconcat
04669 (
04670 "A1,A2,A35,A36,",
04671 "B1,B36,",
04672 "AR1,AR36,",
04673 "AT1,AT2,AT35,AT36,",
04674 NULL
04675 );
04676 package_body_width = 37.50;
04677 package_body_length = 37.50;
04678 package_body_height = 3.80;
04679 package_is_radial = FALSE;
04680 number_of_columns = 36;
04681 number_of_rows = 36;
04682 pitch_x = 1.00;
04683 pitch_y = 1.00;
04684 count_x = 0;
04685 count_y = 0;
04686 pad_shape = g_strdup ("circular pad");
04687 pin_drill_diameter = 0.0;
04688 pad_diameter = 0.50;
04689 pad_clearance = 0.075;
04690 pad_solder_mask_clearance = 0.075;
04691 fiducial = FALSE;
04692 fiducial_pad_diameter = 0.00;
04693 fiducial_pad_clearance = 0.00;
04694 fiducial_pad_solder_mask_clearance = 0.00;
04695 courtyard_length = 41.50;
04696 courtyard_width = 41.50;
04697 courtyard_line_width = 0.05;
04698 silkscreen_length = 37.50;
04699 silkscreen_width = 37.50;
04700 silkscreen_line_width = 0.20;
04701 g_free (footprint_name);
04702 footprint_name = g_strdup ("BGA1284C100P36X36_3750X3750X380");
04703 return (EXIT_SUCCESS);
04704 }
04705 else if (!strcmp (footprint_name, "?BGA1284C100P36X36_3750X3750X400"))
04706 {
04707 footprint_units = g_strdup ("mm");
04708 number_of_pins = 1284;
04709 pin_pad_exceptions_string = g_strconcat
04710 (
04711 "A1,A2,A35,A36,",
04712 "B1,B36,",
04713 "AR1,AR36,",
04714 "AT1,AT2,AT35,AT36,",
04715 NULL
04716 );
04717 package_body_width = 37.50;
04718 package_body_length = 37.50;
04719 package_body_height = 4.00;
04720 package_is_radial = FALSE;
04721 number_of_columns = 36;
04722 number_of_rows = 36;
04723 pitch_x = 1.00;
04724 pitch_y = 1.00;
04725 count_x = 0;
04726 count_y = 0;
04727 pad_shape = g_strdup ("circular pad");
04728 pin_drill_diameter = 0.0;
04729 pad_diameter = 0.50;
04730 pad_clearance = 0.075;
04731 pad_solder_mask_clearance = 0.075;
04732 fiducial = FALSE;
04733 fiducial_pad_diameter = 0.00;
04734 fiducial_pad_clearance = 0.00;
04735 fiducial_pad_solder_mask_clearance = 0.00;
04736 courtyard_length = 41.50;
04737 courtyard_width = 41.50;
04738 courtyard_line_width = 0.05;
04739 silkscreen_length = 37.50;
04740 silkscreen_width = 37.50;
04741 silkscreen_line_width = 0.20;
04742 g_free (footprint_name);
04743 footprint_name = g_strdup ("BGA1284C100P36X36_3750X3750X400");
04744 return (EXIT_SUCCESS);
04745 }
04746 else
04747 {
04748 g_log ("", G_LOG_LEVEL_WARNING,
04749 (_("default values for footprint %s not found.\n")),
04750 footprint_name);
04751 return (EXIT_FAILURE);
04752 }
04753 }
04754
04755
04763 #if GUI
04764 int
04765 bga_set_gui_constraints ()
04766 {
04767
04768 GtkWidget *package_is_radial_checkbutton = lookup_widget (GTK_WIDGET (widget),
04769 "package_is_radial_checkbutton");
04770 gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (package_is_radial_checkbutton), FALSE);
04771 gtk_widget_set_sensitive (package_is_radial_checkbutton, FALSE);
04772
04773
04774 GtkWidget *count_x_entry = lookup_widget (GTK_WIDGET (widget),
04775 "count_x_entry");
04776 gtk_entry_set_text (GTK_ENTRY (count_x_entry), "");
04777 gtk_widget_set_sensitive (count_x_entry, FALSE);
04778 GtkWidget *count_y_entry = lookup_widget (GTK_WIDGET (widget),
04779 "count_y_entry");
04780 gtk_entry_set_text (GTK_ENTRY (count_y_entry), "");
04781 gtk_widget_set_sensitive (count_y_entry, FALSE);
04782 GtkWidget *number_1_position_entry = lookup_widget (GTK_WIDGET (widget),
04783 "number_1_position_entry");
04784 gtk_combo_box_set_active (GTK_COMBO_BOX (number_1_position_entry), 1);
04785 gtk_widget_set_sensitive (number_1_position_entry, FALSE);
04786 GtkWidget *pin_pad_exceptions_button = lookup_widget (GTK_WIDGET (widget),
04787 "pin_pad_exceptions_button");
04788 gtk_widget_set_sensitive (pin_pad_exceptions_button, TRUE);
04789 GtkWidget *pin_drill_diameter_entry = lookup_widget (GTK_WIDGET (widget),
04790 "pin_drill_diameter_entry");
04791 gtk_entry_set_text (GTK_ENTRY (pin_drill_diameter_entry), "");
04792 gtk_widget_set_sensitive (pin_drill_diameter_entry, FALSE);
04793 GtkWidget *pad_shape_entry = lookup_widget (GTK_WIDGET (widget),
04794 "pad_shape_entry");
04795 gtk_combo_box_set_active (GTK_COMBO_BOX (pad_shape_entry), 1);
04796 gtk_widget_set_sensitive (pad_shape_entry, FALSE);
04797 GtkWidget *pad_length_entry = lookup_widget (GTK_WIDGET (widget),
04798 "pad_length_entry");
04799 gtk_entry_set_text (GTK_ENTRY (pad_length_entry), "");
04800 gtk_widget_set_sensitive (pad_length_entry, FALSE);
04801 GtkWidget *pad_width_entry = lookup_widget (GTK_WIDGET (widget),
04802 "pad_width_entry");
04803 gtk_entry_set_text (GTK_ENTRY (pad_width_entry), "");
04804 gtk_widget_set_sensitive (pad_width_entry, FALSE);
04805
04806
04807 gui_constraints_disable_thermal_tab_widgets (widget);
04808 GtkWidget *fiducial_checkbutton = lookup_widget (GTK_WIDGET (widget),
04809 "fiducial_checkbutton");
04810 gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (fiducial_checkbutton),
04811 FALSE);
04812 gtk_widget_set_sensitive (fiducial_checkbutton, TRUE);
04813 gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (fiducial_checkbutton), TRUE);
04814 GtkWidget *fiducial_pad_diameter_entry = lookup_widget
04815 (GTK_WIDGET (widget),
04816 "fiducial_pad_diameter_entry");
04817 gtk_widget_set_sensitive (fiducial_pad_diameter_entry, TRUE);
04818 GtkWidget *fiducial_pad_clearance_entry = lookup_widget
04819 (GTK_WIDGET (widget),
04820 "fiducial_pad_clearance_entry");
04821 gtk_widget_set_sensitive (fiducial_pad_clearance_entry,
04822 TRUE);
04823 GtkWidget *fiducial_pad_solder_mask_clearance_entry = lookup_widget
04824 (GTK_WIDGET (widget),
04825 "fiducial_pad_solder_mask_clearance_entry");
04826 gtk_widget_set_sensitive (fiducial_pad_solder_mask_clearance_entry,
04827 TRUE);
04828
04829
04830 gui_constraints_disable_heel_and_toe_goals_tab_widgets (widget);
04831 return (EXIT_SUCCESS);
04832 }
04833 #endif
04834
04835
04842 int
04843 bga_write_footprint ()
04844 {
04845 gdouble xmax;
04846 gdouble xmin;
04847 gdouble ymax;
04848 gdouble ymin;
04849 gdouble x_text;
04850 gdouble y_text;
04851 gdouble dx;
04852 gint pin_number;
04853 gchar *pin_pad_name = g_strdup ("");
04854 gchar *pin_pad_flags = g_strdup ("");
04855 gint i;
04856 gint j;
04857
04858
04859 fp = fopen (footprint_filename, "w");
04860 if (!fp)
04861 {
04862 g_log ("", G_LOG_LEVEL_WARNING,
04863 (_("could not open file for %s footprint: %s.")),
04864 footprint_type, footprint_filename);
04865 fclose (fp);
04866 return (EXIT_FAILURE);
04867 }
04868
04869 if (license_in_footprint)
04870 {
04871 write_license ();
04872 }
04873
04874
04875 xmin = multiplier *
04876 (
04877 ((-pitch_x * number_of_columns) / 2.0) -
04878 (pad_diameter / 2.0) -
04879 pad_solder_mask_clearance
04880 );
04881 xmax = multiplier *
04882 (
04883 ((pitch_x * number_of_columns) / 2.0) +
04884 (pad_diameter / 2.0) +
04885 pad_solder_mask_clearance
04886 );
04887 ymin = multiplier *
04888 (
04889 ((-pitch_y * number_of_rows) / 2.0) -
04890 (pad_diameter / 2.0) -
04891 pad_solder_mask_clearance
04892 );
04893 ymax = multiplier *
04894 (
04895 ((pitch_y * number_of_rows) / 2.0) +
04896 (pad_diameter / 2.0) +
04897 pad_solder_mask_clearance
04898 );
04899
04900
04901 if ((multiplier * ((-package_body_length / 2.0) - courtyard_clearance_with_package)) < xmin)
04902 {
04903 xmin = (multiplier * ((-package_body_length / 2.0) - courtyard_clearance_with_package));
04904 }
04905 if ((multiplier * ((package_body_length / 2.0) + courtyard_clearance_with_package)) > xmax)
04906 {
04907 xmax = (multiplier * ((package_body_length / 2.0) + courtyard_clearance_with_package));
04908 }
04909 if ((multiplier * ((-package_body_width / 2.0) - courtyard_clearance_with_package)) < ymin)
04910 {
04911 ymin = (multiplier * ((-package_body_width / 2.0) - courtyard_clearance_with_package));
04912 }
04913 if ((multiplier * ((package_body_width / 2.0) + courtyard_clearance_with_package)) > ymax)
04914 {
04915 ymax = (multiplier * ((package_body_width / 2.0) + courtyard_clearance_with_package));
04916 }
04917
04918 if (multiplier * (-courtyard_length / 2.0) < xmin)
04919 {
04920 xmin = multiplier * (-courtyard_length / 2.0);
04921 }
04922 if (multiplier * (courtyard_length / 2.0) > xmax)
04923 {
04924 xmax = multiplier * (courtyard_length / 2.0);
04925 }
04926 if (multiplier * (-courtyard_width / 2.0) < ymin)
04927 {
04928 ymin = multiplier * (-courtyard_width / 2.0);
04929 }
04930 if (multiplier * (courtyard_width / 2.0) > ymax)
04931 {
04932 ymax = multiplier * (courtyard_width / 2.0);
04933 }
04934
04935
04936 x_text = 0.0 ;
04937 y_text = (ymin - 10000.0);
04938 write_element_header (x_text, y_text);
04939
04940 pin_number = 1;
04941 for (i = 0; (i < number_of_rows); i++)
04942
04943
04944
04945 {
04946 for (j = 0; (j < number_of_columns); j++)
04947
04948
04949 {
04950 if (pin1_square && (pin_number == 1))
04951 {
04952 pin_pad_flags = g_strdup ("square");
04953 }
04954 else
04955 {
04956 pin_pad_flags = g_strdup ("");
04957 }
04958 pin_pad_name = g_strdup_printf ("%s%d", (row_letters[i]), (j + 1));
04959 if (get_pin_pad_exception (pin_pad_name))
04960 {
04961 write_pad
04962 (
04963 pin_number,
04964 pin_pad_name,
04965 multiplier * ((((-number_of_columns -1) / 2.0) + 1 + j) * pitch_x),
04966 multiplier * ((((-number_of_rows - 1) / 2.0) + 1 + i) * pitch_y),
04967 multiplier * ((((-number_of_columns -1) / 2.0) + 1 + j) * pitch_x),
04968 multiplier * ((((-number_of_rows - 1) / 2.0) + 1 + i) * pitch_y),
04969 multiplier * pad_diameter,
04970 multiplier * pad_clearance,
04971 multiplier * (pad_diameter + (2 * pad_solder_mask_clearance)),
04972 pin_pad_flags
04973 );
04974 }
04975 pin_number++;
04976 }
04977 }
04978
04979 if (fiducial)
04980 {
04981 fprintf (fp, (_("# Write fiducials\n")));
04982 pin_pad_name = g_strdup ("");
04983 pin_pad_flags = g_strdup ("");
04984 write_pad
04985 (
04986 pin_number,
04987 pin_pad_name,
04988 multiplier * ((silkscreen_length - courtyard_length > 2) ?
04989 (courtyard_length / 2) :
04990 ((courtyard_length / 2 ) + 1)),
04991
04992 multiplier * ((silkscreen_width - courtyard_width > 2) ?
04993 (-courtyard_width / 2) :
04994 ((-courtyard_width / 2 ) - 1)),
04995
04996 multiplier * ((silkscreen_length - courtyard_length > 2) ?
04997 (courtyard_length / 2) :
04998 ((courtyard_length / 2 ) + 1)),
04999
05000 multiplier * ((silkscreen_width - courtyard_width > 2) ?
05001 (-courtyard_width / 2) :
05002 ((-courtyard_width / 2 ) - 1)),
05003
05004 multiplier * fiducial_pad_diameter,
05005 multiplier * fiducial_pad_solder_mask_clearance,
05006
05007 multiplier * (fiducial_pad_diameter +
05008 (2 * fiducial_pad_solder_mask_clearance)),
05009
05010 pin_pad_flags
05011 );
05012 pin_number++;
05013 write_pad
05014 (
05015 pin_number,
05016 pin_pad_name,
05017 multiplier * ((silkscreen_length - courtyard_length > 2) ?
05018 (-courtyard_length / 2) :
05019 ((-courtyard_length / 2 ) - 1)),
05020
05021 multiplier * ((silkscreen_width - courtyard_width > 2) ?
05022 (courtyard_width / 2) :
05023 ((courtyard_width / 2 ) + 1)),
05024
05025 multiplier * ((silkscreen_length - courtyard_length > 2) ?
05026 (-courtyard_length / 2) :
05027 ((-courtyard_length / 2 ) - 1)),
05028
05029 multiplier * ((silkscreen_width - courtyard_width > 2) ?
05030 (courtyard_width / 2) :
05031 ((courtyard_width / 2 ) + 1)),
05032
05033 multiplier * fiducial_pad_diameter,
05034 multiplier * fiducial_pad_solder_mask_clearance,
05035
05036 multiplier * (fiducial_pad_diameter +
05037 (2 * fiducial_pad_solder_mask_clearance)),
05038
05039 pin_pad_flags
05040 );
05041 }
05042
05043 if (silkscreen_package_outline)
05044 {
05045 fprintf (fp, (_("# Write a package body on the silkscreen\n")));
05046 write_rectangle
05047 (
05048 multiplier * (-package_body_length / 2.0),
05049 multiplier * (-package_body_width / 2.0),
05050 multiplier * (package_body_length / 2.0),
05051 multiplier * (package_body_width / 2.0),
05052 multiplier * silkscreen_line_width
05053 );
05054 }
05055
05056 if (silkscreen_indicate_1)
05057 {
05058 fprintf (fp, (_("# Write a pin 1 marker on the silkscreen\n")));
05059 for (dx = 0.0; dx < (pitch_x / 2.0); dx = dx + silkscreen_line_width)
05060 {
05061 write_element_line
05062 (
05063 multiplier * (-package_body_length / 2.0),
05064 multiplier * ((-package_body_width / 2.0) + dx),
05065 multiplier * ((-package_body_length / 2.0) + dx),
05066 multiplier * (-package_body_width / 2.0),
05067 multiplier * (silkscreen_line_width)
05068 );
05069 }
05070 }
05071
05072 if (courtyard)
05073 {
05074 fprintf (fp, (_("# Write a courtyard on the silkscreen\n")));
05075 write_rectangle
05076 (
05077 xmin,
05078 ymin,
05079 xmax,
05080 ymax,
05081 multiplier * courtyard_line_width
05082 );
05083 }
05084
05085 if (attributes_in_footprint)
05086 {
05087 write_attributes ();
05088 }
05089
05090 fprintf (fp, "\n");
05091 fprintf (fp, ")\n");
05092 fclose (fp);
05093
05094 if (verbose)
05095 {
05096 g_log ("", G_LOG_LEVEL_INFO,
05097 (_("[%s] wrote footprint: %s.")),
05098 footprint_type,
05099 footprint_filename);
05100 }
05101 return (EXIT_SUCCESS);
05102 }
05103
05104
05108 static fpw_function_t
05109 bga_function_list[] =
05110 {
05111 #if GUI
05112 {
05113 "Set GUI constraints",
05114 bga_set_gui_constraints,
05115 "Set GUI constraints for a BGA package",
05116 NULL
05117 },
05118 #endif
05119 {
05120 "Create Element",
05121 bga_create_element,
05122 "Create a pcb element for a BGA package",
05123 NULL
05124 },
05125 {
05126 "Create Packages List",
05127 bga_create_packages_list,
05128 "Create a list of known BGA packages",
05129 NULL
05130 },
05131 {
05132 "DRC BGA Element",
05133 bga_drc,
05134 "Design Rule Check for a BGA package",
05135 NULL
05136 },
05137 {
05138 "Default Element Values",
05139 bga_get_default_footprint_values,
05140 "Get default values for a selected BGA package",
05141 NULL
05142 },
05143 {
05144 "Write footprint",
05145 bga_write_footprint,
05146 "Write a footprint for a BGA package",
05147 NULL
05148 }
05149 };
05150
05151
05152 REGISTER_FUNCTIONS (bga_function_list)
05153
05154
05155
05158 void
05159 bga_init ()
05160 {
05161 register_bga_function_list ();
05162 }
05163
05164
05165