HAADIC
Highly-Automated Analog Designer for Integrated Circuits
This project is a prototype. Its goal is to create a technological and software-agnostic design flow, from device sizing to layout and implementation.
How to get started
This application needs nix, uv and python3. For windows, please install NixOS as shown here.
Installation using uvx is recommended.
The following command check if everything is correctly setup :
uvx --with="git+https://github.com/Patarimi/haadic.git" haadic smoke-test
Setting up a new Project
A directory with the required files can be generated using :
haadic new
GDS Generation
First update the layout fonction in the design.py file created in the previous step. Some helpfull fonctions can be found in design:layouts. Then run the following command :
uv run --script design.py
The Design flow is run.
Dimensions in the layout can be changed by editing the dim variable.
Post-simulation computation can be done by editing the evaluate function.
Design Flow
The following flow is run using the informations given in a design python file (See Setup a new Project). The flow has 2 entry points :
flow.run_from_dim: Only requires adimvariables which defines the value of each parameters of the layout function.flow.run_from_target: Requires both atargetand anlocal_modelfunction. Thelocal_modelis an implementation of the design methodology which output the layout parameters value required to obtains thetarget.
flowchart TD
s1{Start #2}
s2{Start #1}
app["Physical Model
(design:local_model)"]
pl["Parametric Layout
(klayout + design:layout)"]
be_ext["RC extraction
(steps.extraction + Magic-VLSI)"]
sim["Spice simulation
(steps.spice_sim + NGSpice)"]
spec["Performances Evaluation
(design:post_processors)"]
s1 -- "design:specifications" --> app
s2 -- "design:dimensions" --> pl
app --"dimensions (step.Dim)" --> pl
pl --"geometries (.gds)" --> be_ext
be_ext --"netlist (.cir)" --> sim
sim --"raw simulation (step.SimRes)" --> spec
spec --"performances (.csv)" --> st{stop}
When finished, a .gds file is available for further design and a .csv file with the performances of the design.
PDKs configuration
A techno.json file can be created in the working dir or the haadic root with the following structure:
{
"techno_name": {
"base_dir": "path to the pdk directory root",
"layermap": "path to the layermap (relative to the base_dir)",
"techlef": "path to the tlef file",
"magic_rc": "path to the configuration file of magic",
"lib_spice": "path to the spice model library",
"section": "name of the section to import in the spice library typical",
"source_url": "url to be use for download (set to "ciel" for ciel installation)",
"version": "version id (only required if source_url is set to "ciel")"
}
}
A techno.json file with three open source PDK and a mock PDK are already supplied.
For developpers
Install haadic with optional group dev :
uv install git+https://github.com/Patarimi/haadic --with dev
Then run pytest in a shell
uvx run poe test
Metadata
Release files for haadic 0.6.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| haadic-0.6.0.tar.gz | 57.3 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| haadic-0.6.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 138.9 kB
Release files / haadic-0.6.0.tar.gz
| Download URL | haadic-0.6.0.tar.gz |
|---|---|
| Size | 57.3 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
6112bb9a4c02438f07bb1a2fc02b1993204c859ea8ad3b6fa7e0f606413d5710
|
|
BLAKE2b-256 checksum How to use checksums |
e7d006cb13de3b5b4162998b5a7477587cfdd06cfb6a3e296ad98bad6365cc9f
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.12.20 {"installer":{"name":"uv","version":"0.12.20","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":null,"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
|
Release files / haadic-0.6.0-py3-none-any.whl
| Download URL | haadic-0.6.0-py3-none-any.whl |
|---|---|
| Size | 81.6 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
e799bf7b7f9a80ec23f366fe7337d43ff5f394f05e550298a274ce8dc70d7711
|
|
BLAKE2b-256 checksum How to use checksums |
0f62a74d5d60a744335371412431628083d054dbf71966a36a1490ba7a73643f
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.12.20 {"installer":{"name":"uv","version":"0.12.20","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":null,"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
|