fix(precheck): improve error messages for connectivity checks

This commit is contained in:
htfab
2025-02-17 09:00:55 +02:00
committed by Uri Shaked
parent 0985eb1d46
commit 055de1f9fe
2 changed files with 9 additions and 8 deletions
+4 -4
View File
@@ -228,19 +228,19 @@ def analog_pin_check(
if connected and not expected_pc:
raise PrecheckFailure(
f"Analog pin {pin} connected but `analog_pins` is {analog_pins}"
f"Analog pin `ua[{pin}]` is connected to some metal but `analog_pins` is set to {analog_pins} in `info.yaml`. Either increase `analog_pins` to at least {pin+1}, or remove any metal4 or via3 adjacent to `ua[{pin}]`."
)
elif connected and not expected_pd:
raise PrecheckFailure(
f"Analog pin {pin} connected but `pinout.ua[{pin}]` is falsy"
f"Analog pin `ua[{pin}]` is connected to some metal but the description of `ua[{pin}]` in the pinout section of `info.yaml` is empty. Either add a description or remove any metal4 or via3 adjacent to `ua[{pin}]`."
)
elif not connected and expected_pc:
raise PrecheckFailure(
f"Analog pin {pin} not connected but `analog_pins` is {analog_pins}"
f"Analog pin `ua[{pin}]` is not connected to any adjacent metal but `analog_pins` is set to {analog_pins} in `info.yaml`. Either wire up `ua[{pin}]` to your design using metal4 or via3, or decrease `analog_pins` to {pin}."
)
elif not connected and expected_pd:
raise PrecheckFailure(
f"Analog pin {pin} not connected but `pinout.ua[{pin}]` is truthy"
f"Analog pin `ua[{pin}]` is not connected to any adjacent metal but the description of `ua[{pin}]` in the pinout section of `info.yaml` is non-empty. Either wire up `ua[{pin}]` to your design using metal4 or via3, or remove the description for the disconnected pin."
)
+5 -4
View File
@@ -664,7 +664,8 @@ def test_analog_exact_pins(gds_lef_analog_pin_example: tuple[str, str]):
def test_analog_less_pins(gds_lef_analog_pin_example: tuple[str, str]):
gds_file, lef_file = gds_lef_analog_pin_example
with pytest.raises(
precheck.PrecheckFailure, match="Analog pin 1 connected but `analog_pins` is 1"
precheck.PrecheckFailure,
match="Analog pin `ua\\[1\\]` is connected to some metal but `analog_pins` is set to 1 .*",
):
precheck.analog_pin_check(
gds_file, "sky130", True, False, 1, {"ua[0]": "x", "ua[1]": "x"}
@@ -675,7 +676,7 @@ def test_analog_more_pins(gds_lef_analog_pin_example: tuple[str, str]):
gds_file, lef_file = gds_lef_analog_pin_example
with pytest.raises(
precheck.PrecheckFailure,
match="Analog pin 2 not connected but `analog_pins` is 3",
match="Analog pin `ua\\[2\\]` is not connected to any adjacent metal but `analog_pins` is set to 3 .*",
):
precheck.analog_pin_check(
gds_file, "sky130", True, False, 3, {"ua[0]": "x", "ua[1]": "x"}
@@ -686,7 +687,7 @@ def test_analog_less_ua_entries(gds_lef_analog_pin_example: tuple[str, str]):
gds_file, lef_file = gds_lef_analog_pin_example
with pytest.raises(
precheck.PrecheckFailure,
match="Analog pin 1 connected but `pinout\\.ua\\[1\\]` is falsy",
match="Analog pin `ua\\[1\\]` is connected to some metal but the description of `ua\\[1\\]` .*",
):
precheck.analog_pin_check(gds_file, "sky130", True, False, 2, {"ua[0]": "x"})
@@ -695,7 +696,7 @@ def test_analog_more_ua_entries(gds_lef_analog_pin_example: tuple[str, str]):
gds_file, lef_file = gds_lef_analog_pin_example
with pytest.raises(
precheck.PrecheckFailure,
match="Analog pin 2 not connected but `pinout\\.ua\\[2\\]` is truthy",
match="Analog pin `ua\\[2\\]` is not connected to any adjacent metal but the description of `ua\\[2\\]` .*",
):
precheck.analog_pin_check(
gds_file,