Hello everyone! I am the author of this project, Yueh-Chang Shieh, and my advisor is Dr. Yi-Yu Liu.
This project is the implementation of my thesis, "Topological Escape Routing for Package Substrate Design Planning".
For detailed information, please refer to my thesis.
tadpole
├── CMakeLists.txt
├── Io_drc
├── README.html
├── README.md
├── bin
├── build
├── documentation
├── inc
├── result
├── src
├── tags
└── via_info-
The project uses CMake for compilation. The required dependencies are:
- Boost: Specifically, the Boost Graph Library, Geometry Library, and Polygon Library.
- fmt: Used for formatted output (
std::cout). - xlsxwriter: Not sure where I used it—maybe it's unnecessary.
- Gnuplot 5.2: The geometrical visualization generates a Gnuplot 5 script, so please update to Gnuplot 5.
- Python3 library openpyxl:
This is used to automate the generation of an XLSX file containing all results.
The related files are./src/experimentw.cppand./src/write_to_xlsx.py.
You can find the generated results in the result/ directory.
-
Key points about the CMake setup:
-
Source files (
.cpp) are in thesrc/directory. -
Header files (
.h) are in theinc/directory. -
tags file is generated by
ctags, which helps with code navigation—highly recommended. -
Input files are stored in the
Io_drc/andvia_info/directories. -
To compile the project, run the following commands from the
tadpoledirectory:cmake . -B build make -C build
-
-
CMake-generated files will be stored in the
build/directory.
Executables will be in thebin/directory. To run them, use:./bin/demo_1 ./bin/experiment2
-
The core implementation is in
./inc/topology.h.
All source files that use it must include:#include <topology.h>
To understand how to use it, refer to
./src/experiment2.cpp,
which implements the entire topology escape routing flow from my thesis.
Start tracing the code from there.
-
If you want to understand how the triple list table is used in my thesis,
check outdemo_1.cpptodemo_6.cpp. These demos generate the illustrations in my thesis.
Try them out to better understand the core implementation of the triple list table.⚠ Warning: If you encounter a segmentation fault or unexpected results,
it is likely due to callingmake_sliceon topology vertices that are not in the same slice.
This is invalid and leads to undefined behavior.In these demos, the class
syc::topology::model::v_01::sketchable_forest<>
is the actual implementation of the triple list table.- v_01 refers to the first version.
- The name may differ from the final thesis due to later revisions.
-
Take a look at
./inc/topology.h.
I recommend using ctags for code navigation.
The right-hand panel in the screenshot below is from the
vim-ctags plugin,
which displays the generated tags file.- The implementation is in the
syc::topologynamespace. - v_01 is the first version, where
sketchable_forestis implemented. - Later versions (
v_02,v_03) inherit from this class. - Only v_01 and v_03 are relevant—you can ignore v_02.
- The implementation is in the
-
Other unmentioned files are mostly temporary files or contain bugs—feel free to explore them.
Due to my graduation deadline, some parts of the code are messy—sorry about that! 😅
Let me know if you’d like further refinements! 🚀

