はじめに
今から約5年前の2017年8月26日(土曜)に開催した「SystemVerilogによるテストベンチ実践会(2017夏)」
この時あたしが発表した「Zynq VIPを利用したテストベンチ」を振り返ってみる
何故なら? 先週までの連載の 「Xilinx ZynqMP SoC VIP の中を調べる」に非常に関係しているので。
スライド
Zynq VIPを利用したテストベンチのスライドか下記のSlideshareにあります。
www.slideshare.net
この中で、Zynq VIP の各APIを説明しています。
- set_stop_on_error
- set_debug_level_info
- fpga_soft_reset
- pre_load_mem_from_file
- pre_load_mem
- read_interrupt
- wait_interrupt
- write_from_file
- read_to_file
- write_data
- read_data
- write_burst
- write_burst_concurrent
- read_burst
- read_register
- read_register_map
- set_slave_profile
- wait_reg_update
- peek_mem_to_file
- read_mem
- write_mem
なんか、Zynq Ultrascale+ MPSoC VIP の API と同じですね。
DPI-C
この資料の後半で、SystemVerilog DPI-Cを使って、Software Driven Verification を試みたのですが、この時点では DPI-C の task export をサポートしていなかったです。
下記のブログには、DPI-C task export できるよ、とありますが、DPI-C の task の書き方の何かがサポートしていなかったのだと思います。
DPI-C 再び
Vivado 2017.1 から 2022.1 になり、5年経ったので、もしかしたらできるんじゃんと思ったのでトライしてみました。
なんと、DPI-C の task export が動きました。
おわりに
ということで、どのようにしてやれば、Vivado 2022.1 の xsim で DPI-C task export が動くかについては、
「Xilinx ZynqMP SoC VIPの中を調べる」の薄い本を書いてあります。興味がある方は、是非、覗いてみてください。
下記の8/31(水)に開催される ACRiスピンオフ企画:「実践的!FPGA開発セミナー vol.13」 前半の 「論理検証の効率化&自動化テクニック ~テストベンチ作成からCIまで ラクできる検証環境を創る~」 の 「DPI-Cを利用したテストベンチ作成の効率化」 にも関連するのですよ。