6 補足
本章は補足的な意味を持ち、UVM の学習への直接的な影響はありません。必要に応じて内容を 参考にして下さい。以下は、SystemVerilog IDEのGUI 機能の一部を主観的に論じています。
図 6-1 SystemVerilogテキスト・エディタの一例
図 6-2 UVMをサポートしたSystemVerilogテキスト・エディタの一例
UVM機能を使用している箇所を一目瞭然に認識する事が出来るのは SystemVerilogテキスト・エ ディタの長所です。
SystemVerilogテキスト・エディタは ”What you see is what you get.” を実現する為に存在します。
6.2.3 データ・タイプのサポート
UVM 開発者に限らずユーザ自身もデータ・タイプを定義します。定義したデータ・タイプを縦 横無尽にアクセスできる仕組みが必要になります。下図は、UVM で定義されている全てのデー タ・タイプを示したナビゲータです。
図 6-3 データ・タイプ・ナビゲータの例
ここに示す情報に対して以下の条件が満たされなければなりません。
ソース・コードから自動生成される事。
ソース・コードに変更があると変更が自動的に反映される事。
ナビゲータで表示される内容は、ソース・コードで記述しているデータ・タイプの宣言情報 を全て含んでいる事。例えば、uvm_driver のパラメータ情報がナビゲータに示されています。
ナビゲータ内の項目をダブル・クリックするとソース・コード内の定義箇所がテキスト・エ ディタ内に表示される事。例えば、uvm_driverをダブル・クリックするとクラス uvm_driver が表示されなければなりません。また、req をダブル・クリックすると req が定義されてい る行が明示されなければなりません。
これらの条件は高度の技術を必要とする為、この機能を搭載している EDA ツールは数少ないと 思われます。例えば、SystemVerilogコンパイラーがテキスト・エディタと同期しなければ成し得 ない機能です。
6.2.4 ウィザード
明らかに各種のウィザードが必要になります。UVM には義務的な記述項目が多く存在します。
利用者のタイピング負荷を軽減する為のウィザード機能が必須です。例を示すのが一番だと思い ます。次の図はUVMのトランザクション定義を支援するウィザードを示しています。
図 6-4 UVMクラスのウィザード例
ベース・クラスはリスト内から選択するだけで済みます。field-macro も同様です。タイピングミ スをする余地はありません。生成される情報はPreviewに表示されます。Copyをするとシステム のクリップボードにテキストが転送されるので、生成された情報をあらゆるツールに引き渡す事 が出来ます。
UVM クラス・ウィザードに限らず、複合的なデータ・タイプに対してもウィザードが必要です。
複雑なシンタックスを持つ SystemVerilog の構文から迅速、且つ、正確に所望の記述を生成する 為の支援機能が期待されます。複合的なデータ・タイプは以下の様に分類されます。
enum
structure
union
interface and modport
clocking block
class
これらのデータ・タイプに対して包括的なウィザードが必要になります。次に、包括的なウィザ ードの例を示します。この図では、simple_ifと呼ばれる interfaceの modport TESTを定義してい ます。
図 6-5 包括的なデータ・タイプ・ウィザードの例
ウィザードの機能は単に構文を生成するだけでは不十分です。レイアウトの自由度を提供しなけ ればなりません。例えば、modports TESTとDUTの順序を簡単に入れ替えられる事が必要です。
上図で、下矢印をクリックすると TEST と DUTが入れ替わります。各企業で設けている記述ル ールには、modportsのレイアウトを規定している場合があります。
enum ウィザードは意外と重宝します。多くの場合、enum 定数を大文字で定義します。従って、
ウィザードでは、小文字で定義された enum定数を自動的に大文字に変換すれば enum の定義は 円滑に進みます。ユーザはキーボードで大文字にロックする必要はありません。
6.2.5 コード・スニペットとブックマーク
SystemVerilogは多くの機能から構成されています。しかも、それらの多くが複雑なシンタックス
を持っています。全ての機能のシンタックスを完全に記憶する事は困難である為、それらの機能 を使用する際にはマニュアルを参照するか既存のコードを参照するか等の努力をします。その様 な場合、創造活動が中断されて思考が途切れてしまう事が多々あります。この様な悪影響を最少 限にする為のツールがコード・スニペット機能とブックマーク機能です。
6.2.5.1 コード・スニペット
スニペットは、テキスト文字列から構成された情報群を意味します。例えば、サンプル・コード の断片がスニペットに相当します。マニュアルに書かれた複雑なシンタックスを読み返すよりも
スニペットは目的別に分類できた方が使い易いと思います。更に、スニペットには分かり易い名 称を定義する機能が必要です。しかも、一度定義したスニペットは保存される必要があります。
以下にスニペットの例を示します。
図 6-6 コード・スニペットの例
参照するだけでなく、スニペットのコードを簡単にexportする仕組みも必要です。
6.2.5.2 ブックマーク
コード・スニペットはユーザ指定の名称に対してコードの断片をマップする機能です。それに対 して、ブックマーク機能はユーザ指定の名称に対してソース・ファイル内の行番号を割り当てま す。コード・スニペット機能、及び、ブックマーク機能の組み合わせを利用する事により、コー ド開発時の生産性を向上する事が出来ます。
一般的には、次の様に機能します。
ブックマークをダブル・クリックするとファイルが開き、該当する行がテキスト・エディタ 内に選択表示されます。
ブックマークを目的別に分類する事が出来ます。
ブックマークに名称を設定する事が出来ます。
ブックマークに示す情報には長い文字列が含まれる為、下図の様なタブで表示する方法が一般的 です。Microsoft社のVisual Studioもこの方式を採用しています。ポップアップ形式のダイアログ でブックマークを表示する手法も存在しますが、使い勝手は余り良くありません。
図に示されている様に、ブックマークの操作がブックマークと共に一元管理されている必要があ ります。
図 6-7 ブックマーク機能の例