[Altera][TSR] set_input_delay

2008/11/24FPGA::QuartusIIimport

[Altera][TSR] set_input_delay

Usage

set_input_delay [-add_delay] -clock <name> [-clock_fall] [-fall] [-max] [-min] [-reference_pin <name>] [-rise] [-source_latency_included] <delay> <targets>

Options

-add_delay
Add to existing delays instead of overriding them
-clock
Clock name
-clock_fall
Specifies that input delay is relative to the falling edge of the clock
-fall
Specifies the falling input delay at the port
-max
Applies value as maximum data arrival time
-min
Applies value as minimum data arrival time
-reference_pin
Specifies a port in the design to which the input delay is relative
-rise
Specifies the rising input delay at the port
-source_latency_included
Specifies that input delay includes added source latency
Time value
List of input port type objects

Description

"-clock"オプションで指定されたクロックを基準として,指定された入力ポートにおける,データが到着する時間を指定します.
"clock"は,デザイン内のclock nameを参照する必要があります.
入力遅延は,クロックの立上がりエッヂ(デフォルト)または立下りエッヂ(-clock_fall)を基準に,指定することができます.

もし,単純な生成されたクロック(1つのターゲットで生成されたクロック*1)について,入力遅延が指定されたならば,生成されたクロックへのクロック到着時間は,データ到着時間に加算されます.

入力遅延は,そのクロックネットワークにおけるポート("-reference_pin"で指定)を基準に指定することができます.ポートを基準としたクロック到着時間は,データ到着時間に加算されます.ポート基準pinがないのは,サポート外です.

入力遅延は常にクロック源のレイテンシを含むことができます.標準(デフォルト)では,クロック基準のクロック源レイテンシは,入力遅延に加算されます.しかし,"-source_latency_included"オプションが指定されたとき,入力遅延に含まれる(ことを指定することとなり)ため,クロック源レイテンシは加算されません.

役メモ:意味がわからんな.
▼データ・パスが入力ポートから内部レジスタの場合 ~ ホールド・スラック時間
として,以下の式が定義されている.

  クロックのセットアップ・スラック時間  =   データ所要時間  -  データ到着時間

ここで,右辺は以下のように定義される.
  データ所要時間  =  ラッチ・エッヂ + ディスティネーション・レジスタまでのクロック・ネットワーク遅延  -  μtSU
  データ到着時間  =  ラウンチ・エッヂ + ソース・レジスタまでのクロック・ネットワーク遅延 + ピンの最大入力遅延 + ピンからレジスタまでの遅延

ここでいう"ピンの最大入力遅延"が,本パラメータで指定する値となるのだろう.
synthesis時に,外部の信号遅延を加味して,論理合成されるので,データシートを参照しつつ,
基準に対して早い・遅いでinput delayを定義すると良いだろう.

最大入力遅延(オプション"-max")は,クロックセットアップやリカバリチェックに使われます.また,最小入力遅延(オプション"-min")は,クロックホールドやremoval checksに使われます.もし,与えられたポートに対して,"-min"または"-max"のいずれか一方のみ指定もしくは,どちらも指定がない場合には,同じ値が双方に使われます.

ポートにおける,立上がり(オプション"-rise"),立下り(オプション"-fall")の到着時間は別々に指定できます.もし,与えられたポートにおいて,いずれか一方が指定された場合には,同じ値が両方に使われます.

デフォルトでは,"set_input_delay"は,ポートに対する他のどのような入力遅延も排除します.ただし,同じ"-clock","-clock_fall","-reference_pin"の組み合わせを伴うものを除きます.

異なるクロック,クロックエッヂ,ピン基準の複数入力遅延は,"-add_delay"オプションを使うことで指定できます.

ターゲット"value"は,特定の型のコレクションを生成するのに使うwildcardのTcl list,または,TimeQuestextension置換規約(TimeQuestextension substitution rules)が必要です.
詳細は,"use_timequest_style_escaping"を参照ください.


Example

# Simple input delay with the same value for min/max and rise/fall:
# 1) set on ports with names of the form myin*
set_input_delay -clock clk 1.5 [get_ports myin*]

