ハードウェアの気になるあれこれ

技術的に興味のあることを調べて書いてくブログ。主にハードウェアがネタ。

DSimに入門してみた(1):チュートリアルの実行

スポンサーリンク

ちょっと前にXのタイムライン上で話題になってたDSimを試したのでメモ。

今回はDSimの公式に上がっているチュートリアルを終えるところまで。

基本的にはチュートリアル通りにやっていけば大丈夫だった。

いずれ、別の記事でMakefileからDSimを呼び出して実行する方法やUVMを使ったテストのための設定についても書こうと思う。

DSim Desktopのインストール

最初はDSimをインストールするところから。ざっと流れをまとめると、次のようになる。

なお、この記事の内容はWindowsのWSL2上のUbuntu22.04 LTSで実行したものを記載している。

  1. VScodeのインストール
    1. DSimの環境一式はVScodeのエクステンションとしてインストールされるため、VScodeのインストールが必須となる。
    2. 本記事ではVScodeはすでにインストール済みであると仮定して進めるのでVScodeのインストールは省略した。
  2. VScodeにDSimのプラグインをインストール
  3. DSimのツール群のインストール
  4. ライセンスの設定

VScode拡張機能を開き、検索に dsim と入れると、次の画像のようなものが現れるので、それをインストールする。

VScodeの拡張機能からDSimを検索してインストール
DSimプラグインのインストール

インストール後はVScodeの左端にDSimのアイコンが追加される。このアイコンを選択すると、DSimのプロジェクト管理画面が開く。

DSimのプロジェクト管理が追加された
DSimのプロジェクト管理

プロジェクト管理画面の左下にある LOCAL TOOL INSTALLATIONSDSimの横にある +ボタン(Download new version)を押すと、DSimのWebサイトを開くポップアップが表示されるので、OKを押してDSimのログイン画面を開く。

DSimのツールインストール

すでにアカウントを持っている場合は、アカウント情報を入力してログイン、持っていない場合は、アカウントを作成する。

ログインが完了するとVScodeが再度開かれ、インストールするマシンのOSを選択できる。今回はUbuntu22.04なので、それを選択。

OSの選択でUbuntu22.04を選ぶツールバージョンは最新のものを選んだ
ツールインストール時のOS・バージョン選択

インストールが完了すると、右下のポップアウトでactivateが選べるので、それを選択する。activateがうまくいかない場合はVScodeを再起動するとうまくいくはず。(一番最初に試したときはactivateが効かなくて再起動が必要だったがやり直した際にはうまくいった)

ポップアップのactivateを押してアクティベートを実行する
DSimのアクティベート

アクティベートに失敗した時のログ

なおここでインストールしたツール一式は $HOME/metrics-ca/dsim/<ツールバージョン>にインストールされる。

ツールのインストール先

ライセンスファイルの取得

DSimのサイトからライセンスファイルを取得する。

左下のユーザープロファイルをクリックすると Licensesがあるのでそれを開く。

DSimのライセンス画面を開く

License管理画面の Generate を押し、適当な名前を入力して再度 Generate ボタンをクリック。

Generateを押してライセンス生成画面を開く
ライセンス生成

適当な名前でライセンスを生成

すると次の画面のようにライセンスが生成される。ライセンスファイルのインストール方法はVScodeを使う方法とファイルをダウンロードして配置した後、環境変数を設定する方法の2つがある。

VScodeを経由する場合はライセンス画面の以下のアイコンをクリックして、あとはポップアップの指示に従えばOK。VScode経由でライセンスファイルを設定した場合、ライセンスファイルは${HOME}/metrics-ca/dsim-license.jsonとなる。

ライセンス生成後の画面

VScode経由の場合ポップアップが出現する

環境変数で設定する場合はDSimのWebサイトからライセンスファイルをダウンロードして、好みの場所に配置した後に環境変数DSIM_LICENSEにライセンスファイルへのパスを設定する。

export DSIM_LICENSE=<ライセンスファイルのパス>

ライセンスのインストールが成功した場合は、次の画面のようにライセンスのところに緑のチェックマークがつく。次の画像のように複数バージョンがインストールされている場合は使いたいバージョンに合わせて右クリック→activateツールバージョンの切り替えが可能。

アクティベート後の状態

なお今の所ライセンスは1ライセンスのみ発行可能で、期間は3ヶ月となっている。同じアカウントで発行済ライセンス無効化→再生成を行うことで、再生成時から3ヶ月に期間がリセットされたので、ライセンス切れになっても都度生成し直すことで使い続けることができそう(今の所)。

チュートリアルデータの準備

今回はチュートリアルで配布されているプロジェクトを使用するので、先にチュートリアル用のデータをダウンロードしておく。

データは以下からダウンロード可能。

https://github.com/metrics-ca/carry_lookahead_adder/archive/refs/heads/main.zip

