Git Product home page Git Product logo

skywater-pdk's Introduction

SkyWater Open Source PDK

GitHub license - Apache 2.0

Travis Badge - https://travis-ci.org/google/skywater-pdk

ReadTheDocs Badge - https://skywater-pdk.rtfd.io

Latest GitHub tag (including pre-releases)

The SkyWater Open Source PDK is a collaboration between Google and SkyWater Technology Foundry to provide a fully open source Process Design Kit and related resources, which can be used to create manufacturable designs at SkyWater’s facility.

As of May 2020, this repository is targeting the SKY130 process node. If the SKY130 process node release is successful then in the future more advanced technology nodes may become available.

The SkyWater Open Source PDK documentation can be found at <https://skywater-pdk.rtfd.io>.

Google + SkyWater Logo Image

Current Status -- Experimental Preview

Warning

Google and SkyWater are currently treating the current content as an experimental preview / alpha release.

While the SKY130 process node and the PDK from which this open source release was derived have been used to create many designs that have been successfully manufactured commercially in significant quantities, the open source PDK is not intended to be used for production settings at this current time. It should be usable for doing test chips and initial design verification (but this is not guaranteed).

Google, SkyWater and our partners are currently doing internal validation and test designs, including silicon validation or the released data and plan to publish these results.

The PDK will be tagged with a production version when ready to do production design, see the "Versioning Information" section for a full description of the version numbering scheme.

To get notified about future new releases of the PDK, and other important news, please sign up on the skywater-pdk-announce mailing list [join link].

See both the Known Issues section and the SkyWater PDK GitHub issue list to get more detailed information around currently known issues.

Resources

The latest SkyWater SKY130 PDK design resources can be viewed at the following locations:

SKY130 Process Node

The SKY130 is a mature 180nm-130nm hybrid technology originally developed internally by Cypress Semiconductor before being spun out into SkyWater Technology and made accessible to general industry. SkyWater and Google’s collaboration is now making this technology accessible to everyone!

The SKY130 Process node technology stack consists of;

  • Support for internal 1.8V with 5.0V I/Os (operable at 2.5V)
  • 1 level of local interconnect
  • 5 levels of metal
  • Is inductor-capable
  • Has high sheet rho poly resistor
  • Optional MiM capacitors
  • Includes SONOS shrunken cell
  • Supports 10V regulated supply
  • HV extended-drain NMOS and PMOS

The SKY130 Process Node is an extremely flexible offering, including many normally optional features as standard (features like the local interconnect, SONOS functionality, MiM capacitors, and more). This provides the designer with a wide range of flexibility in design choices.

If your needs extend beyond the standard included functionality in the SKY130 Process Node, please see Contacting SkyWater as they specializes in enabling production volume of process customization include the addition of specialized materials like Nb, Ge, V2O5, Carbon Nanotubes. Google and SkyWater continuing to explore new options to be included in the SkyWater Open Source PDK and SKY130 Process Node that enable new innovative solutions to traditional design problems.

Typical usages of 130nm Process Nodes

The 130nm process was first commercialized around the 2001-2002 time frame and is now primarily used in the area of research, small microcontroller development, and mixed signal embedded designs such as IoT devices.

A living Google document at <https://j.mp/si130nm> has been created to provide inspiration from what researchers, commercial entities and other groups have done with similar sized process nodes. As there are widely different constraints and possibilities from changes in both the manufacturing process and materials it is important not to assumed that the exact results found in the 130nm inspiration document can be identically reproduced on the SKY130 Process Node.

PDK Contents

The SkyWater Open Source PDK contains;

  • Comprehensive documentation around the design rules required to create manufacturable devices on the SKY130 Process Node.
  • EDA tooling support files for multiple open source and proprietary design flows.
  • Primitive cell libraries and models for creating analog designs.
  • Multiple standard digital cell libraries covering a range of different use cases.
  • Multiple documented examples of using the PDK (see below).

For more information see the PDK Contents section of the SkyWater SKY130 PDK.

Using the SkyWater Open Source PDK

The SkyWater Open Source PDK aims to contain comprehensive documentation about using the design kit with multiple tools and design flows to enable many different types of ASIC creation.

We are excited to see additions to this documentation around using this design kit with new tools and design flows. Please see the Contributing file for information on how to do this.

To download or update to the 'latest' version of all standard cell libraries, and to regenerate the liberty files, clone this repository and run the following commands.

Support

Like many open source projects there are multiple ways to get support on the SkyWater Open Source PDK.

SkyWater has created a Market Partner Ecosystem to be able to provide support from design through back end package and test. If you are interested in getting additional support through the ASIC development process, reach out to SkyWater using the information in the Contacting SkyWater section below.

There is also a users mailing list [join link] to allow like minded users of the PDK to provide support to each other.

Google does not provide external support for using the SkyWater Open Source PDK and is distributing this repository on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the license section for the full terms.

About SkyWater Technology Foundry

SkyWater is a solely U.S.-based and U.S.-owned, DoD-accredited, Trusted Foundry. Through its Technology Foundry model, SkyWater provides custom design and development services, design IP, and volume manufacturing for integrated circuits and micro devices. The Company’s world-class operations and unique processing capabilities enable mixed-signal CMOS, power, rad-hard and ROIC solutions. SkyWater’s Innovation Engineering Services empower development of superconducting and 3D ICs, along with carbon nanotube, photonic and MEMS devices. SkyWater serves customers in growing markets such as aerospace & defense, automotive, cloud & computing, consumer, industrial, IoT and medical. For more information, please visit: www.skywatertechnology.com/.

