FC2カウンター FPGAの部屋 2022年09月09日
fc2ブログ

FPGAやCPLDの話題やFPGA用のツールの話題などです。 マニアックです。 日記も書きます。

FPGAの部屋

FPGAの部屋の有用と思われるコンテンツのまとめサイトを作りました。Xilinx ISEの初心者の方には、FPGAリテラシーおよびチュートリアルのページをお勧めいたします。

cocotb を試してみる1

テストベンチが Python で書かれた cocotb を試してみようと思う。
cocotb を知ったのは Adam Talyor さんの記事” MicroZed Chronicles: Getting Started with Cocotb”を読んだからだった。この記事を試してみようと思ったのだが、シミュレータに ModelSim を使っていた。ModelSim は持っていないので、そこで本家?の”cocotb/cocotb”の README のコードを試してみることにした。

cocotb のドキュメントは”docs.cocotb.org”にある。その翻訳の一部を引用する。

cocotbは、Pythonを使用してVHDL および SystemVerilog RTLを検証するためのCOroutineベースのCOsimulation TestBench環境です。


今回のシミュレータは icarus verilog を使用する。
まずは、icarus verilog をインストールするのだが、すでに gtkwave も含めてインストール済みだった。
cocotb_1_220908.png

インストールしていない場合は、”Icarus Verilogの導入とAND回路のシミュレーション”が参考になる。

さて、”cocotb/cocotb”の README を参照して、cocotb を Ubuntu 18.04 にインストールする。
pip install cocotb
cocotb_2_220908.png

インストール成功した。

cocotb/cocotb”の README のコードをコピー & ペーストして、/media/masaaki/Ubuntu_Disk/Cocotb/dff_example ディレクトリの下に dff.sv, test_dff.py, Makefile を作成した。
cocotb_3_220908.png

cocotb_4_220908.png

cocotb_5_220908.png

cocotb_6_220908.png

make をしてみよう。
make SIM=icarus
を実行した。
PASS した。
cocotb_7_220908.png

make 時のログを示す。

(base) masaaki@masaaki-H110M4-M01:/media/masaaki/Ubuntu_Disk/Cocotb/dff_example$ make SIM=icarus
rm -f results.xml
make -f Makefile results.xml
make[1]: ディレクトリ '/media/masaaki/Ubuntu_Disk/Cocotb/dff_example' に入ります
mkdir -p sim_build
/usr/bin/iverilog -o sim_build/sim.vvp -D COCOTB_SIM=1 -s dff -f sim_build/cmds.f -g2012   /media/masaaki/Ubuntu_Disk/Cocotb/dff_example/dff.sv
rm -f results.xml
MODULE=test_dff TESTCASE= TOPLEVEL=dff TOPLEVEL_LANG=verilog \
         /usr/bin/vvp -M /home/masaaki/anaconda3/lib/python3.8/site-packages/cocotb/libs -m libcocotbvpi_icarus   sim_build/sim.vvp 
     -.--ns INFO     gpi                                ..mbed/gpi_embed.cpp:76   in set_program_name_in_venv        Did not detect Python virtual environment. Using system-wide Python interpreter
     -.--ns INFO     gpi                                ../gpi/GpiCommon.cpp:101  in gpi_print_registered_impl       VPI registered
     0.00ns INFO     cocotb                             Running on Icarus Verilog version 10.1 (stable)
     0.00ns INFO     cocotb                             Running tests with cocotb v1.7.0 from /home/masaaki/anaconda3/lib/python3.8/site-packages/cocotb
     0.00ns INFO     cocotb                             Seeding Python random module with 1662639569
     0.00ns INFO     cocotb.regression                  Found test test_dff.test_dff_simple
     0.00ns INFO     cocotb.regression                  running test_dff_simple (1/1)
                                                          Test that d propagates to q
 95001.00ns INFO     cocotb.regression                  test_dff_simple passed
 95001.00ns INFO     cocotb.regression                  **************************************************************************************
                                                        ** TEST                          STATUS  SIM TIME (ns)  REAL TIME (s)  RATIO (ns/s) **
                                                        **************************************************************************************
                                                        ** test_dff.test_dff_simple       PASS       95001.00           0.00   33260690.68  **
                                                        **************************************************************************************
                                                        ** TESTS=1 PASS=1 FAIL=0 SKIP=0              95001.00           2.71      35015.19  **
                                                        **************************************************************************************
                                                        
make[1]: ディレクトリ '/media/masaaki/Ubuntu_Disk/Cocotb/dff_example' から出ます

  1. 2022年09月09日 03:58 |
  2. シミュレーション
  3. | トラックバック:0
  4. | コメント:0