mirror of https://github.com/VLSIDA/OpenRAM.git
133 lines
3.5 KiB
Markdown
133 lines
3.5 KiB
Markdown
### [Go Back](./index.md#table-of-contents)
|
|
|
|
# Basic Setup
|
|
This page shows the basic setup for using OpenRAM to generate an SRAM.
|
|
|
|
|
|
|
|
## Table of Contents
|
|
1. [Dependencies](#dependencies)
|
|
1. [Nix](#nix)
|
|
1. [Docker](#docker-deprecated-use-nix-instead)
|
|
1. [Environment](#environment)
|
|
1. [Sky130 Setup](#sky130-setup)
|
|
|
|
|
|
|
|
## Dependencies
|
|
In general, the OpenRAM compiler has very few dependencies:
|
|
+ Git
|
|
+ Make
|
|
+ Python 3.5 or higher
|
|
+ Various Python packages (pip install -r requirements.txt)
|
|
+ Nix
|
|
|
|
|
|
|
|
## Nix
|
|
OpenRAM uses Nix to provide the external toolchain (layout tools, simulators,
|
|
etc.) needed for SRAM generation.
|
|
|
|
Enter the Nix development environment with:
|
|
```
|
|
nix develop
|
|
```
|
|
|
|
Within the devShell, required executables are available on `PATH`
|
|
|
|
OpenRAM uses the `use_nix` option (enabled by default) to initialize Nix-based
|
|
tool dependencies via `nix develop`.
|
|
|
|
## Docker (deprecated, use Nix instead)
|
|
We have a [docker setup](../../docker) to run OpenRAM. To use this, you should
|
|
run:
|
|
```
|
|
cd OpenRAM/docker
|
|
make build
|
|
```
|
|
This must be run once and will take a while to build all the tools. If you have
|
|
the OpenRAM library installed, you can also run the docker setup from the
|
|
package installation directory.
|
|
|
|
|
|
|
|
## Environment
|
|
|
|
If you haven't installed the OpenRAM library or you want to use a different
|
|
OpenRAM installation, you can set two environment variables:
|
|
+ `OPENRAM_HOME` should point to the compiler source directory.
|
|
+ `OPENRAM_TECH` should point to one or more root technology directories (colon
|
|
separated).
|
|
|
|
If you have the library installed and `OPENRAM_HOME` set, the library will use
|
|
the installation on the `OPENRAM_HOME` path.
|
|
|
|
> See [Python library](./python_library.md#go-back) for details.
|
|
|
|
If you don't have the library, you should also add `OPENRAM_HOME` to your
|
|
`PYTHONPATH`. This is not needed if you have the library.
|
|
|
|
You can add these environment variables to your `.bashrc`:
|
|
```
|
|
export OPENRAM_HOME="$HOME/OpenRAM/compiler"
|
|
export OPENRAM_TECH="$HOME/OpenRAM/technology"
|
|
export PYTHONPATH=$OPENRAM_HOME
|
|
```
|
|
|
|
Note that if you want symbols to resolve in your editor, you may also want to
|
|
add the specific technology directory that you use and any custom technology
|
|
modules as well. For example:
|
|
```
|
|
export PYTHONPATH="$OPENRAM_HOME:$OPENRAM_TECH/sky130:$OPENRAM_TECH/sky130/custom"
|
|
```
|
|
|
|
We include the tech files necessary for [SCMOS] SCN4M\_SUBM, [FreePDK45]. The
|
|
[SCMOS] spice models, however, are generic and should be replaced with foundry
|
|
models. You may get the entire [FreePDK45 PDK here][FreePDK45].
|
|
|
|
|
|
|
|
## Sky130 Setup
|
|
|
|
To install [Sky130], you can run:
|
|
|
|
```
|
|
cd $HOME/OpenRAM
|
|
make sky130-pdk
|
|
```
|
|
|
|
This will use ciel to get the PDK.
|
|
|
|
> **Note**: If you don't have Magic installed, enter the OpenRAM Nix devShell
|
|
> first (it provides Magic and other tools via `PATH`):
|
|
>
|
|
> ```
|
|
> nix develop
|
|
> ```
|
|
|
|
Then you must also install the [Sky130] SRAM build space with the appropriate
|
|
cell views into the OpenRAM technology directory by running:
|
|
|
|
```
|
|
cd $HOME/OpenRAM
|
|
make sky130-install
|
|
```
|
|
|
|
You can also run these from the package installation directory if you have the
|
|
OpenRAM library.
|
|
|
|
## GF180 Setup
|
|
|
|
OpenRAM currently **does not** support gf180mcu for SRAM generation. However ROM generation for gf180mcu is supported as an experimental feature.
|
|
|
|
To install gf180mcuD, you can run:
|
|
|
|
```
|
|
cd $HOME/OpenRAM
|
|
make gf180mcu-pdk
|
|
```
|
|
|
|
[SCMOS]: https://www.mosis.com/files/scmos/scmos.pdf
|
|
[FreePDK45]: https://www.eda.ncsu.edu/wiki/FreePDK45:Contents
|
|
[Sky130]: https://github.com/google/skywater-pdk-libs-sky130_fd_bd_sram.git
|