SkyWater is building from a long heritage in the microelectronics industry. The SkyWater facility was originally established by Minnesota based Control Data Corporation (CDC) in the 1980s. The CDC fab was acquired by Cypress Semiconductor in 1991. During the Cypress era, the facility was expanded and upgraded multiple times, keeping pace with Moore's Law into the late 2000s and was known for being a US-based production facility that was competitive with Asian-based fabs. SkyWater spun-off from Cypress in 2017 with private equity backing from Minnesota based Oxbow Industries.

Contacting SkyWater

Requests for more information about SKY130 and other standard and customer foundry technologies can be emailed to <[email protected]> or submitted via this webform.

License

The SkyWater Open Source PDK is released under the Apache 2.0 license.

The copyright details (which should also be found at the top of every file) are;

Copyright 2020 SkyWater PDK Authors

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.

skywater-pdk's People

Contributors

adrianfreed avatar aedrax avatar cbalint13 avatar cclauss avatar dependabot[bot] avatar diadatp avatar donn avatar interfect avatar kgugala avatar kkiningh avatar mgielda avatar mithro avatar pkatarzynski avatar proppy avatar quantamhd avatar rholais avatar riking avatar robtaylor avatar smunaut avatar thasti avatar umarcor avatar wanderrful avatar wgryncewicz avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

skywater-pdk's Issues

Differential level shifter cells is invalid for missing `contention_condition` attribute in generated liberty timing files

Warning: Line 81147, Cell 'sky130_fd_sc_hd__lpflow_lsbuf_lh_hl_isowell_tap_1', The differential level shifter cell is invalid for missing contention_condition attribute.
 (LBDB-930)
Warning: Line 81279, Cell 'sky130_fd_sc_hd__lpflow_lsbuf_lh_hl_isowell_tap_2', The differential level shifter cell is invalid for missing contention_condition attribute.
 (LBDB-930)
Warning: Line 81411, Cell 'sky130_fd_sc_hd__lpflow_lsbuf_lh_hl_isowell_tap_4', The differential level shifter cell is invalid for missing contention_condition attribute.
 (LBDB-930)
Warning: Line 81543, Cell 'sky130_fd_sc_hd__lpflow_lsbuf_lh_isowell_4', The differential level shifter cell is invalid for missing contention_condition attribute.
 (LBDB-930)
Warning: Line 81679, Cell 'sky130_fd_sc_hd__lpflow_lsbuf_lh_isowell_tap_1', The differential level shifter cell is invalid for missing contention_condition attribute.
 (LBDB-930)
Warning: Line 81811, Cell 'sky130_fd_sc_hd__lpflow_lsbuf_lh_isowell_tap_2', The differential level shifter cell is invalid for missing contention_condition attribute.
 (LBDB-930)
Warning: Line 81943, Cell 'sky130_fd_sc_hd__lpflow_lsbuf_lh_isowell_tap_4', The differential level shifter cell is invalid for missing contention_condition attribute.
 (LBDB-930)

Table constructs in the generated liberty files cause warnings

Originally reported in #37

The table constructs should have a form which looks like this;

	lu_table_template ("del_1_7_7") {
		variable_1 : "input_net_transition";
		index_1("1, 2, 3, 4, 5, 6, 7");
		variable_2 : "total_output_net_capacitance";
		index_2("1, 2, 3, 4, 5, 6, 7");
	}
	power_lut_template ("power_outputs_1") {
		variable_1 : "input_transition_time";
		index_1("1, 2, 3, 4, 5, 6, 7");
		variable_2 : "total_output_net_capacitance";
		index_2("1, 2, 3, 4, 5, 6, 7");
	}
	lu_table_template ("constraint_3_0_1") {
		variable_1 : "related_pin_transition";
		index_1("1, 2, 3");
	}
	lu_table_template ("vio_3_3_1") {
		variable_1 : "related_pin_transition";
		index_1("1, 2, 3");
		variable_2 : "constrained_pin_transition";
		index_2("1, 2, 3");
	}
	power_lut_template ("power_inputs_1") {
		variable_1 : "input_transition_time";
		index_1("1, 2, 3, 4, 5, 6, 7");
	}
	lu_table_template ("driver_waveform_template") {
		variable_1 : "input_net_transition";
		index_1("1, 2");
		variable_2 : "normalized_voltage";
		index_2("1, 2");
	}
	normalized_driver_waveform ("driver_waveform_template") {
		driver_waveform_name : "ramp";
		index_1("0.0100000, 0.0230506, 0.0531329, 0.1224745, 0.2823108, 0.5000000, 0.6507428, 1.5000000");
		index_2("0.0000000, 0.5000000, 1.0000000");
		values("0.0000000e+00, 8.3333333e-03, 1.6666667e-02", \
		  "0.0000000e+00, 1.9208818e-02, 3.8417635e-02", \
		  "0.0000000e+00, 4.4277440e-02, 8.8554881e-02", \
		  "0.0000000e+00, 1.0206207e-01, 2.0412415e-01", \
		  "0.0000000e+00, 2.3525901e-01, 4.7051801e-01", \
		  "0.0000000e+00, 4.1666667e-01, 8.3333333e-01", \
		  "0.0000000e+00, 5.4228568e-01, 1.0845714e+00", \
		  "0.0000000e+00, 1.2500000e+00, 2.5000000e+00");
	}

