Cベース設計にもの申す! 第7回

Cベース設計の思わぬ効用

黒川秀文


 筆者が所属するNECの半導体部門では,LSI設計に自社開発のビヘイビア合成ツール「Cyber」を利用しています.CyberはクロックのないC言語のアルゴリズム記述から,クロックを挿入したRTLソース・コードを生成します.社内ではLSI内部のブロック・レベルの設計や,FPGAによる実機検証(プロトタイピング)などで実績を上げています.今回は,Cyberを利用した経験から感じたCベース設計の利点や,筆者が驚いた最近の事例を紹介したいと思います.


ゲート・レベルからRTL へ移行したときと似ている

 Cベース設計のかっこうのサンプルとして,暗号回路があります.暗号回路の設計では,最初にC言語でアルゴリズムを記述し,任意のデータを暗号化/復号化してその正当性を確認します.この作業が終わると,アルゴリズム記述に手を加えて,ビヘイビア・レベル記述(BDL)を作成します.例えば,C言語で定義した変数が実際のハードウェアでは何ビットのフリップフロップに対応するかなどを指定します.いったんビヘイビア・レベルの記述が完成すれば,RTLソース・コードの生成は,ほんの1分以下で完了します(5万ゲート,ビヘイビア・レベルの記述で800行の暗号回路の場合).

 上記の暗号回路の例では,コード量に対するゲートの生成効率は約60ゲート/行でした.そのほかの信号処理回路を合成した例でも,50ゲート/行程度になっています.これと比べると,RTL記述の効率は20ゲート/行以下ではないかと思います.ソース・コードの行数が少なければバグが残る余地が少なくなりますし,また,設計者の頭の中で把握できる論理機能の範囲も広がります.つまりC言語の優位性は明らかです.

 次にCyberで合成した暗号回路のRTL記述をVerilog HDLシミュレータで検証し,その出力値をもとのC言語のアルゴリズム記述と比較すると,「機能的には」つねに一致していました.ここで「機能的には」と言ったのは,もともとアルゴリズム記述にはクロックがないため,タイミング的に比較できないからです.機能的につねに一致しているとなると,「RTLの機能検証は省略しても差し支えないのではないか」という発想が出てきます.実際,現状のRTL検証の目的は,「C言語記述の出力とRTL出力が一致していること」の確認と,「外部ハードウェアとのインターフェースが正しいこと」の確認です.つまり,Cyberの回路生成機能そのものを疑って,合成された回路の内部をデバッグするといった意味合いはほとんどありません.

 これらの利点は,かつてLSI検証の中心がゲート・レベルからRTLへ推移していったころをほうふつさせるものがあります.C言語によるアルゴリズム記述のほうがRTLよりも高速に検証できるのであれば,Cベース設計を導入することによって,検証工数を削減できる可能性があるのです.


ビヘイビア記述のIPコアは柔軟性に富んでいる

 次に紹介するのは,ビヘイビア合成に関する筆者自身の驚きの体験です.社内のある装置開発グループから,筆者らが開発した暗号回路を装置に直接組み込みたいという要望がありました.先方の要求は,「VHDLのソース記述が欲しい」,「ボード上のシステム・クロックは33MHzのみ」というものでした.ところが筆者らが開発していた回路(IPコア)は,Verilog HDLで記述されていました(Cyberで生成したのがVerilog HDLだった).また,54MHzのシステム・クロックで動作し,到着データを80Mbpsの速度で処理する仕様でした.このような相違があると,従来なら「最初から話にならない」となっているケースです.しかし,Cyberはこの問題を簡単にクリアしてしまいました.

 まずVHDL生成の問題ですが,これは単純でした.CyberはVHDLとVerilog HDLのどちらのRTL 記述でも出力できます.ビヘイビア記述を再度入力して,VHDLソースを生成しました.

 次にシステム・クロックの問題ですが,筆者は,システム・クロックの動作周波数に比例して,データの処理性能が80Mbpsから48Mbpsに低下するのはしかたがないと見ていました.しかし,ビヘイビア合成の担当者は,「33MHzを目標に再合成してみましょう」と言いました.もとの設計は54MH zのクロックを前提としており,40クロック/8バイトの処理能力で合成を行っていました.ビヘイビア合成の担当者によると,33MHzで再合成すると,もとの1クロックの遅延許容度が増えるため,全体のクロック数を減らせるのだそうです(もちろんその場合,もとのRTL記述とはまったく異なる回路になる).実際,制約を33MHzに設定し直して,同じビヘイビア記述を入力したところ,24クロックで処理する回路が得られました(要求から再合成完了までは1日足らず).つまり,動作周波数は33MHzでも,80Mbpsのデータ処理性能をキープできました.

 このような経験から知りえたことは,C言語(ビヘイビア記述)で表現したIPコアの柔軟性の高さです.筆者はこの驚きをビヘイビア合成担当者に伝えましたが,「そんなのあたりまえですよ」と言い返されてしまいました.時代は1歩,1歩,前に進んでいるのだなと実感しました.



(本コラムはDESIGN WAVE MAGAZINE 2001年8月号に掲載されました)


>>> コラムに対する感想はこちら




◆筆者プロフィール◆
黒川秀文.1979年にNECに入社.主に通信,画像,ディスク系の専用コントローラの開発に従事する.なかでもCPU搭載のファームウェア内蔵製品の開発を多く手がけ,その経験からファームウェア事前検証ツールとしてのC++シミュレータ(ClassMate)を開発し,社内での普及促進を目指している.




Copyright(C) 2001 CQ Publishing Co., Ltd. All Rights Reserved.