トップ 差分 一覧 Farm ソース 検索 ヘルプ PDF RSS ログイン

Diary/2024-7-8

GateMate(2)

過去にGateMateで遊んでいたのを,約1年ぶりにおさらい.
今度はツール一式をビルドしてみた.環境は Ubuntu 22.04.
GateMate FPGA公式ページからGateMate Toolchain Installation User Guide (January 2024)をダウンロードして真似する.
今回は,openFPGALoaderの実行時にsudoが必要だったのが,前回との違い(というか前回は本当に不要だったのか?)

ビルド済みツール一式のダウンロード

サンプル一式とプロプライエタリな配置配線ツールが欲しいので,
"Programmable Logic"の"myGateMate Login"からログインして,
"myGateMate"の"Software Download"でダウンロードページにアクセス.
Toolchain Packages for Linux (27.05.2024) をダウンロード.
今回はツール一式を,$HOME/tools/GateMate/ 以下に置くことにする.

$ mkdir -p $HOME/tools/GateMate/
$ tar xvf cc-toolchain-linux.tar.gz -C $HOME/tools/GateMate/
$ export PATH=$HOME/tools/GateMate/cc-toolchain-linux/bin/p_r:$PATH

Yosys
$ sudo apt install build-essential clang bison flex libreadline-dev \
                   gawk tcl-dev libffi-dev git graphviz xdot pkg-config python3 \
                   libboost-system-dev libboost-python-dev libboost-filesystem-dev \
                   zlib1g-dev
$ git clone https://github.com/YosysHQ/yosys.git
$ cd yosys
$ git submodule update --init --recursive
$ make config-clang
$ vi Makefile # MakefileのPREFIXを $(HOME)/tools/GateMate に変更.これは好み.
$ make -j$(nproc)
$ make install
$ cd ..
$ export PATH=$HOME/tools/GateMate/bin:$PATH

GHDL
$ sudo apt install gnat zlib1g-dev
$ git clone https://github.com/ghdl/ghdl.git
$ cd ghdl
$ ./configure --prefix=$HOME/tools/GateMate
$ make -j$(nproc)
$ make install
$ cd ..

YosysのGHDLプラグイン
$ git clone https://github.com/ghdl/ghdl-yosys-plugin.git
$ cd ghdl-yosys-plugin
$ make -j$(nproc)
$ make install
$ cd ..

openFPGALoader
$ sudo apt install libftdi1-2 libftdi1-dev libhidapi-hidraw0 libhidapi-dev libudev-dev zlib1g-dev cmake pkg-config make g++
$ git clone https://github.com/trabucayre/openFPGALoader.git
$ cd openFPGALoader
$ mkdir build
$ cd build
$ cmake -DCMAKE_INSTALL_PREFIX=$HOME/tools/GateMate ..
$ make -j$(nproc)
$ make install
$ cd ../..

インストールされたもの
$ ls $HOME/tools/GateMate/bin
ghdl  ghwdump  openFPGALoader  yosys  yosys-abc  yosys-config  yosys-filterlib  yosys-smtbmc  yosys-witness

クイックスタート

準備

$ cp -r $HOME/tools/GateMate/cc-toolchain-linux/workspace .
$ cd workspace/blink

合成

$ yosys -qql log/synth.log -p 'read -sv src/blink.v; synth_gatemate -top blink -nomx8 -vlog net/blink_synth.v'

net/blink_synth.vができた.
シミュレーション

$ iverilog -Winfloop -g2012 -gspecify -Ttyp -o sim/synth_sim.vvp net/blink_synth.v sim/blink_tb.v $HOME/tools/GateMate/share/yosys/gatemate/cells_sim.v
$ vvp -N sim/synth_sim.vvp -fst

波形表示

$ gtkwave sim/blink_tb.vcd

配置配線.

$ p_r -i net/blink_synth.v -o blink -ccf src/blink.ccf -cCP > log/impl.log

p_rでは,

$ p_r -i net/<TOP>_synth.v -o <TOP> -ccf src/<TOP>.ccf > log/impl.logls

に対して,

  • Log output in log/impl.log
  • Configuration bitsream: <TOP>_00.cfg.bit
  • Verilog netlist for post-implementation simulation: <TOP>_00.v
  • SDF delay file for post-implementation simulation: <TOP>_00.sdf
  • Pin file: <TOP>_00.pin
  • Place file: <TOP>_00.place

が出力される.
最後に書き込み.

$ sudo $HOME/tools/GateMate/bin/openFPGALoader -b gatemate_evb_jtag blink_00.cfg

ボード上のLEDが点滅する.