Expand description
A liberty cell library parser written in Rust
See Liberty::parse_str, Liberty, Lib, etc.
Structs§
- Cell
- A library cell consisting of pin definitions and sequential functionality definitions.
- FFDef
- LUT
- A LUT with associated template.
- LUTTemplate
- A LUT template.
- Latch
Def - Lib
- A liberty library wrapped inside
library(...) {...}
. - Liberty
- A liberty file with multiple libraries. This is the main entry of parsing.
- Logic
Expr - Pin
- A library pin (macro pin) with metadata (direction, function, caps, etc) and timing arcs (delay, slew & constraints).
- State
Table Def - Timing
- A timing arc definition. It contains arc type, timing sense, and delay/slew/constraint LUTs.
- Units
- All units are stored as ratio to the standard units (s, F, Ohm, A, …)
- Unparsed
- A warning record of unparsed (but semantically valid) Liberty content.
Enums§
- Clear
Preset Var - Clear & preset behavior definition.
- LUTVariable
- Logic
Expr Inst - The element of the stack language can be:
- PinDirection
- Sequential
Def - A sequential element specification. Optionally defines a number of internal states.
- State
Table Value - All possible state table items Note that we merged the “-” and “N” in next internal nodes into a single “N”. According to the hints in Liberty docs, they are actually different in event generation? No difference in our applications yet.
- Timing
Sense - Timing
Type