LoginSignup
5
4

More than 3 years have passed since last update.

GHDLとVunitでVHDLのテスト環境を構築する[Docker版]

Last updated at Posted at 2019-07-26

はじめに

GHDLとVunitでVHDLのテスト環境を構築する」のDocker版です
波形確認用にGTKWaveを追加しています

開発環境

  • Windows10 Pro 64bit
  • Docker for Windows Community Edition Version 2.0.0.3
  • VcXsrv X Server Version "1.20.1.4"
  • ghdl/ext:ls-vunit-gtkwave
    • Python 3.7.4
    • GHDL : 0.37-dev
    • vunit-hdl : 4.0.9rc0
    • GTKWave Analyzer v3.3.102
    • X11 libraries

環境構築

Windows上でテストおよび波形確認を行うためVcXsrvのインストールとDockerイメージの作成を行います

VcXsrv

VcXsrvのインストール

VcXsrvをインストールします
今回はchocolateyからインストールしました

choco install vcxsrv -y

VcXsrvの起動

VcXsrvを起動します
設定はすべてデフォルトでOKです

Docker

Docker for Windowsのインストールについては他の記事を参考にしてください

ディレクトリ構成

下記のようなディレクトリ構成を想定しています

ディレクトリ構成
C:.
├─docker-compose.yml
├─ghdl
│  └─Dockerfile
└─project
   ├─run.py # テスト実行ファイル
   ├─src
   │  └─*.vhd
   ├─test
   │  └─*.vhd
   └─vunit_out # テスト結果出力フォルダ

Dockerfileの作成

自動テストおよび波形確認を行うためghdl/ext:latestを使用します
VcXsrvでgtkwaveの波形を確認するためENV DISPLAY host.docker.internal:0.0を設定します

Dockerfile
FROM ghdl/ext:latest
# VcXsrvでWindows上にGUIを表示するための設定
ENV DISPLAY host.docker.internal:0.0

docker-compose.ymlの作成

volumesを使用するため、事前にDocker for WindowsのShared Drivesを設定しておくようにしてください

docker-compose.yml
version: '3'
services:
  ghdl:
    restart: always
    build: ./ghdl
    working_dir: "/project"
    volumes:
      - ./project:/project
    tty: true

テスト実行ファイルrun.pyの作成

Vunitの例にあるVHDL User Guideを元にテスト実行ファイルを作成します

run.py
from os.path import join, dirname
from vunit import VUnit

root = dirname(__file__)
project = VUnit.from_argv()

lib = project.add_library("lib")
lib.add_source_files(join(root, "src", "*.vhd"), "lib")
lib.add_source_files(join(root, "test", "*.vhd"), "lib")

project.main()

dockerイメージの作成

docker-composeでghdlイメージを作成します

docker-compose build ghdl

テストの実行

GUIなしでテスト実行

srcおよびtestフォルダにファイルを入れて
docker-composeからrun.pyを実行するとテストが実行され結果が表示されます

docker-compose run --rm ghdl python run.py
実行結果
(省略)

==== Summary ===============================================
pass lib.tb_uartreceiver_0.o_EN          (0.6 seconds)
pass lib.tb_uartreceiver_0.normal        (0.5 seconds)
pass lib.tb_uartreceiver_0.parity error  (0.8 seconds)
pass lib.tb_uartreceiver_0.framing error (0.7 seconds)
============================================================
pass 4 of 4
============================================================
Total time was 2.7 seconds
Elapsed time was 2.7 seconds
============================================================
All passed!

GUIありでテスト実行

-gオプションをつけるとVcXsrvでGTKWaveの波形もあわせて確認することができます

docker-compose run --rm ghdl python run.py -g

GTKWave_sample.jpg

参考

GHDL
ghdl/docker
ghdl/docker usecase.md
Vunit
VcXsrv
GTKWave
Docker for windowsのコンテナ内でGUIアプリを実行
GHDLとVunitでVHDLのテスト環境を構築する

更新履歴

2019/09/23
イメージ名をghdl/ext:ls-vunit-gtkwaveからghdl/ext:latestに変更

5
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
4