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が点滅する.