blob: 11008646f1b3bcef2ef36865038fe45ec4c26c60 [file] [log] [blame] [edit]
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.