|logo|

S8FMLT Release Notes
Revision 0.1.2
December 27, 2019


Table of Contents
=================


Table of Tables
===============


Revision History
================

+--------------+------------+---------------+---------------------------------------------+
| **Revision** | **Date**   | **Author**    | **Change Description**                      |
+--------------+------------+---------------+---------------------------------------------+
| 0.0.0        | 2018/03/30 | Julia Szemiot | Initial IP release                          |
+--------------+------------+---------------+---------------------------------------------+
| 0.1.0        | 2018/05/15 | Ben Madden    | Fixed techLib, LVS issues                   |
+--------------+------------+---------------+---------------------------------------------+
| 0.1.1        | 2019/03/28 | SW PDK team   | Snap symbol pins to 0.0625 snap grid        |
+--------------+------------+---------------+---------------------------------------------+
| 0.1.2        | 2019/12/27 | SW PDK team   | Document cleanup—header, footer, title page |
+--------------+------------+---------------+---------------------------------------------+

Reference Documents
===================

+---------+------------------+------------------------------------+
| **No.** | **Date/Version** | **Title**                          |
+=========+==================+====================================+
| 1.      | V1.0.1           | sw_s8_pdk_Release_Notes_V1.0.1.pdf |
+---------+------------------+------------------------------------+
| 2.      | V0.1.1           | sw_scs8ls_Release_Notes_V0.1.1.pdf |
+---------+------------------+------------------------------------+

V0.1.1 Updates and Known Limitations
====================================

The V0.1.1 S8FMLT release is the latest alpha release of the SkyWater S130 (“S8”) technology S8FMLT IP. This release has been tested on a limited set of IP and contains known issues. Any known limitations with the IP are documented in the Release Notes (i.e. this document).

Supported Tool Versions
-----------------------

The S8FMLT V0.1.1 IP was developed and tested with the tools listed in Table 1.

Table : Supported tool versions for S8FMLT V0.1.1

+------------------+--------------+
| **Tool**         | **Version**  |
+==================+==============+
| Cadence Genus    | 17.20-p003_1 |
+------------------+--------------+
| Cadence Xcelium  | 17.10-s003   |
+------------------+--------------+
| Cadence Innovus  | 18.12        |
+------------------+--------------+
| Cadence Spectre  | 17.10.160    |
+------------------+--------------+
| Cadence Virtuoso | ic617.715    |
+------------------+--------------+
| Mentor Calibre   | 2018.1_27.18 |
+------------------+--------------+

The following tools are not supported yet for S130:

-  Synopsys HSPICE

-  Electromigration

-  Reliability / Device aging models

V0.1.1 Bug List
---------------

Bug tracking software is used to track tasks related to IP development. The term “bug” refers to a tracked item, and does not necessarily indicate a problem that is being fixed.

Table 2 lists the bugs that were addressed in this IP release.

Table : Bugs addressed in V0.1.1

+---------+---------------+------------------------------------------------+
| **Bug** | **Component** | **Summary**                                    |
+=========+===============+================================================+
| 1080    | Libraries     | Repair s8fmlt library                          |
+---------+---------------+------------------------------------------------+
| 1115    | Libraries     | Confirm s8fmlt digital libraries               |
+---------+---------------+------------------------------------------------+
| 1133    | Libraries     | Investigate W/L Issues in s8fmlt               |
+---------+---------------+------------------------------------------------+
| 1181    | Libraries     | LVS for s8fmlt 8k, 16k, 32k                    |
+---------+---------------+------------------------------------------------+
| n/a     | Schematic     | Snap Schematic symbol pins to 0.0625 snap grid |
+---------+---------------+------------------------------------------------+

V0.1.1 Known Limitations
------------------------

The following is a list of known issues with the V0.1.1 S8FMLT IP.

The condiode element requires a .simrc file for correct CDL netlisting. The file is $PDK_HOME/VirtuosoOA/examples/simrc. The file should be copied to .simrc for automatic sourcing in the user's work area (same location as .cdsinit).

Overview
========

The SkyWater S8FMLT Release Notes contain information regarding the Flash Macro available from SkyWater for this technology and its known limitations.

Digital PDK
===========

DRC
---

Requirements
~~~~~~~~~~~~

-  Calibre Rundecks: $PDK_HOME/DRC/Calibre/*Rules\*

**Calibre** DRC Rundecks
~~~~~~~~~~~~~~~~~~~~~~~~

Five Calibre rundecks are available:

1. drcRules: General DRC rundeck

2. softRules: ERC rundeck

3. stressRules: Sealring checks

4. latchupRules: Latch-up and antenna checks

5. fillRules: Metal fill rundeck is being developed

A clean run for the top 4 rundecks is required for every design.

The metal fill deck is for timing purposes and can be loaded into Quantus; the final metal fill will be added at tapeout.

There is an additional rundeck called cldrcRules.

This rundeck converts all layers to a version ready for tapeout. It also adds in the final metal fill. This rundeck will usually be used at the Foundry only as part of final tapeout process.

**Execution**
~~~~~~~~~~~~~

Calibre DRC can be run from within Calibre DESIGNRev:

1. Load the GDS written out from Innovus.

2. Launch “Verification -> Run nmDRC”.

3. At “Rules -> DRC Rules File” enter “$PDK_HOME/DRC/Calibre/<rundeck_name>”.

4. At “Rules -> DRC Run Directory” enter the local directory name with the title of the rundeck, i.e. “<local path>/drc” or “<local path>/stress”.

5. At “Inputs” press “Export from layout viewer”.

6. Click “Run DRC”.

LVS
---

.. _requirements-1:

Requirements
~~~~~~~~~~~~

To ensure proper execution with the correct settings, Calibre LVS should be run using one of these two runsets:

-  Calibre LVS, standard runset: $PDK_HOME/LVS/Calibre/s8_lvs_runset

-  Calibre LVS, runset with custom include file: $PDK_HOME/LVS/Calibre/s8_lvs_runset_include

The runsets are identical, except the second runset allows the use of a custom include file. This fill must be called “Calibre_LVS_Include” and must reside in the user’s project directory. The custom include file allows the user to specify additional LVS settings. For example, the s8fmlt_8k_sys cell requires schematic diodes to be filtered to give clean LVS; in this case, the “Calibre_LVS_Include” file should contain this line:

LVS FILTER D OPEN SOURCE

Both runsets load the following Calibre LVS rule file:

-  $PDK_HOME/LVS/Calibre/lvs_s8_opts

.. _execution-1:

**Execution**
~~~~~~~~~~~~~

All top level cells are LVS clean: s8fmlt_8k_sys, s8fmlt_16k_sys, and s8fmlt_32k_sys.

PEX
---

.. _requirements-2:

Requirements
~~~~~~~~~~~~

Calibre xRC is supported. To ensure proper execution with the correct settings, Calibre xRC should be run using one of these two runsets:

-  Calibre xRC, standard runset: $PDK_HOME/PEX/xRC/s8_xRC_runset

-  Calibre LVS, runset with custom include file: $PDK_HOME/LVS/Calibre/s8_xRC_runset_include

As with LVS, the “s8_xRC_runset_include” allows the use of a custom include file (“Calibre_LVS_Include”).

Both runsets load the following Calibre xRC rule files:

-  $PDK_HOME/PEX/xRC/xrcControlFile_s8

.. |logo| image:: ./media/image1.png
   :width: 3.5in
   :height: 1.04455in
