From 6ee592f99d3fa113cd4bf59c83e2f4d2c5ed38ee Mon Sep 17 00:00:00 2001 From: evanshultz Date: Wed, 30 Sep 2020 00:34:27 -0700 Subject: [PATCH 1/3] Support decimal pincounts in custom names --- .../ipc_gullwing_generator.py | 31 +++++++++++++------ scripts/Packages/package_config_KLCv3.yaml | 6 ++-- 2 files changed, 25 insertions(+), 12 deletions(-) diff --git a/scripts/Packages/Package_Gullwing__QFP_SOIC_SO/ipc_gullwing_generator.py b/scripts/Packages/Package_Gullwing__QFP_SOIC_SO/ipc_gullwing_generator.py index af63085ba..1955c83db 100755 --- a/scripts/Packages/Package_Gullwing__QFP_SOIC_SO/ipc_gullwing_generator.py +++ b/scripts/Packages/Package_Gullwing__QFP_SOIC_SO/ipc_gullwing_generator.py @@ -168,13 +168,12 @@ def __createFootprintVariant(self, device_params, header, dimensions, with_therm pincount_full = device_params['num_pins_x']*2 + device_params['num_pins_y']*2 if 'hidden_pins' in device_params: - pincount_text = '{}-{}'.format(pincount_full - len(device_params['hidden_pins']), pincount_full) pincount = pincount_full - len(device_params['hidden_pins']) + pincount2 = '{}'.format(pincount_full) elif 'deleted_pins' in device_params: - pincount_text = '{}-{}'.format(pincount_full, pincount_full - len(device_params['deleted_pins'])) - pincount = pincount_full - len(device_params['deleted_pins']) + pincount = pincount_full + pincount2 = '{}'.format(pincount_full - len(device_params['deleted_pins'])) else: - pincount_text = '{}'.format(pincount_full) pincount = pincount_full ipc_reference = 'ipc_spec_gw_large_pitch' if device_params['pitch'] >= 0.625 else 'ipc_spec_gw_small_pitch' @@ -187,12 +186,20 @@ def __createFootprintVariant(self, device_params, header, dimensions, with_therm pitch = device_params['pitch'] - name_format = self.configuration['fp_name_format_string_no_trailing_zero_pincount_text'] + if 'hidden_pins' in device_params or 'deleted_pins' in device_params: + name_format = self.configuration['fp_name_format_string_no_trailing_zero_2pincount'] + else: + name_format = self.configuration['fp_name_format_string_no_trailing_zero'] + EP_size = {'x':0, 'y':0} EP_mask_size = {'x':0, 'y':0} if dimensions['has_EP']: - name_format = self.configuration['fp_name_EP_format_string_no_trailing_zero_pincount_text'] + if 'hidden_pins' in device_params or 'deleted_pins' in device_params: + name_format = self.configuration['fp_name_EP_format_string_no_trailing_zero_2pincount'] + else: + name_format = self.configuration['fp_name_EP_format_string_no_trailing_zero'] + if 'EP_size_x_overwrite' in device_params: EP_size = { 'x':device_params['EP_size_x_overwrite'], @@ -204,7 +211,11 @@ def __createFootprintVariant(self, device_params, header, dimensions, with_therm 'y':dimensions['EP_size_y'].nominal } if 'EP_mask_x' in dimensions: - name_format = self.configuration['fp_name_EP_custom_mask_format_string_no_trailing_zero_pincount_text'] + if 'hidden_pins' in device_params or 'deleted_pins' in device_params: + name_format = self.configuration['fp_name_EP_custom_mask_format_string_no_trailing_zero_2pincount'] + else: + name_format = self.configuration['fp_name_EP_custom_mask_format_string_no_trailing_zero'] + EP_mask_size = {'x':dimensions['EP_mask_x'].nominal, 'y':dimensions['EP_mask_y'].nominal} EP_size = Vector2D(EP_size) @@ -222,7 +233,8 @@ def __createFootprintVariant(self, device_params, header, dimensions, with_therm man=device_params.get('manufacturer',''), mpn=device_params.get('part_number',''), pkg=header['device_type'], - pincount=pincount_text, + pincount=pincount, + pincount2=pincount2 if 'hidden_pins' in device_params or 'deleted_pins' in device_params else '', size_y=size_y, size_x=size_x, pitch=device_params['pitch'], @@ -239,7 +251,8 @@ def __createFootprintVariant(self, device_params, header, dimensions, with_therm man=device_params.get('manufacturer',''), mpn=device_params.get('part_number',''), pkg=header['device_type'], - pincount=pincount_text, + pincount=pincount, + pincount2=pincount2 if 'hidden_pins' in device_params or 'deleted_pins' in device_params else '', size_y=size_y, size_x=size_x, pitch=device_params['pitch'], diff --git a/scripts/Packages/package_config_KLCv3.yaml b/scripts/Packages/package_config_KLCv3.yaml index aea82f2a3..52f114fee 100644 --- a/scripts/Packages/package_config_KLCv3.yaml +++ b/scripts/Packages/package_config_KLCv3.yaml @@ -1,12 +1,12 @@ fp_name_format_string: '{man:s}_{mpn:s}_{pkg:s}-{pincount:d}_{size_x:.1f}x{size_y:.1f}mm_P{pitch:.2f}mm{suffix:s}' -fp_name_format_string_pincount_text: '{man:s}_{mpn:s}_{pkg:s}-{pincount:s}_{size_x:.1f}x{size_y:.1f}mm_P{pitch:.2f}mm{suffix:s}' +fp_name_format_string_two_2pincount: '{man:s}_{mpn:s}_{pkg:s}-{pincount:d}-{pincount2:s}_{size_x:.1f}x{size_y:.1f}mm_P{pitch:.2f}mm{suffix:s}' keyword_fp_string: '{man:s} {package:s} {category:s}' lib_name_format_string: 'Package_{category:s}' fp_name_format_string_no_trailing_zero: '{man:s}_{mpn:s}_{pkg:s}-{pincount:d}_{size_x:g}x{size_y:g}mm_P{pitch:g}mm{suffix:s}{suffix2:s}' -fp_name_format_string_no_trailing_zero_pincount_text: '{man:s}_{mpn:s}_{pkg:s}-{pincount:s}_{size_x:g}x{size_y:g}mm_P{pitch:g}mm{suffix:s}{suffix2:s}' +fp_name_format_string_no_trailing_zero_2pincount: '{man:s}_{mpn:s}_{pkg:s}-{pincount:d}-{pincount2:s}_{size_x:g}x{size_y:g}mm_P{pitch:g}mm{suffix:s}{suffix2:s}' fp_name_lga_format_string_no_trailing_zero: '{man:s}_{mpn:s}_{pkg:s}-{pincount:d}_{size_x:g}x{size_y:g}mm_P{pitch:g}mm{layout:s}{suffix:s}{suffix2:s}' @@ -17,6 +17,6 @@ fp_name_EP_format_string_no_trailing_zero: '{man:s}_{mpn:s}_{pkg:s}-{pincount:d} fp_name_EP_format_string_no_trailing_zero_pincount_text: '{man:s}_{mpn:s}_{pkg:s}-{pincount:s}-1EP_{size_x:g}x{size_y:g}mm_P{pitch:g}mm{suffix:s}_EP{ep_size_x:g}x{ep_size_y:g}mm{suffix2:s}{vias:s}' fp_name_EP_custom_mask_format_string_no_trailing_zero: '{man:s}_{mpn:s}_{pkg:s}-{pincount:d}-1EP_{size_x:g}x{size_y:g}mm_P{pitch:g}mm{suffix:s}_EP{ep_size_x:g}x{ep_size_y:g}mm_Mask{mask_size_x:g}x{mask_size_y:g}mm{suffix2:s}{vias:s}' -fp_name_EP_custom_mask_format_string_no_trailing_zero_pincount_text: '{man:s}_{mpn:s}_{pkg:s}-{pincount:s}-1EP_{size_x:g}x{size_y:g}mm_P{pitch:g}mm{suffix:s}_EP{ep_size_x:g}x{ep_size_y:g}mm_Mask{mask_size_x:g}x{mask_size_y:g}mm{suffix2:s}{vias:s}' +fp_name_EP_custom_mask_format_string_no_trailing_zero_2pincount: '{man:s}_{mpn:s}_{pkg:s}-{pincount:d}-{pincount2:s}-1EP_{size_x:g}x{size_y:g}mm_P{pitch:g}mm{suffix:s}_EP{ep_size_x:g}x{ep_size_y:g}mm_Mask{mask_size_x:g}x{mask_size_y:g}mm{suffix2:s}{vias:s}' thermal_via_suffix: "_ThermalVias" From dc2e1b10d4366f5a8fe3a9e24591e2594a73bbcc Mon Sep 17 00:00:00 2001 From: evanshultz Date: Wed, 30 Sep 2020 01:02:20 -0700 Subject: [PATCH 2/3] Fix EP number --- .../ipc_gullwing_generator.py | 13 ++++++++----- scripts/Packages/package_config_KLCv3.yaml | 6 +++--- 2 files changed, 11 insertions(+), 8 deletions(-) diff --git a/scripts/Packages/Package_Gullwing__QFP_SOIC_SO/ipc_gullwing_generator.py b/scripts/Packages/Package_Gullwing__QFP_SOIC_SO/ipc_gullwing_generator.py index 1955c83db..7fc24abfa 100755 --- a/scripts/Packages/Package_Gullwing__QFP_SOIC_SO/ipc_gullwing_generator.py +++ b/scripts/Packages/Package_Gullwing__QFP_SOIC_SO/ipc_gullwing_generator.py @@ -170,11 +170,14 @@ def __createFootprintVariant(self, device_params, header, dimensions, with_therm if 'hidden_pins' in device_params: pincount = pincount_full - len(device_params['hidden_pins']) pincount2 = '{}'.format(pincount_full) + present_pins = pincount_full - len(device_params['hidden_pins']) elif 'deleted_pins' in device_params: pincount = pincount_full pincount2 = '{}'.format(pincount_full - len(device_params['deleted_pins'])) + present_pins = pincount_full - len(device_params['deleted_pins']) else: pincount = pincount_full + present_pins = pincount ipc_reference = 'ipc_spec_gw_large_pitch' if device_params['pitch'] >= 0.625 else 'ipc_spec_gw_small_pitch' if device_params.get('force_small_pitch_ipc_definition', False): @@ -234,7 +237,7 @@ def __createFootprintVariant(self, device_params, header, dimensions, with_therm mpn=device_params.get('part_number',''), pkg=header['device_type'], pincount=pincount, - pincount2=pincount2 if 'hidden_pins' in device_params or 'deleted_pins' in device_params else '', + pincount2='-{}'.format(pincount2) if 'hidden_pins' in device_params or 'deleted_pins' in device_params else '', size_y=size_y, size_x=size_x, pitch=device_params['pitch'], @@ -252,7 +255,7 @@ def __createFootprintVariant(self, device_params, header, dimensions, with_therm mpn=device_params.get('part_number',''), pkg=header['device_type'], pincount=pincount, - pincount2=pincount2 if 'hidden_pins' in device_params or 'deleted_pins' in device_params else '', + pincount2='-{}'.format(pincount2) if 'hidden_pins' in device_params or 'deleted_pins' in device_params else '', size_y=size_y, size_x=size_x, pitch=device_params['pitch'], @@ -281,7 +284,7 @@ def __createFootprintVariant(self, device_params, header, dimensions, with_therm manufacturer = device_params.get('manufacturer',''), package = header['device_type'], mpn = device_params.get('part_number',''), - pincount = pincount, + pincount = present_pins, datasheet = device_params['size_source'], scriptname = os.path.basename(__file__).replace(" ", " ") ).lstrip()) @@ -310,7 +313,7 @@ def __createFootprintVariant(self, device_params, header, dimensions, with_therm device_params.get('EP_paste_coverage', DEFAULT_PASTE_COVERAGE)) EP = ExposedPad( - number=pincount+1, size=EP_size, mask_size=EP_mask_size, + number=present_pins+1, size=EP_size, mask_size=EP_mask_size, paste_layout=thermals.get('EP_num_paste_pads'), paste_coverage=paste_coverage, via_layout=thermals.get('count', 0), @@ -326,7 +329,7 @@ def __createFootprintVariant(self, device_params, header, dimensions, with_therm ) else: EP = ExposedPad( - number=pincount+1, size=EP_size, mask_size=EP_mask_size, + number=present_pins+1, size=EP_size, mask_size=EP_mask_size, paste_layout=device_params.get('EP_num_paste_pads', 1), paste_coverage=device_params.get('EP_paste_coverage', DEFAULT_PASTE_COVERAGE), **pad_shape_details diff --git a/scripts/Packages/package_config_KLCv3.yaml b/scripts/Packages/package_config_KLCv3.yaml index 52f114fee..14fd43898 100644 --- a/scripts/Packages/package_config_KLCv3.yaml +++ b/scripts/Packages/package_config_KLCv3.yaml @@ -1,12 +1,12 @@ fp_name_format_string: '{man:s}_{mpn:s}_{pkg:s}-{pincount:d}_{size_x:.1f}x{size_y:.1f}mm_P{pitch:.2f}mm{suffix:s}' -fp_name_format_string_two_2pincount: '{man:s}_{mpn:s}_{pkg:s}-{pincount:d}-{pincount2:s}_{size_x:.1f}x{size_y:.1f}mm_P{pitch:.2f}mm{suffix:s}' +fp_name_format_string_two_2pincount: '{man:s}_{mpn:s}_{pkg:s}-{pincount:d}{pincount2:s}_{size_x:.1f}x{size_y:.1f}mm_P{pitch:.2f}mm{suffix:s}' keyword_fp_string: '{man:s} {package:s} {category:s}' lib_name_format_string: 'Package_{category:s}' fp_name_format_string_no_trailing_zero: '{man:s}_{mpn:s}_{pkg:s}-{pincount:d}_{size_x:g}x{size_y:g}mm_P{pitch:g}mm{suffix:s}{suffix2:s}' -fp_name_format_string_no_trailing_zero_2pincount: '{man:s}_{mpn:s}_{pkg:s}-{pincount:d}-{pincount2:s}_{size_x:g}x{size_y:g}mm_P{pitch:g}mm{suffix:s}{suffix2:s}' +fp_name_format_string_no_trailing_zero_2pincount: '{man:s}_{mpn:s}_{pkg:s}-{pincount:d}{pincount2:s}_{size_x:g}x{size_y:g}mm_P{pitch:g}mm{suffix:s}{suffix2:s}' fp_name_lga_format_string_no_trailing_zero: '{man:s}_{mpn:s}_{pkg:s}-{pincount:d}_{size_x:g}x{size_y:g}mm_P{pitch:g}mm{layout:s}{suffix:s}{suffix2:s}' @@ -17,6 +17,6 @@ fp_name_EP_format_string_no_trailing_zero: '{man:s}_{mpn:s}_{pkg:s}-{pincount:d} fp_name_EP_format_string_no_trailing_zero_pincount_text: '{man:s}_{mpn:s}_{pkg:s}-{pincount:s}-1EP_{size_x:g}x{size_y:g}mm_P{pitch:g}mm{suffix:s}_EP{ep_size_x:g}x{ep_size_y:g}mm{suffix2:s}{vias:s}' fp_name_EP_custom_mask_format_string_no_trailing_zero: '{man:s}_{mpn:s}_{pkg:s}-{pincount:d}-1EP_{size_x:g}x{size_y:g}mm_P{pitch:g}mm{suffix:s}_EP{ep_size_x:g}x{ep_size_y:g}mm_Mask{mask_size_x:g}x{mask_size_y:g}mm{suffix2:s}{vias:s}' -fp_name_EP_custom_mask_format_string_no_trailing_zero_2pincount: '{man:s}_{mpn:s}_{pkg:s}-{pincount:d}-{pincount2:s}-1EP_{size_x:g}x{size_y:g}mm_P{pitch:g}mm{suffix:s}_EP{ep_size_x:g}x{ep_size_y:g}mm_Mask{mask_size_x:g}x{mask_size_y:g}mm{suffix2:s}{vias:s}' +fp_name_EP_custom_mask_format_string_no_trailing_zero_2pincount: '{man:s}_{mpn:s}_{pkg:s}-{pincount:d}{pincount2:s}-1EP_{size_x:g}x{size_y:g}mm_P{pitch:g}mm{suffix:s}_EP{ep_size_x:g}x{ep_size_y:g}mm_Mask{mask_size_x:g}x{mask_size_y:g}mm{suffix2:s}{vias:s}' thermal_via_suffix: "_ThermalVias" From a49d89bd421f4d2809f54f472a16fa4885d6f094 Mon Sep 17 00:00:00 2001 From: evanshultz Date: Wed, 30 Sep 2020 01:03:13 -0700 Subject: [PATCH 3/3] Correct deleted/hidden pin FP name --- .../Package_Gullwing__QFP_SOIC_SO/ipc_gullwing_generator.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/scripts/Packages/Package_Gullwing__QFP_SOIC_SO/ipc_gullwing_generator.py b/scripts/Packages/Package_Gullwing__QFP_SOIC_SO/ipc_gullwing_generator.py index 7fc24abfa..0d532787f 100755 --- a/scripts/Packages/Package_Gullwing__QFP_SOIC_SO/ipc_gullwing_generator.py +++ b/scripts/Packages/Package_Gullwing__QFP_SOIC_SO/ipc_gullwing_generator.py @@ -237,7 +237,7 @@ def __createFootprintVariant(self, device_params, header, dimensions, with_therm mpn=device_params.get('part_number',''), pkg=header['device_type'], pincount=pincount, - pincount2='-{}'.format(pincount2) if 'hidden_pins' in device_params or 'deleted_pins' in device_params else '', + pincount2='_{}N'.format(pincount2) if 'hidden_pins' in device_params or 'deleted_pins' in device_params else '', size_y=size_y, size_x=size_x, pitch=device_params['pitch'], @@ -255,7 +255,7 @@ def __createFootprintVariant(self, device_params, header, dimensions, with_therm mpn=device_params.get('part_number',''), pkg=header['device_type'], pincount=pincount, - pincount2='-{}'.format(pincount2) if 'hidden_pins' in device_params or 'deleted_pins' in device_params else '', + pincount2='_{}N'.format(pincount2) if 'hidden_pins' in device_params or 'deleted_pins' in device_params else '', size_y=size_y, size_x=size_x, pitch=device_params['pitch'],