# 2) set on all input ports
set_input_delay -clock clk 1.5 [all_inputs]

# Input delay with respect to the falling edge of clock
set_input_delay -clock clk -clock_fall 1.5 [get_ports myin*]

# Input delays for different min/max and rise/fall combinations
set_input_delay -clock clk -max -rise 1.4 [get_ports myin*]
set_input_delay -clock clk -max -fall 1.5 [get_ports myin*]
set_input_delay -clock clk -min -rise 0.7 [get_ports myin*]
set_input_delay -clock clk -min -fall 0.8 [get_ports myin*]

# Adding multiple input delays with respect to more than one clock
set_input_delay -clock clkA -min 1.2 [get_ports myin*]
set_input_delay -clock clkA -max 1.8 [get_ports myin*]
set_input_delay -clock clkA -clock_fall 1.6 [get_ports myin*] -add_delay
set_input_delay -clock clkB -min 2.1 [get_ports myin*] -add_delay
set_input_delay -clock clkB -max 2.5 [get_ports myin*] -add_delay

# Specifying an input delay relative to an external clock output port
set_input_delay -clock clk -reference_pin [get_ports clkout] 0.8 [get_ports myin*]



*1 : 訳注:TimeQuestのreportでType:generatedと表示されている,PLLにより生成されたclockかな?

他参考資料

"hc_h51025_j.pdf" 6. HardCopy II デバイスのためのスクリプト・ベースのデザイン

チップ外部のソースから入力ピンまでの遅延を,定義済みのクロックを基準にして指定するのに使用されます. 引数は、遅延の基準クロックを指定します.引数は、デザインのトップレベルの入力信号であり、 は外部遅延です.外部遅延は、-clock_fall 引数が指定されていない場合、 の正(立ち上がり)エッヂから測定されます.

  • min 引数と-max引数は、 がそれぞれ最小外部遅延または最大外部遅延かどうかを指定するのに使用されます.

@IT内,MONOistの日本アルテラの中の人の記事

http://monoist.atmarkit.co.jp/fembedded/index/timing.html

ここを見て解決.このコンテンツのコメントは古いままですが,認識が間違ってました.基準をsource - destinationの間にとるような絵を考えていました...

リンク先にあるように,sourceよりもクロック源信側のノードを基準に考えるほうが自然ですね.

[Altera][TSR] set_multicycle_path

2008/11/24FPGA::QuartusIIimport

[Altera][TSR] set_multicycle_path

Usage

set_multicycle_path [-end] [-fall_from <names>] [-fall_to <names>] [-from <names>] [-hold] [-rise_from <names>] [-rise_to <names>] [-setup] [-start] [-through <names>] [-to <names>] <value>

Options

-end
Specifies that the multicycle is relative to the destination clock waveform (default)
-fall_from
Valid source clocks (string patterns are matched using Tcl string matching)
-fall_to
Valid destination clocks (string patterns are matched using Tcl string matching)
-from
Valid sources (string patterns are matched using Tcl string matching)
-hold
Specifies that the multicycle value applies to clock hold or removal checks
-rise_from
Valid source clocks (string patterns are matched using Tcl string matching)
-rise_to
Valid destination clocks (string patterns are matched using Tcl string matching)
-setup
Specifies that the multicycle value applies to clock setup or recovery checks (default)
-start
Specifies that the multicycle is relative to the source clock waveform
-through
Valid through nodes (string patterns are matched using Tcl string matching)
-to
Valid destinations (string patterns are matched using Tcl string matching)
Number of clock cycles

Description

与えられたpath(given path)のセットのために,multicycle例外を指定します.Multicyclesは,ソースclock("-start")またはデスティネーションclock("-end")によって,指定することができます.これは,ソースclockとデスティネーションclockとが,異なる周波数で動いているときに有用です.例えば,ソースclockがデスティネーションclockよりも2倍早い(半分の周期)であった場合,"-start multicycle"には2が要求されます.

