Crate libreda_pnr
source · [−]Expand description
ASIC place-and-route framework.
This crate contains interface definitions for place-and-route related algorithms.
The core idea of the framework is to enable independent development of place & route engines which then can easily be plugged together.
Overview
Incomplete overview:
place
- interfaces for placement engines and representations of placement problemsrebuffer
- interface for buffer insertion enginesroute
- interfaces for routing enginestiming_analysis
- interfaces for static timing-analysis (STA) enginesutil
- useful functions which don’t yet have their own category
Implementations
Implementations of place and route algorithms are not included in this crate. Some can be found in the following list:
Placement and legalizaton
- electron-placer (written in Rust)
- Coloquinte (C bindings, statically linked)
Routing
- TritonRoute (subprocess called by passing LEF/DEF files)
- mycelium (written in Rust)
Re-exports
pub use libreda_db;
Modules
The prelude
helps to import most commonly used modules.
A Design
structure collects information necessary for the place and route steps.
This includes the netlist and layout, properties of cell instances, etc.
Between Design
structures and place & route engines lies an abstraction layer
made by traits such as PlacementProblem
.
Interface definitions for legalization engines (also known as detail placement).
Metrics and statistics for evaluating placement & routing quality.
Interface definitions for placement related algorithms.
Shortcut to most things defined in this crate.
Trait definitions for re-buffering of high-fanout nets. This includes clock-tree and buffer-tree generators.
Interface definitions for routing related algorithms.
Generate test data.
Interfaces for timing analysis engines.
Collection of utility functions.