Publish the SKY130 eFabless provided IO and Periphery cells

The SKY130 eFabless provided IO and Periphery cells library is currently empty, only a placeholder is currently provided.

The SKY130 foundry provided IO and Periphery cells library will be released at a future date.

Before these files are released access to these files is available through eFabless directly.

sky130_fd_sc_hvl : The 'clk_width' attribute, which expects values of string type

Actual Behavior

The following error happens when reading the libs in primetime:

Error: Line 36, The 'clk_width' attribute, which expects values of string type,
    is being supplied a value of floating-point type. (LBDB-53)
clk_width : 2.500000e-08;

Expected Behavior

To fix this issue:
clk_width should be defined this way:
clk_width : "2.500000e-08";

Validating GDS files

Hi! So there is documentation that says what the process design rules are

https://skywater-pdk.readthedocs.io/en/latest/rules.html

Are consumers of the PDK expected to manually convert these rules into design rules that let a GDS file be checked using a program like Magic? Are these rules somewhere in the checkout directories that are already in a format that can be automatically processed? Or is there a tool in the checkout that can be used to validate a GDS file against the design rules?

Availability of small ROM

For mine application specific device I need a small ROM e.g. 256Word 16bit.
I have already seen RAM and Flash announcement but will there also ROM available ?
Is there already some information about the specifaction (size, power, ..) and how to
use availble Flash as a ROM and programming it with minimal I/O interface ?
Hoping to receive a positive reaction, I meanwhile remain,

Patrick Pelgrims

Memory Generator and IO Cells

Hi, @mithro I am following your hard work here, and I don't want to bother you much but I was reading the README, and I couldn't find any mention of a memory generator and also of IO Cells. Do you know if this project will have such features available too?

Investigate if the Cu rules should be removed from the documentation

#25 (review)

All rules that are marked with the flag "CU": Are these real? It was my understanding from SkyWater that there were no copper layers on this process. This is backed up by the fact that I have been ignoring any rules labeled "Cu" in the PDF document and there is no issue with DRC on those layers. I think all such rules need to be removed, but I would at least do a quick check with SkyWater first.

Publish the SKY130 foundry provided IO and Periphery cells

The SKY130 foundry provided IO and Periphery cells library is currently empty, only a placeholder is currently provided.

The SKY130 foundry provided IO and Periphery cells library will be released at a future date.

Before these files are released access to these files is available through SkyWater directly under NDA.

Migrate from Probot Autolabeler to GitHub Actions based labeler

