1. 项目结构分析和模块
本项目的目录结构分为多个模块,每个模块包含若干源文件和头文件,主要模块和目录如下:
接口:
src/api:包含API接口相关代码,包括pybind11对c++接口的python封装,如apiPy
。
src/main: 包含主程序入口,如anaroute
和main.cpp
。
输入输出文件:
src/parser:包含解析器模块,如parGds
、parLef
、parNetlist
等。
src/writer:包含写入器模块,如wrDumb
、wrGds
、wrLayout
等。
基础数据结构
src/global:包含全局定义和配置,如define
、global
、namespace
、param
和type
等。
src/ds:包含各种数据结构的实现,如disjointSet
、hash
、pqueue
和tree
等。
src/db:包含数据库模块,如dbBlk
、dbCir
、dbNet
、dbPin
等。
src/db/lef:包含与LEF文件格式相关的代码,如lefLayers
、lefSite
、lefVia
等。
src/db/net:包含与电路网络相关的数据结构,如netBase
、netNode
等。
布线
src/graph:包含图算法相关代码,如bipartite
、matching
、mst
等。
src/acs : 管理Pine access point的生成。
src/drc:包含DRC(Design Rule Check)相关的代码,如drcMgr
。
src/dr: 包含详细的布线算法和管理器,如drAstar
、drGridAstar
、drGridRoute
等。
src/gr:包含全局布线相关代码,如grAstar
、grGridRoute
、grMgr
等。
src/geo:包含几何数据结构和算法,如box
、geometry
、kdtree
、polygon
等。
src/util:包含实用工具和辅助功能,如Assert
、MsgPrinter
、timeUsage
等。
include:包含外部库的头文件,如cmdline
、ctpl
、nanoflann
等。