set_max_delay
および set_min_delay
コマンドでは、ほかの XDC 制約とは異なり、-from
および -to
オプションを使用する場合に、それぞれに無効の始点および終点のリストを使用できます。
無効な始点を指定した場合、そのノードが有効な始点となるようにするため、タイミングはそのノードを介して伝搬されなくなります。
次の例では、有効な始点は FD1/C のみです。
set_max_delay 5 -from [get_pins FD1/C]
FD1/Q に制約が適用されると、Q ピンを有効な始点にするため、タイミングはアーク C->Q を介して伝搬されなくなります。
set_max_delay 5 -from [get_pins FD1/Q]
有効な始点を作成するためにタイミングの伝搬を停止するプロセスは、パス分割と呼ばれます。パス分割は、最大および最小遅延解析の両方に影響します。パス分割は、それらのノード (FD1/C および FD1/Q) を介するタイミング制約にも影響します。
パスが分割された場合、パスにデフォルトのホールド要件はありません。-datapath_only
オプションが指定されていない場合は、必要であれば set_min_delay
コマンドを使用してパスにホールド要件を設定します。
こうしたリスクがあるため、パス分割が発生するとクリティカル警告メッセージが表示されます。
クロック スキューを考慮しないようにするため出力 FD1/Q を始点とする場合、AMDでは -datapath_only
オプションを使用することを勧めしています。次に例を示します。
set_max_delay 5 -from [get_pins FD1/C] -datapath_only
同様に、有効でない終点を指定した場合、そのノードが有効な終点となるように、タイミングはそのノードの後には伝搬されなくなります。
次の例では、無効な終点である LUTA/O に最大遅延が指定されています。
set_max_delay 5 -from [get_pins LUTA/O]
これを次の図に示します。
LUTA/O を有効な終点にするため、タイミングは LUTA/O の後には伝搬されなくなります。この結果、LUTA/O を通過するすべてのタイミング パスのセットアップおよびホールドが影響を受けます。REGA/C から LUTA/O までのパスに対しては、ソース クロックの挿入遅延のみが考慮されるので、スキューが大きくなる可能性があります。
パス分割によりタイミングがタイミング アークを介して伝搬されなくなるので、予期しない結果を招く可能性があります。これらのノードを通過するすべてのタイミング パスが影響を受けます。
次の例では、LUTA/O と REGB/D との間に最大遅延が設定されています。
set_max_delay 6 -from [get_pins LUTA/O] -to [get_pins REGB/D]
これを次の図に示します。
LUTA/O は有効な始点ではないため、パスが分割され、LUTA/I* および LUTA/OLUTA/O からのタイミング アークが切断されます。set_max_delay
制約は LUTA/O と REGB/D の間にのみ設定されていますが、REGA/C と REGC/D との間のパスなど、ほかのパスも分割されます。