カリフォルニア工科大学中等教育課程

カリフォルニア工科大学中等教育フォーム(at)
ファイル名拡張子
.cif
フォーマットの種類EDAファイル形式

Caltech Intermediate Form ( CIF ) は、集積回路を記述するためのファイル形式です。CIF は、チップの異なる層における二次元形状の記述に役立つ、限定されたグラフィックプリミティブセットを提供します。この形式では階層的な記述が可能で、表現が簡潔になります。さらに、簡潔でありながら人間が読みやすいテキスト形式です。

CIFは1976年にIvan SutherlandとRon Ayresによって作成され、 Carlo H. Séquin 、Douglas Fairbairn、Stephen Trimbergerによって改良されました。仕様書は後にRobert SproullRichard Lyonによって更新され、Stephen Trimbergerによって改訂されました。[1]

概要

CIF の各ステートメントは、キーワードまたは文字、それに続くパラメータ、そしてセミコロンで構成されます。パラメータはスペースで区切る必要がありますが、1 行あたりのステートメント数や、各フィールドの特定の列数に制限はありません。コメントは括弧で囲むことで任意の場所に挿入できます。

CIF文はごくわずかで、ジオメトリ文と制御文の2つのカテゴリに分類されます。ジオメトリ文は、LAYERマスクレイヤーの切り替え、BOX四角形の描画、WIREパスの描画、ROUNDFLASH円の描画、POLYGON任意の図形の描画、およびCALL他のジオメトリ文のサブルーチンの描画を行います。制御文は、DSサブルーチンの定義の開始、サブルーチンDFの定義の終了、サブルーチンDDの定義の削除、ユーザー指定の追加情報の挿入、および0CIFファイルの終了を行います。これらのキーワードは通常、1文字または2文字の一意の文字に省略されます。9END

幾何学

ステートメントLAYER(または文字L)は、次のステートメントまで、後続のすべてのジオメトリで使用されるマスクレイヤーを設定します。LAYERキーワードの後に​​、レイヤー名パラメータを1つ指定します。例えば、以下のコマンドは、

 LCC;

レイヤーをCMOSコンタクトカットに設定します(一般的なMOSレイヤー名については図B.1を参照してください)。

NMnMOSメタル
NPnMOSポリシリコン
NDnMOS拡散
NCnMOSコンタクト
NInMOSインプラント
NBnMOS埋め込み
NGnMOSオーバーグラス
CMFCMOSメタル1
CMSCMOSメタル2
CPGCMOSポリシリコン
CAACMOSアクティブ
CSGCMOS選択
CWGCMOSウェル
CCCMOSコンタクト
CVACMOS経由
COGCMOSオーバーグラス
図B.1 MOSプロセスのCIFレイヤー名。

ステートメントBOX(または文字B)は、幾何学的形状を指定する際に最もよく使われる方法です。長方形の長さ、幅、中心位置、そしてオプションで回転角を指定して長方形を記述します。形式は以下のとおりです。

 B 長さ 幅 xpos ypos [回転] ;

回転フィールドがない場合、4 つの数値は、中心が ( xpos , ypos ) にあり、 x 方向の長さが x、 y 方向の高が であるボックスを指定します。 CIF 内のすべての数値は、サブルーチン スケーリングが指定されていない限り (後述)、距離のセンチミクロンを参照する整数です。 オプションの回転フィールドには、原点から始まるベクトルの終点を定義する 2 つの数値が含まれます。このフィールドの既定値は (1, 0) で、右向きのベクトルです。したがって、回転句は10 5法線から反時計回りに 26.6 度の回転を定義します。同様に、10 -10は時計回りに 45 度回転します。この回転ベクトルの大きさは意味がないことに注意してください。

図B.2 CIF「wire」ステートメントの例。ステートメントは以下のとおりです。W25 100 200 100 100 200 200 300 200;

ステートメントWIRE(または文字W)は、複数の点を結ぶパスを構築するために使用します。パスの幅は0以外で、角は丸くすることができます。WIREキーワードの後に​​は幅の値が続き、その後に任意の数の座標ペアが続きます。これらの座標ペアは端点を表します。図B.2はサンプルのワイヤを示しています。端点と角の丸めは暗黙的に処理されることに注意してください。

