AllianceのScalable CMOS Libraryによるチップ試作の

Alliance の Scalable CMOS Library によるチップ試作の研究
東海大学 工学部 通信工学科
石黒 健史
指導教員
清水尚彦 助教授
2003 年 3 月 29 日
3
目次
第 1 章 概要
5
第 2 章 本ドキュメントに関して
7
7
7
2.1
2.2
ドキュメントについて . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
ドキュメントの表記
第 3 章 関連用語
3.1
3.2
3.3
3.4
.
.
.
.
9
9
9
10
11
Alliance HP の解説 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Alliance のダウンロード,インストール . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Alliance のディレクトリ構成 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
13
13
14
14
.
プログラム .
拡張子 . . . .
s2r 関連 . . .
組織,団体
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
第 4 章 Alliance Ver.4.0.6 の Download,Install
4.1
4.2
4.3
第 5 章 Alliance4.0.6 のチュートリアル
.
.
.
.
.
.
17
17
18
18
21
22
22
23
6.1
概要 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
27
27
6.2
6.3
仮想配置の関連マニュアル . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Graal の使用方法 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
27
28
6.4
6.5
.ap ファイルのトレース . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
宣言の種類 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
30
31
6.5.1
V : Version . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
32
6.5.2
6.5.3
H : Header . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
A : Abutment Box . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
32
32
6.5.4
6.5.5
S : Segment . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
C : Connector . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
36
40
6.5.6
6.5.7
I : Instance . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
R : Reference . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
42
49
6.5.8 V: . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Graal の使用方法 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
51
53
6.6.1
53
5.1
5.2
5.3
5.4
5.5
5.6
5.7
環境変数の設定 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
VHDL のソースコードを記述
SCMAP . . . . . . . . . . . .
SCR . . . . . . . . . . . . . .
Graal . . . . . . . . . . . . .
s2r . . . . . . . . . . . . . . .
Dreal . . . . . . . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
第 6 章 仮想配置
6.6
Graal を使用したレイアウト描画 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4
6.6.2
6.6.3
6.6.4
レイアウトの修正 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
デザインルールチェック . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
ショートカットコマンド . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
第 7 章 実配置
7.1
7.2
7.3
7.4
7.5
7.6
Magic,Alliance 共通のフォーマット形式 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
7.2.1 記号の説明 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
55
55
55
55
Magic を使用した場合の CIF の扱いについて . . . . .
7.3.1 Magic での CIF ファイルの入出力 . . . . . . .
7.3.2 Magic での CIF(マスクレイヤ)の出力 . . .
7.3.3 Magic を使用した場合の CIF の階層のまとめ
7.3.4 ラベル . . . . . . . . . . . . . . . . . . . . . .
7.3.5 設定の変更 . . . . . . . . . . . . . . . . . . .
Alliance を使用した場合の CIF の扱いについて . . .
7.4.1 Alliance での拡張された宣言 . . . . . . . . . .
7.4.2 実例 . . . . . . . . . . . . . . . . . . . . . . .
Magic,Alliance でのトレース . . . . . . . . . . . . .
7.5.1 Magic でのトレース . . . . . . . . . . . . . .
7.5.2 Alliance でのトレース . . . . . . . . . . . . .
仮想配置と実配置のまとめ . . . . . . . . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
60
61
63
67
67
68
70
70
72
76
76
77
80
.
.
.
.
.
.
.
.
.
.
.
81
81
81
81
83
83
84
92
92
94
94
95
概要 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
第 8 章 関連のあるツール及び,Ver.4 と Ver.5 の違い
8.1
8.2
8.3
8.4
8.5
Version5 . . . . . . . . . . . . . . . . . . . . . . . .
8.1.1 概要 . . . . . . . . . . . . . . . . . . . . . .
8.1.2 ダウンロード,インストール,ファイル構成
8.1.3 チュートリアル . . . . . . . . . . . . . . . .
8.1.4 主なツールの解説 . . . . . . . . . . . . . . .
sxlib . . . . . . . . . . . . . . . . . . . . . . . . . .
Graal 上でデザインルールチェックをしたい場合 . .
回路面積の計算 . . . . . . . . . . . . . . . . . . . .
s2r . . . . . . . . . . . . . . . . . . . . . . . . . . .
8.5.1 環境変数の設定 . . . . . . . . . . . . . . . .
8.5.2 実行時のオプション . . . . . . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
第 9 章 テクノロジーファイル
9.1
9.2
97
関連マニュアル . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
デザインルールの選択と Magic の設定 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
9.2.1
9.2.2
9.2.3
9.2.4
9.3
54
54
54
デザインルールの選択 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Magic 側の設定 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Magic 標準のテクノロジーファイル(scmos.tech27)と SCN4ME SUBM.20.TSMC.tech27 の違い
MOSIS HP の Table 4: SCMOS Layer Map について . . . . . . . . . . . . . . . . . . . . . . . .
テクノロジーファイルの記述方法及び値の設定 . . . . . . . . . . . . .
9.3.1 書式 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
9.3.2 LAMBDA,PHYSICAL GRID . . . . . . . . . . . . . . . . .
9.3.3 MBK TO RDS SEGMENT,MBK TO RDS CONNECTOR
9.3.4
9.3.5
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
97
97
97
98
98
99
100
100
100
101
Reference,Contact . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111
CIF LAYER,GDS LAYER . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113
5
9.3.6
9.3.7
9.3.8
S2R POST TREAT,S2R OVERSIZE DENOTCH
S2R BLOC RING WIDTH,S2R MINIMUM LAYER WIDTH . . . . . . . . . . . . . . . . . . 115
LYNX GRAPH,LYNX CAPA,LYNX RESISTOR,LYNX TRANSISTOR,
LYNX DIFFUSION,LYNX BULK IMPLICIT . . . . . . . . . . . . . . . . . . . . . . . . . . . 119
MBK TO RDS BIGVIA HOLE,MBK TO RDS BIGVIA METAL,
MBK TO RDS TURNVIA(Ver.5 専用) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 120
第 10 章 エラーの修正
10.1 テストデータの作成(半加算機) . . . . . . . . . . . . . . . . . . . . . . . . . . .
10.2 修正 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
10.2.1 読み込み時のエラー . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
10.2.2 ポリシリコンが短すぎるてエラーが出る問題 . . . . . . . . . . . . . . . . .
10.2.3 Transistor の Active に合わせて Diffution の長さも調整する . . . . . . . .
10.2.4 Well の併合エラー . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
10.2.5 配線の Wire 設定での隙間がエラーになる問題(Polisilicon,Alu1,Alu2)
10.3 Magic でデザインルールをチェックする場合の注意点 . . . . . . . . . . . . . . . .
10.3.1 Via が表示されない . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
10.3.2 コンタクトと VIA が接触している場合 . . . . . . . . . . . . . . . . . . . .
10.4 Sub-Micron ルールを適用しない場合はどうなるか . . . . . . . . . . . . . . . . . .
10.4.1 Via と Polysilicon が重なる . . . . . . . . . . . . . . . . . . . . . . . . . .
10.4.2 Stacked Via が適用されない . . . . . . . . . . . . . . . . . . . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
第 11 章 修正結果
11.1
11.2
11.3
11.4
11.5
11.6
11.7
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
149
149
160
165
166
166
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
167
170
170
170
170
170
修正結果 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
5 層配線(SCN5M SUBM)にしたい場合 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Ver.4 用に変更したい場合 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
不明瞭な点及び,今後の課題など . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Druc の文法について . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
SCN4ME SUBM において Metal4 が最小間隔エラーになる問題について . . . . . . . . . . . . .
テクノロジーファイルの作成手順まとめ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
11.7.1 MOSIS の HP で使用するデザインルール(オプション)を選択する. . . . . . . . . . .
11.7.2 選択したデザインルールに対応した Magic のテクノロジーファイルをダウンロードする.
11.7.3 MOSIS ルールを確認しながら Magic で各レイヤの最小幅の cif ファイルを出力する. . .
11.7.4 出力した cif ファイルを再び Magic で開き,MOSIS ルールと照合する. . . . . . . . . .
121
122
125
125
129
134
136
140
142
142
146
147
147
147
11.7.5 適用すべき最小幅がわかったら,Alliance のテクノロジーファイル(.rds)ファイルに記述する. 171
11.7.6 最小幅を設定したら sxlib を Graal,Dreal,Magic で表示させながらエラーが出ている箇所を確認
し,修正する. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
171
11.7.7 不明瞭なレイヤ,パラメータもチェックし,調整を行う . . . . . . . . . . . . . . . . . . . . . . . 171
11.7.8 テクノロジーファイルが完成したら実際に VHDL ソースファイルからコンパイルを行い,最後ま
で合成してエラーが無いか確認する.又,過渡解析などを行い,実際に動作するか確認する. . .
171
第 12 章 参考文献
173
第 13 章 謝辞
175
7
第 1 章 概要
現在日本及びアメリカでは LSI チップの試作を行うためには Cacence 社及び Synopsys 社製の CAD ツールを使用するこ
とが多いのですが,その際には多額のライセンス料金を支払わねばなりません.又,ライセンスが切れた場合には使用
ができなくなります.本研究は,オープンソースの Alliance Cad System を使用して,チップの試作を試みようと言う
ものです.
Alliance は,パリのピエール・アンド・マリーキュリー大学の MASI 研究室で開発された,オープンソースの VLSI CAD
System で,VHDL から論理合成及び,パターンレイアウト生成を自動で行うことができます.しかしながら,Alliance
は欧州の CMP,Euro Practice でチップを試作することを前提に作られているので,今の時点では,我々がチップを試
作することはできません.
本研究は,Alliance のシステムを利用し,仮想配置から実配置への変換を行う s2r というプログラムに読み込ませるテ
クノロジーファイルを MOSIS のデザインルールに合わせて記述することで,MOSIS 及び東京大学の VDEC でチップを
試作するための VLSI CAD ツールをフリーで提供しようというものです.
研究では主に Alliance CAD System のうちの物理レイヤについて検証しました.デザインルールチェックには,MOSIS
のデザインルールに対応している Magic を使用しました.
このドキュメントでは,Alliance のダウンロード,インストール方法を解説した後,Alliance を使用して VHDL から
パターンレイアウト生成までの流れをチュートリアル形式で解説します.その後,s2r の入力ファイルと出力ファイルの
フォーマットを実例と共に解説してから s2r に読み込ませるためのテクノロジーファイルの記述方法を解説します.最後
に,Magic で読み込ませた際にエラーが出る箇所の修正を行います.尚,研究で使用していたヴァージョンは 4.0.6 です
が,Ver.5.0 についても多少分かってきたので,平行して解説して行きます.
本来ならばテクノロジーファイルの周辺の話のみにすれば良かったのですが,現在 Alliance の Ver.4,Ver.5 に関して
はドキュメントが man ページと簡単なチュートリアル位しか無い状態であり,細かい点に関しては手探りで進めて来ま
した.よって,その過程で分かったことについても纏めてあります.本家 HP を補完するための資料として活用して下
さい.
現在の完成状況ですが,MOSIS ルールが扱えるファウンダリである TSMC 用に SCN4ME SUBM,SCN5M SUBM
を Ver.4,Ver.5 でエラー無く合成できるようになりました.これで,コアレベルではほぼ完成し,今後チップレベルで
の研究となります.と言っても,チップレベルでは,付属のツールの使用方法がわかれば解決するでしょう.実際にシス
テムを利用したチップの試作及び,未設定のいくつかのパラメータについては今後の課題とします.
9
第 2 章 本ドキュメントに関して
2.1
ドキュメントについて
このドキュメントは,これまで調べてわかったことについて纏めまたものです.簡単なチュートリアルや使用するファ
イルのフォーマットについて解説しながら,最終的に Alliance のテクノロジーファイルの記述及び使用ができるように
なることを目標に作成しました.一部重複していたり,曖昧な点も多々あるかと思いますが,ご了承下さい.
又,Ver.4 をベースにドキュメントを作成していたので,Ver.5 に関しては中途半端な内容になっていることも重ねて
ご了承下さい.
• ソースコードなどは,読みやすさを重視し,一部変えてある部分があります.
• 左に行数が書いてある場合がありますが,説明のために使用したもので,実際には表示されません.
• 見やすいように各セル内で行の順序を一部入れ替えてあることがあります.
• ソースコードの右にコメントを多数入れましたが,こちらも実際には表示されません.
• ドキュメントに載っていない宣言が現れた場合は,“第 12 章 参考文献” を参考にして下さい.
2.2
ドキュメントの表記
.∼ “.∼” のように,. の次に英数字が続いている場合は,ファイルの拡張子を意味しています.例えば “.ap”,“.cif” の
ようになります.隠しファイルではありません.
$ man ($ man ∼)のように書いてある場合は man ページを参照することを意味しています.例えば,
($ man s2r)
なら,s2r の man ページを参照するという意味です.
ALLAINCE TOP Alliance のルートディレクトリを Alliance Top とします.
11
第 3 章 関連用語
頻繁に使用する用語を掲載します.
3.1
組織,団体
Alliance パリのピエール・アンド・マリーキュリー大学の MASI 研究室で開発された,オープンソースの VLSI CAD
System で,VHDL から論理合成及び,パターンレイアウト生成を自動で生成できます.本研究で使用する CAD Tool で
す.Alliance を直訳すると,“協力,協調” という意味です.Alliance そのものは組織ではありませんが,便宜的に載せ
ました.
Cadence
LSI Cad を制作している会社です.
Synopsys LSI Cad を制作している会社です.
MOSIS MOSIS は米国の政府系機関および研究機関に向けた VLSI 回路開発のための安価なチップ試作のサービスです.
Magic は MOSIS のデザインルールを採用していて,Alliance から出力した CIF ファイルを Magic に読み込ませるこ
とで,デザインルールチェッカとしての役割を果たすことができます.
詳しいことは MOSIS の HP1 及び,MOSIS のデザインルールの HP2 をご覧下さい
TSMC
MOSIS のチップベンダです.今回は TSMC 用のテクノロジーファイルを作成しました.
VDEC 東京大学にあるチップ試作団体です.最終的には Alliance を使用して VDEC でチップ試作ができるようにし
ます.
3.2
プログラム
Alliance のツール
asimut (Ver.4,5)“ASIMUT” は,“A SIMUlatin Tool for hardware descriptions” の略で,VHDL の動作をシミュ
レーションするためのツールです($ man asimut).本研究ではハードウェア記述言語を使用することが目的では無い
ので,割愛します.
scmap (Ver.4)“SCMAP” は,“MAPping Standard Cells” の略で,VHDL のソースコードを解析し,必要なセルラ
イブラリを割り当てて,ネットリストを出力します($ man scmap).入力ファイルは(.vbe),出力ファイルは(.vst)
となります.
scr (Ver.4)“SCR” は,“Standard Cell Router” の略で,SCMAP で決定したセルライブラリを元に,仮想配置ファ
イルに変換して配線を行うプログラムです($ man scr).入力ファイルは(.vst),出力ファイルは(.ap)となります.
1 http://www.mosis.org/
2 http://www.mosis.org/Technical/Designrules/scmos/scmos-main.html
12
第3章
関連用語
graal (Ver.4,5)“GRAAL” は,“GRAphic LAyout editor” の略で,仮想配置である.ap ファイルをグラフィカルに表
示するためのプログラムです($ man graal).本来は scr の出力ファイルを表示しますが,Graal でレイアウトを記述す
ることも可能です..ap ファイルは s2r の入力ファイルになります.第 6 章で,詳しく解説します.
s2r (Ver.4,5)“S2R” は,“Symbolic to Real layout converter” の略で,仮想配置である.ap ファイルを実配置である.cif
ファイルに変換します($ man s2r).この変換の際に使用するデザインルールが記述されたテクノロジーファイルを作
成することが,本研究の目的となります.詳しくは第 8 章以降で解説します.
dreal (Ver.4,5)“DREAL” は,“Design REAL layout” の略で,実配置である.cif ファイルをグラフィカルに表示す
るためのプログラムです($ man dreal).s2r の出力ファイルを表示しますが,Dreal でレイアウトを記述することも可
能です.第 7 章で詳しく解説します.
lynx (Ver.4)“LYNX” は,“Hierarchical netlist extractor” です($ man lynx).ap ファイル,cif ファイルからネッ
トリストである.vst ファイルを出力します.
druc (Ver.4,5)“druc” は,“Design RUle Checker” の略です.テクノロジーファイル(.rds)にデザインルールを記
述しておき,仮想配置(.ap)ファイルのデザインルールをチェックします($ man druc).druc は単体で使用するか,
Graal を実行中に呼び出して使用します.
BooG (Ver.5)“BooG” は,Binding and Optimizing On Gates の略です($ man boog).Ver.5 になって,SCMAP
が BooG に代わりました.
OCP (Ver.5)“OCP” は,Standard Cell Placer の略?です($ man ocp).Ver.5 になって,SCR(配置配線ツール)
が OCP(配置ツール)と OCR(配線ツール)に分かれ,現在では OCR が NERO に代わりました.
OCR (Ver.5)“OCR” は,an Over-the-Cell-Router の略です($ man ocp).Ver.5 で scr の代わりに使用される配線
ツールですが,現在では OCR が NERO に代わりました.
NERO (Ver.5)“NERO” は,NEgotiating ROuter の略です($ man nero).Ver.5 で scr の代わりに使用される配
線ツールです.
COUGAR (Ver.5)“COUGAR” は,Hierarchical netlist extractor です($ man cougar).Ver.4 までは lynx と言
うプログラムでしたが,有名なテキストブラウザと名前同じだったので変更されたものです.
それ以外のプログラム
magic LSI レイアウト記述用の CAD ツールです.magic は MOSIS に対応しているので,Magic で CIF ファイルを読
み込ませてもエラーが生じないように Alliance のテクノロジーファイルを記述します.
3.3
.vbe
拡張子
ハードウェア記述言語である VHDL($ man vhdl)の拡張子です($ man vbe).“SCMAP” の入力ファイルと
して使用します.また,“Asimut” と言うプログラムでシミュレーションを行うことができます.
.vst
.vst フォーマットは,“VHDL structural subset” の略で,Alliance のネットリストです($ man vst).“Scmap” と
言うプログラムで出力されるファイルの拡張子であり,“SCR” というプログラムの入力ファイルになります.又,“Lynx”
というプログラムで ap ファイル,cif ファイルを vst フォーマットに変換して出力することができます.
3.4. s2r 関連
13
.ap 仮想配置のファイルの拡張子です.scr と言うプログラムの出力ファイルであり,又,s2r と言うプログラムの入力
ファイルでもあります($ man ap).さらに,“Graal” と言うプログラムを使用することで,レイアウトをグラフィカル
に表示できます.
.cif “s2r” によって実配置に変換されたファイルの拡張子で,“Dreal” と言うプログラムでグラフィカルに表示するこ
とができます.このフォーマットは,パターンレイアウトの最終段階であり,チップの試作に利用します.本研究では,
このファイルを Magic に読み込ませます.
.mag “Magic” での標準の出力フォーマットです.このフォーマットではチップの試作はできません.
3.4
s2r 関連
Alliance では,パターンレイアウトを生成する前に仮想配置という段階を踏みます.仮想配置では,レイヤの
領域を軸と線で表しますが,幅はこの段階では仮想的にしか決まっていません.この後 s2r と言うプログラムを使用し
て,実配置に変換します.仮想配置は “MBK”,“Symbol” とも呼ばれています($ man mbk).
仮想配置
s2r で変換した後の状態で,拡張子は “.cif” となります.又,“RDS”,“Real” と呼ばれてることもあります
($ man rds).最終的にこの段階まで変換してから CIF ファイルを Magic に読み込ませます.実配置では,領域を長方
形で表します.
実配置
sxlib
Alliance で使用されるセルライブラリです($ man sxlib).サブミクロンプロセス用に設計されています
s2r で実配置に変換する際に各レイヤの最小幅などをテクノロジーファイル(拡張子は.rds)に記
述します.このテクノロジーファイルは s2r だけでなく,Graal,Dreal,Lynx,Druc でも使用されます($ man prol).
テクノロジーファイル
15
第 4 章 Alliance Ver.4.0.6 の Download,Install
この章では,Alliance の HP より,プログラムのダウンロード及びインストールの方法を説明します.又,HP はわかり
にくい構成になっているので,関係ある箇所の解説もしていきます.
4.1
Alliance HP の解説
Alliance の HP は
http://www-asim.lip6.fr/alliance/
です.Google1 で,“Alliance VLSI” とキーワードを入力してもトップに表示されます(“ウェブ全体から検索” にチェッ
クを入れます).
トップページに掲載されているヴァージョンは 5.0x 系ですが,チュートリアル,ドキュメントが最新のものではない
ので,Ver.4 系を解説します.Ver.4 に慣れたら Ver.5 に移行してみて下さい.ドキュメントの後半で Ver.5.0 についても
少し解説しています.
Ver.4 の HP は,トップページの下 “You can still acces Alliance 4.0 website and documentation here. ” から次のア
ドレスに辿れます.
http://asim.lip6.fr/alliance_old/alliance/
プログラムは,この HP の
Latest:
Official release: 4.0.6 2000/02/01
から辿れますが,その前に HP の構成を解説します.
Ver.4 の HP トップの右上に “Documentation” という項目があります.Alliance に関する殆どの資料はそこから手に
入ります.
http://asim.lip6.fr/alliance_old/alliance/doc/index.html
よって,このページを Bookmark 等に登録しておくと良いかもしれません.
Documentation ページの構成
• Alliance introduction :
Quickview
Overview
Jumpstart
• Man pages :
Tools
Libraries functions
1 http://www.google.co.jp/
このページで主に関係ある箇所は,
16
第4章
Alliance Ver.4.0.6 の Download,Install
です.“Quickview” は,Alliance についての簡単な概要が掲載されています.“Overview” は,Alliance の各プログラ
ムの解説など,少し詳しい内容になっています.Quickview,Overview は共に Alliance4.0.6 を DL すれば ps,pdf 形式
で入っています($Alliance Top/share/doc/overview.ps,overview.pdf).ただし,一部の画像は HP にのみ掲載されて
いるようです.尚,現在 Ver.5.0 には入っていません.
“Jumpstart” のページの中段にはいくつかの絵が掲載されています.この絵の左は論理回路の MIL 記号,中央は回路
図,右は Graal で表示した仮想配置レイアウトです.
このページの下に
Design Examples
• 1-bit Full Adder (Combinational Example)
というリンクがあります.
http://asim.lip6.fr/alliance_old/alliance/doc/jumpstart/Examples/FullAdder.html
このページは今回の研究において,最も重要なチュートリアルが掲載されています.テストに使用している半加算機も
このページを参考にしました.
Man pages:の “Tools”,“Libraries functions” は,Alliance のマニュアルが掲載されていますが,一部情報が古いもの
もあるようです.また,今回頻繁に参照する prol というマニュアルも掲載されていません.
このページは,Alliance をインストールした後に
$man name
を実行すれば,同じものが表示されます.
又,“Jumpstart” のページの下,
Alliance 3.2b man pages
• Programs and Environment variables
• C programming functions
からでも辿ることができます.
4.2
Alliance のダウンロード,インストール
Alliance のダウンロードページは,Alliance Ver.4 の HP の
Latest:
Official release: 4.0.6 2000/02/01
から辿れます.
ftp://asim.lip6.fr/pub/alliance/distribution/4.0/
インストールはこのページの “README” を参考にして下さい.
Linux で使用する場合は “alliance-4.0.6-asim.i386.rpm” を選択すると良いと思います.“alliance-4.0.6-common.tar.gz”
を使用した場合,実行ファイルは無いようなので,別途 “alliance-4.0.6-sources.tar.gz” をコンパイルする必要があります.
又,Windows で Cygwin を利用して使用する場合は “alliance-4.0.6-cygwin-b20.exe” を選択することが可能です.Win-
dows で使用する場合には,同ページの “README.win32” を参照して下さい.
4.3
Alliance のディレクトリ構成
Alliance Ver.4.0.6 のディレクトリ構成は,図 4.1 のようになります.
ここでは本研究に関係のあるディレクトリ,ファイルについて解説します.尚,Alliance のルートディレクトリを
“$Alliance Top” とします.
4.3. Alliance のディレクトリ構成
17
Alliance_Top
archi/
Linux/
(OS-Name/)
bin/
include/
lib/
(cells/)
(doc/)
(etc/)
(man/)
(tutorials/)
sources/
README.cells
amg/
bsg/
dplib/
fplib/
grog/
padlib/
cells/
rage/
rfg/
rsa/
sc2sxlib/
sclib/
sxlib/
~.ap
doc/
overview/
overview.ps,pdf
process_mapping.ps,pdf
etc/
alc_env.sh,csh
~.rds
cmos_7.graal
share/
man/
man1/
man3/
man5/
whatis
windex
README.tutorials
addaccu/
tutorials/ amd2901/
dlxm/
fitpath/
CHANGES
COPYING-2.0
COPYING.LIB-2.0
FAQ
LICENCE
README
図 4.1: Alliance 4.0.6 のディレクトリ構成
18
第4章
Alliance Ver.4.0.6 の Download,Install
archi/ “archi/” ディレクトリには,各 OS 用のバイナリプログラム($Alliance Top/archi/OS/bin/)が入っています.
又,図 4.1 での点線はシンボリックリンクです.
sources/ “sources” ディレクトリは,ソースコードからコンパイルをした場合のみ作成されます.
share/ “share” ディレクトリには,cells,doc,etc,man,tutorials の 5 つのディレクトリがあります.Ver.5 では大
部分のセルライブラリが削除されています.
cells/ “cells” ディレクトリには,セルライブラリが入っています.この中でも標準の設定では “sxlib” を使用します.
sxlib ディレクトリの中には,仮想配置である.ap ファイルなどがセルライブラリとして入っていて,仮想配置ではこの
ディレクトリ内のセルライブラリを呼び出して使用します.その他のディレクトリに関しては,“README.cells” を参
照して下さい.
doc/ “doc” ディレクトリには,Alliance のドキュメントが入っています.このうち,“overview.ps”,“overview.pdf”
は,Alliance の概要が記述されています.このドキュメントは,HP の Documentation ページの Quickview,Overview
をを PS,PDF 形式にしたものです.
又,“process mapping.ps”,“process mapping.pdf” は s2r で使用するテクノロジーファイルに関するドキュメントで
す.このドキュメントは “Translation of symbolic objects into real rectangles” と言うタイトルで本研究では特に重要で
あり,第 9 章で詳しく解説します.Ver.5 を使用する場合には,ドキュメントが入っていないため,Ver.4 に入っている
ものを使用して下さい.
etc/ “etc” ディレクトリには各種設定ファイルが入っています.このディレクトリ内で特に重要なファイルは,“alc env.sh”,
“alc env.csh”,“∼.rds”,“cmos 7.graal” です.“alc env.sh”,“alc env.csh” は,環境変数を設定するためのシェルスク
リプトです.Bash 使用時は “alc env.sh”,Cshell 使用時は “alc env.csh” を使用します.“∼.rds” は,s2r に読み込ませ
るためのテクノロジーファイルです(.rds は拡張子).“cmos 7.graal” は,Graal で使用するテクノロジーファイルです.
man/ Alliance のマニュアルです.
$ man name
でプログラム,環境変数など調べたい項目を name に指定します.
tutorial/ チュートリアル用のファイルが入ったディレクトリです.本ドキュメントでは HP の全加算機のチュートリ
アルのページを参考にしているのでこのディレクトリのファイルは使用していませんが,一度は試してみると良いでしょ
う.詳しくは tutorials/README.tutorials を参照して下さい.
$Alliance Top にあるその他のファイルについて
まず最初には “README” を読むと良いでしょう.ただし,既にイ
ンストールを済ませている場合には必要無いかも知れません.
その次に “FAQ” をチェックして下さい.拡張子やマニュアルについて解説してあります.
“CHANGES” は,更新履歴です.過去のヴァージョンとの違いが知りたい時に参照します.Alliance5.0 系を使用する
場合には,ドキュメントの内容と一部異なる可能性もあるので,一度参照してみて下さい.
19
第 5 章 Alliance4.0.6 のチュートリアル
この章では,全加算機のチュートリアルページ
http://asim.lip6.fr/alliance_old/alliance/doc/jumpstart/Examples/FullAdder.html
を参考に,この後のテストデータとして,A = B という回路を作成する手順を解説します.ここで作成した回路は,こ
の後の章でも使用します.できる限り小さい回路を作成することで,この後の解析をやりやすくしています.他の回路
も試したい場合は,Alliance に付属のチュートリアルで練習して下さい.
尚,Ver.5 では使用するツールのいくつかが異なります.詳しくは第 8 章で解説します.
まず,全体の流れは次の図 5.1 のようになります.この他にも多くのツールがありますが,ここでは研究で使用するプ
ログラムのみ掲載しました.
VHDL Source
(equal.vbe)
SCMAP
equal.vst
SCR
Lynx
equal.ap
S2R
Graal
equal.cif
Dreal
図 5.1: このチュートリアルでのフローチャート.四角で囲んであるのがプログラムです.中央は変換プログラムの流れ.
右はレイアウト表示プログラム.左はネットリスト抽出プログラム.直接は関係ないので点線で示しています.
5.1
環境変数の設定
インストールが終わったところで,まずは環境変数を設定しなければなりません.環境変数は一から設定すると非常に判り
づらいのですが,ここでは “alc env.sh”,“alc env.csh” と言うスクリプトファイルを使用します.現在使用しているシェル
が Bash ならば “alc env.sh” を,Cshell ならば “alc env.csh” を使用して下さい.このファイルは $Alliance Top/share/etc/
にあります.コマンドは,Cshell の場合,
$ source ./alc env.csh
20
第5章
Alliance4.0.6 のチュートリアル
です.Bash では alc env.csh を alc env.sh に変更します.この例ではディレクトリを $Alliance Top/share/etc/ に移
動してからコマンドを実行しています.
このスクリプトを vi 等のエディタで表示してみましょう.本研究でたびたび参照,変更する環境変数は “GRAAL TECHNO NAME”
と “RDS TECHNO NAME” です.本研究の目的であるテクノロジーファイルは
RDS TECHNO NAME に指定します.又,“MBK CATA LIB(仮想配置のカタログライブラリ)” の値が sxlib のディ
レクトリを参照しています.その他に,“RDS IN”,“RDS OUT” の値が共に “cif” になっていることを確認してみて下
さい(s2r の man によると,デフォルトでは “gds” に設定されているようです).
再起動時などに,もしもプログラムが実行できない場合はコマンドを打ち直して下さい.又,環境変数を変更した際
にもコマンドを実行し直す必要があります.
5.2
VHDL のソースコードを記述
まず,VHDL のソースコードを記述します.
-- External ports
ENTITY equal IS
PORT ( A : IN BIT;
B: OUT BIT );
END equal;
-- Internal Behaviour
ARCHITECTURE equal_data_flow OF equal IS
BEGIN
B <= A;
END equal_data_flow;
以上が VHDL で A = B を記述した場合のソースコードです.ファイル名は “equal.vbe” とします.尚,改行コード
が正しくないとコンパイル時に失敗するので,自分の環境でソースコードを書き直した方が良いかもしれません.ちな
みに,行の最初に “- -” がある場合はコメントとなります.
5.3
SCMAP
“SCMAP” は,“MAPping Standard Cells” の略です.VHDL のソースコードを解析し,セルライブラリを割り当て
て,ネットリストとして出力します($ man scmap).
コマンドは,
$ scmap in out
です.in には,入力ファイル名を,out には,出力ファイル名を入力します.よって,次のようになります.
$ scmap equal equal
ここで,入力ファイルに拡張子である “.vbe” を入れると,ファイル名が見つからないというエラーになるので,拡張
子抜きの “equal” のみを入力します.又,出力ファイル名に inv(inverter の略)等よく使われそうな名前は予約語もし
くはセルライブラリ名として使用されているようなので,その場合には HP のチュートリアルにあるように,inv1 のよ
うにファイル名を少し変えたようが良いでしょう.
このコマンドを実行すると,次のようなメッセージが出て,プログラムが終了します.
5.3. SCMAP
21
@@@@ @
@
@@
@@
@
@@@
@@@@
@@@@
@@@
@
@@
@@
@@
@@@
@
@ @@@@
@@@@ @
@@
@@
@@
@
@@
@ @@@ @@ @@@
@@@@
@@@ @@@
@@
@@@ @@ @@
@@
@
@@@ @@
@@
@@ @@ @@
@@
@@
@@
@@
@@
@@ @@ @@
@@@@@
@@
@@
@@
@@ @@ @@
@@
@@
@@
@@
@@
@ @@ @@ @@ @@
@@
@@
@@
@@
@@ @@ @@ @@ @@
@@@
@@@ @@
@@@@
@@@@ @@@ @@@ @@@@ @@ @@ @@@
@@
@@@@
Mapping Standard Cells
Alliance CAD System 4.0.6, scmap 4.0.9 [1999/11/09]
Copyright (c) 1990-2003,
ASIM/LIP6/UPMC
E-mail support:
[email protected]
================================ Environment ================================
MBK_WORK_LIB
= .
MBK_CATA_LIB
= .:/usr/local/alliance/archi/Linux/cells/sxlib:/usr/local/
alliance/archi/Linux/cells/padlib
MBK_TARGET_LIB
= /usr/local/alliance/archi/Linux/cells/sxlib
MBK_IN_LO
= vst
MBK_OUT_LO
= vst
======================= Files, Options and Parameters =======================
VHDL file
= equal.vbe
output file
= equal.vst
Parameter file
= default.lax
Mode
= Mapping standard cell
Optimization mode
= 50% area - 50% delay optimization
Optimization level = 2
===============================================================================
Compiling ’equal’ ...
Running Standard Cell Mapping
============================= INITIAL COST ==================================
Total number of literals
= 1
Number of reduced literals = 1
Number of latches
= 0
Maximum logical depth
= 0
Maximum delay
= 0.000
===============================================================================
Compiling library ’/usr/local/alliance/archi/Linux/cells/sxlib’
Generating Expert System ...
Cell ’fulladder_x2’ Unused
Cell ’fulladder_x4’ Unused
Cell ’halfadder_x2’ Unused
Cell ’halfadder_x4’ Unused
Cell ’mx2_x2’ Unused
Cell ’mx2_x4’ Unused
Cell ’mx3_x2’ Unused
Cell ’(null)’ Unused
Cell ’mx3_x4’ Unused
Cell ’(null)’ Unused
Cell ’nmx2_x1’ Unused
Cell ’nmx2_x4’ Unused
Cell ’nmx3_x1’ Unused
Cell ’(null)’ Unused
Cell ’nmx3_x4’ Unused
Cell ’(null)’ Unused
Cell ’noa2ao222_x1’ Unused
Cell ’noa2ao222_x4’ Unused
Cell ’noa3ao322_x1’ Unused
Cell ’noa3ao322_x4’ Unused
Cell ’oa2ao222_x2’ Unused
Cell ’oa2ao222_x4’ Unused
22
第5章
Alliance4.0.6 のチュートリアル
Cell ’oa3ao322_x2’ Unused
Cell ’oa3ao322_x4’ Unused
Cell ’rowend_x0’ Unused
Cell ’tie_x0’ Unused
264 rules generated
output b connected to input a : 2 inverters added
============================== FINAL COST ===================================
Number of cells used = 1
Number of gates used = 2
Number of inverters
= 2
Number of grids
= 1500
Depth max. (gates)
= 2
(eq. neg. gates) = 2
===============================================================================
MBK Driving ’./equal.vst’...
そして,作成されたネットリスト “equal.vst” をエディタで表示すると,
-- VHDL structural description generated from ‘equal‘
--date : Sun Jan 12 17:06:20 2003
-- Entity Declaration
ENTITY equal IS
PORT (
a : in BIT; -- a
b : out BIT; -- b
vdd : linkage BIT; -- vdd
vss : linkage BIT -- vss
);
END equal;
-- Architecture Declaration
ARCHITECTURE VST OF equal IS
COMPONENT inv_x1
port (
i : in BIT; -- i
nq : out BIT; -- nq
vdd : in BIT; -- vdd
vss : in BIT -- vss
);
END COMPONENT;
SIGNAL auxsc1 : BIT; -- auxsc1
BEGIN
b : inv_x1
PORT MAP (
vss => vss,
vdd => vdd,
nq => b,
i => auxsc1);
auxsc1 : inv_x1
PORT MAP (
vss => vss,
5.4. SCR
23
vdd => vdd,
nq => auxsc1,
i => a);
end VST;
となります($ man vst1 ).COMPONENT と記述されている欄には,セルライブラリ名が入ります.ここでは,“inv x1”
と言う名前のインバータ回路が指定されています.
となり,auxsc1 など後ほど “Graal”,“Dreal” で表示されるラベルは SCMAP で作成されていることがわかります.
5.4
SCR
“SCR” は,“Standard Cell Router” の略で,SCMAP により出力されたネットリスト(equal.vst)を仮想配置であ
る.ap ファイルに変換し,配線します($ man scr).
コマンドは,HP のチュートリアルに従って,
$ scr -p -r -i 1000 equal
とします.
@@@@ @
@
@@
@@
@
@@@
@@@@
@@@@
@@@
@
@@
@@
@@
@@@
@
@ @@@@
@@@@ @ @@@@@@@
@@
@@
@@
@@
@@
@
@@
@@
@@
@
@@
@@
@@
@@
@@
@@
@@@@@
@@
@@ @@
@@
@@
@@
@@
@
@@
@@
@@
@@
@@
@@
@@@@
@@@@@
@@@
Standard Cell router
Alliance CAD System 4.0.6,
scr 5.3
Copyright (c) 1991-2003,
ASIM/LIP6/UPMC
E-mail support: [email protected]
Loading logical view : equal
Placing logical view : equal
Loading SCP data base ...
Original width : 30
Generating initial placement ...
2 cells 5 nets in 1 rows
Placement in process of treatment : 100%
0% saved in 0.1 s
Saving placement 100%
Checking consistency between logical and physical views
Loading SCR data base ...
Deleting MBK data base ...
Global routing ...
Channel routing ...
|_____Routing Channel : scr_p2
|_____Routing Channel : scr_p4
Making vertical power and ground wires
Saving layout : equal
以上で,“equal.ap” ファイルが作成されました.仮想配置及び ap フォーマットのトレース方法については第 6 章で詳
しく解説します.
1 内容は少し古いです.
24
5.5
第5章
Alliance4.0.6 のチュートリアル
Graal
“Graal” は “GRAphic LAyout editor” の略で,仮想配置である.ap ファイルをグラフィカルに表示することができる
プログラムです($ man graal).
この章では,画面に表示するまでの簡単な操作のみ紹介し,詳しくは次章で解説します.
Graal で equal.ap ファイルを表示するには,プロンプト画面で
$ graal -l equal
と入力します.すると,図 5.2 のようなレイアウトが表示されます.
最初はまだセルライブラリのインバータ回路を表示していません.回路を表示したい時には,メニューバーから
Tools→Flat
を選択した後,表示したいサブセルをマウスで選択します.そうしてインバータ回路も全て表示した状態が図 5.3 です.
図 5.2: Graal で equal.ap ファイルを開いた状態
図 5.3: Graal でサブセルであるインバータ回路も含めて,全
て表示した状態
Graal で表示された画面を見た限りでは,既に領域の幅なども決定しているように思われますが,実際には s2r のテク
ノロジーファイルを同時に読み込み,その計算結果を基に画面に表示しているのです.ap ファイルそのものには領域の
軸と長さのみが記述されています.詳しくは次章以降に解説します.
5.6
s2r
“s2r” は,“Symbolic to Real layout converter” の略で,仮想配置である.ap フォーマットを実配置である.cif フォー
マットに変換するプログラムです($ man s2r).このプログラムはレイヤの最小幅などのデザインルールを設定したテ
クノロジーファイル(拡張子は.rds)を環境変数 RDS TECHNO NAME に指定します.このチュートリアルの最初で
“alc env.sh”,“alc env.csh” を使用しました.このファイルには cmos 8.rds をテクノロジーファイルとして指定してあり
ます.このチュートリアルも同ファイルを使用しています.最終的な目標は,このテクノロジーファイルを MOSIS のデ
5.7. Dreal
25
ザインルールに乗っ取って記述することです.ここでは,s2r を使用して cif ファイルを出力する方法を解説します.s2r
のコマンドは
$ s2r input (output)
です.input は ap ファイルの名前です.拡張子まで入力するとエラーで実行されないので注意して下さい.output は,
オプションです.cif ファイルの名前を入力ファイルの名前と変えたい場合は指定して下さい.ここでは,
$ s2r equal
と入力し,実行します.すると,
@@@@
@
@@
@@
@@
@@@@@@ @@@
@@ @@@ @@@
@@
@
@
@@
@@@ @@
@@@
@
@@
@@
@@@@
@
@@
@@@@
@
@@
@
@@@
@
@ @@
@@
@@ @@@@@@
@@
@ @@@@@ @@@@@@@ @@@@
Symbolic to Real layout converter
Alliance CAD System 4.0.6,
s2r 3.7
Copyright (c) 1991-2003,
ASIM/LIP6/UPMC
E-mail support: [email protected]
o
o
o
o
o
loading technology file : /usr/local/alliance/archi/Linux/etc/cmos_8.rds
loading all level of symbolic layout : equal
removing symbolic data structure
layout post-treating with connectors, with scotchs.
saving equal.cif
のように表示され,“equal.cif” ファイルが作成されます.s2r については第 8 章で解説します.又,CIF 形式について
は第 7 章で詳しく解説します.
5.7
Dreal
“Dreal” は “Design REAl Layout” の略で,s2r で作成された cif ファイルのレイアウトを画面に表示するプログラム
です($ man dreal).見た目は Graal とよく似ていますが Graal が仮想配置である ap フォーマットを表示するプログ
ラムであるのに対して,Dreal は実配置である cif フォーマットを表示します.
Dreal で equal.cif ファイルを表示するには,
$ dreal -l equal
と入力します.すると,図 5.4 のように表示されます.
ここでも最初はトップセルのみ表示され,インバータ回路は画面に現れません.サブセルであるインバータ回路を画
面に表示するには,Tools→Flatten を選択します(図 5.5).
この Dreal で表示されたレイアウトは Graal のものと殆ど違いが無いように思われますが,ファイルフォーマットの
構成は全く異なります.詳しくは,第 7 章で詳しく解説します.
以上で,VHDL のソースコードからパターンレイアウト作成までの流れを解説しました.
17 ページの図 5.1 の左側に書いてあるプログラム “Lynx” は,仮想配置である.ap ファイル及び実配置である.cif ファ
イルを入力ファイルとして,ネットリストである.vst ファイルを出力するプログラムです.テクノロジーファイルには
Lynx に関するパラメータがあるので,ここに掲載しました.詳しくは($ man lynx)を参照して下さい.
26
第5章
図 5.4: Dreal で equal.cif ファイルを開いた状態
Alliance4.0.6 のチュートリアル
図 5.5: Dreal でサブセルであるインバータ回路も含めて全
て表示した状態
テクノロジーファイルを書き換えるためには,s2r の入力及び出力ファイルのフォーマットを理解しなくてはなりませ
ん.第 6 章では仮想配置である ap フォーマットと Graal,第 7 章で実配置である cif フォーマットと Dreal,Magic,第
8 章で Alliance Ver.5 と変換プログラムである s2r,第 9 章でテクノロジーファイルについて解説していきます.第 10 章
では実際に Magic に合わせたテクノロジーファイルの修正をしていきます(図 5.6).そして,第 11 章では修正結果を
掲載しています.
5.7. Dreal
27
Technology File
.rds
Chapter 9,10,11
MBK
RDS
.ap Format
Graal
CIF Format,
Dreal,
Magic
Chapter 6
s2r
Chapter 8
Chapter 7
図 5.6: 本ドキュメントの構成
29
第 6 章 仮想配置
6.1
概要
仮想配置は “MBK”,“Symbolic” とも呼ばれ,領域の軸の位置と長さのみを決めた形式です.又,.ap フォーマットは,
Alliance の仮想配置のフォーマットで,“Alliance Physical format” の略です.“Graal” で表示された領域は,ap ファイ
ルと s2r,Dreal でも使用される Alliance のテクノロジーファイル(∼.rds)に依存します.よって,ap ファイルを変更
しなくても,テクノロジーファイルの値を変更することで,Graal で表示されるレイアウトが変化します.
.ap ファイルはネットリストである .vst ファイルを “scr” でセルライブラリを配置配線し,仮想配置として出力する
ことで得られます.又, .ap ファイルは “s2r” の入力ファイルとして使用され,実配置である .cif ファイルに変換され
ます.図 6.1 より確認して下さい.
.ap ファイルは ASCII フォーマットなので,エディタで編集することが可能です.本章では,まず,Graal の使用方法
について述べてから,第 5 章で作成した equal.ap ファイルを解析し,ap ファイルのトレースができるようになることを
目標とします.トレースができるようになると,GUI 上で気になる領域があった場合に直接ファイルを調べることが可
能になります.又,テクノロジーファイルを書く際にも各レイヤごとに見分けがつけば,作成も楽になります.一通り
フォーマットについて解説したら,Graal を使用してレイアウトを描画する方法について解説します.
尚,Alliance Ver.4.0.6 を使用しているので,Ver.5 ではフォーマットの形式が多少異なります.
.vst
format
scr
Graal
druc
.ap
format
s2r
.cif
format
Editor
図 6.1: .ap ファイルの流れ.本章では,色の付いている部分について解説します.
6.2
仮想配置の関連マニュアル
$ man mbk 仮想配置の概要について記載されています.
$ man prol
$ man ap
MBK レイヤについて記載されています.第 9 章で詳しく扱います.
ap フォーマットについてのマニュアルなのですが,Alliance Ver.2 系統のものなので内容がかなり異なり,
あまり参考にならないかもしれません.
30
第6章
$ man graal
6.3
仮想配置
Graal の使用方法について記載されています.
Graal の使用方法 1
“Graal” は,仮想配置である .ap ファイルをグラフィカルに表示するためのプログラムです.ここでは,Graal の使
用方法を簡単に説明します.詳しくは,Graal のマニュアル($ man graal)を参照して下さい.また,本章の 53 ページ
より,ap フォーマットを理解した上でもう少し詳しく解説しています.
.ap ファイルそのものには領域の範囲を記述するのではなく,領域の軸と長さを記述しています.そのファイルを Graal
で表示する際に,“s2r”,“Dreal” にも使用されている RDS TECHNO NAME に指定された.rds のテクノロジーファイル
を使用しています.又,Graal で実際にレイアウトを作成する場合には GRAAL TECHNO NAME に指定された Graal
のテクノロジーファイルを使用します.その情報は,Graal を実行後,メニューバーの Setup→Information で,確認
できます.
ファイルを開く
ファイルを開く場合には,メニューバーの File→Open を実行します.
この時に表示されるウィンドウの右下にある Library を選択すると,セルライブラリのあるディレクトリの場所を確
認できます.
起動時にファイルを指定したい場合には,
$ graal -l file
のように,オプション [-l] を使用します.file に拡張子.ap は入力しません.
サブセルを表示する
ファイルを開いた時には,トップセルしか表示されません.
サブセルを表示したい場合には,Tools→Flat を選択し,表示したいサブセルを選択します.又,表示したサブセル
を非表示にしたい場合には,Tools→Unflat を選択し,非表示にしたいサブセルを選択します.
サブセルのうち,指定した範囲のみ表示したい場合には,Tools→Peek を選択し,表示したい範囲をドラッグして囲
みます.Peek 設定を止めたい場合には Tools→Unpeek を選択します.
位置を確認する
Graal のメインウィンドウの下には,カーソルの現在地が表示されます.左から,
x:
y:
Dx:
Dy:
となっています.x,y はマウスの座標です.Dx,Dy は,始点を決めてクリックすると,その場所を (0, 0) として,距
離を測ります.
Edit→Identify を選択し,領域をクリックすると,その領域の情報が表示されます.今の時点では情報の内容がわか
らないと思いますので,本章を読み終わった後にもう一度試して見て下さい.尚,サブセルの情報は表示されません.
レイヤを見やすくする機能
レイヤが重なっていて見づらい箇所には,レイヤウィンドウを表示し,レイアウトウィンドウの特定のレイヤのみ表
示させたり,アウトラインのみ表示させたりできます.レイヤウィンドウは,メニューバーの View→Layer を選択す
ると表示されます(図 6.2).
レイヤウィンドウの左上の “All visible” はレイヤを全て表示,右上の “All Invisible” は,レイヤを全て非表示にします.
一つのレイヤのみ表示させたい場合などは一度 “All Invisible” をクリックして,各レイヤ名を右側に表示した後,表
示させたいレイヤを左側に表示して “Apply” をクリックします.
左下の “Pattern” をクリックすると,“Outline”,“Fill”,と切り替わります.Pattern は全レイヤが半透明で表示され
ている状態,Outline は全レイヤが Box 宣言の外枠のみ表示されている状態,Fill は,全レイヤに色を付け,真上から見
た状態です.Outline 表示にして,特定のレイヤのみ表示させることにより,トレースがやりやすくなるでしょう.又,
Fill 表示にしてレイヤを上から順番に非表示にすることで,各レイヤの繋がりを確認することができます.
6.3. Graal の使用方法 1
31
図 6.2: レイヤウィンドウ
32
第6章
仮想配置
“No String Box” とは,ラベルの下を透過しますが,少し読みづらいかもしれません.ラベルのトレースをしたい場合
は一度クリックして “String Box” にすると,ラベルの下が黒くなり,文字が読みやすくなります.その代わり,領域の
トレースは,やり辛いでしょう.
“Scale” は,1 マス辺りのスケールを変更します.Dx,Dy を見ながら確認してみて下さい.
6.4
.ap ファイルのトレース
ここでは第 5 章のチュートリアルで作成した equal.ap ファイルを用いて,各宣言の意味と,トレース方法について解
説します.
第 5 章で作成した a = b という回路は,内部的には not 回路を 2 度反転させることで実現しています(図 6.3).この
回路がおそらく,Alliance で VHDL から論理合成できる最小の回路だと考えられます.not 回路単体では,“scr” でレイ
アウトを配置する際に電源電圧などの配線の片側のみに回路を生成しようとし,実行中にストップしてしまうようです.
ちなみに Ver.5 では,scr は無くなりました(81 ページ).
a
b
auxsc1
(inv_x1)
b
(inv_x1)
図 6.3: 回路 a = b の内部構成
この図 6.3 のように,入力は “a”,出力は “b”,not 回路は inv x1 という名前のセルライブラリを使用し,その名前
(ラベル)をそれぞれ “auxsc1”,“b” としています.このラベルは SCMAP で宣言されています.以下に,equal.ap 及
び,inv x1.ap ファイルを載せます.尚,各行の左の数字は,行数を示していますが,便宜上のもので実際には表示され
ません.
equal.ap ファイルは,この回路のトップセルとなり,a,b,及び,電源電圧,グランド電圧,配線が宣言されています.
又,inv x1.ap ファイルは,equal.ap ファイルに呼び出されるサブセルであり,環境変数 “MBK CATA LIB” に指定され
たセルライブラリ “sxlib” というディレクトリ内にあります.トップセル以外は全てセルライブラリを使用します.
equal.ap ファイル
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
V
H
A
C
C
C
C
C
C
C
C
C
C
S
S
S
S
ALLIANCE : 4
equal,P,24/10/2002,100
0,0,5000,6100
2850,0,300,vss,0,SOUTH,ALU2
2150,0,300,vdd,0,SOUTH,ALU2
2850,6100,300,vss,3,NORTH,ALU2
2150,6100,300,vdd,3,NORTH,ALU2
5000,1100,600,vss,2,EAST,ALU1
5000,5500,600,vdd,2,EAST,ALU1
0,1100,600,vss,1,WEST,ALU1
0,5500,600,vdd,1,WEST,ALU1
500,0,200,a,0,SOUTH,ALU2
4500,0,200,b,0,SOUTH,ALU2
1000,400,4000,400,200,auxsc1,RIGHT,ALU1
500,0,500,3300,200,a,UP,ALU2
1000,400,1000,3300,200,auxsc1,UP,ALU2
4000,400,4000,3300,200,auxsc1,UP,ALU2
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
S
S
S
S
S
S
S
S
S
S
S
S
S
I
I
V
V
4500,0,4500,3300,200,b,UP,ALU2
2850,0,2850,6100,300,vss,UP,ALU2
2150,0,2150,6100,300,vdd,UP,ALU2
2800,1100,2900,1100,600,*,RIGHT,ALU2
2800,1100,2900,1100,600,*,RIGHT,ALU1
2850,900,2850,1300,300,*,UP,ALU2
2850,900,2850,1300,300,*,UP,ALU1
2100,5500,2200,5500,600,*,RIGHT,ALU2
2100,5500,2200,5500,600,*,RIGHT,ALU1
2150,5300,2150,5700,300,*,UP,ALU2
2150,5300,2150,5700,300,*,UP,ALU1
1500,5500,3500,5500,600,vdd,RIGHT,ALU1
1500,1100,3500,1100,600,vss,RIGHT,ALU1
0,800,inv_x1,auxsc1,NOSYM
3500,800,inv_x1,b,NOSYM
1000,400,CONT_VIA
4000,400,CONT_VIA
6.5. 宣言の種類
35
36
37
38
V
V
V
V
4000,3300,CONT_VIA
4500,3300,CONT_VIA
500,3300,CONT_VIA
1000,3300,CONT_VIA
33
39 V 2850,1100,CONT_VIA
40 V 2150,5500,CONT_VIA
41 EOF
inv x1.ap ファイル
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
V
H
A
C
C
C
C
R
R
R
R
R
R
R
R
R
R
R
R
R
R
S
ALLIANCE : 4
inv_x1,P,31/ 7/99,100
0,0,1500,5000
1500,4700,600,vdd,1,EAST,ALU1
1500,300,600,vss,1,EAST,ALU1
0,4700,600,vdd,0,WEST,ALU1
0,300,600,vss,0,WEST,ALU1
1000,4000,ref_con,nq_40
1000,3500,ref_con,nq_35
1000,3000,ref_con,nq_30
1000,2500,ref_con,nq_25
1000,2000,ref_con,nq_20
1000,1500,ref_con,nq_15
1000,1000,ref_con,nq_10
500,1000,ref_con,i_10
500,1500,ref_con,i_15
500,2000,ref_con,i_20
500,2500,ref_con,i_25
500,3000,ref_con,i_30
500,3500,ref_con,i_35
500,4000,ref_con,i_40
1000,1000,1000,4000,200,*,DOWN,ALU1
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
S 1000,2800,1000,3700,300,*,DOWN,PDIF
S 700,2600,700,3900,100,*,UP,PTRANS
S 1000,800,1000,1200,300,*,UP,NDIF
S 700,600,700,1400,100,*,DOWN,NTRANS
S 0,300,1500,300,600,*,RIGHT,ALU1
S 0,4700,1500,4700,600,*,RIGHT,ALU1
S 400,2000,700,2000,300,*,RIGHT,POLY
S 700,1400,700,2600,100,*,UP,POLY
S 500,1000,500,4000,100,*,DOWN,ALU1
S 0,3900,1500,3900,2400,*,RIGHT,NWELL
S 350,400,350,1200,400,*,UP,NDIF
S 350,2800,350,4600,400,*,DOWN,PDIF
V 1000,3000,CONT_DIF_P
V 400,4500,CONT_DIF_P
V 1000,3500,CONT_DIF_P
V 400,500,CONT_DIF_N
V 1000,1000,CONT_DIF_N
V 500,2000,CONT_POLY
V 1000,4700,CONT_BODY_N
V 1000,300,CONT_BODY_P
EOF
まず,“Graal” で equal.ap ファイルを開くと,図 6.4 のように表示されます.
次に,Tools→Flat を選択し,表示したいサブセルを選択します.すると,図 6.5 のように表示されます.全範囲表
示したい場合は,トップセルの全領域を囲むようにドラッグします.
尚,チュートリアルと同様に RDS TECHNO NAME には,cmos 8.rds を設定しています.
Tools→Hierarchy を選択して階層ウィンドウを表示し,“Go Down” を選択してサブセルを選択すると,サブセル
である inv x1.ap ファイルのみを表示させることができます.
(図 6.6).このときにトップセルでサブセルを Flat 表示に
していた場合はサブセルのみの表示はできません.
親セルに戻りたい場合には,“Go Up” を選択します.
ここからは,実際にファイルをトレースしていきます.
6.5
宣言の種類
.ap フォーマットの宣言の種類は次の通りです.
($man mbk)も参照して下さい.
V
H
A
S
C
I
R
:
:
:
:
:
:
:
Version,Via(Contact)
Header
Abutment Box
Segment
Connector
Instance
Reference
以下,各宣言についての説明と,実際に equal.ap,inv x1.ap ファイルでどのように使用されているかを解説します.
34
第6章
仮想配置
図 6.4: equal.ap ファイルを Graal で表示させた状態.トッ 図 6.5: equal.ap ファイルをサブセルまで全て表示した状態.
プセル(equal.ap)のみ表示されます.
6.5.1
サブセル(inv x1.ap)も表示されます.
V : Version
主に最初の行に宣言されています.equal.ap,inv x1.ap 共に 1 行目には
V ALLIANCE : 4
と記述されています.これは,Alliance の Version が 4 であることを示していると思います.Ver.5 では,4 の代わりに
5 ではなく 6 と表示されています.
6.5.2
H : Header
H はヘッダー情報であり,主に Version の次の行に宣言されています(equal.ap 2 行目,inv x1.ap 2 行目).equal.ap
では,
H equal,P,24/10/2002/100
と記述されていますが,これは,equal という名前のファイルを 2002 年 10 月 24 日に作成し,1 マス(1λ)の幅が 100
であることを示しています(P については不明).ファイル名を変更してテストしたい場合は,ヘッダ部分も変更する必
要があります.このファイル名は,そのままトップセルの名前となっています.
6.5.3
A : Abutment Box
A は Abutment Box であり,各セルの外枠を指定しています.又,宣言 “I” でサブセルを呼び出す時にも使用します.
領域は枠からはみ出ていると,呼び出し元のセルと被るので気を付けて下さい.
この宣言の一般的な型は
6.5. 宣言の種類
35
図 6.6: サブセルである inv x1.ap ファイルのみを直接表示した状態
36
第6章
仮想配置
A x1 , y1 , x2 , y2
となります(図 6.7).
(x2,y2)
(x1,y1)
図 6.7: Abutment Box の宣言
equal.ap の 3 行目
A 0,0,5000,6100
は,座標が (0, 0) から (50, 61) までであることを示しています.これを実際に表示させるために,次のように,必要部分
以外を削除したファイルを用意しました.
V ALLIANCE : 4
H equal,P,24/10/2002,100
A 0,0,5000,6100
EOF
このファイルは,equal.ap ファイルの 1,2,3,41 行目の V,H,A,EOF のみを抽出したものです.Graal で画面に
表示すると,図 6.8 のようになります.Abutment Box はサブセルのものであっても,常に画面に表示されます.
6.5. 宣言の種類
37
図 6.8: セルの枠である Abutment Box とセル名のみ画面に出力されます
38
第6章
6.5.4
仮想配置
S : Segment
S は,Segment の略です.型は,
S x1 , y1 , x2 , y2 , ws , N ame, Direction, Layer
となります.これは,仮想配置が座標 (x1 , y1 ),(x2 , y2 ) を結ぶ軸であることを示しています.ws(Symbolic Width)は
仮想幅であり,実際の幅はテクノロジーファイルと変換公式を使用して値を求めます(詳しくは第 9 章で解説します).
Name は,領域のラベルです.ラベルを付けない場合は “*” とします.Direction は方向であり,Segment では “UP”,
“DOWN”,“LEFT”,“RIGHT”,で指定します(Connector の宣言では “NORTH”,“SOUTH”,“EAST”,“WEST”
となります).Direction は,始点から終点への方向を示していて,それぞれ変換公式が異なります.必ず (x1 , y1 ) は左
下寄り,(x2 , y2 ) は右上寄りになります.よって,Direction が DOWN 又は LEFT の場合は (x2 , y2 ) が始点になるので
注意して下さい.最後の Layer はレイヤの種類を宣言します.宣言できるレイヤは,
($ man prol)の “Mbk layers” に意
味と共に掲載されています.そのうち実際に使用される可能性のあるレイヤは,“cmos 7.graal” 等(∼.graal)のテクノ
ロジーファイル内の “Segment Panel Button Label, Foreground , Background Color” 及び,“Transistor Panel Button
Label, Foreground, Background Color” に記述されています.
#
#
#
#
#
/*------------------------------------------------------------\
|
|
| Segment Panel Button Label, Foreground , Background Color |
|
|
\------------------------------------------------------------*/
TABLE GRAAL_SEGMENT_NAME
NWELL
PWELL
NDIF
PDIF
NTIE
PTIE
POLY
ALU1
ALU2
ALU3
ALU4
ALU5
ALU6
TPOLY
TALU1
TALU2
TALU3
TALU4
TALU5
TALU6
Nwell
Pwell
Ndif
Pdif
Ntie
Ptie
Poly
Alu1
Alu2
Alu3
Alu4
Alu5
Alu6
Tpoly
Talu1
Talu2
Talu3
Talu4
Talu5
Talu6
tan
light_yellow
lawn_green
yellow
spring_green
light_goldenrod
red
royal_blue
Cyan
light_pink
green
yellow
violet
hot_pink
royal_blue
turquoise
light_pink
green
yellow
violet
Black
Black
Black
Black
Black
Black
Black
Black
Black
Black
Black
Black
Black
Black
Black
Black
Black
Black
Black
Black
END
#
#
#
#
#
/*------------------------------------------------------------\
|
|
| Transistor Panel Button Label, Foreground, Background Color |
|
|
\------------------------------------------------------------*/
TABLE GRAAL_TRANSISTOR_NAME
NTRANS
PTRANS
Ntrans lawn_green
Ptrans yellow
Black
Black
6.5. 宣言の種類
39
END
このように,仮想配置の場合は,Transistor,Diffusion は単体で宣言されます(実配置時には Transistor は Polysillicon,
Active,Implant,Well の 4 種類のレイヤ別々に宣言されます).ちなみに,Alliance では Metal1 を ALU1 と表します.
ALU1 はアルミ 1 の略です.Ver.5 では CALU1∼6(おそらく Connector ALU)と POLY2 が追加されます.実際にど
のようにしてレイアウトが決定されるかについては第 9 章で解説します.
例えば,
S 200,300,200,500,100,*,UP,ALU1
は,図 6.9 のようになります.H 宣言で 1 マス(1λ)の幅が 100 になっているので,値は 100 の倍数になっているのが
わかります.
real Width
Real
Length
(2 ,5)
ls
(2, 3)
図 6.9: 始点が (2, 3),終点が (2, 5),仮想幅 ws が 1,ラベルは未設定,方向は上(UP),レイヤは ALU1 となります.
矢印の根本が始点,先端が終点です.始点から終点までの距離は ls(Symbolic Length)と言います.ここでは ls = 2 で
す.wr (Real Width),lr (Real Length)は S 宣言の値と.rds の値を元に変換公式で算出されます.
ここで注意することは,仮想配置は軸の位置と長さ,仮想幅を設定しているに過ぎないということです.Graal では領
域が表示されていますが,これは環境変数 RDS TECHNO NAME に指定されたテクノロジーファイル(拡張子は.rds)
に記述されているパラメータと変換公式で算出した値を表示しているのであって,.ap ファイルそのものには長方形の領
域情報は存在しません.よって,.ap ファイルの値を変えなくてもテクノロジーファイルのパラメータを変えると Graal
でのレイアウトは変化します.
ここに出てくる仮想幅は,テクノロジーファイルと変換公式に使用されるパラメータであり,各領域別々の値です.
Graal で領域を表示する時や s2r を使用して実配置に変換する際に使用されます.詳しくは第 9 章で説明するので,まだ
意識する必要はありません.一般的に電源(vdd,vss)等は値が大きくなります.
次のファイルは equal.ap から V,H,A,S のみを抽出したものです.これを Graal で表示すると図 6.10 のようにな
ります.
V
H
A
S
S
S
S
S
S
S
S
S
S
ALLIANCE : 4
equal,P,24/10/2002,100
0,0,5000,6100
1000,400,4000,400,200,auxsc1,RIGHT,ALU1
500,0,500,3300,200,a,UP,ALU2
1000,400,1000,3300,200,auxsc1,UP,ALU2
4000,400,4000,3300,200,auxsc1,UP,ALU2
4500,0,4500,3300,200,b,UP,ALU2
2850,0,2850,6100,300,vss,UP,ALU2
2150,0,2150,6100,300,vdd,UP,ALU2
2800,1100,2900,1100,600,*,RIGHT,ALU2
2800,1100,2900,1100,600,*,RIGHT,ALU1
2850,900,2850,1300,300,*,UP,ALU2
40
第6章
S 2850,900,2850,1300,300,*,UP,ALU1
S 2100,5500,2200,5500,600,*,RIGHT,ALU2
S 2100,5500,2200,5500,600,*,RIGHT,ALU1
S 2150,5300,2150,5700,300,*,UP,ALU2
S 2150,5300,2150,5700,300,*,UP,ALU1
S 1500,5500,3500,5500,600,vdd,RIGHT,ALU1
S 1500,1100,3500,1100,600,vss,RIGHT,ALU1
EOF
図 6.10: レイヤの種類は ALU1,ALU2 のみ.一部の領域にはラベルがついています.
同様に,次のファイルは inv x1.ap から抽出したものであり,図 6.11 のように表示されます.
V
H
A
S
S
S
S
S
S
S
S
S
S
S
S
ALLIANCE : 4
inv_x1,P,31/ 7/99,100
0,0,1500,5000
1000,1000,1000,4000,200,*,DOWN,ALU1
1000,2800,1000,3700,300,*,DOWN,PDIF
700,2600,700,3900,100,*,UP,PTRANS
1000,800,1000,1200,300,*,UP,NDIF
700,600,700,1400,100,*,DOWN,NTRANS
0,300,1500,300,600,*,RIGHT,ALU1
0,4700,1500,4700,600,*,RIGHT,ALU1
400,2000,700,2000,300,*,RIGHT,POLY
700,1400,700,2600,100,*,UP,POLY
500,1000,500,4000,100,*,DOWN,ALU1
0,3900,1500,3900,2400,*,RIGHT,NWELL
350,400,350,1200,400,*,UP,NDIF
仮想配置
6.5. 宣言の種類
41
S 350,2800,350,4600,400,*,DOWN,PDIF
EOF
又,図 6.11 をアウトライン表示にすると,図 6.12 のようになります.
図 6.10 と equal.ap ファイルに宣言されているように,トップセルでは主に,各セルの配線をしています.ラベルと方
向を見れば,トレースしやすいでしょう.又,図 6.12 と inv x1.ap ファイルにあるように,Transistor は,Transistor 単
体で宣言されています.Transistor の構成はテクノロジーファイルに記述されています.このレイアウトは変換公式を使
用した値を画面に表示しているのであり,.ap ファイルに記述されている領域の軸は直接画面には表示されません.
図 6.11: equal.ap ファイルの A,S 宣言のみを表示した状態
図 6.12: 領域の軸は画面には表示されません.
42
第6章
6.5.5
仮想配置
C : Connector
C は Connector の略です.ネットリストの終端を示していて,他のセルとの接続点に宣言します.型は,
C x, y, ws , N ame, N umber, Orientation, Layer
となります.
(x, y)
w
Abutment Box
図 6.13: Connector
図 6.13 のように,Connector は,Segment のように座標を始点と終点の 2 つに分けるのではなく,領域の中心に宣言
します.Segment 宣言と同様 ws は,仮想幅であり実際の幅はテクノロジーファイルのパラメータと変換公式により決定
します.幅は (x, y) を中心に,Abutment Box の線に沿った方向に広がります.Name はラベルです.“0” から始まり,
同じラベル名の場合にはこの数字をインクリメントします.行の順番は関係ないと思います.
Orientation は,Abutment Box を基準にした方向であり,“NORTH”,“SOUTH”,“EAST”,“WEST” で宣言され
ます.例えば,Abutment Box の下に Connector を宣言する場合は Direction の値は SOUTH となります.Layer には
ALU1 もしくは ALU2 が宣言されます.
次のファイルは equal.ap から V,H,A,C のみを抽出したものです.これを Graal で表示すると図 6.14 のようにな
ります.
V ALLIANCE : 4
H equal,P,24/10/2002,100
A 0,0,5000,6100
C 2850,0,300,vss,0,SOUTH,ALU2
C 2150,0,300,vdd,0,SOUTH,ALU2
C 2850,6100,300,vss,3,NORTH,ALU2
C 2150,6100,300,vdd,3,NORTH,ALU2
C 5000,1100,600,vss,2,EAST,ALU1
C 5000,5500,600,vdd,2,EAST,ALU1
C 0,1100,600,vss,1,WEST,ALU1
C 0,5500,600,vdd,1,WEST,ALU1
C 500,0,200,a,0,SOUTH,ALU2
C 4500,0,200,b,0,SOUTH,ALU2
EOF
同様に,次のファイルは inv x1.ap から抽出したものであり,図 6.15 のように表示されます.
V ALLIANCE : 4
H inv_x1,P,31/ 7/99,100
A 0,0,1500,5000
C 1500,4700,600,vdd,1,EAST,ALU1
C 1500,300,600,vss,1,EAST,ALU1
C 0,4700,600,vdd,0,WEST,ALU1
C 0,300,600,vss,0,WEST,ALU1
EOF
6.5. 宣言の種類
図 6.14: SOUTH には,入出力端子もあります
43
図 6.15: EAST,WEST しかありません.これらは電源電圧
になります.
44
第6章
6.5.6
仮想配置
I : Instance
I は Instance の略であり,サブセルを Instance(実体)として呼び出す際に宣言します.宣言の型は,
I x, y, Cellname, Instance name, Sym
となります.ここで,x, y は呼び出し元のセルの座標,Cellname は呼び出されるサブセルのファイル名(拡張子 .ap
はいりません),Instance name は呼び出したサブセルにつけるラベル,Sym は向きです(図 6.16).サブセルは環境
変数 MBK CATAL NAME に指定されているかカレントディレクトリになければなりません.
Abutment Box
(x, y)
図 6.16: 外枠は呼び出し元,内枠は呼び出された側(サブセル)の Abutment Box です.呼び出し元のセルの座標 (x, y)
にサブセルの Abutment Box の左下の座標(主に (0, 0))が重なります.
Sym の変数は 8 種類あります(表 6.1).基本的には ROT P,M 及び SY RP,M は使用しません.
次のファイルは equal.ap から V,H,A,C のみを抽出したものです.これを Graal で表示すると図 6.17 のようにな
ります.
V ALLIANCE : 4
H equal,P,24/10/2002,100
A 0,0,5000,6100
I 0,800,inv_x1,auxsc1,NOSYM
I 3500,800,inv_x1,b,NOSYM
EOF
変数名
意味
図の番号
NOSYM
変更しない
6.18 左
SYM X
X 軸反転
6.19 左
SYM Y
Y 軸反転
6.19 右
SYMXY
XY 軸反転
6.18 右
ROT P
左に 90 °回転
6.20 左
ROT M
右に 90 °回転
6.20 右
SY RP
Y 軸反転後,左に 90 °回転
6.21 左
SY RM
Y 軸反転後,右に 90 °回転
6.21 右
表 6.1: Sym の変数の種類
6.5. 宣言の種類
45
図 6.17: 左の枠には座標 (0, 8) 上に “auxsc1” と言うラベル名を付けたサブセル inv x1 の Abutment Box の左下 (0, 0)
を重ね合わせるように配置しています.右の枠には,座標 (35, 8) 上に “b” と言うラベルを付けたサブセル inv x1 の
Abutment Box の左下 (0, 0) を重ね合わせるように配置しています.Tools→Flat で,サブセルの内容を表示しなくて
も,Connector,Abutment Box,Reference は最初から表示されます.
46
第6章
仮想配置
Sym を変更した場合
左のサブセルの Sym を NOSYM に,右を SYMXY にしてサブセルを表示すると,図 6.18 のようになります.
V ALLIANCE : 4
H equal,P,24/10/2002,100
A 0,0,5000,6100
I 0,800,inv_x1,auxsc1,NOSYM
I 3500,800,inv_x1,b,SYMXY
EOF
左のサブセルの Sym を SYM X に,右を SYM Y にした場合(図 6.19).
V ALLIANCE : 4
H equal,P,24/10/2002,100
A 0,0,5000,6100
I 0,800,inv_x1,auxsc1,SYM_X
I 3500,800,inv_x1,b,SYM_Y
EOF
左のサブセルの Sym を ROT P に,右を ROT M にした場合(図 6.20).
V ALLIANCE : 4
H equal,P,24/10/2002,100
A 0,0,5000,6100
I 0,800,inv_x1,auxsc1,ROT_P
I 3500,800,inv_x1,b,ROT_M
EOF
左のサブセルの Sym を SY RP に,右を SY RM にした場合(図 6.21).
V ALLIANCE : 4
H equal,P,24/10/2002,100
A 0,0,5000,6100
I 0,800,inv_x1,auxsc1,SY_RP
I 3500,800,inv_x1,b,SY_RM
EOF
6.5. 宣言の種類
図 6.18: サブセルの内容を表示した状態.左はそのまま.右
は X 軸 Y 軸反転
47
図 6.19: 左のサブセルは X 軸反転,右は Y 軸反転
48
第6章
仮想配置
図 6.20: 左のサブセルは左に 90◦ 回転,右のサブセルは右に 90◦ 回転.サブセルは親セルが指定した座標の右上に配置
されるので,右のサブセルは親セルの Abutment Box からはみ出ています.
図 6.21: 左のサブセルは Y 軸反転後に左に 90◦ 回転,右のサブセルは Y 軸反転後に右に 90◦ 回転
6.5. 宣言の種類
49
基本的にサブセル側の Abutment Box の左下の点は (0, 0) となります.この点の位置を変更すると,Graal で表示した
時にレイアウトが崩れるので注意して下さい.
例えば,inv x1.ap ファイルの 3 行目を
A 0,0,1500,5000
から,
A 300,500,1500,5000
に変更すると,Abutment Box の左下の座標の位置が (0, 0) から (3, 5) に代わり,図 6.22 のようになります.
図 6.22: 図 6.6 と比べ,Abutment Box が内側に寄っています
このファイルを equal.ap が読み込むと,図 6.23,6.24 のようになります.
50
第6章
図 6.23: Connector がずれているのがわかります.
仮想配置
図 6.24: inv x1.ap ファイルの Abutment Box の左下の座標
(3, 5)(本来なら (0, 0))を Instance 宣言で指定した位置に配
置するので,サブセルが左下方向にずれています.
6.5. 宣言の種類
6.5.7
51
R : Reference
“R” は Reference の略です.Reference はメタル 1 の上に配置され,Ref の上に VIA を設置し,メタル 2 を配線しま
す.要は入出力のコネクタ宣言の一種だと思っていて下さい.詳しい解説は 84 ページで行います.R の宣言の型は,
R x, y, Contact, Label
です.x, y は,中心の座標 (x, y),Contact は “ref con” か “ref ref” を設定します.Ver.4 のセルライブラリには ref con,
Ver.5 では ref ref が使用されています.Label にはコンタクトのラベルを宣言します.ラベルを宣言しないと描画できま
せん.
次のファイルは inv x1.ap から V,H,A,R のみを抽出したものです.equal.ap ファイルでは使用されていませんが,
equal.ap ファイルを Graal で表示すると,inv x1.ap の内容を表示しなくても R は画面に表示されます(32 ページ図 6.4,
43 ページ図 6.17).これを Graal で表示すると図 6.25 のようになります.
V ALLIANCE : 4
H inv_x1,P,31/ 7/99,100
A 0,0,1500,5000
R 1000,4000,ref_con,nq_40
R 1000,3500,ref_con,nq_35
R 1000,3000,ref_con,nq_30
R 1000,2500,ref_con,nq_25
R 1000,2000,ref_con,nq_20
R 1000,1500,ref_con,nq_15
R 1000,1000,ref_con,nq_10
R 500,1000,ref_con,i_10
R 500,1500,ref_con,i_15
R 500,2000,ref_con,i_20
R 500,2500,ref_con,i_25
R 500,3000,ref_con,i_30
R 500,3500,ref_con,i_35
R 500,4000,ref_con,i_40
EOF
52
第6章
仮想配置
図 6.25: inv x1.ap において,A,R のみ表示した状態.この例でのラベルの右の数字は,Y 軸の高さを表しています.
6.5. 宣言の種類
6.5.8
53
V:
V は 1 行目には Version の意味で使いますが,それ以外の行では Via の略として(多分)コンタクトの宣言に使用し
ています.
宣言の型は,
V x,y,CONT Name
となります.x, y はコンタクトの中心の座標,CONT Name は CONT までは同じで,N ame の部分にはコンタクトの
種類を宣言します.コンタクトの種類は,
($ man prol)の “Mbk patterns” にありますが,実際に使用可能なレイヤは
Graal のテクノロジーファイル(今回は cmos 7.graal)の “Via Panel Button Label, Foreground , Background Color”
に掲載されています.
#
#
#
#
#
/*------------------------------------------------------------\
|
|
|
Via Panel Button Label, Foreground , Background Color
|
|
|
\------------------------------------------------------------*/
TABLE GRAAL_VIA_NAME
CONT_DIF_N
CONT_DIF_P
CONT_BODY_N
CONT_BODY_P
CONT_POLY
CONT_VIA
CONT_VIA2
CONT_VIA3
CONT_VIA4
CONT_VIA5
C_X_N
C_X_P
Cont_NDif
Cont_PDif
Cont_NTie
Cont_PTie
Cont_Poly
Via_1-2
Via_2-3
Via_3-4
Via_4-5
Via_5-6
Cont_CxN
Cont_CxP
lawn_green
yellow
spring_green
light_goldenrod
red
cyan
light_pink
green
yellow
violet
orange
orange
Black
Black
Black
Black
Black
Black
Black
Black
Black
Black
Black
Black
END
CONT BODY P は P-Well コンタクト,CONT BODY N は N-Well コンタクトを表しています(C X N,C X P の
使い方は不明).
次のファイルは equal.ap から V,H,A,V のみを抽出したものです.これを Graal で表示すると図 6.26 のようにな
ります.
V ALLIANCE : 4
H equal,P,24/10/2002,100
A 0,0,5000,6100
V 1000,400,CONT_VIA
V 4000,400,CONT_VIA
V 4000,3300,CONT_VIA
V 4500,3300,CONT_VIA
V 500,3300,CONT_VIA
V 1000,3300,CONT_VIA
V 2850,1100,CONT_VIA
V 2150,5500,CONT_VIA
EOF
同様に,次のファイルは inv x1.ap から抽出したものであり,図 6.27 のように表示されます.
V ALLIANCE : 4
54
第6章
仮想配置
H inv_x1,P,31/ 7/99,100
A 0,0,1500,5000
V 1000,3000,CONT_DIF_P
V 400,4500,CONT_DIF_P
V 1000,3500,CONT_DIF_P
V 400,500,CONT_DIF_N
V 1000,1000,CONT_DIF_N
V 500,2000,CONT_POLY
V 1000,4700,CONT_BODY_N
V 1000,300,CONT_BODY_P
EOF
図 6.26: Segment が ALU1 と ALU2 のみなので,コンタク 図 6.27: 各レイヤと Alu1(Metal1)を繋ぐコンタクトが配
トの種類も VIA だけです.
置されています.
6.6. Graal の使用方法 2
6.6
55
Graal の使用方法 2
ここまでで ap フォーマットの記述がわかったところで,Graal の他の機能について解説します.
6.6.1
Graal を使用したレイアウト描画
Graal で領域を描画するには,メニューバーの Creat から,描画したいレイヤのウィンドウを表示させます.
Instance サブセルを呼び出します.Instance を選択するとまず呼び出すサブセルの方向(Sym)を決定します.そ
して,配置したい場所でカーソルをクリックすると,サブセルを選択する画面が表示されます.セルを決定すると,ク
リックした場所の右上にセルが表示されます.
Abutment Box Abutment Box はセルの範囲を表すので,各 ap ファイルに一つしか作成できません.
Segment,Transistor Creat→Segment,Creat→Transistor を選択した場合には各ウィンドウに Width,Name,Simple という 3 つの項目があります(図 6.28).
図 6.28: Segment ウィンドウ
Width は仮想幅です.設定しない場合には,Graal のテクノロジーファイルに記述されている値が使用されます.Name
は,ラベルです.Simple ボタンはクリックすると Wire に変わります.普段は Simple 設定ですが,Wire にした場合は,
描画する際に終点を決めると,その点がそのまま始点となります.Wire 設定にすることで,軸をずらさずに描画するこ
とができます.ポリシリコンを描画する際に使用すると良いかもしれません.
56
第6章
仮想配置
Segment と Transistor を選択した場合には,軸の始点と終点を選択するとその周囲に自動的に領域が描画されます.こ
の領域の大きさを設定する方法は第 9 章で解説します.
Via
コンタクトを描画する際に使用します.
Connector
Connector は Abutment Box を作成していないと生成できません.
Reference Reference は必ずラベルを設定しなければなりません.
6.6.2
レイアウトの修正
作成したレイアウトを修正するには,メニューバーの Edit と Window を使用します.それぞれの違いは,Edit は
領域単体を選択するのに対して,Window は領域の範囲を選択します.いくつかの領域を同時に操作したい場合には
Window を選択すると良いでしょう.ただしそれぞれの操作において,Window の場合は少し癖があるので,注意し
て下さい.
Undo
一つ前の状態に戻します.
Redo 一つ後の状態に進めます.一回以上 Undo を実行していなければいけません.
Copy 領域をコピーします.Copy を選択してからコピーしたい領域を選択し,コピーしたい場所を指定します.
Move 領域を移動します.Move を選択してから移動したい領域を選択し,移動先を指定します.
Delete 領域を削除します.Delete を選択してから削除したい領域を指定します.
Stretch 領域の長さを調節します.Stretch を選択してから伸ばしたい領域を選択して,長さを調節します.決定する
まで表示しないのでやや使いづらいと思います.軸方向にしか伸びないので注意して下さい.Abutment Box の場合は
線上にカーソルを合わせます.軸は無いのでどの方向にも調節できます.
Modify
指定した領域の内容を修正します.Modify を選択してから変更したい領域を指定します.すると,Modify
ウィンドウが表示されるので,修正を加えて Apply をクリックします.
6.6.3
デザインルールチェック
デザインルールをチェックするには “Druc”($ man druc)を使用します.Druc は ap フォーマットとテクノロジー
ファイル(.rds)に記述されたデザインルールを照らし合わせてエラーを報告します.Druc は単独でも使用できますが,
Graal のツールオプションから使用することもできます.この場合にはエラーチェックをしたい範囲を囲うことで Druc
がエラーチェックをします.
Druc を使用するためにはテクノロジーファイルにエラーチェックをするためのデザインルールを記述しなければなり
ません.文法は,166 ページの 11.5 で簡単に解説します.
6.6.4
ショートカットコマンド
操作に慣れてきたら,ショートカットコマンドを使用すると効率が上がることでしょう.ショートカットコマンドは,
メニューバーを開いた際に∼の右側に表示されます.ここで,Ctrl∼は Ctrl を押しながら∼ですが,Meta∼は Alt を押
しながら∼と言う意味になります.
57
第 7 章 実配置
7.1
概要
前章では s2r の入力ファイルで仮想配置と.ap フォーマットについて解説しました.本章では,s2r の出力ファイルと
なる実配置と.cif フォーマットについて解説します.テクノロジーファイルは ap ファイルから cif ファイルに変換するた
めのパラメータを記述するので前章の ap ファイル及び本章の cif ファイルがわかっていると修正も楽になります.
実配置は別名 “RDS(Real Data Structure)”,“Real” とも呼ばれます..ap フォーマットは “Alliance Physical format”
と言うだけあって,Alliance 専用のフォーマットですが,CIF(Caltech Intermediate Format)は,マスクレベル
レイアウトの変換に使用する標準的なレイアウト記述言語です.
Alliance では,VHDL を論理合成した結果を最終的に CIF 形式で出力します.又,Magic1 では,記述したレイアウト
を CIF に変換することができます.CIF ファイルは ASCII フォーマットなので,エディタで表示し,編集することもで
きます.
CIF 形式は Dreal,Magic で表示します(図 7.1).よって,CIF 形式について解説した後,Dreal,Magic の使用方法
を解説し,個別の拡張表記について解説します.本章の最後で実際に CIF ファイルをトレースします.
CIF フォーマットについては,Carver Mead, Lynn Conway の “Introduction VLSI Systems” [2] の 115∼127 ページ
に詳しく掲載されているので,そちらも参照して下さい.
Dreal
.ap
Format
s2r
CIF
Format
Editor
Magic
図 7.1: .cif ファイルの流れ.本章では,色の付いている部分について解説します.
7.2
Magic,Alliance 共通のフォーマット形式
7.2.1
記号の説明
DS:Definition Start
DF:Definition Finish
9:セル名の宣言
C:Call(サブセルを呼び出し)
L:Layer の宣言
1 http://vlsi.cornell.edu/magic/
58
第 7 章 実配置
B:Box の宣言
T:Call した時にサブセルの位置を決める
E, End:終了の宣言.最後の行に記述
():Comment
;:宣言の終わりを示す
枠組み(DS, DF, E, ;)
CIF はセルの内容を
DS1;
セルの内容;
DF;
C1;
E
のように,DS と DF で囲みます.2つのセルがある場合は
DS1;
セル 1 の内容;
DF;
DS2;
セル 2 の内容;
DF;
C2;
E
となります.
DS の次の数字はセルの番号です.実際にはセルの番号の次にスケールを宣言します(後述).又,最後の行には E(も
しくは End)と宣言します.E 以外の行は終わりに “;” を付けます.“C” については “7.2.1 階層設計” で説明します.こ
こでは
• DS と DF で囲まず,End の前の行に書く.
• 最初に読み込むセルを指定している.
という二点がわかれば良いです.
各セルの記述方法((), 9, L, B, )
セルには各領域 (Segment) がどのように配置されているかを宣言します.次の例で説明します.
1
2
3
4
5
6
7
8
9
10
11
(N-Diffusion by Magic);
DS 1 50 2;
(セルの番号とスケール);
9 ndiff;
(セル名);
L CWP;
(P-Well);
B 52 52 6 6;
L CAA;
(Active);
B 12 12 6 6;
L CSN;
(N_Implant);
B 28 28 6 6;
DF;
7.2. Magic,Alliance 共通のフォーマット形式
12
13
14
59
C 1;
End
このセルは,Magic で N-diffusion を最小構成で記述し,CIF 形式で保存したファイルを,エディタで表示したものです.
ここでは読み方についてのみ述べます.
まず,1 行目の () で囲った中の文はコメントなので無視されます.続いて 3 行目の
DS 1 50 2;
の “DS 1” は,このセルの番号が 1 であるということです.セルの番号が 2 の場合は “DS 2” となります.又,“50 2” に
ついてですが,λ の調整に関係があると考えてください.左の値 50 を 2 倍の 100 にすると,各領域 (Segment) は λ × 2
の大きさとなります.右の値 2 を 1/2 倍の1としても,各領域 (Segment) は λ × 2 の大きさとなります.よって,左右
の値の比を変更しなければ変化は無いようです.Magic では初期設定のままだと “50 2” となります(現在調査中).
DS の次の行には,セル名を記述します(4 行目).“9” は,セル名の宣言です.
9 ndiff;
は,このセル名が ndiff であることを宣言しています.
セル名の 9 を除くと,その次の単語を宣言と誤認してエラーになるようです.例えば,
ndiff;
とだけ書くと,
n diff;
と解釈し,n の部分を読み込む際にエラーを出力し,diff というセル名になるようです.
5∼10 行目までは,レイヤの種類と配置する場所,大きさを宣言していきます.まず,5 行目の
L CWP;
は,それ以下(ここでは 6 行目のみ)の宣言が P-Well についてであることを宣言しています.レイヤは,C で始まる 3
文字の略称で宣言されています.
各レイヤの名前と略称については表 7.1 の通りです2 .ただし,この略称は Magic の初期設定のままなので,略称が変
わることがあります(114 ページ参照).
配置と大きさの宣言には,B (Box),W (Wire),R (Roundflash),P (Polygon) がありますが,Magic,Alliance の
場合長方形を並べて記述しているので,B (Box) ルールのみを使用します3 .
Box 宣言は以下のようになります.
B length(dx) width(dy) x y;
最初の 2 つのパラメータには,領域(Segment)の長さ dx と幅 dy を,後の 2 つのパラメータには領域(Segment)の
中心点(軸)の位置 (x, y) を数値で記述します(図 7.2).
この例の 5, 6 行目の
L CWP;
B 52 52 6 6;
は,長さ 52,幅 52,中心点が (6, 6) となります.ここで注意するのは,この数字はグリッドを基準にしている点です.
Magic での初期設定では,1λ = 4 グリッドなので,λ ベースとした場合は値を 4 で割り,中心点は (1.5λ, 1.5λ),長さ
x = 13λ,幅 y = 13λ となります(図 7.3 ).
全てのレイヤを表示した状態は 63 ページの図 7.9 を参照して下さい.
同じレイヤを 2 箇所で宣言する際には,
2 MOSIS
のデザインルールの HP には,Select として載っていますが,このドキュメントでは Implant に統一しました.
R を使用する箇所もあるようです
3 状況によって
60
第 7 章 実配置
表 7.1: マスクレイヤと CIF 形式での略称
CIF 形式での略称
レイヤ名
P Well
CWP
N Well
CWN
Polysilicon
CPG
Polysilicon2
CEL
Poly-Contact
CCP
Metal1
CMF
Metal2
CMS
VIA
CVA
N Implant(N+Select)
CSN
P Implant(P+Select)
CSP
Active
CAA
Active-Contact
CCA
Width:dy
Length:dx
(0, 0) (x, y)
図 7.2: Box Rule
L CPG;
B 16 8 8 -4;
B 12 12 2 10;
(レイヤの種類は適当です);
のように,次の行に続けて宣言します.この結果は図 7.4 のように表示されます.
ここでは各領域とも軸を書きましたが,実際には表示されません.正確には,ap ファイルのは 2 点の長さなので軸,
cif ファイルの場合は 1 点なので重心と言えるでしょう.
又,領域が長方形ではなく,L 字形などの場合は,図 7.5,図 7.6 のように,2 つの Box を接触させるか,交差させる
ことで表示させています.
階層設計について(C, T)
階層設計とはそれぞれのセルが他のセルを部品として使用することで,CIF でも階層設計は可能です.CIF では,セ
ルの番号を DS の次の値で表すことは 56 ページの “7.2.1 各セルの記述方法” で解説しました.CIF では,まず E (End)
の上の行に書いてある C (Call) によって,最上位のセルを呼び出します.セル (DS で始まり DF で終わる) は全て最初
に読み込む C より手前に書かなければならないようです.続けて,呼び出したセル内に書いてある C により,他のセル
を呼び出します.
以下にセルが 3 つある場合の一例を示します.
DS 1;
9 Cell1;
....
DF;
7.2. Magic,Alliance 共通のフォーマット形式
61
(6.6)
6 (1.5
)
52
(13 )
6
(0.0)(1.5 )
52
(13 )
1
=4
図 7.3: Box Rule (P-Well のみ表示)
DS 2;
9 Cell2;
....
C1 T40 40;
DF;
DS 3;
9 Cell3;
....
C2 T40 80;
C2 T240 80;
DF;
(10, 10);
(10, 20);
(60, 20);
C3;
E
ここで,.... はセルの中身です.この例ではまず E の上の行のの C3 を読み,セル 3 (DS 3) を Call します.最初に Call
する層は最上位層です.最上位層では主にセルの配線をするようです.続いて,セル 3 (DS 3) の中にセル 2 を 2 つサブ
セルとして Call します.各セル 2 はセル 1 を Call します.図 7.7 のようなイメージになります.
T は,読み込んだサブセルを呼び出し元のセルのどの位置に配置するかの宣言です.注意する点は,各セルはそれぞ
れセルの左下が (0, 0) になるように宣言されていることです.これは,各セルが独立して宣言されているためです.従っ
て,そのまま配置したのではセルが被ってしまい,意図していない表示なります.
そこで,“T” で呼び出されたサブセルの (0, 0) の点が呼び出し元のセルのどの位置に重なるかを宣言するのです.
例えば,
DS 3;
....
C2 T40 80;
DF;
62
第 7 章 実配置
(2, 10)
(0, 0)
(8, -4)
図 7.4: 領域を 2 箇所に宣言した場合
(0, 0)
L CMF;
B 16 16 8 8;
B 24 12 12 10;
(0, 0)
図 7.5: 領域が重なっている場合の例
L CMF;
B 16 16 8 8;
B 8 12 20 10;
図 7.6: 領域が接している場合の例
は,セル 3 がセル 2 をサブセルとして呼び出し,セル 2 のセルの左下の座標 (0, 0) がセル 3 の座標 (10, 20) と重なるいう
ことを表しています.ここでも数値を 4 で割っています.
又,
DS 2;
....
C1 T40 40;
DF;
は,セル 2 の左下の座標を (0, 0) とした時に,セル 1 の座標 (0, 0) がセル 2 の座標 (10, 10) と重なるということを表して
います.ここで,セル 2 はセル 3 に呼び出されているので,セル 3 から見た場合のセル 1 はセル 3 の座標 (20, 30) と重
なることになります.図 7.7 とソースコードから,確認してみて下さい.
7.3
Magic を使用した場合の CIF の扱いについて
今回は Magic をデザインルールのチェック及びマスクレイヤの確認のために使用します.使用した Magic のヴァージョ
ンは 7.1 です.ダウンロード,インストール方法ついては割愛しますが,インストール時のオプションで cif ファイルの
出力ができるようにチェックしておいて下さい.
Magic を使用して領域を描き,Magic 標準フォーマットである .mag 形式で保存した場合と, .cif 形式で保存した場
合とでは,ファイルを開き直したときのレイアウトが違います.その理由は例えば .mag 形式の場合,Diffusion(拡散
層)は実際の領域のみを疑似レイヤとして宣言しますが,それに対して.cif 形式では,Active(活性層),Implant(不純
物層),Well の 3 種類のマスクレイヤに分解して個別に宣言するためです..mag 形式はこれらを疑似レイヤとして扱う
ことで,本来ならばオーバーラップを考える必要があるデザインルール(コンタクト,Dffusion 等)も,最小サイズと
7.3. Magic を使用した場合の CIF の扱いについて
Cell1
(20, 30)
(10, 20)
Cell2
63
Cell1
(70, 30)
(60, 20)
Cell2
Cell3
(0, 0)
図 7.7: 階層構造の概念
スペースルールのみに簡略化できます..mag 形式は Alliance の.ap 形式に相当していると思えば良いでしょう.詳しく
は,“Magic Tutorial #2 Basic Painting and Selection” の “11. What the Layers Mean をご覧下さい.
表 7.2 に.mag 形式の疑似レイヤとマスクに分解した .cif 形式のレイヤを載せました..mag 形式の Diffusion は .cif 形
式では Active に相当し,CIF ファイルに変換するときに Implant と Well を自動生成します.こうすることで,設計者
は Implant,Well を意識することなく設計できます(開いたときにエラーが生じるかもしれませんが).
これらのルールについては Magic のテクノロジーファイルに記述されています(“7.3.5 テクノロジーファイル” を参
照)ここでは,Magic での CIF ファイルの入出力方法及び, .mag ファイルとのレイアウトの違いについて説明してい
きます.
7.3.1
Magic での CIF ファイルの入出力
CIF ファイルの出力
Magic で記述したレイアウトを CIF 形式で出力するときには,Magic 上でコマンド
:cif write file
を実行します.Backspace を押しても文字は消去できないようなので,途中で間違えた場合は enter ボタンを押した後再
び入力します.これで,file.cif という名前のファイルができます.
:cif
とだけ打ち込んだ場合は,Topcellname.cif (最上位セルの名前.cif)となります..mag 形式ではファイル名がトップ
セルです.
CIF ファイルの入力
Magic で CIF ファイルを読み込むには,Magic を起動した後,コマンド
:cif read file
を実行します.このときも Backspace は使えないようです.又,Magic を起動する際に CIF ファイルを引数に指定して
も読み込めません.
64
第 7 章 実配置
.mag 形式
.cif 形式
短縮したレイヤ名
N-Well
N-Well
CWN
P-Well
P-Well
CWP
Metal1
Metal1
CMF
Metal2
Metal2
CMS
Polysillicon
Polysillicon
CPG
Polysillicon2
Polysillicon2
CEL
Polysilicon Contact
Metal1
Poly Contact
Polysillicon
CMF
CCP
CPG
Via
Metal2
Via
Metal1
CMS
CVA
CMF
N-Diffusion
Active
N Implant
P-Well
CAA
CSN
CWP
P-Diffusion
Active
P Implant
N-Well
CAA
CSP
CWN
N-Diffusion Contact
Metal1
Active Contact
CMF
CCA
Active
N Implant
P-Well
CAA
CSN
CWP
P-Diffusion Contact
Metal1
Active Contact
Active
P Implant
N-Well
CMF
CCA
CAA
CSP
CWN
N-Well Contact
Metal1
Active Contact
Active
CMF
CCA
CAA
N Implant
N-Well
CSN
CWN
Metal1
CMF
Active Contact
Active
CCA
CAA
P Implant
P-Well
CSP
CWP
P-Well Contact
表 7.2: .cif 形式ではマスクレイヤに分けて記述されます.レイヤ名は Magic 標準のテクノロジーファイルを使っている
場合です.変更の仕方は 97 ページで解説します.
7.3. Magic を使用した場合の CIF の扱いについて
7.3.2
65
Magic での CIF(マスクレイヤ)の出力
以下に,MOSIS ルールでデザインルール違反が起きないための最小幅で領域を描いた図と,それを .cif 形式で出力し
た後,再度 Magic で読み直した図を載せました.それぞれについて解説していきます.尚,この値は Magic 標準のテク
ノロジーファイル “scmos.tech27” というファイルを用いています.このファイルは 1 ミクロンプロセス用です.Alliance
で実際に作成するテクノロジーファイルはサブミクロン用なので,デザインルールは多少異なります(97 ページ参照).
N-Diffusion (P-Diffusion)
Magic では Diffusion の最小幅は 3λ です..mag 形式では Diffusion は図 7.8 のように Diffusion 単体で表示されます.
ちなみに,エディタでファイルを開いたら,
magic
tech scmos
timestamp 1039954436
<< ndiffusion >>
rect 0 0 3 3
<< end >>
と表示されました.このファイルの意味は,
• scmos というテクノロジーファイルを使用.
• N-Diffusion についての宣言である.
• 長方形(領域)が (0, 0) から (3, 3) までである.
ということを意味しています..mag 形式では,λ ベースで数値が出力されるので,4 で割らなくても平気なようです.
このファイルを.cif 形式で保存し,保存した.cif ファイルを Magic で開き直すと図 7.9 のようになります.
3
Active(CAA)
(0.0)
3
overlap
=2
(6.6)
12
overlap
=3
(0.0)
図 7.8: Magic 標準形式 (.mag) の N-Diffusion
28
52
12
N_Implant(CSN)
28
P-Well(CWP)
52
1
=4
図 7.9: Cif 形式で読み込んだ N-Diffusion
このファイルをエディタで表示させた時は,次のようになります.
(セルの Box 宣言のみ載せました.
)
CAA(Active)
: B 12 12 6 6;
CSN(N_Implant): B 28 28 6 6;
66
第 7 章 実配置
CWP(P-Well)
: B 52 52 6 6;
cif 形式では,マスクレイヤをそれぞれ重ね合わせることにより各領域を表現します.この例では,.mag 形式では
Diffusion とだけ宣言されていましたが,実際には Diffusion は Active,Implant,Well の 3 つのレイヤで構成されていま
す.よって,.cif ファイルの Box には 3 つのレイヤの領域が宣言されているのです.尚,.mag 形式の Diffusion は,.cif
形式の Active に相当します.エディタでこの 3 つのレイヤのうち Well か Implant を消すと,何も表示されなくなりま
す(Active,Implant を消した場合でも Well は単独で表示できます).
図 7.9 では Implant を点線で表示していますが,Magic を使用しているときには表示されません(Alliance で Dreal を
使用した場合は表示されます).
わかりやすくするために Diffusion 領域の左下を原点としました.初期設定では 1λ = 4 グリッドなので,長さ,幅の
値は 4 の倍数となります.又,中心点については 2 の倍数(この例では全てのレイヤで (6, 6))になります.
Implant 領域は Active 領域から 2λ 分オーバラップします.Well も Implant 領域から 3λ 分オーバラップします.中心
部のレイヤは 3 層になります.このファイルで一番高いレイヤは Active,一番低いレイヤは P-Well になります.ここで
載せた Box 宣言の順序も上のものほど高いレイヤになっています(実際のファイルではレイヤを書く順番は決まってい
ません).
P-Diffusion にする場合は,N と P を入れ替えて下さい.
Active 領域をこれよりも小さくした場合はデザインルール違反になります.デザインルールの変更については “7.3.5
設定の変更” を参照してください.
N-Diffusion Contact
(P-Diffusion Contact)
図 7.10 は,.mag 形式で Diffusion Contact を表示したものです.Diffusion Contact の最小幅は 4λ となっています.
Diffusion Contact を.cif 形式に変換すると,図 7.11 のようになります.
Active_
Cont(CCA)
4
(8.8)
(0.0)
4
overlap
=3
図 7.10: .mag 形式での N-Diffusion Contact
overlap
=2
(0.0)
16
32
56
Metal1(CMF),
Active(CAA)
16
N_Implant(CSN)
32
P-Well(CWP)
56
1
=4
図 7.11: .cif 形式での N-Diffusion Contact
又,エディタで表示させると,
CWF(Metal1)
: B 16 16 8 8;
CCA(Active_Cont): B 8 8 8 8;
CAA(Active)
: B 16 16 8 8;
7.3. Magic を使用した場合の CIF の扱いについて
CSN(N_Implant)
CWP(P-Well)
67
: B 32 32 8 8;
: B 52 52 8 8;
となります.
Diffusion Contact とは,Diffusion と Metal1 のコンタクトです. .mag 形式では疑似レイヤとして表示されています
が,マスクレイヤに展開すると,中心に 2λ の Active Contact を配置し,その下の層に Active,上の層に Metal1 を 1λ
分オーバラップさせます.それ以外は Diffusion と同じです.中心部のレイヤは 5 層になります.Diffusion Contact の最
上位層は Metal1,最下位層は Well となります.
P-Well Contact (N-Well Contact)
図 7.12 は,.mag 形式で Well Contact を表示したものです.Well Contact の最小幅は 4λ となっています.
Well Contact を.cif 形式に変換すると,図 7.13 のようになります.
Active_
Cont(CCA)
4
(8.8)
overlap
=2
overlap
=1
4
(0.0)
16
32
40
Metal1(CMF),
Active(CAA)
図 7.12: .mag 形式での P-Well Contact
(0.0)
16
P_Implant(CSP)
32
P-Well(CWP)
40
1
=4
図 7.13: .cif 形式での P-Well Contact
又,エディタで表示させると,
CWF(Metal1)
:
CCA(Active_Cont):
CAA(Active)
:
CSN(P_Implant) :
CWP(P-Well)
:
B
B
B
B
B
16
8
16
32
40
16
8
16
32
40
8
8
8
8
8
8;
8;
8;
8;
8;
となります.
Well Contact は,Well と Metal1 とのコンタクトで,間に Diffusion がありません.中心部のレイヤは Diffusion Contact
と同様に 5 層ですが,Implant と Well は同じ極性なので,オーバラップは 3 ではなく 1 となります.Well Contact の最
上位層は Metal1,最下位層は Well です.
この他の領域に関しては,.cif 形式にした時に Well ができるような等はありませんが,内部構造を知るためにも,こ
こで載せておきます.
Via
Via は Metal1 と Metal2 のコンタクトです(図 7.14).2λ の Via に,Metal1 と Metal2 を 1λ 分オーバラップさせます.
68
第 7 章 実配置
Metal1(CMF),
Metal2(CMS)
Via(CVA)
16
(0.0)
16
図 7.14: .cif 形式の Via
CVA (Via) は,他のコンタクト同様,画面には現れないため点線にしてあります.
エディタで表示させると,
CMS(Metal2) : B 16 16
CVA(Via)
: B 8 8
CMF(Metal1) : B 16 16
8
8
8
8;
8;
8;
となります.
ちなみに,CVA (Via) の宣言を削除すると Metal1,Metal2 が重なっただけの表示となります.
Polysillicon Contact
Polysillicon Contact は Polisillicon と Metal1 のコンタクトです(図 7.15).
Metal1(CMF);
Poly(CPG);
Poly_Contact
(CCP)
16
(0.0)
16
図 7.15: .cif 形式の Polysillicon Contact
2λ の Poly Contact に,Polysillicon と Metal1 を 1λ 分オーバラップさせます.
CCP (Poly Contact) も他のコンタクト同様,画面には現れないため点線にしてあります.
エディタで表示させると,
CMS(Metal1)
: B 16 16
CCP(Poly_Contact) : B 8 8
CPG(Polysillicon) : B 16 16
8
8
8
8;
8;
8;
となります.
この場合も,CCP (Poly Contact) の宣言を削除すると Polysillicon,Metal1,が重なっただけの表示となります.
7.3. Magic を使用した場合の CIF の扱いについて
69
以上より,Active Contact,Via,Poly Contact はいずれも 2λ となり,その下のレイヤに Metal1 と導通するレイヤ
が配置されます(Via の場合は上のレイヤに Metal2 が配置されます).又,Diffusion の場合は .cif に変換した際,その
下に Implant,Well が自動生成されます.
この他の Polysillicon,Metal1,Metal2 に関しては,そのまま表示されます.
7.3.3
Magic を使用した場合の CIF の階層のまとめ
7.3.2 の例で述べたことの纏めとして,もう一度 62 ページの表 7.2 をご覧下さい.
• 左は Magic の標準である .mag 形式,右は .cif 形式です.
• .mag 形式では,Diffsion 等は疑似レイヤとして Diffusion 単体で書かれていますが,.cif 形式ではそれぞれのレイ
ヤを各マスクに分解して宣言しているために複数のレイヤを重ね合わせて一つの領域を表現しています.
• Magic では,マスクレイヤの重ね合わせを判断して画面に領域を表示するため,一つでも欠けると違うレイヤが表
示されたり,レイヤが全く表示されなかったりします(63 ページの 7.3.2 を参照).
• 表の各枠のうち,上に書かれているレイヤほど上位に位置します.
• この項目は全て CIF の初期設定に基づいているので,テクノロジーファイルを変更すると内容が違って来ること
もあります(“7.3.5 設定の変更” を参照).
7.3.4
ラベル
Magic でのラベルの宣言は,以下のようになります.
94 label x y Layer ;
このように,ラベルの宣言は “94” です(意味はわかりませんが).Magic ではラベルの範囲指定ができますが,.cif 形
式に変換すると範囲の重点にのみラベルが付きます.
又,ラベルに限らず.cif ファイルを開き直した際にエラーが表示されることがあります.これについて,次の例で解説
します.
図 7.16 は,Magic でラベルを付けた状態です.
a
(0, 0)
b
図 7.16: Magic でラベルを付けた状態(.mag 形式)
このファイルを CIF 形式で保存し,開き直すと
Error at line 3 of CIF file: Input off lambda grid by 1/2; snapped to grid.
のようなエラーが表示され,図 7.17 のようになります.
このファイルをエディタで表示すると,次のようになります(一部省略).
70
第 7 章 実配置
a
a
(0, 0)
b
図 7.17: .cif 形式に変換し,開き直した状態
1
2
3
4
5
6
7
DS 1
B 16
94 a
94 b
DF
C 1;
End
50
16
10
12
(0, 0)
b
図 7.18: ラベルは,間には表示できない
2;
8 4;
8 CPG;
0 CPG;
このエラーは,本来ならばラベル a が図 7.18 のように.mag 形式で指定した範囲の中心に表示するはずが,
実際には λ の間に表示することができず,左にずれて表示されたことをエラーで示しています.
ラベルに限らず,ファイルを変換して読み直した時にずれが生じてエラーが出力されることがあります(125 ページ
参照).
7.3.5
設定の変更
スタイル(Style)の変更
これまで実例で説明したデザインルールは全て初期設定のものです.設定(Style)を変更するには,Magic 上で,
:cif istyle name
:cif ostyle name
を実行します.
詳しいことは,“Magic Tutorial #9: Format Conversion for CIF and Calma” をご覧下さい.このドキュメ
ントには,CIF に変換する時の問題点も載せてありました.ちなみに今回は,テクノロジーファイルそのものを変更す
るのでこのコマンドは使いません.各自試して見て下さい.
テクノロジーファイル
istyle, ostyle で設定を変更できますが,設定ファイルを直接読みたい(又は書き換えたい)場合は,Magic のディレク
トリ$Cad Home$/lib/magic/sys/ 上にある,scmos.tech27 というテクノロジーファイルをご覧下さい(Magic Version
7.1 の場合).このテクノロジーファイルは,
7.3. Magic を使用した場合の CIF の扱いについて
71
tech
style check_psubstr
style check_nsubstr
version
wiring
planes
router
types
plowing
contact
plot
styles
compose
connect
cifoutput
style
style
style
style
style
style
style
style
lambda=1.0(gen)
lambda=1.0(nwell)
lambda=1.0(pwell)
lambda=0.8(gen)
lambda=0.6(gen)
lambda=0.6(nwell)
lambda=0.6(pwell)
plot
cifinput
style
style
style
style
style
style
style
style
style
style
style
style
style
style
style
style
lambda=1.0(gen)
lambda=1.0(nwell)
lambda=1.0(oldnwell)
lambda=1.0(pwell)
lambda=1.0(nowell)
lambda=0.8(gen)
lambda=0.8(nwell)
lambda=0.8(oldnwell)
lambda=0.8(pwell)
lambda=0.8(nowell)
lambda=0.6(gen)
lambda=0.6(nwell)
lambda=0.6(oldnwell)
lambda=0.6(pwell)
lambda=0.6(nowell)
lambda=1.0(cmosn)
mzrouter
style irouter
style garouter
drc
extract
style
style
style
style
style
style
style
style
lambda=1.0(scna20_orb)
lambdaSp=1.0(scpe20_orb)
lambda=0.8(scna16_ami)
lambda=0.6(orb_scne12)
lambda=0.6(hp)
lambda=0.5
check_nwell
check_pwell
72
第 7 章 実配置
という構成になっていて,それぞれにパラメータが設定されています.
このファイルの読み方,変更の仕方は “Magic Maintainer’s Manual #2: The Technology File” をご覧下さい.
このうちの “cifoutput”,“cifinput”,の “style” 及び,“drc(Design Rule Check)” が cif,デザインルールに関
係のあるパラメータです.この章で利用した “scmos.tech27” は 1 ミクロンプロセス用ですが,Alliance のテクノロジー
ファイル作成には,サブミクロン用のファイルを使用します.詳しくは 9.2.1 ページの 9.2.1 で解説します.
7.4
Alliance を使用した場合の CIF の扱いについて
Alliance では,仮想配置である .ap 形式を “s2r” というプログラムで実配置である .cif 形式に変換します.変換した
.cif ファイルは Alliance 付属の “Dreal” というプログラムで表示させることができます.Alliance で作成した .cif ファ
イルは独自に拡張された宣言がいくつかあります.ここでは,その宣言を含め,Alliance で作成した .cif 形式について説
明します.
尚,Magic との対応を取りやすくするために “s2r” のテクノロジーファイル.rds の値を
Physical Grid = 0.5,
Lambda = 2
としてあります.こうすることで,DS1 50 2; のように,“50 2” の比率が守られ,1λ = 4 グリッドとなります.
7.4.1
Alliance での拡張された宣言
Alliance で作成した CIF ファイルの拡張宣言は
4A:Abutment Box の範囲を表示
4X:セルの配線の接続点を表示
4N:セルのラベルを表示
4l:他のセルを取り込み
です.以下,それぞれについて解説します.
4A
A は Abutment Box の略です(多分).4 の意味はわかりません.Abutment Box とは,各セルの範囲を指定したもの
す.セルの外枠と考えることもできます.61 ページの図 7.7 も,Abutment Box を並べたものと言えます.
例えば,
4A 0 0 120 400;
は,セルの範囲を座標 (0, 0) から (30, 100) であることを宣言しています.
4X
4X は他のセルとの配線の接続点を表示する際に使用します.これは,ap ファイルの C(Connector)宣言に相当しま
す.4X の宣言は,
4X name number x y width name;
となります.name には vdd,vss もしくは隣接するセルとの接続点の名前を記述します.これは,左右同じ名前にしま
す.ここで,VDD は電源電圧,VSS はグランド電圧です.
number は,そのセル内での通し番号です.この行の number に 1 が書かれた場合,次に 4X が書かれている行の number
には 2 が入ります.番号は 1 からです.
7.4. Alliance を使用した場合の CIF の扱いについて
73
(x2,y2)
(x1,y1)
図 7.19: 外枠が Abutment Box
x ,y は端子の軸です.width は端子の幅です.x ,y ,width はそれぞれ値を 4 で割ります.
例えば,
L CMF;
4X vss 1 0 24 56 vss;
4X vdd 2 0 376 56 vdd;
4X ....;
では,上の行は通し番号が 1,vss の配線の接続点が (0, 6) を軸に幅 14 の大きさになります.
vss
14
(0, 6)
図 7.20: 4X での宣言
ここで,幅の向きは,配線に依存するようです.
4N
4N は,セルにラベルを付ける時に使用します.N は “Name” の略だと思います.4N の宣言は,
4N name x y;
となります.例えば,
4N auxsc1 320 148;
B16 248 320 148;
では,(80, 37) の点に auxsc1 という名前のラベルを付ける,という意味になります.又,ソースファイル内では,その
一行下に実際にラベルを付ける領域が書かれてるようです(この例では,4 × 62 の長方形の軸にラベルを付けています).
4l
4l は,他のセルを呼び出す時に使用します.4l の宣言は,
4l name;C number Tx, y;
となります.例えば,
74
第 7 章 実配置
4l auxsc1;C1 T0, 64;
は,(0, 16) の点にセル 1 を Call し,auxsc1 という名前を付ける,という意味です.真ん中の “;” の後は,58 ページの
“7.2.1 階層設計について” と同じ宣言方法になります.
Alliance で作成した.cif ファイルを Magic で読み込ませた場合
まず,Magic で.cif ファイルを読み込ませる時に,Alliance での拡張宣言は全て
Error at line (x) of CIF file; unimplemented user extension; ignored.
というエラー表示が表示され,無視されます.(x) には,行数が入ります.4l の場合は,最初の “;” まで無視されます
が,その後の Call 宣言以降は読み込みます.
このうち 4N はラベルなので “94” に変更することで Magic でも表示可能です.それ以外は Magic 側では扱っていない
ので特に意識しなくても問題ありません.
7.4.2
実例
ここでは,実際に Alliance で合成したファイルを用いて解説します.次のファイルは,チュートリアル及び,前章の
ap ファイル a = b を s2r で変換してできた .cif ファイルです.尚,ここで使用したテクノロジーファイルはこれまで使
用していた cmos 7.rds ファイルではなく,この後の章で作成するテクノロジーファイルを使用しています.本章を執筆
中にはテクノロジーファイルは完成していなかったので,レイアウト自体は途中のもので,領域の長さ,幅は異なりま
すが,内容に変更はありません.又,Ver.4 で作成しているので,Ver.5 ではレイアウトの違いがあります.
ファイル名は “equal.cif” としました.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
(rds to CIF driver version 1.03
technology /usr/local/alliance
/archi/Linux/etc/mosis.rds
Sat Dec 7 17:11:09 2002
eq
Takeshi);
DS1 50 2;
(セル 1);
9 inv_x1;
(AB : 0.00, 0.00 30.00, 100.00 in micron);
4A 0 0 120 400;
LCWN;
(N-Well);
B136 216 60 312;
B100 224 52 308;
LCWP;
(P-Well);
B98 120 51 64;
B100 88 52 80;
B106 56 55 80;
LCSN;
(N_Implant);
B32 32 80 376;
B40 96 28 64;
B88 64 52 80;
LCSP;
(P-Implant);
B32 32 80 24;
B40 176 28 296;
B88 104 52 260;
LCAA;
(Active);
B16 16 80 24;
B16 16 80 376;
B32 80 28 64;
7.4. Alliance を使用した場合の CIF の扱いについて
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
B32 160 28 296;
B80 48 52 80;
B80 88 52 260;
LCPG;
(Polysillicon);
B8 264 56 180;
B32 24 44 160;
LCCA;
(Active_Contact);
B8 8 80 240;
B8 8 32 360;
B8 8 80 280;
B8 8 32 40;
B8 8 80 80;
B8 8 80 376;
B8 8 80 24;
LCMF;
(Metal1);
4X vss 1 0 24 56 vss;
4X vdd 2 0 376 56 vdd;
4X vss 3 120 24 56 vss;
4X vdd 4 120 376 56 vdd;
B16 256 40 200;
B24 256 80 200;
B136 56 60 24;
B136 56 60 376;
LCCP;
(Poly_Contact);
B8 8 40 160;
DF;
DS2 50 2;
(セル 2);
9 eq;
(AB : 0.00, 0.00 100.00, 122.00 in micron);
4A 0 0 400 488;
LCMF;
(Metal1);
4X vss 1 0 88 56 vss;
4X vdd 2 0 440 56 vdd;
4X vss 3 400 88 56 vss;
4X vdd 4 400 440 56 vdd;
4N auxsc1 200 32;
B16 16 40 264;
B16 16 80 264;
B16 16 320 264;
B16 16 360 264;
B256 24 200 32;
B416 56 200 88;
B416 56 200 440;
LCVA;
(Via);
B8 8 40 264;
B8 8 80 32;
B8 8 80 264;
B8 8 172 440;
B8 8 228 88;
B8 8 320 32;
B8 8 320 264;
B8 8 360 264;
LCMS;
(Metal2);
4X a 5 40 0 16 a;
4X vdd 6 172 0 24 vdd;
4X vdd 7 172 488 24 vdd;
4X vss 8 228 0 24 vss;
4X vss 9 228 488 24 vss;
75
76
第 7 章 実配置
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
4X b 10 360 0 16 b;
4N a 40 132;
B16 280 40 132;
4N b 360 132;
B16 280 360 132;
4N auxsc1 80 148;
B16 248 80 148;
4N auxsc1 320 148;
B16 248 320 148;
4N vdd 172 244;
B24 504 172 244;
4N vss 228 244;
B24 504 228 244;
4I auxsc1;C1 T0, 64;
4I b;C1 T280, 64;
DF;
C2;
(AB : 0.00, 0.00 100.00, 122.00 in micron);
E
このファイルを “Dreal” で表示すると,図 7.21 のようになります(Dreal の使い方は “7.5.2” をご覧下さい).
図 7.21: セルを全て表示させた状態
a = b は,CMOS-Inverter 回路を直列に 2 つ繋げ,not を 2 度反転することで実現しています.a,b はそれぞれ図の
下に表示されています.Ver.5 では違う方法のようです.又,Ver.5 は現時点では入出力端子が外側に出ていません(方
法はあるのでしょうが,やり方がわかっていません).
以下,この CIF ファイルを解説していきます.
7.4. Alliance を使用した場合の CIF の扱いについて
77
まず,1∼6 行目はコメントです.
1 行目には,CIF ドライバのヴァージョンが書かれています.
2, 3 行目には,どのディレクトリのテクノロジーファイルを使用したかが書かれています.4 行目には作成日が,5 行
目にはファイル名,6 行目には作成者名が書かれています.
8∼56 行目までは,セル 1 についての宣言です.9 行目にセル 1 の名前が “inv x1” となっているように,このセルは
CMOS-Inverter 回路です.
ちなみに,このセルは Alliance のセルライブラリ “sxlib” の中の inv x1.ap ファイルを “s2r” で実配置の .cif ファイル
に変換したものです.
セル 2(58∼105 行目)を “();” で括り,107 行目の C2 を C1 に変更すれば,セル 1 のみを表示することができます
(図 7.22).この図では,上側が P-MOS,下側が N-MOS となります.
図 7.22: セル 1 のみ表示させた状態
Dreal で equal.cif を表示させたときにはまず,107 行目の C2 を読み込み,セル 2(58∼105 行目)を Call します.こ
のセル 2 は,セル 1 をつなぐ配線等の領域が宣言されています.セル 2 には,主に Metal1,Metal2,Via の領域の宣言
とラベルの名前が宣言されています.
最初に表示したときには,セル 2 のみ画面に現れます(図 7.23).
(inv x1 上の vdd-vdd,vss-vss の配線(4X 宣言)は
最初に表示されるようです.
)
4X は,主に Abutment Box 上で,他のセルとのつなぎ目に表示されています(vdd,vss 及び,図の下の a,b).
最初に表示した際には,vdd,vss と書いてありますが,サブセルを表示させた状態では,図 7.21 のように,“auxsc1.vdd”,
“b.vss” のように,
サブセル名. 端子点
と名前が変わります.
セル 2 は,103,104 行目でセル 1 をサブセルとして呼び出しています.その配置はセル 1 の (0, 0) の点がセル 2 の
(0, 16),(70, 16) の点と重なります.図 7.22 では,セル名が inv x1 となりますが,ここでは呼び出し時にそれぞれ auxsc1,
b とセル名を変えています.
大きな枠は Abutment Box です.Abutment Box は,11,61 行目で宣言されていますが,10,60 行目のコメントは,
λ を基準にした場合の Abutment Box の範囲です.10 行目の場合,Abutment Box が (0, 0) から (30, 100) までであると
宣言されています.これは,11 行目の 4A の値を丁度 4 で割った値となります.
78
第 7 章 実配置
図 7.23: 最初は,セル 2 のみ表示される
91∼102 行目は 4N(ラベル名)と B(領域の範囲)が 2 行ずつセットになっています.領域の軸にラベルを書いてい
ると考えて下さい.
7.5
Magic,Alliance でのトレース
ここでは Magic,Dreal を使用した CIF ファイルのトレース方法を紹介します.
7.5.1
Magic でのトレース
Magic で CIF ファイルを出力した場合,新たに生成された Implant,Well 間に最小間隔エラーが発生する可能性があ
ります.その場合のデザインルールチェックのコマンドを簡単に載せます.
エラーを探すには
エラーを探すには,セルを選択して
:drc find[nth]
を実行します.選択したセル内で次のエラーを表示させるには,再度実行します.このとき,マクロ “.” を使用すると
楽です.何番目に表示されたエラーかを指定したい場合は [nth] に値を入れます.
エラーの原因を知るには
エラーが出ている箇所(白で表示)にボックスを合わせて
:drc why [?]
です([?] は,マクロ).
7.5. Magic,Alliance でのトレース
エラーの数を知るには
79
エラーの数を知るには,範囲を指定して
:drc count
です.
詳しくは,“Magic Tutorial #6 Design-Rule Checking” を参照して下さい.
その他,よく使用するコマンド
:grid [g] グリッドの表示
:zoom [z] 2 倍ズーム
:select [s] セルを選択
:expand [x] セルの中身を表示
:box [b] ボックスで指定した範囲の大きさなどの情報を出力
これらのコマンドの詳しい使いかたは,このドキュメントの最後に載せてある HP のマニュアル,Magic のチュート
リアルを参照して下さい.
7.5.2
Alliance でのトレース
CIF ファイルを表示するためのプログラムである “Dreal” は,アウトライン表示をすることで,領域の枠のみ描画で
きる,マスクレイアウトをそのまま表示(Implant,コンタクトも表示される),など,トレースする際には Magic より
もやりやすい部分があります.
よって,ここでは簡単に Dreal の使用方法を説明します.ただし,環境変数の設定など実行の準備は済んでいるもの
とします.一部 Graal と重複しています.
($ man dreal)も参照して下さい.
まずは Dreal の実行です.シェルプロンプト上で
$ dreal -l filename
と入力し,実行します($はいりません).-l を入れなければ起動時にファイルを読み込みません.
ファイルを開く
File→Open
から,ファイルを選びます.起動中に同ディレクトリにファイルが増えても選べないようなので,その場合は起動し
直します.
他のセルを表示する
最初は最上位のセルしか表示されません.他のセルを表示するには,
Tools→Flatten
を選びます.
位置を確認する
Dreal のメインウィンドウの下には,カーソルの現在地が表示されます.左から,
x:
y:
Dx:
Dy:
となっています.x,y はマウスの座標です.Dx,Dy は,始点を決めてクリックすると,その場所を (0, 0) として,距
離を測ります.
レイヤーを見やすくする機能
View→Layer を選択すると,Layer と書かれたウィンドウが表示されます.
左上の “All visible” はレイヤを全て表示,右上の “All Invisible” は,レイヤを全て非表示にします.
一つのレイヤのみ表示させたい場合などは一度 “All Invisible” をクリックして,各レイヤ名を右側に表示した後,表
示させたいレイヤを左側に表示して “Apply” をクリックします.
80
第 7 章 実配置
図 7.24: レイヤーウィンドウ
左下の “Pattern” をクリックすると,“Outline”,“Fill”,と切り替わります.Pattern は全レイヤが半透明で表示され
ている状態,Outline は全レイヤが Box 宣言の外枠のみ表示されている状態(図 7.25),Fill は,全レイヤに色を付け,
真上から見た状態です.Outline 表示にして,特定のレイヤのみ表示させることにより,トレースがやりやすくなるで
しょう.
“No String Box” とは,ラベルの下を透過しますが,少し読みづらいかもしれません.ラベルのトレースをしたい場合
は一度クリックして “String Box” にすると,ラベルの下が黒くなり,文字が読みやすくなります.その代わり,領域の
トレースは,やり辛いかもしれません.
自分で領域を描画する場合
自分で領域を書いてテストしたい場合は,メニューバーで
Create→Rectangle
を選択します.
描画したいレイヤを選択して,メインウィンドウ上で範囲を指定して下さい.又,描画したレイヤを変更したい場合は,
Window→Modify
を選択します.領域を選択すると,紫色に変わり,Modify と書かれたウィンドウが表示されるので,ウィンドウ上で
変更したいレイヤを選択し(囲まないと駄目な場合もあるようです),Apply をクリックします.このときに “Name” を
選択するとラベル(cif ファイルでは “4N” で宣言)を付けることができます.
Create→Abutment Box
を選択すると,“Abutment Box” の範囲を指定することができます.ただし,1 セルに 1 つしか指定できません.
設定を保存したい場合
毎回起動時に
View→Layer
7.5. Magic,Alliance でのトレース
81
図 7.25: アウトライン機能
と選択するような場合は,設定を保存しておくことにより,起動時に自動でウィンドウが表示されます.現在の設定を
保存するには,メニューバーの
Setup→Save Config
を選択します.
82
7.6
第 7 章 実配置
仮想配置と実配置のまとめ
仮想配置と実配置の用語について表 7.3 に纏めました.
最後に書いたレイヤの種類ですが,Graal では一般的に疑似レイヤを,Dreal ではマスクレイヤを描画するようにテク
ノロジーファイルに設定します.この後の章で解説する s2r では疑似レイヤからマスクレイヤに変換する際に Implant,
Well を生成しますが,その際に最小間隔エラーとなる箇所を併合処理をしてエラーを無くします.Graal は併合処理を
行う前なので,Implant,Well を表示してしまっては Druc でデザインルールチェックをしたときにエラーが表示されま
す.よって,Graal では疑似レイヤ,Dreal ではマスクレイヤを扱います.
次の図 7.26 は本研究で完成したテクノロジーファイルを使用して Graal で疑似レイヤを表示した状態,図 7.27 が同じ
く Dreal でマスクレイヤを表示した状態です.
図 7.26: Graal で疑似レイヤを表示
図 7.27: Dreal でマスクレイヤを表示
仮想配置
実配置
別の呼び方
MBK
RDS
別の呼び方
Symbolic Object
Real Rectangles
レイヤの配置方法
軸と長さ
長方形
記号
ls ,ws
lr ,wr dxr ,dyr
表示するツール
Graal, Magic
Dreal, Magic
ファイルの形式
mag, ap
cif
レイヤの種類
疑似レイヤ
マスクレイヤ
表 7.3: 仮想配置と実配置
83
第 8 章 関連のあるツール及び,Ver.4 と Ver.5 の違い
本章では既にテクノロジーファイルが完成しているものとして,実際に使用する上でヴァージョンが違うとどう違うの
か,どの辺に注意すれば良いか解説します.テクノロジーファイルの話をまだしていないので,この位置に掲載するの
はどうかと思いますが逆に,テクノロジーファイルの解説の時に Ver.5 についても触れているので,先に解説しておきま
す.2 度目に読み返す時には良くわかると思います.
又,後半では s2r について解説しています.前章,前々章と入出力ファイルについて解説してきたので,内容はわかり
やすいと思います.尚,s2r に使用するテクノロジーファイルについては,次章で解説します.
8.1
Version5
8.1.1
概要
これまでは Alliance Version4.0.9 について解説してきましたが,Version5.0 についてある程度分かってきたので,こ
こで解説します.Ver.5 では,ツールの構成が一部変更されています.又,セルライブラリの内容も変更がありますが,
それらについての詳しいドキュメントは man ページ位しかありません.Ver.5 は Ver.4 と比べて回路サイズにおいて優
れてます.
尚,検証した期間は短いので,ひょっとすると違っている箇所があるかもしれませんが,ご了承下さい.
8.1.2
ダウンロード,インストール,ファイル構成
ダウンロード
ダウンロードは Alliance のトップページ
http://www-asim.lip6.fr/alliance/
からダウンロードできます.HP の右上の “Download” のリンクを辿ると,いくつかのディストリビューション用にコ
ンパイルされたプログラムをダウンロードできます.私は “alliance-5.0-20030224-rh8.i386.rpm” を使用しています.こ
こで,プログラムをインストールすると,図 8.1 のようなディレクトリ構成になります.
ここでまず困惑されるかと思われますが,ソースコードが入ったファイル以外には README,FAQ 等は付属してい
ません.これらは,ダウンロードページにあるものを別々に DL して下さい.
これまでは Ver.4 について解説していましたが,Ver.5 になってツールの一部が変更されています.詳しくは DL ペー
ジにある CHANGES を参照して下さい.
ここではこれまでに使用してきたツールの変更点を纏めました(表 8.1).
Version4
Version5
SCMAP
BOOG
配置ツール
SCR
OCP
配線ツール
SCR
NERO
LYNX
COUGAR
セルマッピングツール
ネットリスト抽出ツール
表 8.1: 変更されたツール
84
第 8 章 関連のあるツール及び,Ver.4 と Ver.5 の違い
$Alliance_Top$
bin/
dp_sxlib
padlib
ramlib
cells/ rflib
romlib
sxlib
doc/
etc/
include/
lib/
man/
man1/
man3/
man5/
図 8.1: Version5 の構成
8.1. Version5
85
Ver.4 までに使用されていた配置配線ツールである SCR(Standard Cell Router) は,OCP(配置ツール),OCR(配線
ツール)という 2 つのツールに分かれた後,OCR が NERO(Negotiating Router) というツールに変更されました.又,
Lynx は同名のテキストブラウザが存在するため cougar という名前に変更されました.
8.1.3
チュートリアル
チュートリアルの流れは第 5 章を参照して下さい.ツールの使用方法は違いますが,流れは同様です.
8.1.4
主なツールの解説
BOOG
BOOG は Binding and Optimizing On Gates の略で,Ver.4 の SCMAP と同様の働きをします.詳しくは($ man
boog)を参照して下さい.
OCP
OCP は Standard Cell Placer と言って,BOOG によって出力されたネットリストを元にセルライブラリを配置する
ツールです($ man ocp).Ver.4 では配置及び配線は scr で纏めて行っていましたが,Ver.5 では OCP と NERO の 2 つ
のツールに分かれました.OCP ではセルの配置をします.このツールのオプションで特に重要なのはマージンオプショ
ンです.セルライブラリを配置するときには基本的に回路が正方形に近づくように配置します.その際にセルライブラ
リの大きさが合わない場合にはその隙間を埋めるように機能を持たないセルを配置します(図 8.2,図 8.3,図 8.4)1 .
図 8.2: powmid x0.ap
図 8.3: rowend x0.ap
図 8.4: tie x0.ap
これらのセルは,各セルライブラリの CATAL というファイルに属性 “F” で記述されています.それ以外の一般のセル
は属性 “C” となります($ man catal).回路のマージンが少なすぎると配線が不可能になることがあるので,あらかじ
めマージンの設定をしておきます.尚,デフォルトでは 20%で,最小 15%∼最大 300%まで設定できます(確か).実際
の設計ではまずマージン 50%ほどで試してみて,配線までうまく行った場合はマージンを減らせば良いと思います.尚,
OCP での配置次第では同じマージンでもうまくいく場合といかない場合があるようです.
1 この機能は
scr(Ver.4)でもあります
86
第 8 章 関連のあるツール及び,Ver.4 と Ver.5 の違い
NERO
NERO は,NEgotiating ROuter の略で,OCP によって配置されたセルライブラリを配線します($ man nero).こ
のときにネットリストも必要になります.今回完成したテクノロジーファイルでは,配線は 4 層又は 5 層まで可能です.
ここで,メタル 1 はセルライブラリに,メタル 2,4 は横配線に,メタル 3,5 は縦配線に使用されます.
配線時にはグローバル配線とローカル配線があります.回路が大きいものはグローバル配線を使用することでメタル
層を増やすことが可能です.ここで,メタルが 4 層までのテクノロジーファイルを使用している場合,メタル 4 まで使
用して配線をすると,最小間隔エラーになります.よって,メタルが 4 層までの場合には配線は 3 層に指定して,4 層目
は手動で配線する必要があります(∼ページ).尚,メタルが 5 層の場合には問題無く 5 層まで使用可能です.
回路サイズが大きい場合に配線を 3 層に指定した場合に 3 層で収まらなければ,自動で 4 層以上が使用されるようです.
配線プログラムは時間がかかります.オプション “-V”(V は大文字)を使用すれば内部動作がある程度わかると思い
ます.層をわざと減らして配線しようとすると,全てのパターンをテストした後に不可能だったというエラーを出力し
て終了することがあります.よって,プログラムが極端に時間がかかっていると感じた場合には失敗している可能性が
あります.
配線時にはセルライブラリ上の Ref 宣言のラベルとネットリストの同様の名前をマッチングしています.
8.2
sxlib
ここでは SXLIB について解説します.詳しくは($ man sxlib)を参照して下さい.sxlib は Ver.3 までの sclib に代わ
り,Ver.4 から採用されたサブミクロンプロセス用のセルライブラリです.このセルライブラリは縦が 50λ,横が 5nλ に
なっています.Ver.4 では SCMAP,Ver.5 では BOOG を使用して VHDL のソースコードをネットリストに変換します.
ネットリストを元に Ver.4 では SCR で配置配線を,Ver.5 では OCP で配置及び NERO で配線を行います.配線時に
入出力端子は R(Reference)宣言された場所に Via を設置してその上に Metal2 を配線します.このときの方法が Ver.4
と Ver.5 では異なります.Ref は Metal1 の上に配置され,それぞれ 10,15,20,25,と 5λ 間隔で配置されています(図
8.5,8.6).Ref 宣言のうち Ver.4 で使用されるのはラベル名が “∼ 25” と書いてある箇所だけのようです(87 ページ図
8.9,88 ページ図 8.10).この 25 という値は各セルの丁度半分の高さです.ラベルの左の i,nq はネットリストと対応
していて,SCR,NERO を使用した時に参照されます.
SXLIB は Ver.4 で採用されましたが,元々は Ver.5 で OCP,NERO を使用することを想定してセルライブラリだけ
先に採用されたようです.そのために Ver.4 では他の Ref 宣言はまだ使用されていないようです.Ver.5 ではその他の高
さの Ref 宣言にも配線される(オーバーセルルーティング)ため,配線の面積が減り,回路面積も小さくなります.
次の画像は Ver.4 の amd2901 のチュートリアルに付属してある amd.vbe を Ver.4,Ver.5 それぞれで合成したものです.
このように,Ver.4(図 8.9)に比べて Ver.5(図 8.10)ではオーバーセルルーティングをするために全てのセルを密着
させて配線のみの領域を無くすことで,回路サイズを半分以下に減らしています.
この時に,Ver.4 では図 8.9,8.10 のように,セルの中央(ラベル∼ 25)に配線しているのがわかります.
又,Ver.5 では図 8.11∼8.13 のように,セルの中央以外でも配線していることがわかります.このように,Ver.5 では
オーバーセルルーティングを行うために∼ 25 に以外の Ref にも VIA を配置して配線を行っていることがわかります.
8.2. sxlib
87
図 8.5: メタル 1 上に配置されている四角が Ref です.
図 8.6: 5λ 間隔で配置され,ラベルが貼ってあります.
図 8.7: amd.vbe を Ver.4 で合成した場合(905 × 455λ)
88
第 8 章 関連のあるツール及び,Ver.4 と Ver.5 の違い
図 8.8: Ver.5 で合成した場合(425 × 400λ).横配線にメタル 2,縦配線にメタル 3 を使用しています
8.2. sxlib
89
図 8.9: Ver.4 で配線したときの拡大図
90
第 8 章 関連のあるツール及び,Ver.4 と Ver.5 の違い
図 8.10: 25 の Ref 上でのみ配線されています.
8.2. sxlib
91
図 8.11: Ver.5 での配線
92
第 8 章 関連のあるツール及び,Ver.4 と Ver.5 の違い
図 8.12: ラベルを表示した図
8.2. sxlib
93
図 8.13: ∼ 25 以外の Ref でも配線を行っています
94
8.3
第 8 章 関連のあるツール及び,Ver.4 と Ver.5 の違い
Graal 上でデザインルールチェックをしたい場合
本来ならば Druc を使えばいいのですが,記述するための文法がわかっていないのと,s2r で変換した後の長さを Graal
上で把握することが可能なため,その方法を解説します.
まず,今回作成したテクノロジーファイルには
DEFINE LAMBDA 2.0
と記述されています(100 ページ).
これは,Graal 上での 1 マス(1λ)が cif ファイル(Dreal 上)では 2λ 分である,ということです.Graal での sxlib
(ap ファイル)は縦が 50λ,横が 5nλ なので,cif ファイルでは 2 倍して縦が 100λ,横が 10nλ となります.逆の言い方
をすれば,Dreal 上での 1λ は Graal 上では 0.5λ になります.
以上のことがわかると,Graal 上で s2r で変換した後の長さを把握することができます.図 8.14 のように,コンタク
トの幅は 2λ なので Graal 上では 1 マス分になります.左側のメタル 1 は 4λ なので,Graal では 2 マス分です.尚,こ
の比率は DEFINE LAMBDA の値を変更したら変わるので注意して下さい.ここでは,今回完成したテクノロジーファ
イルを使用している場合について解説しています.
8.4
回路面積の計算
Dreal 上での回路サイズは Graal 上で表示されているサイズ ×2 ということがわかりました.これを基に回路サイズを
計算します.例えば,86 ページ図 8.8 の場合,縦の長さは 400λ なので,
400 × 2 × 0.35 × 10−6 = 0.28[mm]
となります.又,横幅は 425λ なので,
425 × 2 × 0.35 × 10−6 = 0.30[mm]
となります.
8.4. 回路面積の計算
95
図 8.14: Graal 上での 1λ は Dreal 上での 2λ 分になります.この図では,メタル 1 の間隔は 5λ になっているのがわかり
ます.最小間隔は 4λ なので,エラーにはなりません.
96
第 8 章 関連のあるツール及び,Ver.4 と Ver.5 の違い
8.5
s2r
ap フォーマット,cif フォーマットがわかったところで “s2r” について解説します.この章は s2r の man を補完する形
とするので,詳しいことは($ man s2r2 )を参照して下さい.尚,ここでは Ver.4 について解説します.Ver.5 の場合は
引数無しで s2r を起動した時に表示されるオプションを参考にして下さい.
s2r は,仮想配置である ap ファイルを cif フォーマット又は gds フォーマットに変換します(図 8.15).どちらに変
換するかは,先に環境変数 RDS IN,RDS OUT に設定しておきます.cif フォーマットは教育用で ASCII コード,gds
フォーマットは産業用でバイナリコードとなります(確か).cif,gds は相互変換が可能です.
Technology
File
.rds
MBK
RDS
(Symbolic)
(Real)
s2r
.ap
format
.cif
.gds
format
図 8.15: s2r の入出力
8.5.1
環境変数の設定
s2r を使用するには,6 種類の環境変数を設定する必要があります.それぞれの変数については($ man 環境変数名)
でマニュアルを参照できます.チュートリアルにもあったように,alc env.csh,alc env.sh を使用すれば設定に悩むこと
は無いでしょう.
MBK IN PH 入力ファイルのフォーマットを何にするか設定する変数です.“ap”,“cp” の 2 種類があり,標準で
は cp になっているようですが,ap を指定します.alc∼のスクリプトには最初から ap が指定されています($ man
MBK IN PH).
MBK CATA LIB セルライブラリのあるディレクトリを宣言する変数です.alc∼の初期設定では,
.
$ALLIANCE\_TOP/cells/sxlib
$ALLIANCE\_TOP/cells/padlib
が指定されています($ man MBK CATA LIB).
MBK CATAL NAME カタログの名前?を設定する変数のようです.alc∼の “CATAL” のままで問題ありません
($man MBK CATAL NAME).
RDS IN
RDS(実配置)の入力を決める変数らしいです.“cif” か “gds” のどちらかを選択します.alc∼では cif が設
定されているので変更する必要はありません.尚,RDS IN のマニュアル($man RDS IN)には cif フォーマットの拡
張宣言についての解説が掲載されているので,参考にして下さい.
2 man
には see TECHNO(5) と書いてありますが,おそらく($ man prol)の間違えです.
8.5. s2r
97
RDS OUT RDS の出力を決める変数です.こちらも “cif” か “gds” のどちらかを選択します.alc∼では cif が設定さ
れているので変更する必要はありません($ man RDS OUT).
RDS TECHNO NAME s2r で使用するデザインルールを記述したテクノロジーファイルをフルパスで設定します.alc
∼では最初は($ALLIANCE TOP/etc/cmos8 .rds)と設定されています.その他の.rds ファイルも$ALLIANCE TOP/etc/
に入っています.
($ man RDS TECHNO NAME)
今回作成するテクノロジーファイルはこの変数に指定します.最初から入っている他の.rds ファイルは設定しても s2r
実行時にエラーで動作失敗するものもあります.
以上 6 つの環境変数のうち,後から値を変更する必要の出てくるものは RDS TECHNO NAME だけです.それ以外
の変数は alc∼のままで問題ありません.
8.5.2
実行時のオプション
正しく環境変数を設定できれば s2r を実行できます.
$ s2r
とだけ入力して実行すると,
@@@@
@
@@
@@
@@
@@@@@@ @@@
@@ @@@ @@@
@@
@
@
@@
@@@ @@
@@@
@
@@
@@
@@@@
@
@@
@@@@
@
@@
@
@@@
@
@ @@
@@
@@ @@@@@@
@@
@ @@@@@ @@@@@@@ @@@@
Symbolic to Real layout converter
Alliance CAD System 4.0.6,
s2r 3.7
Copyright (c) 1991-2003,
ASIM/LIP6/UPMC
E-mail support: [email protected]
Usage : s2r [-cs1trv] source [result]
source
result
: filename of symbolic layout circuit
to translate to real layout
: result filename of real layout circuit
source name is used, if result is absent
optionnal
-c
:
-s
:
-1
:
-t
:
-r
:
-v
:
options (any order, any occurence) :
deletes top-level (c)onnectors
(s)cotchs are not created
only (1) level is translated, all otherwise.
layout is just (t)ranslated, not post-treated
black boxes are not (r)eplaced
(v)erbose mode armed
と出力されます.
Usage にコマンドが載っています.“[]” で囲まれた名前はオプションです.最も簡単な実行コマンドは,チュートリア
ルでも実行したように
$ s2r sourcename
です.soucename には仮想配置である.ap ファイルの名前を入力します.ここで,拡張子の.ap まで入力するとエラーと
なるので注意して下さい.ソースファイルと同名のファイルが既に存在する等の理由で出力名を変えたい場合には [result]
98
第 8 章 関連のあるツール及び,Ver.4 と Ver.5 の違い
の欄にファイル名を入力します.ここでも.cif まで入力すると,出力されたファイル名は “result.cif.cif” となるので注意
して下さい.テストをする場合等に,自分の都合の良い名前を決めると良いでしょう.
続いて,オプションの項目についてです.オプションを設定するときには “-” の次に項目名を指定します.“[]” では括
りません.
ここでは出力される cif ファイルのコードがどのように変化するかについて解説します.チュートリアルで作成した
equal.ap ファイルを使用してテストしたので,違いが現れなかったオプションもあります.詳しくは($ man s2r)で確
認して下さい.
-c
:deletes top-level (c)onnectors
トップセルのコネクタを生成しない ⇒4X 宣言を消去
-s
:(s)cotchs are not created
変化無し ⇒ 不明
-1
:only (1) level is translated, all otherwise.
トップセルは全て生成.サブセルは 4A(Abutment Box),4X(Connector)宣言のみ生成し,Box 宣言等は生成し
ません.
-t :layout is just (t)ranslated, not post-treated
レイアウトはただ変換するのみで後処理をしません ⇒ Well,Implant,Active 等の併合をしません.併合については
第 9 章(テクノロジーファイル)で解説します.
-r
:black boxes are not (r)eplaced
変化無し ⇒ 不明.
-v :(v)erbose mode armed 冗長モードにする ⇒ 変換途中のメッセージを全て表示.
尚,Ver.5 では,オプションが増えているため,
($ s2r)を実行して確認して下さい.
99
第 9 章 テクノロジーファイル
いよいよ,テクノロジーファイルの作成をします.まず本章で MOSIS のデザインルールの最小幅のみを考慮したファイ
ルを作成し,次章でエラーの修正をします.
このテクノロジーファイルの拡張子は.rds です.テクノロジーファイルは,s2r の他に,Graal,Dreal,Druc,Lynx
でも使用されます.このファイルは環境変数 “RDS TECHNO NAME” に設定します.
本章では Sub-Micron プロセスの SCN4ME SUBM を Ver.5 用に作成します.他のオプション及び Ver.4 用に作成する
場合については第 11 章で解説します.
9.1
関連マニュアル
テクノロジーファイルの関連マニュアルは,
• prol(5)
• Translation of symbolic objects into real rectangles
• etc ディレクトリに入っている他の.rds ファイル
の 3 つです.“prol(5)” は,Alliance の man ディレクトリに入っていて,
($man prol)コマンドで表示できます.このド
キュメントはテクノロジーファイルの各パラメータの意味について掲載しています.しかし,1997 年に作成されたドキュ
メントなので(おそらく Ver.3 用),追加されたパラメータ,レイヤについては掲載されていません.2 つ目の “Translation
of symbolic objects into real rectangles (以下,Symbolic to Real Translation)” は,Alliance の doc ディレクトリに
“process mapping.ps”,“process mapping.pdf” というファイル名で入っています.このファイルはテクノロジーファイ
ルのパラメータに入れる値の計算方法と s2r の変換公式が掲載されています.3 つめの他の.rds ファイルは,実際に記述
したテクノロジーファイルが上手く動作しないときに,記述の違いを確かめるのに参考にします.しかし,最初から入っ
ていながら Ver. が古いままのものもあるので注意が必要です.Ver.5 には Symbolic to Real Translation は入っていない
ので Ver.4 のファイルも必要になります.今回は Ver.5 用にテクノロジーファイルを作成するので,別途 Ver.4 を DL し
てドキュメントを入手して下さい.
9.2
デザインルールの選択と Magic の設定
9.2.1
デザインルールの選択
まずは作成するデザインルールを選択しなければなりません.第 7 章では Magic 用に scmos.tech27 を使用していました
が,このファイルは 1 ミクロンプロセス用なので,サブミクロン用のものを選択します.同梱されている scmos-sub.tech27
は,メタルが 3 層までなので使用しません.
SXLIB は,Sub-Micron プロセス用に設計されていることに注意して下さい.1 ミクロンプロセスではデザインルール
違反になってしまう項目がありますが,Sub-Micron プロセスでは問題ありません(147 ページの 10.4).
MOSIS のデザインルールの HP
http://www.mosis.org/Technical/Designrules/scmos/scmos-main.html
の 2.2. SCMOS Options の Table 2b: MOSIS SCMOS SUBM-Compatible Mappings から目的のベンダ及びルールを
選びます.現在作成が可能と考えられるルールは TSMC の “SCN4ME SUBM”,“SCN4M SUBM”,“SCN5M SUBM”
100
第9章
テクノロジーファイル
の三種類です.このオプションの意味については HP の “Table 1: SCMOS Technology Options” を確認して下さい.今
回は “SCN4ME SUBM” について解説します.
Alliance Ver.5 では,セルライブラリに Metal1,横の配線に Metal2,縦の配線に Metal3 と最低 3 層使用します.よっ
て,外部ピン接続用のコネクタ,VDD,VSS は最上位層に配線することなどを考え,配線が 3 層では苦しいと思います.
Agilen/HP の “SCN3M SUBM”,“SCN3MLC SUBM” については Stacked Via(重ねられた Via)の使用が不可能なた
め,Alliance の仕様上利用することができません.
“SCN5M SUBM” については問題なく使用できると思います.“SCN6M SUBM” では VIA の最小幅が 3 × 3λ 固定で
す.最小 λ が奇数だとレイアウトが崩れる場合があるので不可能では無いと思いますが,今回は使用しませんでした.
以上の理由から,今回は前述の 3 種類のルールのうちの SCN4ME SUBM を使用しました.
この SCN4ME SUBM のリンクを辿り,Table 5: Technology-code Map の SCN4ME のリンクを辿ると,
“MOSIS Layer Map for SCN4ME and SCN4ME SUBM”
http://www.mosis.org/Technical/Layermaps/lm-scmos_scn4me.html
にたどり着きます.後ほど “TABLE CIF LAYER” で Alliance のセルライブラリ及び合成時の配線とこのページのレイ
ヤを対応させます(113 ページの 9.3.5).
9.2.2
Magic 側の設定
SCN4ME SUBM に対応したテクノロジーファイルを DL する
いきなり MOSIS のデザインルールをチェックしながらテクノロジーファイルを記述するのは大変です.そこで,Magic
に今回採用した SCN4ME SUBM 用のテクノロジーファイルを設定します.
MOSIS の HP のサイトマップ
http://www.mosis.org/site-map.html
から,-M-の Magic Technology Files を選択します.すると,次のような HP に進むことができます.
http://www.isi.edu/~sondeen/magic.html
この HP の This is a chart of the Magic technical files のリンク
ftp://ftp.isi.edu/pub/sondeen/magic/new/chart
にどの Magic で使用するテクノロジーファイルの詳細が記載されています.又,その下の This directory contains these
new techfiles
ftp://ftp.isi.edu/pub/sondeen/magic/ new/beta/current
からテクノロジーファイルが DL できます.今回は “SCN4ME SUBM.20.TSMC.*” を DL します.
その他のリンクも確認してみて下さい.いくつか例があります.DL したファイルを Magic で使用するには,Magic を
起動するときに “-T” オプションを使用します.ここでは,
$ magic -T SCN4ME_SUBM.20.TSMC.tech27
となります.起動ごとに毎回設定しなければならないので,alias などに記述しておくと良いでしょう.
9.2.3
Magic 標準のテクノロジーファイル(scmos.tech27)と SCN4ME SUBM.20.TSMC.tech27
の違い
scmos.tech27 は 1.0∼3.0micron 用のデザインルールが使用されています.それに対して SCN4ME SUBM.20.TSMC.tech27
は 0.35 ミクロン(Sub-Micron)用のデザインルールです.第 7 章では scmos.tech27 を使用して cif ファイルを出力しまし
たが,サブミクロンプロセスではデザインルールが異なるので注意して下さい.MOSIS の HP では,“2.4. SCMOS SUBM
and SCMOS DEEP Rules” に違いが載せてあります.
9.2. デザインルールの選択と Magic の設定
101
http://www.mosis.org/Technical/Designrules/scmos/scmos-main.html#subm
サブミクロンでなければエラーになる箇所は MOSIS # 8.5 Via on flat です.又,Stacked Via(積み重ねられた Via)
が許されるルールでなければ MOSIS # 8.4 でエラーになります.Stacked Via についてはデザインルールの HP の “6.
Stack via support by process and technology codes” を参照して下さい SCN4ME SUBM では#8.4,5 は該当しません.
∼ページに scmos.tech27 で出力された cif の略称を載せましたが,SCN4ME SUBM.20.TSMC.tech27 では若干異なり
ます.例えば,scmos.tech27 では Metal1 の略称が CMF となっていましたが,SCN4ME SUBM.20.TSMC.tech27 では
CM1 となります.詳しくは∼で解説します.
読み込み時の注意
Alliance で出力した CIF ファイルを SCN4ME SUBM.20.TSMC.tech27 を使用した Magic で読み込
む際には,CIF ファイルの内の各セルの宣言
DSn 50 2;
を
DSn 10 2;
に変更する必要があります.n にはセルの番号が入ります.
scmos.tech27 を使用していた場合には Magic で CIF ファイルの出力を行った際に Alliance と同じ比率でしたが,
SCN4ME SUBM.20.TSMC.tech27 を使用して CIF ファイルを出力すると上の様に 50→10 に変更されるためです.もう
少し修正を加えれば最初から上手く行くかもしれません.
Magic でデザインルールチェックをする時にはセルの階層構造を 1 層に変換し,セルを 1 つのみにします.
そうしないと,Magic が階層構造を正しく認識せずにエラーを出力する場所があります(142 ページ)
セルを一つにするには,Graal のメニューバーから Tool→Real flat を選び,全てのセルを囲みます.そして別名で保
存すればセルは 1 層になりますが,ファイルサイズは大きくなります.
この方法は Alliance で Druc を使う場合は関係ありません.
9.2.4
MOSIS HP の Table 4: SCMOS Layer Map について
HP のレイヤマップ “Table 4: SCMOS Layer Map” のリンクを辿ると,各レイヤのデザインルールが掲載されてい
ます.
ここでは Via のページの例を解説します.
http://www.mosis.org/Technical/Designrules/scmos/scmos-metal2.html
Via のページの右の Lambda の下には 2 Metal Process と 3+ Metal Process がありますが,これはメタルが 2 層であ
るか 3 層以上であるかと言う意味です.サブミクロンプロセスでは最低でも 3 層なので右 SUBM の欄が当てはまります.
左の 2 Metal Process の SUBM は使用しないので n/a(該当せず)となります.
又,ルール 8.4 は (SCNA, SCNE, SCN3M, SCN3MLC) に対して該当するので今回は関係ありません.逆にこのルー
ルが適用されると SXLIB で回避不能なルール違反が生じます().
ルール 8.5 もサブミクロンプロセスでは HP 前画面の “Table 3a: SCMOS and SCMOS Sub-micron Differences Dif-
ferences” で Unrestricted(制限されない)と書いてあるので関係ありません.
以上より,SCMOS.tech27 に比べて SCN4ME SUBM.20.TSMC.tech27 では Via の制限が少なくなっていることがわ
かります.
102
第9章
9.3
テクノロジーファイル
テクノロジーファイルの記述方法及び値の設定
9.3.1
書式
($ man prol)を基に,テクノロジーファイル(.rds)の記述方法及び各パラメータについて説明します.
#
“#” はコメント行です.
空文字
半角スペースかタブを入れることで,宣言の区切りを示します.又,宣言は各行単位となります.改行するこ
とで次の宣言と見なされます.尚,行の途中でコメント宣言 “#” を入れると,#宣言以降はコメントとなります.
\ 行末に “\” を入れることで,次の行も同じ行と見なされます.行が長くなって見づらくなった時に \ を入れて改行し
ます.
DEFINE “DEFINE” は,PHYSICAL GRID と LAMBDA を宣言する際に使用します.行の左に DEFINE,その次
に半角スペースかタブを入れて PHYSICAL GRID か LAMBDA を宣言し,その後に値を設定します.例えば,
DEFINE PHYSICAL_GRID X
DEFINE LAMBDA
Y
のようになります(X,Y は数字)
TABLE,END それ以外のパラメータは “TABLE” の後に宣言して,“END” で終了します.もし必要の無いパラメー
タであれば,パラメータ名を宣言し,内部には何も記述せずに END で宣言を終了します.
例えば,
TABLE LYNX_RESISTOR
END
のようになります.
全てのパラメータを宣言しないと s2r 実行時にパラメータ宣言の読み取りエラーでストップします.他の.rds ファイル
には,Ver.3 系統のままのものもあり,Ver.4 で新たに増えたパラメータを宣言していないために起動時にエラーとなり
ます.
9.3.2
LAMBDA,PHYSICAL GRID
LAMBDA 全ての値は λ を基準に計算されます.よって,まず始めに λ の値を決定しなければなりません.今回は
Magic で cif ファイルを出力したときの値の比率と同じになるように,λ = 2 とします.これは,1λ の値が 2 であるという
ことです.又,Graal 上での 1λ が Dreal 上では何 λ になるか,という値です.Symbolic To Real Translation の “A.4.1”
(11∼14 ページ)に λ の算出方法が詳しく掲載されていますが,結果的に今回は使用しませんでした.
PHYSICAL GRID “PHYSICAL GRID” は,各パラメータの最小単位です.全ての値は PHYSICAL GRID の倍数
になります(使用していない Lynx∼等を除く).今回は PHYSICAL GRID = 0.5 とします.こうすることで図 9.1 の
ように,1λ のグリッド数が 4 になり,Magic で cif ファイルを出力したときの値と同じ比率になります.例えば,ポリシ
リコンの最小幅は 2λ です.この場合は図 9.2 のようになります.
cif ファイルの Box 宣言が 4 の倍数になるのも,1λ が 4 グリッドであるからです.図 9.2 の左下を原点とした場合には
Box 宣言は
B 8 8 4 4;
となります.つまり,cif ファイルの値はグリッド数を出力しているのです.
テクノロジーファイルに記述する時には,
9.3. テクノロジーファイルの記述方法及び値の設定
103
Physical Grid = 0.5
Physical Grid = 0.5
1 lambda = 2
1 lambda = 2
2lambda
図 9.1: 1λ の正方形
図 9.2: ポリシリコンの最小幅
DEFINE PHYSICAL_GRID
0.5
DEFINE LAMBDA
2.0
となります.
この値を適用したときには,Graal 上での 1λ が Dreal 上での 2λ となります.
9.3.3
MBK TO RDS SEGMENT,MBK TO RDS CONNECTOR
MBK TO RDS SEGMENT “MBK TO RDS SEGMENT” は,ap フォーマットの S 宣言を cif フォーマットの B 宣
言に変換するためのパラメータです.このパラメータに関係のあるドキュメントは($ man prol)の,“Segment translation
table” の項及び,Symbolic To Real Translation の “A.3.1 Segment Translation”(3∼8 ページ),“A.4.3 Segments”(14
∼18 ページ)です.Segment translation table には,各パラメータの意味が掲載されています.A.3.1 には,パラメータ
を設定したと仮定して,s2r でどのように変換がされるか掲載されています.又,A.4.3 には,パラメータの値の決定方
法が掲載されています.今回は A.4.3 の計算方法は使用しません.第 7 章で Magic から CIF ファイルを出力したように,
SCN4ME SUBM.20.TSMC.tech27 を使用して各レイヤを CIF 形式で出力し,その λ の値を基に,A.3.1 の変換公式か
ら目的の値を設定します.
以下のファイルは,実際に Magic(MOSIS)でサブミクロンプロセスの最小幅に合わせて設定したものです.各パラ
メータについてはこれから解説します.尚,この例のままではセルライブラリを表示した際に最小間隔エラー等が生じ
る箇所があるので,次章で値を修正していきます.
1 TABLE MBK_TO_RDS_SEGMENT
2
3 NWELL
RDS_NWELL
VW
4 PWELL
RDS_PWELL
VW
5 NDIF
RDS_NDIF
VW
6
RDS_ACTIV
VW
7
RDS_NIMP
VW
8
RDS_PWELL
VW
9 PDIF
RDS_PDIF
VW
10
RDS_ACTIV
VW
11
RDS_PIMP
VW
12
RDS_NWELL
VW
13 NTIE
RDS_NTIE
VW
14
RDS_ACTIV
VW
2.00
2.00
-0.50
-0.50
1.50
5.50
-0.50
-0.50
1.50
5.50
-0.50
-0.50
4.00
4.00
-1.00
-1.00
3.00
11.00
-1.00
-1.00
3.00
11.00
-1.00
-1.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
ALL
ALL
EXT\
DRC\
DRC\
DRC
EXT\
DRC\
DRC\
DRC
EXT\
DRC\
104
第9章
15
16
17 PTIE
18
19
20
21 NTRANS
22
23
24
25
26
27
28 PTRANS
29
30
31
32
33
34
35 POLY
36 ALU1
37 ALU2
38 ALU3
39 ALU4
40 TALU1
41 TALU2
42 TALU3
43 TALU4
44 CALU1
45 CALU2
46 CALU3
47 CALU4
48 END
RDS_NIMP
RDS_NWELL
RDS_PTIE
RDS_ACTIV
RDS_PIMP
RDS_PWELL
RDS_GATE
RDS_NDIF
RDS_NDIF
RDS_POLY
RDS_ACTIV
RDS_NIMP
RDS_PWELL
RDS_GATE
RDS_PDIF
RDS_PDIF
RDS_POLY
RDS_ACTIV
RDS_PIMP
RDS_NWELL
RDS_POLY
RDS_ALU1
RDS_ALU2
RDS_ALU3
RDS_ALU4
RDS_TALU1
RDS_TALU2
RDS_TALU3
RDS_TALU4
RDS_ALU1
RDS_ALU2
RDS_ALU3
RDS_ALU4
VW
VW
VW
VW
VW
VW
VW
LCW
RCW
VW
VW
VW
VW
VW
LCW
RCW
VW
VW
VW
VW
VW
VW
VW
VW
VW
VW
VW
VW
VW
VW
VW
VW
VW
1.50
4.00
-0.50
-0.50
1.50
4.00
-0.50
-2.50
-2.50
-0.50
-2.50
-0.50
3.50
-0.50
-2.50
-2.50
-0.50
-2.50
-0.50
3.50
0.00
0.50
-1.00
-1.00
1.00
0.50
-1.00
-1.00
1.00
0.50
-1.00
-1.00
1.00
3.00
8.00
-1.00
-1.00
3.00
8.00
0.00
3.00
3.00
0.00
6.00
10.00
18.00
0.00
3.00
3.00
0.00
6.00
10.00
18.00
0.00
1.00
-0.50
-0.50
2.00
1.00
-0.50
-0.50
2.00
1.00
-0.50
-0.50
2.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
テクノロジーファイル
DRC\
DRC
EXT\
DRC\
DRC\
DRC
EXT\
EXT\
EXT\
DRC\
DRC\
DRC\
DRC
EXT\
EXT\
EXT\
DRC\
DRC\
DRC\
DRC
ALL
ALL
ALL
ALL
ALL
ALL
ALL
ALL
ALL
ALL
ALL
ALL
ALL
MBK TO RDS SEGMENT の各パラメータは次の通りです(asga 7.rds を参考にしています).
TABLE MBK_TO_RDS_SEGMENT
MBK_name RDS_name Type DLR (D)WR OFFSET MODE \
RDS_name Type DLR (D)WR OFFSET MODE \
...
RDS_name Type DLR (D)WR OFFSET MODE \
END
MBK name MBK name には,仮想配置の Segment 名を指定します.指定する名前は($ man prol)の “LAYERS
AND PATTERNS” の “Mbk layers” に書いてあるレイヤ名を設定します.その下に書いてある “Mbk patterns” のレイ
ヤ名は MBK TO RDS VIA で選択するのでここでは使用しません.上の例では,NWELL,PWELL,NDIF,PDIF,
等一番左の名前が相当します.本来ならば各項目は一行に記述するのですが,長すぎるので “\” で区切って次の行に続
きを記述しています.途中にコメント “#” を入れた場合には,それ以降,次の MBK name までの複数行をコメントと
見なします.
RDS name RDS name には,実配置の Segment 名を指定します.設定できるレイヤ名は($ man prol)の “LAYERS
AND PATTERNS” の “Rds layers” に記載されています.一つの MBK name に対して RDS name は複数になることも
あります.例えば,上の MBK name の NDIF はマスクレイヤでは Active,Implant,Well の 3 種類のレイヤを重ねて設
定するので,Rds name は RDS ACTIV,RDS NIMP,RDS PWELL の 3 種類になります.ここで,RDS NDIF も設
定されていますが,その理由は次項で解説します.
9.3. テクノロジーファイルの記述方法及び値の設定
105
レイヤ名は Ver.4,Ver.5 になって増えています.詳細はセルライブラリをエディタで開いて使用されているレイヤ名
をチェックするか,cmos graal ファイル,cmos.rds ファイルなどからチェックするしかありません.Ver.5 では cmos.rds
を見ると CALU というレイヤが増えています.これはどうやらコネクタ ALU という意味のようです.設定方法は ALU
と同様で RDS には RDS ALU を使用しています.テクノロジーファイルを Ver.4 で使用する場合には CALU は削除す
るかコメントにして下さい.
MODE
Type,DLR,(D)WR,OFFSET の前に,“MODE” について解説します.このパラメータは設定した値を何
に使用するかを指定するものです.値には “DRC”,“EXT”,“ALL” の 3 種類から選択します.
DRC は s2r で変換し,Dreal で表示するためのレイヤに設定します.DRC 宣言されたレイヤは Graal では表示され
ません.例えば,RDS ACTIV,RDS PIMP,RDS NIMP には DRC を設定します.
EXT は Graal で領域(セグメント)を表示する際に記述します.Graal の入出力フォーマットである.ap ファイルに
は軸の座標と長さ,仮想幅しか記述されていませんが,テクノロジーファイルの MBK TO RDS SEGMENT で EXT,
ALL 宣言されたレイヤに変換公式を適用して幅と長さを計算し,画面に表示します.例えば,RDS NDIF,RDS PDIF
は疑似レイヤなので EXT を設定します.EXT 宣言された値は Graal では表示されますが,s2r での変換に使用されるこ
とはありません.Graal,Dreal で表示されるレイアウトの比率は全く同じです.
Diffusion,Transistor に関しては,仮想配置(擬似レイヤ)と実配置(マスクレイヤ)のレイアウトが違うので,
RDS name の部分にはそれぞれのパラメータを別々に記述します.
ALL は,EXT,DRC 両方を兼ね備えています.つまり,Graal でも表示され,s2r で変換して Dreal でも表示されま
す.主に Well と Alu(Metal)等の配線に設定される値です.
Type Type には,“VW”,“RCW”,“LCW” の 3 種類を設定できます(“Symbolic to Real Translation”(4∼8 ペー
ジ)).しかし,Transistor の値を設定する時以外は全て VW を指定します.
VW は,“Variable Width” の略で,幅が一定では無いことを宣言しています.殆どのレイヤに適用されます.
LCW,RCW はそれぞれ “Left Constant Width”,“Right Constant Width” の略で,幅が一定であることを意味し
ます.この値は Transistor の仮想配置(EXT 宣言)での Diffusion にのみ使用されます(22,23,29,30 行目).
Transistor の実配置(マスクレイヤ)では Active と Polisillicon は交差させるように宣言しますが(図 9.4),仮想配
置(擬似レイヤ)では Lynx でネットリストを抽出する際に Source と Drain を繋げてはいけないため,Gate の左右の
Diffusion を別々に宣言します(図 9.3).
Gate(vw)
Poly
LCW
RCW
4
2
Active
Implant
Well
Diffusion
図 9.3: Graal で表示する Tr は 3 つの領域を組み合わせて構 図 9.4: Dreal で表示する Tr はポリシリコンとアクティブを
成されます.
OFFSET
交差させます.
“OFFSET” は,領域の軸がどれだけずれるかを設定するパラメータです.軸をずらすとレイアウトが崩れ
るので,基本的に全て 0 に設定します.
LCW,RCW 宣言された RDS NDIF,RDS PDIF の OFFSET の値は Gate からの距離になります.例えば,LCW
の OFFSET を 2,RCW の OFFSET を 4 に設定すると,図 9.5 のようになります.ただし,これは Gate(Poly)の最
106
第9章
テクノロジーファイル
小幅を 2λ とした場合であり,最小幅を変更するとレイアウトが崩れます.よって,Gate(Poly)の最小幅は 2λ 固定の
ようです.以上より,LCW,RCW 宣言された場合の OFFSET の値も 0 に設定します.
Diffsion
LCW
2
GATE
Diffusion
RCW
4
図 9.5: 縁からの距離であり,軸からの距離ではありません(Gate の最小幅が 2λ の場合).
DLR,DWR “DLR”,“DWR” は MBK TO RDS SEGMENT の中でも最もわかりにくいパラメータです.この 2 つ
の値は領域を仮想配置から実配置に変換する際に使用する変換公式の定数となります.Symbolic to Real Translation の
4 ページには lr = ls λ + 2DLR と記述されていますが,いまいち何のことかわかりません.そこで,順を追って解説し
ていきます.
まずは,Magic で SCN4ME SUBM 用の CIF ファイルを出力した時のレイアウト及び,MOSIS の HP より,各領域
の最小幅を決定します(図 9.6∼9.12,表 9.1).Magic で出力した時のレイアウトからはマスクレイヤの階層及びオーバ
ラップを,MOSIS の HP からは各デザインルールが正しいかそれぞれ確認します.
$ magic -T SCN4ME_SUBM.20.TSMC.tech27 SCN4ME_SUBM.20.TSMC.mag
とすることで,このデザインルールのサンプルファイルを表示できるので,参考にして下さい.
12
6
3
2
3
2
6
図 9.6: Alu1∼3(Metal1∼3)図 9.7: Alu4(Metal4)の最小 図 9.8: Polysillicon の最小幅
の最小幅
12
図 9.9: Well の最小幅
幅
値は全て λ を基準にしています.図の中心の線は ap フォーマットの軸です.方向は全て UP です.この値よりも小さ
くすると,デザインルール違反となります.
公式は,“Symboilc To Real Translation” の 6 ページ “VW” の UP の “dxr ”,“dyr ” を使用します.この式は p4 に
載っている公式と同じものですが,記号がわかりやすいので使用しました.dxr ,dyr の公式をそれぞれ DW R,DLR の
式に置き換えると
DW R = dxr − ws λ
dyr − ls λ
2
となります.ここで,dxr は Real X Distance の略?であり,表 9.1 の幅:Width の値になります.又,dyr は Real Y
Distance の略?であり,長さ:Length の値になります.dxr ,dyr 共に最小幅を設定しているので,Transistor 以外は同
DLR =
じ値になります(後で修正しますが).図と比較してみて下さい.
9.3. テクノロジーファイルの記述方法及び値の設定
107
well
Diffusion
active
implant
4
3
2
3
7
15
3
3
7
15
図 9.10: Diffusion の最小幅.
Well
Tie
Implant
Active
3
1
2
3
3
7
12
3
7
12
図 9.11: Tie の最小幅.Tie は,Well-Contact から Metal1 と Contact を外した状態です.Implant に対して Well は同極
なのでオーバラップは+1 ですが,最小幅を考慮して 12λ にしました.
108
第9章
仮想配置 (MBK)
実配置 (RDS)
長さ:Length (dyr )
幅:Width (dxr )
Metal1,2,3
Metal1,2,3
3
3
All
Metal4
Metal4
6
6
All
Poly
Poly
2
2
All
N-Well
N-Well
12
12
All
P-Well
P-Well
12
12
All
N-Diffusion
N-Diffusion
ACTIVE
N-Implant
P-Well
3
3
7
15
3
3
7
15
Graal
Dreal
P-Diffusion
P-Diffusion
3
3
Graal
ACTIVE
P-Implant
N-Well
3
7
15
3
7
15
Dreal
N-Tie
ACTIVE
N-Implant
3
3
7
3
3
7
Graal
Dreal
N-Well
12
12
P-Tie
P-Tie
ACTIVE
P-Implant
P-Well
3
3
7
12
3
3
7
12
Graal
Dreal
N-Transistor
Gate
N-Diff (LCW)
N-Diff (RCW)
Polisillicon
ACTIVE
N-Implant
P-Well
7
3
3
7
3
7
15
2
3
3
2
8
12
20
Graal
Gate
P-Diff (LCW)
P-Diff (RCW)
Polisillicon
ACTIVE
P-Implant
7
3
3
7
3
7
2
3
3
2
8
12
Graal
15
20
N-Tie
P-Transistor
N-Well
テクノロジーファイル
表示するツール
Dreal
Dreal
表 9.1: SCN4ME SUBM での各レイヤの最小幅.Graal では疑似レイヤを,Dreal ではマスクレイヤを表示します.
9.3. テクノロジーファイルの記述方法及び値の設定
109
Gate(vw)
7
3
3
LCW
RCW
12
3
3
4
3
2
3
2
2
2
2
Diffusion
Graal
20
Dreal
図 9.12: Transistor の最小幅.
7
15
110
第9章
テクノロジーファイル
一方 ws ,ls は Symblic Width,Symbolic Length の略です.
この ls は,Graal のメニューバーで Create→ Segment,Transistor を選択して描画した際の軸の長さです.ap ファイ
ル上では 100 の倍数で表されています(32 ページの 6.5.2,37 ページ).ls は Graal のテクノロジーファイルに最小幅が
指定されています.その値よりも小さく描画しようとすると “This segment is too small!” と言うエラーが出力されて描
画できません.ws は Graal で描画する際に使用される仮想幅で,初期設定は Graal のテクノロジーファイルに記述され
ています.Create→Segment ウィンドウ等の Width ボタンで,指定した領域の仮想幅を変更することができます.描画
されたレイヤは ap ファイルの仮想幅の部分に記述されます.VDD,VSS 等はこの値が大きいので幅が広くなります.
ここでは最小幅を設定するので,Graal のテクノロジーファイルの値を使用します.この値は Graal で ap ファイルを
描画する際に使用され,合成した ap ファイルを読み込む時には使用されません.
Alliance Ver.4.0.6 の場合,ALLIANCE TOP/share/etc ディレクトリの “cmos 7.graal” というファイルを開くと,144
∼175 行目に
#
#
#
#
#
/*------------------------------------------------------------\
|
|
|
Minimun Length and Width for a symbolic Segment
|
|
|
\------------------------------------------------------------*/
TABLE GRAAL_SEGMENT_VALUE
NWELL
PWELL
NDIF
PDIF
NTIE
PTIE
NTRANS
PTRANS
POLY
ALU1
ALU2
ALU3
ALU4
ALU5
ALU6
TPOLY
TALU1
TALU2
TALU3
TALU4
TALU5
TALU6
4
4
2
2
2
2
1
1
1
1
2
2
2
4
4
1
1
2
2
2
2
2
4
4
2
2
2
2
4
4
1
1
2
2
2
4
4
1
1
2
2
2
2
2
END
という記述があります.Minimun Length and Width for a symbolic Segment と書いてあるので最初のパラメータが
Length,次のパラメータ(一番右)が Width と考えがちですが,実は逆です.つまり,Ntrans の ls は 4,ws は 1 とな
ります.
又,Ver.5 では Alliance Top/etc/cmos.graal というファイルの 152∼190 行目に同様の記述があります.Ver.5 では
CALU1∼6 及び ALU5 の値が違います1 .以下,Ver.5 の cmos.graal ファイルからの抜粋です.
#
#
#
#
/*------------------------------------------------------------\
|
|
|
Minimun Length and Width for a symbolic Segment
|
|
|
1 今回は意識していませんが,後々影響があるかもしれません
9.3. テクノロジーファイルの記述方法及び値の設定
111
# \------------------------------------------------------------*/
TABLE GRAAL_SEGMENT_VALUE
NWELL
PWELL
NDIF
PDIF
NTIE
PTIE
NTRANS
PTRANS
POLY
POLY2
ALU1
ALU2
ALU3
ALU4
ALU5
ALU6
TPOLY
TALU1
TALU2
TALU3
TALU4
TALU5
TALU6
CALU1
CALU2
CALU3
CALU4
CALU5
CALU6
4
4
2
2
2
2
1
1
1
1
1
2
2
2
2
2
1
1
2
2
2
2
2
2
2
2
2
2
2
4
4
2
2
2
2
4
4
1
1
1
1
1
1
1
1
1
1
2
2
2
2
2
0
0
0
0
0
0
END
Ver.5 について今回関係のある部分を表にまとめました(表 9.2).ls はこの値よりも小さく描画しようとするとエラー
になります.
MBK Name
ls
ws
N,PWELL
4
4
N,PDIF
2
2
N,PTIE
2
2
N,PTRANS
4
1
POLY
1
1
ALU1
1
1
ALU2∼5
2
2
TALU1
1
1
TALU2∼5
2
2
CALU1∼5
0
2
表 9.2: Graal でレイヤを描画する時の最小幅(ls , ws ).POLY2,TPOLY は使用しているライブラリが存在しなかった
ため記載せず.
112
変換
第9章
テクノロジーファイル
これで全ての値が決定したので,DLR,DWR の値を計算します.ここでは最小幅エラーがでないようにし,細
かい調整は次章で行います.
例えば,101 ページより,RDS NWELL の DLR の値は 2 です.この値を算出するには,表 9.1 より NWELL の dyr
の値は 10,表 9.2 より ls の値は 4 ,λ = 2 となるので,
DLR =
dyr − ls λ
12 − 4 × 2
=
=2
2
2
となります.又,DWR の値は 4 です.同様に
DW R = dxr − ws λ = 12 − 4 × 2 = 4
となります.参考のために N-Transistor の DWR,DLR の算出過程を全て載せておきます.
N-Transistor
λ = 2,ls = 4,ws = 1
dyr − ls λ
7−4×2
=
= −0.5
2
2
dyr − ls λ
3−4×2
=
= −2.5
DLRactive =
2
2
dyr − ls λ
7−4×2
DLRN Imp =
=
= −0.5
2
2
dyr − ls λ
15 − 4 × 2
DLRP W ell =
=
= 3.5
2
2
DLRpoly = DLRgate =
DW Rpoly = DW Rgate = dxr − ws λ = 2 − 1 × 2 = 0
DW Ractive = dxr − ws λ = 8 − 1 × 2 = 6
DW RN
Imp
= dxr − ws λ = 12 − 1 × 2 = 10
DW RP
W ell
= dxr − ws λ = 20 − 1 × 2 = 18
Transistor 内の Gate と Poly は同一の値になります.違いは,Gate は Graal で使用され,Poly は Dreal で使用される
ということです.又,DLR の Active と Diffusion(LCW),Diffusion(RCW)の値も同じになります.しかし,DWR
の Diffusion(LCW),Diffusion(RCW)の値は違います.この値は “Symbolic To Real Translation” の 7,8 ページに
あるように,DWR ではなく WR となります.WR は一定幅であり,DWR のように計算して dxr の値が変わることは
ありません.この値はそれぞれの Diffusion の幅なので,Diffusion(LCW),Diffusion(RCW)共に 3 となります(107
ページの図 9.12 左).
以上で DLR,DWR の導き方を解説しましたが,逆に DLR,DWR,ws ,ls ,λ によって dxr ,dyr を導くこともでき
ます.詳しい公式は “Symbolic To Real Translation” の 6∼8 ページを参照して下さい.この時の DLR,DWR,λ はテ
クノロジーファイルに記述した値,ws ,ls は各 ap ファイルに記述された値です.よって,読み込み時の ws ,ls は Graal
のテクノロジーファイルを使用しません.各レイヤの DWR は同一なのに幅が違うのは,ws が異なっているからです.
MBK TO RDS CONNECTOR “MBK TO RDS CONNECTOR” は,ap フォーマットの C 宣言を cif フォーマッ
トの 4X 宣言に変換するためのパラメータです.
Magic では使用しませんが,Alliance では Lynx(Ver.5 では Cougar)を使用する際等に利用します.
TABLE MBK_TO_RDS_CONNECTOR
POLY
RDS_POLY
0.00
ALU1
RDS_ALU1
0.50
ALU2
RDS_ALU2
-1.00
ALU3
RDS_ALU3
-1.00
ALU4
RDS_ALU4
1.00
TALU1
RDS_TALU1
0.50
TALU2
RDS_TALU2
-1.00
0.00
1.00
-0.50
-0.50
2.00
1.00
-0.50
9.3. テクノロジーファイルの記述方法及び値の設定
TALU3
TALU4
CALU1
CALU2
CALU3
CALU4
RDS_TALU3
RDS_TALU4
RDS_ALU1
RDS_ALU2
RDS_ALU3
RDS_ALU4
-1.00
1.00
0.50
-1.00
-1.00
1.00
113
-0.50
2.00
1.00
-0.50
-0.50
2.00
END
パラメータの宣言は,
MBK_name
RDS_name
DER
DWR
となります.
($ man prol)には DWR,DER の順に書いてありますが,おそらく間違いです.DER は DLR と同じ計算
方法で良いので,結果として DER,DWR は MBK TO RDS SEGMENT の DLR,DWR と同じ値になります.このパ
ラメータに設定するレイヤは配線に使用される POLY,ALU,TALU,CALU です.このうち TALU,CALU は実際に
使われているか検証していないので,とりあえず記述しました.Graal で描画する際の Connector 宣言には,ALU しか
ないので,TALU,CALU は必要無いかもしれません.
9.3.4
Reference,Contact
MBK TO RDS REFERENCE このパラメータは次のようになります.
TABLE
MBK_TO_RDS_REFERENCE
REF_CON RDS_REF 2.00
REF_REF RDS_REF 2.00
END
($ man prol)には載っていません.
($ man ap)及び asga 7.rds に多少解説があります.
Symbolic の値は REF CON,REF REF の 2 種類です.必ずラベルを付ける必要があります.Ver.4 のセルライブラ
リには REF CON が,Ver.5 のセルライブラリには REF REF が使用されていました.REF CON は 4X,4N,B 宣言
に,REF REF は 4N,B 宣言にそれぞれ変換されます.
Ref は縦に 5λ 置きに配置されます(85 ページの図 8.6).Ver.4 では高さが 25λ の位置(ラベルは “* 25”)にコンタ
クトを配置し,その位置まで Metal2 を配線します.それ以外の高さの Ref は Ver.4 では使用されていないようです(87
ページの図 8.9,88 ページの図 8.10).これは Ver.5 で NERO を使用することを見込んで Ver.4 の時点で設計していた
ようです.
Ref 宣言は SXLIB から導入されたようで,SCLIB にはありません.Ver.5 ではその他の高さの Ref にも Via を配置し
ます(89 ページの図 8.11,90 ページの図 8.12,91 ページの図 8.13).Ver.4 では Metal2 は縦に配線されていましたが,
Ver.5 では横に配線されます.そのために必要に応じて全ての Ref が参照できるようです.
MBK TO RDS VIA このパラメータには,マスクレイヤの幅の値をそのまま記述します.SCN4ME SUBM 用のデ
ザインルールを使用して Magic で出力した値と MOSIS の HP より,次のようになります.
TABLE MBK_TO_RDS_VIA
CONT_BODY_N \
RDS_ALU1
4.00
RDS_CONT
2.00
RDS_ACTIV
4.00
RDS_NIMP
8.00
RDS_NWELL
12.00
CONT_BODY_P \
RDS_ALU1
4.00
RDS_CONT
2.00
RDS_ACTIV
4.00
RDS_PIMP
8.00
RDS_PWELL
12.00
ALL\
ALL\
DRC\
DRC\
DRC
ALL\
ALL\
DRC\
DRC\
DRC
114
第9章
CONT_DIF_N \
RDS_ALU1
RDS_CONT
RDS_ACTIV
RDS_NIMP
RDS_PWELL
CONT_DIF_P \
RDS_ALU1
RDS_CONT
RDS_ACTIV
RDS_PIMP
RDS_NWELL
CONT_POLY \
RDS_ALU1
RDS_CONT
RDS_POLY
CONT_VIA \
RDS_ALU1
RDS_VIA1
RDS_ALU2
CONT_VIA2
\
RDS_ALU2
RDS_VIA2
RDS_ALU3
CONT_VIA3
\
RDS_ALU3
RDS_VIA3
RDS_ALU4
END
4.00
2.00
4.00
8.00
16.00
ALL\
ALL\
DRC\
DRC\
DRC
4.00
2.00
4.00
8.00
16.00
ALL\
ALL\
DRC\
DRC\
DRC
4.00
2.00
4.00
ALL\
ALL\
ALL
4.00
2.00
4.00
ALL\
ALL\
ALL
4.00
2.00
4.00
ALL\
ALL\
ALL
4.00
2.00
4.00
ALL\
ALL\
ALL
1
2
2
4
8
2
4
8
12
図 9.13: CONT BODY(Well Contact)
12
テクノロジーファイル
9.3. テクノロジーファイルの記述方法及び値の設定
4
115
2
2
4
8
16
2
4
8
16
図 9.14: CONT DIF(Diffusion Contact)
2
4
2
4
図 9.15: CONT POLY,CONT VIA1,2(Polysillicon Contact,VIA1,2)
Magic で出力すると Active Cont と Poly Cont はそれぞれ別の略称ですが,MOSIS HP の Table 4: SCMOS Layer
Map の NOTE に “Can be replaced by CONTACT” と書いてあるので,全てコンタクトで代用します.
この他に “C X N”,“C X P” があるのですが,は Ver.5 では使用されていません.
Ver.4 では “fplib”,“grog”,“rsa”,“sclib” で使用されています.基本的に Ver.4 では SXLIB を使用しますが,これ
らのライブラリを必要とする場合は($ man prol),他の.rds ファイルを調べて下さい.
9.3.5
CIF LAYER,GDS LAYER
CIF LAYER
TABLE
“CIF LAYER” は,RDS と CIF の略称を対応付けます.
CIF_LAYER
RDS_PWELL
RDS_NWELL
RDS_POLY
RDS_CONT
RDS_ALU1
CWP
CWN
CPG
CCC
CM1
116
第9章
2
4
6
2
4
6
図 9.16: CONT VIA3(VIA3)
レイヤ名
CIF 形式での略称
scmos.tech27 SCN4ME SUBM
P WELL
CWP
CWP
N WELL
CWN
CWN
POLY
CPG
CPG
POLY2
CEL
CEL?
POLY Cont
CCP
CCP,CCC
Metal1
CMF
CM1
Metal2
CMS
CM2
Metal3
-
CM3
Metal4
-
CM4
VIA
CVA
CV1
VIA2
-
CV2
VIA3
-
CV3
CSN
CSN
N Implant(N+Select)
P Implant(P+Select)
CSP
CSP
Active
CAA
CAA
Active Cont
CCA
CCA,CCC
表 9.3: マスクレイヤと CIF 形式での略称
テクノロジーファイル
9.3. テクノロジーファイルの記述方法及び値の設定
RDS_ALU2
RDS_ALU3
RDS_ALU4
RDS_TALU1
RDS_TALU2
RDS_TALU3
RDS_TALU4
RDS_VIA1
RDS_VIA2
RDS_VIA3
RDS_ACTIV
RDS_NIMP
RDS_PIMP
RDS_REF
117
CM2
CM3
CM4
CM1
CM2
CM3
CM4
CV1
CV2
CV3
CAA
CSN
CSP
REF
END
第 7 章では scmos.tech27 を使用して出力しましたが,本章では SCN4ME SUBM を使用しているので一部略称が異な
ります.尚,MOSIS の HP には両方の略称が掲載されています.
Alliance は P 型基盤なので,P-Well は必要無いように思われますが,Magic の標準設定では関係する全てのレイヤを
重ね合わせて初めて画面に表示されるので,Well は N,P 共に記述します.
コンタクトは Magic で出力した場合はポリコンタクト(CCP)とアクティブコンタクト(CCA)で略称が違いますが,
共にコンタクト(CCC)に置き換えることができます.Alliance でコンタクトの設定を CCC にして Magic で CIF を読
み込ませても問題なく表示できます.
TALU は ALU と同じ略称になります.CALU は “MBK TO RDS SEGMENT” で RDS ALU を設定しているのでこ
こでは問題ありません.
REF は Alliance の宣言なので Magic では拡張宣言エラーとなります.
Dreal を使用して CIF ファイルを読み込む際には,CIF のレイヤ名をこのパラメータで,RDS のレイヤ名に変換して
表示しているようです.よって,CIF のレイヤ名と RDS のレイヤ名の対応が合っていない場合にはエラーで表示できま
せん.
GDS LAYER RDS レイヤに対応する GDS の名前を数字で指定します.数字は MOSIS の HP 等に載っていますが,
今回は CIF 形式で出力するので空欄にしました.
TABLE
END
9.3.6
GDS_LAYER
S2R POST TREAT,S2R OVERSIZE DENOTCH
S2R BLOC RING WIDTH,S2R MINIMUM LAYER WIDTH
この 4 つのパラメータは,s2r で実配置に変換する時生成される Implant,Well 等を併合処理するかどうか,又併合処
理をする際の幅のルールなどを設定するものです.
実配置にした際に Implant,Well が生成されますが(図 9.17),その時に隣接するレイヤが近すぎて最小間隔エラーが
生じることがあります(図 9.18).その際に Alliance では,隣接するレイヤの距離を離すのではなく,併合(Merging)
することによりエラーを無くそうとします(図 9.19).尚,この例での幅は scmos.tech27 標準の設定でサブミクロンで
はないので注意して下さい.
このパラメータの設定には,
($ man prol)及び Symbolic To Real Translation の 19 ページを参照しています.
S2R POST TREAT “S2R POST TREAT” は,s2r で変換した後の処理,つまり併合を行うかどうかを設定するパ
ラメータです.
TABLE S2R_POST_TREAT
RDS_NWELL
TREAT
NULL
118
第9章
Well
9
10
テクノロジーファイル
Well
10
図 9.17: Well の最小間隔は 9λ です(サブミクロンでは 18λ)
Well
7
10
Well
10
図 9.18: 9λ よりも狭くなると,デザインルール違反となります(内側の斜線部分)
Well
27
図 9.19: 併合処理をすると,2 つの領域が繋がり,エラーが無くなります.
9.3. テクノロジーファイルの記述方法及び値の設定
RDS_PWELL
RDS_POLY
RDS_CONT
RDS_ALU1
RDS_ALU2
RDS_ALU3
RDS_ALU4
RDS_TALU1
RDS_TALU2
RDS_TALU3
RDS_TALU4
RDS_VIA1
RDS_VIA2
RDS_VIA3
RDS_ACTIV
RDS_NIMP
RDS_PIMP
RDS_ABOX
TREAT
TREAT
NOTREAT
TREAT
TREAT
TREAT
TREAT
TREAT
TREAT
TREAT
TREAT
NOTREAT
NOTREAT
NOTREAT
TREAT
TREAT
TREAT
NOTREAT
119
NULL
NULL
NULL
NULL
NULL
NULL
NULL
NULL
NULL
NULL
NULL
NULL
NULL
NULL
NULL
RDS_PIMP
RDS_NIMP
NULL
END
最初のパラメータには併合を行うかどうかを設定します.設定できる値は TREAT(扱う)と,NOTREAT(扱わな
い)です.上の例のように,コンタクト,VIA と Abutment Box 以外は併合を行います.
その次のパラメータには領域が斜めに配置された場合も扱うかどうかを設定する項目です.NULL の場合には扱いま
せん.これについては次章 136 ページの 10.2.4 で説明します.
S2R OVERSIZE DENOTCH このパラメータは,隣接するレイヤの最小間隔を設定します(図 9.20).この間隔
よりも小さい場合には併合します.
Layer
i
D
Layer
i
ii
図 9.20: レイヤの最小間隔 Drmin
TABLE S2R_OVERSIZE_DENOTCH
RDS_Layer OSV
RDS_Layer OSV
...
END
となります.OSV は Over Size Value の略で,この値は Symbolic To Real Translation の 19 ページに公式が載ってい
ます.
OSV i =
1 ii
D
− P GS
2 rmin
ii
まず,各レイヤの最小間隔 Drmin
は表 9.4 の通りです.
また,P GS は “Physical Grid Size” の略なので,100 ページ 9.3.2 より 0.5 を代入します.以上より,S2R OVERSIZE DENOTCH
は,次のようになります.
TABLE
S2R_OVERSIZE_DENOTCH
RDS_NWELL
8.50
120
第9章
レイヤ名
テクノロジーファイル
ii
最小間隔 Drmin
N-Well
18
P-Well
18
Polysillicon
3
Metal1
3
Metal2
3
Metal3
3
Metal4
6
Active
3
N-Implant
2
P-Implant
2
表 9.4: 各レイヤの最小間隔(SCN4ME SUBM)
RDS_PWELL
RDS_POLY
RDS_ALU1
RDS_ALU2
RDS_ALU3
RDS_ALU4
RDS_TALU1
RDS_TALU2
RDS_TALU3
RDS_TALU4
RDS_ACTIV
RDS_NIMP
RDS_PIMP
8.50
1.00
1.00
1.00
1.00
2.50
1.00
1.00
1.00
2.50
1.00
0.50
0.50
END
このパラメータは最小間隔を直接設定する訳ではないことに注意して下さい.
S2R MINIMUM LAYER WIDTH “S2R MINIMUM LAYER WIDTH” は,併合処理を行う際に生成される領
域の最小幅を設定します(図 9.21).この幅よりも狭くなると,デザインルール違反になります.
Layer
i
w
Layer
i
i
図 9.21: Wrmin
TABLE S2R_MINIMUM_LAYER_WIDTH
RDS_LAYER
MLWi
RDS_LAYER
MLWi
...
RDS_LAYER
MLWi
END
ここで,“M LW i (Minimum Layer Width)” は,公式にもあるように
i
M LW i = Wrmin
9.3. テクノロジーファイルの記述方法及び値の設定
121
となります.W は Width,i はレイヤ,r は実配置(real),min は最小幅,という意味です.106 ページの表 9.1,図 9.6
∼9.12 より,次のようになります.
TABLE
S2R_MINIMUM_LAYER_WIDTH
RDS_NWELL
12.00
RDS_PWELL
12.00
RDS_POLY
2.00
RDS_ALU1
3.00
RDS_ALU2
3.00
RDS_ALU3
3.00
RDS_ALU4
6.00
RDS_TALU1
3.00
RDS_TALU2
3.00
RDS_TALU3
3.00
RDS_TALU4
6.00
RDS_ACTIV
3.00
RDS_NIMP
7.00
RDS_PIMP
7.00
END
S2R BLOC RING WIDTH S2R BLOC RING WIDTH は別の階層のセルとの併合を行うためのパラメータです.
TABLE S2R_BLOC_RING_WIDTH
RDS_Layer BWRi
RDS_Layer BWRi
...
RDS_Layer BWRi
END
となります.BRW i (Bloc Ring Width)の式は
ii
BRW i = Drmin
ii
です.つまり,118 ページの表 9.4 の Drmin
の値をそのまま設定します.
TABLE
S2R_BLOC_RING_WIDTH
RDS_NWELL
18.00
RDS_PWELL
18.00
RDS_POLY
3.00
RDS_ALU1
3.00
RDS_ALU2
3.00
RDS_ALU3
3.00
RDS_ALU4
6.00
RDS_TALU1
3.00
RDS_TALU2
3.00
RDS_TALU3
3.00
RDS_TALU4
6.00
RDS_ACTIV
3.00
RDS_NIMP
2.00
RDS_PIMP
2.00
END
9.3.7
LYNX GRAPH,LYNX CAPA,LYNX RESISTOR,LYNX TRANSISTOR,
LYNX DIFFUSION,LYNX BULK IMPLICIT
このパラメータは,Lynx を使用してネットリストを抽出する際に使用します.現在調査中の為,パラメータ名のみ記
述します.
122
第9章
TABLE
END
LYNX_GRAPH
TABLE
END
LYNX_CAPA
TABLE
END
LYNX_RESISTOR
TABLE
END
LYNX_TRANSISTOR
TABLE
END
LYNX_DIFFUSION
TABLE
END
LYNX_BULK_IMPLICIT
9.3.8
テクノロジーファイル
MBK TO RDS BIGVIA HOLE,MBK TO RDS BIGVIA METAL,
MBK TO RDS TURNVIA(Ver.5 専用)
この 3 つのパラメータは Ver.5 になって採用されたものですが,ドキュメントはありませんでした.よって,空欄に
しています.Ver.5 の etc ディレクトリに入っている “cmos.rds” を参考にして下さい.尚,“padlib” ライブラリには
TURNVIA を使用しているので padlib を使用する場合は値を設定する必要があるでしょう.Ver.4 で使用する場合には
必要ありません.
TABLE MBK_TO_RDS_BIGVIA_HOLE
END
TABLE MBK_TO_RDS_BIGVIA_METAL
END
TABLE MBK_TO_RDS_TURNVIA
END
以上のパラメータをエディタで記述し,拡張子を “.rds” にして保存します.そして,環境変数 RDS TECHNO NAME
に設定することで,このテクノロジーファイルを使用することができます.この時,異なる OS(例えば Windows 等)
上で記述すると,改行コードの違いでエラーになる場合があるので,なるべく使用している OS 上で記述して下さい.
本章で作成したテクノロジーファイルは完成版ではありません.次章でエラーが出る部分について順を追って修正し
て行きます.
123
第 10 章 エラーの修正
第 9 章で作成したテクノロジーファイルを使用して,第 5 章で作成した equal.ap ファイルを変換しました(図 10.1).
このファイルを Magic で読み込ませると,図 10.2 のようになります.読み込ませる際には 99 ページ 9.2.3 の読み
込み時の注意を参照して下さい.尚,この図は scmos.tech27 を使用していたときのものなので,今回使用している
SCN4ME SUBM.20.TSMC.tech27 では画面に Via が表示されません.
図 10.1: Dreal で表示した場合
図 10.2: Magic で表示した場合
以上より,equal.ap ファイルに関してはデザインルール違反は生じないようです.しかし,Alliance の HP に掲載さ
れている半加算機を変換した場合にはエラーが生じます.よって,半加算機の ap ファイルを作成するまでの流れを掲載
し,エラーが出ている箇所の修正を行うので,参考にして下さい.
尚,前章では Ver.5 用の作成方法を解説しましたが,実際には Ver.4 用にテクノロジーファイルを作成して後から Ver.5
に対応したので本章では Ver.4 用の内容になっています.Ver.5 は Ver.4 に対してテクノロジーファイルの違いは CALU
と 3 つのパラメータが追加されるだけです.
124
第 10 章 エラーの修正
10.1
テストデータの作成(半加算機)
まずは,半加算機の VHDL のソースコードの作成です.これは,HP
http://asim.lip6.fr/alliance_old/alliance/doc/jumpstart/Examples/FullAdder.html
より,
-- External ports
ENTITY halfadder IS
PORT ( A, B, Vdd, Vss: IN BIT;
Sum, Carry: OUT BIT );
END halfadder;
-- Internal Behaviour
ARCHITECTURE halfadder_data_flow OF halfadder IS
SIGNAL A_bar, B_bar: BIT;
BEGIN
A_bar <= NOT A;
B_bar <= NOT B;
Sum <= ( A_bar AND B ) OR ( A AND B_bar );
Carry <= A AND B;
END halfadder_data_flow;
となります.続いて SCMAP を使用してネットリストを作成します.
$ scmap halfadder halfadder
さらに,SCR で ap ファイルを作成します.
$ scr -p -r -i 1000 halfadder
以上で,halfadder.ap ファイルが作成されました.とりあえず前章で作成したテクノロジーファイルを使用して CIF
ファイルに変換してみます.尚,Ver.4 で使用するために CALU 及び 3 つのパラメータを削除してあります.
$ s2r halfadder
これで,halfadder.cif ファイルが作成されました.
Dreal で出力すると,図 10.3 のようになります.Magic で出力した場合には図 10.4 のようになります.
次のセクションでは,今回作成した halfadder.ap を使用してデザインルール違反を修正します.
10.1. テストデータの作成(半加算機)
図 10.3: Dreal で出力した半加算機のレイアウト.
(pdf では右側が欠けているかもしれません.
)
125
126
第 10 章 エラーの修正
図 10.4: Magic で出力した半加算機のレイアウト(scmos.tech27 を使用しています)
10.2. 修正
10.2
修正
10.2.1
読み込み時のエラー
127
前章で作成したファイルを Magic で読み込ませると,“Input off lambda grid by 1/2; snapped to grid.” と,“unim-
plemented user extension; ignored.” という 2 種類のエラーが出力されます.
Input off lambda grid by 1/2; snapped to grid. このエラーは,図 10.5 のように,領域の幅又は長さが奇数の
時に,軸がグリッド上に配置されると,左右に 1/2λ ずつはみ出て描画しようとすることが原因です(図 10.5 左).しか
し,実際には 1/2λ だけ描画することはできないため,ファイルの読み取り時にエラーを出力し,図 10.5 右のように表
示されます.
24
16
12
8
(0, 0)
B 12 24 8 16;
図 10.5: (B 12 24 8 16;)宣言をそのまま表示しようとすると左図のようになりますが,半マスだけの描画は不可能な
ので,実際の表示では右図のようになり,エラーが出力されます.
解決方法
以上より,最小 λ 幅を奇数にしておくのがエラー原因とわかりました.よって,前章の 106 ページの表 9.1 に
載せている Length と Width のうち,奇数の値は 1 足して偶数にします.例えば,メタルの最小幅は 3λ ですが,1 足し
て 4λ にします.以上より,表 10.1 のようになります.
よって,この値を使用して DLR,DWR を求めると,127 ページのような値になります.
128
第 10 章 エラーの修正
仮想配置 (MBK)
実配置 (RDS)
長さ:Length (dyr )
幅:Width (dxr )
Metal1,2,3
Metal1,2,3
4
4
All
Metal4
Metal4
6
6
All
Poly
Poly
2
2
All
N-Well
N-Well
12
12
All
P-Well
P-Well
12
12
All
N-Diffusion
N-Diffusion
ACTIVE
4
4
4
4
N-Implant
P-Well
8
16
8
16
P-Diffusion
ACTIVE
4
4
4
4
P-Implant
N-Well
8
16
8
16
N-Tie
N-Tie
ACTIVE
N-Implant
N-Well
4
4
8
12
4
4
8
12
Graal
Dreal
P-Tie
P-Tie
ACTIVE
P-Implant
4
4
8
4
4
8
Graal
Dreal
12
12
Gate
8
2
Graal
N-Diff (LCW)
N-Diff (RCW)
Polisillicon
ACTIVE
N-Implant
4
4
8
4
8
3
3
2
8
12
Dreal
16
20
8
4
4
2
3
3
Graal
8
4
8
16
2
8
12
20
Dreal
P-Diffusion
P-Well
N-Transistor
P-Well
P-Transistor
Gate
P-Diff (LCW)
P-Diff (RCW)
Polisillicon
ACTIVE
P-Implant
N-Well
表示するツール
Graal
Dreal
Graal
Dreal
表 10.1: 奇数幅に 1 足して偶数幅に変更しました(下線を引いた箇所).このうち,Diffusion の LCW,RCW は幅が 3λ
のままです.これは,LCW,Gate,RCW を全て並べると 8λ と,元々偶数幅になるためです.
10.2. 修正
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
129
TABLE MBK_TO_RDS_SEGMENT
NWELL
PWELL
NDIF
PDIF
NTIE
PTIE
NTRANS
PTRANS
POLY
ALU1
ALU2
ALU3
ALU4
TALU1
TALU2
TALU3
TALU4
END
RDS_NWELL
RDS_PWELL
RDS_NDIF
RDS_ACTIV
RDS_NIMP
RDS_PWELL
RDS_PDIF
RDS_ACTIV
RDS_PIMP
RDS_NWELL
RDS_NTIE
RDS_ACTIV
RDS_NIMP
RDS_NWELL
RDS_PTIE
RDS_ACTIV
RDS_PIMP
RDS_PWELL
RDS_GATE
RDS_NDIF
RDS_NDIF
RDS_POLY
RDS_ACTIV
RDS_NIMP
RDS_PWELL
RDS_GATE
RDS_PDIF
RDS_PDIF
RDS_POLY
RDS_ACTIV
RDS_PIMP
RDS_NWELL
RDS_POLY
RDS_ALU1
RDS_ALU2
RDS_ALU3
RDS_ALU4
RDS_TALU1
RDS_TALU2
RDS_TALU3
RDS_TALU4
VW
VW
VW
VW
VW
VW
VW
VW
VW
VW
VW
VW
VW
VW
VW
VW
VW
VW
VW
LCW
RCW
VW
VW
VW
VW
VW
LCW
RCW
VW
VW
VW
VW
VW
VW
VW
VW
VW
VW
VW
VW
VW
2.00
2.00
0.00
0.00
2.00
6.00
0.00
0.00
2.00
6.00
0.00
0.00
2.00
4.00
0.00
0.00
2.00
4.00
0.00
-2.00
-2.00
0.00
-2.00
0.00
4.00
0.00
-2.00
-2.00
0.00
-2.00
0.00
4.00
0.00
1.00
0.00
0.00
1.00
1.00
0.00
0.00
1.00
4.00
4.00
0.00
0.00
4.00
12.00
0.00
0.00
4.00
12.00
0.00
0.00
4.00
8.00
0.00
0.00
4.00
8.00
0.00
3.00
3.00
0.00
6.00
10.00
18.00
0.00
3.00
3.00
0.00
6.00
10.00
18.00
0.00
2.00
0.00
0.00
2.00
2.00
0.00
0.00
2.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
ALL
ALL
EXT\
DRC\
DRC\
DRC
EXT\
DRC\
DRC\
DRC
EXT\
DRC\
DRC\
DRC
EXT\
DRC\
DRC\
DRC
EXT\
EXT\
EXT\
DRC\
DRC\
DRC\
DRC
EXT\
EXT\
EXT\
DRC\
DRC\
DRC\
DRC
ALL
ALL
ALL
ALL
ALL
ALL
ALL
ALL
ALL
TABLE MBK_TO_RDS_CONNECTOR
POLY RDS_POLY
0.00 0.00
ALU1 RDS_ALU1
1.00 2.00
ALU2 RDS_ALU2
0.00 0.00
ALU3 RDS_ALU3
0.00 0.00
ALU4 RDS_ALU4
1.00 2.00
TALU1 RDS_TALU1 1.00 2.00
TALU2 RDS_TALU2 0.00 0.00
TALU3 RDS_TALU3 0.00 0.00
TALU4 RDS_TALU4 1.00 2.00
END
以上のように設定し直してから halfadder.ap ファイルを s2r で変換して Magic で出力した結果が図 10.6 です.この
ファイルを読み込んだ際には “Input off lambda grid by 1/2; snapped to grid.” というエラーは発生しません.
130
第 10 章 エラーの修正
図 10.6: 最小幅を偶数 λ にしました.124 ページの図 10.4 と比較すると,Via が無くなっています.
しかし,図 10.6,図 10.23 を見ると,以前(124 ページの図 10.4)には存在していた Via が無くなっているのがわか
ります1 .
unimplemented user extension; ignored. Alliance で作成した CIF ファイルを Magic で読み込ませると,Alliance
固有の拡張宣言(4A,4X,4N,4l)を無視します.このうち,4A,4X,4l については Magic で同様の概念が無いので
そのままでかまいません.
4N はラベルなので,ファイル内の文字を “94” に置換することで,画面に表示することができます.ただ,Magic で
CIF ファイルを出力した場合と若干異なるので,Perl 等を使用してテキストを修正する必要があります.
1 Via
が無くなったのは scmos.tech27 の場合です.SCN4ME SUBM 用のテクノロジーファイルでは,元々Via が表示されないようです.
10.2. 修正
10.2.2
131
ポリシリコンが短すぎるてエラーが出る問題
次に,図 10.7 のようにポリシリコンが短すぎるために
図 10.7: 白い部分がデザインルール違反が生じている箇所です.Transistor の Poly が短すぎるために Poly Contact と繋
がっていません.
Polysilicon width must be at least 2 (MOSIS rule #3.1)
というエラーが出ている箇所があります.そこで,ポリコンタクトの大きさを 4 から 6 に変更します.つまり,現在 1λ
オーバラップしているのを 2λ 分オーバラップします(図 10.8).この時 Metal1 は変更しません.
よって,MBK TO RDS VIA の
CONT_POLY \
RDS_ALU1
RDS_CONT
RDS_POLY
4.00
2.00
4.00
ALL\
ALL\
ALL
CONT_POLY \
RDS_ALU1
RDS_CONT
RDS_POLY
4.00
2.00
6.00
ALL\
ALL\
ALL
を
132
第 10 章 エラーの修正
2
4
2
2
2
4
4
6
4
6
図 10.8: ポリコンタクトを修正します
にします.その結果は図 10.9 のようになり,エラーは修正されました.右側にまだエラーが表示されている箇所があり
ますが,これについては 146 ページで解説します.
10.2. 修正
133
図 10.9: エラーが修正されました
134
第 10 章 エラーの修正
Tr の修正はこれで完了ですが,検証中はポリシリコンを 2λ 伸ばしていました.この場合,軸の反対側も同時に伸び
るので,+2λ 伸ばしたい場合には,+4λ 分増やします(図 10.10).
+2
2
4
2
4
12
(+4)
8
3
3
+2
図 10.10: 上下それぞれ +2λ 分伸ばします.わかりやすくするために,Implant,Well は除いています.
よって,dyrpoly を 8 から 12 に変更すると,Transistor の RDS POLY,RDS GATE の DLR は 0 から 2 になります.
以上のように設定して,halfadder.ap ファイルを s2r で変換し,Magic で表示すると,図 10.11 のようになります.
さて,ここで,図 10.10 のように,Poly が反対側にも +2 オーバラップしました.この場合は Ver.5 の場合上下に OCP
(配置ツール)を使用して配置された他のセルの Poly との間に最小間隔エラーが生じます.よって,Tr に関しては左の
状態のままで,これ以上の修正は必要ありません.
10.2. 修正
135
図 10.11: エラーは修正されます(この画像は scmos.tech27 で描画しています)しかし,反対側にも Poly(Gate)が伸
びるので,この方法は用いません.
136
10.2.3
第 10 章 エラーの修正
Transistor の Active に合わせて Diffution の長さも調整する
ここまでで,Transistor のエラーは無くなりました.Diffusion は現在最小幅に設定していますが,Transistor に合わせ
て長さを調整します.現在は図 10.12 のようになっています.これは,Transistor に比べて,Diffusion の領域が 2λ 分内
側に凹んでいます.よって,Diffusion の凹んだ領域を Transistor の領域と同じ位置に来るように調節します(図 10.13).
Implant,Well もオーバラップがそれぞれ 2,6(Implant からは+4)になるように調節します.
図 10.12: Diffusion 領域が Transistor に比べて凹んでいます.
+2
4
8(+4)
4
+2
4
図 10.13: わかりやすくするために,Implant,Well は除いています.
以上より,図 10.14 のようになりました.
10.2. 修正
137
図 10.14: Transistor と同じ高さ?になりました.
138
10.2.4
第 10 章 エラーの修正
Well の併合エラー
現在 Well はテクノロジーファイルの “S2R POST TREAT” で後処理をするように設定をしていますが,図 10.15,図
10.16 のように,併合されない部分があります.
図 10.15: そのままでは斜めには併合されません.
10.2. 修正
139
図 10.16: Dreal で表示した場合.
140
第 10 章 エラーの修正
前章の 115 ページの 9.3.6 で,そのまま設定すると,斜めの併合を考慮せずに,今回のようなエラーが生じます.よっ
て,115 ページの 9.3.6 にある設定を使用します.2 つ目のパラメータには NULL が設定されています.
TABLE S2R_POST_TREAT
RDS_NWELL
TREAT
RDS_PWELL
TREAT
NULL
NULL
~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~
END
この値を RDS NWELL もしくは RDS PWELL に変更すると,図 10.17,図 10.18 のように併合処理が斜めにも実行
され,デザインルール違反は修正されます.
TABLE S2R_POST_TREAT
RDS_NWELL
TREAT
RDS_PWELL
TREAT
RDS_PWELL
RDS_NWELL
~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~
END
詳しくは($ man prol)の “Post treatment configuration table” を参照して下さい.ここで,N と P を反対にしても
この例では上手く併合できますが,違うレイアウトでテストした場合には s2r を実行した際に “***s2r error***, scotch
error” と表示されたので,RDS NWELL の場合には RDS PWELL を,RDS PWELL には RDS NWELL を設定する
ようにして下さい.尚,ここで用いた画像は Poly Cont の修正前のものを使用しています.
図 10.17: 併合処理が実行され,エラーが修正されました.
10.2. 修正
141
図 10.18: Dreal で表示した場合.
142
10.2.5
第 10 章 エラーの修正
配線の Wire 設定での隙間がエラーになる問題(Polisilicon,Alu1,Alu2)
配線の dyr を最小幅に設定したままだと,Graal で描画する際の Wire 設定で向きを変えた時に隙間が生じてエラーに
なる場合があります.
例えば,図 10.19 のように Graal で配線を描画します.この時に Wire 設定にすることで,終点と次の始点の軸ずれが
起こらないように続けて描くことができます.そのファイルを s2r で変換した後,Magic で表示すると,図 10.20 のよう
になり,最小幅違反になります.
図 10.19: Graal で配線を Wire 設定で描画した状態.左か 図 10.20: Magic で表示すると,デザインルール違反が生じ
ら,Alu2,Alu1,Poly.
ていることがわかります.
よって,この隙間の分だけ配線を長くする必要があります.図 10.20 より,Poly,Alu1 は+1,Alu2 は+2 にします.
実際には軸の両側に伸びるので,2 倍の長さを設定します(図 10.21)(Poly,Alu1 は+2,Alu2 は+4).
2
12
2
2
16(12+4)
図 10.21: 例として,Alu2 を扱っています.ルール違反を修正するために,最小長を+4 にします.
よって,Poly,Alu1,Alu2 の DLR はそれぞれ,1,2,2 となります(計算は省略).以上より,図 10.22 のように,
10.2. 修正
143
エラーが修正されました.
図 10.22: Magic でエラーが修正できたことが確認できました.
Alu3 は Alu2 と同様の値,Alu4 は 6λ から 10λ に変更となります.
144
第 10 章 エラーの修正
10.3
Magic でデザインルールをチェックする場合の注意点
10.3.1
Via が表示されない
Alliance で生成した CIF ファイルを Magic で読み込ませた場合,Dreal では表示されていた Via が表示されなくなる
場合があります(図 10.23,図 10.24).CIF ファイルを読むと,確かに記述されています.これには Magic 側に 2 種類
の原因があります.
図 10.23: 拡大図.Via が無くなっています.
テクノロジーファイルを SCN4ME SUBM.20.TSMC.tech27 にしている場合
テクノロジーファイルが SCN4ME SUBM.20.TSMC.tech27 の場合,Metal を 4 層,Via3 まで使用できますが,その
代わりにショートカット “F12” で VIA1 を表示することはできないようです.VIA1 を入力するには,範囲を指定して
“paint v1” を入力します.v1 では VIA1,Metal1,Metal2 を一度に描画します.この場合,Metal1,2 が 1λ ずつオーバ
ラップするので最小幅は 4λ になります.又,VIA1 のみを描画したい場合は “paint gv1” と入力します.こちらの場合
は v1 の最小幅は 2λ ですが,Metal1,2 は後から 1λ ずつオーバラップするように描画しなければなりません.
この時に,テクノロジーファイルの記述が悪いのか,本来の群青色の VIA1 は表示されずに見た目は Metal1 と同様の
レイアウトが描画されます.よって,この場合は表示されないのではなく,表示されているものの区別が付いていない
状態と言えます.このテクノロジーファイルを使用している状態で Via1 のエラーはおそらく無いと思うので,そのまま
にしていても良いでしょう.気になる場合は Magic 側で同様のオプションの別のファイルを使用するか,テクノロジー
ファイルを書き換えて下さい.
階層構造の場合
Via1 を階層的に配置した場合,Magic では上手く表示されないようです(図 10.25).同様に Diff もエラーが表示され
ています.これは,s2r で合成時にトップセルに Active が生成されてしまっているのが原因のようです(図 10.26).こ
10.3. Magic でデザインルールをチェックする場合の注意点
145
図 10.24: Dreal では Via が表示されています.
のエラーを回避するには Graal 上で Real flat を実行し,全セルを一つに纏めて階層化を止める方法があります.その場
合は全てエラー無く表示されます.もっとも,Magic でデザインルールチェックをしない場合には必要ありません.
146
第 10 章 エラーの修正
図 10.25: 白くなっている部分がデザインルール違反です下の配線には表示はされていませんが,VIA が設置されてい
ます.
10.3. Magic でデザインルールをチェックする場合の注意点
図 10.26: トップセルに Active が生成されています
147
148
10.3.2
第 10 章 エラーの修正
コンタクトと VIA が接触している場合
SCN4ME SUBM では Stacked Via が適用されるのでコンタクトと VIA が接触していてもエラーにはなりません(MOSIS
Rule # 8.4 が除外されます).しかし,131 ページの図 10.9 のように,画面にはエラーが表示されています(図 10.27).
これは,Magic の仕様もしくは Magic 側のテクノロジーファイル記述ミスのようです.
図 10.27: エラーと出ていますが,実は違います
Poly_Cont
Via1
(a) Poly_Cont Via
(8),+9: $<;= 1> Via1 ? 957 81.
BC"@D E"AF 1Via1
4#GHJ .I
Poly_Cont
KLM 2*35 4 2 G1# + N.8
1I
(c)
"!#%$&'# (*),+.-/01 2354 .6
(b)
Poly_Cont
図 10.28: エラーの出る仕組み
紛らわしいですが,Via と Contact が近づいていてエラーが出ている場合はほぼこの例のと同様の症状だと考えて下
さい.又,Via も画面に表示されないのでわかりづらいでしょう.よって,最終的には Alliance のテクノロジーファイ
ル(∼.rds)に Druc 用のデザインルールを記述するのが良いかもしれません.Magic はマスクレイヤの最小幅を調べる
時には役立つと思います.
10.4. Sub-Micron ルールを適用しない場合はどうなるか
10.4
Sub-Micron ルールを適用しない場合はどうなるか
10.4.1
Via と Polysilicon が重なる
149
Via が表示できた場合でも,図 10.29 のように,デザインルール違反が生じます.これは,
Via must be on a flat surface (MOSIS rule # 8.4,5)
言う内容で,つまり,Via の下の層は平らでなければいけないと言っています.
図 10.29: Via が表示できたとしても,デザインルール違反が生じます(scmos.tech27 を使用).
このエラーはサブミクロンプロセスには適用されないので SCN4ME SUBM では問題ありません.
10.4.2
Stacked Via が適用されない
scmos.tech27 等サブミクロンプロセスよりも 1λ が大きい場合には Stacked Via が適用されないことが多いです.よっ
て,146 ページの図 10.27 などのケースではデザインルールエラーになります.
150
第 10 章 エラーの修正
これでテクノロジーファイルのうち,記述方法が分かっている部分については全て修正を終えたと思います.次章で
は,現時点で完成している SCN4ME SUBM 及び,SCN5M SUBM 用のテクノロジーファイル及び使用上の注意につい
て解説します.尚,それぞれ Ver.4,Ver.5 で使用可能です.
151
第 11 章 修正結果
11.1
修正結果
ここまでで各レイヤについて調整を行い,エラーを修正してきました.完成した SCN4ME SUBM の各領域の長さ,幅
を纏めると,図 11.1∼11.13,表 11.1 のようになります.この他に,Poly Cont も修正しています(129 ページ 10.2.2)
3
6
3
4
図 11.1: Metal1 の最小幅.
3
8
3
4
図 11.2: Metal2,3 の最小幅.
152
第 11 章
6
10
6
6
図 11.3: Metal4 の最小幅.
4
2
2
2
図 11.4: Polysilicon の最小幅.
12
12
図 11.5: Well の最小幅.Well は修正の必要ありませんでした.
修正結果
11.1. 修正結果
153
3
8
3
4
図 11.6: Diffusion(擬似レイヤ)の最小幅.
RDS_ACTIV
3
7
3
RDS_IMP
7
RDS_WELL
15
図 11.7: Diffusion(マスクレイヤ)の最小幅(修正前).
15
154
第 11 章
4
2
8
12
20
RDS_ACTIV
4
RDS_IMP
8
RDS_WELL
16
図 11.8: Diffusion(マスクレイヤ)の最小幅(修正後).
RDS_TIE
3
RDS_TIE
3
4
図 11.9: Tie(擬似レイヤ)の最小幅.
4
修正結果
11.1. 修正結果
155
RDS_WELL
RDS_WELL
RDS_IMP
RDS_IMP
RDS_ACTIV
RDS_ACTIV
3
7
4
12
8
3
4
7
8
12
12
図 11.10: Tie(マスクレイヤ)の最小幅.
RDS_GATE
RDS_GATE
2
2
7
3
3
4
8
3
3
3
2
2
図 11.11: Transistor(擬似レイヤ)の最小幅.
12
156
第 11 章
12
2
15
7
3
3
3
2
20
図 11.12: Transistor(マスクレイヤ)の最小幅(修正前).
RDS_POLY
RDS_IMP
12
2
8
16
8
4
8
2
4
3
2
5
RDS_ACTIVE
RDS_WELL
20
図 11.13: Transistor(マスクレイヤ)の最小幅(修正後).
修正結果
11.1. 修正結果
157
仮想配置 (MBK)
実配置 (RDS)
長さ:Length (dyr )
幅:Width (dxr )
Metal1
Metal1
6
4
All
11.1
Metal2
Metal2
8
4
All
11.2
Metal3
Metal3
8
4
All
11.2
Metal4
Metal4
10
6
All
11.3
Poly
Poly
4
2
All
11.4
N-Well
N-Well
12
12
All
11.5
P-Well
P-Well
12
12
All
11.5
N-Diffusion
N-Diffusion
ACTIVE
N-Implant
P-Well
8
8
12
20
4
4
8
16
Graal
Dreal
11.6
11.7,
11.8
P-Diffusion
P-Diffusion
ACTIVE
P-Implant
8
8
12
4
4
8
Graal
Dreal
11.6
11.7,
11.8
N-Well
20
16
N-Tie
4
4
Graal
11.9
ACTIVE
N-Implant
N-Well
4
8
12
4
8
12
Dreal
11.10
P-Tie
ACTIVE
P-Implant
4
4
8
4
4
8
Graal
Dreal
11.9
11.10
P-Well
12
12
Gate
N-Diff (LCW)
N-Diff (RCW)
Polisillicon
ACTIVE
N-Implant
P-Well
8
4
4
8
4
8
16
2
3
3
2
8
12
20
Graal
11.11
Dreal
11.12,
11.13
Gate
P-Diff (LCW)
P-Diff (RCW)
Polisillicon
ACTIVE
8
4
4
8
4
2
3
3
2
8
Graal
11.11
Dreal
11.12,
11.13
8
16
12
20
N-Tie
P-Tie
N-Transistor
P-Transistor
P-Implant
N-Well
表 11.1: SCMOS4ME SUBM の修正結果
表示するツール
図
158
第 11 章
修正結果
以上よりテクノロジーファイルは次のようになります.中身が無いパラメータについては調査中です.作成したテクノ
ロジーファイルは “mosis TSMC SCN4ME SUBM v5 beta1.rds” としました.v5 は Ver.5 用という意味です.
DEFINE PHYSICAL_GRID
0.5
DEFINE LAMBDA
2.0
TABLE MBK_TO_RDS_SEGMENT
NWELL
PWELL
NDIF
PDIF
NTIE
PTIE
NTRANS
PTRANS
POLY
ALU1
ALU2
ALU3
ALU4
TALU1
TALU2
TALU3
TALU4
CALU1
CALU2
CALU3
CALU4
END
RDS_NWELL
RDS_PWELL
RDS_NDIF
RDS_ACTIV
RDS_NIMP
RDS_PWELL
RDS_PDIF
RDS_ACTIV
RDS_PIMP
RDS_NWELL
RDS_NTIE
RDS_ACTIV
RDS_NIMP
RDS_NWELL
RDS_PTIE
RDS_ACTIV
RDS_PIMP
RDS_PWELL
RDS_GATE
RDS_NDIF
RDS_NDIF
RDS_POLY
RDS_ACTIV
RDS_NIMP
RDS_PWELL
RDS_GATE
RDS_PDIF
RDS_PDIF
RDS_POLY
RDS_ACTIV
RDS_PIMP
RDS_NWELL
RDS_POLY
RDS_ALU1
RDS_ALU2
RDS_ALU3
RDS_ALU4
RDS_TALU1
RDS_TALU2
RDS_TALU3
RDS_TALU4
RDS_ALU1
RDS_ALU2
RDS_ALU3
RDS_ALU4
VW
VW
VW
VW
VW
VW
VW
VW
VW
VW
VW
VW
VW
VW
VW
VW
VW
VW
VW
LCW
RCW
VW
VW
VW
VW
VW
LCW
RCW
VW
VW
VW
VW
VW
VW
VW
VW
VW
VW
VW
VW
VW
VW
VW
VW
VW
2.00
2.00
2.00
2.00
4.00
8.00
2.00
2.00
4.00
8.00
0.00
0.00
2.00
4.00
0.00
0.00
2.00
4.00
0.00
-2.00
-2.00
0.00
-2.00
0.00
4.00
0.00
-2.00
-2.00
0.00
-2.00
0.00
4.00
1.00
2.00
2.00
2.00
3.00
2.00
2.00
2.00
3.00
2.00
2.00
2.00
3.00
TABLE MBK_TO_RDS_CONNECTOR
POLY
RDS_POLY
1.00
4.00
4.00
0.00
0.00
4.00
12.00
0.00
0.00
4.00
12.00
0.00
0.00
4.00
8.00
0.00
0.00
4.00
8.00
0.00
3.00
3.00
0.00
6.00
10.00
18.00
0.00
3.00
3.00
0.00
6.00
10.00
18.00
0.00
2.00
0.00
0.00
2.00
2.00
0.00
0.00
2.00
2.00
0.00
0.00
2.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
ALL
ALL
EXT\
DRC\
DRC\
DRC
EXT\
DRC\
DRC\
DRC
EXT\
DRC\
DRC\
DRC
EXT\
DRC\
DRC\
DRC
EXT\
EXT\
EXT\
DRC\
DRC\
DRC\
DRC
EXT\
EXT\
EXT\
DRC\
DRC\
DRC\
DRC
ALL
ALL
ALL
ALL
ALL
ALL
ALL
ALL
ALL
ALL
ALL
ALL
ALL
11.1. 修正結果
ALU1
ALU2
ALU3
ALU4
TALU1
TALU2
TALU3
TALU4
CALU1
CALU2
CALU3
CALU4
159
RDS_ALU1
RDS_ALU2
RDS_ALU3
RDS_ALU4
RDS_TALU1
RDS_TALU2
RDS_TALU3
RDS_TALU4
RDS_ALU1
RDS_ALU2
RDS_ALU3
RDS_ALU4
2.00
2.00
2.00
3.00
2.00
2.00
2.00
3.00
2.00
2.00
2.00
3.00
END
TABLE
MBK_TO_RDS_REFERENCE
REF_CON RDS_REF 2.00
REF_REF RDS_REF 2.00
END
TABLE MBK_TO_RDS_VIA
CONT_BODY_N \
RDS_ALU1
4.00
RDS_CONT
2.00
RDS_ACTIV
4.00
RDS_NIMP
8.00
RDS_NWELL
12.00
CONT_BODY_P \
RDS_ALU1
4.00
RDS_CONT
2.00
RDS_ACTIV
4.00
RDS_PIMP
8.00
RDS_PWELL
12.00
CONT_DIF_N \
RDS_ALU1
4.00
RDS_CONT
2.00
RDS_ACTIV
4.00
RDS_NIMP
8.00
RDS_PWELL
16.00
CONT_DIF_P \
RDS_ALU1
4.00
RDS_CONT
2.00
RDS_ACTIV
4.00
RDS_PIMP
8.00
RDS_NWELL
16.00
CONT_POLY \
RDS_ALU1
4.00
RDS_CONT
2.00
RDS_POLY
6.00
CONT_VIA \
RDS_ALU1
4.00
RDS_VIA1
2.00
RDS_ALU2
4.00
CONT_VIA2
\
RDS_ALU2
4.00
RDS_VIA2
2.00
RDS_ALU3
4.00
CONT_VIA3
\
RDS_ALU3
4.00
RDS_VIA3
2.00
ALL\
ALL\
DRC\
DRC\
DRC
ALL\
ALL\
DRC\
DRC\
DRC
ALL\
ALL\
DRC\
DRC\
DRC
ALL\
ALL\
DRC\
DRC\
DRC
ALL\
ALL\
ALL
ALL\
ALL\
ALL
ALL\
ALL\
ALL
ALL\
ALL\
2.00
0.00
0.00
2.00
2.00
0.00
0.00
2.00
2.00
0.00
0.00
2.00
160
第 11 章
RDS_ALU4
6.00
ALL
END
TABLE
CIF_LAYER
RDS_PWELL
RDS_NWELL
RDS_POLY
RDS_CONT
RDS_ALU1
RDS_ALU2
RDS_ALU3
RDS_ALU4
RDS_TALU1
RDS_TALU2
RDS_TALU3
RDS_TALU4
RDS_VIA1
RDS_VIA2
RDS_VIA3
RDS_ACTIV
RDS_NIMP
RDS_PIMP
RDS_REF
CWP
CWN
CPG
CCC
CM1
CM2
CM3
CM4
CM1
CM2
CM3
CM4
CV1
CV2
CV3
CAA
CSN
CSP
REF
END
TABLE
END
GDS_LAYER
TABLE S2R_POST_TREAT
RDS_NWELL
TREAT
RDS_PWELL
TREAT
RDS_POLY
TREAT
RDS_CONT
NOTREAT
RDS_ALU1
TREAT
RDS_ALU2
TREAT
RDS_ALU3
TREAT
RDS_ALU4
TREAT
RDS_TALU1
TREAT
RDS_TALU2
TREAT
RDS_TALU3
TREAT
RDS_TALU4
TREAT
RDS_VIA1
NOTREAT
RDS_VIA2
NOTREAT
RDS_VIA3
NOTREAT
RDS_ACTIV
TREAT
RDS_NIMP
TREAT
RDS_PIMP
TREAT
RDS_ABOX
NOTREAT
END
TABLE
S2R_OVERSIZE_DENOTCH
RDS_NWELL
8.50
RDS_PWELL
8.50
RDS_POLY
1.00
RDS_ALU1
1.00
RDS_ALU2
1.00
RDS_ALU3
1.00
RDS_ALU4
2.50
RDS_TALU1
1.00
RDS_PWELL
RDS_NWELL
NULL
NULL
NULL
NULL
NULL
NULL
NULL
NULL
NULL
NULL
NULL
NULL
NULL
NULL
RDS_PIMP
RDS_NIMP
NULL
修正結果
11.1. 修正結果
RDS_TALU2
RDS_TALU3
RDS_TALU4
RDS_ACTIV
RDS_NIMP
RDS_PIMP
161
1.00
1.00
2.50
1.00
0.50
0.50
END
TABLE
S2R_MINIMUM_LAYER_WIDTH
RDS_NWELL
12.00
RDS_PWELL
12.00
RDS_POLY
2.00
RDS_ALU1
3.00
RDS_ALU2
3.00
RDS_ALU3
3.00
RDS_ALU4
6.00
RDS_TALU1
3.00
RDS_TALU2
3.00
RDS_TALU3
3.00
RDS_TALU4
6.00
RDS_ACTIV
3.00
RDS_NIMP
7.00
RDS_PIMP
7.00
END
TABLE
S2R_BLOC_RING_WIDTH
RDS_NWELL
18.00
RDS_PWELL
18.00
RDS_POLY
3.00
RDS_ALU1
3.00
RDS_ALU2
3.00
RDS_ALU3
3.00
RDS_ALU4
6.00
RDS_TALU1
3.00
RDS_TALU2
3.00
RDS_TALU3
3.00
RDS_TALU4
6.00
RDS_ACTIV
3.00
RDS_NIMP
2.00
RDS_PIMP
2.00
END
TABLE
END
LYNX_GRAPH
TABLE
END
LYNX_CAPA
TABLE
END
LYNX_RESISTOR
TABLE
END
LYNX_TRANSISTOR
TABLE
END
LYNX_DIFFUSION
TABLE
END
LYNX_BULK_IMPLICIT
162
第 11 章
修正結果
TABLE MBK_TO_RDS_BIGVIA_HOLE
END
TABLE MBK_TO_RDS_BIGVIA_METAL
END
TABLE MBK_TO_RDS_TURNVIA
END
11.2
5 層配線(SCN5M SUBM)にしたい場合
4 層配線の場合,Metal4 の最小幅,最小間隔が 6λ なので 4 層使用して合成した場合デザインルール違反になります
(∼より).そこで,合成時には 3 層まで使用し,手動で 4 層目は電源,外部ピンとの接続用に使用すると良いと思います.
5 層配線の場合は Metal4 の最小幅,最小間隔は 3 のままになります.
http://www.mosis.org/Technical/Designrules/scmos/scmos-metal4.html#22
さらに Metal5 の最小幅,最小間隔は 4 なので合成時にデザインルール違反にはなりません.
http://www.mosis.org/Technical/Designrules/scmos/scmos-metal5.html#26
ここで,5 層配線のテクノロジーファイルを紹介します.方法は Metal4 の最小幅,最小間隔を設定しなおし,VIA4,
Metal5 を追加することです.以下のコメントはファイル内の同じ番号と対応させて読んで下さい.尚,ファイル名は
“mosis TSMC SCN5M SUBM v5 beta1.rds” としました.
11.2. 5 層配線(SCN5M SUBM)にしたい場合
163
#1. ALU4,TALU4,CALU4 を 6λ から 4λ に変更します.値は ALU2,ALU3 と同一になります.最小幅は 3λ です
が,偶数にすることを考慮して 4λ にしました.
#2. ALU5,TALU5,CALU5 を追加します.最小幅は 4λ なので,ALU2∼4 と同一の値になります.
#3. ALU4 を修正します.値は MBK TO RDS SEGMENT と同一です.
#4. ALU5 を追加します.同じく値は ALU2∼4 と同様です.
#5. 最小幅の変更に合わせて VIA3 の ALU4 を 6→4 に変更します.
#6. VIA4 を追加します.
#7,8. VIA4,ALU5 を追加します.
#9. ALU4 の最小間隔を 6→4 に変更します.又,ALU5 を追加します.ALU5 の最小間隔は 4λ です.
#10. 同様に ALU3 の値を修正し,ALU4 を追加します.
DEFINE PHYSICAL_GRID
0.5
DEFINE LAMBDA
2.0
TABLE MBK_TO_RDS_SEGMENT
NWELL
PWELL
NDIF
PDIF
NTIE
PTIE
NTRANS
PTRANS
POLY
ALU1
ALU2
ALU3
ALU4
ALU5
TALU1
RDS_NWELL
RDS_PWELL
RDS_NDIF
RDS_ACTIV
RDS_NIMP
RDS_PWELL
RDS_PDIF
RDS_ACTIV
RDS_PIMP
RDS_NWELL
RDS_NTIE
RDS_ACTIV
RDS_NIMP
RDS_NWELL
RDS_PTIE
RDS_ACTIV
RDS_PIMP
RDS_PWELL
RDS_GATE
RDS_NDIF
RDS_NDIF
RDS_POLY
RDS_ACTIV
RDS_NIMP
RDS_PWELL
RDS_GATE
RDS_PDIF
RDS_PDIF
RDS_POLY
RDS_ACTIV
RDS_PIMP
RDS_NWELL
RDS_POLY
RDS_ALU1
RDS_ALU2
RDS_ALU3
RDS_ALU4
RDS_ALU5
RDS_TALU1
VW
VW
VW
VW
VW
VW
VW
VW
VW
VW
VW
VW
VW
VW
VW
VW
VW
VW
VW
LCW
RCW
VW
VW
VW
VW
VW
LCW
RCW
VW
VW
VW
VW
VW
VW
VW
VW
VW
VW
VW
2.00
2.00
2.00
2.00
4.00
8.00
2.00
2.00
4.00
8.00
0.00
0.00
2.00
4.00
0.00
0.00
2.00
4.00
0.00
-2.00
-2.00
0.00
-2.00
0.00
4.00
0.00
-2.00
-2.00
0.00
-2.00
0.00
4.00
1.00
2.00
2.00
2.00
2.00
2.00
2.00
4.00
4.00
0.00
0.00
4.00
12.00
0.00
0.00
4.00
12.00
0.00
0.00
4.00
8.00
0.00
0.00
4.00
8.00
0.00
3.00
3.00
0.00
6.00
10.00
18.00
0.00
3.00
3.00
0.00
6.00
10.00
18.00
0.00
2.00
0.00
0.00
0.00
0.00
2.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
ALL
ALL
EXT\
DRC\
DRC\
DRC
EXT\
DRC\
DRC\
DRC
EXT\
DRC\
DRC\
DRC
EXT\
DRC\
DRC\
DRC
EXT\
EXT\
EXT\
DRC\
DRC\
DRC\
DRC
EXT\
EXT\
EXT\
DRC\
DRC\
DRC\
DRC
ALL
ALL
ALL
ALL
ALL
ALL
ALL
#1
#2
164
第 11 章
TALU2
TALU3
TALU4
TALU5
CALU1
CALU2
CALU3
CALU4
CALU5
END
RDS_TALU2
RDS_TALU3
RDS_TALU4
RDS_TALU5
RDS_ALU1
RDS_ALU2
RDS_ALU3
RDS_ALU4
RDS_ALU4
VW
VW
VW
VW
VW
VW
VW
VW
VW
2.00
2.00
2.00
2.00
2.00
2.00
2.00
2.00
2.00
TABLE MBK_TO_RDS_CONNECTOR
POLY
RDS_POLY
1.00
ALU1
RDS_ALU1
2.00
ALU2
RDS_ALU2
2.00
ALU3
RDS_ALU3
2.00
ALU4
RDS_ALU4
2.00
ALU5
RDS_ALU5
2.00
TALU1 RDS_TALU1
2.00
TALU2 RDS_TALU2
2.00
TALU3 RDS_TALU3
2.00
TALU4 RDS_TALU4
2.00
TALU5 RDS_TALU5
2.00
CALU1 RDS_ALU1
2.00
CALU2 RDS_ALU2
2.00
CALU3 RDS_ALU3
2.00
CALU4 RDS_ALU4
2.00
CALU5 RDS_ALU5
2.00
END
TABLE
MBK_TO_RDS_REFERENCE
REF_CON RDS_REF 2.00
REF_REF RDS_REF 2.00
END
TABLE MBK_TO_RDS_VIA
CONT_BODY_N \
RDS_ALU1
4.00
RDS_CONT
2.00
RDS_ACTIV
4.00
RDS_NIMP
8.00
RDS_NWELL
12.00
CONT_BODY_P \
RDS_ALU1
4.00
RDS_CONT
2.00
RDS_ACTIV
4.00
RDS_PIMP
8.00
RDS_PWELL
12.00
CONT_DIF_N \
RDS_ALU1
4.00
RDS_CONT
2.00
RDS_ACTIV
4.00
RDS_NIMP
8.00
RDS_PWELL
16.00
CONT_DIF_P \
RDS_ALU1
4.00
RDS_CONT
2.00
RDS_ACTIV
4.00
RDS_PIMP
8.00
ALL\
ALL\
DRC\
DRC\
DRC
ALL\
ALL\
DRC\
DRC\
DRC
ALL\
ALL\
DRC\
DRC\
DRC
ALL\
ALL\
DRC\
DRC\
0.00
0.00
0.00
0.00
2.00
0.00
0.00
0.00
0.00
0.00
2.00
0.00
0.00
0.00
0.00
2.00
0.00
0.00
0.00
0.00
2.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
#3
#4
#3
#4
#3
#4
ALL
ALL
ALL
ALL
ALL
ALL
ALL
ALL
ALL
#1
#2
#1
#2
修正結果
11.2. 5 層配線(SCN5M SUBM)にしたい場合
RDS_NWELL
CONT_POLY \
RDS_ALU1
RDS_CONT
RDS_POLY
CONT_VIA \
RDS_ALU1
RDS_VIA1
RDS_ALU2
CONT_VIA2
\
RDS_ALU2
RDS_VIA2
RDS_ALU3
CONT_VIA3
\
RDS_ALU3
RDS_VIA3
RDS_ALU4
CONT_VIA4
\
RDS_ALU4
RDS_VIA4
RDS_ALU5
END
TABLE
CIF_LAYER
RDS_PWELL
RDS_NWELL
RDS_POLY
RDS_CONT
RDS_ALU1
RDS_ALU2
RDS_ALU3
RDS_ALU4
RDS_ALU5
RDS_TALU1
RDS_TALU2
RDS_TALU3
RDS_TALU4
RDS_TALU5
RDS_VIA1
RDS_VIA2
RDS_VIA3
RDS_VIA4
RDS_ACTIV
RDS_NIMP
RDS_PIMP
RDS_REF
16.00
DRC
4.00
2.00
6.00
ALL\
ALL\
ALL
4.00
2.00
4.00
ALL\
ALL\
ALL
4.00
2.00
4.00
ALL\
ALL\
ALL
4.00
2.00
4.00
ALL\
ALL\
ALL
4.00
2.00
4.00
ALL\
ALL\
ALL
CWP
CWN
CPG
CCC
CM1
CM2
CM3
CM4
CM5
CM1
CM2
CM3
CM4
CM5
CV1
CV2
CV3
CV4
CAA
CSN
CSP
REF
#5
#6
#7
#7
#7
END
TABLE
END
GDS_LAYER
TABLE S2R_POST_TREAT
RDS_NWELL
TREAT
RDS_PWELL
TREAT
RDS_POLY
TREAT
RDS_CONT
NOTREAT
RDS_ALU1
TREAT
RDS_ALU2
TREAT
RDS_ALU3
TREAT
RDS_PWELL
RDS_NWELL
NULL
NULL
NULL
NULL
NULL
165
166
第 11 章
RDS_ALU4
RDS_ALU5
RDS_TALU1
RDS_TALU2
RDS_TALU3
RDS_TALU4
RDS_TALU5
RDS_VIA1
RDS_VIA2
RDS_VIA3
RDS_VIA4
RDS_ACTIV
RDS_NIMP
RDS_PIMP
RDS_ABOX
TREAT
TREAT
TREAT
TREAT
TREAT
TREAT
TREAT
NOTREAT
NOTREAT
NOTREAT
NOTREAT
TREAT
TREAT
TREAT
NOTREAT
NULL
NULL
NULL
NULL
NULL
NULL
NULL
NULL
NULL
NULL
NULL
NULL
RDS_PIMP
RDS_NIMP
NULL
END
TABLE
S2R_OVERSIZE_DENOTCH
RDS_NWELL
8.50
RDS_PWELL
8.50
RDS_POLY
1.00
RDS_ALU1
1.00
RDS_ALU2
1.00
RDS_ALU3
1.00
RDS_ALU4
1.00
RDS_ALU5
1.50
RDS_TALU1
1.00
RDS_TALU2
1.00
RDS_TALU3
1.00
RDS_TALU4
1.00
RDS_TALU5
1.50
RDS_ACTIV
1.00
RDS_NIMP
0.50
RDS_PIMP
0.50
#9
#9
#9
#9
END
TABLE
S2R_MINIMUM_LAYER_WIDTH
RDS_NWELL
12.00
RDS_PWELL
12.00
RDS_POLY
2.00
RDS_ALU1
3.00
RDS_ALU2
3.00
RDS_ALU3
3.00
RDS_ALU4
3.00
RDS_ALU5
4.00
RDS_TALU1
3.00
RDS_TALU2
3.00
RDS_TALU3
3.00
RDS_TALU4
3.00
RDS_TALU5
4.00
RDS_ACTIV
3.00
RDS_NIMP
7.00
RDS_PIMP
7.00
END
TABLE
S2R_BLOC_RING_WIDTH
RDS_NWELL
18.00
RDS_PWELL
18.00
RDS_POLY
3.00
#10
#10
#10
#10
#8
#8
#8
修正結果
11.3. Ver.4 用に変更したい場合
RDS_ALU1
RDS_ALU2
RDS_ALU3
RDS_ALU4
RDS_ALU5
RDS_TALU1
RDS_TALU2
RDS_TALU3
RDS_TALU4
RDS_TALU5
RDS_ACTIV
RDS_NIMP
RDS_PIMP
3.00
3.00
3.00
3.00
4.00
3.00
3.00
3.00
3.00
4.00
3.00
2.00
2.00
167
#9
#9
#9
#9
END
TABLE
END
LYNX_GRAPH
TABLE
END
LYNX_CAPA
TABLE
END
LYNX_RESISTOR
TABLE
END
LYNX_TRANSISTOR
TABLE
END
LYNX_DIFFUSION
TABLE
END
LYNX_BULK_IMPLICIT
TABLE MBK_TO_RDS_BIGVIA_HOLE
END
TABLE MBK_TO_RDS_BIGVIA_METAL
END
TABLE MBK_TO_RDS_TURNVIA
END
以上で SCN5ME SUBM が作成できました.
11.3
Ver.4 用に変更したい場合
Alliance Ver.4.0.6 では CALU というレイヤはありませんので MBK TO RDS SEGMENT と MBK TO RDS CONNECTOR
の CALU を記述した行を削除します.そして,
最後に書いた 3 つのパラメータ
TABLE MBK_TO_RDS_BIGVIA_HOLE
END
TABLE MBK_TO_RDS_BIGVIA_METAL
END
TABLE MBK_TO_RDS_TURNVIA
168
第 11 章
修正結果
END
も Ver.5 で使用されるので削除します.
以上で Ver.4 でも使用できるはずです.
11.4
不明瞭な点及び,今後の課題など
以上でそれぞれのオプションでのデザインルールを使用してチップのコアレベルでの設計まではできると思います.こ
こでは実際のチップ試作をするに当たっての注意点,残された疑問点,今後の課題について載せて置きます.
現時点ではまだテクノロジーファイルをエラー無く作成できた段階で,チップレベルでの設計は今後の課題とします.
といっても,ツールの使用方法さえわかってしまえば,それほど難しくは無いでしょう.
• 現在 SCN4ME SUBM において,THICK ACTIVE,POLY2,POLY2 CONTACT,GLASS,PADS,Comments
については考慮していません.
• Ver.5 用には今回設定していない BIGVIA,TURNVIA 等 3 つのパラメータの設定もした方が良いかもしれません.
• Ver.4 では scr で 3 層以上の配線方法がわかっていません.
• SCN4ME SUBM ではなく,SCN4M SUBM にも応用できると思います.
• SCN4ME SUBM を使用する場合,SCR(Ver.4)もしくは NERO(Ver.5)で自動合成する際に Metal4 が最小間
隔エラーになります(167 ページの 11.6).よって,自動配線は Metal3 までとし,Metal4 は外部接続などに使用
する必要があるかもしれません.
• SCN5ME SUBM を使用すれば Metal4 は 6λ から 3λ になるので最小間隔エラーにはなりません.又,Metal5 の最
小間隔も 4λ なので,エラーにはなりません.
• Ver.5 はオーバーセルルーティングを採用しているので Ver.4 に比べて回路面積が約半分になりますが,マニュア
ルが充実していないので分かりづらいです.
• Ver.4 は電源及び入出力が Abutment Box まで配線されるので問題無いのですが,Ver.5 で Nero を使用した際には
入出力コネクタがコアに埋もれたままのようです.外部ピンとの配線用ツール RING を使用すればうまく行くかも
しれません.RING については($ man ring)を参照して下さい.又,RING 時に使用する.rin ファイルは Ver.4
のチュートリアルに例題があるので参考にして下さい.
• MOSIS ルールのメタルの最小間隔の問題で,片側が 10 ラムダ以上の場合,間隔を広げなければならない,とあり
ますが,今回は考慮されていません.よって,エラーになる可能性があります.
• 現時点でのお勧めは SCN5M SUBM を Ver.5 で使用することです.この場合も Metal5 は外部ピンとの配線に使用
するために自動配線は Metal4 までが良いかもしれません.
• 現在はレイアウトの検証及び,Spice 等を使用した過渡解析を行っていません.
• DRUC のデザインルールも作成した方が良いかもしれません.その前にテクノロジーファイルの文法を解析する
必要があります.
11.5
Druc の文法について
Druc で表示するデザインルールは.rds ファイルに
11.6. SCN4ME SUBM において Metal4 が最小間隔エラーになる問題について
169
DRC_RULES
regles
fin regles
DRC_COMMENT
END_DRC_COMMENT
END_DRC_RULES
という宣言を使用します.まず,DRC RULES と END DRC RULES を囲みます.その内部に regles と fin regles,DRC COMMENT
と END DRC COMMENT を囲みます.regles と fin regles の内部には,デザインルールを,DRC COMMENT と
END DRC COMMENT の内部にはデザインルールに対応させたエラー時のコメントを記述します.詳しくは cmos.rds
を参考にして下さい.尚,デザインルールの宣言にはフランス語が使用されています.解読するには,Altavista の翻訳
ページが役に立ちます.
http://babelfish.altavista.com/
時間の都合上今回は Druc 用のテクノロジーファイルを作成していないので,各自作成してみて下さい.完成すれば,実
際に回路を設計した際のデザインルールチェックは Magic を使用せずに済みます.
11.6
SCN4ME SUBM において Metal4 が最小間隔エラーになる問題について
84 ページより,Graal 上では Ref が 5λ 間隔になることは解説しました.これは,Dreal 上では 10λ 間隔になること
を意味しています.Ver.5 では各 Ref 上に配線をしますが,このときに SCN4ME SUBM ではメタル 4 は図 11.14 のよ
うになります.メタル 4 の最小幅,最小間隔は共に 6λ なので,図 11.15 のように,最小間隔エラーになります.よっ
て,SCN4ME SUBM 用では自動配線は 3 層までとし,4 層目は手動で電源電圧,外部ピンとの接続に使用すれば良いで
しょう.
図 11.14: 横配線がメタル 4,縦配線がメタル 3
SCN5M SUBM を使用する場合にはメタル 1∼5 まで全て幅が 4λ なので,図 11.16,図 11.17 のように,エラー無く
使用することが可能です.
170
第 11 章
6
3
4
Ref
Metal4
10
3
6
Metal4
図 11.15: このように,最小間隔が足りません.
図 11.16: SCN5M SUBM の場合です.
修正結果
11.6. SCN4ME SUBM において Metal4 が最小間隔エラーになる問題について
4
2
6
Ref
Metal4
10
2
4
Metal4
図 11.17: このように,配線時のエラーはありません.
171
172
第 11 章
11.7
修正結果
テクノロジーファイルの作成手順まとめ
ここではこれまでの流れを簡単に纏めました.尚,Alliance と Magic は既にインストールされているものとします.
1. MOSIS の HP で使用するデザインルール(オプション)を選択する.
2. 選択したデザインルールに対応した Magic のテクノロジーファイルをダウンロードする.
3. MOSIS ルールを確認しながら Magic で各レイヤの最小幅の cif ファイルを出力する.
4. 出力した cif ファイルを再び Magic で開き,MOSIS ルールと照合する.
5. 適用すべき最小幅がわかったら,Alliance のテクノロジーファイル(.rds)ファイルに記述する.
6. 最小幅を設定したら sxlib を Graal,Dreal,Magic で表示させながらエラーが出ている箇所を確認し,修正する.
7. 不明瞭なレイヤ,パラメータもチェックする.
8. テクノロジーファイルが完成したら実際に VHDL ソースファイルからコンパイルを行い,最後まで合成してエラー
が無いか確認する.又,過渡解析などを行い,実際に動作するか確認する.
11.7.1
MOSIS の HP で使用するデザインルール(オプション)を選択する.
まずは目的のデザインルールを選択しなければなりません.SXLIB は Sub-Micron プロセス用に設計されていること
に注意して下さい.MOSIS のデザインルールの HP
http://www.mosis.org/Technical/Designrules/scmos/scmos-main.html
の 2.2. SCMOS Options の Table 2b: MOSIS SCMOS SUBM-Compatible Mappings から目的のベンダ及びルールを
選びます.今回は “SCN4ME SUBM” を使用しました.
11.7.2
選択したデザインルールに対応した Magic のテクノロジーファイルをダウンロードする.
いきなり MOSIS のデザインルールをチェックしながらテクノロジーファイルを記述するのは大変です.まずは,Magic
を使用して採用したデザインルールが記述されたテクノロジーファイルを設定します.
DL したファイルを Magic で使用するには,Magic を起動するときに “-T” オプションを使用します.ここでは,
$ magic -T filename.tech27
となります.起動ごとに毎回設定しなければならないので,alias などに記述しておくと良いでしょう.
11.7.3
MOSIS ルールを確認しながら Magic で各レイヤの最小幅の cif ファイルを出力する.
上記のコマンドで Magic を起動し,それぞれのレイヤについて最小幅で描画し,CIF 形式で出力します.出力した CIF
ファイルをエディタで開き,実際に使用されている CIF レイヤ名を確認します.CIF の略称は一つのレイヤで 2 種類あ
る場合もあります(例えば,Metal1 の場合 CM1 と CMF).それぞれについて Magic で出力した CIF ファイルでどち
らが使われているか確認します.ここでは CM1 が使用されています.
11.7.4
出力した cif ファイルを再び Magic で開き,MOSIS ルールと照合する.
ここで作成された CIF ファイルを再び Magic で読み込ませることで,Diffsion など擬似レイヤであったものが,マス
クレイヤとして出力します.各レイヤの最小オーバラップなど,MOSIS のデザインルールのページと照らし合わせてエ
ラー部分が無いか確認します.Via,コンタクトなどは擬似レイヤのままなのでエディタで開いた CIF ファイルと直接比
較して確認します.画面には表示されませんが,Implant が存在しています.又,Contact,Via は 2 × 2λ です.
11.7. テクノロジーファイルの作成手順まとめ
173
11.7.3,11.7.4 を繰り返し,全てのレイヤについて最小幅エラーが出ないサイズを確認します.特に Diffusion,Diff Cont,
Well Cont,Transistor は Implant,Well が生成されるので注意して下さい.
11.7.5
適用すべき最小幅がわかったら,Alliance のテクノロジーファイル(.rds)ファイルに記
述する.
これまでで Magic を使用して各レイヤの最小幅を確認しました.ここで第 9 章を参考に各レイヤの最小幅ルールをテ
クノロジーファイルに記述していきます.Graal を使用して疑似レイヤが Magic で作成したレイアウトと同様の形を再
現できるようにします.s2r で変換すれば cif ファイルが作成されますが,基本的に Graal と Dreal は同様のレイアウト
を表示することができるので,Graal でも確認することが可能です.
最小幅でのテクノロジーファイルが完成したら Graal で最小幅のレイヤを作成し,s2r で変換したファイルが Magic で
出力した CIF ファイルと同じであるか確認すると共に,Magic で読み込ませた時に正確に表示されるか確認します.
11.7.6
最小幅を設定したら sxlib を Graal,Dreal,Magic で表示させながらエラーが出ている
箇所を確認し,修正する.
ここまでで単体ではエラーは発生しなくなったと思います.そこで,ここからは実際のセルライブラリを元にエラー
を確認していきます.まず,sxlib は仮想配置(.ap)なので,s2r を使用して cif ファイルに変換します.そのファイルを
Magic に読み込ませると最小幅エラーは無いものの,最小間隔エラーが発生しているかもしれません.その場合は第 10
章を参考に,間隔を調整してエラーを修正していきます.実際はエラーではなく Magic の仕様の場合もあるかもしれな
いので,注意が必要です.
テクノロジーファイルに DRUC 用のデザインルールを記述して,Graal 上でチェックする方が良いかもしれません.
11.7.7
不明瞭なレイヤ,パラメータもチェックし,調整を行う
($ man prol),alliance の etc ディレクトリに入っている cmos .graal 等に記述されている ap ファイルのレイヤにつ
いてセルライブラリを grep 検索して実際に使用されているか確認します.Ver. の違いなどにより,使用されていないこ
とがあるので,その場合は問題ありません.
CALU,TURNVIA,BIGBIA 等いくつかのレイヤについては使用はされているものの,詳しい解説が無い場合があ
るので,ap ファイルを解析するか,AllianceHP のメーリングリストなどで確認する必要があるでしょう.
11.7.8
テクノロジーファイルが完成したら実際に VHDL ソースファイルからコンパイルを行い,
最後まで合成してエラーが無いか確認する.又,過渡解析などを行い,実際に動作するか
確認する.
まずは小さい回路を合成して Druc,Magic 等でエラーが無いか確認します.その後大きい回路を合成します.前節で
まだ不明瞭な点を挙げたので,使用時には注意して下さい.
175
第 12 章 参考文献
LSI 一般
[1] 鈴木八十二, 「超 LSI 工学入門」(日刊工業新聞社 2000)
[2] C. Mead and L. Conway, Introduction to VLSI Systems, Addison-Wesley, 1980
cif フォーマットについて
CIF は,公式 HP のようなものは無いようなので,紹介してあるページを以下に掲載します.
[3] Computer Aids for VLSI Design Steven M. Rubin Copyright c 1994 Appendix B: Caltech Intermediate Format
(詳しく載っています.このドキュメントに載っていない宣言があれば,この HP を参照してください.
)
http://www.rulabinsky.com/cavd/text/chapb.html
[4] (CIF) CALTECH Intermediate Form for LSI Layout Description Author: The Multimedia Lab
(この HP も参考になりました.
)
http://www.ee.vt.edu/~ee5545jg/ee5545e/
Magic について
[5] 公式 HP
http://vlsi.cornell.edu/magic/
[6] IC Layout Using Magic(HP の最後では Tutorial の PDF を配布しています)
http://www.ece.iit.edu/~jstine/ece429/handouts/magic_tut.html
[7] The Magic Home Page(こちらも,Magic の Tutorial を配布しています(一部 html))
http://infopad.eecs.berkeley.edu/~icdesign/magic/
[8][Rupppau’s HandBook]Magic マニュアル日本語版 (翻訳)
http://isweb7.infoseek.co.jp/computer/rupppau/
[9] ユーザーサイト[清水研究室]LSI レイアウトエディタ Magic チュートリアル抄訳
http://shimizu-lab.et.u-tokai.ac.jp/cad.html
[10] Magic, CIF, and GDS Files,Magic Tech Files, MOSIS Tech Codes, (and things that go bump in the night)
(Magic での CIF の利用方法について載っています.
)
http://www-personal.ksu.edu/~wkuhn/eece696/fileform.pdf
176
第 12 章
MOSIS について
[11] MOSIS 公式 HP
http://www.mosis.org/
[12] MOSIS Scalable CMOS (SCMOS) Design Rules (Revision 8.0)
http://www.mosis.org/Technical/Designrules/scmos/scmos-main.html
Alliance について
[13] 公式 HP
http://www-asim.lip6.fr/alliance/
参考文献
177
第 13 章 謝辞
本研究を完成させるにあたり,ご指導頂いた東海大学工学部通信工学科助教授の清水尚彦先生に感謝致します.又,本
研究を支えて頂いた清水研究室の友人に感謝致します.