OpenRAM 環境の構築

SRAM のモジュールを生成する OpenRAM の環境構築とサンプル設定からのモジュール生成を行います.

注釈

OpenRAM では Miniconda が利用されますが,本ドキュメントでは,Anaconda レポジトリライセンスを避けるため,conda-forge レポジトリを用いる Miniforge を利用します.

注釈

あらかじめ Caravel template(mpw-9k) が構築された環境を前提としています.

動作環境

動作環境 : Windows11 23H2, Virtualbox 7.1.14, Ubuntu 22.04.5 LTS

使用ソフトウェア : OpenRAM v1.2.48, Miniforge, Caravel template (mpw-9k)

参考資料

https://github.com/VLSIDA/OpenRAM/blob/stable/docs/source/basic_setup.md

https://github.com/VLSIDA/OpenRAM/blob/stable/docker/Dockerfile

https://github.com/VLSIDA/OpenRAM/blob/stable/docs/source/OpenRAM.ipynb

Miniforge のセットアップと仮想環境の作成

Miniforge の github レポジトリから最新の Miniforge3-Windows-x86_64 インストーラを取得し,これを実行します.

curl -L -O "https://github.com/conda-forge/miniforge/releases/latest/download/Miniforge3-$(uname)-$(uname -m).sh"
bash Miniforge3-$(uname)-$(uname -m).sh

インストーラ実行時のオプションは次のように設定します.

license term : すべて yes
location : default
automatically initialize : no

以上のデフォルト設定では,${HOME}/miniforge3 にセットアップが行われ,仮想環境は ${HOME}/miniforge3/env に構成されます.

インストーラ実行後,.bashrc へ次の行を追加します.本設定により,次回のターミナル起動から Miniforge 環境が利用できるようになります.基本構成(base)の呼び出しは conda activate コマンドを事項します.

source "${HOME}/miniforge3/etc/profile.d/conda.sh"

インストーラ直後では,下記のコマンド実行により環境変数の設定を行い,基本構成(base)を呼び出します.

source "${HOME}/miniforge3/etc/profile.d/conda.sh"
conda activate

基本構成(base)の仮想環境が起動されると,プロンプト先頭に(base)が表記されます.

基本構成(base)起動後,conda 本体や基本パッケージのアップデートを行います.

conda update conda
conda update --all

次に,仮想環境(名称は env_openram とします)を作成し,仮想環境に移行します.

conda create -n env_openram python=3.12
conda activate env_openram

OpenRAM のセットアップ

OpenRAM セットアップのディレクトリは $HOME/OpenRAM とし,Miniforge の env_openram 仮想環境が起動されている前提にインストールを行います.

まず,OpenRAM レポジトリの v1.2.48 をクローンし,Miniconda を起動する install_conda.sh を空の内容(シェルスクリプト指定のみ)へ変更します.

cd
git clone -b v1.2.48 https://github.com/VLSIDA/OpenRAM
cd OpenRAM
mv install_conda.sh install_conda.bak
touch install_conda.sh
chmod u+x install_conda.sh
echo '#!/bin/bash' | tee -a install_conda.sh

次に,OpenRAM の必要パッケージを導入します.conda/pip コマンドによるインストールは仮想環境のみに影響します.(klayout はシステム上にインストールします)

sudo apt install klayout
conda install -c litex-hub iverilog
conda install -c litex-hub magic
conda install -c litex-hub netgen
conda install -c litex-hub ngspice
conda install -c litex-hub trilinos
python3 -m pip install -r requirements.txt 
pip install xyce

環境変数の設定と PDK (sky130) の導入

OpenRAM の環境変数設定ファイル setpath.sh を下記の通り修正します.本ドキュメントでは,PDK を OpenRAM 用に別途 $HOME/OpenRAM/pdk へ構成しています.また,sky130 を対象としています.

export CONDA_HOME="$HOME/miniforge3/envs/env_openram"
export OPENRAM_HOME="$HOME/OpenRAM/compiler"
export OPENRAM_TECH="$HOME/OpenRAM/technology"
export PDK_ROOT="$HOME/OpenRAM/pdk"
export PYTHONPATH="$OPENRAM_HOME:$OPENRAM_TECH/sky130:$OPENRAM_TECH/sky130/custom"

環境変数を設定し,PDK をビルドします.

source setpath.sh
make sky130-pdk
make sky130-install
make build_library

OpenRAM のサンプル回路の合成

macros ディレクトリの example_config_scn4m_subm サンプル設定を用いて SRAM マクロのビルドの動作確認を行います.

cd macros
make example_config_scn4m_subm

生成されたマクロの確認を行います.

klayout example_config_scn4m_subm/example_config_scn4m_subm.gds

(備考)ウィンドウシステムが wayland の場合,「Info: Warning: Ignoring XDG_SESSION_TYPE=wayland on Gnome. Use QT_QPA_PLATFORM=wayland to run on Wayland anyway.」と表示され klayout が起動しないことがあります.起動しない場合,設定を一時的に変更したコマンドを実行します.起動時にいくつか警告ダイアログが表示されますが,OK を選択します.

XDG_SESSION_TYPE="xcb" klayout example_config_scn4m_subm/example_config_scn4m_subm.gds