Hold multicycle("-hold")は,setup multicycle("-setup")に対して(relative to)計算されます.hold multicycleの値は,デフォルトのhold multicycle から除外するクロックエッヂ数を再定義します.デフォルトhold multicycle はゼロです.

"-from"と"-to"の値は,デザイン内のclock・register・port・pin・cellのコレクションです."-from"または"-to"の値が指定されない場合,コレクションは自動的に"[get_keepers *]"に変換されます.

指定されないコレクションの片方が,クロックのコレクションである場合,クロックコレクションとして明示的に,この(省略された)コレクションを指定することは,より効果的であることに注意するべきです..(しかし,クロックのコレクションもまた,希望した設定を生成するのみであれば.)clock間で例外を適用することは,"-from clock"で駆動される全てのレジスタまたはポートから,"-to clock"で駆動される全てのレジスタまたはポートへの例外を適用します.

また,clockペア間で例外を適用することは,ノードからノードや,ノードからclock pathへ適用するより,より効果的です.

pin名やコレクションが使われた場合,"-from"の値はclock pin,かつ,"-to"の値はclockを除くレジスタへの入力pinでなければなりません."from clock pins"または"to and from cells"指定は,その"clock pin"で駆動される全てのレジスタか,cell内の全てのレジスタに適用されます.

"-through"値は,pinのコレクションまたはデザイン内のnetです.デザイン内の"through"で適用されたnodeは,throughで指定されたnodeにのみ適用されます.

"-rise_from"と"-fall_from"オプションは,"-from destination nodes"の代わりに使用できる.オプションの"rise"値または"fall"値は,"from"nodeが,clock path上で,どのような論理否定も考慮されたこのノードに入るクロックの立上りまたは立下りエッヂで駆動されることを示します.(clock入力端におけるエッヂを指定する,ということかな.clock出力端から見た値ではない,ということで.)"-from"オプションは,"from"ノードの,立上がりと立下りの組み合わせです.もし,"from"コレクションがclockコレクションの場合,その指定はクロックエッヂの立ち上りまたは立下りによって駆動される,それぞれのnodeに適用されます.

"-rise_to" と"-fall_to"オプションは,前述の"from"オプションと同様の振る舞いをします.これらの指定は,どんなclock pathに沿った論理否定も考慮に入れた"rise"値または"fall"値に関係したnodeやclockへの与えられた指定のみを制限します.

"-from","-to","-throughおよび似たようなオプションは,コレクションでも,特定の型のコレクションを作るためのワイルドカードのTcl listでもよい.使われた値は,標準のTclまたは,"TimeQuest-extension"置換規則が続かなければならない.

詳細は,"use_timequest_style_escaping"コマンドのヘルプを参照ください.


Example

create_clock -period 10.000 -name CLK [get_ports clk]
create_generated_clock -divide_by 2 -source [get_ports clk] -name CLKDIV2 [get_registers clkdiv]

# Apply a source multicycle of 2 with a hold multicycle of 1 for all
# paths from the CLK domain to the CLKDIV2 domain.
set_multicycle_path -start -setup -from [get_clocks CLK] -to [get_clocks CLKDIV2] 2
set_multicycle_path -start -hold -from [get_clocks CLK] -to [get_clocks CLKDIV2] 1

# Apply a multicycle constraint of 3 (with a default hold multicycle of
# 0) for a
# specific path in the design.
set_multicycle_path -end -setup -from [get_pins rega|clk] -to [get_pins regb|*] 3

# Apply a multicycle constraint of 2 to a given cell, except for the
# reset pin.
set_multicycle_path -end -setup -to [get_cells regb] 2
set_multicycle_path -end -setup -to [get_pins regb|aclr] 1

#Apply a multicycle constraint of 3 rising from a clock and falling to a
# node
set_multicycle_path -end -setup -rise_from [get_clocks CLK] -fall_to [get_pins regb|datab] 3

他参照

ホーム > サポート > デザイン・ソフトウェア > TimeQuestタイミングアナライザ > タイミング例外 > TimeQuest set_multicycle_path コマンド
http://www.altera.co.jp/support/software/timequest/exceptions/tq-multicycle-path.html



注意事項

