# OpenRAM 環境の構築 SRAM のモジュールを生成する OpenRAM の環境構築とサンプル設定からのモジュール生成を行います. ```{note} OpenRAM では Miniconda が利用されますが,本ドキュメントでは,Anaconda レポジトリライセンスを避けるため,conda-forge レポジトリを用いる Miniforge を利用します. ``` ```{note} あらかじめ 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 ```