Integrated Circuit Hierarchy
Project description
Integrated Circuit Hierarchy
做什么用?
懒得写,AI 帮我总结了一下。
ichier 是一个用于创建和处理电路设计的 Python 库。它允许用户定义设计、模块、端口和实例,并生成对应的代码。这个库可以用于以下几个方面:
-
设计创建:通过
Design和Module等类,可以构建电路设计,并添加多个模块来实现抽象的对应关系。 -
终端和网络定义:可以轻松定义模块之间的连接,通过设置输入输出端口
Terminal和内部网络net来描述电路的交互。 -
实例化模块:允许将模块实例化多次,以便在设计中复用特定的功能,比如在一个电路中多次使用同一个逻辑门。
-
代码解析:支持解析 Spice 和 Verilog 格式的电路文件,生成
Design对象,方便分析电路结构和参数,提取设计信息。 -
命令行交互:支持在 Python 中启动交互式 shell,方便对电路的信息进行查询。
安装
pip install ichier -U
描述一个电路
buffer.py
from ichier import *
design = Design(
modules=[
Module("inv", [Terminal("A", "input"), Terminal("Z", "output")]),
Module(
name="buf",
terminals=[Terminal("A", "input"), Terminal("Z", "output")],
nets=[Net("A"), Net("Z"), Net("inter")],
instances=[
Instance(
"inv", "i1", {"A": "A", "Z": "inter"}, {"size": "x2"}
),
Instance(
name="inv",
reference="i2",
connection={"A": "inter", "Z": "Z"},
parameters={"size": "x4"},
),
],
),
],
)
- 查询信息
design.modules.figs
# => (Module('inv'), Module('buf'))
buf = design.modules["buf"]
buf.terminals.figs
# => (Terminal('A', 'input'), Terminal('Z', 'output'))
buf.instances.figs
# => (Instance('i1'), Instance('i2'))
buf.nets.figs
# => (Net('A'), Net('Z'), Net('inter'))
- 导出为 Spice
print(design.dumpToSpice())
.SUBCKT inv A Z
*.PININFO A:I Z:O
.ENDS
.SUBCKT buf A Z
*.PININFO A:I Z:O
i1 / inv $PINS A=A Z=inter
i2 / inv $PINS A=inter Z=Z
.ENDS
从网表读入设计
* top.cdl
.SUBCKT inv A Z
*.PININFO A:I Z:O
.ENDS
.SUBCKT buf A Z
*.PININFO A:I Z:O
i1 / inv $PINS A=A Z=inter
i2 / inv $PINS A=inter Z=Z
.ENDS
- 解析 Spice 文件
from ichier.parser import fromSpice
design = fromSpice("top.cdl")
- 解析 Verilog 文件
// top.v
module inv ( input A, output Z );
endmodule
module buf ( input A, output Z );
wire inter;
inv i1 (.A(A), .Z(inter));
inv i2 (.A(inter), .Z(Z));
endmodule
from ichier.parser import fromVerilog
design = fromVerilog("top.v")
- 也可以直接使用 CLI 工具
ichier parse top.v
ichier parse top.cdl
建议预先安装
ipython和rich库,会有更好的交互体验。
LICENSE
GNU Affero General Public License v3
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distributions
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file ichier-0.2.3-py3-none-any.whl.
File metadata
- Download URL: ichier-0.2.3-py3-none-any.whl
- Upload date:
- Size: 47.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.0.1 CPython/3.12.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
747bbaaf48f767269ba029971d051a0d95ad47d23bfe4bf00a447a48016bf9d7
|
|
| MD5 |
7ef1ad402e2804449e43ba419fa00bd1
|
|
| BLAKE2b-256 |
6e1e2c79486171915dcd789421dfcce4e1f8642792e7d0f243a3de76fcb4689f
|