mirror of https://github.com/VLSIDA/OpenRAM.git
Update image paths. Add download badge.
This commit is contained in:
parent
f3a1acb617
commit
890d93d776
42
README.md
42
README.md
|
|
@ -1,6 +1,7 @@
|
||||||
# OpenRAM
|
# OpenRAM
|
||||||
[](https://scone.soe.ucsc.edu:8888/mrg/PrivateRAM/commits/dev)
|
[](https://scone.soe.ucsc.edu:8888/mrg/PrivateRAM/commits/dev)
|
||||||
[](./LICENSE)
|
[](https://github.com/VLSIDA/PrivateRAM/archive/dev.zip)
|
||||||
|
[](./LICENSE)
|
||||||
|
|
||||||
An open-source static random access memory (SRAM) compiler.
|
An open-source static random access memory (SRAM) compiler.
|
||||||
|
|
||||||
|
|
@ -10,16 +11,14 @@ An open-source static random access memory (SRAM) compiler.
|
||||||
# Basic Setup
|
# Basic Setup
|
||||||
|
|
||||||
The OpenRAM compiler has very few dependencies:
|
The OpenRAM compiler has very few dependencies:
|
||||||
+ ngspice-26 (or later) or HSpice I-2013.12-1 (or later) or CustomSim 2017 (or later)
|
+ [Ngspice] 26 (or later) or HSpice I-2013.12-1 (or later) or CustomSim 2017 (or later)
|
||||||
+ Python 3.5 and higher
|
+ Python 3.5 and higher
|
||||||
+ Python numpy (pip3 install numpy to install)
|
+ Python numpy (pip3 install numpy to install)
|
||||||
+ flask_table (pip3 install flask to install)
|
+ flask_table (pip3 install flask to install)
|
||||||
+ a setup script for each technology you want to use
|
|
||||||
+ a technology directory for each technology with the base cells (comes with [SCMOS][SCMOS] and [FreePDK45][FreePDK45])
|
|
||||||
|
|
||||||
If you want to perform DRC and LVS, you will need either:
|
If you want to perform DRC and LVS, you will need either:
|
||||||
+ Calibre (for [FreePDK45][FreePDK45] or [SCMOS][SCMOS])
|
+ Calibre (for [FreePDK45] or [SCMOS])
|
||||||
+ Magic + Netgen (for [SCMOS][SCMOS] only)
|
+ Magic + Netgen (for [SCMOS] only)
|
||||||
|
|
||||||
You must set two environment variables: OPENRAM\_HOME should point to
|
You must set two environment variables: OPENRAM\_HOME should point to
|
||||||
the compiler source directory. OPENERAM\_TECH should point to a root
|
the compiler source directory. OPENERAM\_TECH should point to a root
|
||||||
|
|
@ -35,10 +34,10 @@ For example, in csh/tcsh, add to your .cshrc/.tcshrc:
|
||||||
setenv OPENRAM_TECH "$HOME/openram/technology"
|
setenv OPENRAM_TECH "$HOME/openram/technology"
|
||||||
```
|
```
|
||||||
|
|
||||||
We include the tech files necessary for FreePDK and [SCMOS][SCMOS]. The [SCMOS][SCMOS]
|
We include the tech files necessary for [FreePDK45] and [SCMOS]. The [SCMOS]
|
||||||
spice models, however, are generic and should be replaced with foundry
|
spice models, however, are generic and should be replaced with foundry
|
||||||
models.
|
models.
|
||||||
If you are using FreePDK, you should also have that set up and have the
|
If you are using [FreePDK45], you should also have that set up and have the
|
||||||
environment variable point to the PDK.
|
environment variable point to the PDK.
|
||||||
For example, in bash, add to your .bashrc:
|
For example, in bash, add to your .bashrc:
|
||||||
```
|
```
|
||||||
|
|
@ -48,10 +47,10 @@ For example, in csh/tcsh, add to your .tcshrc:
|
||||||
```
|
```
|
||||||
setenv FREEPDK45 "/bsoe/software/design-kits/FreePDK45"
|
setenv FREEPDK45 "/bsoe/software/design-kits/FreePDK45"
|
||||||
```
|
```
|
||||||
We do not distribute the PDK, but you may download [FreePDK45][FreePDK45]
|
We do not distribute the PDK, but you may download [FreePDK45]
|
||||||
|
|
||||||
If you are using [SCMOS][SCMOS], you should install [Magic][Magic] and [Netgen][Netgen].
|
If you are using [SCMOS], you should install [Magic] and [Netgen].
|
||||||
We have included the SCN4M design rules from [Qflow][Qflow].
|
We have included the SCN4M design rules from [Qflow].
|
||||||
|
|
||||||
# Directory Structure
|
# Directory Structure
|
||||||
|
|
||||||
|
|
@ -66,8 +65,8 @@ We have included the SCN4M design rules from [Qflow][Qflow].
|
||||||
* compiler/router - router for signals and power supplies
|
* compiler/router - router for signals and power supplies
|
||||||
* compiler/tests - unit tests
|
* compiler/tests - unit tests
|
||||||
* technology - openram technology directory (pointed to by OPENRAM_TECH)
|
* technology - openram technology directory (pointed to by OPENRAM_TECH)
|
||||||
* technology/freepdk45 - example configuration library for freepdk45 technology node
|
* technology/freepdk45 - example configuration library for [FreePDK45 technology node
|
||||||
* technology/scn4m_subm - example configuration library [SCMOS][SCMOS] technology node
|
* technology/scn4m_subm - example configuration library [SCMOS] technology node
|
||||||
* technology/scn3me_subm - unsupported configuration (not enough metal layers)
|
* technology/scn3me_subm - unsupported configuration (not enough metal layers)
|
||||||
* technology/setup_scripts - setup scripts to customize your PDKs and OpenRAM technologies
|
* technology/setup_scripts - setup scripts to customize your PDKs and OpenRAM technologies
|
||||||
* docs - LaTeX manual (outdated)
|
* docs - LaTeX manual (outdated)
|
||||||
|
|
@ -80,17 +79,17 @@ Regression testing performs a number of tests for all modules in OpenRAM.
|
||||||
|
|
||||||
Use the command:
|
Use the command:
|
||||||
```
|
```
|
||||||
python regress.py
|
python3 regress.py
|
||||||
```
|
```
|
||||||
To run a specific test:
|
To run a specific test:
|
||||||
```
|
```
|
||||||
python {unit test}.py
|
python3 {unit test}.py
|
||||||
```
|
```
|
||||||
The unit tests take the same arguments as openram.py itself.
|
The unit tests take the same arguments as openram.py itself.
|
||||||
|
|
||||||
To increase the verbosity of the test, add one (or more) -v options:
|
To increase the verbosity of the test, add one (or more) -v options:
|
||||||
```
|
```
|
||||||
python tests/00_code_format_check_test.py -v -t freepdk45
|
python3 tests/00_code_format_check_test.py -v -t freepdk45
|
||||||
```
|
```
|
||||||
To specify a particular technology use "-t <techname>" such as
|
To specify a particular technology use "-t <techname>" such as
|
||||||
"-t freepdk45" or "-t scn4m\_subm". The default for a unit test is scn4m_subm.
|
"-t freepdk45" or "-t scn4m\_subm". The default for a unit test is scn4m_subm.
|
||||||
|
|
@ -99,15 +98,19 @@ The default for openram.py is specified in the configuration file.
|
||||||
|
|
||||||
# Creating Custom Technologies
|
# Creating Custom Technologies
|
||||||
|
|
||||||
|
If you want to support a enw technology, you will need to create:
|
||||||
|
+ a setup script for each technology you want to use
|
||||||
|
+ a technology directory for each technology with the base cells
|
||||||
|
|
||||||
All setup scripts should be in the setup\_scripts directory under the
|
All setup scripts should be in the setup\_scripts directory under the
|
||||||
$OPENRAM\_TECH directory. Please look at the following file for an
|
$OPENRAM\_TECH directory. We provide two technology examples for [SCMOS] and [FreePDK45].
|
||||||
example of what is needed for OpenRAM:
|
Please look at the following file for an example of what is needed for OpenRAM:
|
||||||
```
|
```
|
||||||
$OPENRAM_TECH/setup_scripts/setup_openram_freepdk45.py
|
$OPENRAM_TECH/setup_scripts/setup_openram_freepdk45.py
|
||||||
```
|
```
|
||||||
Each setup script should be named as: setup\_openram\_{tech name}.py.
|
Each setup script should be named as: setup\_openram\_{tech name}.py.
|
||||||
|
|
||||||
Each specific technology (e.g., freepdk45) should be a subdirectory
|
Each specific technology (e.g., [FreePDK45]) should be a subdirectory
|
||||||
(e.g., $OPENRAM_TECH/freepdk45) and include certain folders and files:
|
(e.g., $OPENRAM_TECH/freepdk45) and include certain folders and files:
|
||||||
1. gds_lib folder with all the .gds (premade) library cells. At a
|
1. gds_lib folder with all the .gds (premade) library cells. At a
|
||||||
minimum this includes:
|
minimum this includes:
|
||||||
|
|
@ -150,3 +153,4 @@ OpenRAM is licensed under the [BSD 3-clause License](./LICENSE).
|
||||||
[Qflow]: http://opencircuitdesign.com/qflow/history.html
|
[Qflow]: http://opencircuitdesign.com/qflow/history.html
|
||||||
[FreePDK45]: https://www.eda.ncsu.edu/wiki/FreePDK45:Contents
|
[FreePDK45]: https://www.eda.ncsu.edu/wiki/FreePDK45:Contents
|
||||||
[SCMOS]: https://www.mosis.com/files/scmos/scmos.pdf
|
[SCMOS]: https://www.mosis.com/files/scmos/scmos.pdf
|
||||||
|
[Ngspice]: http://ngspice.sourceforge.net/
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,2 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="112" height="20"><linearGradient id="b" x2="0" y2="100%"><stop offset="0" stop-color="#bbb" stop-opacity=".1"/><stop offset="1" stop-opacity=".1"/></linearGradient><clipPath id="a"><rect width="112" height="20" rx="3" fill="#fff"/></clipPath><g clip-path="url(#a)"><path fill="#555" d="M0 0h71v20H0z"/><path fill="#007ec6" d="M71 0h41v20H71z"/><path fill="url(#b)" d="M0 0h112v20H0z"/></g><g fill="#fff" text-anchor="middle" font-family="DejaVu Sans,Verdana,Geneva,sans-serif" font-size="110"><text x="365" y="150" fill="#010101" fill-opacity=".3" transform="scale(.1)" textLength="610">download </text><text x="365" y="140" transform="scale(.1)" textLength="610">download </text><text x="905" y="150" fill="#010101" fill-opacity=".3" transform="scale(.1)" textLength="310">latest</text><text x="905" y="140" transform="scale(.1)" textLength="310">latest</text></g> </svg>
|
||||||
|
After Width: | Height: | Size: 1004 B |
Loading…
Reference in New Issue