diff --git a/README.md b/README.md
index 582ab35..7b63ae2 100644
--- a/README.md
+++ b/README.md
@@ -1,208 +1,137 @@
-# Skywater 130 Decred Miner	<!---
+# Skywater 130 Decred Miner
 
-# SPDX-FileCopyrightText: 2020 Efabless Corporation
-## Table of Contents	#
-* [Introduction](#introduction)	# Licensed under the Apache License, Version 2.0 (the "License");
-* [Implementation](#implementation)	# you may not use this file except in compliance with the License.
-	* [Hash Unit Input Data](#hash-unit-input-data)	# You may obtain a copy of the License at
-  * [ASIC Chaining Support](#asic-chaining-support)	#
-	* [Register File](#register-file)	#      http://www.apache.org/licenses/LICENSE-2.0
-  * [Verilog Module Hierarchy](#verilog-module-hierarchy)	#
-* [Building](#building)	# Unless required by applicable law or agreed to in writing, software
-  * [Check Out](#check-out)	# distributed under the License is distributed on an "AS IS" BASIS,
-  * [Build Decred Flow](#build-decred-flow)	# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+## Table of Contents
+* [Introduction](#introduction)
+* [Implementation](#implementation)
+	* [Hash Unit Input Data](#hash-unit-input-data)
+  * [ASIC Chaining Support](#asic-chaining-support)
+	* [Register File](#register-file)
+  * [Verilog Module Hierarchy](#verilog-module-hierarchy)
+* [Building](#building)
+  * [Check Out](#check-out)
+  * [Build Decred Flow](#build-decred-flow)
+  
+  
 
-# See the License for the specific language governing permissions and
+## Introduction
 
-# limitations under the License.
-#
-# SPDX-License-Identifier: Apache-2.0
--->
-# CIIC Harness  
+Decred is a blockchain-based cryptocurrency that utilizes a hybrid Proof-of-Work (PoW) and Proof-of-Stake (PoS) mining system. More about Decred can be found at https://docs.decred.org.
 
-A template SoC for Google SKY130 free shuttles. It is still WIP. The current SoC architecture is given below.
+The PoW element of Decred uses the BLAKE-256 (14 round) hashing function and is described in more detail at https://docs.decred.org/research/blake-256-hash-function.
 
-<p align="center">
-<img src="/doc/ciic_harness.png" width="75%" height="75%"> 
-</p>
+The Skywater 130 Decred Miner project implements a BLAKE-256r14 hash unit that is optimized for the Decred blockchain (i.e., not a generic BLAKE-256r14 hash unit). In addition to the hash unit, the core also includes a SPI unit with addressable register space and a device interrupt; all to be used with a separate controller board. The core is implemented on Skywater’s SKY130 process.
 
+Several Decred ASICs have been produced in the past at process nodes much smaller than 130nm (some as small as 16nm). This project’s purpose is not intended to compete with the performance per watt of those commercially available units. Rather, this project was intended as a method to learn about the challenges of ASIC development and provide a stepping stone for open-source ASIC development.
 
-## Getting Started:
+## Implementation
 
-* For information on tooling and versioning, please refer to [this][1].
+### Hash Unit Input Data
 
-Start by cloning the repo and uncompressing the files.
-```bash
-git clone https://github.com/efabless/caravel.git
-cd caravel
+The Decred blockchain provides a 180-byte header that includes common blockchain fields such as previous block hash, merkle root, timestamp, nonce, and height. It also includes Decred-specific fields such as voting information that works with the PoS portion of Decred. The Decred header specification can be found at https://devdocs.decred.org/developer-guides/block-header-specifications.
+
+The Decred PoW process runs variations of the header (plus 16-byte padding) through the BLAKE-256r14 hash function and compares that result to a numerical value (smaller value better). The varying data of the header is the nonce space. A Nonce field exists at the end of the Decred header. While the Nonce field is only 32-bits, the ExtraData field can be used to expand the nonce space. After the full header is initially hashed, only the last chunk of 64 bytes needs to be rehashed for each change in nonce space. This is because the Nonce and ExtraData fields are at the end of the header. The result of hashing the first 128 bytes of the header is referred to as the midstate. The controller board generates the header’s midstate and sends it, along with other static header data and the target difficulty information, to the core via the SPI interface. After the necessary data is sent, the controller board enables hashing. If the hash unit determines that a result suffices that target difficulty, an interrupt is generated from the core to the controller board and the solution nonce is saved. Once the interrupt is handled by the controller board, it reads the solution nonce from the core’s register space.
+
+Midstate – 256 bytes
+
+Static Header Data – 16 bytes
+
+Threshold Mask – 4 bytes
+
+Upper Nonce Start – 4 bytes
+
+Note that Decred’s minimum difficulty of 1.0 relates to a target that has 0 in the most significant 32-bits (i.e., 0x00000000 XXXXXXXX YYYYYYYY YYYYYYYY YYYYYYYY YYYYYYYY YYYYYYYY YYYYYYYY) so the Threshold Mask only populates the second most significant word (i.e., X’s). Based on the expected hash performance, Decred difficulties greater than 2^32 were impractical to support. This allowed for optimizations in the hash unit.
+
+### ASIC Chaining Support
+
+It is common for crypto currency mining machine manufacturers to chain several dozen ASIC chips together in a single unit to maximize hash rate SWaP (size, weight, and power). This project implements support for chaining ASICs to a single controller board.
+
+### Register File
+
+A small number of registers are provided at the register_bank level and accessed via the SPI interface.  Read/write operations can operate on different data (see R/W field).  A register window is used to interface with registers at the hash_macro level.
+```
+register_bank
+0x00  RW  Macro address
+0x01   W  Macro write data
+0x02  R   Macro interrupt status 
+0x02   W  Macro select (bit mapped)
+0x03  RW  Control byte
+        0 Macro read enable strobe
+	1 <unused>
+        2 Clk counter enable
+        3 LED output GPIO
+        4 M1 clk reset
+        5 Chain enable GPIO
+0x04  RW  SPI address [6:0]
+0x05  R   ID register
+0x05   W  Macro write stobe
+0x06  R   Macro ID register
+0x07  R   Perf counter [7:0]
+0x08  R   Perf counter [15:8]
+0x09  R   Perf counter [23:16]
+0x0A  R   Perf counter [31:24]
+0x80  R   Macro data
+
+hash_macro
+0x00 - 0x1F Midstate
+0x20 - 0x23 Threshold Mask
+0x24 - 0x33 Static Header Data
+0x34 - 0x37 Upper nonce start
+0x38 - 0x39 Nonce start
+0x3A - 0x3B Stride
+```
+### Verilog Module Hierarchy
+
+```
+decred_top.v
+   |
+    - clock_div.v
+   |
+    - decred.v
+         |
+          - addressalyzer.v
+         |
+          - spi_*.v
+         |
+          - register_bank.v
+               |
+                - hash_macro_nonblock.v
+```
+
+## Building
+Follow the steps at https://github.com/efabless/openlane#quick-start. 
+Note that as of the time of this writing, openlane mpw-one-a was the current release branch for the shuttle (i.e., git clone https://github.com/efabless/openlane.git --branch mpw-one-a).
+
+After ```make test``` succeeds, proceed to check out step next.
+
+### Check Out
+```
+cd openlane/designs
+git clone https://github.com/SweeperAA/caravel_skywater130_decred_miner.git
+cd caravel_skywater130_decred_miner
 make uncompress
+cd openlane
 ```
 
+### Build Decred Flow
+Building to integrate into the caravel test harness chip is done in several steps.
 
-## Introduction	Then you need to install the open_pdks prerequisite:
- - [Magic VLSI Layout Tool](http://opencircuitdesign.com/magic/index.html) is needed to run open_pdks -- version >= 8.3.60*
-
-
-Decred is a blockchain-based cryptocurrency that utilizes a hybrid Proof-of-Work (PoW) and Proof-of-Stake (PoS) mining system. More about Decred can be found at https://docs.decred.org.	 > \* Note: You can avoid the need for the magic prerequisite by using the openlane docker to do the installation step in open_pdks. This could be done by cloning [openlane](https://github.com/efabless/openlane/tree/master) and following the instructions given there to use the Makefile.
-The PoW element of Decred uses the BLAKE-256 (14 round) hashing function and is described in more detail at https://docs.decred.org/research/blake-256-hash-function.	Install the required version of the PDK by running the following commands:
-
-
-The Skywater 130 Decred Miner project implements a BLAKE-256r14 hash unit that is optimized for the Decred blockchain (i.e., not a generic BLAKE-256r14 hash unit). In addition to the hash unit, the core also includes a SPI unit with addressable register space and a device interrupt; all to be used with a separate controller board. The core is implemented on Skywater’s SKY130 process.	```bash
-export PDK_ROOT=<The place where you want to install the pdk>
-make pdk
+Step 1: Build the hashing unit macro.
+```
+make decred_hash_macro
 ```
 
-
-Several Decred ASICs have been produced in the past at process nodes much smaller than 130nm (some as small as 16nm). This project’s purpose is not intended to compete with the performance per watt of those commercially available units. Rather, this project was intended as a method to learn about the challenges of ASIC development and provide a stepping stone for open-source ASIC development.	Then, you can learn more about the caravel chip by watching these video:
-- Caravel User Project Features -- https://youtu.be/zJhnmilXGPo
-- Aboard Caravel -- How to put your design on Caravel? -- https://youtu.be/9QV8SDelURk
-- Things to Clarify About Caravel -- What versions to use with Caravel? -- https://youtu.be/-LZ522mxXMw
-    - You could only use openlane:rc6
-    - Make sure you have the commit hashes provided here inside the [Makefile](./Makefile)
-## Aboard Caravel:
-
-
-## Implementation	Your area is the full user_project_wrapper, so feel free to add your project there or create a differnt macro and harden it seperately then insert it into the user_project_wrapper. For example, if your design is analog or you're using a different tool other than OpenLANE.
-
-
-### Hash Unit Input Data	If you will use OpenLANE to harden your design, go through the instructions in this [README.md][0].
-
-
-The Decred blockchain provides a 180-byte header that includes common blockchain fields such as previous block hash, merkle root, timestamp, nonce, and height. It also includes Decred-specific fields such as voting information that works with the PoS portion of Decred. The Decred header specification can be found at https://devdocs.decred.org/developer-guides/block-header-specifications.	You must copy your synthesized gate-level-netlist for `user_project_wrapper` to `verilog/gl/` and overwrite `user_project_wrapper.v`. Otherwise, you can point to it in [info.yaml](info.yaml).
-
-
-The Decred PoW process runs variations of the header (plus 16-byte padding) through the BLAKE-256r14 hash function and compares that result to a numerical value (smaller value better). The varying data of the header is the nonce space. A Nonce field exists at the end of the Decred header. While the Nonce field is only 32-bits, the ExtraData field can be used to expand the nonce space. After the full header is initially hashed, only the last chunk of 64 bytes needs to be rehashed for each change in nonce space. This is because the Nonce and ExtraData fields are at the end of the header. The result of hashing the first 128 bytes of the header is referred to as the midstate. The controller board generates the header’s midstate and sends it, along with other static header data and the target difficulty information, to the core via the SPI interface. After the necessary data is sent, the controller board enables hashing. If the hash unit determines that a result suffices that target difficulty, an interrupt is generated from the core to the controller board and the solution nonce is saved. Once the interrupt is handled by the controller board, it reads the solution nonce from the core’s register space.	> Note: If you're using openlane to harden your design, this should happen automatically.
-Midstate – 256 bytes	Then, you will need to put your design aboard the Caravel chip. Make sure you have the following:
-
-
-Static Header Data – 16 bytes	- [Magic VLSI Layout Tool](http://opencircuitdesign.com/magic/index.html) installed on your machine. We may provide a Dockerized version later.\*
-- You have your user_project_wrapper.gds under `./gds/` in the Caravel directory.
-
-
-Threshold Mask – 4 bytes	 > \* **Note:** You can avoid the need for the magic prerequisite by using the openlane docker to run the make step. This [section](#running-make-using-openlane-magic) shows how.
-Upper Nonce Start – 4 bytes	Run the following command:
-
-
-Note that Decred’s minimum difficulty of 1.0 relates to a target that has 0 in the most significant 32-bits (i.e., 0x00000000 XXXXXXXX YYYYYYYY YYYYYYYY YYYYYYYY YYYYYYYY YYYYYYYY YYYYYYYY) so the Threshold Mask only populates the second most significant word (i.e., X’s). Based on the expected hash performance, Decred difficulties greater than 2^32 were impractical to support. This allowed for optimizations in the hash unit.	```bash
-export PDK_ROOT=<The place where the installed pdk resides. The same PDK_ROOT used in the pdk installation step>
-make
+Step 2: Build the controller macro.
+```
+make decred_controller
 ```
 
+Step 3: Integrate decred_top design into user_project_wrapper.
+```
+make user_project_wrapper
+```
 
-### ASIC Chaining Support	This should merge the GDSes using magic and you'll end up with your version of `./gds/caravel.gds`. You should expect ~90 magic DRC violations with the current "development" state of caravel.
-
-
-It is common for crypto currency mining machine manufacturers to chain several dozen ASIC chips together in a single unit to maximize hash rate SWaP (size, weight, and power). This project implements support for chaining ASICs to a single controller board.	## Running Make using OpenLANE Magic
-
-
-### Register File	To use the magic installed inside Openlane to complete the final GDS streaming out step, export the following:
-
-
-A small number of registers are provided at the register_bank level and accessed via the SPI interface.  Read/write operations can operate on different data (see R/W field).  A register window is used to interface with registers at the hash_macro level.	```bash
-```	export PDK_ROOT=<The location where the pdk is installed>
-register_bank	export OPENLANE_ROOT=<the absolute path to the openlane directory cloned or to be cloned>
-0x00  RW  Macro address	export IMAGE_NAME=<the openlane image name installed on your machine. Preferably openlane:rc6>
-0x01   W  Macro write data	export CARAVEL_PATH=$(pwd)
-0x02  R   Macro interrupt status 	
-0x02   W  Macro select (bit mapped)	
-0x03  RW  Control byte	
-        0 Macro read enable strobe	
-	1 <unused>	
-        2 Clk counter enable	
-        3 LED output GPIO	
-        4 M1 clk reset	
-        5 Chain enable GPIO	
-0x04  RW  SPI address [6:0]	
-0x05  R   ID register	
-0x05   W  Macro write stobe	
-0x06  R   Macro ID register	
-0x07  R   Perf counter [7:0]	
-0x08  R   Perf counter [15:8]	
-0x09  R   Perf counter [23:16]	
-0x0A  R   Perf counter [31:24]	
-0x80  R   Macro data	
-hash_macro	
-0x00 - 0x1F Midstate	
-0x20 - 0x23 Threshold Mask	
-0x24 - 0x33 Static Header Data	
-0x34 - 0x37 Upper nonce start	
-0x38 - 0x39 Nonce start	
-0x3A - 0x3B Stride	
-```	```
-### Verilog Module Hierarchy	
-
-
-Then, mount the docker:
-
-```bash
-docker run -it -v $CARAVEL_PATH:$CARAVEL_PATH -v $OPENLANE_ROOT:/openLANE_flow -v $PDK_ROOT:$PDK_ROOT -e CARAVEL_PATH=$CARAVEL_PATH -e PDK_ROOT=$PDK_ROOT -u $(id -u $USER):$(id -g $USER) $IMAGE_NAME
-```	```
-decred_top.v	
-   |	Finally, once inside the docker run the following commands:
-    - clock_div.v	```bash
-   |	cd $CARAVEL_PATH
-    - decred.v	make
-         |	exit
-          - addressalyzer.v	
-         |	
-          - spi_*.v	
-         |	
-          - register_bank.v	
-               |	
-                - hash_macro_nonblock.v	
-```	```
-
-
-## Building	This should merge the GDSes using magic and you'll end up with your version of `./gds/caravel.gds`. You should expect ~90 magic DRC violations with the current "development" state of caravel.
-Follow the steps at https://github.com/efabless/openlane#quick-start. 	
-Note that as of the time of this writing, openlane mpw-one-a was the current release branch for the shuttle (i.e., git clone https://github.com/efabless/openlane.git --branch mpw-one-a).	
-
-
-After ```make test``` succeeds, proceed to check out step next.	
-
-
-### Check Out	## IMPORTANT:
-```	
-cd openlane/designs	
-git clone https://github.com/SweeperAA/caravel_skywater130_decred_miner.git	
-cd caravel_skywater130_decred_miner	
-make uncompress	
-cd openlane	
-```	
-
-
-### Build Decred Flow	Please make sure to run `make compress` before commiting anything to your repository. Avoid having 2 versions of the gds/user_project_wrapper.gds or gds/caravel.gds one compressed and the other not compressed.
-Building to integrate into the caravel test harness chip is done in several steps.	
-
-
-Step 1: Build the hashing unit macro.	## Required Directory Structure
-```	
-make decred_hash_macro	
-```	
-
-
-Step 2: Build the controller macro.	- ./gds/ : includes all the gds files used or produced from the project.
-```	- ./def/ : includes all the def files used or produced from the project.
-make decred_controller	- ./lef/ : includes all the lef files used or produced from the project.
-```	- ./mag/ : includes all the mag files used or produced from the project.
-- ./maglef/ : includes all the maglef files used or produced from the project.
-- ./spi/lvs/ : includes all the maglef files used or produced from the project.
-- ./verilog/dv/ : includes all the simulation test benches and how to run them. 
-- ./verilog/gl/ : includes all the synthesized/elaborated netlists. 
-- ./verilog/rtl/ : includes all the Verilog RTLs and source files.
-- ./openlane/`<macro>`/ : includes all configuration files used to run openlane on your project.
-- info.yaml: includes all the info required in [this example](info.yaml). Please make sure that you are pointing to an elaborated caravel netlist as well as a synthesized gate-level-netlist for the user_project_wrapper
-
-
-Step 3: Integrate macros inside decred_top design.	## Managment SoC
-```	The managment SoC runs firmware that can be used to:
-make decred_top	- Configure User Project I/O pads
-```	- Observe and control User Project signals (through on-chip logic analyzer probes)
-- Control the User Project power supply
-
-
-Step 4: Integrate user_project_wrapper into caravel SOC.	The memory map of the management SoC can be found [here](verilog/rtl/README)
-```	
-cd ..	## User Project Area
-make ship	This is the user space. It has limited silicon area (TBD, about 3.1mm x 3.8mm) as well as a fixed number of I/O pads (37) and power pads (10).  See [the Caravel  premliminary datasheet](doc/caravel_datasheet.pdf) for details.
+Step 4: Integrate user_project_wrapper into caravel SOC.
+```
+cd ..
+make ship
 ```