ROUNDFLASH(または文字R)は、直径と中心座標を指定して塗りつぶされた円を描きます。例えば、次の文は

 R 20 30 40;

半径10(直径20)、中心が(30, 40)の円を描きます。

図B.3 CIF「ポリゴン」ステートメントの例。ステートメントは以下のとおりです。P 150 100 200 200 200 300 100 300 100 200;

POLYGON(または文字P)は、一連の座標ペアを受け取り、それらから塗りつぶされた多角形を描画します。塗りつぶされた多角形は閉じている必要があるため、最初の座標点と最後の座標点は暗黙的に接続されており、同じである必要はありません。多角形は、凹面や自己交差など、任意の複雑な形状にすることができます。図B.3は、polygon 文を示しています。

階層

CALL(または文字)は、および でCパッケージ化された他の文の集合を呼び出します。すべてのサブルーチンは定義時に番号が付与され、これらの番号は で識別に使用されます。例えば、文 と文 がサブルーチン4にパッケージ化されている場合、次の文は次のようになります 。DSDFCALLLAYERBOX

 C4;

そのレイヤーにボックスが描画されます。

サブルーチンを単に呼び出すだけでなく、CALLステートメントにはサブルーチン内のジオメトリに影響を与える変換を含めることができます。 CIF では、サブルーチンに、平行移動、回転、ミラーリングの 3 つの変換を適用できます。平行移動は、文字のT後に x、y オフセットを続けることで指定します。これらのオフセットはサブルーチン内のすべての座標に追加され、マスク全体でグラフィックスを平行移動します。回転は、文字のR後に x、y ベクトルのエンドポイントを続けることで指定します。これは、BOXステートメントの回転句と同様に、原点への線を定義します。回転されていない線はエンドポイント (1、0) を持ち、これは右を指します。ミラーリングには、MXx 方向のミラーリングとy 方向のミラーリングの 2 つの形式があります。ミラーリングは、x 座標の負の値になり、実質的に y 軸を中心にミラーリングされるMYため、少し紛らわしいです。MX

図 B.4 CIF「呼び出し」の変換: (a) サブルーチン 10: BOX 100 200 50 50; WIRE 10 50 50 100 150; (b) 呼び出し: C 10 T -50 0 MX MY; (c) 呼び出し: C 10 R 0 -1 MX; (d) 呼び出し: C 10 MX R 0 -1;

オブジェクトには任意の数の変換を適用でき、それらの順序が適用順序となります。図B.4は、変換の順序付けの重要性を示すいくつかの例を示しています(図B.4cとB.4dでは、変換の順序を変えることで異なる結果が得られることにご注意ください)。

ステートメント内で使用するサブルーチンの定義はCALL非常に簡単です。パッケージ化するステートメントは、DS(定義開始)DFステートメントと (定義終了) ステートメントで囲みます。DSステートメントの引数は、サブルーチン番号とサブルーチンのスケーリング係数です。ステートメント自体には引数はありませんDF。サブルーチンのスケーリング係数は、分子とそれに続く分母で構成され、この分母はサブルーチン内のすべての値に適用されます。このスケーリングにより、大きな数値を少ない桁数で表現できるようになり、設計の再スケーリングも容易になります。スケーリング係数は定義に適用されるため、サブルーチンの呼び出しごとに変更することはできません。例として、図 B.4 のサブルーチンは次のように正式に記述できます。

 DS 10 20 2; B10 20 5 5; W1 5 5 10 15; DF;

スケール係数は 20/2 であり、これによりサブルーチン内のすべての値から末尾のゼロを削除できることに注意してください。

CIFサブルーチンでは任意の階層構造が許可されます。サブルーチンが使用される前に定義されている限り、前方参照が許可されます。したがって、以下のシーケンスは

 DS 10; ... C 11; DF; DS 11; ... DF; C 10;

は合法ですが、シーケンス:

 C 11; DS 11; ... DF;

違います。これは、最初の例でサブルーチン11が定義されるまで、サブルーチン11の実際の呼び出しは行われないからです。

コントロール

