1 个不稳定版本
0.1.0 | 2019 年 8 月 11 日 |
---|
#6 在 #liberty
每月下载量 57
81KB
1K SLoC
liberty-parse
Rust 的 Liberty 文件格式解析器
示例用法
解析 Liberty 文件中的库
use liberty_parse::parse_lib;
let lib_str = r#"
library(sample) {
cell(AND2) {
area: 1;
}
}
"#;
for lib in parse_lib(lib_str).unwrap() {
println!("Library '{}' has {} cells", lib.name, lib.cells.len());
if let Some(cell) = lib.cells.get("AND2") {
let area = cell.simple_attributes.get("area").map_or(0.0, |v| v.float());
println!("Cell AND2 has area: {}", area);
} else {
println!("Cell AND2 doesn't exist!");
}
}
限制
-
无法自动解析来自
include
语句的文件 -
无法解析引脚名称中的总线语法。例如
pin (X[0:3]){ }
lib.rs
:
此软件包读取 Liberty 格式文件,通常由 EDA 工具用于描述库单元(包括标准单元、硬 IP 等)。
示例
use liberty_parse::parse_lib;
let lib_str = r#"
library(sample) {
cell(AND2) {
area: 1;
}
}
"#;
for lib in parse_lib(lib_str).unwrap() {
println!("Library '{}' has {} cells", lib.name, lib.cells.len());
let area = lib
.cells
.get("AND2")
.and_then(|c| c.simple_attributes.get("area"))
.map_or(-1.0, |v| v.float());
println!("Cell AND2 has area: {}", area);
}
依赖项
~1.5MB
~26K SLoC