タイミングアナライザーは、クロック・ディバイダー、リップルクロック、または受信入力クロックやホストクロックの特性を変更または変更する回路を生成クロックとみなします。これらの回路の出力を生成クロックとして定義する必要があります。この定義により、タイミング・アナライザーはこれらのクロックを分析し、それらに関連するネットワーク・レイテンシーを考慮できます。
生成クロックを作成するには、create_generated_clock コマンドを使用します。以下のリストに、create_generated_clock コマンドと使用可能なオプションを示します。
create_generated_clock [-name <クロック名>] -source <ホストピン> [-edges <エッジリスト>] [-edge_shift <シフトリスト>] [-divide_by <係数>] [-multiply_by <係数>] [-duty_cycle <パーセント>] [-add] [-invert] [-host_clock <クロック>] [-phase <フェーズ>] [-offset <オフセット>] <ソースオブジェクト>
表 1 に create_generated_clock コマンドのオプションを示します。
表 1.create_generated_clock コマンドのオプションの説明
オプション | 詳細 |
---|---|
-name <クロック名> | 生成されたクロックの名前 (例: clk_x2)。クロック名を指定しない場合、クロック名はそれが割り当てられた最初のノードと同じになります。 |
-source <ホストピン> | <ホストピン> には、クロック設定の元となるデザインのノードを指定します。 |
-edges <エッジリスト> |-edge_shift <シフトリスト> | -edges オプションは、ホストクロックの立ち上がりと立ち下がりのエッジを基準にして、新しい立ち上がりと立ち下がりのエッジを指定します。ホストクロックの立ち上がりと立ち下がりのエッジには、最初の立ち上がりエッジから順に 1..<n> の番号が付けられます (例: エッジ 1)。その次の最初の立ち下がりエッジがエッジナンバー 2、次が立ち上がりエッジナンバー 3、という具合です。<エッジリスト> は、昇順でなければなりません。同じエッジを 2 つのエントリーに使用することで、元の波形のデューティー・サイクルに依存しないクロックパルスを示すことができます。edge_shift は、<エッジリスト> 内の各エッジのシフト量を指定します。-invert オプションを使用すると、-edges および -edge_shift を適用した後にクロックを反転させることができます。 |
-divide_by <係数> | -multiply_by <係数> | divide_by および multiply_by 係数は、クロックの最初の立ち上がりエッジを基準とし、指定された係数で波形を拡張または収縮させます。例えば、-divide_by 2 は -edges {1 3 5} と等価です。逓倍化されたクロックの場合、デューティー・サイクルを指定することもできます。タイミング・アナライザーでは、乗算係数と除算係数を同時に指定できます。 |
-duty_cycle <パーセント> | 生成されるクロックのデューティー・サイクルを指定します。デューティー・サイクルは最後に適用されます。 |
-add | 同一のピンに複数のクロックを指定できます。 |
-invert | 反転は、デューティー・サイクルを除く他のすべての修正が適用された後、クロックの出力で適用されます。 |
-host_clock <クロック> | ホストピンに複数のクロックが存在する場合、host_clock を使ってクロックを指定します。 |
-phase <フェーズ> | 生成されるクロックのフェーズを指定します。 |
-offset <オフセット> | 生成されるクロックのオフセットを指定します。 |
<ソース・オブジェクト> | アサインメントを適用するポートまたはピンを指定します。 |
ソース・レイテンシーは、ホストクロックからのクロック・ネットワークの遅延に基づきます (ホストピンとは限りません)。set_clock_latency -source コマンドを使ってソース・レイテンシーを上書きできます。
図 1 に示すのは、以下の SDC コマンドの波形で、10ns のクロックをベースに反転した生成クロックを作成します。
create_clock -period 10 [get_ports clk] create_generated_clock -divide_by 1 -invert -source [get_registers clk] \ [get_registers gen|clkreg]
図 2 に示すのは、以下の SDC コマンドの波形で、-edges および -edge_shift オプションを使用して生成クロックを変更します。
create_clock -period 10 -waveform { 0 5 } [get_ports clk] # Creates a divide-by-2 clock create_generated_clock -source [get_ports clk] -edges { 1 3 5 } \ [get_registers clkdivA|clkreg] # Creates a divide-by-2 clock independent of the host clock's duty cycle now 50%) create_generated_clock -source [get_ports clk] -edges { 1 1 5 } -edge_shift 0 5 0 } \ [get_registers clkdivB|clkreg]
図 3 は以下の SDC コマンドの波形で、-multiply オプションが生成クロックに与える影響を示します。
create_clock -period 10 -waveform { 0 5 } [get_ports clk] # Creates a multiply-by-2 clock create_generated_clock -source [get_ports clk] -multiply_by 2 \ [get_registers clkmult|clkreg]