英語力の弱い人が適当に訳しています.自分では意味がわかるようにとれたものと,そうでないものとがあります.概要理解の参考にしていただければ幸いですが,オリジナルの英文を参照されることを強く推奨いたします.

[Altera][TSR] set_false_path

2008/11/24FPGA::QuartusIIimport

[Altera][TSR] set_false_path

Usage

set_false_path [-fall_from <names>] [-fall_to <names>] [-from <names>] [-hold] [-rise_from <names>] [-rise_to <names>] [-setup] [-through <names>] [-to <names>]

Options

-fall_from
Valid source clocks (string patterns are matched using Tcl string matching)
-fall_to
Valid destination clocks (string patterns are matched using Tcl string matching)
-from
Valid sources (string patterns are matched using Tcl string matching)
-hold
Specifies the false_path value (applies only to clock hold or removal checks)
-rise_from
Valid source clocks (string patterns are matched using Tcl string matching)
-rise_to
Valid destination clocks (string patterns are matched using Tcl string matching)
-setup
Specifies the false_path value (applies only to clock setup or recovery checks)
-through
Valid through nodes (string patterns are matched using Tcl string matching)
-to
Valid destinations (string patterns are matched using Tcl string matching)

Description

"false-path"例外を指定し,タイミング解析から,pathを排除もしくはカットします.
"-from"と"-to"の値は,デザイン内のclock・register・port・pin・cellのコレクションです(収集したもの).
"-from"と"-to"の値が指定されないならば,コレクションは自動的に"[get_keepers *]"と変換されます.

以下のことに注意する価値があります.
指定されたコレクションの反対側がclockコレクションであるならば,clockコレクションも願った指定に生成される場合にだけ,clockコレクションだけとして明示的にこのコレクションを指定するのは,より効果的です.

It is worth noting that
 if the counterpart of the unspecified collection  is a clock collection,
   it is more efficient to explicitly specify this collection as a clock collection only if the clock collection also generates the desired assignment.
