blob: 4ecc1f729045352d554f3a9f07c442d499dcff95 [file] [log] [blame] [view]
dineshannayyae2b88902021-10-17 19:42:17 +05301```
2 MBIST Controller
Manarc7bcaf92021-04-16 18:21:23 +02003
Manar2d350282021-04-19 23:51:16 +02004
dineshannayyae2b88902021-10-17 19:42:17 +05305Permission to use, copy, modify, and/or distribute this soc for any
6purpose with or without fee is hereby granted, provided that the above
7copyright notice and this permission notice appear in all copies.
8
9THE SOC IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
10WITH REGARD TO THIS SOC INCLUDING ALL IMPLIED WARRANTIES OF
11MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
12ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
13WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
14ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
15OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOC.
16```
17
18# Table of contents
19- [Overview](#overview)
20- [MBIST Controller Block Diagram](#mbist-controller-block-diagram)
21- [Key Feature](#key-features)
22- [Prerequisites](#prerequisites)
23- [Tests preparation](#tests-preparation)
24 - [Running Simuation](#running-simulation)
25- [Tool sets](#tool-sets)
26- [Documentation](#documentation)
27
28
29# Overview
30
dineshannayyaccf53ae2021-10-17 23:01:19 +053031MBIST 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.
dineshannayyae2b88902021-10-17 19:42:17 +053032
dineshannayyaccf53ae2021-10-17 23:01:19 +053033# MBIST Block Diagram
dineshannayyae2b88902021-10-17 19:42:17 +053034
35<table>
36 <tr>
37 <td align="center"><img src="./docs/source/_static/mbist_controller_block_diagram.png" ></td>
38 </tr>
39
40</table>
41
42
43# Key features
44```
45 * Open sourced under Apache-2.0 License (see LICENSE file) - unrestricted commercial use allowed.
46 * Mbist controller with memory repair supported
47 * Currently only Row Redudency is supported
dineshannayya2a9362c2021-10-31 21:23:11 +053048 * 4 Address location memory repair reported
49 * 2KB SRAM
dineshannayyae2b88902021-10-17 19:42:17 +053050 * Wishbone compatible design
51 * Written in System Verilog
52 * Open-source tool set
53 * simulation - iverilog
54 * synthesis - yosys
55 * backend/sta - openlane tool set
56 * Verification suite provided.
57```
58
59
60# Prerequisites
61 - Docker (ensure docker daemon is running) -- tested with version 19.03.12, but any recent version should suffice.
62## Step-1: Docker in ubuntu 20.04 version
63```bash
64 sudo apt update
65 sudo apt-get install apt-transport-https curl rtificates -agent software-properties-common
66 curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
67 sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu focal stable"
68 sudo apt update
69 apt-cache policy docker-ce
70 sudo apt install docker-ce
71
72 #Add User Name to docker
73 sudo usermod -aG docker <your user name>
74 # Reboot the system to enable the docker setup
75```
76## Step-2: Update the Submodule, To to project area
77```bash
78 git submodule init
79 git submodule update
80```
81## Step-3: clone Openlane scripts under workarea
82```bash
83 git clone https://github.com/The-OpenROAD-Project/OpenLane.git
84```
85
86## Step-4: add Environment setting
87```bash
88 export CARAVEL_ROOT=<Carvel Installed Path>
89 export OPENLANE_ROOT=<OpenLane Installed Path>
90 export OPENLANE_IMAGE_NAME=efabless/openlane:latest
91 export PDK_ROOT=<PDK Installed PATH>
92 export PDK_PATH=<PDK Install Path>/sky130A
93```
94## Step-5: To install the PDK
95```bash
96 source ~/.bashrc
97 cd OpenLane
98 make pdk
99```
100
101# Tests preparation
102
103The simulation package includes the following tests:
104
dineshannayya2a9362c2021-10-31 21:23:11 +0530105* **wb_port** - User Wishbone validation
106* **user_mbist_test1** - Standalone Mbist Controller Specific Test for Non Error/Single/Two/Three/Four/Five Location Error
dineshannayyae2b88902021-10-17 19:42:17 +0530107
108
109# Running Simulation
110
dineshannayya2a9362c2021-10-31 21:23:11 +0530111Examples:
112``` sh
113 make verify-wb_port
114 make verify-user_mbist_test1
115 make verify-wb_port SIM=RTL DUMP=OFF
116 make verify-wb_port SIM=RTL DUMP=ON
117 make verify-user_mbist_test1 SIM=RTL DUMP=OFF
118 make verify-user_mbist_test1 SIM=RTL DUMP=ON
119```
dineshannayyae2b88902021-10-17 19:42:17 +0530120
121# Tool Sets
122
123Mbist Controller flow uses Openlane tool sets.
124
1251. **Synthesis**
126 1. `yosys` - Performs RTL synthesis
127 2. `abc` - Performs technology mapping
128 3. `OpenSTA` - Pefroms static timing analysis on the resulting netlist to generate timing reports
1292. **Floorplan and PDN**
130 1. `init_fp` - Defines the core area for the macro as well as the rows (used for placement) and the tracks (used for routing)
131 2. `ioplacer` - Places the macro input and output ports
132 3. `pdn` - Generates the power distribution network
133 4. `tapcell` - Inserts welltap and decap cells in the floorplan
1343. **Placement**
135 1. `RePLace` - Performs global placement
136 2. `Resizer` - Performs optional optimizations on the design
137 3. `OpenPhySyn` - Performs timing optimizations on the design
138 4. `OpenDP` - Perfroms detailed placement to legalize the globally placed components
1394. **CTS**
140 1. `TritonCTS` - Synthesizes the clock distribution network (the clock tree)
1415. **Routing**
142 1. `FastRoute` - Performs global routing to generate a guide file for the detailed router
143 2. `CU-GR` - Another option for performing global routing.
144 3. `TritonRoute` - Performs detailed routing
145 4. `SPEF-Extractor` - Performs SPEF extraction
1466. **GDSII Generation**
147 1. `Magic` - Streams out the final GDSII layout file from the routed def
148 2. `Klayout` - Streams out the final GDSII layout file from the routed def as a back-up
1497. **Checks**
150 1. `Magic` - Performs DRC Checks & Antenna Checks
151 2. `Klayout` - Performs DRC Checks
152 3. `Netgen` - Performs LVS Checks
153 4. `CVC` - Performs Circuit Validity Checks
154
155
156
157
158
159## Contacts
160
161Report an issue: <https://github.com/dineshannayya/mbist_ctrl/issues>
162
163# Documentation
164
165
166
167
168