Read me updated and rebased the caravel
diff --git a/.gitmodules b/.gitmodules index c73b442..4798126 100644 --- a/.gitmodules +++ b/.gitmodules
@@ -1,3 +1,3 @@ -[submodule "caravel-lite"] +[submodule "caravel"] path = caravel - url = https://github.com/efabless/caravel-lite + url = https://github.com/efabless/caravel-lite.git
diff --git a/README.md b/README.md index 3706438..18251d9 100644 --- a/README.md +++ b/README.md
@@ -1,11 +1,158 @@ -# Caravel User Project - -[](https://opensource.org/licenses/Apache-2.0) [](https://github.com/efabless/caravel_project_example/actions/workflows/user_project_ci.yml) [](https://github.com/efabless/caravel_project_example/actions/workflows/caravel_build.yml) - -| :exclamation: Important Note | -|-----------------------------------------| - -## Please fill in your project documentation in this README.md file +``` + MBIST Controller -Refer to [README](docs/source/index.rst) for this sample project documentation. +Permission to use, copy, modify, and/or distribute this soc for any +purpose with or without fee is hereby granted, provided that the above +copyright notice and this permission notice appear in all copies. + +THE SOC IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES +WITH REGARD TO THIS SOC INCLUDING ALL IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR +ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF +OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOC. +``` + +# Table of contents +- [Overview](#overview) +- [MBIST Controller Block Diagram](#mbist-controller-block-diagram) +- [Key Feature](#key-features) +- [Prerequisites](#prerequisites) +- [Tests preparation](#tests-preparation) + - [Running Simuation](#running-simulation) +- [Tool sets](#tool-sets) +- [Documentation](#documentation) + + +# Overview + +MBIST is a self-testing and repair mechanism which tests the memories through an effective set of algorithms to detect possibly all the faults that could be present inside a typical memory cell whether it is stuck-at (SAF), transition delay faults (TDF), coupling (CF) or neighborhood pattern sensitive faults (NPSF). +. This project uses only open source tool set for simulation,synthesis and backend tools. The SOC flow follow the openlane methodology and SOC environment is compatible with efabless/carvel methodology. + +# Riscduino Block Diagram + +<table> + <tr> + <td align="center"><img src="./docs/source/_static/mbist_controller_block_diagram.png" ></td> + </tr> + +</table> + + +# Key features +``` + * Open sourced under Apache-2.0 License (see LICENSE file) - unrestricted commercial use allowed. + * Mbist controller with memory repair supported + * Currently only Row Redudency is supported + * 2KB SRAM for data memory + * Wishbone compatible design + * Written in System Verilog + * Open-source tool set + * simulation - iverilog + * synthesis - yosys + * backend/sta - openlane tool set + * Verification suite provided. +``` + + +# Prerequisites + - Docker (ensure docker daemon is running) -- tested with version 19.03.12, but any recent version should suffice. +## Step-1: Docker in ubuntu 20.04 version +```bash + sudo apt update + sudo apt-get install apt-transport-https curl rtificates -agent software-properties-common + curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add - + sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu focal stable" + sudo apt update + apt-cache policy docker-ce + sudo apt install docker-ce + + #Add User Name to docker + sudo usermod -aG docker <your user name> + # Reboot the system to enable the docker setup +``` +## Step-2: Update the Submodule, To to project area +```bash + git submodule init + git submodule update +``` +## Step-3: clone Openlane scripts under workarea +```bash + git clone https://github.com/The-OpenROAD-Project/OpenLane.git +``` + +## Step-4: add Environment setting +```bash + export CARAVEL_ROOT=<Carvel Installed Path> + export OPENLANE_ROOT=<OpenLane Installed Path> + export OPENLANE_IMAGE_NAME=efabless/openlane:latest + export PDK_ROOT=<PDK Installed PATH> + export PDK_PATH=<PDK Install Path>/sky130A +``` +## Step-5: To install the PDK +```bash + source ~/.bashrc + cd OpenLane + make pdk +``` + +# Tests preparation + +The simulation package includes the following tests: + + + + +# Running Simulation + + +# Tool Sets + +Mbist Controller flow uses Openlane tool sets. + +1. **Synthesis** + 1. `yosys` - Performs RTL synthesis + 2. `abc` - Performs technology mapping + 3. `OpenSTA` - Pefroms static timing analysis on the resulting netlist to generate timing reports +2. **Floorplan and PDN** + 1. `init_fp` - Defines the core area for the macro as well as the rows (used for placement) and the tracks (used for routing) + 2. `ioplacer` - Places the macro input and output ports + 3. `pdn` - Generates the power distribution network + 4. `tapcell` - Inserts welltap and decap cells in the floorplan +3. **Placement** + 1. `RePLace` - Performs global placement + 2. `Resizer` - Performs optional optimizations on the design + 3. `OpenPhySyn` - Performs timing optimizations on the design + 4. `OpenDP` - Perfroms detailed placement to legalize the globally placed components +4. **CTS** + 1. `TritonCTS` - Synthesizes the clock distribution network (the clock tree) +5. **Routing** + 1. `FastRoute` - Performs global routing to generate a guide file for the detailed router + 2. `CU-GR` - Another option for performing global routing. + 3. `TritonRoute` - Performs detailed routing + 4. `SPEF-Extractor` - Performs SPEF extraction +6. **GDSII Generation** + 1. `Magic` - Streams out the final GDSII layout file from the routed def + 2. `Klayout` - Streams out the final GDSII layout file from the routed def as a back-up +7. **Checks** + 1. `Magic` - Performs DRC Checks & Antenna Checks + 2. `Klayout` - Performs DRC Checks + 3. `Netgen` - Performs LVS Checks + 4. `CVC` - Performs Circuit Validity Checks + + + + + +## Contacts + +Report an issue: <https://github.com/dineshannayya/mbist_ctrl/issues> + +# Documentation + + + + +