Repository: siliconcompiler/lambdapdk (language: python)

Issue:
add symbolic link check into CI to avoid the use of them
Windows does not handle them well, so it's best to avoid them.
Additional tests could be used to ensure files that should be identical are.


Discussion / hints:

Fix patch:
diff --git a/lambdapdk/asap7/libs/asap7sc7p5t_shared/apr/openroad/global_connect.tcl b/lambdapdk/asap7/libs/asap7sc7p5t_shared/apr/openroad/global_connect.tcl
deleted file mode 100644
index eabd3892..00000000
--- a/lambdapdk/asap7/libs/asap7sc7p5t_shared/apr/openroad/global_connect.tcl
+++ /dev/null
@@ -1,5 +0,0 @@
-####################################
-# global connections
-####################################
-add_global_connection -net {VDD} -pin_pattern {VDD} -power
-add_global_connection -net {VSS} -pin_pattern {VSS} -ground
diff --git a/lambdapdk/asap7/libs/asap7sc7p5t_shared/apr/openroad/pdngen.tcl b/lambdapdk/asap7/libs/asap7sc7p5t_shared/apr/openroad/pdngen.tcl
deleted file mode 100644
index 83f3315a..00000000
--- a/lambdapdk/asap7/libs/asap7sc7p5t_shared/apr/openroad/pdngen.tcl
+++ /dev/null
@@ -1,15 +0,0 @@
-####################################
-# voltage domains
-####################################
-set_voltage_domain -name {CORE} -power {VDD} -ground {VSS}
-####################################
-# standard cell grid
-####################################
-define_pdn_grid -name {top} -voltage_domains {CORE}
-add_pdn_stripe -grid {top} -layer {M1} -width {0.018} -pitch {0.54} -offset {0} -followpins
-add_pdn_stripe -grid {top} -layer {M2} -width {0.018} -pitch {0.54} -offset {0} -followpins
-add_pdn_stripe -grid {top} -layer {M5} -width {0.12} -spacing {0.072} -pitch {5.904} -offset {0.300}
-add_pdn_stripe -grid {top} -layer {M6} -width {0.288} -spacing {0.096} -pitch {6.0} -offset {0.513}
-add_pdn_connect -grid {top} -layers {M1 M2}
-add_pdn_connect -grid {top} -layers {M2 M5}
-add_pdn_connect -grid {top} -layers {M5 M6}
\ No newline at end of file
diff --git a/lambdapdk/asap7/libs/asap7sc7p5t_shared/apr/openroad/tracks.tcl b/lambdapdk/asap7/libs/asap7sc7p5t_shared/apr/openroad/tracks.tcl
deleted file mode 100644
index 648d0636..00000000
--- a/lambdapdk/asap7/libs/asap7sc7p5t_shared/apr/openroad/tracks.tcl
+++ /dev/null
@@ -1,18 +0,0 @@
-make_tracks Pad -x_offset 0.116 -x_pitch 0.08 -y_offset 0.116 -y_pitch 0.08
-make_tracks M9 -x_offset 0.116 -x_pitch 0.08 -y_offset 0.116 -y_pitch 0.08
-make_tracks M8 -x_offset 0.116 -x_pitch 0.08 -y_offset 0.116 -y_pitch 0.08
-make_tracks M7 -x_offset 0.016 -x_pitch 0.064 -y_offset 0.016 -y_pitch 0.064
-make_tracks M6 -x_offset 0.012 -x_pitch 0.048 -y_offset 0.016 -y_pitch 0.064
-make_tracks M5 -x_offset 0.012 -x_pitch 0.048 -y_offset 0.012 -y_pitch 0.048
-make_tracks M4 -x_offset 0.009 -x_pitch 0.036 -y_offset 0.012 -y_pitch 0.048
-make_tracks M3 -x_offset 0.009 -x_pitch 0.036 -y_offset 0.009 -y_pitch 0.036
-
-make_tracks M2 -x_offset 0.009 -x_pitch 0.036 -y_offset 0.045 -y_pitch 0.270
-make_tracks M2 -x_offset 0.009 -x_pitch 0.036 -y_offset 0.081 -y_pitch 0.270
-make_tracks M2 -x_offset 0.009 -x_pitch 0.036 -y_offset 0.117 -y_pitch 0.270
-make_tracks M2 -x_offset 0.009 -x_pitch 0.036 -y_offset 0.153 -y_pitch 0.270
-make_tracks M2 -x_offset 0.009 -x_pitch 0.036 -y_offset 0.189 -y_pitch 0.270
-make_tracks M2 -x_offset 0.009 -x_pitch 0.036 -y_offset 0.225 -y_pitch 0.270
-make_tracks M2 -x_offset 0.009 -x_pitch 0.036 -y_offset 0.270 -y_pitch 0.270
-
-make_tracks M1 -x_offset 0.009 -x_pitch 0.036 -y_offset 0.009 -y_pitch 0.036


Test patch:
diff --git a/tests/test_paths.py b/tests/test_paths.py
index 17eb59dd..ebc1bbab 100644
--- a/tests/test_paths.py
+++ b/tests/test_paths.py
@@ -1,5 +1,6 @@
 import pytest
 from siliconcompiler import Chip
+import os
 
 from lambdapdk import asap7, freepdk45, sky130, gf180
 from lambdapdk.asap7.libs import asap7sc7p5t, fakeram7
@@ -25,3 +26,12 @@ def test_lib_paths(lib):
     chip = Chip('<lib>')
     chip.use(lib)
     assert chip.check_filepaths()
+
+
+def test_symbolic_links():
+    lambda_root = os.path.dirname(os.path.abspath(os.path.dirname(__file__)))
+    for root, dirs, files in os.walk(lambda_root):
+        for d in dirs:
+            assert not os.path.islink(os.path.join(root, d))
+        for f in files:
+            assert not os.path.islink(os.path.join(root, f))