Added a to-do list for things that need to be done before the
first MPW tapeout.
diff --git a/TODO b/TODO
new file mode 100644
index 0000000..1100864
--- /dev/null
+++ b/TODO
@@ -0,0 +1,97 @@
+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.