- 追加された行はこのように表示されます。
- 削除された行は
このように表示されます。
!GateMate(2)
過去に[GateMate|https://www.wasamon.net/miyo/index.cgi?page=Diary%2F2023%2D5%2D14]で遊んでいたのを,約1年ぶりにおさらい.
今度はツール一式をビルドしてみた.環境は Ubuntu 22.04.
[GateMate FPGA|https://colognechip.com/programmable-logic/gatemate/]公式ページから[GateMate Toolchain Installation User Guide (January 2024)|https://www.colognechip.com/docs/ug1002-toolchain-install-latest.pdf]をダウンロードして真似する.
今回は,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が点滅する.