■Antenna error 対策

●Antenna error とは

教科書読まんとわからんよ????





メタルの積層構造は、基本的に下層から作ってきます。
このとき、一定以上のメタルがゲートにつながるとマズーなのです。
どうも製造行程でメタルに電荷が溜まったりするらしく、一定以上の電荷が 蓄積し、それがゲートに一気に流れるとゲートが破壊される場合があるため だそうです。










紫のメタルまでを作ったときまでは大丈夫だが、水色のメタルを作った段階で 許容以上のメタルがゲートにつながり Antenna error になった例。


では、以下の例ではどうだろうか?






黄色のメタルが長く、ここに溜まった電荷がゲートへ流れると Antenna error になるとする。
下層からメタルを作っていくと、










紫のメタルを作った段階で、黄色のメタルのはゲートではなく出力側につながる。 そのため、ゲートの Antenna error チェックにはこの黄色のメタルは使われず、 この例は Antenna error ではない。

配線長が長くなるほど Antenna error は発生しやすいと言えるが、どのような 配線層を使っているかが大きく関係する。

●解決策 1: 配線層の変更

昔行っていた手法。 どちらかの手法で上の OK な例になるように配線を変更する作戦である。 なるべくゲートの近くで高い配線層を経由するように配線すれば良い訳である。 しかし時間がかかりすぎたり(特にルートガイドを利用した場合)、 出力側の近くでも高い配線層を使ってたりするとカスタマイズが困難になるので お勧めしない。

●解決策 2: ダイオードの挿入

ダイオードを以下のように挿入する。






すると、緑以上のメタルからくる電荷はダイオードの方を流れることになるため、 ゲートが破壊されるかどうかに関係するメタルは点線部分だけになり、Antenna error ではなくなる。

●マクロ内での Antenna error への対処

Astro であれば axgInsertDiode というコマンドで自動的に Antenna error が 消えるようにダイオードを挿入してくれる。 そもそも、ある程度は Antenna error がでないように、 Astro は最適化の段階で 配線層を変えたりしている。 (ここで Anttena 関係の設定をした場合)

●マクロをまたぐ Antenna error への対処

マクロ内だけでみれば Antenna error ではないけども、入力につながる マクロ外の配線によって Antenna error が起きるケース。 Astro では自動で上手く直す手段はないのではないかと思う。 以下、いくつか試した対処法を書く。

手作業で 1 つ 1 つ diode を入れる

マクロを跨いだ Antenna error は Astro 上では検知できない。 calibre で検証を行うと発見される error に対し、以下の要領で diode を挿入する (なお、他にも色々挿入する手法は考えられる)。
diode を適切な位置に挿入するとしたが、上図のような位置関係に diode を 入れれば良い。
下図のように diode を配置しても意味はないので注意 (むしろまずくなってる)。






ネットリストの段階で diode を入れる

手作業で 1 つ 1 つ diode を入れる、は Antenna error の数が少ない場合に適している。 しかし、例えば SMA のように入力ポート数が非常に多く、かつ入力配線も非常に長くて Antenna error が多発するような場合には全部を手修正するのは時間がかかりすぎる。 そこで、最初に読み込ませるネットリストの段階で、マクロの入力信号に diode を入れる。 (ただし、余分な diode は入ることになる)



問題点

このネットリストをそのまま auto place すると、上にあるだめな diode の挿入例 な事態が多発する。 そこで、blockage/route guide を駆使する、diode を挿入する位置を指定するなど マクロ毎に diode 挿入をカスタマイズする必要がある。






入力ポート近くに、横一列に diode を配置、また diode を含む入力近くには blockage も作り、スタセルは侵入しないようにした例。
すると、入力ポート -> diode -> スタセルという順番になるので、Antenna error は出にくくなる。
dbSetCellInstPlacement で diode を配置し、aprCmdFixCell で diode で FIX 属性をつける(auto place 時に diode を最移動させないために FIX)。
池淵分に関しては、
/home/hlab/ikebuchi/wasmii3/sma/astro/scripts/floorplan
/home/hlab/ikebuchi/wasmii3/sma/astro/scripts/
に色々置いてある。
この手法を上手くカスタマイズすれば、ほぼ Antenna error は消えるが、 error が残ることはあるので、その場合は手で diode を挿入する。

マクロの入力ポートに細工する

そもそもスタセルで Antenne error が起きるかは、
./scripts/antenna_rule.sc
/home/vdec/lib/fujitsu65/milky/data/CS202SZ/clf/defineAntennaArea.clf
を基に計算される。
後者は、Milkyway ライブラリに設定するものだが、中身を少し覗くと のように、各スタセルのゲートの大きさなどが定義されている。 ゲートの大きさの X 倍以上のメタルが配線されると、Antenna error のように計算される。 そこで、スタセルだけでなくマクロの入力ポートに対しても、上記 clf ファイルを用意し、 適切にゲートサイズなどを設定する(実際にはマクロの入力にゲートなんかない)。 すると、マクロの入力ポートに対してもスタセルと同様に Antenna error を計算できるように なる。

実際に試して error 自体は減ったが、適切なゲートサイズをどうするべきかが難しいため (そもそも単位をどれくらいにするべきか、内部のレイアウト構造によって変えるべきでもあるし)、 上で述べた 2 つを使用することを勧める。