長すぎて切れない('A`

clock例外を適用すると,例外は全ての"-from clock"で与えられたportもしくはレジスタから,全ての"-to clock"で与えられたportもしくはレジスタに適用されます.
clockペアの例外を適用することは,node-clock間やnode-clock間よりも,効果的です.

pin名かコレクションが使われる場合,"-from"値はclock pinで,かつ,"-to"値はレジスタへのclock以外の入力pinである必要があります."clock pins"からの代入か,"cells"から|への代入は,(cell内または"clock pin"に駆動される)全てのレジスタに適用されます.*1

"-through"値は,デザイン内のpinかnetのコレクションです.

デザイン内のノードを通して適用された例外は,指定されたノードを通したpathにのみ適用されます.

"-rise_from"オプション と "-fall_from"オプションは,"-from destination nodes"の代わりに使えます.このオプションの"rise"か"fall"は,clock pathに沿ったどんな論理否定(inverse)も考慮にいれて,"from" nodeが,このnodeに入るclockの立上がりか立下りで駆動されることを示します.

"-from"オプションは,"from"nodeの立ち上がりと立下り両方の組み合わせです(意訳:両エッヂ指定となる?)."from"コレクションがclockコレクションであれば,その指定はそれぞれの立上がりまたは立下りclockエッヂによって駆動されるnodeへ適用します.

"-rise_to" と "-fall_to"は,前述の"from"オプションと同じようにふるまいます..これらの指定は,clock pathに沿ったどんな論理否定(inverse)も考慮にいれて,指定された"rise"/"fall"値に相当したclockかnodeにのみ,与えられた指定を,制限します.

"-setup"オプションと"-hold"オプションは,"setup/recovery"チェックか"hold/removal"チェックに相当することを適用されるだけために,"false path"を許容します.デフォルト(どちらの値も指定されない場合)は,"false path"に"-setup"/"-hold"の両方を適用します.

"-from"・"-to"・"-through"の値や,他の似たようなオプションは,コレクションか,特定の型のコレクションを生成するのに使うwildcardのTcl list,または,TimeQuestextension置換規約*2が必要です.
詳細は,"use_timequest_style_escaping"を参照ください.
また,情報として,"set_clock_groups"を参照ください.


Example

# Set a false-path between two unrelated clocks
# See also set_clock_groups
set_false_path -from [get_clocks clkA] -to [get_clocks clkB]

# Set a false-path for a specific path
set_false_path -from [get_pins regA|clk] -to [get_pins regB|aclr]

# Set a false-path from a node to a falling clock
set_false_path -from [get_pins regA|clk] -fall_to [get_clocks clkB]

*1 : 原文(文節があってるか怪しい):Assignments from clock pins or to and from cells applies to all registers in the cell or driven by the clock pin.

*2 : TimeQuestextension substitution rules

参考

http://www.fpga.co.jp/cbbs/cbbs.cgi?mode=al2&namber=2605&no=0&KLOG=3

"hc_h51025_j.pdf"の例

タイミング最適化または解析に含めることができないパスを記述する場合に使用されます。クラシック・タイミング・アナライザでは、フォルス・パスを制御する最も一般的なコマンドは、set_timing_cut_assignment コマンドです。




注意事項

英語力の弱い人が適当に訳しています.自分では意味がわかるようにとれたものと,そうでないものとがあります.概要理解の参考にしていただければ幸いですが,オリジナルの英文を参照されることを強く推奨いたします.

[Altera][TSR] get_ports

2008/11/24FPGA::QuartusIIimport

[Altera][TSR] get_ports

Usage

get_ports [-nocase] [-nowarn] <filter>

Options

-nocase
Specifies case-insensitive node name matching
-nowarn
Do not issue warnings messages about unmatched patterns
Valid destinations (string patterns are matched using Tcl string matching)

Description

デザイン内の,(design inputとoutput)portのコレクションを返します.

コレクションのフィルタは,ワイルドカードのTcl listであり,続いて標準TclまたはTimeQuestextension置換規約*1が必要です.
詳細は,"use_timequest_style_escaping"を参照ください.


Example

project_open chiptrip
create_timing_netlist
# Get all ports starting with "In".
set ports [get_ports In*]
foreach_in_collection port $ports {
  puts [get_port_info -name $port]
}
delete_timing_netlist
project_close


*1 : TimeQuestextension substitution rules

注意事項

英語力の弱い人が適当に訳しています.自分では意味がわかるようにとれたものと,そうでないものとがあります.概要理解の参考にしていただければ幸いですが,オリジナルの英文を参照されることを強く推奨いたします.

[Altera][TSR] get_clocks

2008/11/24FPGA::QuartusIIimport

[Altera][TSR] get_clocks

Usage

get_clocks [-nocase] [-nowarn] <filter>

Options

-nocase
Specifies the matching of node names to be case-insensitive
-nowarn
Do not issue warnings messages about unmatched patterns
Valid destinations (string patterns are matched using Tcl string matching)

Description

デザイン内のclockのコレクションを返します.
他のコマンドの引数として使うとき(例えば,"set_multicycle_path"のオプション"-from"か"-to"のような),そのclock内の各ノードは,コレクション内のclocksによって駆動される全てのノードを意味します.

# The following multicycle constraint applies to all paths ending at registers
# driven by clk
set_multicycle_path -to [get_clocks clk] 2

コレクションのフィルタは,ワイルドカードのTcl listであり,続いて標準TclまたはTimeQuestextension置換規約*1が必要です.
詳細は,"use_timequest_style_escaping"を参照ください.


Example

project_open chiptrip
create_timing_netlist
read_sdc
update_timing_netlist
set clocks [get_clocks c* -nocase]
foreach_in_collection clk $clocks {
  set name [get_clock_info -name $clk]
  set period [get_clock_info -period $clk]
  puts "$name: $period"
}
delete_timing_netlist
project_close


*1 : TimeQuestextension substitution rules

注意事項

英語力の弱い人が適当に訳しています.自分では意味がわかるようにとれたものと,そうでないものとがあります.概要理解の参考にしていただければ幸いですが,オリジナルの英文を参照されることを強く推奨いたします.