CAD layout electrical connectivity checker
Project description
snarled README
Layout connectivity checker.
snarled is a python package for checking electrical connectivity in multi-layer layouts.
It is intended to be "poor-man's LVS" (layout-versus-schematic), for when poverty has deprived the man of both a schematic and a better connectivity tool.
Installation
Requirements:
- python >= 3.10 (written and tested with 3.11)
- numpy
- klayout (python package only)
Install with pip:
pip install snarled
Alternatively, install from git
pip install git+https://mpxd.net/code/jan/snarled.git@release
Example
See examples/check.py (python interface) or examples/run.sh (command-line interface).
Command line:
snarled connectivity.oas connectivity.txt -m layermap.txt
Python interface:
from pprint import pformat
import logging
import snarled
from snarled.types import layer_t
logging.basicConfig()
logging.getLogger('snarled').setLevel(logging.INFO)
connectivity = [
((1, 0), (1, 2), (2, 0)), # M1 to M2 (via V12)
((1, 0), (1, 3), (3, 0)), # M1 to M3 (via V13)
((2, 0), (2, 3), (3, 0)), # M2 to M3 (via V23)
]
labels_map: dict[layer_t, layer_t] = {
(1, 0): (1, 0),
(2, 0): (2, 0),
(3, 0): (3, 0),
}
filename = 'connectivity.oas'
nets = snarled.trace_layout(filename, connectivity, topcell='top', labels_map=labels_map)
result = snarled.TraceAnalysis(nets)
print('\n')
print(result)
this prints the following:
INFO:snarled.trace:Adding layer (3, 0)
INFO:snarled.trace:Adding layer (2, 3)
INFO:snarled.trace:Adding layer (1, 3)
INFO:snarled.trace:Adding layer (1, 2)
INFO:snarled.trace:Adding layer (1, 0)
INFO:snarled.trace:Adding layer (2, 0)
Trace analysis
=============
Nets
(groups of electrically connected labels)
SignalA,SignalB
SignalC,SignalD,SignalI
SignalE,SignalF
SignalG,SignalH
SignalK
SignalK
SignalL
Opens
(2+ nets containing the same name)
SignalK : 2 nets
Shorts
(2+ unique names for the same net)
SignalA,SignalB
SignalC,SignalD,SignalI
SignalE,SignalF
SignalG,SignalH
=============
Code organization
- The primary functionality is in
trace; specificallytrace.trace_layout(). mainprovides a command-line interface, supported by the functions inutils.
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
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 snarled-1.0.tar.gz.
File metadata
- Download URL: snarled-1.0.tar.gz
- Upload date:
- Size: 33.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.11.4
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a05244a0758bde27ccdead387e7db184efe212353a11ffa70db72c24fca33bf1
|
|
| MD5 |
eb7e6e684b1c93b1bd9058331f0e6a7b
|
|
| BLAKE2b-256 |
02ca0c14e8d58f868d896e8766c98e2276d786ae2febb758698b13370aa9c1f3
|
File details
Details for the file snarled-1.0-py3-none-any.whl.
File metadata
- Download URL: snarled-1.0-py3-none-any.whl
- Upload date:
- Size: 33.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.11.4
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
35392cd02ef0df90d2a852202441e9233fcc8eb74496ffac81937626d07bc62d
|
|
| MD5 |
b9bb798e1bf1300ac8f6327115145949
|
|
| BLAKE2b-256 |
c1a6150916dbc689dab7e7c05ea8b81211b1b0c3bdd4112983203a3e66ed132a
|