opencad-abu 1e26b0dff7 Add labs: 59 Python lab scripts + tools + run_lab.sh
- labs/src/: 59 lab scripts covering OA API (Ch2-Ch25 + extras)
  - All C++ references removed, oapy-only documentation
- labs/tools/: debug and test utilities
- labs/run_lab.sh: lab runner with LD_PRELOAD and env setup
2026-06-02 16:59:08 +08:00

oapy

Si2 OpenAccess 22.61 Python bindings via pybind11.

oapy 是 aivi 的子项目,为 aivi 平台提供 OpenAccess 数据访问能力。本项目仅包含 Python 绑定层,不涉及 OA C++ 实现。

模块

模块 覆盖 大小 说明
_common oaCommon 1.2M 插件基础接口
_base oaBase 11M 基础类型、属性、名称空间
_dm oaDM 3.4M 数据管理(库、单元、视图)
_cms oaCM 2.5M 变更管理系统
_tech oaTech 5.4M 工艺定义、层、约束
_design oaDesign 20M 电路设计(网络、实例、版图)
_wafer oaWafer 2.2M 晶圆/光罩
liboapyRegistry 共享注册表 1.1M 跨模块类型 downcast

依赖

运行时:

  • Python 3.12
  • OpenAccess 22.61 共享库(liboaBase.so, liboaDesign.so 等)
  • libstdc++ (GLIBCXX ≥ 3.4.18)

编译时(仅从源码构建需要):

  • GCC 9.3+ (C++17)
  • CMake 3.20+
  • pybind11 3.0+
  • OpenAccess 22.61 头文件 + 库
  • OA DM 插件DMFileSys、DMTurbo 等)

安装

# 当前系统 (glibc 2.34+)
pip install dist/oapy-0.1b0-cp312-cp312-linux_x86_64.whl

# RHEL7/CentOS7 (glibc 2.17+)
pip install dist/oapy-0.1b0-cp312-cp312-glibc-2.17_x86_64.whl

Labs

labs/ 目录包含 60 个 Python 实验脚本,对应 OpenAccess 22.61 C++ Lab 教程的 Python 移植版,涵盖 OA API 的各个模块。

Lab 章节

章节 主题 Lab 数量
Ch2 MDPARies 环境配置 1
Ch3 Sample 基础操作 1
Ch4 oaDump 调试工具 1
Ch6 图形对象 (oaFig) 2
Ch8 名称空间 & DM 数据 2
Ch9 库列表操作 1
Ch10 单元视图 & 数据压缩 2
Ch11 Schematic 创建 3
Ch12 Module 层次结构 2
Ch13 Occurrence 遍历 5
Ch14 插件扩展 & DM 插件 3
Ch16 文本/评估/符号/Pin/Schematic/RQ 11
Ch17 Observer 观察者模式 8
Ch18 Pcell 参数化单元 8
Ch20 Tech 工艺库 2
Ch21 Constraint 约束 1
Ch22 设计参数 1
Ch25 Traits 特征 1
附加 综合实验 5

环境变量

运行 lab 前需要设置以下环境变量(run_lab.sh 已自动配置):

# Python 库路径
export LD_LIBRARY_PATH="/path/to/python3.12/lib:${LD_LIBRARY_PATH}"

# oapy 绑定库
export LD_LIBRARY_PATH="/path/to/oapy/oapy/_oa:${LD_LIBRARY_PATH}"

# OpenAccess 库
export LD_LIBRARY_PATH="/path/to/oa/22.61/lib/linux_rhel70_gcc93x_64/opt:${LD_LIBRARY_PATH}"

# OA 插件搜索路径
export OA_PLUGIN_PATH="/path/to/oa/22.61/data/plugins:${OA_PLUGIN_PATH}"

# Python 模块路径
export PYTHONPATH="/path/to/oapy:${PYTHONPATH}"

如果使用 oacpp 自编译 OA 库aivi 项目),还需要 LD_PRELOAD 预加载 oacpp 库以覆盖官方版本:

export LD_PRELOAD="/path/to/oacpp/lib/liboaBase.so:/path/to/oacpp/lib/liboaDM.so:..."

运行 Lab

cd labs

# 查看可用 lab
./run_lab.sh

# 运行指定 lab
./run_lab.sh lab11_1_inverter.py

# 示例输出
============================================================
oapy Lab 11-1: Inverter (反相器)
============================================================
✅ OA initialized
📚 Library: aiviLabLib created
...

API 文档

https://opencad-abu.github.io/oapy-docs-zh/

License

Private — 仅限内部使用

Description
oapy — AIVI项目模块:oa python接口
Readme 21 MiB
Languages
Python 99.5%
Shell 0.5%