Update readme
diff --git a/README.md b/README.md
index a998aae..188e4f0 100644
--- a/README.md
+++ b/README.md
@@ -6,16 +6,20 @@
 
 Randsack is a test chip for trying out random number generators and PUFs.
 
-### IP Blocks
+### IP Blocks and Instances
 
-- `dtop` - Digital top sea of gates containing control logic and digital peripherals.
-- `dgpio` - GPIO peripheral.
+- `digitalcore_macro` - Digital top sea of gates containing control logic and digital peripherals.
+    - `gpio0` - Wishbone 32-bit GPIO peripheral
+    - `uart0` - Wishbone UART peripheral
+    - `ring0` - Ring oscillator controller for collapsing ring.
+    - `ring1` - Ring oscillator controller for free running ring oscillator.
 - `collapsering_macro` - Trimmable collapsing ring oscillators for generating random numbers with a configurable output divider.  See `ip/randsack/sch/collapsering.sch` xschem schematic for design.
 - `ringosc_macro` - Trimmable ring oscillator.
 
+All custom IP blocks are in located in the `ip/randsack/` directory.  Third party IP is in the `ip/third_party/` directory.
+
 ### TODO
 
-- GPIO peripheral for easier IO from the CPU.
 - Serializer block to output high rate data.
 - PWM block for generating audio.
 - LFSR block to take a seed value from the TRNG and generate high rate data.
@@ -23,7 +27,7 @@
 
 ## Methodology, Implementation, and SPICE simulation
 
-The more analog-like blocks like the ring oscillators are designed using stdcells in xschem and then simulated with ngspice.
+The more analog-like blocks like the ring oscillators are designed using stdcells in xschem and simulated with ngspice.
 
 Due to limited time all blocks are synthesized using the standard openlane flow instead of hand layout.  The resulting netlist is inspected to ensure minimal modifications by the tools.  The resulting extracted spice file is then simulated.
 
@@ -37,6 +41,16 @@
 
 The output of the oscillator blocks can be muxed to output GPIOs for debug.  GPIOs are limited to ~60 MHz so the internal clock dividers should be used.
 
+## Hardening Macros
+
+Use the `mpw-3` tag in the https://github.com/efabless/OpenLane.git repo.  As of this time the Docker Hub repo is missing the `mpw-3` tag so manually set the openlane tag to `master` which currently points to the same commit.  See `envsetup` for required environment vars.
+
+All the `*_macro` blocks need to be hardened first before finally hardening the `user_project_wrapper` macro.
+
+## DV
+
+See the `verilog/dv/randsack*` directories for RTL/GL testbenches.
+
 ## References
 
 - Sample project [README](docs/source/index.rst) containing instructions on how to setup the chip environment.