Currently Known Issues
======================

This section of the documentation provides a list of currently known issues in the currently released files.

.. include:: status.rst

See also the `SkyWater PDK GitHub issue list <https://github.com/google/skywater-pdk/issues>`_ to see the latest reported issues.


Documentation
-------------

A number of sections in the documentation still have pending TODO items. These will be fixed over the coming months.

The current cell datasheets only include basic information about the cell. These datasheets will be continuously updated with new information as the generator is improved.

PDK Contents
------------

Tooling Compatibility
~~~~~~~~~~~~~~~~~~~~~

Cadence Virtuoso Support
************************

The first publication of this is missing files required for optimal Cadence Virtuoso usage. These files will be released publicly at a future date after further work (see `Issue #1 <https://github.com/google/skywater-pdk/issues/1>`_).

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 the manually created previous version of these files is available through SkyWater directly under NDA.

Mentor Calibre Support
**********************

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  (see `Issue #2 <https://github.com/google/skywater-pdk/issues/2>`_).

This includes;

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

Before the scripts are released which generated the needed files for Mentor Calibre from the release documentation, manually created files which provide similar functionality are available from SkyWater directly under NDA.

Specific Libraries
------------------

:lib:`sky130_fd_pr_base`
~~~~~~~~~~~~~~~~~~~~~~~~

See `Cadence Virtuoso Support`_ section.

:lib:`sky130_fd_pr_rf`
~~~~~~~~~~~~~~~~~~~~~~

The :lib:`sky130_fd_pr_rf` library is provided for references purposes only, all new designs should be based on the :lib:`sky130_fd_pr_rf2` library.

See `Cadence Virtuoso Support`_ section.

:lib:`sky130_fd_pr_rf2`
~~~~~~~~~~~~~~~~~~~~~~~

See `Cadence Virtuoso Support`_ section.


:lib:`sky130_osu_sc` - SKY130 Oklahoma State University provided standard cell library
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

The SKY130 Oklahoma State University provided standard cells library is currently empty, only a placeholder is currently provided.

The SKY130 Oklahoma State University provided standard cells library will be integrated at a future date (see `Issue #10 <https://github.com/google/skywater-pdk/issues/10>`_).

:lib:`sky130_fd_sp_fmlt` - SKY130 Flash 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 (see `Issue #4 <https://github.com/google/skywater-pdk/issues/4>`_).


:lib:`sky130_fd_sp_sram` - SKY130 SRAM Build Space
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

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

The components of SRAM build space will be released at a future date (see `Issue #3 <https://github.com/google/skywater-pdk/issues/3>`_).

:lib:`sky130_fd_io` - SKY130 Foundry Provided IO Cells
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

The IO cell library is currently empty, only a placeholder is currently provided.

The IO cell library will be released at a future date (see `Issue #5 <https://github.com/google/skywater-pdk/issues/5>`_).

:lib:`sky130_ef_io` - SKY130 eFabless Provided IO Cells
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

The IO cell library is currently empty, only a placeholder is currently provided.

The IO cell library will be released at a future date (see `Issue #9 <https://github.com/google/skywater-pdk/issues/9>`_).

Design Rule Checking
--------------------

Using Mentor Calibre
~~~~~~~~~~~~~~~~~~~~

See `Mentor Calibre Support`_ section.

At the moment, if you are required to use Calibre as part of your design flow, it is recommended that you also use the open source tool Magic to check for errors and fix any issues reported.

Using Magic
~~~~~~~~~~~

Currently Magic does not have DRC checking rules for checking the specialized exceptions for SRAM cells in the :lib:`sky130_fd_sp_sram` SKY130 SRAM Build Space. These will be released at around the same time as the SKY130 SRAM Build Space.


Scripts and PDK Tooling
-----------------------

A number of scripts are used to generate various files in the PDK including many of the liberty, spice files, schematic images, and much more.

These scripts will be published inside the PDK at a future date (see `Issue list <https://github.com/google/skywater-pdk/issues?q=is%3Aopen+is%3Aissue+label%3Atype-todo+label%3Ascripts-python>`_).

