tree 6613a9a19fc9293ca49805ad232e6b882f5bf523
parent 9c37cf76bdd02f6566f6312b6bd07f5a844d1656
author Kevin Kelley <kevin.kelley@skywatertechnology.com> 1600117202 -0700
committer Tim 'mithro' Ansell <tansell@google.com> 1600117202 -0700

Significant improvements to primitives sky130_fd_pr version 0.0.9.

This commit contains major improvements to all files by regenerating
from original data, improving consistency and automated cross checking
of data.

These improvements should drastically reduce customer confusion when
using the library and further reduce future possibility for human errors to
creep into designs.

Notable improvements include;

 * A large number of files have been regenerated from original source
   data (compared to previous hand created versions).

 * Catalog and other library aggregations are now automatically
   generated from library contents (compared to previous hand created
   versions).

 * Significant improvements to documentation for all cells and models,
   including producing graphical representations, verified metadata and
   descriptions.

 * Names have been cross referenced between file types (such as
   simulation, layout, schematic and timing) and now verified to match.

 * Names have been improved to fix a standard format across all supported
   libraries and PDK contents.

 * Significant improvements to the contents of text files through improving
   consistent style that has been automatically checked.

 * Simplified spice files for usage with open tools.

 * Too many numerous other changes to list here.

Signed-off-by: Kevin Kelley <kevin.kelley@skywatertechnology.com>
Signed-off-by: Tim 'mithro' Ansell <tansell@google.com>
