[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

注意事項

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

[Altera][TSR] get_keepers

2008/11/24FPGA::QuartusIIimport

[Altera][TSR] get_keepers

Usage

get_keepers [-no_duplicates] [-nocase] [-nowarn] <filter>

Options

-no_duplicates
Do not match duplicated keeper names
-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

デザイン内の,非組み合わせ(non-combinational)か"keeper"nodeのコレクションを返します.
デフォルトのマッチングスキームでは,指定されたフィルタにマッチする名称の非組み合わせnodeのみではなく,"keepers"によって複製された非組み合わせnodeも返します.(Quatusによって,"keepers"から自動的に生成された"cell"を参照)

複製された"keepers"を除くためには,"-no_duplicates"オプションを使用してください.

コレクションのためのフィルタには,特定の型のコレクションを生成するのに使うwildcardのTcl list,または,TimeQuestextension置換規約*1が必要です.
詳細は,"use_timequest_style_escaping"を参照ください.


Example

project_open chiptrip
create_timimg_netlist
set kprs [get_keepers *reg*]
foreach_in_collection kpr $kprs {
  puts [get_object_info -name $kpr]
}
delete_timing_netlist
project_close


*1 : TimeQuestextension substitution rules

注意事項

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

[Altera][TSR] set_clock_groups

2008/11/24FPGA::QuartusIIimport

[Altera][TSR] set_clock_groups

Usage

set_clock_groups [-asynchronous] [-exclusive] -group <names>

Options

-asynchronous
Specify mutually exclusive clocks (same as the -exclusive option). Exists for compatibility.
-exclusive
Specify mutually exclusive clocks
-group
Valid destinations (string patterns are matched using Tcl string matching)

Description

"Clock groups"は,どのclockが関連しないかを指定するのに早くて便利な方法を提供します.Clock groups provide a quick and convenient way to specify which clocks are not related.

非同期clockは,完全に関係のないものです*1.(例えば,独立した異なるclock源を持つとき)

排他的なclock,同時にはactiveにならないものです*1.(例えば,multiplexされたclock)

TimeQuestは,まるでそれらが同じであるかのように,どちらのオプションも扱います("-exclusive" , "-asynchronous").

"set_clock_groups"の結果は,どんなgroup内の全てのclockも,他の各group内のclock全てから遮断(cut)されます.このコマンドは,全部のgroupの各clockから,他のgroupの各clockへ"set_false_path"を呼び出すのと等価です.clockドメインを切り離す指定を容易にするため,"set_clock_groups"を作りました(?).

単品の"-group"オプションを使うことは,TimeQuestに,"デザイン内のほかの全てのclockから,このgroupを切り離せ"と伝えます.


Example

project_open top
create_timing_netlist
create_clock -period 10.000 -name clkA [get_ports sysclk[0]]
create_clock -period 10.000 -name clkB [get_ports sysclk[1]]

# Set clkA and clkB to be mutually exclusive clocks.
set_clock_groups -exclusive -group {clkA} -group {clkB}

# The previous line is equivalent to the following two commands.
set_false_path -from [get_clocks clkA] -to [get_clocks clkB]
set_false_path -from [get_clocks clkB] -to [get_clocks clkA]

*1 : テキトウ.例文で把握されたし.