前回説明したように、I/Oタイミング制約のために、仮想的に周辺デバイスを考えます。周辺デバイスは、50MHzのクロックでFPGAの出力データを受信するので、これを仮想クロックとして、次のように定義します。このようにして定義したクロックを使って、I/Oタイミングの制約を行います。
create_clock -name vclk -period 20
基本クロックと同じコマンドですが、この例のように対象ノードを指定しないと、仮想クロックになります。
SDCでは、複数のクロックの定義をすると、それらはすべて同期関係にあると推定されます。つまり、それらの間のデータやパスはすべて、タイミング解析の対象となります。非同期であることを考慮して、設計されている場合には、制約でそのことを明示する必要があります。
図3に示す回路では、CLKIN1とCLKIN2は非同期関係のため、その間のパスは解析をする必要はありません。そこで、以下の(1)、(2)のいずれかの制約で、非同期関係であることを指示します。
create_clock -name clkin1 -period 10 [get_ports CLKIN1] create_clock -name clkin2 -period 15 [get_ports CLKIN2] (1) set_clock_groups -asynchronous -group {clkin1} -group {clkin2} (2) set_false_path -from [get_clocks clkin1] -to [get_clocks clkin2] set_false_path -from [get_clocks clkin2] -to [get_clocks clkin1]
排他関係の代表例は、クロックがマルチプレクスされている場合です。マルチプレクス・クロックで駆動されるFFには、2種類のクロックが入りますが、この2つのクロック間のパスを解析する必要はありません。このことを制約で明示する必要があります。
少し分かりにくいと思いますので、具体例で説明します。図4の回路には、CLKINポートから、100MHzのクロックが入力されて、内部で2分周されています。CLKINと分周クロックがマルチプレクスされてから、FF1とFF2へ分配されています。2つのクロックを定義すれば、問題はなさそうですが、それだけではなく、次の4つのパスが解析の対象になります。
(2)と(4)は意味のない解析ですので、制約によって排除する必要があります。そのためには、次のように「set_clock_groups」コマンドを使って、CLKINと分周クロックが排他関係にあることを示します。
create_clock -name clkin -period 10 [get_ports CLKIN] create_generated_clock -name divclk -source [get_ports CLKIN] \ -divide_by 2 [get_pins DIVFF|regout] set_clock_groups -logically_exclusive -group {clkin} -group {divclk} (アルテラのTimeQuestでは、「-logically_exclusive」は「-exclusive」オプションになります)
同期回路では、あるクロックエッジから、次のクロック・エッジの間にデータの受け渡しが行われるのが原則です。タイミング解析ツールも自動的に、送信エッジの次のエッジを受信エッジとして、セットアップ解析を行います。2サイクル以上でデータの受け渡しを行う回路の場合には、解析するエッジの変更をツールに指示します。このために使うのがマルチサイクル制約です。
マルチサイクル制約の設定が必要となるのは、大きく分けて、次の2つの場合があります。
(1)送受信のクロック間に位相差がある場合
(2)クロック・イネーブルを使っている場合
(1)は図5に示すように、送信と受信のクロック位相に差がある場合です。設計者は時間(クロック周期+α)でのデータの受け渡しを意図していますが、ツールは時間(α)でデータの受け渡しが行われるものとして、タイミング解析を行います。
(2)は図6に示すように、クロック・イネーブルを使って、2サイクルをかけてデータ転送をしている場合です。設計者は2クロック周期でのデータの受け渡しを意図していますが、ツールは1クロック周期でデータの受け渡しが行われるものとして、タイミング解析を行います。
いずれの場合も、マルチサイクル制約を行うことで、ツールに設計者の意図を教える必要があります。2つの場合の違いは、ホールド解析エッジを変更する必要があるかどうかです。それぞれ、どのように制約を与えればいいかを次に説明します。
Copyright © ITmedia, Inc. All Rights Reserved.