- - PR -
半導体デバイスの集積度は、1年半で2倍になるといわれます。
その直接的な要因には“デバイスの製造技術の向上”があり、間接的な要因には“半導体デバイスを使うさまざまな電子機器の高機能化”が挙げられます。PCや携帯電話など私たちの身の回りにある電子機器を考えていただければ、その進化が実感できると思います。また、こうした急速な発展は半導体デバイスのみならず、FPGAやASICなどの論理設計デバイスの世界でも同様です。
しかし、こうした発展の一方で忘れてはならないのが、設計者への負担です。半導体デバイス、論理設計デバイスの規模が増大すればするほど、論理設計やタイミング設計の複雑さが増し、設計者の頭を悩ませ続けます。
インターフェイス回路は従来の共通クロック同期に代わってソース・シンクロナスやダブル・データ・レートが一般的になったり、1つのデバイス内に10種類以上のクロックを使った複雑な設計がなされたり、プロセスの進歩により温度や電圧の変動による影響やチップ内のタイミングばらつきの相対的な増加が次第に大きくなったりして、タイミング設計に大きなインパクトを与えています。特に、“タイミング制約の漏れ”は、デバイスの動作の不具合を引き起こすため、論理設計のミスと同様に致命的なものです。逆に、過剰な制約はタイミング収束を困難にし、開発の工程を遅らせる原因ともなります。
こうした状況の中、ある種の曲がり角に差し掛かったのがFPGA開発です。なぜなら、ASICを凌駕(りょうが)するほど、大規模化、高機能化が急速に進んでいるのにもかかわらず、従来のFPGA開発ツールでは「複雑な回路のタイミング制約や解析をなるべく簡単に間違いなく(一貫した方法で)行いたい」という設計者の要求に応え切れなくなってきたからです……。
では、どうしたら設計者の要求に応えられるのか? そこで、登場したのが「より厳しい環境に置かれているASIC開発の手法を取り入れる」という考え方です。ASIC開発というのは、回路修正にマスク再作成のための莫大な費用が掛かることもあり、タイミング解析を含めた設計手法とツールが、FPGAと比べて早くから発達してきました。こうした手法の中から近年、FPGA開発ツールに取り入れられたのが、タイミング制約のためのフォーマット「SDC(Synopsys Design Constraints)」です。
SDCはASIC開発で業界標準のフォーマットです。業界標準の手法が普及することは、設計者にとっても大きなメリットであり、今後SDCに対応したFPGA開発ツールが増えていくと予想されます。また、この動きがさらに広まれば、ASIC設計者にとってのスタンダードであるSDCの知識が、VHDLやVerilogなどの知識と同様に、FPGA設計者にも求められることになるでしょう。
「あぁ、また新しいことを習得しないと……」とお嘆きかもしれませんが、実はそんなに悲観することはありません。SDCの習得は、HDLほど時間はかかりませんし、いくつかのコマンドさえ覚えてしまえば、ほとんどの回路を正しく制約できるようになります。
というわけで(ちょっと前置きが長くなりましたが)、本連載では複雑な回路でも間違いなく解析が進められるように、「タイミング解析」と「SDCフォーマットによるタイミング制約」の方法について順を追って解説し、タイミング解析・制約の基礎を伝授していきたいと思います。
正しくタイミングを解析できていますか?
そもそも、「タイミング解析」とはどのようなものでしょうか?
FPGAに限らず、一般的にデジタル回路の設計では、要求されたスピードで回路が動作しているかを確認するために、スタティック・タイミング解析を行います。これを突き詰めていうならば、以下の2つを確認することです。
- セットアップ解析
→データがフリップ・フロップ間を伝わるのが遅過ぎないか?
- ホールド解析
→データがフリップ・フロップ間を伝わるのが早過ぎないか?
ちょっと簡単過ぎる表現ですね。実際に皆さんが設計されている回路は非常に複雑だと思います。例えば、次のような回路を設計していて、タイミングを解析するのに苦労したことはないでしょうか?
- 異なるクロック間でデータ転送をしている
- クロックを内部で生成したり、切り替えたりして使っている
- ソース・シンクロナスや、ダブル・データ・レート転送をしている
「いまさら、スタティック・タイミング解析の勉強なんて……」と思っている設計者の方でも、これまでに経験のない複雑な回路になると、どのように扱ってよいか迷ってしまう場合が多いようです。
タイミング制約とは?
では、「タイミング制約」とはどのようなものでしょうか?
タイミング制約とは、タイミングに関する設計要求を開発ツールに対して指示することをいいます。最も基本的なタイミング制約の例は、クロック周波数の指定です。これ以外にも、設計要求に応じてさまざまな制約が必要となります。例えば、回路の入出力ポートには、入出力データの遅延の制約が必要ですし、複数のクロックがあれば、それらの関係を制約として定義することが必要です。
それではFPGA開発ツールは、設計者が指定したタイミング制約をどのように使うのでしょうか?
一つは、タイミング解析結果の比較対象です。つまり、解析結果が制約の範囲内であれば、ツールは設計要求を満たしていると判断します。このため、正しくタイミング制約を指定することが、正しいタイミング解析の鍵といえます。
もう一つは、論理合成と配置配線の目標です。開発ツールはHDLで記述された回路を、最適な方法でFPGAに実装しようとします。このとき、タイミング制約を最適化の基準として使います(Timing-driven Compilation)。つまり、開発ツールで回路を最適化する際には、正しくタイミング制約を指定することが重要となります。
SDCフォーマットとは?
複雑な回路になればなるほどタイミング制約の複雑さが増し、プロセスが微細化すればするほど、細かなタイミング制約が求められます。つまり、こういった要求に答えられる開発環境やタイミング制約の方法が、設計をするうえで重要になってくるわけです。ここで、冒頭に紹介したSDCと呼ばれるタイミング制約のフォーマットが登場してきます。
SDCとはどのようなものなのでしょうか?
SDCフォーマットはASIC開発ツールのEDA(Electronic Design Automation)ベンダであるシノプシス社が開発したフォーマットで、ツール・コマンド言語(TCL:Tool Command Language)ベースの文法と、一貫した方法でさまざまな制約を記述できるという特長があります。SDCを使うと、例えばTCLを利用して必要なパスの遅延を抽出することが可能となります。さらに、これまでのFPGA用フォーマットでは、ソース・シンクロナス出力や、ダブル・データ・レートI/Fを正確に制約できませんでしたが、SDCでは正確な記述が可能となります。
これらSDCによるメリットを取り入れるため、FPGA開発でもSDCをサポートしたツールが登場しはじめています。例えば、アルテラ社の「Quartus II」、メンター・グラフィックス社の「Precision Synthesis」、アクテル社の「Designer」などがその一例です。こうしたツールを使うことで、前述したSDCの特長に加え、ツール固有の記述フォーマットの習得が不要になる、ASICとFPGA間での移行が容易になるといったメリットがあります(なお、本連載では、Quartus IIを題材に解説を進めていきます)。
ここで、実際のSDCの記述がどのようなものか見てみましょう。登場するコマンドの意味と使い方は、次回以降で詳しく説明しますので、今回はSDCのイメージをつかんでいただければと思います。
図1に示すサンプル回路は、イーサネットPHYチップにデータを送信する回路です。1GbitモードではGMII(Gigabit Media Independent Interface)インターフェイスで動作し、100MbitモードではMII(Media Independent Interface)インターフェイスで動作します。GMIIインターフェイスは、データ(TXD)を125MHzのクロック(GTX_CLK)とともに、ソース・シンクロナスで送信します。MIIインターフェイスは、PHYチップから受け取る25MHzのクロック(TXCLK)に同期して、データ(TXD)を送信します。
![]() |
||||||||||||||
|
||||||||||||||
図1 イーサネットPHYチップにデータを送信する回路 |
この例では、クロックの切り替えと、ソース・シンクロナス・インターフェイスがあり、さらにモードごとに異なるI/Oの制約が必要です。従来のFPGA開発ツールでは、この回路に適切な制約を与えるのは困難か、ツールによっては不可能な場合もあります。
SDCでは図1に示すように、クロックを順に定義し(1)〜(4)、クロック間の関係を指定し(5)、出力タイミングの制約をモードごとに行います(6)(7)。そのため、より複雑な回路でも、よく使われる10種類程度のコマンドだけで適切に制約することが可能なのです。
関連記事 半導体/エレクトロニクス
- 連載:イチから作って丸ごと学ぶ! H8マイコン道
- 特集:組み込みシステムに吹く“仮想化”の風
- 連載:組み込みマルチコア進化論(連載中)
- 連載:必修! FPGAタイミング解析の基礎(全5回)
- 連載:−ザ・組み込み−ソフトウェアのハードウェア化(連載中)
- 連載:S08ではじめるマイコン制御プログラミング(全6回)
- 連載:マイコン制御基礎の次(連載中)
- 連載:マイコン制御基礎の基礎(全10回)
- 連載:マイコン制御基礎以前(全10回)
- 連載:H8で学ぶマイコン開発入門(全13回)
- 連載:触って学ぼう FPGA開発入門(全6回)
- 連載:FPGA開発テクニック、チューニングの心得(全6回)
- 特集:いまさら聞けない FPGA入門
- 連載:バラして納得! 電子部品入門(全18回)
- 連載:完全マスター! 電子回路ドリル III(全14回)
- 連載:完全マスター! 電子回路ドリル II(全25回)
- 連載:完全マスター! 電子回路ドリル(全25回)
- 目指せ! 電子回路マスターへの道
- 目指せ! 電子回路マスターへの道 Part2
- 分かっておきたい、IP活用の落とし穴
組み込み開発フォーラム 新着記事
- フルスクラッチの“Hello World”を動かしてみよう(2011/3/31)
- FlexRayプロトコルの概要(その2)(2011/3/29)
- JASA、東北地域に拠点を置く会員企業を支援(2011/3/25)
- NEC、震災の影響を受けた4拠点の生産再開を発表(2011/3/23)
- 内部ブロック図の基礎と共通要素(2011/3/22)
- インテル、被災地におけるITインフラの復旧を支援(2011/3/22)
- Facts on AUTOSAR/AUTOSAR導入の現実(2011/3/18)
- 計測器・震災被害ホットラインを開設、テクトロニクス(2011/3/18)
- ZMP、地震の揺れを多角的に計測するアプリ無償配布(2011/3/16)
- メンター、3Dテレビ・マルチメディア検証プラットフォーム(2011/3/16)
- 【番外編】タチの良い計測値、悪い計測値とは?(2011/3/15)
- tarファイルシステムをAndroidに組み込む!!(2011/3/10)














