回路設計におけるタイミング制約に悩む人も多いだろう。今回は実際の回路を例に取り、SDCを使ったタイミング制約を解説する。
前回は、タイミング解析の基本的な考え方や用語について説明をしました。今回からは、実際の回路のタイミングを、SDC(Synopsys Design Constraints)により制約する方法を解説します。
初めて回路の設計をしたときに、どれだけのタイミング制約をすればいいかで、悩んだことはないでしょうか?
この答えは、「少なくとも回路内のすべてのパスに対して」です。制約されていないパスが回路内にあれば、設計が完了したとはいえません。回路によっては、タイミングの考慮が不要なパスがあるかもしれませんが、その場合には、必ずフォルス・パス(False path)の制約をします。そうしないと、合成や配置・配線ツールは、本来は必要のないタイミングを満たそうとして、無駄に時間を使ったり、本当にタイミングを満たしたいパスを最適化できなくなったりします。
回路内のすべてのパスは、次の4つに分類できます(図1)。
4番目は同期パスではないので特殊ですが、最初の3つは、クロックを定義するのが第一段階となります。次にクロックの定義方法を見ることにします。
タイミング制約をする上で、クロックは3種類に分類できます。基本クロック(Base Clock)、派生(生成)クロック(Generated Clock)、仮想クロック(Virtual Clock)です。
また、クロックは互いに、同期(Synchronous)、非同期(Asynchronous)、排他(Exclusive)のいずれかの関係にあります。
図2に示す回路で、ターゲットのFPGAには100MHzのクロックが入力されています。これは基本クロックとして、次のように定義します。
create_clock -name clkin -period 10 [get_ports CLKIN]
この基本クロックを基に、FPGAの内部で分周FFを使って、50MHzのクロックが生成されています。これは派生クロックとして、次のように定義します。
create_generated_clock -name divclk -source [get_ports CLKIN] \ -divide_by 2 [get_pins DIVFF|regout]
Copyright © ITmedia, Inc. All Rights Reserved.