diff --git a/precheck/pin_check.py b/precheck/pin_check.py index 301caae..7691ad1 100644 --- a/precheck/pin_check.py +++ b/precheck/pin_check.py @@ -7,7 +7,7 @@ from numbers import Real import gdstk from precheck_failure import PrecheckFailure -from tech_data import power_pins_layer, valid_lef_port_layers +from tech_data import power_pins_layer, power_pins_min_width, valid_lef_port_layers def canonicalize_rectangles( @@ -331,9 +331,10 @@ def pin_check( f"Port {current_pin} has wrong layer in {lef}: {layer} != {expected_layer}" ) lef_errors += 1 - if width < 1200: + expected_width = power_pins_min_width[tech] + if width < expected_width: logging.error( - f"Port {current_pin} has too small width in {lef}: {width/1000} < 1.2 um" + f"Port {current_pin} has too small width in {lef}: {width/1000} < {expected_width/1000} um" ) lef_errors += 1 if by > 10000: diff --git a/precheck/tech_data.py b/precheck/tech_data.py index 8e5d6fc..88a1493 100644 --- a/precheck/tech_data.py +++ b/precheck/tech_data.py @@ -153,6 +153,11 @@ power_pins_layer = { "ihp-sg13g2": "TopMetal1", "gf180mcuD": "Metal4", } +power_pins_min_width = { + "sky130A": 1200, # 1.2 um + "ihp-sg13g2": 2100, # 2.1 um + "gf180mcuD": 1200, # 1.2 um +} boundary_layer = { "sky130A": "prBoundary.boundary", "ihp-sg13g2": "prBoundary.boundary",