NOTES on GF180MCU implementation of Caravel
---------------------------------------------

Items that remain to be addressed for a version that can
be used with an Open MPW tapeout:

(1) The DLL should be redesigned to operate around the
    nominal frequency of the ring oscillator;  the ring
    oscillator may need to be redesigned to a different
    number of stages (as it was originally designed for
    1.8V logic, the existing version is probably slower
    than optimal for this process).

(2) User project wrapper needs to be expanded to the
    largest extent possible, since it is already less
    than the preferred 10um^2.  There is room on all
    sides to expand.  With the recommendations below,
    the user project area should be able to be
    3100um x 3200um.  If the managment SoC can be made
    slightly wider and shorter, then it should be
    possible to make the user area 3100um x 3226um,
    which reclaims the preferred 10um^2.

(3) Along with (2), the GPIO control blocks could be
    designed with the main power buses overlapping, so
    that the main power buses pass over top the GPIO
    control blocks, saving area.  Make them as narrow as
    possible (no more than 25um is preferred).

(4) The power bus should be redesigned with the main
    power always on top level (thick) metal.  Power
    supply stubs should be on metal4.  The main two power
    buses should be at least 10um wide each.

(5) GPIO control blocks need layout in which the output
    signals exactly align with the input signals.  The
    current arrangement requires the routes between them
    to cross over one another, when they could be simply a
    straight one-line route from instance to instance.

(6) GPIO defaults block power routing should match
    the GPIO control block power routing as defined above
    (which will be the case if the GPIO control block
    power stripe directions are reversed, meaning that
    the GPIO control block should be synthesized in a
    narrow vertical aspect ratio, not horizontal.

(7) GPIO control block needs same treatment as the
    original sky130 caravel, to clock the last shift
    register output on the clock negative edge to obtain
    the maximum margin against hold violations.

(8) Move housekeeping and other nearby top-level blocks
    as close to the padframe as possible.  Expand the
    management SoC area to take up all remaining available
    space.

(9) Swap gpio_control_in_1[4] and gpio_control_in_1[5],
    which are out of order ([4] should connect to
    mprj_io[12] and [5] should connect to mprj_io[13];
    is this wrong in the verilog?).

(10) Need scripts to generate user-defined GPIO defaults
    blocks.

(11) Need scripts to generate the user ID

(12) Schmitt trigger inverter on the POR needs to be checked,
    as this is a custom design.

(13) Need script to run fill generation

(14) Need script to run seal ring generation

(15) Need to fix the management SoC to handle the full user
     project area wishbone address space

(16) Need to fix the management SoC to handle the full
     houskeeping wishbone address space

(17) Need hexidecimal large digit cell layouts for user project
     ID number.

(18) Restore the open source icon block (layout exists).

Other recommendations/requests:

(1) No power supply route between top level blocks will be less
    than 10um wide

(2) Power routing inside synthesized blocks will cover at least
    10% of the total layout area with top level power routing

(3) User project area pins will align (within reason) with the
    location of the destination, not spread evenly.  They will
    always align with a multiple of the standard cell route
    pitch.
