NetBSDでFPAG開発を始めてみる(VHDL) (2/2)

この記事は、NetBSD Advent Calendar 2025の23日目の記事です。

はじめに

22日目の記事では、GHDLを導入し、VerilogのプログラムをVHDLに移植して、そのウェーブフォームを見て、どうやら正しく移植できていそうということが確認できました。 今回は、YosysでVHDLで書かれたロジックを合成し、FPAGに反映してみます。

ghdl-yosys-pluginを導入する

ghdl-yosys-pluginをpkgsrc/devel/ghdl-yosys-pluginとしてインポートしました。 これを以下のようにインストールしておきます。 21日目を参照して、kgsrc/devel/nextpnr-himbaechelとpkgsrc/devel/openFPGALoaderをインストールしておいてください。 pkgsrc/deve/yosysは、以下のようpkgsrc/devel/ghdl-yosys-pluginをインストールすると、依存パッケージとしてインストールされます。 もちろん、先にインストールされていても全く問題ありません。

# cd /usr/pkgsrc/devel/ghdl-yosys-plugin
# make install

合成と配置配線、ロードを実行する

元々のverilog用のMakefileを改造して、以下のようなVHDL用のMakefileを用意しておきます。

$ cat Makefile
BOARD=tangnano9k
FAMILY=GW1N-9C
DEVICE=GW1NR-LV9QN88PC6/I5

all: counter.fs

# Analysis
analysis: counter.vhdl
        ghdl -a -fsynopsys counter.vhdl

# Synthesis
counter.json: analysis
        yosys -m ghdl -p "ghdl -fsynopsys counter; synth_gowin -top counter -json counter.json"

# Place and Route
counter_pnr.json: counter.json
        nextpnr-himbaechel --json counter.json --write counter_pnr.json --freq 27 --device ${DEVICE} --vopt family=${FAMILY} --vopt cst=${BOARD}.cst

# Generate Bitstream
counter.fs: counter_pnr.json
        gowin_pack-3.14 -d ${FAMILY} -o counter.fs counter_pnr.json

# Program Board
load: counter.fs
        openFPGALoader -b ${BOARD} counter.fs -f

.PHONY: load analysis
.INTERMEDIATE: counter_pnr.json counter.json

また、なんとなくVerilogで小文字だった入出力のポート名称を大文字にしてしまったので、Tang Nano 9Kの端子への接続を指定するtangnano9k.cstファイルも以下のように作成しておきます。

$ cat tangnano9k.cst
IO_LOC "CLK" 52;
IO_PORT "CLK" PULL_MODE=UP;
IO_LOC "LED[0]" 10;
IO_LOC "LED[1]" 11;
IO_LOC "LED[2]" 13;
IO_LOC "LED[3]" 14;
IO_LOC "LED[4]" 15;
IO_LOC "LED[5]" 16;

ここまで来たら、実際にTang Nano 9KをNetBSDマシンに接続して、以下のように実行します。

$ make load

書き込みが終わると、Tang Nano 9Kの橙色のLCDの点滅が開始されます。 どうやらVerilogの場合と同様に2進数でカウントアップしてくれているようです。

これで、VerilogだけでなくVHDLでも、Tang Nano 9Kを利用できそうです。

でも私の本当の目的はPyRTLを使ってみることなのです。 これについても機会を見付けて試してみて、書いておきたいと思います。

0 件のコメント:

コメントを投稿

注: コメントを投稿できるのは、このブログのメンバーだけです。

NetBSDでFPAG開発を始めてみる(VHDL) (2/2)

この記事は、 NetBSD Advent Calendar 2025 の23日目の記事です。 はじめに 22日目の記事 では、GHDLを導入し、VerilogのプログラムをVHDLに移植して、そのウェーブフォームを見て、どうやら正しく移植できていそうということ...