Currently I have set up the Probot Autolabler (and https://github.com/mithro/autolabeler) but the new way to do this seems to be with GitHub actions.

Some useful links;

As mentioned at #36 (comment)

The top GitHub action called labeler has the following caveat;

Note that only pull requests being opened from the same repository can be labeled. This action will not currently work for pull requests from forks -- like is common in open source projects -- because the token for forked pull request workflows does not have write permissions.

Which means it currently can not be used by us, as this is how we do pull requests.

Add documentation on how to use the SkyWater PDK on the efabless platform

It would be good to have a how to in the documentation around signing up to the efabless platform and getting started with the open source tools on the SkyWater PDK.

efabless provides machines which are pre-setup including all the open source tooling and this PDK. They also have examples, so it is a very easy way to get started.

How is this supposed to work?

Cloned the repo, did 'make', got over 100MB of virtual environment installed.

typing 'conda activate skywater-pdk-scripts' says it can't find conda.

How do I get LEF/LIB/GDS2 files?

Unpacking payload ...
Collecting package metadata (current_repodata.json): done                                         
Solving environment: done

## Package Plan ##

  environment location: /home/trc/programming/skywater-pdk/env/conda

  added / updated specs:
    - _libgcc_mutex==0.1=main
    - ca-certificates==2020.1.1=0
    - certifi==2020.4.5.1=py37_0
    - cffi==1.14.0=py37he30daa8_1
    - chardet==3.0.4=py37_1003
    - conda-package-handling==1.6.1=py37h7b6447c_0
    - conda==4.8.3=py37_0
    - cryptography==2.9.2=py37h1ba5d50_0
    - idna==2.9=py_1
    - ld_impl_linux-64==2.33.1=h53a641e_7
    - libedit==3.1.20181209=hc058e9b_0
    - libffi==3.3=he6710b0_1
    - libgcc-ng==9.1.0=hdf63c60_0
    - libstdcxx-ng==9.1.0=hdf63c60_0
    - ncurses==6.2=he6710b0_1
    - openssl==1.1.1g=h7b6447c_0
    - pip==20.0.2=py37_3
    - pycosat==0.6.3=py37h7b6447c_0
    - pycparser==2.20=py_0
    - pyopenssl==19.1.0=py37_0
    - pysocks==1.7.1=py37_0
    - python==3.7.7=hcff3b4d_5
    - readline==8.0=h7b6447c_0
    - requests==2.23.0=py37_0
    - ruamel_yaml==0.15.87=py37h7b6447c_0
    - setuptools==46.4.0=py37_0
    - six==1.14.0=py37_0
    - sqlite==3.31.1=h62c20be_1
    - tk==8.6.8=hbc83047_0
    - tqdm==4.46.0=py_0
    - urllib3==1.25.8=py37_0
    - wheel==0.34.2=py37_0
    - xz==5.2.5=h7b6447c_0
    - yaml==0.1.7=had09818_2
    - zlib==1.2.11=h7b6447c_3


The following NEW packages will be INSTALLED:

  _libgcc_mutex      pkgs/main/linux-64::_libgcc_mutex-0.1-main
  ca-certificates    pkgs/main/linux-64::ca-certificates-2020.1.1-0
  certifi            pkgs/main/linux-64::certifi-2020.4.5.1-py37_0
  cffi               pkgs/main/linux-64::cffi-1.14.0-py37he30daa8_1
  chardet            pkgs/main/linux-64::chardet-3.0.4-py37_1003
  conda              pkgs/main/linux-64::conda-4.8.3-py37_0
  conda-package-han~ pkgs/main/linux-64::conda-package-handling-1.6.1-py37h7b6447c_0
  cryptography       pkgs/main/linux-64::cryptography-2.9.2-py37h1ba5d50_0
  idna               pkgs/main/noarch::idna-2.9-py_1
  ld_impl_linux-64   pkgs/main/linux-64::ld_impl_linux-64-2.33.1-h53a641e_7
  libedit            pkgs/main/linux-64::libedit-3.1.20181209-hc058e9b_0
  libffi             pkgs/main/linux-64::libffi-3.3-he6710b0_1
  libgcc-ng          pkgs/main/linux-64::libgcc-ng-9.1.0-hdf63c60_0
  libstdcxx-ng       pkgs/main/linux-64::libstdcxx-ng-9.1.0-hdf63c60_0
  ncurses            pkgs/main/linux-64::ncurses-6.2-he6710b0_1
  openssl            pkgs/main/linux-64::openssl-1.1.1g-h7b6447c_0
  pip                pkgs/main/linux-64::pip-20.0.2-py37_3
  pycosat            pkgs/main/linux-64::pycosat-0.6.3-py37h7b6447c_0
  pycparser          pkgs/main/noarch::pycparser-2.20-py_0
  pyopenssl          pkgs/main/linux-64::pyopenssl-19.1.0-py37_0
  pysocks            pkgs/main/linux-64::pysocks-1.7.1-py37_0
  python             pkgs/main/linux-64::python-3.7.7-hcff3b4d_5
  readline           pkgs/main/linux-64::readline-8.0-h7b6447c_0
  requests           pkgs/main/linux-64::requests-2.23.0-py37_0
  ruamel_yaml        pkgs/main/linux-64::ruamel_yaml-0.15.87-py37h7b6447c_0
  setuptools         pkgs/main/linux-64::setuptools-46.4.0-py37_0
  six                pkgs/main/linux-64::six-1.14.0-py37_0
  sqlite             pkgs/main/linux-64::sqlite-3.31.1-h62c20be_1
  tk                 pkgs/main/linux-64::tk-8.6.8-hbc83047_0
  tqdm               pkgs/main/noarch::tqdm-4.46.0-py_0
  urllib3            pkgs/main/linux-64::urllib3-1.25.8-py37_0
  wheel              pkgs/main/linux-64::wheel-0.34.2-py37_0
  xz                 pkgs/main/linux-64::xz-5.2.5-h7b6447c_0
  yaml               pkgs/main/linux-64::yaml-0.1.7-had09818_2
  zlib               pkgs/main/linux-64::zlib-1.2.11-h7b6447c_3


Preparing transaction: done
Executing transaction: done
installation finished.
touch /home/trc/programming/skywater-pdk/env/conda/bin/python
source /home/trc/programming/skywater-pdk/env/conda/bin/activate && conda config --system --add envs_dirs /home/trc/programming/skywater-pdk/env/conda/envs
source /home/trc/programming/skywater-pdk/env/conda/bin/activate && conda config --system --add pkgs_dirs /home/trc/programming/skywater-pdk/env/downloads/conda-pkgs
source /home/trc/programming/skywater-pdk/env/conda/bin/activate && conda env update --name skywater-pdk-scripts --file /home/trc/programming/skywater-pdk/environment.yml
Collecting package metadata (repodata.json): done
Solving environment: done
Preparing transaction: done
Verifying transaction: done
Executing transaction: done
Ran pip subprocess with arguments:
['/home/trc/programming/skywater-pdk/env/conda/envs/skywater-pdk-scripts/bin/python', '-m', 'pip', 'install', '-U', '-r', '/home/trc/programming/skywater-pdk/condaenv.mgfxia6r.requirements.txt']
Pip subprocess output:
Obtaining file:///home/trc/programming/skywater-pdk/scripts/python-skywater-pdk (from -r file:requirements.txt (line 6))
Collecting rst_include
  Using cached rst_include-1.0.8-py3-none-any.whl (33 kB)
Collecting sphinx-symbiflow-theme
  Cloning https://github.com/SymbiFlow/sphinx_materialdesign_theme.git to /tmp/pip-install-430liekk/sphinx-symbiflow-theme
Collecting docutils
  Using cached docutils-0.16-py2.py3-none-any.whl (548 kB)
Collecting sphinx
  Using cached Sphinx-3.1.1-py3-none-any.whl (2.9 MB)
Processing /home/trc/.cache/pip/wheels/73/fd/a4/58778b18dba46ebe03a88035263af7dc12017e017369445559/sphinx_autobuild-0.7.1-py3-none-any.whl
Collecting sphinxcontrib-verilog-diagrams
  Cloning https://github.com/SymbiFlow/sphinxcontrib-verilog-diagrams.git to /tmp/pip-install-430liekk/sphinxcontrib-verilog-diagrams
Processing /home/trc/.cache/pip/wheels/e2/13/20/22f6a21ce4020b1759804ba352065e0c14f2879adb43596aeb/symbolator-1.0.2-py3-none-any.whl
Processing /home/trc/.cache/pip/wheels/04/15/db/b13acaf2117128c920ab950e05c549222f093ba56fcf196e0d/restructuredtext_lint-1.3.1-py3-none-any.whl
Collecting tabulate
  Using cached tabulate-0.8.7-py3-none-any.whl (24 kB)
Collecting dataclasses_json
  Using cached dataclasses_json-0.5.1-py3-none-any.whl (23 kB)
Collecting typing
  Using cached typing-3.7.4.1-py3-none-any.whl (25 kB)
Collecting pytest
  Using cached pytest-5.4.3-py3-none-any.whl (248 kB)
Collecting requests>=2.5.0
  Using cached requests-2.24.0-py2.py3-none-any.whl (61 kB)
Collecting sphinxcontrib-serializinghtml
  Using cached sphinxcontrib_serializinghtml-1.1.4-py2.py3-none-any.whl (89 kB)
Collecting sphinxcontrib-htmlhelp
  Using cached sphinxcontrib_htmlhelp-1.0.3-py2.py3-none-any.whl (96 kB)
Collecting snowballstemmer>=1.1
  Using cached snowballstemmer-2.0.0-py2.py3-none-any.whl (97 kB)
Collecting babel>=1.3
  Using cached Babel-2.8.0-py2.py3-none-any.whl (8.6 MB)
Collecting imagesize
  Using cached imagesize-1.2.0-py2.py3-none-any.whl (4.8 kB)
Collecting Pygments>=2.0
  Using cached Pygments-2.6.1-py3-none-any.whl (914 kB)
Collecting alabaster<0.8,>=0.7
  Using cached alabaster-0.7.12-py2.py3-none-any.whl (14 kB)
Collecting packaging
  Using cached packaging-20.4-py2.py3-none-any.whl (37 kB)
Collecting sphinxcontrib-jsmath
  Using cached sphinxcontrib_jsmath-1.0.1-py2.py3-none-any.whl (5.1 kB)
Collecting sphinxcontrib-devhelp
  Using cached sphinxcontrib_devhelp-1.0.2-py2.py3-none-any.whl (84 kB)
Requirement already satisfied, skipping upgrade: setuptools in ./env/conda/envs/skywater-pdk-scripts/lib/python3.8/site-packages (from sphinx->-r file:docs/requirements.txt (line 4)) (47.3.2.post20200703)
Collecting sphinxcontrib-applehelp
  Using cached sphinxcontrib_applehelp-1.0.2-py2.py3-none-any.whl (121 kB)
Collecting sphinxcontrib-qthelp
  Using cached sphinxcontrib_qthelp-1.0.3-py2.py3-none-any.whl (90 kB)
Collecting Jinja2>=2.3
  Using cached Jinja2-2.11.2-py2.py3-none-any.whl (125 kB)
Collecting argh>=0.24.1
  Using cached argh-0.26.2-py2.py3-none-any.whl (30 kB)
Processing /home/trc/.cache/pip/wheels/4c/8e/7e/72fbc243e1aeecae64a96875432e70d4e92f3d2d18123be004/pathtools-0.1.2-py3-none-any.whl
Processing /home/trc/.cache/pip/wheels/88/79/e5/598ba17e85eccf2626eab62e4ee8452895636cd542650d450d/tornado-6.0.4-cp38-cp38-linux_x86_64.whl
Processing /home/trc/.cache/pip/wheels/f8/39/45/b80612a24e42d9de0bd5eaf69eaf953edc25e1a9809d3d989f/watchdog-0.10.3-py3-none-any.whl
Processing /home/trc/.cache/pip/wheels/27/9e/9b/1509419d1fc2dc8f84375252a765019a46d45c63f83b33a020/livereload-2.6.2-py2.py3-none-any.whl
Processing /home/trc/.cache/pip/wheels/13/90/db/290ab3a34f2ef0b5a0f89235dc2d40fea83e77de84ed2dc05c/PyYAML-5.3.1-cp38-cp38-linux_x86_64.whl
Processing /home/trc/.cache/pip/wheels/aa/fa/ee/8a461019fc857dc090c383814a673330ab0546272aaec2da59/port_for-0.3.1-py3-none-any.whl
Processing /home/trc/.cache/pip/wheels/5e/eb/b5/fbc625933d8c961a516927b8a704d37ebaadc541878620d859/hdlparse-1.0.4-py3-none-any.whl
Processing /home/trc/.cache/pip/wheels/04/0e/31/bf265c64f2a4d24516e9923f1f6293c3bcbcde75e0d80ab47a/stringcase-1.2.0-py3-none-any.whl
Collecting marshmallow<4.0.0,>=3.3.0
  Using cached marshmallow-3.6.1-py2.py3-none-any.whl (45 kB)
Collecting marshmallow-enum<2.0.0,>=1.5.1
  Using cached marshmallow_enum-1.5.1-py2.py3-none-any.whl (4.2 kB)
Collecting typing-inspect>=0.4.0
  Using cached typing_inspect-0.6.0-py3-none-any.whl (8.1 kB)
Collecting attrs>=17.4.0
  Using cached attrs-19.3.0-py2.py3-none-any.whl (39 kB)
Collecting wcwidth
  Using cached wcwidth-0.2.5-py2.py3-none-any.whl (30 kB)
Collecting more-itertools>=4.0.0
  Using cached more_itertools-8.4.0-py3-none-any.whl (43 kB)
Collecting pluggy<1.0,>=0.12
  Using cached pluggy-0.13.1-py2.py3-none-any.whl (18 kB)
Collecting py>=1.5.0
  Using cached py-1.9.0-py2.py3-none-any.whl (99 kB)
Collecting idna<3,>=2.5
  Using cached idna-2.10-py2.py3-none-any.whl (58 kB)
Requirement already satisfied, skipping upgrade: certifi>=2017.4.17 in ./env/conda/envs/skywater-pdk-scripts/lib/python3.8/site-packages (from requests>=2.5.0->sphinx->-r file:docs/requirements.txt (line 4)) (2020.6.20)
Collecting chardet<4,>=3.0.2
  Using cached chardet-3.0.4-py2.py3-none-any.whl (133 kB)
Collecting urllib3!=1.25.0,!=1.25.1,<1.26,>=1.21.1
  Using cached urllib3-1.25.9-py2.py3-none-any.whl (126 kB)
Collecting pytz>=2015.7
  Using cached pytz-2020.1-py2.py3-none-any.whl (510 kB)
Collecting six
  Using cached six-1.15.0-py2.py3-none-any.whl (10 kB)
Collecting pyparsing>=2.0.2
  Using cached pyparsing-2.4.7-py2.py3-none-any.whl (67 kB)
Collecting MarkupSafe>=0.23
  Using cached MarkupSafe-1.1.1-cp38-cp38-manylinux1_x86_64.whl (32 kB)
Collecting typing-extensions>=3.7.4
  Using cached typing_extensions-3.7.4.2-py3-none-any.whl (22 kB)
Collecting mypy-extensions>=0.3.0
  Using cached mypy_extensions-0.4.3-py2.py3-none-any.whl (4.5 kB)
Building wheels for collected packages: sphinx-symbiflow-theme, sphinxcontrib-verilog-diagrams
  Building wheel for sphinx-symbiflow-theme (setup.py): started
  Building wheel for sphinx-symbiflow-theme (setup.py): finished with status 'done'
  Created wheel for sphinx-symbiflow-theme: filename=sphinx_symbiflow_theme-0.1.11-py3-none-any.whl size=18259084 sha256=e231179dd34d4172f2bbee0c01b0bf9d78105c67241fb0242bf3e41c8b7adc6e
  Stored in directory: /tmp/pip-ephem-wheel-cache-rxdt1o5p/wheels/b3/01/48/cc3bca817efc8c3dcca37593870c5a6508ec9d22294300a880
  Building wheel for sphinxcontrib-verilog-diagrams (setup.py): started
  Building wheel for sphinxcontrib-verilog-diagrams (setup.py): finished with status 'done'
  Created wheel for sphinxcontrib-verilog-diagrams: filename=sphinxcontrib_verilog_diagrams-0.0.dev0-py3-none-any.whl size=12122 sha256=8364a9e9fbd5a934af3306d00aa43bde17a3013cb0434f19ed8cd71487cd99d2
  Stored in directory: /tmp/pip-ephem-wheel-cache-rxdt1o5p/wheels/54/62/3b/9549f1fdbdc9a36463b47d2c75617b4cc43f2c626a6e2ca5bb
Successfully built sphinx-symbiflow-theme sphinxcontrib-verilog-diagrams
Installing collected packages: typing, attrs, wcwidth, more-itertools, pluggy, six, pyparsing, packaging, py, pytest, rst-include, sphinx-symbiflow-theme, docutils, idna, chardet, urllib3, requests, sphinxcontrib-serializinghtml, sphinxcontrib-htmlhelp, snowballstemmer, pytz, babel, imagesize, Pygments, alabaster, sphinxcontrib-jsmath, sphinxcontrib-devhelp, sphinxcontrib-applehelp, sphinxcontrib-qthelp, MarkupSafe, Jinja2, sphinx, argh, pathtools, tornado, watchdog, livereload, PyYAML, port-for, sphinx-autobuild, sphinxcontrib-verilog-diagrams, hdlparse, symbolator, restructuredtext-lint, tabulate, stringcase, marshmallow, marshmallow-enum, typing-extensions, mypy-extensions, typing-inspect, dataclasses-json, skywater-pdk
  Running setup.py develop for skywater-pdk
Successfully installed Jinja2-2.11.2 MarkupSafe-1.1.1 PyYAML-5.3.1 Pygments-2.6.1 alabaster-0.7.12 argh-0.26.2 attrs-19.3.0 babel-2.8.0 chardet-3.0.4 dataclasses-json-0.5.1 docutils-0.16 hdlparse-1.0.4 idna-2.10 imagesize-1.2.0 livereload-2.6.2 marshmallow-3.6.1 marshmallow-enum-1.5.1 more-itertools-8.4.0 mypy-extensions-0.4.3 packaging-20.4 pathtools-0.1.2 pluggy-0.13.1 port-for-0.3.1 py-1.9.0 pyparsing-2.4.7 pytest-5.4.3 pytz-2020.1 requests-2.24.0 restructuredtext-lint-1.3.1 rst-include-1.0.8 six-1.15.0 skywater-pdk snowballstemmer-2.0.0 sphinx-3.1.1 sphinx-autobuild-0.7.1 sphinx-symbiflow-theme-0.1.11 sphinxcontrib-applehelp-1.0.2 sphinxcontrib-devhelp-1.0.2 sphinxcontrib-htmlhelp-1.0.3 sphinxcontrib-jsmath-1.0.1 sphinxcontrib-qthelp-1.0.3 sphinxcontrib-serializinghtml-1.1.4 sphinxcontrib-verilog-diagrams-0.0.dev0 stringcase-1.2.0 symbolator-1.0.2 tabulate-0.8.7 tornado-6.0.4 typing-3.7.4.1 typing-extensions-3.7.4.2 typing-inspect-0.6.0 urllib3-1.25.9 watchdog-0.10.3 wcwidth-0.2.5

#
# To activate this environment, use
#
#     $ conda activate skywater-pdk-scripts
#
# To deactivate an active environment, use
#
#     $ conda deactivate

touch /home/trc/programming/skywater-pdk/env/conda/envs/skywater-pdk-scripts/bin/python

Publish the SKY130 Flash Build Space

The flash build space is currently empty, only a placeholder is currently provided.

The components of flash build space will be released at a future date.

Before these files are released access to these files is available through SkyWater directly under NDA.

Publish scripts required to generated files to work with Mentor Calibre

The first publication of this PDK is missing files required to do design verification with Mentor Calibre. Scripts for generating these files from the published documentation will be released at a future date.

This includes;

  • Physical checking of design rules
  • Logic vs schematic checks
  • Latchup and soft design rules
  • Fill structure generator

Before these scripts are released (which are able to generate these files), access to hand written equivalent files is available through SkyWater directly under NDA.

Incorrect attribute type for `violation_delay_degrade_pct` in generated liberty files

Synopsys Primetime currently reports the following errors with the generate liberty timing files;

Error: Line 48552, Cell 'sky130_fd_sc_hd__dfbbn_1', pin 'CLK_N', The 'violation_delay_degrade_pct' attribute, which expects values of string type,
	is being supplied a value of floating-point type. (LBDB-53)
Error: Line 48592, Cell 'sky130_fd_sc_hd__dfbbn_1', pin 'D', The 'violation_delay_degrade_pct' attribute, which expects values of string type,
	is being supplied a value of floating-point type. (LBDB-53)
Error: Line 48612, Cell 'sky130_fd_sc_hd__dfbbn_1', pin 'D', The 'violation_delay_degrade_pct' attribute, which expects values of string type,
	is being supplied a value of floating-point type. (LBDB-53)

sky130_fd_sc_hvl: The 'tran_timestep' attribute, which expects values of string type

Actual Behavior

The following error message is reported when reading this lib in primetime:

Error: Line 268, The 'tran_timestep' attribute, which expects values of string type,
    is being supplied a value of floating-point type. (LBDB-53)
tran_timestep : 1.000000e-12; 

Expected Behavior

The correct syntax is:
tran_timestep : "1.000000e-12";

SPICE model

If I just want to download the MOSFET SPICE model, how can I get it?

Missing techfiles

I'm trying to use the pdk with Synopsys tools (DC/ICC2), but I don't see a vendor or interconnect techfile (*.tf and *.itf respectively) which is needed for place and route and parasitics extraction. Will those be added later or is there another way I can obtain them?

sky130_fd_sc_lp: .lib files are not generated

Actual Behavior

When running the make timing command, the following errors is reported:
lp lib: only one lib is generated(unsuccessfully)

Error: Line 1, The 'default_operating_conditions' attribute is needed in the specification.
       No default can be applied to this attribute. (LBDB-266)
Information: Line 1, There are more than 1 operating_conditions defined in the library. (LBDB-672)
Error: /afs/eecs.umich.edu/vlsida/projects/restricted/google/skywater-random/skywater-pdk/libraries/sky130_fd_sc_lp/v0.0.1/timing/sky130_fd_sc_lp__ff_100C_1v95.lib: syntax error on line 529042 at or near '<EOF>'. (PARSE-1)
Error: A syntax error is found before the library or phys_library group.
        The compilation is terminated. (LBDB-153)

Expected Behavior

After looking at the code in the liberty.py, This is where the issue seems to happen:

The liberty_composite(k, v, i=tuple()) function has these lines of code:

    for l in v:
        if isinstance(l, (float, int)):
            o.append(liberty_float(l))
        elif isinstance(l, str):
            assert '"' not in l, (k, v)
            o.append('"%s"' % l)
        else:
            raise ValueError("%s - %r (%r)" % (k, l, v))

This assertion check reports an error during generation:

  File "/afs/eecs.umich.edu/vlsida/projects/restricted/google/skywater-random/scripts/python-skywater-pdk/skywater_pdk/liberty.py", line 658, in liberty_composite
    assert '"' not in l, (k, v)
AssertionError: ('power_gating_pin', ['power_pin_1", "1'])

The quotation is another problem here.

PrimeTime requires liberty file to have a specific order for certain attributes

This is a list of errors reported by pt:

  • The 'delay_model' should be the 1st attribute in the library
  • The 'technology' should be the 1st attribute in the library
    -> expectation for this should be something like this:
library ("lib_name") {
	define(switching_power_split_model,library,string);
	define(driver_model,library,string);
	define(leakage_sim_opt,library,string);
	define(default_constraint_arc_mode,library,string);
	define(min_pulse_width_mode,library,string);
	define(default_arc_mode,library,string);
	define(def_sim_opt,library,string);
	define(simulator,library,string);
	define(violation_delay_degrade_pct,timing,string);
	define(sim_opt,timing,string);
	**technology("cmos");**
	**delay_model : "table_lookup";**
  • The 'lu_table_template' construct is not valid in 'generic_cmos' libraries.
    -> I am not sure about this but after verifying versus other libs. The variable comes before the index:
 lu_table_template ("constraint_3_0_1") {
        variable_1 : "related_pin_transition";
        index_1("1, 2, 3");
  • The 'normalized_driver_waveform' construct is not valid in 'generic_cmos' libraries.
  • The 'cell_fall' construct is not valid in 'generic_cmos' libraries.

These errors seems to be the source of multiple other errors. So I think they should be fixed first.

Pins for some cells are missing `internal_power` group attribute in generated liberty files.

Warning: Line 170537, Cell 'sky130_fd_sc_hd__xor3_2', pin 'A', The pin 'A' does not have a internal_power group. (LBDB-607)
Warning: Line 170547, Cell 'sky130_fd_sc_hd__xor3_2', pin 'B', The pin 'B' does not have a internal_power group. (LBDB-607)
Warning: Line 170557, Cell 'sky130_fd_sc_hd__xor3_2', pin 'C', The pin 'C' does not have a internal_power group. (LBDB-607)

Publish OpenAccess files to improve Cadence Virtuoso support

The first publication of this is missing files required for optimal Cadence Virtuoso usage. These files will be released publically at a future date after further work.

These files are;

  • OpenAccess versions of the cells
  • Cadence PCells, including
    • Parameterized primitives including FETs, Capacitors, Resistors, Inductors, etc
    • Seal Ring
  • Cadence SKILL scripts that support Virtuoso functions such as netlisting

Before these files are released access to these files is available through SkyWater directly under NDA.

Set up auto labeling of pull requests using github actions

Publish script which generates verilog files

A large number of the verilog files in the standard cells are automatically generated from a definition.json file.

Non-generated files

  • sky130_fd_sc_XX__XXXXXX.specify.v
  • sky130_fd_sc_XX__XXXXXX.behavioral.pp.v
  • sky130_fd_sc_XX__XXXXXX.functional.pp.v

Modules

  • sky130_fd_sc_XX__XXXXXX.pp.blackbox.v
  • sky130_fd_sc_XX__XXXXXX.blackbox.v
  • sky130_fd_sc_XX__XXXXXX.pp.symbol.v
  • sky130_fd_sc_XX__XXXXXX.symbol.v

Wrappers

  • sky130_fd_sc_XX__XXXXXX.v
  • sky130_fd_sc_XX__XXXXXX_X.v

Test bench

  • sky130_fd_sc_XX__XXXXXX.tb.v

Example

Example definition.json for the sky130_fd_sc_hd__a2111o cell;

The following verilog files are not generated;

Publish script which combines the GDS files from the cells into one big file

Similar to how there is a script which combines the timing data from the per cell timing JSON data into a single large liberty file, we need a script which does the same for the GDS files.

As GDS files are a binary format, this script should use Magic. (Magic should be installed into the environment from conda from https://github.com/litex-hub/litex-conda-eda/tree/master/misc/magic). This can be done by generating a TCL script to give to Magic.

The script should be added to the skywater_pdk Python module.

Publish script which recombined the individual cell liberty files into a single liberty library

The skywater-pdk publishes files split into individual cells and models. This makes it easier to see what is available but produces a large number of files and directories and these large number of files makes a number of tools unhappy.

The skywater-pdk repository has Python scripts to combined cells and models inside a library into a single file to make it easier to use with these tools.

This script will be published at a later date.

Publish the SKY130 SRAM Build Space

The SRAM build space is currently empty, only a placeholder is currently provided.

The components of the SRAM build space (compatible with OpenRAM) will be released at a future date.

Before these files are released access to these files is available through SkyWater directly under NDA.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.