tree 733f9224943538b60b97ecfcf4c70189d378c7a1
parent e89f551c5b934870b1eeef1898d410554713fb74
author Tim 'mithro' Ansell <me@mith.ro> 1605015539 -0800
committer Tim 'mithro' Ansell <tansell@google.com> 1605015539 -0800

Release of a subset of IO into sky130_fd_io 0.0.2

This release includes;
 * Power pads;
    - High voltage - `top_power_hvc_wpad`, `top_ground_hvc_wpad`
    - Low voltage - `top_power_lvc_wpad`, `top_ground_lvc_wpad`
 * Reference generators - `top_refgen`, `top_refgen_new`.
 * Standard GPIO (`top_gpiov2`).
 * I2C compatible GPIO with over-voltage tolerance (`top_gpio_ovtv2`).
 * Special SIO (`top_sio`) with differential macro (`top_sio_macro`).
 * System wide reset influencing XRES cell (`top_xres4v2`).

Future release will include;
 * Original standard GPIO (`top_gpio`).
 * More power pad versions.
 * More XRES cells.
 * More reference generators (`top_vrefcapv2`, etc).
 * Spice and CDL models for the IOs.

This commit contains major improvements to all files in all modules 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 including most liberty timing files and spice simulation models
   (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, 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 (like the
   verilog files) through improving consistent style that has been
   automatically checked.

 * Simplified verilog files for usage with open tools, including new
   black box stubs have been created.

 * Too many numerous other changes to list here.

Signed-off-by: Tim 'mithro' Ansell <tansell@google.com>