CIFサブルーチンは、削除してから再定義することで上書きできます。DD(delete definition) という文は、1つのパラメータを取り、この値以上の番号を持つすべてのサブルーチンを削除します。この文は、複数のCIFファイルをマージする際に便利です。名前の競合を起こさずに設計を定義、呼び出し、削除できるためです。ただし、CADシステムでの一般的な使用には推奨されません。

0CIFの拡張は、から までの数値ステートメントによって行うことができます9。これらは正式にはCIFの一部ではありませんが、これらの拡張の使用に関する特定の規則が確立されています(図B.5を参照)。

0xyレイヤーN;指定されたレイヤーと位置に名前付きノードを設定します
0Vx1 y1 x2 y2 ... xn yn;ベクトルを描く
2A「メッセージ」Txy;指定された場所の上にメッセージを配置する
2B「メッセージ」Txy;指定された場所の下にメッセージを配置します
2C「メッセージ」Txy;指定した場所の中央にメッセージを配置する
2L「メッセージ」Txy;指定された場所の左側にメッセージを配置します
2R「メッセージ」Txy;指定した場所の右側にメッセージを配置します
4Aロー、ローイ、ハイ、ハイイ;セル境界を宣言する
4Bインスタンス名;セルにインスタンス名を添付する
4N信号名 xy;信号にラベルを付ける
9セル名;セル名を宣言する
91インスタンス名;セルにインスタンス名を添付する
94ラベル xy;指定された場所にラベルを配置する
95ラベルの長さ 幅 xy;指定された領域にラベルを配置する
図B.5 CIFへの一般的なユーザー拡張。

CIFファイルの最後の文はEND文(または文字E)です。パラメータは取らず、通常はセミコロンも含まれません。

BNF文法

以下は、cifFile が最上位の文法ノードである CIF 形式の文法です。

cifFile  ::= (blank* command? semi)* endCommand blank* command  ::= primCommand | defDeleteCommand | defStartCommand semi (blank* primCommand? semi)* defFinishCommand primCommand  ::= polygonCommand | boxCommand | roundFlashCommand | wireCommand | layerCommand | callCommand | userExtensionCommand | commentCommand polygonCommand  ::= "P" path boxCommand  ::= "B" integer sep integer sep point (sep point)? roundFlashCommand  ::= "R" integer sep point wireCommand  ::= "W" integer sep path layerCommand  ::= "L" blank* shortname defStartCommand  ::= "D" blank* "S" integer (sep integer sep integer)? defFinishCommand  ::= "D" 空白* "F" defDeleteCommand  ::= "D" 空白* "D" 整数callCommand  ::= "C" 整数 変換userExtensionCommand  ::= 数字 userText commentCommand  ::= "(" commentText ")" endCommand  ::= "E"変換 ::= (空白* ("T" 点 |"M" 空白* "X" |"M" 空白* "Y" |"R" 点)*)*パス ::= 点 (区切り 点)* ::= sInteger 区切り sInteger sInteger  ::= 区切り* "-"? 整数D 整数::  = 区切り* 整数D 整数D ::=数字 +短縮名 ::= cc? c? c? c  ::= 数字 | 上部文字userText  ::= userChar*コメントテキスト ::= コメントChar* | commentText "(" commentText ")" commentText semi  ::= blank* ";" blank* sep  ::= upperChar | blank digit  ::= "0" | "1" | ... | "9" upperChar  ::= "A" | "B" | ... | "Z" blank  ::= digit、upperChar、"-"、"("、")"、";" 以外の任意のASCII文字userChar  ::= ";" 以外の任意の ASCII 文字commentChar  ::= "(" または ")" 以外の任意の ASCII 文字

参照

参考文献

  1. ^ Sproull, Robert; Lyon, Richard; Trimberger, Stephen (2025-02-11). Caltech Intermediate Form for LSI Layout Description (Technical report). California Institute of Technology. TR 2686. 2025年9月17日閲覧
  • VLSI設計のためのコンピュータ支援 - 付録B:Caltech中間フォーマット(Steven M. Rubin著)
  • CIF入門
  • Hon, Robert W. および Sequin, Carlo H.、「LSI 実装ガイド」、第 2 版、Xerox Palo Alto Research Center 技術メモ SSL-79-7、1980 年 1 月。
「https://en.wikipedia.org/w/index.php?title=Caltech_Intermediate_Form&oldid=1318785836」から取得