このドキュメントの新しいバージョンが利用できます。お客様は次のことを行ってください。 こちらをクリック 最新バージョンに移行する。
5.6.5.8.3. 自動レジスター複製:階層的近接
set_instance_assignment -name DUPLICATE_HIERARCHY_DEPTH -to <register_name> <num_levels>
ここで、
- register_nameは、複数の階層にファンアウトするチェーンの最後のレジスターです。 レジスターツリーを作成するには、ノードの背後に十分な単純なレジスターがあり、それらの単純なレジスターが自動的にツリーに取り込まれるようにします。
- num_levelsは、階層を下に複製するために使用する、チェーンに存在するレジスター数の上限に対応します。
DUPLICATE_HIERARCHY_DEPTHX割り当ては、合成段階で処理されます。 ファンアウトの大きい信号は、レジスターのパイプラインを通過してモジュールのサブ階層にドライブするのが一般的です。 たとえば、システム全体のリセットを数クロックサイクルにわたって伝播させ、デザイン全体の多くのモジュールに駆動することができます。 いくつかのシナリオでは、このサブ階層の構造を利用して、作成されるレジスターツリーの構造を推測すると、類似した階層内のエンドポイントに同じ信号のコピーが割り当てられ、デザイン内で分岐するようになります。 階層は、レジスターツリーのどこに分岐を配置するかを決定します。
チェーン内のレジスターは、複製に含まれる次の条件をすべて満たしている必要があります。
- レジスターは、別のレジスターによってのみ供給される必要があります。
- レジスターは、組み合わせロジックによって供給されてはなりません。
- レジスターはシンクロナイザー・チェーンの一部であってはなりません。
- レジスターに2次信号があってはなりません。
- レジスターには、preserve属性またはPRESERVE_REGISTER割り当てを含めることはできません。
- 最後のレジスターを除くチェーン内のすべてのレジスターは、ファンアウトを1つだけ持つ必要があります。
レジスターチェーンとそれが駆動するエンドポイントの階層構造を持つネットリストの次の例の図を考えてみます。 DUPLICATE_HIERARCHY_DEPTH割り当ては、図 35に示すように、階層全体でパイプラインレジスターを複製します。
この場合、regZは4つのレジスターのチェーンのエンドポイントであるため、適切な割り当てターゲットです。この例では最大3つの複製候補(regZ 、 regY、およびregX)があるため、割り当て値は1〜3のいずれかにすることができます。regAは、その前のパスのタイミングと最適化を維持するために階層に取り込まれません。DUPLICATE_HIERARCHY_DEPTH割り当ては、信号を100を超える複製に複製する必要があり、チェーンの下のサブ階層が深く、必要なツリーの構造をガイドするのに十分な意味がある場合に最適に使用されます。
num_levelsが1に設定されている場合、唯一regZ、チェーンの引き出しとそのファンアウトツリー内の階層レベル押し下げられます。
num_levelsを2に設定すると、 regYとregZの両方がチェーンから引き出されます。regZは最大の階層の深さ2で終わり、 regYは階層の深さ1で終わります。
num_levelsが3に設定されている場合、3つすべてのレジスター(regZ regY、およびregZ)がチェーンから引き出され、それぞれ3、2 、および1レベルの最大階層深度にプッシュされます。
合成レポートのHierarchical Tree Duplication Summaryパネルには、DUPLICATE_HIERARCHY_DEPTH割り当てで指定されたレジスターに関する情報が表示されます。また、割り当てをさらに改善するための開始点として使用できるチェーンの長さの理由も含まれています。合成レポートには、Hierarchical Tree Duplication Detailsというパネルがあり、実装された複製の構造をよりよく理解するために使用できるチェーン内の個々のレジスターに関する情報を提供します。