How cuhk-eda/xplace works
Xplace is a GPU-accelerated chip global-placement framework. Users provide a benchmark or custom design and placement options; the Python entry point hands execution to the placement workflow, which loads a design, initializes placement, optimizes positions, and can proceed through legalization, detailed placement, and evaluation. Documented optional branches add timing-driven optimization, routability-aware placement, and GPU global routing; a standalone GPU timer is another product capability. The graph follows documented workflow stages; several orchestration and optional-feature links rely on README descriptions because their implementation was not sampled.
Main entry points: run_placement.py Placement workflow · nesterov_optimizer.py Global placement optimizer · database.py Design loader · main.py Python CLI
Components 18
Design input
- Python CLI
main.py - Design loader
src/database.py - Native design parser
cpp_to_py/io_parser - Placement database
src/database.py
Placement optimization
- Placement workflow
src/run_placement.py - Placement initialization
src/initializer.py - Global placement optimizer
src/nesterov_optimizer.py - Placement objectives
src/core - Parameter scheduling
src/param_scheduler.py
Refinement and evaluation
- Legalization
src/core/macro_legalization.py - Detailed placement
src/detail_placement.py - Placement evaluation
src/evaluator.py
Timing and routing
- Timing optimization
src/core/timing_opt.py - GPU timing engine
cpp_to_py/gputimer - GPU global router
cpp_to_py/gpugr - Routing force
src/core/route_force.py
Other components
- Placement user
- Placement result
Connections 21
- Placement user → Python CLI: sets options
- Python CLI → Placement workflow: starts workflow
- Placement workflow → Design loader: loads design
- Design loader → Native design parser: parses input
- Design loader → Placement database: builds model
- Placement workflow → Placement initialization: initializes placement
- Placement initialization → Placement database: reads design
- Placement workflow → Global placement optimizer: runs optimization
- Global placement optimizer → Placement database: updates positions
- Global placement optimizer → Placement objectives: evaluates costs
- Global placement optimizer → Parameter scheduling: gets parameters
- Placement workflow → Legalization: legalizes placement
- Placement workflow → Detailed placement: refines placement
- Placement workflow → Placement evaluation: evaluates result
- Placement workflow → Placement result: writes outputs
- Placement workflow → Timing optimization: enables timing mode
- Timing optimization → GPU timing engine: computes timing
- Placement workflow → Routing force: enables routability mode
- Routing force → GPU global router: uses routing estimates
- Placement workflow → GPU global router: runs route evaluation
- GPU timing engine → Placement user: reports timing