Update READMEs

This commit is contained in:
mrg 2021-11-16 11:17:00 -08:00
parent 968a233b82
commit 3902cee003
2 changed files with 75 additions and 33 deletions

View File

@ -26,21 +26,25 @@ things that need to be fixed.
# Basic Setup
## Docker
We have a [docker setup](./docker) to run OpenRAM.
## 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) or [Xyce] 7.2 (or later)
+ Python 3.5 or higher
+ [Ngspice] 34 (or later) or HSpice I-2013.12-1 (or later) or CustomSim 2017 (or later) or [Xyce] 7.4 (or later)
+ Python 3.6 or higher
+ Various Python packages (pip install -r requirements.txt)
+ [Git]
If you want to perform DRC and LVS, you will need either:
+ Calibre (for [FreePDK45])
+ [Magic] 8.3.130 or newer
+ [Netgen] 1.5.164 or newer
+ [Magic] 8.3.197 or newer
+ [Netgen] 1.5.195 or newer
You must set two environment variables:
+ OPENRAM\_HOME should point to the compiler source directory.
You must set two environment variables:
+ OPENRAM\_HOME should point to the compiler source directory.
+ OPENERAM\_TECH should point to one or more root technology directories (colon separated).
## Environment
@ -58,24 +62,15 @@ You may also wish to add OPENRAM\_HOME to your PYTHONPATH:
export PYTHONPATH="$PYTHONPATH:$OPENRAM_HOME"
```
We include the tech files necessary for [SCMOS] SCN4M_SUBM. The
[SCMOS] spice models, however, are generic and should be replaced with
foundry models. If you are using [FreePDK45], you should also have
that set up and have the environment variable point to the PDK. For
example add this to your .bashrc:
```
export FREEPDK45="/bsoe/software/design-kits/FreePDK45"
```
You may get the entire [FreePDK45 PDK here][FreePDK45].
If you are using [SCMOS], you should install [Magic] and [Netgen].
We have included the most recent SCN4M_SUBM design rules from [Qflow].
We include the tech files necessary for [SCMOS] SCN4M_SUBM,
[FreePDK45], and [Sky130]. The [SCMOS] spice models, however, are
generic and should be replaced with foundry models. You may get the
entire [FreePDK45 PDK here][FreePDK45].
# Basic Usage
Once you have defined the environment, you can run OpenRAM from the command line
using a single configuration file written in Python.
Once you have defined the environment, you can run OpenRAM from the command line
using a single configuration file written in Python.
For example, create a file called *myconfig.py* specifying the following
parameters for your memory:
@ -119,7 +114,7 @@ $OPENRAM\_HOME/options.py
# Unit Tests
Regression testing performs a number of tests for all modules in OpenRAM.
From the unit test directory ($OPENRAM\_HOME/tests),
From the unit test directory ($OPENRAM\_HOME/tests),
use the following command to run all regression tests:
```
@ -127,16 +122,16 @@ use the following command to run all regression tests:
```
To run a specific test:
```
python3 {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:
```
python3 tests/00_code_format_check_test.py -v -t freepdk45
```
To specify a particular technology use "-t <techname>" such as
"-t freepdk45". The default for a unit test is scn4m_subm.
"-t freepdk45". The default for a unit test is scn4m_subm.
The default for openram.py is specified in the configuration file.
@ -144,7 +139,7 @@ The default for openram.py is specified in the configuration file.
If you want to support a new 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
+ a technology directory for each technology with the base cells
We provide two technology examples for [SCMOS] and [FreePDK45]. Each
specific technology (e.g., [FreePDK45]) should be a subdirectory
@ -154,10 +149,10 @@ specific technology (e.g., [FreePDK45]) should be a subdirectory
* sense_amp.gds
* write_driver.gds
* cell_1rw.gds
* replica\_cell\_1rw.gds
* dummy\_cell\_1rw.gds
* replica\_cell\_1rw.gds
* dummy\_cell\_1rw.gds
* sp_lib folder with all the .sp (premade) library netlists for the above cells.
* layers.map
* layers.map
* A valid tech Python module (tech directory with \_\_init\_\_.py and tech.py) with:
* References in tech.py to spice models
* DRC/LVS rules needed for dynamic cells and routing
@ -169,7 +164,7 @@ specific technology (e.g., [FreePDK45]) should be a subdirectory
+ Report bugs by submitting [Github issues].
+ Develop new features (see [how to contribute](./CONTRIBUTING.md))
+ Submit code/fixes using a [Github pull request]
+ Submit code/fixes using a [Github pull request]
+ Follow our [project][Github project].
+ Read and cite our [ICCAD paper][OpenRAMpaper]
@ -181,7 +176,7 @@ specific technology (e.g., [FreePDK45]) should be a subdirectory
+ [OpenRAM Users Group][user-group] ([subscribe here][user-group-subscribe])
+ [OpenRAM Developers Group][dev-group] ([subscribe here][dev-group-subscribe])
# License
# License
OpenRAM is licensed under the [BSD 3-clause License](./LICENSE).
@ -203,7 +198,7 @@ If I forgot to add you, please let me know!
[Github issues]: https://github.com/VLSIDA/OpenRAM/issues
[Github pull request]: https://github.com/VLSIDA/OpenRAM/pulls
[Github project]: https://github.com/VLSIDA/OpenRAM
[Github project]: https://github.com/VLSIDA/OpenRAM
[documentation]: https://docs.google.com/presentation/d/10InGB33N51I6oBHnqpU7_w9DXlx-qe9zdrlco2Yc5co/edit?usp=sharing
[dev-group]: mailto:openram-dev-group@ucsc.edu
@ -218,8 +213,8 @@ If I forgot to add you, please let me know!
[Xyce]: http://xyce.sandia.gov/
[Git]: https://git-scm.com/
[OSUPDK]: https://vlsiarch.ecen.okstate.edu/flow/
[FreePDK45]: https://www.eda.ncsu.edu/wiki/FreePDK45:Contents
[SCMOS]: https://www.mosis.com/files/scmos/scmos.pdf
[Sky130]: https://github.com/google/skywater-pdk-libs-sky130_fd_bd_sram.git
[Slack]: https://join.slack.com/t/openram/shared_invite/enQtNDgxMjc3NzU5NTI1LWZiYWMwNjNkZThmYTdkODc3NDE1NDhjNzUxNDhmMDQ4ZTM3NDgwNWFlNjM5NWFiZDkyMzBlNzc1NTg3ZjllNTY

47
docker/README.md Normal file
View File

@ -0,0 +1,47 @@
# Docker images for OpenRAM #
## Installing Docker ##
There are a number of ways to install Docker. Pick your favorite.
* On Mac from docker.com with .app:
https://docs.docker.com/docker-for-mac/install/
* On Windows from docker.com:
https://docs.docker.com/docker-for-windows/install/
* On Ubuntu:
https://docs.docker.com/install/linux/docker-ce/ubuntu/
NOTE: If you plan to use a VPN, do *NOT* use the Docker Toolbox for
Mac or the docker from [Macports](https://www.macports.org/
"Macports") as these require a network socket that breaks when you
install some VPN software. To understand the difference, check out [this
page](https://docs.docker.com/docker-for-mac/docker-toolbox/).
## Running Docker ##
### Terminal only ###
* To run as a generic user:
```
make mount
```
## Updating the image ##
If there are updates to the image, you can pull a new one from the hub with:
```
make pull
```
This is not automatically done, so if you have a problem, make sure you are up-to-date.
## Building your own image ##
You can run the build script to build a local image:
```
make build
```
If you want to change things, modify the openram-ubuntu/Dockerfile and let me know what should be fixed.