タイミング・アナライザー作成で生成されたクロックコマンド

author-image

投稿者:

タイミングアナライザーは、クロック・ディバイダー、リップルクロック、または受信入力クロックやホストクロックの特性を変更または変更する回路を生成クロックとみなします。これらの回路の出力を生成クロックとして定義する必要があります。この定義により、タイミング・アナライザーはこれらのクロックを分析し、それらに関連するネットワーク・レイテンシーを考慮できます。

生成クロックを作成するには、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 コマンドのオプションを示します。

ソース・レイテンシーは、ホストクロックからのクロック・ネットワークの遅延に基づきます (ホストピンとは限りません)。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]

図 1.反転クロックの生成

図 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]

図 2.生成されたクロックのエッジとエッジシフト

図 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]

図 3.生成されたクロックの逓倍