FC2カウンター FPGAの部屋 OVL(Open Verification Library)を試してみる1
FC2ブログ

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

FPGAの部屋

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

OVL(Open Verification Library)を試してみる1

次は、”OVL(Open Verification Library)フリーな検証ライブラリの話題”を見ながら、OVLを試してみようと思う。OVLはVerilogやVHDLでアサーションを利用できるライブラリだ。今までやってきたDPI-Cを使用するテストベンチはSystemVerilogの環境でないと動作しない。SystemVerilogのアサーションも約二年前にセミナを受けてきたが、Questaがないので使用できない。やはり、普段使っている言語でアサーションを簡単にかければ、デバック効率が格段に上がるのでは?と思う。デバックも何千という波形を見て、動作しているかどうかを人間が判定していると、自分が注目している動作は動作していても、他の注目していない部分がおかしくなっていることがある。その異常な動作が、すぐには他のところに波及せずに、大分シミュレーション時間が経過してから、他の部分に異常な動作となって現れる場合がある。そこで異常動作がわかっても、原因を追求するのが、難しい場合がある。その時に、最初に異常な動作が現れた最初の段階で、おかしいよと言ってくれるとデバックがとても助かる。アサーションにはそんな、チェッカーの役割を期待している。例えば、FIFOのオーバフーロー、アンダーフローをチェックするアサーションをVerilogで書いただけでも、相当便利だ。FIFOはオーバフーロー、アンダーフローを起こさないように、制御するはずなので、制御ロジックが不良なのが1発で分る。と言った訳でOVLをやってみたいと思った。
まずは”入手とインストール”を見ながら、OVLをダウンロードする。現在のバージョンは2.4だった。

(2013/06/27:追記)現在のOVL Ver. 2.7 の入手先は、”License and Statement of Use of Accellera System Initiative's Open Verification Library”です。そのWebページの”Accept agreement and proceed to download OVL.”をクリックするとダウンロード出来ます。

はじめの一歩”を参考に、ovl_example.zipをダウンロードして展開した。ovl_example/std_ovl にダウンロードしたOVL(std_ovl フォルダの内容)をコピーする。
OVLのアサーションは、tbフォルダのtop.vに書いてあるassert_rangeが使われている(はじめの一歩-テストベンチ-)。これは、アサーションベース設計、原書2版(たぶん、この本が唯一日本語で書かれているOVLの本だと思うんだけど?)の394~395ページに書かれている。それによると、assert_rangeアサーションは回路の中で、カウンタやステートマシンの値が適切な範囲にあることを保証するアサーションだそうだ。
さて、前回まで使ってきた。ModelSim AE 6.5bを起動する。”はじめの一歩”にはプロジェクトを作成することは書いていないが、前回のavalon_bfm_sim プロジェクトに上書きしても何なので、ovl_sampleプロジェクトを作成する。作成するフォルダは、ovl_example\sim とする。
FileメニューからNew -> Project... を選んで、ovl_sampleプロジェクトを作成する。ここでModelSimのキャプチャ図を貼ろうと思ったのだが、PrintScreenしておいたはずの図がなくなってしまったので省略。
OVL_sample_1_100309.png

Transcriptペインで、do all.do を実行する。するとシミュレーションがスタートした。
OVL_sample_2_100309.png

あっさりと出来ました。ログを下に示す。

do all.do
# ** Warning: (vlib-34) Library already exists at "work".
# Model Technology ModelSim ALTERA vlog 6.5b Compiler 2009.10 Oct 1 2009
# -- Compiling module clkgen
# -- Compiling module control
# -- Compiling module top
# -- Compiling module decimal_counter
# -- Scanning library directory '../std_ovl'
# -- Compiling module assert_range
#
# Top level modules:
# top
# vsim -do wave.do -l transcript.log -c top
# Loading work.top
# Loading work.clkgen
# Loading work.control
# Loading work.decimal_counter
# Loading work.assert_range
# do wave.do
# OVL_NOTE: V2.4: ASSERT_RANGE initialized @ top.counter_checker_inst.ovl_init_msg_t Severity: 0, Message: The counter arrived at invalid range.
# OVL_COVER_POINT : ASSERT_RANGE : test_expr_at_min covered : time 105 : top.counter_checker_inst.ovl_cover_t
# OVL_COVER_POINT : ASSERT_RANGE : test_expr_at_min covered : time 115 : top.counter_checker_inst.ovl_cover_t
# OVL_COVER_POINT : ASSERT_RANGE : test_expr_at_min covered : time 125 : top.counter_checker_inst.ovl_cover_t
# OVL_COVER_POINT : ASSERT_RANGE : test_expr_at_max covered : time 235 : top.counter_checker_inst.ovl_cover_t
# OVL_COVER_POINT : ASSERT_RANGE : test_expr_at_min covered : time 245 : top.counter_checker_inst.ovl_cover_t
# OVL_COVER_POINT : ASSERT_RANGE : test_expr_at_min covered : time 255 : top.counter_checker_inst.ovl_cover_t
# OVL_COVER_POINT : ASSERT_RANGE : test_expr_at_max covered : time 415 : top.counter_checker_inst.ovl_cover_t
# OVL_COVER_POINT : ASSERT_RANGE : test_expr_at_min covered : time 425 : top.counter_checker_inst.ovl_cover_t
# OVL_COVER_POINT : ASSERT_RANGE : test_expr_at_min covered : time 435 : top.counter_checker_inst.ovl_cover_t
# OVL_COVER_POINT : ASSERT_RANGE : test_expr_at_min covered : time 445 : top.counter_checker_inst.ovl_cover_t
# OVL_COVER_POINT : ASSERT_RANGE : test_expr_at_min covered : time 455 : top.counter_checker_inst.ovl_cover_t
# OVL_COVER_POINT : ASSERT_RANGE : test_expr_at_min covered : time 465 : top.counter_checker_inst.ovl_cover_t



  1. 2010年03月09日 05:52 |
  2. アサーション事始め
  3. | トラックバック:0
  4. | コメント:2

コメント

かなり(数年ぶり?)お久しぶりです。
久しぶりに覗いてみると、自分が作ったことも忘れていたページがリンクされていてビックリしました。
(ブロブも全然更新せず。。。)

OVLはたしか論理合成も可能だったと思うのでFPGAなどでもうまく使えば便利ですよね。

今やってる仕事が検証屋でフォーマル検証がメインなのでアサーションはよく使ってます。
といっても、ほぼSVA(SystemVerilog Assertion)ですが。

またちょくちょく拝見させていただきます。
  1. 2010/03/11(木) 09:45:10 |
  2. URL |
  3. アイン #xRS1q4qQ
  4. [ 編集 ]

アインさん、お久しぶりです。お元気そうですね。
今頃ですが、OVLを使ってみようと思っています。OVLの日本語のページとなると、アインさんのページしかありませんね。
今はOVL1ですが、OVL2に移ろうと思っています。
何か、間違っていたり、私がわからないことがあったら、ご指摘下さい。よろしくお願いいたします。
  1. 2010/03/11(木) 17:22:52 |
  2. URL |
  3. marsee #f1oWVgn2
  4. [ 編集 ]

コメントの投稿


管理者にだけ表示を許可する

トラックバック URL
https://marsee101.blog.fc2.com/tb.php/1400-6cdf305c
この記事にトラックバックする(FC2ブログユーザー)