TimeQuest タイミング・アナライザは、クロック分周やリップル・クロックを扱うことができます。また、マスタクロックなどの基準クロックから、クロック属性を変更させる回路も考慮させることができます。その場合、クロック属性を変更させる回路の出力は、ジェネレーテッド・クロック(create_generated_clock)として定義する必要があります。 この定義により、TimeQuest タイミング・アナライザはこれらのクロックを解析し、関連するクロック・ネットワーク・レイテンシに対応することができます。
create_generated_clock コマンドを使用して、ジェネレーテッド・クロックを作成することができます。 以下のリストに、create_generated_clock コマンドと利用可能なオプションを示します。
create_generated_clock [-name <clock name>] -source <master pin> [-edges <edge list>] [-edge_shift <shift list>] [-divide_by <factor>] [-multiply_by <factor>] [-duty_cycle <percent>] [-add] [-invert] [-master_clock <clock>] [-phase <phase>] [-offset <offset>] <source objects>
表 1 に create_generated_clock コマンドのオプションの説明を示します。
| 表 1. create_generated_clock コマンドのオプションの説明 | |
| オプション | 説明 |
|---|---|
-name <clock name> |
例えば、clk_x2 のような、ジェネレーテッド・クロックの名前。クロック名を指定しない場合、クロック名は割り当てられている最初のノードと同じになります。 |
-source <master pin> |
<master pin> は、クロック設定のソースとなるクロックのノードを指定します。 |
-edges <edge list> |-edge_shift <shift list> |
-edges オプションは、マスタ・クロックの立ち上がりエッジおよび立ち下がりエッジに対して新しい立ち上がりエッジおよび立ち下がりエッジを指定します。 マスタ・クロックの立ち上がりエッジおよび立ち下がりエッジは、最初の立ち上がりエッジから開始して 1..<n> のように順番に番号が付けられます(例 :edge 1)。 このエッジの後の最初の立ち下がりエッジは、エッジ番号 2、次の立ち上がりエッジは番号 3 というようになります。 <edge list> は小さい順に並んでいる必要があります。 同じエッジを 2 つのエントリに使用して、元の波形のデューティ・サイクルに関係ないクロック・パルスを示すことができます。edge_shift は、<edge list> 内の各エッジに対するシフト量を指定します。 -invert オプションは、-edges および -edge_shifts が適用された後でクロックを反転させるのに使用できます。(1) |
-divide_by <factor> | -multiply_by <factor> |
divide_by および multiply_by に続く数値は係数で、クロックの最初の立ち上がりエッジに基づき、指定された係数によって、波形を拡張または縮小させることができます。例えば、-divide_by 2 は -edges {1 3 5} と同じです。逓倍されたクロックの場合、デューティ・サイクルを指定することもできます。TimeQuest アナライザは、乗算および除算係数の同時指定をサポートします。 |
-duty_cycle <percent> |
ジェネレーテッド・クロックのデューティ・サイクルを指定します。デューティ・サイクルは最後に適用されます。 |
-add |
同じピンに対して 2クロック以上を指定できます。 |
-invert |
反転は、デューティ・サイクルを除いて、他のすべての変更が適用された後のクロックの出力に適用されます。 |
-master_clock <clock> |
master_clock は、マスタ・ピンにマルチプレクスされたクロックが存在する場合に使用されます。 |
-phase <phase> |
ジェネレーテッド・クロックの位相を指定します。 |
-offset <offset> |
ジェネレーテッド・クロックのオフセットを指定します。 |
<source objects> |
アサインメントが適用されるポートまたはピンを指定します。 |
注 :
- TimeQuest アナライザは、エッジ・リストの最大 3つのエッジをサポートします。
ソース・レイテンシは、(必ずしもマスタ・ピンではなく)マスタ・クロックからのクロック・ネットワークの遅延に基づきます。 set_clock_latency -source コマンドを使用して、ソース・レイテンシを上書きすることができます。
図 1 に、10 ns クロックに基づき反転したジェネレーテッド・クロックを作成する以下の SDC コマンドの波形を示します。
create_clock -period 10 [get_ports clk]
create_generated_clock -divide_by 1 -invert -source [get_registers clk] \
[get_registers gen|clkreg]
図 1. 反転クロックの生成

図 2 に -edges および -edge_shift オプションを使用した生成済みクロックを変更する以下の SDC コマンドの波形を示します。
create_clock -period 10 -waveform { 0 5 } [get_ports clk]
# 2 分周クロックを生成する。
create_generated_clock -source [get_ports clk] -edges { 1 3 5 } \
[get_registers clkdivA|clkreg]
# マスタ・クロックのデューティ・サイクル(現在 50%)に関係なく 2 分周クロックを生成する。
create_generated_clock -source [get_ports clk] -edges { 1 1 5 } -edge_shift 0 5 0 } \
[get_registers clkdivB|clkreg]
図 2. ジェネレーテッド・クロックのエッジおよびエッジ・シフト

図 3 にジェネレーテッド・クロックに対する -multiply オプションの影響を示す以下の SDC コマンドの波形を示します。
create_clock -period 10 -waveform { 0 5 } [get_ports clk]
# 2 倍クロックを生成する。
create_generated_clock -source [get_ports clk] -multiply_by 2 \
[get_registers clkmult|clkreg]
図 3. ジェネレーテッド・クロックの逓倍

関連リンク
- オンライン・トレーニング (英語)
- TimeQuest タイミング・アナライザ 操作チュートリアル (英語)
