IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ シルヴァコ,インコーポレイテッドの特許一覧

特表2024-500315充足可能性モジュロ理論ソルバーを使用するスタンダードセルの自動生成のためのシステム及び方法
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2024-01-09
(54)【発明の名称】充足可能性モジュロ理論ソルバーを使用するスタンダードセルの自動生成のためのシステム及び方法
(51)【国際特許分類】
   G06F 30/39 20200101AFI20231226BHJP
   G06F 30/398 20200101ALI20231226BHJP
   H01L 21/82 20060101ALI20231226BHJP
   G06F 111/04 20200101ALN20231226BHJP
【FI】
G06F30/39
G06F30/398
H01L21/82 C
G06F111:04
【審査請求】未請求
【予備審査請求】未請求
(21)【出願番号】P 2023534121
(86)(22)【出願日】2021-12-15
(85)【翻訳文提出日】2023-07-20
(86)【国際出願番号】 US2021063568
(87)【国際公開番号】W WO2022132937
(87)【国際公開日】2022-06-23
(31)【優先権主張番号】63/126,260
(32)【優先日】2020-12-16
(33)【優先権主張国・地域又は機関】US
(81)【指定国・地域】
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
1.VERILOG
(71)【出願人】
【識別番号】523096001
【氏名又は名称】シルヴァコ,インコーポレイテッド
(74)【代理人】
【識別番号】100079108
【弁理士】
【氏名又は名称】稲葉 良幸
(74)【代理人】
【識別番号】100109346
【弁理士】
【氏名又は名称】大貫 敏史
(74)【代理人】
【識別番号】100117189
【弁理士】
【氏名又は名称】江口 昭彦
(74)【代理人】
【識別番号】100134120
【弁理士】
【氏名又は名称】内藤 和彦
(72)【発明者】
【氏名】マルティネロ,オスバルド
(72)【発明者】
【氏名】シュレンカー,ギリェルメ
(72)【発明者】
【氏名】バックス,マルコス
【テーマコード(参考)】
5B146
5F064
【Fターム(参考)】
5B146AA22
5B146GC12
5B146GC15
5B146GL11
5F064AA04
5F064BB03
5F064BB05
5F064BB07
5F064CC12
5F064DD02
5F064DD03
5F064DD05
5F064DD09
5F064DD12
5F064DD34
5F064EE02
5F064EE03
5F064EE04
5F064EE05
5F064EE13
5F064EE27
5F064EE36
5F064EE52
5F064HH02
5F064HH06
5F064HH07
5F064HH08
5F064HH12
(57)【要約】
集積回路(IC)内のセル内デバイスの配置及び配線のための電子的設計自動化ツール及びそれを操作する方法が提供される。一般的に、本方法は、入力を受信すること;セル内トランジスタの配置とセル内トランジスタへの相互接続の配線とに関係する一組の充足可能性モジュロ理論(SMT)制約へ入力を変換することにより配置及び配線のSMT問題のインスタンスを生成すること;SMTソルバーを呼び出し、一組のSMT制約を使用し、そしてSMT問題に対する解を生成すること;及び解が入力の要件及びユーザにより規定された所定面積要件を満足すれば、IC内のセル内トランジスタの配置及び配線のためのレイアウトを生成し出力することを含む。本プロセスは所定数のランク付けされた解又は最適解が発見されるまで繰り返され得る。他の実施形態も開示される。
【特許請求の範囲】
【請求項1】
集積回路(IC)内のセル内トランジスタの配置及び配線のための方法であって、
ネットリスト、テンプレート定義及びテクノロジー設計規則を含む入力を受信すること;
所定数のセル内トランジスタの配置と前記所定数のセル内トランジスタへの相互接続の配線とに関係する一組の充足可能性モジュロ理論(SMT)制約へ前記入力を変換することにより配置及び配線のSMT問題の第1のインスタンスを生成すること;
SMTソルバーを呼び出し、前記一組のSMT制約を使用し、前記SMT問題に対する第1の解を生成すること;並びに
前記第1の解が前記入力の要件及びユーザにより規定された所定面積要件を満足すれば、前記IC内のセル内トランジスタの配置及び配線のための第1のレイアウトを生成し出力すること
を含む方法。
【請求項2】
前記第1の解が前記入力の要件及び前記所定面積要件を満足しなければ、前記方法は終了し、前記ユーザに通知される、請求項1に記載の方法。
【請求項3】
前記第1の解が前記入力の要件及び前記所定面積要件を満足すれば、前記方法は終了し、前記SMTソルバーは、前記入力の前記要件及び前記所定面積要件を満足する別のより最適な解を発見する試みにおいて再び呼び出されない、請求項1に記載の方法。
【請求項4】
所定数のレイアウトが生成されていなければ、
前記SMT問題の別のインスタンスを生成すること;
前記SMTソルバーを呼び出し、別の解を生成し、前記解が前記入力の要件及び前記所定面積要件を満足すれば、前記IC内のセル内トランジスタの配置及び配線のための別のレイアウトを生成し出力すること;並びに
前記SMT問題のインスタンスの前記生成を繰り返し、別の解を生成し、前記所定数のレイアウトが生成されるまで前記IC内のセル内トランジスタの配置及び配線のための別のレイアウトを生成し出力すること
をさらに含む、請求項1に記載の方法。
【請求項5】
生成され出力された前記レイアウトから、必要とされる面積に基づき又は前記ネットリスト又は前記テクノロジー設計規則に基づき最適解を判断すること、及び前記最適解に関係する前記レイアウトを前記ユーザのために識別することをさらに含む、請求項4に記載の方法。
【請求項6】
生成され出力された前記レイアウトを、前記レイアウトに必要とされるマスクの数、前記レイアウトに必要とされる面積、及び/又は前記ICの性能のうちの1つ又は複数を含む所定メトリックに基づきランク付けすること、及びランク付けされた解のリストを出力することをさらに含む、請求項4に記載の方法。
【請求項7】
配置及び配線のための前記SMT問題の前記第1のインスタンスを生成するに先立って:
前記所定数のセル内トランジスタのSMT配置問題を生成すること;
前記第1のSMTソルバーを呼び出すこと;
前記SMT配置問題に対する解を生成すること;並びに
前記SMT配置問題に対する前記解が前記入力の前記要件を満足すれば、前記所定数のセル内トランジスタの制限された配置を有する配置及び配線の前記SMT問題の前記第1のインスタンスを生成すること
をさらに含む、請求項1に記載の方法。
【請求項8】
集積回路(IC)内のセル内トランジスタの配置及び配線のための方法であって、
前記ICにおける使用のために利用可能な部品のネットリスト、ユーザにより規定された前記ICの前記部品のテンプレート定義及び所定面積要件、及び前記部品の設計要件を規定するテクノロジー設計規則を含む入力を受信すること;
前記入力を前記IC内の所定数のセル内トランジスタの配置に関係する第1組のSMT制約へ変換することにより充足可能性モジュロ理論(SMT)配置問題の第1のインスタンスを生成すること;
第1のSMTソルバーを呼び出し前記SMT配置問題に対する第1の解を生成すること;
前記SMT配置問題に対する前記第1の解が前記入力の要件を満足すれば、前記SMT配置問題に対する前記第1の解を使用することによりSMT配置及び配線問題の第1のインスタンスを生成すること;
第2のSMTソルバーを呼び出し、前記SMT配置及び配線問題に対する第1の解を生成すること;並びに
前記SMT配置及び配線問題に対する前記第1の解が前記入力の要件を満足すれば、前記IC内のセル内トランジスタの配置及び配線のための第1のレイアウトを生成し出力すること
を含む方法。
【請求項9】
前記SMT配置問題に対する前記第1の解が前記入力の要件を満足しなければ、前記方法は終了し、前記ユーザに通知される、請求項8に記載の方法。
【請求項10】
所定数のレイアウトが生成されたかどうかを判断し、否であれば:
前記SMT配置問題の第2のインスタンスを生成すること;
前記第1のSMTソルバーを呼び出し前記SMT配置問題に対する第2の解を生成すること;
前記SMT配置問題に対する前記第2の解が前記入力の前記要件を満足すれば、前記SMT配置問題に対する前記第2の解を使用することにより前記SMT配置及び配線問題の第2のインスタンスを生成すること;
前記第2のSMTソルバーを呼び出し前記SMT配線問題に対する第2の解を生成すること;
前記SMT配置及び配線問題に対する前記第2の解が前記入力の要件を満足すれば、前記IC内のセル内トランジスタの配置及び配線のための第2のレイアウトを生成し出力すること;並びに
前記工程を前記所定数のレイアウトが生成されるまで繰り返すこと
をさらに含む、請求項8に記載の方法。
【請求項11】
生成され出力された前記レイアウトから、必要とされる面積に基づき又は前記ネットリスト又は前記テクノロジー設計規則に基づき最適解を判断すること、及び前記最適解に関係する前記レイアウトを前記ユーザのために識別することをさらに含む、請求項10に記載の方法。
【請求項12】
生成され出力された前記レイアウトを、前記レイアウトに必要とされるマスクの数、前記レイアウトに必要とされる面積、及び/又は前記ICの性能のうちの1つ又は複数を含む所定メトリックに基づきランク付けすること、及びランク付けされた解のリストを出力することをさらに含む、請求項10に記載の方法。
【請求項13】
前記第1のSMTソルバー及び前記第2のSMTソルバーは同じSMTソルバーである、請求項8に記載の方法。
【請求項14】
集積回路(IC)内のセル内トランジスタの配置及び配線のためのプログラム命令を有する非一時的コンピュータ可読媒体であって、
ネットリスト、テンプレート定義及びテクノロジー設計規則を含む入力を受信するためのプログラム命令;
所定数のセル内トランジスタの配置と所定数のセル内トランジスタへの相互接続の配線とに関係する一組の充足可能性モジュロ理論(SMT)制約へ前記入力を変換することにより配置及び配線のSMT問題の第1のインスタンスを生成するためのプログラム命令;
SMTソルバーを呼び出し、前記一組のSMT制約を使用し、前記SMT問題に対する第1の解を生成するためのプログラム命令;並びに
前記第1の解が前記入力の要件及びユーザにより規定された所定面積要件を満足すれば、前記IC内のセル内トランジスタの配置及び配線のための第1のレイアウトを生成し出力するためのプログラム命令
を含む非一時的コンピュータ可読媒体。
【請求項15】
前記第1の解が前記入力の要件及び前記所定面積要件を満足しなければ、前記ユーザに通知しさらなるプログラム命令の実行を停止するためのプログラム命令をさらに含む、請求項14に記載のコンピュータ可読媒体。
【請求項16】
前記第1の解が前記入力の要件及び前記所定面積要件を満足すれば、さらなるプログラム命令の実行を停止し、前記入力の前記要件及び前記所定面積要件を満足する別のより最適な解を発見することを試みないプログラム命令をさらに含む、請求項14に記載のコンピュータ可読媒体。
【請求項17】
所定数のレイアウトが生成されたかどうかを判断し、否であれば:前記SMT問題の別のインスタンスを生成し;
前記SMTソルバーを呼び出し、別の解を生成し、前記解が前記入力の前記要件及び前記所定面積要件を満足すれば、前記IC内のセル内トランジスタの配置及び配線のための別のレイアウトを生成し出力し;
前記SMT問題のインスタンスの前記生成を繰り返し、別の解を生成し、前記所定数のレイアウトが生成されるまで、前記IC内のセル内トランジスタの配置及び配線のための別のレイアウトを生成し出力する、
プログラム命令をさらに含む、請求項14に記載のコンピュータ可読媒体。
【請求項18】
生成され出力された前記レイアウトから、必要とされる面積に基づき又は前記ネットリスト又は前記テクノロジー設計規則に基づき最適解を判断し、前記最適解に関係する前記レイアウトを前記ユーザのために識別するプログラム命令をさらに含む、請求項17に記載のコンピュータ可読媒体。
【請求項19】
生成され出力された前記レイアウトを、前記レイアウトに必要とされるマスクの数、前記レイアウトに必要とされる面積、及び/又は前記ICの性能のうちの1つ又は複数を含む所定メトリックに基づきランク付けし、ランク付けされた解のリストを出力するプログラム命令をさらに含む、請求項17に記載のコンピュータ可読媒体。
【発明の詳細な説明】
【技術分野】
【0001】
関連出願の相互参照
本国際出願は、参照のためその全体を本明細書に援用する2020年12月16日申請の米国暫定特許出願第63/126,260号からの優先権の便益を主張する。
【0002】
技術分野
本開示は、一般的には集積回路設計に関し、具体的には、多層トランジスタを含む複雑な回路内の素子の設計、レイアウト、及び配線のための電子的設計自動化(EDA:electronic design automation)ツールに関する。
【背景技術】
【0003】
背景
最新世代の集積回路(IC)は通常、何億又は何十億もの回路素子又は部品を含んでおり、したがって電子的コンピュータ支援設計(ECAD:electronic computer-aided design)とも呼ばれる電子的設計自動化(EDA)ツールを製作に先立つそれらの設計及び検証に不可欠なものにしている。スタンダードセルライブラリ設計プロセス中、設計者は、部品のリスト(ネットリスト)と共に回路内の1つ又は複数のセルの初期レイアウト方式又はテンプレートをEDAツールに入れ、そしてレイアウトのための一組の設計要件(テクノロジー設計規則)を識別する。EDAツールは、設計が、その意図された機能を行い、そしてICのサブ回路(又はセル)内の部品の多くの可能なレイアウト又はセル内配置を生成するだけでなくセル内の部品間の電気的接続又は配線も生成するということを保証するために多くの機能試験又はシミュレーションを行う。次に、設計者は、セル内配置の可能なレイアウトのリスト及びセル内配線を精査し、そして設計基準を最も良く満足する設計を選択し得る。
【0004】
図1Aは、半導体基板又はウェハ上に作製又は印刷される単一セル104(図1A、1Bに示される)を定義するためのテンプレート102を示すブロック線図である。通常、各セル104は、それぞれが多くの異なるパターン化された半導体層、絶縁層及び導電層から形成された1つ又は複数の電子的集積回路(IC)デバイス(トランジスタ、コンデンサ又は抵抗器など)を含む。テンプレートは様々な層のいくつかの形状を定義し;最も顕著には、セルへの電力レールはVDD106すなわち正電源ピンを表す最上部形状とVSS108、GND又は負電源ピンを表す最下部形状とにより定義される。セル104を囲む矩形は、セル領域を定義し、そして高さ110及びピッチ又は幅112を有する。矩形の外に在るものは何でも隣接セルにより重畳され得る。図1B、1Cに示すように、一般的に、各セル104は、図1Aに示すテンプレートと同じ高さであるが異なる幅112を有し得るシングルハイト(single height)セルである。図1Bに示すセル104が2ピッチを使用する一方で、図1Cに示すセルは7ピッチを使用する、図1Dを参照すると、テンプレート定義は、合成後、セル104同士が、行114内に並んで当接され、そして設計を構成するために1つ又は複数の相互接続層を介し電気的に結合されることを可能にする。この設計はウェハ上にその後「印刷される」設計である。
【0005】
既存EDAツール及び方法はシングルハイトセルだけを含む回路を設計するためには十分にうまく働いてきたが、マルチハイト(multi-height)セル(複数行(multi-row)セルとしても知られる)の使用を含む又は必要とするIC設計における最新開発には問題があるということが分かった。図1Eは、図1Aのテンプレート高の複数(2以上)に等しい全高を有する1つのこのようなマルチハイトセルを示すブロック線図である。現在、マルチハイトセルを含むICのセル(すなわちスタンダードセルライブラリ)を設計するためのプロセスは各セルを表すために個々のポリゴンを描く設計エンジニアにより依然として主として手動で行われている。これは、手動努力であるので、非常に時間がかかり及びヒューマンエラーを起こし易い。生産性欠点とは別に、品質及び一貫性の低下もある(特にマルチハイトセルを含むICを設計することとなると)。
【0006】
したがって、改善されたメトリック(既存EDAツール及び手動方法を恐らく使用することより低減された面積、より高い回路密度又は配線層内のより高い金属利用率など)を有する客観的により良いレイアウトを生成することができるマルチハイトセルを含むICを設計するためのEDAツールの必要性がある。EDAツール及びそれを操作する方法は以前の手動方法と比較して設計時間の低減及び改善された一貫性を介しより高い生産性を提供するということがさらに望ましい。
【発明の概要】
【発明が解決しようとする課題】
【0007】
概要
本発明の目的は、生産性を増加するとともにもたらされた結果の一貫性を改善するためにマルチハイトセルを含む集積回路(IC)内のセル内デバイス又はトランジスタの配置及び配線のための電子的設計自動化ツール及びそれを操作する方法を提供することである。
【課題を解決するための手段】
【0008】
一実施形態では、本方法は、ネットリスト、テンプレート定義及びテクノロジー設計規則を含む入力を受信すること;セル内トランジスタの配置を面積最小解のための充足可能性モジュロ理論(SMT:Satisfiability Modulo Theory)配置問題へ変換することにより、受信された入力に基づき配置解を判断し、SMTソルバーを呼び出し、そしてトランジスタの配置のためのレイアウトを生成すること;及びセル内トランジスタ間の電気的接続のセル内配線をテクノロジー設計規則のSMT配線問題へ変換することにより、受信された入力及びレイアウトに基づきセル内トランジスタのための配線解を判断し、SMTソルバーを呼び出し、そしてセル内トランジスタの配置及び配線のためのレイアウトを生成することを含む。本方法はさらに、配置及び配線解の判断を、所定回数繰り返すこと又は所定メトリックを満足する配置及び配線解に出会うまで繰り返すこと及び生成された配置及び配線解を所定メトリックに基づき自動的にランク付けし、そしてランク付けされた解のリストを出力することを含み得る。
【0009】
別の実施形態では、本方法は、次のものを含む2つの別個のSMT問題及び解へ分割され得る:所定数のトランジスタの配置のためだけの任意選択の第1のSMT配置問題及びソルバー;続いて、トランジスタの可能な位置を制限するために第1のSMT配置問題に対する解を使用し得る第2のSMT配置及び配線問題。可能なトランジスタ位置が第1のSMTインスタンスにより提供されるSMT配置の周囲に存在するように制限するSMT配置及び配線問題を行うことにより解決時間全体が低減され得るということが理解されることになる。
【0010】
手短に言えば、本方法は:(i)入力を受信すること;(ii)入力をIC内の所定数のセル内トランジスタの配置に関係する第1組のSMT制約へ変換することによりSMT配置問題の第1のインスタンスを生成すること;(iii)第1のSMTソルバーを呼び出しそしてSMT配置問題に対する第1の解を生成すること;(iv)SMT配置問題に対する第1の解が入力の要件を満足すれば、SMT配置問題に対する第1の解を使用することによりSMT配置及び配線問題の第1のインスタンスを生成すること;及び(v)第2のSMTソルバーを呼び出し、そしてSMT配線問題に対する第1の解を生成することを含み得る。SMT配線問題に対する第1の解が入力の要件及びユーザにより規定された面積要件を満足すれば、IC内のセル内トランジスタの配置及び配線の第1のレイアウトが生成されそしてユーザへ出力される。SMT配置及び配線問題に対する第1の解が入力の要件を満足しなければ、最終すなわち最新解は無効にされ、そしてSMT配置問題の別のインスタンスが、入力の要件を使用して生成され、第1のSMTソルバーが呼び出されそして、以前に発見されたすべての解とは異なるSMT配置問題に対する第2の解が生成される。次に、この第2の解はSMT配置及び配線問題の第2のインスタンスを生成するために使用され、第2のSMTソルバーが呼び出され、そしてSMT配置及び配線問題に対する第2の解が生成される。
【0011】
上述の方法と同様に、同じSMTインスタンスに対し配置及び配線を使用する方法(任意選択的に、制限されたトランジスタ位置決めを有する方法)はさらに、配置及び配線解の判断を所定回数繰り返すこと又は所定メトリックを満足する配置及び配線解に出会うまで繰り返すこと、及び生成された配置及び配線解を所定メトリックに基づき自動的にランク付けし、そしてランク付けされた解のリストを出力することを含み得る。
【0012】
別の態様では、本開示の発明はさらに、IC内のセル内トランジスタの配置及び配線のためのプログラム命令を有する非一時的コンピュータ可読媒体に向けられる。好適には、コンピュータ可読媒体は、プログラム命令の実行のための少なくとも1つのプロセッサを含む電子的設計自動化(EDA)ツール内に又はその一部内に格納される。手短に言えば、コンピュータ可読メデアは:ネットリスト、テンプレート定義及びテクノロジー設計規則を含む入力を受信するためのプログラム命令、入力を所定数のセル内トランジスタの配置と所定数のセル内トランジスタへの相互接続の配線とに関係する一組のSMT制約へ変換することにより配置及び配線のSMT問題の第1のインスタンスを生成するためのプログラム命令;SMTソルバーを呼び出し、一組のSMT制約を使用し、そしてSMT問題に対する第1の解を生成するためのプログラム命令;及び第1の解が入力の要件及びユーザにより規定された所定面積要件を満足すれば、IC内のセル内トランジスタの配置及び配線のための第1のレイアウトを生成しそして出力するためのプログラム命令を含む。
【0013】
図面の簡単な説明
本発明の実施形態は、以下に続く詳細説明から、そして以下に提供される添付図面及び添付の特許請求の範囲からより十分に理解されることになる。
【図面の簡単な説明】
【0014】
図1A】基板上の単一セルを定義するテンプレートを示すブロック線図である。
図1B】それぞれが図1Aのテンプレート定義と同じ高さを有するが異なる幅を有するシングルハイトセルを示すブロック線図である。
図1C】それぞれが図1Aのテンプレート定義と同じ高さを有するが異なる幅を有するシングルハイトセルを示すブロック線図である。
図1D】基板上の列内に並んで当接されたそれぞれがテンプレート定義と同じ高さを有する所定数のセルを示すブロック線図である。
図1E図1Aのテンプレート高の複数(2以上)に等しい全高を有する単一マルチハイトセルを示すブロック線図である。
図2】IC内のセル内デバイスの配置及び配線のための本開示のEDAソフトウェア及び方法による使用に好適なコンピュータシステム又はツールの簡略化ブロック線図である。
図3】本開示の実施形態によるトランジスタのセル内配置のためのプロセス又は方法を示す簡略化フローチャートである。
図4A図3の方法による最小配置例の回路の概略図の一実施形態である。
図4B図3の方法によるSMTソルバーにより生成されたモデルの一例のグラフィック解釈である。
図5】本開示の実施形態によるセル内のセル内配線のためのプロセス又は方法を示す簡略化フローチャートである。
図6A図5の方法による最小配線例の配置済みレイアウト及び配線用グリッドの実施形態である。
図6B図5の方法による最小配線例のポリシリコン層のレイアウトを示す。
図6C図5の方法による最小配線例のビア層内のビアの配置を示す。
図6D図5の方法による最小配線例の金属層のレイアウトを示す。
図7】本開示の実施形態によるセル内のトランジスタのセル内配置及びセル内配線のためのプロセス又は方法全体を示す簡略化フローチャートである。
図8】本開示の実施形態によるセル内の一体化配置及び配線のプロセス又は方法を示す簡略化フローチャートである。
図9図8の方法による最小一体化配置及び配線例の端子候補の配線用グリッドの一実施形態である。
図10】本開示の他の実施形態によるセル内の制限されたトランジスタ位置決めを有する一体化配置及び配線のプロセス又は方法を示す簡略化フローチャートである。
【発明を実施するための形態】
【0015】
詳細な説明
集積回路(IC)内のセル内デバイスの配置及び配線のための電子的設計自動化ツール及びそれを操作する方法が提供される。
【0016】
以下の説明では、説明の目的のために、多数の特定詳細が本発明を完全に理解するために記載される。しかし、本発明はこれらの具体的詳細無しに実行され得るということことが当業者に明らかとなる。他の事例では、周知の構造及び技術は、本明細書の理解を不必要に曖昧にすることを避けるために、詳細に示されない又はブロック線図形式で示される。
【0017】
「一実施形態」又は「実施形態」への本明細書における参照は、当該実施形態に関連して説明される特定機能、構造、又は特徴が本発明の少なくとも一実施形態に含まれるということを意味する。本明細書内の様々な場所における句「一実施形態において」の出現は、必ずしもすべてが同一実施形態を参照するとは限らない。本明細書において使用される用語「結合する」は、2つ以上の部品又は素子を直接電気的に接続すること及び1つ又は複数の介在部品を介し間接的に接続することの両方を含み得る。
【0018】
高レベルでは、集積回路(IC)を製造するプロセスは、製品アイデアにより始まり、製品アイデアは次に、電子的設計自動化(EDA)ソフトウェアを使用する反復的及び概して労働集約的設計プロセスにおいて実現される。設計が完成されると、製作プロセス及びパッケージング及び組み立てプロセスが行われ、最終的に完成ICチップを生じる。
【0019】
手短に言えば、設計プロセスでは、設計者は、実装される機能を記述し、VHDL又はVerilogコードなどの高レベル記述言語(HDL)コードを使用するシステム設計において論理のモジュールを書き、そして、特定入力スティミュラスに応じた正しい出力を生成するということを保証するために設計をチェックする。次に、VHDL/Verilogコードは、入力としてスタンダードセルライブラリを採用するテクノロジーマッピングと呼ばれるプロセスによりネットリストへ変換され、チップの全体フロアプラン又はレイアウトが構築され、そして回路素子の配置又は位置決めが行われる。
【0020】
スタンダードセルライブラリの開発中、IC内のセル内にデバイスを位置決めすること又は配置すること(セル内配置)及びデバイス間の接続の配線(セル内配線)は、ライブラリがマルチハイトセル(テンプレート高の全複数(2以上)に等しい全高を有するセルを意味する)を含む場合は特に問題であり及び時間がかかり得る。
【0021】
図2は、マルチハイトセルを含むIC内のセル内デバイスの配置及び配線のための本開示のEDAソフトウェア及び方法による使用に好適なコンピュータシステム又はツールの簡略化ブロック線図である。図2を参照すると、コンピュータシステム210は通常、バスサブシステム212を介し多くの周辺デバイスと通信する少なくとも1つのプロセッサ214を含む。これらの周辺デバイスは、メモリサブシステム226及びファイルストレージサブシステム228を含むストレージサブシステム224;ユーザインターフェース入力デバイス222;ユーザインターフェース出力デバイス220;及びネットワークインターフェースサブシステム216を含み得る。ユーザインターフェース入力デバイス及びユーザインターフェース出力デバイスは、コンピュータシステム210とのユーザ相互作用を可能にする。ネットワークインターフェースサブシステム216は、通信ネットワーク218へのインターフェースを含む外部ネットワークへのインターフェースを提供し、そして通信ネットワーク218を介し他のコンピュータシステム内の対応インターフェースデバイスへ結合される。通信ネットワーク218は多くの相互接続されたコンピュータシステム及び通信リンクを含み得る。これらの通信リンクは、有線リンク、光リンク、無線リンク、又は情報の伝達のための任意の他の機構であり得る。一実施形態では通信ネットワーク218はインターネットであるが、他の実施形態では通信ネットワーク218は任意の好適なコンピュータネットワークであり得る。
【0022】
ユーザインターフェース入力デバイス222は、キーボード;マウス、トラックボール、タッチパッド、又はグラフィックタブレットなどのポインティングデバイス;スキャナ;ディスプレイへ取り込まれたタッチスクリーン;音声認識システムなどの音声入力デバイス;マイクロホン;及び他のタイプの入力デバイスを含み得る。一般的に、用語「入力デバイス」の使用はコンピュータシステム210内へ又は通信ネットワーク218上へ情報を入力するための全ての可能なタイプのデバイス及びやり方を含むように意図されている。
【0023】
ユーザインターフェース出力デバイス220は、ディスプレイサブシステム、プリンタ、ファックス機、又はオーディオ出力デバイスなどの非視覚的ディスプレイを含み得る。ディスプレイサブシステムは、陰極線管(CRT:cathode ray tube)、液晶ディスプレイ(LCD:liquid crystal display)などの平面パネルデバイス、投影デバイス、又は可視像を生成するためのいくつかの他の機構を含み得る。ディスプレイサブシステムはまた、オーディオ出力デバイスなどの非視覚的ディスプレイを提供し得る。一般的に、用語「出力デバイス」の使用は、コンピュータシステム210からユーザ又は別のマシン又はコンピュータシステムへ情報を出力するための全ての可能なタイプのデバイス及びやり方を含むように意図されている。
【0024】
ストレージサブシステム224は、本明細書において説明されるEDAツール(ネットリスト低減テクノロジー及び低減済みネットリストの解析のために適用される検証ツールを含む)のすべて又は一部の機能を提供する基本的プログラミング及びデータ構造を格納する。これらのソフトウェアモジュールは通常、プロセッサ214により実行される。
【0025】
メモリサブシステム226は通常、プログラム実行中の命令及びデータの格納のための主ランダムアクセスメモリ(RAM)230と固定命令が格納される読み出し専用メモリ(ROM)232とを含む多くのメモリを含む。ファイルストレージサブシステム228はプログラム及びデータファイルのための持続的ストレージを提供し、ハードディスクドライブ、関連着脱可能媒体と共にフロッピーディスクドライブ、CD-ROMドライブ、光ドライブ、又は着脱可能媒体カートリッジを含み得る。いくつかの実施形態の機能を実装するデータベース及びモジュールは、ファイルストレージサブシステム228により格納され得る。
【0026】
バスサブシステム212は、コンピュータシステム210の様々な部品及びサブシステムに意図どおりに互いに通信させるための機構を提供する。バスサブシステム212は単一バスとして概略的に示されているが、バスサブシステムの代替実施態様は複数のバスを使用し得る。
【0027】
コンピュータ可読媒体240はファイルストレージサブシステム228及び/又はネットワークインターフェースサブシステム216に関連する媒体であり得る。コンピュータ可読媒体は、ハードディスク、フロッピーディスク、CD-ROM、光媒体、着脱可能媒体カートリッジ又は電磁波であり得る。回路設計280(例えば回路設計のHDL記述、及び記載テクノロジーにより生成された低減されたネットリストを含む)を格納するコンピュータ可読媒体240が示される。また示されるのは、記述されたテクノロジーにより生成される回路290である。
【0028】
コンピュータシステム210自体は、パーソナルコンピュータ、ポータブルコンピュータ、ワークステーション、コンピュータ端末、ネットワークコンピュータ、テレビ、メインフレーム、又は任意の他のデータ処理システム若しくはユーザデバイスを含む様々なタイプのものであり得る。コンピュータ及びネットワークの絶え間なく変わる性質のために、図2に描写されたコンピュータシステム210の説明は、好ましい実施形態を示す目的のための単なる特定例として意図されている。図2に描写されるコンピュータシステムより多い又は少ない部品をおそらく有する多くの他の構成のコンピュータシステム210が可能である。
【0029】
次に、本開示の実施形態によるトランジスタのセル内配置のためのプロセス又は方法が図3の簡略化フローチャートを参照して説明される。図3を参照すると、本方法は、ネットリスト内の多くの部品又はサブ回路の恐らくマルチハイトセル内トランジスタ配置問題を、設計者により提供される入力(工程304)から又はそれを使用することによりSMT(充足可能性モジュロ理論)問題へ変換すること(工程302)により始まる。提供される入力(ユーザインターフェース入力デバイス222を介する及び/又はファイルストレージサブシステム228からのすべての入力)は、ネットリスト(工程306)、テンプレート定義(工程308)、及び1つ又は複数のテクノロジー設計規則(工程310)を含む。一般的に、ネットリストは、設計される回路のパラメータ(各部品の面積又はフットプリントを含む)、機能、及び要件を規定し、そしてIC内の使用のために利用可能な電子部品のリスト、及び接続すべき部品のノードのリストを含む。テンプレート定義により意味するのは、数ある中でも特に、ライブラリ上のすべてのセルに適用する共通特徴(ピン接続の水平方向及び垂直方向ピッチ、セル高、及び電力レール特徴など)である。セルはシングルハイトセル及びマルチハイトセルの両方を含み得る。マルチハイトセルにより意味するのは、テンプレート高の全複数(2以上)に等しい全高を有するセルである。すなわち、各セルは、互いに隣接して反復的に形成されるテンプレートの複数のインスタンスを含み得る。テクノロジー設計規則は、タイミング制約、及び部品間の最小幅又は間隔の規則などの制約を規定する。
【0030】
手短に言えば、配置のSMT問題インスタンスを生成すること(工程302)はCDL(回路記述言語:Circuit Description Language)フォーマットファイルで回路の部品及び接続性を記述すること、及び部品(トランジスタ)毎に、仮想グリッドの上の部品の位置を表す一組のSMT定数(整数及びブーリアン定数を含む)を定義することを含む。グリッドサイズを定義するために、設計者は、意図するレイアウトがシングルハイトセル又はマルチハイトセルを含むかを入力(ネットリスト306)内に指示しなければならない。
【0031】
すべての入力が入力され(工程304)、そして配置のSMT問題インスタンスが生成された(工程302)後、SMTソルバー又はサブルーチンが呼び出される(工程312)。手短に言えば、SMT問題インスタンスは、2つの部品又はトランジスタは同じグリッド座標上に配置されないということを保証するための制約と、短絡回路を生成することを避けるために部品の接続性を解析することとを含む。SMTソルバーは、例えばCVC3、MathSAT、Yices又はZ3を含む多くの利用可能SMTソルバーのうちの任意の1つを含み得る。
【0032】
配置のSMT問題インスタンスを生成し(工程302)そしてSMTソルバーを呼び出し実行するための方法の最小例が以下の例Aに示される。
【0033】
例A-最小配置例
以下のCDLフォーマットファイルスニペットにより記述された接続性を有する入力として3つのPMOSトランジスタ及び3つのNMOSトランジスタからなるAND2ネットリストを考察する:
.SUBCKT AND2 A B Z VDD VSS
*.PININFO A:I B:I Z:O VDD:P VSS:G
MT1 VDD A Zn VDD PMOS
MT2 VDD B Zn VDD PMOS
MT3 VDD Zn Z VDD PMOS
MT4 N1 A Zn VSS NMOS
MT5 VSS B N1 VSS NMOS
MT6 VSS Zn Z VSS NMOS
.ENDS
【0034】
このような回路の概略図が図4Aに示される。図4Aを参照すると、各トランジスタTnに関し次の一組のSMT定数が定義される:仮想グリッド上のトランジスタの位置及びそのフリップ状態を表す2つの整数定数(T_n_x及びT_n_y)及び1つのブーリアン定数(T_n_f)。フリップ状態は、トランジスタのソースピンがドレインピンの左側に在ると偽となりそうでなければ、真となるように任意に選択される。上記例に関して、SMT2ファイルフォーマットでの定数の宣言は以下の様なものだろう:
(declare-const T_1_x int)
(declare-const T_1_y int)
(declare-const T_1_f Bool)
(declare-const T_2_x int)
(declare-const T_2_y int)
(declare-const T_2_f Bool)
(declare-const T_3_x int)
(declare-const T_3_y int)
(declare-const T_3_f Bool)
(declare-const T_4_x Int)
(declare-const T_4_y Int)
(declare-const T_4_f Bool)
(declare-const T_5_x Int)
(declare-const T_5_y Int)
(declare-const T_5_f Bool)
(declare-const T_6_x Int)
(declare-const T_6_y Int)
(declare-const T_6_f Bool)
【0035】
トランジスタの適切な配置を保証するために、すべてのX位置及びY位置は所定グリッド制限内に在ることになるということが表明される。グリッドサイズを定義するために、我々は、意図するレイアウトがシングルハイトであるか又はマルチハイトであるかを選択しなければならない。
【0036】
シングルハイト配置方式の一例として、すべてのNMOSトランジスタが行0全体にわたってそしてすべてのPMOSトランジスタは行1全体にわたって配置されるということを定義する。さらに、セルは3列以下のトランジスタがこの回路にとって十分であることがあらかじめ知られているので3列以下のトランジスタを有することになるということを定義する。このような制限を発見するプロセスは、SMT2言語に対する最適化拡張を使用することにより又は外部的に繰り返すことによりのいずれかにより、最適化として実施される可能性がある。
【0037】
この状況では、以下のSMT2コードが生成されることになる:
(assert(and(>=T_1_x 0)(<=T_1_x 2)))
(assert(and(>=T_2_x 0)(<=T_2_x 2)))
(assert(and(>=T_3_x 0)(<=T_3_x 2)))
(assert(and(>=T_4_x 0)(<=T_4_x 2)))
(assert(and(>=T_5_x 0)(<=T_5_x 2)))
(assert(and(>=T_6_x 0)(<=T_6_x 2)))
(assert(=T_1_y 1))
(assert(=T_2_y 1))
(assert(=T_3_y 1))
(assert(=T_4_y 0))
(assert(=T_5_y 0))
(assert(=T_6_y 0))
【0038】
別の例は、NMOSトランジスタが行0又は行3のいずれかの上に在り及びPMOSトランジスタは行1又は行2のいずれかの上に在るデュアルハイト(dual height)セルであり得る。この場合、必要とされる列の最小数は2であり、以下のSMT2コードを生成する:
(assert(and(>=T_1_x0)(<=T_1_x1)))
(assert(and(>=T_2_x0)(<=T_2_x1)))
(assert(and(>=T_3_x0)(<=T_3_x1)))
(assert(and(>=T_4_x0)(<=T_4_x1)))
(assert(and(>=T_5_x0)(<=T_5_x1)))
(assert(and(>=T_6_x0)(<=T_6_x1)))
(assert(or(=T_1_y1)(=T_1_y2)))
(assert(or(=T_2_y1)(=T_2_y2)))
(assert(or(=T_3_y1)(=T_3_y2)))
(assert(or(=T_4_y0)(=T_4_y3)))
(assert(or(=T_5_y0)(=T_5_y3)))
(assert(or(=T_6_y0)(=T_6_y3)))
【0039】
次に、以下のSMT2コードは、いかなる2つのトランジスタも同じ座標上に配置されないということを確実にする。PMOSトランジスタ及びNMOSトランジスタは、行を共有しないので、重畳し得なく、したがって、同じタイプトランジスタのすべてのペアは特異位置に在ると宣言される:
(assert(not(and(=T_1_x T_2_x)(=T_1_y T_2_y))))
(assert(not(and(=T_1_x T_3_x)(=T_1_y T_3_y))))
(assert(not(and(=T_2_x T_3_x)(=T_2_y T_3_y))))
(assert(not(and(=T_4_x T_5_x)(=T_4_y T_5_y))))
(assert(not(and(=T_4_x T_6_x)(=T_4_y T_6_y))))
(assert(not(and(=T_5_x T_6_x)(=T_5_y T_6_y))))
【0040】
そして最後に、短絡回路を生成することを避けるために、トランジスタの接続性が解析され、そして以下のSMT2コードは、所与の回路に関して、共有される拡散が同じネットに属する場合はトランジスタを横方向にだけ当接することが推奨されるということを確実にする。
(assert(implies(and(=T_1_y T_2_y)(=T_1_x(+T_2_x1)))(not(=T_1_f T_2_f))))
(assert(implies(and(=T_1_y T_2_y)(=T_2_x(+T_1_x1)))(not(=T_1_f T_2_f))))
(assert(implies(and(=T_1_y T_3_y)(=T_1_x(+T_3_x1)))(and(not T_1_f T_3_f)))
(assert(implies(and(=T_1_y T_3_y)(=T_3_x(+T_1_x1)))(and T_1_f(not T_3_f)))
(assert(implies(and(=T_2_y T_3_y)(=T_2_x(+T_3_x1)))(and (not T_2_f T_3_f)))
(assert(implies(and(=T_2_y T_3_y)(=T_3_x(+T_2_x1)))(and T_2_f(not T_3_f))))
(assert(implies(and(=T_4_y T_5_y)(=T_4_x(+T_5_x 1)))(and(not T_4_f(not T_5_f))))
(assert(implies(and(=T_4_y T_5_y)(=T_5_x(+T_4_x1)))(and T_4_f T_5_f)))
(assert(not(and(=T_4_y T_6_y)(=T_4_x(+T_6_x1)))))
(assert(not(and(=T_4_y T_6_y)(=T_6_x(+T_4_x1)))))
(assert(implies(and(=T_5_y T_6_y)(=T_5_x(+T_6_x1)))(and(not T_5_f) T_6_f)))
(assert(implies (and(=T_5_y T_6_y)(=T_6_x(+T_5_x1)))(and T_5_f(not T_6_f))))
【0041】
追加制約は、望ましくない解のタイプを制限することにより、又は問題の対称性を低減するようにのいずれかにより、任意選択的にコード化され得る。例えば、以下のSMT2コードは以下のことを宣言する:この回路に関して、垂直方向に隣接するPMOS及びNMOSトランジスタは次のようにゲートネットを共有しなければならない:
(assert(and(=T_1_x T_4_x)(=(abs(T_1_y T_4_y))1)))
(assert(and(=T_2_x T_5_x)(=(abs(T_2_y T_5_y))1)))
(assert(and(=T_3_x T_6_x)(=(abs(T_3_y T_6_y))1)))
【0042】
結果をSMTソルバーから収集した後、我々は、各トランジスタの座標及びフリップ状態を発見するために生成済みモデルを評価し得、生成済みモデルはその寸法及びグリッド定義と共に所与の回路の配置済みレイアウトを定義し得る。
【0043】
上記シングルハイト方式のSMTソルバーにより生成されたモデルの一例は以下のものである可能性がある:
(model
(define-fun T_1_f()Bool false)
(define-fun T_1_x()Int 0)
(define-fun T_1_y()Int 1)
(define-fun T_2_f()Bool true)
(define-fun T_2_x()Int 1)
(define-fun T_2_y()Int 1)
(define-fun T_3_f()Bool false)
(define-fun T_3_x()Int 2)
(define-fun T_3_y()Int 1)
(define-fun T_4_f()Bool true)
(define-fun T_4_x()Int 0)
(define-fun T_4_y()Int 0)
(define-fun T_5_f()Bool true)
(define-fun T_5_x()Int 1)
(define-fun T_5_y()Int 0)
(define-fun T_6_f()Bool false)
(define-fun T_6_x()Int 2)
(define-fun T_6_y()Int 0))
【0044】
これは図4Bに示すようにグラフィック的に解釈され得る。
【0045】
次に、再び図3を参照すると、SMTソルバーによる解が成功であったか否かの判断が行われる(工程314)。成功でなかったならば、セル内配置のための方法は終了される(工程316)。しかし、識別された解が成功であったならば、すなわち、部品のいずれも互いに重畳しなければ、又は短絡回路を生じる接続を必要としなければ、配置済みレイアウトが、入力工程(工程304)において以前に提供されたネットリスト、テンプレート定義及びテクノロジー設計規則を使用することにより生成され(工程318)、そして、出力工程(工程320)においてユーザインターフェース出力デバイス220を介し設計者へ提供される、及び/又は入力としてネットワークインターフェースサブシステム216を介し、図4を参照して以下に説明されるセル内配線のための方法を実施するためのモジュール又はサブルーチンへ提供される。一般的に、図3に示すように、配置済みレイアウト322は、セル内配線のためのモジュール又はサブルーチンへ提供される所定数のレイアウトのうちの1つであり得る。
【0046】
次に、EDAソフトウェアはネットリスト内の次の所定数の部品又はサブ回路を待ち(工程324)、そして本プロセスは、以前に生成された配置済みレイアウト322の追加入力によりネットリスト306内の次の回路又は次の所定数の部品の配置のSMT問題インスタンスを生成することにより続ける(工程302)。
【0047】
次に、本開示の実施形態によるマルチハイト部品を含むセル内のセル内配線のためのプロセス又は方法が図5の簡略化フローチャートを参照し説明される。図5を参照すると、本方法は、所定数のマルチハイト部品又はトランジスタを含む設計において配置済みレイアウトの配線問題を、入力から配線のSMT問題インスタンスへ変換すること(工程502)又は入力として使用することにより配線のSMT問題インスタンスへ変換すること(工程504)と、そしてSMTソルバー又はサブルーチンを実行する又は呼び出すこと(工程512)とにより始まる。手短に言えば、SMT問題インスタンスは、同じネットのすべての端子が接続されるが異なるネットの端子は接続されないということを保証するための制約を含み、これにより短絡回路を回避する。SMT問題インスタンスはまた、設計規則を最終配線済みレイアウトに対し実行するためのコードを含み得る。入力は図3の方法を使用して導出された配置済みレイアウト(工程506)を含み得、そしてテンプレート定義(工程508)及び1つ又は複数のテクノロジー設計規則(工程510)を含む入力が設計者により提供される。上に説明された図3の方法と同様に、すべての入力は、ユーザインターフェース入力デバイス222を介し及び/又はファイルストレージサブシステム228から提供又は入力される。
【0048】
配線のSMT問題インスタンスを生成し(工程502)そしてSMTソルバーを呼び出し実行する(工程512)ための方法の最小例が以下の例Bに示される。
【0049】
例B-最小配線例
配置済みトランジスタを有するレイアウトを所与として、第1の工程は利用可能な配線リソースに適合するグリッドを定義することである。配置済みレイアウト及び配線用グリッドの例が図6Aに示される。
【0050】
このグリッドの各交差点をノードと呼び、2つの交差点を接続する各点線を辺と呼び、そして点を有するマーキングされた各接続点を端子と呼ぶ。
【0051】
この例では、グリッドは、2列毎に1つのトランジスタを有し得るように選択された。最上行及び最下行は給電するために予約されており、そして4つの内側配線トラックが存在する。
【0052】
この例では、ポリシリコン及び金属1の配線層が存在するので、このグリッドは、2回繰り返されそして積層され、そしてまた、ビア層を表す層全体にわたりノード間に辺を生成する。このようにして、任意のノードは座標系内の3D点(x,y,z)として参照され得る。ここで、xは列を、yは行を、そしてzは層を表す。この例では、層0はポリシリコンであり層1は金属1である。層0から層1へ交差するいかなる辺もビア層内の形状となる。
【0053】
逆に、各辺は3座標及び1方向(北,南,東,西,上,下)により参照され得る。例えば、辺(x,y,z,上)はノード(x,y,z)とノード(x,y,z+1)との間の辺を表す、又は辺(x,y,z,西)はノード(x-1,y,z)とノード(x,y,z)とを接続する辺を表す。この定義により、以下の判断基準のうちの1つが真の時に限り、2つのノード(x,y,z)及び(x,y,z)を接続する辺が存在する:
|x1-x2|=1及びy1=y2及びz1=z2
x1=x2及び|y1-y2|=1及びz1=z2
x1=x2及びy1=y2及び|z1-z2|=1
【0054】
ネットは整数値により任意にインデックス付けされ、0は「ネット無し」のために予約される。この例では、可能な表現は{0:no_net,1: VDD,2:VSS,3:A,4:B,5:N1,6:ZN,7:Z}である。
【0055】
ネットが3つ以上の端子を有すれば、ネットを、すべての端子がサブネットにより結合されるやり方でペアの端子を接続するサブネットまでさらに分解することが推奨される。ネットに必要とされるサブネットの最小数は当該ネットの端子の数未満である。これらのサブネットも、整数値により任意にインデックス付けされる。一例として、ネットZNは次の4つの端子を有する:{(0,1,0),(2,4,0),(5,1,0),(5,4,0)}。サブネットの可能な一組は{0: {(0,1,0),(2,4,0)},1:{(2,4,0),(5,1,0)},2:{(5,1,0),(5,4,0)}}である。
【0056】
グリッド上の辺毎に、以下の一組のSMT定数が生成されることになる:所与の辺の上にワイヤが存在するかどうかを表すブーリアン定数E_used、どのネットが辺(使用されれば)により配線されているかを表す整数定数E_net、及びE_netのどのサブネットが辺(使用されていれば)により配線されているかを表すbitvector定数E_subnet。以下はネットのサブネットの最大数が4である1つの一般的辺のSMT2コードの例である:
(declare-const E_used Bool)
(declare-const E_net Int)
(declare-const E_subnet(_BitVec 4))
【0057】
ネット変数は制限された有効値を有するので、これらを制限する約款が存在する。ネットは0~ネットの数(我々の例では7)で変化し得る。以下は辺毎のこれらの制限を定義する次のSMT2コードの例である:
(assert (and(>=E_net0)(<=E_net7)))
各辺に関し、各辺へ関連付けられたネットがあれば、当該辺が使用されなければならない:
(assert(implies(>E_net0)E_used))
【0058】
ネットへ関連付けられることなくサブネットへ関連付けられたいかなる辺も無いということを保証するために、以下の約款があらゆる辺に関し追加されなければならない:
(assert(implies(not(=E_subnet#b0000))(>E_net0)))
【0059】
次に、接続性が同様にコード化されなければならない。このため、2つの異なるケースを見ることが推奨される:ノードがサブネットの端子であれば、E_subnetがサブネットを含むノードへ接続される辺の数は正確に1である。一例として、ネット7及びサブネット0の端子である3つの接続された辺(E1、E2及びE3)を有する一般的ノードを考察する。これはSMT2において以下のようにコード化される可能性がある:
(assert(let
((e1(ite(and(=E1_net7)(=(bvand E1_subnet#b0001)#b0001))1 0))
(e2(ite(and(=E2_net7)(=(bvand E2_subnet#b0001)#b0001))1 0))
(e3(ite(and(=E3_net7)(=(bvand E3_subnet#b0001)#b0001))1 0)))
(or=(+e1 e2 e3)1)))
【0060】
ノードがサブネットの端子でなければ、E_subnetがサブネットを含むノードへ接続される辺の数は2又は0のいずれかである。前と同じ例に従って、当該のノードがネット7及びサブネット0の端子ではないという例を考察する。
(assert(let
(e1(ite(and(=E1_net7)(=(bvand E1_subnet#b0001)#b0001))1 0))
(e2(ite(and(=E2_net7)(=(bvand E2_subnet#b0001)#b0001))1 0))
(e3(ite(and(=E3_net7)(=(bvand E3_subnet#b0001)#b0001))1 0)))
(or(=(+e1 e2 e3)0)(=(+e1 e2 e3)2)))
【0061】
最後に、短絡回路の発生を回避する為に、我々は次のことを保証しなければならない:2つの使用された辺が交われば、これらは同じネットへ割り当てられる必要がある。一例として、ノードへ接続される3つの辺を有するノードを考察する。これをSMT2において符号化する可能なやり方は以下のとおりである:
(assert(implies E1_used(and
(implies E2_used(=E_2_net E1_net))
(implies E3_used(=E_3_net E1_net)))))
(assert(implies E2_used(and
(implies E1_used(=E_1_net E2_net))
(implies E3_used(=E_3_net E2_net)))))
(assert(implies E3_used(and
(implies E1_used(=E_1_net E3_net)(implies E2_used(=E_2_net E3_net))))
【0062】
設計規則又はテンプレート定義などの追加制約が同様に符号化され得る。この例は金属1層内の電力レールの定義であり得る。この事例では、層1内の最上行内のあらゆる水平方向辺はネット1内になければならない:
(assert(=E_net 1))
【0063】
問題インスタンスをSMTソルバーエンジンへ送信した後、我々は各辺の「使用された」変数を見ることによりその結果を解釈し得る。結果が真であれば、結果は当該辺を定義する2つのノードに対応する位置間内のワイヤの存在を指示する。
【0064】
この結果は、正しいが、ワイヤ長などの劣悪なメトリックを有し得る。解が存在するということを保証した後、我々は、所望により、所定費用関数に従って結果を調節するために最適化エンジンを使用するという選択肢を有する。
【0065】
最後に、ポートは、1つのノードだけが直下層からすべてのノードへ接続される余分の層を加えることにより容易に表現可能となり得る。この新しい層は短絡回路の制約から免除される。
【0066】
完成例の出力の一例が図6B~6Dにおいて解釈されグラフィック的に示され得る。ここで、図6Bはポリシリコン層のレイアウトを示し;図6Cはビア層内のビアの配置を示し;そして図6Dは金属層のレイアウトを示す。
【0067】
次に、図5を再び参照すると、SMTソルバーによる解が成功であったか否かの判断が行われる(工程514)。成功でなければ、セル内配線の方法は終了される(工程516)。しかし、識別された解が成功であったならば、すなわち、すべての必要とされる端子が接続されており、そして短絡回路を生じるいかなる接続も存在しなければ、配線済みレイアウトが、配置済みレイアウト、入力工程(工程504)において以前に入力されたテンプレート定義及びテクノロジー設計規則、及びネットワークインターフェースサブシステム216を介し出力バッファ522内に提供された配置及び配線済みレイアウト520を使用することにより生成される(工程518)。一般的に、図5に示すように、配置及び配線済みレイアウト520は出力バッファ522内に格納された所定数のレイアウトのうちの1つであり得る。
【0068】
次に、EDAソフトウェアは、所望数の結果(配置及び配線済みレイアウト520)が実現されたかどうかを判断し(工程524)、そして否であれば、配線のSMT問題インスタンス(工程502)が、図3の方法を使用して導出される別の配置済みレイアウト506のために繰り返される。所望数の結果が達成されれば、セル内配線は完了し、このプロセスは終了される(工程526)。次に、配置及び配線済みレイアウト520は、IC設計プロセス中の設計の合成中に使用されるスタンダードセルライブラリとしての可読媒体として、ユーザインターフェース出力デバイス220を介し設計者へ及び/又はネットワークインターフェースサブシステム216を介しコンピュータ可読媒体240へ出力され得る。
【0069】
図7は、本開示の実施形態によるマルチハイト部品を含むセル内のトランジスタのセル内配置及びセル内配線のプロセス又は方法全体を示す簡略化フローチャートである。図7を参照すると、本方法は、図3の方法を使用することにより達成される新トランジスタ配置の要求(工程702)で始まる。次に、配置済みレイアウトが完了すれば(工程704)、配置済みレイアウトのセル内配線(工程706)は、図3及び/又は4の方法の入力工程(工程708)において以前に入力された配置済みレイアウト、テンプレート定義、及びテクノロジー設計規則を使用することにより達成される。配置済みレイアウトが完了していなければ、本プロセスは終了する。次に、新トランジスタ配置の配線済みレイアウトが完了しているかどうかがの判定が行われる。否であれば、新トランジスタ配置が要求される(工程702)。配線済みレイアウトが完了していれば、この結果は出力工程(工程714)において格納され(工程712)、そして所望数の結果(すなわちレイアウト716)が達成されていれば、判断が行われ(工程718)、そして否であれば、新トランジスタ配置が要求され(工程702)、そして本プロセスは別の配置済みレイアウトに関し繰り返される。所望数の結果が達成されれば、本プロセスは終了される(工程720)。
【0070】
非一時的コンピュータ可読媒体内に格納されそして少なくとも1つのプロセッサを使用することにより実行されるプログラム命令を使用する集積回路(IC)内のセル内トランジスタの自動配置及び配線のためのプロセス又は方法全体の他の実施形態について図8、10を参照して次に説明する。
【0071】
図8は本開示の実施形態によるセル内の一体化配置及び配線のためのプロセス又は方法を示す簡略化フローチャートである。図8を参照すると、本方法はネットリスト804、テンプレート定義806及び1つ又は複数のテクノロジー設計規則808を含む入力802を受信することで始まる。任意選択的に又は好適には、入力はさらに、回路設計者又はユーザにより規定された所定面積要件810を含み得る。上に述べた実施形態と同様に、すべての入力はユーザインターフェース入力デバイス222を介し及び/又はファイルストレージサブシステム228から入力され得る。一般的に、ネットリストは、設計される回路の機能及び要件を規定し、そして電子部品のリスト及び電子部品が接続する部品のノードのリストを含む。テンプレートにより意味するのは、数ある中でも特に、ライブラリ上のすべてのセルに適用する共通特徴(ピン接続の水平方向及び垂直方向ピッチ、セル高、及び電力レール特徴など)である。セルはシングルハイトセル及びマルチハイトセルの両方を含み得る。マルチハイトセルにより意味するのは、テンプレート高の全複数(2以上)に等しい全高を有するセルである。すなわち、各セルは、互いに隣接して反復的に形成されるテンプレートの複数のインスタンスを含み得る。テクノロジー設計規則は部品間の最小幅又は間隔規則などの制約を規定する。
【0072】
すべての入力が入力された後、配置及び配線の両方の単一SMT問題インスタンスが生成される(工程812)。手短に言えば、配置及び配線のSMT問題インスタンスを生成することは、回路の部品及び接続性をCDL(回路記述言語)フォーマットファイルで翻訳又は記述することと、部品(トランジスタ)毎に、仮想グリッドの上の部品の位置を表す一組のSMT定数(整数定数及びブーリアン定数を含む)を定義することとを含む。グリッドサイズを定義するために、設計者は、意図するレイアウトがシングルハイトセル又はマルチハイトセルを含むことになるかを入力(ネットリスト804)内に指示しなければならない。この入力はまた、従われる必要がある適切な接続性及びテクノロジー設計規則を保証するコードを含む。
【0073】
配置及び配線のSMT問題インスタンスを生成するための方法の最小例が以下の例Cに示される。
【0074】
例C-最小一体化配置及び配線例
この例では、目的は順序付け問題及び配線問題を単一SMT問題へ融合することである。したがって、入力ネットリストを所与として、SMTソルバーは、配線及び配置済みセルを生成し得るか、又は現在のネットリスト、配線用グリッド及びテクノロジー依存パラメータによりこのような結果を達成することが不可能であるということを証明し得るかのいずれかである。
【0075】
主アイデアは、トランジスタが順序付け制約により或る場所に配置されるときはいつでも配線制約がこのことを認識しそしてその端子の配線を保証するようなやり方で順序付けアルゴリズム及び配置アルゴリズム(例A及びBにおいて提示された)を結び付けることである。この結び付けを行うために、例Aにおいて提示された同じ順序付け制約が使用され、そしてこれに加えて、配線のために使用された特別定数及び制約が使用される。これらの定数は、順序付けられたトランジスタ端子が配線用グリッド内に置かれる可能性があるあらゆる位置において定義される。これらの位置は端子候補と呼ばれることになる。例Bと同じ配線用グリッドを使用することにより、端子候補の定義の一例が図9に示される。
【0076】
図9を参照すると、この例では、位置C1、C3、C5、C7、C8、C10、C12、C14は拡散端子であり、そして残りの位置はポリシリコン端子である。端子候補毎に、その現在のネットを指示する整数定数が定義される。
(declare-const C1_net Int)
(declare-const C2_net Int)
(declare-const C3_net Int)
(declare-const C4_net Int)
(declare-const C5_net Int)
(declare-const C6_net Int)
(declare-const C7_net Int)
(declare-const C8_net Int)
(declare-const C9_net Int)
(declare-const C10_net Int)
(declare-const C11_net Int)
(declare-const C12_net Int)
(declare-const C13_net Int)
(declare-const C14_net Int)
【0077】
加えて、どのトランジスタが各ポリシリコン端子候補に関連付けられるかを指示する整数定数が必要とされる:
(declare-const C2_xtor Int)
(declare-const C4_xtor Int)
(declare-const C6_xtor Int)
(declare-const C9_xtor Int)
(declare-const C11_xtor Int)
(declare-const C13_xtor Int)
【0078】
次に、トランジスタは順序付け定数と関連付けられる。例えば、トランジスタMT1が順序付け位置(0,0)に配置されそして反転されない場合、C2_xtorはMT1でなければならなく、C1_netはネットVDD(ネット指標1)でなければならなく、C2_netはネットA(ネット指標3)でなければならなく、C3_netはZN(ネット指標6)でなければならない。そして:
(assert(implies(and(=T_1_x0)(=T_1_y0)(=T_1_f false))
(and(=C2_xtor1)(=C1_net1)(=C2_net3)(=C3_net6)))
【0079】
同様に、MT1が同じ位置に在るが反転されない場合:
(assert(implies(and(=T_1_x0)(=T_1_y0)(=T_1_f true))
(and(=C2_xtor1)(=C1_net6)(=C2_net3)(=C3_net1)))
【0080】
MT1が所定位置(1,0)に在る場合、端子はC3、C4、C5へマッピングされる:
(assert(implies(and(=T_1_x1)(=T_1_y0)(=T_1_f false))
(and(=C4_xtor1)(=C3_net1)(=C4_net3)(=C5_net6))
(assert(implies(and(=T_1_x1)(=T_1_y0)(=T_1_f true))
(and(=C4_xtor1)(=C3_net6)(=C4_net3)(=C5_net 1)))
【0081】
すべての可能な順序付けをカバーするために、各トランジスタが占め得る各候補端子へ各トランジスタを接続する同様な制約があらゆるトランジスタのために生成されなければならない。
【0082】
配線制約に関し、次の2つの差異を除外し例Bに示す制約と同じ制約が使用される:(1)サブネットは配置済み端子の代わりにトランジスタに基づき生成される;(2)接続性制約は候補端子定数に依存する。
【0083】
ネットが入力ネットリスト内の3以上のトランジスタにおいて出現すれば、ネットはさらに、すべてのトランジスタがサブネットにより結合されるようなやり方で、ペアのトランジスタを接続するサブネットへ分解される。ネットに必要とされるサブネットの最小数は、端子として当該ネットを含むトランジスタの数未満である。これらのサブネットも、整数値により任意にインデックス付けされる。一例として、ネットZNは次の5つのトランジスタにおいて出現する:{MT1,MT2,MT3,MT4,MT6}。可能な組のサブネットは{0:{MT1,MT2},1:{MT2,MT3},2:{MT4,MT6},3:{MT3,MT6}}である。
【0084】
端子候補でないノード毎に、あらゆるサブネットに対するノードの辺の度合い(degree)を判断する制約は例Bと同じままである:すなわち、度合いはゼロ又は2のいずれかでなければならない。端子候補ノードに関して、他方で、度合いの定義は、順序付け制約により当該端子へ割り当てられるネットに基づく。任意のサブネットsに関して、sに対する候補ノードの度合いは、端子が同ネットに割り当てられ及びトランジスタがsに属すれば、1でなければならない。この説明に整合しない任意の他の候補ノードに関して、sに対する度合いはゼロ又は2でなければならない。
【0085】
一例として、トランジスタMT1とMT4との間のネットA(ネット指標3)及びサブネットのポリシリコン端子候補C2に関するサブネット度合い制約を考察する。この度合いは、C2がネットAとトランジスタMT1又はMT4のいずれかとに割り当てられていれば、1でなければならない。そうでなければ、この度合いはゼロ又は2でなければならない。
(assert(let
((subnet_degree(+
;C2の西に対する辺
(ite(and(=E_010_110_net3)(=(bvand E_110_210_subnet#b0001)#b0001))1 0);
;C2の南に対する辺
(ite(and(=E_100_110_net3)(=(bvand E_200_210_subnet#b0001)#b0001))1 0)
;C2の東に対する辺
(ite(and(=E_110_210_net3)(=(bvand E_210_310_subnet#b0001)#b0001))1 0)
;C2の北に対する辺
(ite(and(=E_110_120_net3)(=(bvand E_210_220_subnet#b0001)#b0001))1 0)
;C2をその上の層へ接続するビア
(ite(and(=E_110_111_net3)(=(bvand E_210_211_subnet#b0001)#b0001))1 0)))
(ite(and(=C2_net3)(or(=C2_xtor1)(=C2_xtor4))
(=subnet_degree1)(or(=subnet_degree0)(=subnet_degree2)))))
【0086】
ここで、E_ijk_xyz_netは位置(i,j,k)及び(x,y,z)においてノードを接続する辺に関連付けられたネット定数を表す。E_ijk_xyz_subnetは同辺に関連付けられたサブネット定数である。
【0087】
拡散端子を扱う際は特別な注意が払われなければならないが、これは、拡散共有ケースを配線する必要がないためである。以下の例は、ネットN1(ネット指標5)及びトランジスタMT4、MT5間のサブネットの端子候補に関するサブネット度合いを定義する。left(C2_xtor)に対するトランジスタがMT4であり、right(C4_xtor)に対するトランジスタがMT5であれば(又は逆も同様)、これは拡散共有ケースであり、そして、したがってこのサブネットを配線する必要はなく、サブネット度合いはゼロ又は2である。このサブネットが配線される必要がある唯一のケースはサブネットのトランジスタのうちの1つだけが現在の拡散へ接続される場合である。
(assert(let
(subnet_degree(+))
;C3の西に対する辺
(ite(and(=E_110_210_net5)(=(bvand E_110_210_subnet#b0001)#b0001))1 0)
;C3の南に対する辺
(ite(and(=E_200_210_net5)(=(bvand E_200_210_subnet#b0001)#b0001))1 0)
;C3の東に対する辺
(ite(and(=E_210_310_net5)(=(bvand E_210_310_subnet#b0001)#b0001))1 0)
;C3の北に対する辺
(ite(and(=E_210_220_net5)(=(bvand E_210_220_subnet#b0001)#b0001))1 0)
;C3をその上の層へ接続するビア
(ite(and(=E_210_211_net5) (=(bvand E_210_211_subnet#b0001)#b0001))1 0)))
)
(ite(and(=C3_net5))
(=(+(ite(or (=C2_xtor4)(=C4_xtor4)))
(ite(or(=C2_xtor5)(=C4_xtor5)))))
1))
(=subnet_degree1)
(or(=subnet_degree0)(=subnet_degree2)
【0088】
あらゆるネットが正しく配線されるということを保証するために、同様なサブネット制約が入力ネットリストの各ネットの各サブネットにより端子候補毎に生成されなければならない。
【0089】
解がSMTソルバーにより発見されると、順序付け及び配置結果が、例A及びBにおいて説明したやり方と同じやり方で定数の結果を読むことにより解釈され得る。
【0090】
すべての入力802が入力され、そして配置及び配線のSMT問題インスタンスが生成された(工程812)後、SMTソルバー又はサブルーチンが呼び出され、そして解が生成される(工程814)。手短に言えば、SMTソルバーは、いかなる2つの部品又はトランジスタも同じグリッド座標上に配置されないということを保証するための制約と、短絡回路を生成することを避けるために部品の接続性を解析することとを含む。
【0091】
次に、SMTソルバーによる解が成功であったか否かの判断が行われる(工程816)。解は、入力の要件及びユーザにより規定された所定面積要件を満足すれば成功である。成功でなければ、本方法は終了され、そしてユーザに通知される。しかし、識別された解が成功であったならば、すなわち、部品同士がいずれも重畳しなければ、又は短絡回路を生じる接続を必要としなければ、配線済みセル内トランジスタ及び配置済みセル内トランジスタの両方を含むICのレイアウト820が、以前に提供されたネットリスト、テンプレート定義及びテクノロジー設計規則を使用することにより生成され(工程818)、そしてユーザインターフェース出力デバイス220を介し出力工程(工程822)において設計者へ出力される。
【0092】
いくつかの実施形態では、入力の要件及び所定面積要件を満足する解が発見されると、この解に関係するレイアウトがユーザへ伝達され、本方法は終了し、そしてSMTソルバーは、入力の要件及び所定面積要件を満足する別のより最適な解を発見する試みにおいて再び呼び出されない。
【0093】
他の実施形態では、図8に示すように、配置済みレイアウト820は、所定数の生成されたレイアウトの1つであり、そして出力工程(工程822)においてユーザへ出力される。一般的に、これらの実施形態では、レイアウトが生成された(工程818)後、所望数の結果(すなわちレイアウト)が達成されたかどうかの判断が行われる(工程824)。所望数の結果又はレイアウトが達成されなく、そして最新解が入力の要件を満足しなければ、最終すなわち最新解は無効にされ、そして、SMT配置問題の別のインスタンスが、入力の要件を使用することにより生成され(工程812)、SMTソルバーが呼び出され(工程814)、そして以前に発見されたすべての解とは異なるSMT配置問題に対する別の解が生成される。このプロセスは、所定数のレイアウトが生成される及び/又は少なくとも1つの解が入力要件及び所定面積要件を満足するまで繰り返される。別のレイアウトが生成され(工程816)、そして出力される(工程822)。
【0094】
任意選択的に、一実施形態では、本方法はさらに、生成され出力されたレイアウト820から最適解を、例えばICに必要とされる面積、レイアウトの複雑度(回路を作製するために必要なマスクの数など)、又はネットリスト又はテクノロジー設計規則に基づき、判断することと、最適解に関係するレイアウトをユーザのために識別することとを含み得る。
【0095】
他の実施形態では、本方法はさらに、生成されたレイアウト820をランク付けすることと、レイアウトに必要とされる面積、回路を作製するのに必要なマスクの数、及び/又はICの性能を含む所定メトリックに基づき、ランク付けされた解のリストを出力することとを含み得る。
【0096】
図10は、本開示の他の実施形態によるセル内の制限されたトランジスタ位置決めを有する一体化配置及び配線の別のプロセス又は方法を示す簡略化フローチャートである。図10を参照すると、本方法はネットリスト1004、テンプレート定義1006及び1つ又は複数のテクノロジー設計規則1008を含む入力1002を受信することで始まる。任意選択的に又は好適には、入力はさらに、回路設計者又はユーザにより規定された所定面積要件1010を含み得る。上述の実施形態と同様に、すべての入力はユーザインターフェース入力デバイス222を介し及び/又はファイルストレージサブシステム228から入力され得る。一般的に、ネットリストは、設計される回路の機能及び要件を規定し、そして電子部品のリスト、及び電子部品が接続する部品のノードのリストを含む。テンプレートにより意味するのは、数ある中でも特に、ライブラリ上のすべてのセルに適用する共通特徴(ピン接続の水平方向及び垂直方向ピッチ、セル高、及び電力レール特徴など)である。セルはシングルハイトセル及びマルチハイトセルの両方を含み得る。マルチハイトセルにより意味するのは、テンプレート高の全複数(2以上)に等しい全高を有するセルである。すなわち、各セルは、互いに隣接して反復的に形成されるテンプレートの複数のインスタンスを含み得る。テクノロジー設計規則は部品間の最小幅又は間隔規則などの制約を規定する。
【0097】
すべての入力が入力された後、配置のSMT問題(SMT配置問題)のインスタンスが生成される(工程1012)。手短に言えば、配置のSMT問題インスタンスを生成することは、CDL(回路記述言語)フォーマットファイルで部品を翻訳又は記述することと、部品(トランジスタ)毎に、仮想グリッドの上の部品の位置を表す一組のSMT定数(整数定数及びブーリアン定数を含む)を定義することとを含む。グリッドサイズを定義するために、設計者は、意図するレイアウトがシングルハイトセル又はマルチハイトセルを含むかを入力(ネットリスト1004)内に指示しなければならない。
【0098】
すべての入力1002が入力された後、配置のSMT問題インスタンスが生成され(工程1012)、第1のSMTソルバー又はサブルーチンが呼び出され、そして解が生成される(工程1014)。手短に言えば、上述のSMTインスタンスのような第1のSMTインスタンスは、2つの部品又はトランジスタは同じグリッド座標上に配置されないということを保証するための制約を含み得る。
【0099】
次に、第1のSMTソルバーにより発見された解が成功したか否かの判断が行われる(工程1016)。解は、配置された部品又はトランジスタのうちのいずれも重畳しなければ、そして入力の要件及びユーザにより規定された所定面積要件を満足すれば、成功である。成功していなければ、本方法は終了され、そしてユーザに通知される。
【0100】
識別された解が成功であれば、制限された配置を有する配置及び配線のSMT問題インスタンスが生成され(工程1018)、第2のSMTソルバー又はサブルーチンが呼び出され、そして解が生成される(工程1020)。手短に言えば、上述のSMTインスタンスのような第2のSMTインスタンスはいかなる2つの部品又はトランジスタも同じグリッド座標上に配置されないということを保証するための制約と、短絡回路を生成することを避けるために部品の接続性を解析することとを含み得る。制限された配置により意味するのは、SMT問題インスタンスは、部品又はトランジスタの配置により制限された配置が、いくらかの追加自由度により工程1014において生成される解により成功裡に配置されることを可能にするということである。例えば、許容される最終トランジスタ位置は、オリジナル位置、1ピッチだけ左側へ平行移動されたオリジナル位置、又は1ピッチだけ右側へ平行移動されたオリジナル位置のいずれかであり得る。本実施形態は例示的に過ぎなくそして他の制約が使用され得るということに注意すべきである。
【0101】
次に、第2のSMTソルバーにより発見された解が成功であったか否かの判断が行われる(工程1012)。解は、部品のいずれも重畳しなければ、又は短絡回路を生じる接続を必要としなく及び解がすべての入力要件及びユーザ所定領域要件を満足すれば、成功である。
【0102】
制限された配置を有する配置及び配線のSMT問題インスタンスに対する解が成功でなければ、SMT問題配置の別のインスタンスが生成され(工程1012)、第1のSMTソルバーが呼び出され、新しい制限された配置解が生成される(工程1014)。配置の新しい解が成功であれば(すなわち部品又はトランジスタが重畳しなく及び入力及び面積要件が満足されれば)、そして制限された配置を有する配置及び配線の別のSMT問題インスタンスが生成されれば(工程1018)、第2のSMTソルバーが呼び出され、そして新しい解が生成される(工程1020)。
【0103】
解が成功であれば、配線済みセル内トランジスタ及び配置済みセル内トランジスタの両方を含むICのレイアウト1026が、以前に提供されたネットリスト、テンプレート定義及びテクノロジー設計規則を使用することにより生成され(工程1024)、そして出力工程(工程1028)においてユーザインターフェース出力デバイス220を介し設計者へ出力される。
【0104】
制限されたトランジスタ位置決めを有する配置及び配線のSMT問題インスタンスを生成するための方法の最小例が以下の例Dに示される。
【0105】
例D-制限されたトランジスタ運動を有する最小一体化配置及び配線例
このアルゴリズムの目的は、初期順序付けによるネットリストを所与として、ソルバーが初期順序付けをある程度乱すことが許容される一方で配線可能順序付けを発見することである。実際、これは、例Cに示すアルゴリズムを使用することに加えて、許容されたトランジスタ位置に関するいくつかの制約を使用することにより達成される。
【0106】
入力ネットリストの初期順序付けは例Aに示される方法を使用することにより取得され得る。この順序付けから、各トランジスタが許容される範囲に関する制約が一体化配置及び配線アルゴリズムへ追加される。
【0107】
一例として、値T_i_x0が初期順序付けにおいてトランジスタiの位置を表すということを仮定する。トランジスタ位置を制限することが望ましいのでトランジスタは初期位置から1列移動することだけが許容されていれば、以下の制約がソルバーへ追加される:
(assert(and(>=T_1_x(T_1_x0 1))(<=T_1_x(+T_1_x0 1))))
(assert(and(>=T_2_x(T_2_x0 1))(<=T_1_x(+T_2_x0 1))))
(assert(and(>=T_3_x(T_3_x0 1))(<=T_1_x(+T_3_x0 1))))
(assert(and(>=T_4_x(T_4_x0 1))(<=T_1_x(+T_4_x0 1))))
(assert(and(>=T_5_x(T_5_x0 1))(<=T_1_x(+T_5_x0 1))))
(assert(and(>=T_6_x(T_6_x0 1))(<=T_1_x(+T_6_x0 1)))))
【0108】
デュアルハイトセルを順序付ける際、トランジスタはそのセル高が変化しないように制約され得る:
(assert(=T_1_y T_1_y0))
(assert(=T_2_y T_2_y0))
(assert(=T_3_y T_3_y0))
(assert(=T_4_y T_4_y0))
(assert(=T_5_y T_5_y0))
(assert(=T_6_y T_6_y0))
【0109】
代替的に、任意の種類の制約が、適切な追加制約をSMT問題インスタンスへ加えることにより最終順序付けへ適用され得る。
【0110】
いくつかの実施形態では、入力の要件及び所定面積要件を満足する解が発見されると、この解に関係するレイアウトがユーザへ伝達され、本方法は終了し、そしてSMTソルバーは、入力の要件及び所定面積要件を満足する別のより最適な解を発見する試みにおいて再び呼び出されない。
【0111】
他の実施形態では、図10に示すように、配置済みレイアウト1026は、所定数の生成されたレイアウトの1つであり、そして出力工程(工程1028)においてユーザへ出力される。一般的に、これらの実施形態では、レイアウトが生成された(工程1024)後、所望数の結果(すなわちレイアウト)が達成されたかどうかの判断が行われる(工程1030)。所望数の結果又はレイアウトが達成されていなければ、SMT問題の別のインスタンスが生成され(工程1018)、SMTソルバーが呼び出され、そして新しい解が生成される(工程1020)。新しい解が成功すれば(工程1022)(すなわち入力及び所定面積要件を満足すれば)、別のレイアウト1026が生成され(工程1024)、そして出力される(工程1028)。このプロセスは望ましい数のレイアウトが生成されるまで繰り返される。
【0112】
上述の実施形態と同様に、本方法はさらに、生成され出力されたレイアウト1026から最適解を、例えばICに必要とされる面積、レイアウトの複雑度(回路を作製するために必要なマスクの数など)、又はネットリスト又はテクノロジー設計規則に基づき、判断することと、最適解に関係するレイアウトをユーザのために識別することとを含み得る。
【0113】
代替的に、本方法はさらに、生成されたレイアウト1026をランク付けすることと、レイアウトに必要とされる面積、回路を作製するのに必要なマスクの数、及び/又はICの性能を含む所定メトリックに基づき、ランク付けされた解のリストを出力することとを含み得る。
【0114】
IC内のセル内デバイスの配置及び配線のためのEDAツール及びそれを操作する方法のいくつかの実施形態が説明された。本開示は特定例示的実施形態を参照して説明されたが、様々な修正又は変更が本開示のより広い精神及び範囲から逸脱すること無くこれらの実施形態に対しなされ得るということが明らかになる。したがって、本明細書と添付図面は制限的ではなく例示的であると見做されるべきである。
【0115】
本開示の要約書は、読者に技術的開示の1つ又は複数の実施形態を迅速に確かめ得るようにする要約書を必要とするC.F.R.§1.72(b)に適合するように提供される。本開示の要約書は、本特許請求項の範囲又は意味を解釈する又は制限するために使用されないという了解の下に提出される。加えて、前述の「発明を実施するための形態」では、さまざまな特徴が本開示を合理化する目的のために単一の実施形態内に一緒に纏められるということが分かる。本開示のこの方法は、請求実施形態が各請求項に明確に列挙されているものより多くの特徴を必要とするという意図を反映するものとして解釈されてはならない。むしろ、以下の特許請求の範囲が反映するように、本発明主題は、単一の開示された態様のすべての特徴よりも少ないということにある。したがって、以下の特許請求の範囲は、本明細書では「発明を実施するための形態」に組み込まれ、各請求項は別個の実施形態としてそのまま成立する。
【0116】
「一実施形態」又は「実施形態」への本明細書における参照は、当該実施形態に関連して説明される特定機能、構造、又は特徴が本回路又は方法の少なくとも一実施形態に含まれることを意味する。本明細書内の様々な場所における句「一実施形態」の出現は、必ずしもすべてが同一実施形態を指すとは限らない。
図1A
図1B
図1C
図1D
図1E
図2
図3
図4A
図4B
図5
図6A
図6B
図6C
図6D
図7
図8
図9
図10
【国際調査報告】