■下位マクロへの電源供給

マクロの電源ポート(マクロ内の strap/rail 由来)への電源供給には、

●rail/strap を直接つなぐ




余計な ring が存在しないため、すっきりとしたレイアウトになるので、こちらの方が 良いのではないかと思う。 この方式を使うためには、マクロ内外で strap の幅、間隔を合わせる必要がある。 内外でちゃんと接続されるように、マクロを置く位置を調整するが、これが結構ずれやすい。 strap/rail がマクロ内外で合うように作ってあれば、strap/rail を引くときに 勝手にマクロ内とつながる。

実はそのままではうまくつながらない場合もある

マクロの strap/rail は VDD/VSS のポートで、Power/Ground の属性が設定されているのだが、 マクロ化するときにこの属性が上手く設定されない場合があるようだ。 その場合、マクロ外の電源と、マクロの非電源ポートを接続するわけにはいかない、 と Astro がおっしゃり接続してくれない。
# 勿論、Astro 上の属性だけの問題
# 手動で rail を伸ばして無理やりつなげたものを検証にかけたりしても、エラーは出ない
そこで、以下のコマンドでマクロの電源ポートの属性を設定する。
# 実はこれでも上手くいかないときがときたま発生する
# 原因が本当に不明
# マクロ作り直したりすると上手くいったり……
# 誰か原因教えて

●ring を介してつなぐ




まずマクロの周囲に ring を作り、 ring とマクロの電源ポートの接続は
axgPrerouteInstances
で行う。
こちらの方式の利点としては、 がある。 rail が存在しないメモリマクロや、高さのことなるスタセルを使いたい場合(PG化セルを使う等)は、 こちらの方式しか使えない。 しかし、rail がマクロ内外でずれる場合はやや面倒なことになる。

●rail がずれる場合

rail の間隔がずれる場合は様々な問題が起こる。 下図にマクロ内外で rail の間隔が異なる図をのせる。





rail が途中で切れるのは当然だが(良いことではないが、チップが動かなくなったりはしない)、 VDD と VSS のショートが問題。 そこで、下図のようにマクロには ring を介して電源を供給し、間隔の異なる rail の境界部 には blockage を張る。