ネットリストのオブジェクト
ここからSDCフォーマットのタイミング制約の書き方を説明する。
◇
SDCはTCL(Tool Command Language)の一種なので、TCLに共通な書き方にしたがう。
#で始まる行はコメント行 [ ] 括弧内のコマンドが返す値を示す、またはVerilogと同様にベクタ変数のビット範囲を示す { } 括弧内の[ ]の意味を無効にする(例 {a[7:0]})、または複数の文字列をくくる set 変数名 値 変数に値を代入する $変数名 変数の値を示す [expr 式] 式の値を計算して返す |
◇◇
SDCフォーマットでは、ネットリスト中の要素は次のようなオブジェクトとして定義される。
オブジェクト |
説明 |
port |
トップモジュールの端子。RTL記述のポート名と同じになる。 |
cell |
インスタンス(下位モジュール,FF,RAM,LUT,IOバッファ等) |
pin |
インスタンスの端子。 |
net |
端子間をつなぐ信号線。 |
clock |
クロック。入力portまたは出力pinから生成される仮想的なオブジェクト。 |
register |
cellのうち順序回路であるもの(FF,RAM等) |
◇◇◇
オブジェクト名は配置配線後のネットリスト中の名称であり、RTL記述の名称と必ずしも一致しないので、ツールでネットリストを開いて検索する必要がある。例えばモジュール(mod1)内のFF(a_reg)のQピンであれば次のようになっている。
Quartusの場合: mod1|a_reg|Q Vivadoの場合: mod1/a_reg/Q |
階層区切り文字はツールによって異なっているが、ユーザが指定することもできる。
オブジェクト名を直接書く代わりに、次のようにコマンドでオブジェクト名を抽出させる書き方もできる。この方がオブジェクトの種類が明確になるのでよい。
[getコマンド {パターン1 パターン2 ...}] ・getコマンドはパターンに一致するオブジェクト名の集まりを返す。 get_cells,get_clocks,get_nets,get_ports,get_pins ・パターンは文字列であり、ワイルドカード(*,?)が使える(get_clocksでは使えない) [allコマンド] ・allコマンドはall_clocks,all_inputs,all_outputs,all_registersがあり、 それぞれ全てのクロック、入力ポート、出力ポート、順序回路セルのオブジェクト名を返す。 |