Technology Reports 2006

テキストベース設計のチャレンジ

 

今日のSoC設計は簡単に数ミリオンゲートへと巨大化します。例えば複数のプロセッサー、メモリ、通信用コア、マルチギガビットのI/Oコアなどのペリフェラル、そしてグルーロジックなどのサブシステムから構成されており、通常、VHDLやVerilogなどのRTL記述は、これらのサブシステムを定義するために使われます。次世代のデザインに適用させるためには、設計チームは既存のコードを修正して再利用したり、あるいは新機能を開発するために新規コードの記述を行います。このようなデザインをVHDLやVerilogコードで定義する場合、そのコード数は数100行から100万行以上にも及びます。このサイズのデザインを管理するための第一のストラテジは、階層と分割を賢く行なうことです。しかしながら階層化と分割により、数多くの VHDL/Verilogのエンティティやモジュール、すなわち多くのファイルを扱うことになります。この数多くのファイルが存在するところに、階層化と分割から生じる他のファイルへの依存と参照、そしてそれを効率よく管理するチャレンジがあります。テキストエディタを用いて数多くのファイルを確認し、編集するという工程は、例えば信号名の変更を階層深く伝播させたり、あるいは数多くの接続をしたりする上で、確かに人的なミスを誘発します。設計者がチームとして再利用し、作成し、修正し、そしてデザインを解析できるような設計手法が、設計工程のフロントエンドにおける生産性を大幅に改善します。

RTLデザインのスプレッドシート表現

ほとんどの人は、スプレッドシートは数値や文字列データを入れるセルのXY格子から構成される二次元配列だと想像するでしょう。実はRTLデザインをスプレッドシートのフォーマットにマッピングさせ入力することも、簡単に行うことが可能なのです。VHDLや Verilogのコンポーネント(モジュール/エンティティ)はスプレッドシート内では信号を行として定義することができ、そしてモジュール/エンティティは列により表現が可能です。

二次元配列上では、行と列によるインターコネクトのマトリックスを形成し、両方によりコンポーネント間の接続を表示し定義することが可能になります。このRTLの設計マトリックスに階層のコンセプトを追加するには、コンポーネントを表す各列に次の低いレベルの階層を持たせ、そのスコープにおける信号と関連するコンポーネントを持たせることにより可能です。このスプレッドシートのアプローチは、非常に複雑なデザインに対しても簡潔でコンパクトな表現方法であると言えます。

メンター・グラフィックスのHDL Designer Seriesによって提供されている「Interface Based Design (IBD)」エディタは、テキストエディタのみを使っている設計者のフラストレーションを取り除きチャレンジを支援すべく開発されたアプローチです。 IBDエディタをテキストエディタと併用することにより、複雑さによる弊害を取り去り、新規設計の具現化そして文書化を改善します。特にデザインの編集作業やポート接続に必要な時間が激減し、デザインを表現するまでの時間が大幅に改善されます。

スプレッドシートのパワーをRTL設計に応用しデザインの把握や作成、編集を加速するスプレッドシートのパワーをRTL設計に応用しデザインの把握や作成、編集を加速する

デザインおよびリユースのための解析

HDL Designer SeriesではVHDL、Verilogおよびその混在をIBDエディタに読み込むことができます。非常に複雑なデザインを再利用や解析を目的として読み込むことは、IBDエディタの強力な機能に対しては比較的単純なことです。柔軟性に富んだフィルタリングの機能は、あらかじめ定義済みのフィルタリングルールや、ユーザー定義のルールに基づいて、信号あるいはモジュール/エンティティに対して使用することが可能です。

フィルタリングを用いることによって、デザインの複雑度を関連するコンポーネントやデザインの一部へと低減することができ、設計者がコンポーネント間の接続によってアーキテクチャを理解する上で役立ちます。デザインの規模や複雑度とは関係なく、デザイン全体に渡って未接続ポートの数や場所をエディタ内で容易に特定することができます。

実際、その多くを再利用により行われる今日の設計スタイルにおいて、トップレベルの接続は困難を極めています。設計生産性のギャップを埋めるための再利用をしても、トップレベルでの誤った接続はむしろ増える傾向にあり、検証においてすら見つけることが困難な場合もあります。もっともこのレベルの接続ミスは検証の工程に持ち込むべきではありません。確かな接続をフィルタリングの機能や自動化されたプロセスを用いて行うことが必要です。

デザインのフィルタリングされたビューであっても、フィルタリングされていないビューであっても、その階層に対するブロックダイアグラムによるビジュアル化が可能で、さらにデザインの把握や文書化へと活用が可能です。トップレベルでの接続情報は設計仕様の一部でもあり、これを仕様書に使わない手はありません。むしろ設計仕様書の段階からIBDエディタを使用し、自動的にVHDLやVerilogを生成させることで、仕様書からインプリメンテーションへとシームレスに流れるための手段とすべきでしょう。

その場で確認できるブロックダイアグラム・ビューその場で確認できるブロックダイアグラム・ビュー

エディタの使用例エディタの使用例

複雑なデザインの作成および管理

エラーの発生しないRTL作成のプロセスエラーの発生しないRTL作成のプロセス

今日の複雑なデザインは、その80%以上が既存、あるいは過去の設計資産の再利用です。冒頭の議論にあるように、IBDエディタはデザインを把握し解析するのに非常に効果的です。もし既存のコードが理解できたなら、次のステップは新しい機能を設計し、既存のコードにマージすることです。このタスクは今日までは、構造的なHDLコードを、多くの場合トップレベルにおけるモジュール接続を担当する設計者の仕事でした。この工程が手作業で行われたり、あるいはインハウスのスクリプトやマクロを用いて行われているのなら、同時にメンテナンスや更新についても考えなくてはなりません。実際、これはエラーの起こりやすいタスクなのです。

IBDエディタはデザインのいかなる階層レベルにおいても、デザイン作成や管理に用いることができます。 VerilogあるいはVHDLコンポーネントをIBDエディタにドラッグ&ドロップするだけで、その信号やポートを瞬時に表示することができます。フィルタリングの機能を使うことで、未接続のポートを、そのコンポーネントのすぐ下に表示させることが可能です。これにより、タイプミスや信号定義におけるコミュニケーションミスに伴うエラーが発生する可能性が激減します。

スプレッドシートのパワー

今日の設計は必ずと言っていいほど大規模化が進んでおり、結果として複雑度も増しています。信号数が増え、コンポーネント数が増えるにつれて、それらをトップレベルで接続したり、理解したりデザインをビジュアル化することは、かつてないほどのチャレンジであると言えます。HDL Designer SeriesのIBDエディタはスプレッドシートのパラダイムをRTL設計に持ち込んだという意味で非常にユニークであり、さらに解析や把握を容易にし、デザインの作成ばかりか管理の面においても、さらには文書化においても有効な手段を提供し、設計者および設計チームにとって大幅な生産性の向上をもたらします。