5 个版本

0.0.5 2024 年 6 月 5 日
0.0.4 2024 年 6 月 4 日
0.0.3 2021 年 12 月 10 日
0.0.2 2021 年 11 月 1 日
0.0.1 2021 年 2 月 22 日

#717解析器实现

Download history 225/week @ 2024-05-31 50/week @ 2024-06-07 4/week @ 2024-06-14

每月 213 次下载

AGPL-3.0 或更高版本

185KB
3.5K SLoC

OASIS 流读取器/写入器

libreda-oasisLibrEDA 的布局输入/输出模块

OASIS 是芯片布局的二进制文件格式,是 GDSII 的良好继承者。这个库提供了将 libreda-db 布局写入和读取 OASIS 文件的代码。

文档

此包使用代码中的 docstrings 进行文档化。要查看文档,请克隆此存储库并运行:cargo doc --open

致谢

  • 自 2020 年 12 月以来,此项目是 libreda.org 的一部分,因此由 NLnetNGI0 资助。
  • 代码大量借鉴了 KLayout 的 OASIS 实现。

lib.rs:

用于读取和写入 OASIS 文件的库。

OASIS 是一种二进制格式,用于存储二维几何数据,通常用于硅芯片布局。其目的是与较旧的 GDS2 格式非常相似。

示例

从 OASIS 读取布局

use std::fs::File;
use libreda_oasis::OASISStreamReader;
// Import the `LayoutStreamReader` trait.
use libreda_db::prelude::*;

let filename = "./tests/data/INVX1_no_compression.oas";
// Open the OASIS file for reading.
let mut f = File::open(filename).unwrap();

// Create an empty layout that will be populated by the OASIS reader.
let mut layout = Chip::new();

// Create a default OASIS reader and parse the data from the file.
let result = OASISStreamReader::default()
    .read_layout(&mut f, &mut layout);

// Assert that there was no error.
assert!(result.is_ok());

将布局写入 OASIS

use std::fs::File;
use libreda_oasis::OASISStreamWriter;
// Import the `LayoutStreamReader` trait.
use libreda_db::prelude::*;

// Create an empty layout.
let layout = Chip::new();

let mut f = File::create("./tests/data/empty_layout_out.oas").unwrap();

let writer = OASISStreamWriter::default();

// Write the (empty) layout to the file.
let write_result = writer.write_layout(&mut f, &layout);

// Assert that there was no error.
assert!(write_result.is_ok());

参考

依赖关系

~5MB
~99K SLoC