Cベース設計にもの申す! 番外編 ――機能検証に強い"SystemVerilog"

赤星博輝

tag: 半導体

コラム 2003年8月 7日

 最近,C/C++の拡張言語であるSystemCを利用するLSI(もしくはシステム)の設計手法が脚光を浴びています.その一方で,従来からあるVerilog HDLについては,機能的に劣っている部分が目立つようになってきました.そのせいもあってか,「設計はVerilog HDLで行うが,検証には異なる言語(C/C++,e,Veraなど)を使用する」という例が増えてきています.設計者からみるとこうした状況は好ましくなく,統一した言語がほしいという気持ちがあったと思います.

 このようなVerilog HDLの問題点を解決するために開発されたのがVerilog HDLの拡張言語であるSystemVerilogです.2003年6月にはSystemVerilog 3.1の標準化案がAccellera(Verilog HDLやVHDLの標準化組織)によって承認されました.SystemVerilogの利点は,既存の設計手法を変更しなくても,言語の新しい機能を利用できることにあります.

 一般に,新しい言語を採用すると,既存の設計資産や検証環境などが使えなくなったり,使いにくくなるケースが多いと思います.しかし,SystemVerilogは既存のVerilog HDLの拡張仕様であるため,これまでの環境をそのまま引き継ぐことができます.その上で,多様なデータ型,ランダム・テスト,アサーション,インターフェース,DPI(direct programming interface)などの新機能を利用することができます.SystemVerilogにはC言語の制御構文が多く導入されており,機能検証のための機能が充実しています.また,RTL記述やテストベンチについて,コンパクトに記述できる構文やケアレス・ミスを起こしにくい構文を採用しています.

 これらの利点を考慮すると,「RTL設計だけであってもSystemVerilogを導入するメリットはある」と,筆者は考えています.

 C/C++ベース言語を使って抽象度を上げて記述した場合と比較すると,シミュレーション速度の点で劣るという問題はありますが,これについては,2値のデータ型を使用する("X","Z"を使用しない)ことでメモリ使用量を減らしたり,CPUの負荷を減らすという手段が用意されています.

●検証用の記述を大幅に強化

 ここで,SystemVerilogに追加された個々の機能をもう少し詳しく見ていきましょう.

 always文はフリップフロップやラッチ,組み合わせ回路の記述に用いられますが,イベント・リストのもれや,条件の不足によるラッチの生成などがよく発生します.そこでSystemVerilogではalways_ff,always_latch,always_combというキーワードが導入されました.これを使って,設計者が直接回路構成を指定できるわけです.

 また,これまでアトリビュートで指定していたfull_case,parallel_caseなどはシミュレーションと合成結果の間で不一致を引き起こしやすいことから,priorityとuniqueといったキーワードをif文やcase文で指定できるようになりました.シミュレーションと合成結果を一致させようという努力を感じます.

 ランダム・テストについては,入力パターンを自動生成する機能が追加されています.ユーザは,データの分布範囲や発生確率などを指定します.これによって,コーナ・ケースを解析したり,カバレッジを高めやすくなります.

 アサーションについては,仕様をsequenceとして表現することで複数サイクルの動作を定義し,その動作をチェックできるようになりました.設計段階でこのような定義に基づくモニタ用モジュール(アサーション)を埋め込んでおけば,デバッグを効率よく行うことができます.

 SystemVerilogでは,通信方式をカプセル化するインターフェースの記述が用意されています.これを利用すると通信方式の変更に対応しやすくなります.また,インターフェース部のモジュール(通信プロトコルやバス・プロトコル)の再利用にも役立ちます.

 DPIは,PLI(programming language interface)を発展させた機構です.SystemVerilogからC言語の関数を呼び出したり,逆にC言語からSystemVerilogの関数を呼び出すときに使います.例えば,すでにC言語で作成したモジュールをSystemVerilogから呼び出すことができます.

●記述量が1割弱減り,合成結果は同じ

 Verilog HDLとSystemVerilog 3.1を比較するため,米国Synopsys社のツール(開発中のバージョン)を利用して簡単な計算機を設計してみました.その結果,記述量は1割弱減り,合成結果はまったく同じになりました.同じ性能の回路や同じ内容のテストベンチを短い記述量でケアレス・ミスなく記述できたという点を,筆者は評価しています.SystemVerilogのアプローチは,設計の抽象度を上げて記述量を減らす方法(ビヘイビア合成)とは異なるアプローチですが,実際の設計では有効だ思います.

 ただし,SystemVerilogにも問題点はあります.それは,市販の対応ツールがまだほとんど出てきていないということです(Synopsys社や米国Mentor Graphics社などが対応を表明している).今後,Verilog HDL系のツールがSystemVerilogの機能をサポートするにつれて,RTL設計・検証の効率は向上していくことでしょう.特にアサーションやランダム・テストは,RTL検証の手法に大きな変化を与えることになると,筆者は考えています.


◆筆者プロフィール◆
赤星博輝.1989年九州大学に入学し,博士課程まで進学.1996年4月にNECに入社し,ビヘイビア合成ツールの研究・開発に従事.2000年6月にロジック・リサーチに入社し,細粒度の並列処理の研究・開発,ASIC設計などの業務に従事.日本の技術力低下に危機感を持つ一技術者.工学博士.

組み込みキャッチアップ

お知らせ 一覧を見る

電子書籍の最新刊! FPGAマガジン No.12『ARMコアFPGA×Linux初体験』好評発売中

FPGAマガジン No.11『性能UP! アルゴリズム×手仕上げHDL』好評発売中! PDF版もあります

PICK UP用語

EV(電気自動車)

関連記事

EnOcean

関連記事

Android

関連記事

ニュース 一覧を見る
Tech Villageブログ

渡辺のぼるのロボコン・プロモータ日記

2年ぶりのブログ更新w

2016年10月 9日

Hamana Project

Hamana-8最終打ち上げ報告(その2)

2012年6月26日