タイミング・アナライザー・クロック・イネーブル・マルチサイクル

author-image

投稿者:

Synopsys* Design Constraint (SDC) の set_multicycle_path および get_fanouts コマンドを使用して、イネーブルレジスターに基づくマルチサイクル例外を作成できます。

図 1 は、各レジスター din_a_reg[7..0]、din_b_reg[7..0]、din_x_reg[7..0]、din_y_reg[7..0]、a_times_b、x_times_y 用のレジスタード・イネーブルド信号を作成するのに、レジスター enable_reg を使用するシンプルな回路を示しています。

図 1.シンプルなレジスタード・イネーブル・デザイン。

イネーブルレジスター enable_reg は、イネーブルパルスを生成します。これはレジスターのクロック周期の 2 倍で、このため、正確な解析のためマルチサイクル例外を適用する必要があります。レジスター enable_reg がフィードするイネーブル駆動のレジスターに、マルチサイクル設定 2、およびマルチサイクル・ホールド 1 を適用する必要があります。マルチサイクル例外は、デスティネーション・レジスターが enable_reg により制御される、レジスター間パスにのみ適用されます。

これを実行するため、すべてのイネーブル駆動レジスターに set_multicycle_path 例外を適用できます。この方法は一般に退屈になりがちです。すべてのイネーブル駆動レジスターを指定する必要があるからです。代わりに、set_multicycle_path および get_fanouts を組み合わせて、以下のように使用できます。

# 2 のマルチサイクルをイネーブルド駆動デスティネーション・レジスターにセットアップ

set_multicycle_path 2 -to [get_fanouts [get_pins enable_reg|q*] \

-through [get_pins -hierarchical *|*ena*]] -end -setup

# 1 のマルチサイクルをイネーブルド駆動デスティネーション・レジスターにホールド

set_multicycle_path 1 -to [get_fanouts [get_pins enable_reg|q*] \

-through [get_pins -hierarchical *|*ena*]] -end –hold

set_multicycle_path 例外のターゲットは、レジスターのイネーブルポートにフィードする、レジスター reg_en のすべてのファンアウトに限定されます。これは、以下のオプションにより実行します。

[get_fanouts [get_pins enable_reg|q*] -through [get_pins -hierarchical *|*ena*]]

表 1 は、マルチサイクル例外を適用した後、デザイン内にあるすべてのイネーブル駆動レジスター間パスの、新しいセットアップおよびホールドのリレーションシップを示しています。

表 1 では、レジスター enable_reg で始まり、任意のイネーブル駆動レジスターで終了する、セットアップのリレーションシップは 2、ホールドのリレーションシップは 1 であることに注目してください。これらのパスがセットアップおよびホールドのリレーションシップ変更を必要としない場合、以下のマルチサイクル例外を適用して、元のリレーションシップを適用できます。

set_multicycle_path 1 -from [get_pins enable_reg|q*] –end -setup

set_multicycle_path 0 -from [get_pins enable_reg|q*] –end –hold

回路例 clock_enable_multicycle.qar をダウンロード。