gf180-hdl21


Namegf180-hdl21 JSON
Version 7.0.0 PyPI version JSON
download
home_pageNone
SummaryGlobal Foundries 180nm MCU PDK Package for Hdl21
upload_time2024-12-12 17:26:25
maintainerNone
docs_urlNone
authorThomas Pluck
requires_python<3.13,>=3.7
licenseNone
keywords pdk eda analog circuit
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            
# GF 180 MCU - Hdl21 PDK Module

Hdl21 PDK package for the open-source Global Foundries 180nm MCU PDK.  
https://pypi.org/project/gf180-hdl21/

## About This Technology 

The GF180MCU open source PDK is a collaboration between Google and GlobalFoundries to provide a fully open source process design kit (PDK) and related resources to enable the creation of designs manufacturable at GlobalFoundries's facility on their 0.18um 3.3V/6V MCU process technology.

## Installation

Install from PyPi via: 

```
pip install gf180-hdl21
```

And then import the package as `gf180-hdl21`: 

```python
import gf180_hdl21
```

## Development 

```
pip install -e ".[dev]"
```

## PDK `Install` Data

Silicon process technologies generally require non-Python data to execute simulations and other tasks. Gf180 is no different. *Those files are not distributed as part of this package.* The `Gf180` package defines an Hdl21 `PdkInstallation` type `gf180.Install`, which includes references to any such out-of-Python data, generally in the form of filesystem paths. See the [Hdl21 PDK docs](https://github.com/dan-fritchman/Hdl21#process-technologies) for more background. 

A helpful resource for installing the non-Python portions of the 180nm PDK: 
https://anaconda.org/litex-hub/open_pdks.gf180mcuC

Installable with `conda` via: 

```
conda install -y -c litex-hub open_pdks.gf180mcuC
```

Using the conda-based installation, a typical [sitepdks](https://github.com/dan-fritchman/Hdl21#pdk-installations-and-sites) module might look like:

```python
CONDA_PREFIX = os.environ.get("CONDA_PREFIX")
model_lib = Path(CONDA_PREFIX) / "share/pdk/gf180mcuC/libs.tech/ngspice/sm141064.Model"

import gf180_hdl21
gf180_hdl21.install = gf180_hdl21.Install(model_lib=model_lib)
```

Note the conda-based installation supports simulation solely with [ngspice](https://ngModel.sourceforge.io/). Gf180 models compatible with Sandia Labs' [Xyce](https://xyce.sandia.gov/) have been generated by the community, but are less straightforward to find, install, and revision control.

If you would prefer a local installation, another great method is to use the Volare open_pdk build manager.

## About this PDK Package

`gf180` defines a set of `hdl21.ExternalModule`s comprising the essential devices of the GlobalFoundries 180nm open-source PDK, '
and an `compile` method for converting process-portable `hdl21.Primitive` elements into these modules. 

There are two major ways to instantiate PDK components offered in this PDK module:

1. Compilation

We first show an example of how this is done using MOSFETs:

```python
import hdl21 as h
import gf180_hdl21

# Use Hdl21 PDK-agnostic Mos primitive
mosfet = h.Mos(tp=h.MosType.NMOS,family=h.MosFamily.CORE)
# This now the correct Gf180 ExternalModule
gf180_hdl21.compile(mosfet) 
```

But this will also work for other components, but these devices don't enjoy the same flexibility as MOSFETs, eg.:

```python
import hdl21 as h
import gf180_hdl21

# Use Hdl21 PDK-agnostic resistors
resistor = h.Resistor(model="rm1")
# This is now the correct Gf180 External module
gf180.compile(resistor) 
```

2. Direct Reference

All Gf180 `ExternalModule`s are stored in the `modules` namespace that makes up the bulk of the PDK module. You can use it to reference `ExternalModule`s directly via component name:

```python
import gf180_hdl21
from gf180_hdl21.primitives as g

p = gf180_hdl21.GF180MosParams(w=3*µ, l=3*µ)

# This is the ExternalModule we want
mosfet = g.PFET_3p3V(p)
```

The complete 180nm design kit includes hundreds of devices. 
A subset are targets for conversion from generic Hdl21 `Primitives`. 

We include them below, two general attributes to note, the first is "Component Name" which is the name that we give the component in the PDK module.

The second is the "Model Name" which refers to the underlying subcircuit or model name found in the Gf180 SPICE files, should you want to look up the device in the PDK documentation itself.

### MOSFETs

MOSFETs in Hdl21 are designed to be PDK-agnostic, making it possible select the desired MOS using either model compilation:
```python
import gf180_hdl21
from hdl21.primitives import Mos, MosType, MosFamily

a = Mos(tp=MosType.NMOS,family=MosFamily.CORE)
gf180_hdl21.compile(a) # a is now an instance of gf180.primitives.NFET_3p3V
```
Or can be referenced directly using the component name listed below from the `primitives` submodule.

NOTE: If any dimensions are not supplied to the params object, the PDK module will assume the minimal viable dimension of the component that you choose.
```python
from hdl21.prefix import µ
from gf180_hdl21 import GF180MosParams as p
import gf180_hdl21.primitives as g

a = g.NFET_3p3V(p(w=0.2*µ,nf=1))
```

| Component Name | Mos Type | Mos Family | Model Name   | Ports      |
| -------------- | -------- | ---------- | ------------- | ---------- |
| PFET_3p3V      | PMOS     | CORE       | pfet_03v3     | d, g, s, b |
| NFET_3p3V      | NMOS     | CORE       | nfet_03v3     | d, g, s, b |
| NFET_6p0V      | NMOS     | IO         | nfet_06v0     | d, g, s, b |
| PFET_6p0V      | PMOS     | IO         | pfet_06v0     | d, g, s, b |
| NFET_3p3V_DSS  | NMOS     | NONE       | nfet_03v3_dss | d, g, s, b |
| PFET_3p3V_DSS  | PMOS     | NONE       | pfet_03v3_dss | d, g, s, b |
| NFET_6p0V_DSS  | NMOS     | NONE       | nfet_06v0_dss | d, g, s, b |
| PFET_6p0V_DSS  | PMOS     | NONE       | pfet_06v0_dss | d, g, s, b |
| NFET_6p0V_NAT  | NMOS     | NONE       | nfet_06v0_nvt | d, g, s, b |

### Resistors

Resistors are not offered with PDK-agnostic compilation and so must be referred to directly with the correct paramtype:
```python
from hdl21.prefix import µ
from gf180_hdl21 import GF180ResParams as p
from gf180_hdl21.primitives import NPLUS_U

a = NPLUS_U(p(r_length=0.3 * µ, r_width=0.18 * µ))
```

| Component Name  | Model Name     | Ports   |
| --------------- | --------------- | ------- |
| NPLUS_U         | nplus_u         | p, n, b |
| PPLUS_U         | pplus_u         | p, n, b |
| NPLUS_S         | nplus_s         | p, n, b |
| PPLUS_S         | pplus_s         | p, n, b |
| NWELL           | nwell           | p, n, b |
| NPOLYF_U        | npolyf_u        | p, n, b |
| PPOLYF_U        | ppolyf_u        | p, n, b |
| NPOLYF_S        | npolyf_s        | p, n, b |
| PPOLYF_S        | ppolyf_s        | p, n, b |
| PPOLYF_U_1K     | ppolyf_u_1k     | p, n, b |
| PPOLYF_U_2K     | ppolyf_u_2k     | p, n, b |
| PPOLYF_U_1K_6P0 | ppolyf_u_1k_6p0 | p, n, b |
| PPOLYF_U_2K_6P0 | ppolyf_u_2k_6p0 | p, n, b |
| PPOLYF_U_3K     | ppolyf_u_3k     | p, n, b |
| RM1             | rm1             | p, n    |
| RM2             | rm2             | p, n    |
| RM3             | rm3             | p, n    |
| TM6K            | tm6k            | p, n    |
| TM9K            | tm9k            | p, n    |
| TM11K           | tm11k           | p, n    |
| TM30K           | tm30k           | p, n    |

### Diodes

Diodes are not offered with PDK-agnostic compilation and so must be referred to directly with the correct paramtype:
```python
from hdl21.prefix import µ, p
from gf180_hdl21 import GF180DiodeParams as par
from gf180_hdl21.primitives import NDSPS_3p3V

a = NDSPS_3p3V(par(area=0.3 * p, pj=1.2 * µ))
```

| Component Name | Model Name      | Ports |
| -------------- | ---------------- | ----- |
| ND2PS_3p3V     | diode_nd2ps_03v3 | p, n  |
| PD2NW_3p3V     | diode_pd2nw_03v3 | p, n  |
| ND2PS_6p0V     | diode_nd2ps_06v0 | p, n  |
| PD2NW_6p0V     | diode_pd2nw_06v0 | p, n  |
| NW2PS_3p3V     | diode_nw2ps_03v3 | p, n  |
| NW2PS_6p0V     | diode_nw2ps_06v0 | p, n  |
| PW2DW          | diode_pw2dw      | p, n  |
| DW2PS          | diode_dw2ps      | p, n  |
| Schottky       | sc_diode         | p, n  |

### BJTs

BJTs are not offered with PDK-agnostic compilation and so must be referred to directly with the correct paramtype:
```python
from hdl21.prefix import µ, p
from gf180_hdl21 import GF180BipolarParams as par
from gf180_hdl21.primitives import PNP_10p0x0p42

a = PNP_10p0x0p42(par(m=2))
```

| Component Name | Model Name     | Ports      |
| -------------- | --------------- | ---------- |
| PNP_10p0x0p42  | pnp_10p00x00p42 | c, b, e    |
| PNP_5p0x0p42   | pnp_05p00x00p42 | c, b, e    |
| PNP_10p0x10p0  | pnp_10p00x10p00 | c, b, e    |
| PNP_5p0x5p0    | pnp_05p00x05p00 | c, b, e    |
| NPN_10p0x10p0  | npn_10p00x10p00 | c, b, e, s |
| NPN_5p0x5p0    | npn_05p00x05p00 | c, b, e, s |
| NPN_0p54x16p0  | npn_00p54x16p00 | c, b, e, s |
| NPN_0p54x8p0   | npn_00p54x08p00 | c, b, e, s |
| NPN_0p54x4p0   | npn_00p54x04p00 | c, b, e, s |
| NPN_0p54x2p0   | npn_00p54x02p00 | c, b, e, s |

### Capacitors

Capacitors are not offered with PDK-agnostic compilation and so must be referred to directly with the correct paramtype:
```python
from hdl21.prefix import µ
from gf180_hdl21 import GF180CapParams as par
from gf180_hdl21.primitives import MIM_1p5fF

a = MIM_1p5fF(par(c_width=1 * µ, c_length=1 * µ))
```

| Component Name  | Model Name     | Ports |
| --------------- | --------------- | ----- |
| MIM_1p5fF       | cap_mim_1f5fF   | p, n  |
| MIM_1p0fF       | cap_mim_1f0fF   | p, n  |
| MIM_2p0fF       | cap_mim_2f0fF   | p, n  |
| PMOS_3p3V       | cap_pmos_03v3   | p, n  |
| NMOS_6p0V       | cap_nmos_06v0   | p, n  |
| PMOS_6p0V       | cap_pmos_06v0   | p, n  |
| NMOS_3p3V       | cap_nmos_03v3   | p, n  |
| NMOS_Nwell_3p3V | cap_nmos_03v3_b | p, n  |
| PMOS_Pwell_3p3V | cap_pmos_03v3_b | p, n  |
| NMOS_Nwell_6p0V | cap_nmos_06v0_b | p, n  |
| PMOS_Pwell_6p0V | cap_pmos_06v0_b | p, n  |

### Digital Cells

The PDK is also distributed with two standard cell libraries that we call `seven_track` and  `nine_track`. These are distributed with `gf180-hdl21` as separate name spaces that can be accessed in a similar manner to `modules`:

```python
from gf180_hdl21.digital_cells.seven_track as d7
from gf180_hdl21.digital_cells.nine_track as d9
```

These cells are named in their spice files in `libs.ref` of a normal `open_pdk` install as `gf_180_fd_sc_******__device`, to find the corresponding device in the digital name space, use `device`, eg.

```python
from gf180_hdl21.digital_cells.seven_track as d7
from gf180_hdl21 import GF180LogicParams as p
simple_and_gate = d7.and2_1(p())
```

The devices in all are too numerous to cover here, but are covered in great detail in the [official PDK documentation](https://gf180mcu-pdk.readthedocs.io/en/latest/digital/Digital.html).

            

Raw data

            {
    "_id": null,
    "home_page": null,
    "name": "gf180-hdl21",
    "maintainer": null,
    "docs_url": null,
    "requires_python": "<3.13,>=3.7",
    "maintainer_email": "Dan Fritchman <dan@fritch.mn>",
    "keywords": "PDK, EDA, analog, circuit",
    "author": "Thomas Pluck",
    "author_email": "Dan Fritchman <dan@fritch.mn>, Curtis Mayberry <Curtisma3@gmail.com>",
    "download_url": "https://files.pythonhosted.org/packages/f2/90/c28dc1ab7dfc160c90bf10925f96d87c0131a2e35914b967a0fddc0b1937/gf180_hdl21-7.0.0.tar.gz",
    "platform": null,
    "description": "\n# GF 180 MCU - Hdl21 PDK Module\n\nHdl21 PDK package for the open-source Global Foundries 180nm MCU PDK.  \nhttps://pypi.org/project/gf180-hdl21/\n\n## About This Technology \n\nThe GF180MCU open source PDK is a collaboration between Google and GlobalFoundries to provide a fully open source process design kit (PDK) and related resources to enable the creation of designs manufacturable at GlobalFoundries's facility on their 0.18um 3.3V/6V MCU process technology.\n\n## Installation\n\nInstall from PyPi via: \n\n```\npip install gf180-hdl21\n```\n\nAnd then import the package as `gf180-hdl21`: \n\n```python\nimport gf180_hdl21\n```\n\n## Development \n\n```\npip install -e \".[dev]\"\n```\n\n## PDK `Install` Data\n\nSilicon process technologies generally require non-Python data to execute simulations and other tasks. Gf180 is no different. *Those files are not distributed as part of this package.* The `Gf180` package defines an Hdl21 `PdkInstallation` type `gf180.Install`, which includes references to any such out-of-Python data, generally in the form of filesystem paths. See the [Hdl21 PDK docs](https://github.com/dan-fritchman/Hdl21#process-technologies) for more background. \n\nA helpful resource for installing the non-Python portions of the 180nm PDK: \nhttps://anaconda.org/litex-hub/open_pdks.gf180mcuC\n\nInstallable with `conda` via: \n\n```\nconda install -y -c litex-hub open_pdks.gf180mcuC\n```\n\nUsing the conda-based installation, a typical [sitepdks](https://github.com/dan-fritchman/Hdl21#pdk-installations-and-sites) module might look like:\n\n```python\nCONDA_PREFIX = os.environ.get(\"CONDA_PREFIX\")\nmodel_lib = Path(CONDA_PREFIX) / \"share/pdk/gf180mcuC/libs.tech/ngspice/sm141064.Model\"\n\nimport gf180_hdl21\ngf180_hdl21.install = gf180_hdl21.Install(model_lib=model_lib)\n```\n\nNote the conda-based installation supports simulation solely with [ngspice](https://ngModel.sourceforge.io/). Gf180 models compatible with Sandia Labs' [Xyce](https://xyce.sandia.gov/) have been generated by the community, but are less straightforward to find, install, and revision control.\n\nIf you would prefer a local installation, another great method is to use the Volare open_pdk build manager.\n\n## About this PDK Package\n\n`gf180` defines a set of `hdl21.ExternalModule`s comprising the essential devices of the GlobalFoundries 180nm open-source PDK, '\nand an `compile` method for converting process-portable `hdl21.Primitive` elements into these modules. \n\nThere are two major ways to instantiate PDK components offered in this PDK module:\n\n1. Compilation\n\nWe first show an example of how this is done using MOSFETs:\n\n```python\nimport hdl21 as h\nimport gf180_hdl21\n\n# Use Hdl21 PDK-agnostic Mos primitive\nmosfet = h.Mos(tp=h.MosType.NMOS,family=h.MosFamily.CORE)\n# This now the correct Gf180 ExternalModule\ngf180_hdl21.compile(mosfet) \n```\n\nBut this will also work for other components, but these devices don't enjoy the same flexibility as MOSFETs, eg.:\n\n```python\nimport hdl21 as h\nimport gf180_hdl21\n\n# Use Hdl21 PDK-agnostic resistors\nresistor = h.Resistor(model=\"rm1\")\n# This is now the correct Gf180 External module\ngf180.compile(resistor) \n```\n\n2. Direct Reference\n\nAll Gf180 `ExternalModule`s are stored in the `modules` namespace that makes up the bulk of the PDK module. You can use it to reference `ExternalModule`s directly via component name:\n\n```python\nimport gf180_hdl21\nfrom gf180_hdl21.primitives as g\n\np = gf180_hdl21.GF180MosParams(w=3*\u00b5, l=3*\u00b5)\n\n# This is the ExternalModule we want\nmosfet = g.PFET_3p3V(p)\n```\n\nThe complete 180nm design kit includes hundreds of devices. \nA subset are targets for conversion from generic Hdl21 `Primitives`. \n\nWe include them below, two general attributes to note, the first is \"Component Name\" which is the name that we give the component in the PDK module.\n\nThe second is the \"Model Name\" which refers to the underlying subcircuit or model name found in the Gf180 SPICE files, should you want to look up the device in the PDK documentation itself.\n\n### MOSFETs\n\nMOSFETs in Hdl21 are designed to be PDK-agnostic, making it possible select the desired MOS using either model compilation:\n```python\nimport gf180_hdl21\nfrom hdl21.primitives import Mos, MosType, MosFamily\n\na = Mos(tp=MosType.NMOS,family=MosFamily.CORE)\ngf180_hdl21.compile(a) # a is now an instance of gf180.primitives.NFET_3p3V\n```\nOr can be referenced directly using the component name listed below from the `primitives` submodule.\n\nNOTE: If any dimensions are not supplied to the params object, the PDK module will assume the minimal viable dimension of the component that you choose.\n```python\nfrom hdl21.prefix import \u00b5\nfrom gf180_hdl21 import GF180MosParams as p\nimport gf180_hdl21.primitives as g\n\na = g.NFET_3p3V(p(w=0.2*\u00b5,nf=1))\n```\n\n| Component Name | Mos Type | Mos Family | Model Name   | Ports      |\n| -------------- | -------- | ---------- | ------------- | ---------- |\n| PFET_3p3V      | PMOS     | CORE       | pfet_03v3     | d, g, s, b |\n| NFET_3p3V      | NMOS     | CORE       | nfet_03v3     | d, g, s, b |\n| NFET_6p0V      | NMOS     | IO         | nfet_06v0     | d, g, s, b |\n| PFET_6p0V      | PMOS     | IO         | pfet_06v0     | d, g, s, b |\n| NFET_3p3V_DSS  | NMOS     | NONE       | nfet_03v3_dss | d, g, s, b |\n| PFET_3p3V_DSS  | PMOS     | NONE       | pfet_03v3_dss | d, g, s, b |\n| NFET_6p0V_DSS  | NMOS     | NONE       | nfet_06v0_dss | d, g, s, b |\n| PFET_6p0V_DSS  | PMOS     | NONE       | pfet_06v0_dss | d, g, s, b |\n| NFET_6p0V_NAT  | NMOS     | NONE       | nfet_06v0_nvt | d, g, s, b |\n\n### Resistors\n\nResistors are not offered with PDK-agnostic compilation and so must be referred to directly with the correct paramtype:\n```python\nfrom hdl21.prefix import \u00b5\nfrom gf180_hdl21 import GF180ResParams as p\nfrom gf180_hdl21.primitives import NPLUS_U\n\na = NPLUS_U(p(r_length=0.3 * \u00b5, r_width=0.18 * \u00b5))\n```\n\n| Component Name  | Model Name     | Ports   |\n| --------------- | --------------- | ------- |\n| NPLUS_U         | nplus_u         | p, n, b |\n| PPLUS_U         | pplus_u         | p, n, b |\n| NPLUS_S         | nplus_s         | p, n, b |\n| PPLUS_S         | pplus_s         | p, n, b |\n| NWELL           | nwell           | p, n, b |\n| NPOLYF_U        | npolyf_u        | p, n, b |\n| PPOLYF_U        | ppolyf_u        | p, n, b |\n| NPOLYF_S        | npolyf_s        | p, n, b |\n| PPOLYF_S        | ppolyf_s        | p, n, b |\n| PPOLYF_U_1K     | ppolyf_u_1k     | p, n, b |\n| PPOLYF_U_2K     | ppolyf_u_2k     | p, n, b |\n| PPOLYF_U_1K_6P0 | ppolyf_u_1k_6p0 | p, n, b |\n| PPOLYF_U_2K_6P0 | ppolyf_u_2k_6p0 | p, n, b |\n| PPOLYF_U_3K     | ppolyf_u_3k     | p, n, b |\n| RM1             | rm1             | p, n    |\n| RM2             | rm2             | p, n    |\n| RM3             | rm3             | p, n    |\n| TM6K            | tm6k            | p, n    |\n| TM9K            | tm9k            | p, n    |\n| TM11K           | tm11k           | p, n    |\n| TM30K           | tm30k           | p, n    |\n\n### Diodes\n\nDiodes are not offered with PDK-agnostic compilation and so must be referred to directly with the correct paramtype:\n```python\nfrom hdl21.prefix import \u00b5, p\nfrom gf180_hdl21 import GF180DiodeParams as par\nfrom gf180_hdl21.primitives import NDSPS_3p3V\n\na = NDSPS_3p3V(par(area=0.3 * p, pj=1.2 * \u00b5))\n```\n\n| Component Name | Model Name      | Ports |\n| -------------- | ---------------- | ----- |\n| ND2PS_3p3V     | diode_nd2ps_03v3 | p, n  |\n| PD2NW_3p3V     | diode_pd2nw_03v3 | p, n  |\n| ND2PS_6p0V     | diode_nd2ps_06v0 | p, n  |\n| PD2NW_6p0V     | diode_pd2nw_06v0 | p, n  |\n| NW2PS_3p3V     | diode_nw2ps_03v3 | p, n  |\n| NW2PS_6p0V     | diode_nw2ps_06v0 | p, n  |\n| PW2DW          | diode_pw2dw      | p, n  |\n| DW2PS          | diode_dw2ps      | p, n  |\n| Schottky       | sc_diode         | p, n  |\n\n### BJTs\n\nBJTs are not offered with PDK-agnostic compilation and so must be referred to directly with the correct paramtype:\n```python\nfrom hdl21.prefix import \u00b5, p\nfrom gf180_hdl21 import GF180BipolarParams as par\nfrom gf180_hdl21.primitives import PNP_10p0x0p42\n\na = PNP_10p0x0p42(par(m=2))\n```\n\n| Component Name | Model Name     | Ports      |\n| -------------- | --------------- | ---------- |\n| PNP_10p0x0p42  | pnp_10p00x00p42 | c, b, e    |\n| PNP_5p0x0p42   | pnp_05p00x00p42 | c, b, e    |\n| PNP_10p0x10p0  | pnp_10p00x10p00 | c, b, e    |\n| PNP_5p0x5p0    | pnp_05p00x05p00 | c, b, e    |\n| NPN_10p0x10p0  | npn_10p00x10p00 | c, b, e, s |\n| NPN_5p0x5p0    | npn_05p00x05p00 | c, b, e, s |\n| NPN_0p54x16p0  | npn_00p54x16p00 | c, b, e, s |\n| NPN_0p54x8p0   | npn_00p54x08p00 | c, b, e, s |\n| NPN_0p54x4p0   | npn_00p54x04p00 | c, b, e, s |\n| NPN_0p54x2p0   | npn_00p54x02p00 | c, b, e, s |\n\n### Capacitors\n\nCapacitors are not offered with PDK-agnostic compilation and so must be referred to directly with the correct paramtype:\n```python\nfrom hdl21.prefix import \u00b5\nfrom gf180_hdl21 import GF180CapParams as par\nfrom gf180_hdl21.primitives import MIM_1p5fF\n\na = MIM_1p5fF(par(c_width=1 * \u00b5, c_length=1 * \u00b5))\n```\n\n| Component Name  | Model Name     | Ports |\n| --------------- | --------------- | ----- |\n| MIM_1p5fF       | cap_mim_1f5fF   | p, n  |\n| MIM_1p0fF       | cap_mim_1f0fF   | p, n  |\n| MIM_2p0fF       | cap_mim_2f0fF   | p, n  |\n| PMOS_3p3V       | cap_pmos_03v3   | p, n  |\n| NMOS_6p0V       | cap_nmos_06v0   | p, n  |\n| PMOS_6p0V       | cap_pmos_06v0   | p, n  |\n| NMOS_3p3V       | cap_nmos_03v3   | p, n  |\n| NMOS_Nwell_3p3V | cap_nmos_03v3_b | p, n  |\n| PMOS_Pwell_3p3V | cap_pmos_03v3_b | p, n  |\n| NMOS_Nwell_6p0V | cap_nmos_06v0_b | p, n  |\n| PMOS_Pwell_6p0V | cap_pmos_06v0_b | p, n  |\n\n### Digital Cells\n\nThe PDK is also distributed with two standard cell libraries that we call `seven_track` and  `nine_track`. These are distributed with `gf180-hdl21` as separate name spaces that can be accessed in a similar manner to `modules`:\n\n```python\nfrom gf180_hdl21.digital_cells.seven_track as d7\nfrom gf180_hdl21.digital_cells.nine_track as d9\n```\n\nThese cells are named in their spice files in `libs.ref` of a normal `open_pdk` install as `gf_180_fd_sc_******__device`, to find the corresponding device in the digital name space, use `device`, eg.\n\n```python\nfrom gf180_hdl21.digital_cells.seven_track as d7\nfrom gf180_hdl21 import GF180LogicParams as p\nsimple_and_gate = d7.and2_1(p())\n```\n\nThe devices in all are too numerous to cover here, but are covered in great detail in the [official PDK documentation](https://gf180mcu-pdk.readthedocs.io/en/latest/digital/Digital.html).\n",
    "bugtrack_url": null,
    "license": null,
    "summary": "Global Foundries 180nm MCU PDK Package for Hdl21",
    "version": "7.0.0",
    "project_urls": {
        "Bug Tracker": "https://github.com/dan-fritchman/Hdl21/issues",
        "Documentation": "https://github.com/dan-fritchman/Hdl21/blob/main/pdks/Gf180/readme.md",
        "Homepage": "https://github.com/dan-fritchman/Hdl21",
        "Repository": "https://github.com/dan-fritchman/Hdl21"
    },
    "split_keywords": [
        "pdk",
        " eda",
        " analog",
        " circuit"
    ],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "f290c28dc1ab7dfc160c90bf10925f96d87c0131a2e35914b967a0fddc0b1937",
                "md5": "3952561110bb7034567bb42059925fb8",
                "sha256": "5652fbf44c2690ab30245385995bc0bf841fc324c1ae08735a4b1795f25aba7e"
            },
            "downloads": -1,
            "filename": "gf180_hdl21-7.0.0.tar.gz",
            "has_sig": false,
            "md5_digest": "3952561110bb7034567bb42059925fb8",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": "<3.13,>=3.7",
            "size": 20508,
            "upload_time": "2024-12-12T17:26:25",
            "upload_time_iso_8601": "2024-12-12T17:26:25.299845Z",
            "url": "https://files.pythonhosted.org/packages/f2/90/c28dc1ab7dfc160c90bf10925f96d87c0131a2e35914b967a0fddc0b1937/gf180_hdl21-7.0.0.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2024-12-12 17:26:25",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "dan-fritchman",
    "github_project": "Hdl21",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": true,
    "lcname": "gf180-hdl21"
}
        
Elapsed time: 0.50303s