Skip to main content

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; specifically trace.trace_layout().
  • main provides a command-line interface, supported by the functions in utils.

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

snarled-1.0.tar.gz (33.0 kB view details)

Uploaded Source

Built Distribution

snarled-1.0-py3-none-any.whl (33.7 kB view details)

Uploaded Python 3

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

Hashes for snarled-1.0.tar.gz
Algorithm Hash digest
SHA256 a05244a0758bde27ccdead387e7db184efe212353a11ffa70db72c24fca33bf1
MD5 eb7e6e684b1c93b1bd9058331f0e6a7b
BLAKE2b-256 02ca0c14e8d58f868d896e8766c98e2276d786ae2febb758698b13370aa9c1f3

See more details on using hashes here.

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

Hashes for snarled-1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 35392cd02ef0df90d2a852202441e9233fcc8eb74496ffac81937626d07bc62d
MD5 b9bb798e1bf1300ac8f6327115145949
BLAKE2b-256 c1a6150916dbc689dab7e7c05ea8b81211b1b0c3bdd4112983203a3e66ed132a

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page