データをダウンロードして展開した後にDSIM DESKTOPOpen a Project を選択すると、*.dpf という拡張子が ついたファイルが3つ見つかる。ファイル名からも推測できるがこのチュートリアルデータにはVHDLとSystemVerilog、両言語が混載したプロジェクトの3つが含まれている。なおプロジェクトファイルはDSim Desktopの管理画面から開けるほか、ファイルツリーからdpfファイルを右クリック→open projectを押すことで開くことも可能。 ここではSystemVerilog版である carry_lookahead_adder_SV.dpf を選択して進める。

DSimプロジェクトを開く

すでにチュートリアル用に作成されたプロジェクトファイルを開いているため、すでにライブラリのコンパイルや、シミュレーションの設定が行われている状態になっている。

DSim Desktopの設定とライセンスファイルの設定が完了していれば、以下の手順でシミュレーションを実行できる。

1.ライブラリのコンパイル

DSimのプロジェクト管理画面の中段あたりのLIBRARY CONFIGURATIONの右側にあるCompile Projectをクリックすると、ライブラリのビルドが実行される。

&#x60;Compile Project&#x60; をクリックするとライブラリのビルドが走る
DSimのライブラリのコンパイル

ライブラリにファイルを追加したい場合は各ライブラリ名(チュートリアルではdut/workの2種類)の右側にある+ボタンを選ぶとファイルを追加可能。

ライブラリ設定を開く

すでに追加したファイルを変更したい場合(コンパイル順を変更したい、削除したいなど)がある場合は、ライブラリを展開した後変更したいファイルにの上で右クリックをするとメニューが開くので、そこから変更が可能になっていた。

ライブラリを複数作って別々にコンパイルすることも可能なので、大きなプロジェクトの場合は分割しておくと不要なビルドを減らすことが可能。

2.シミュレーションの実行

DSimのSIMULATION CONFIGURATIONにあるSim 1にマウスカーソルを合わせると右側にRunボタンが出現するので、それをクリックすればシミュレーションが実行される。

DSimのシミュレーション実行

シミュレーションが流れログが表示される
Simulationのログ

異なる設定でシミュレーションを流したい場合はSIMULATION CONFIGURATIONの右側にある+ボタンで追加が可能なので、デバッグ用に波形を取るシミュレーションなどの設定を作って切り替えが可能。

シミュレーション設定の追加

新規で始める場合は既存のプロジェクトファイルの代わりにCreate New Project を選び、ライブラリとシミュレーションの設定を適宜作成すればOK。

波形ダンプ

DSimも他のシミュレーターと同様に波形ファイルをダンプできる。チュートリアルSim 1では波形ダンプのオプションが指定されており、シミュレーション実行後に作業ディレクトSystemVerilog/simの直下にwaves.mxdが生成される。 DSimのプラグインに波形ファイルを開く機能も含まれているようで、ファイルツリーからwaves.mxdを選ぶとVScode上で波形ファイルが開ける。(ちなみに*.mxdというのはDSim用の専用フォーマットっぽい。とりあえずGTKWaveでは開けなかった。VScode開けるから特に必要は無いけど)。

DSimの波形ビューアー

波形ビューアーとして最低限欲しい機能は揃っている感じ。グループ化とかもできるし、マウス選択で任意区間の拡大なども可能だった。structのデータがめっちゃ見づらいとか細かい部分で気になる部分はあるけど、そのへんはこれからに期待したいところ。

プロジェクトファイルの中身

プロファイルファイルの中身についても簡単に触れておく。

プロジェクトファイルの構造は以下のような感じでYAMLなので、GUIをポチポチするのが面倒な場合は手書きすることも可能。試した限りでは、その時に開いているプロジェクトファイルをVScode上で開き修正→保存すると、その修正内容が即DSimのプロジェクトに反映された。

---
# Note: The contents of this file are automatically generated.
# Any changes made by hand may be overwritten.
version: '0.2'
work_dir: .
design_root_dir: ..\..
simulations:
  - name: Sim 1
    options: '-top work.carry_lookahead_adder_tb -L dut +acc+b -waves waves.mxd'
source_files:
  - language: verilog
    path: filelist_V.txt
    library_name: dut
    file_list: relative-to-file
  - language: verilog
    path: ..\testbench\carry_lookahead_adder_directed_tb.sv
library_search_paths:
  - $STD_LIBS\ieee93

ここまでざっとDSimのインストールとチュートリアルを実行する流れを追いかけてみた。まだ大きいデザインは試せていないが、そこそこ手軽に使えるなぁという印象で、これが無償で使えるのはとてもありがたいと思う。 この記事では触れていないがインストールしたDSimツール群をMakefileなどから呼び出して実行することも可能なので、別のシミュレータで開発していたプロジェクトをDSimに移行するのも問題なさそう(GUIを使わないケースはまた別記事で)。 SV/VHDL混在のデザインも対応していたり、UVMなども割と使えそうという話も試した方から聞いたりしているので、個人で開発する場合には結構有力な選択肢になるのではと思った。