(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2022-09-12
(45)【発行日】2022-09-21
(54)【発明の名称】半導体集積回路の設計装置及びその設計用プログラム
(51)【国際特許分類】
G06F 30/394 20200101AFI20220913BHJP
G06F 30/3312 20200101ALI20220913BHJP
H01L 21/82 20060101ALI20220913BHJP
【FI】
G06F30/394
G06F30/3312
H01L21/82 B
H01L21/82 C
(21)【出願番号】P 2019125803
(22)【出願日】2019-07-05
【審査請求日】2021-07-19
(73)【特許権者】
【識別番号】391016358
【氏名又は名称】東芝情報システム株式会社
(74)【代理人】
【識別番号】100090169
【氏名又は名称】松浦 孝
(74)【代理人】
【識別番号】100074147
【氏名又は名称】本田 崇
(74)【代理人】
【識別番号】100124497
【氏名又は名称】小倉 洋樹
(72)【発明者】
【氏名】長谷川 智洋
【審査官】堀井 啓明
(56)【参考文献】
【文献】特開平06-310601(JP,A)
【文献】特開平10-308450(JP,A)
【文献】特開平07-086408(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 30/00-30/398
H01L 21/82
(57)【特許請求の範囲】
【請求項1】
半導体集積回路の設計用情報に基づきタイミングエラーを検出するタイミングエラー検出手段と、
前記タイミングエラー検出手段によりタイミングエラーが検出された場合に、ボトルネックとなっている部位の出力側素子に対しサイジングで駆動能力を上げる処理を、素子のサイジングで用意した駆動能力の上限となるまで実行するゲートサイジング手段と、
前記ゲートサイジング手段により素子のサイジングが上限に達すると、ボトルネックとなっている部位の出力側素子と同じ素子を1以上追加して前記出力側素子による多重化配線を行うと共に、必要な場合にボトルネックとなっている部位の入力側素子またはモジュールをグループ分けするグループ分割手段と、
前記グループ分けした素子またはモジュールについて前記半導体集積回路の設計用情報に基づき配線設計を行う配線設計手段とを具備し、
タイミングエラーを検出する前記タイミングエラー検出手段によりタイミングエラーが検出されなくなるまで前記各手段による処理を行うことを特徴とする半導体集積回路の設計装置。
【請求項2】
グループ分割手段は、ファンインの大きい入力側素子群を検出し、この入力側素子群を2以上のグループに分けることを特徴とする請求項1に記載の半導体集積回路の設計装置。
【請求項3】
グループ分割手段は、前記入力側素子またはモジュール間の長い配線長を検出し、グループ分けすることを特徴とする請求項1または2に記載の半導体集積回路の設計装置。
【請求項4】
グループ分割手段は、機能に応じて前記入力側素子またはモジュールのグループ分けを実行することを特徴とする請求項1乃至3のいずれか1項に記載の半導体集積回路の設計装置。
【請求項5】
グループ分割手段は、前記入力側素子またはモジュールの位置に応じてグループ分けを実行することを特徴とする請求項1乃至4のいずれか1項に記載の半導体集積回路の設計装置。
【請求項6】
コンピュータを、
半導体集積回路の設計用情報に基づきタイミングエラーを検出するタイミングエラー検出手段、
前記タイミングエラー検出手段によりタイミングエラーが検出された場合に、ボトルネックとなっている部位の出力側素子に対しサイジングで駆動能力を上げる処理を、素子のサイジングで用意した駆動能力の上限となるまで実行するゲートサイジング手段、
前記ゲートサイジング手段により素子のサイジングが上限に達すると、ボトルネックとなっている部位の出力側素子と同じ素子を1以上追加して前記出力側素子による多重化配線を行うと共に、必要な場合にボトルネックとなっている部位の入力側素子またはモジュールをグループ分けするグループ分割手段、
前記グループ分けした前記入力側素子またはモジュールについて前記半導体集積回路の設計用情報に基づき配線設計を行う配線設計手段として機能させ、
タイミングエラーを検出する前記タイミングエラー検出手段によりタイミングエラーが検出されなくなるまで前記各手段による処理を行うことを特徴とする半導体集積回路の設計用プログラム。
【請求項7】
前記コンピュータを前記グループ分割手段として、ファンインの大きい前記入力側素子群を検出し、この前記入力側素子群を2以上のグループに分けるように機能させることを特徴とする請求項6に記載の半導体集積回路の設計用プログラム。
【請求項8】
前記コンピュータを前記グループ分割手段として、前記入力側素子またはモジュール間の長い配線長を検出し、グループ分けするように機能させることを特徴とする請求項6または7に記載の半導体集積回路の設計用プログラム。
【請求項9】
グループ分割手段は、機能に応じて前記入力側素子またはモジュールのグループ分けを実行することを特徴とする請求項6乃至8のいずれか1項に記載の半導体集積回路の設計用プログラム。
【請求項10】
グループ分割手段は、前記入力側素子またはモジュールの位置に応じてグループ分けを実行することを特徴とする請求項6乃至9のいずれか1項に記載の半導体集積回路の設計用プログラム。
【発明の詳細な説明】
【技術分野】
【0001】
この発明は、半導体集積回路の設計装置及びその設計用プログラムに関するものである。
【背景技術】
【0002】
従来、ロジック回路の設計時には、設計の仕様に沿って回路が動作するかを検査するためにタイミング解析と呼ばれるツールが用いられている。このタイミング解析では、タイミングエラーを検出して、その原因箇所の改善が図られるものである。例えば、タイミングエラーが見つかったクリティカルパスにおいて、その原因が高ファンアウトなどの理由により局所的に高負荷となることで、ボトルネックとなるノードが生じる場合がある。
【0003】
例えば、
図1に示されるように1つのANDゲート11が、6つの素子である論理ゲート(あるいは、バッファ)12-1~12-6に接続している回路があるとする。この場合には、ANDゲート11が6ゲートに接続される高ファンアウトになっているのである。ここでは、ボトルネックのノード13が生じている。この場合には、その素子の出力部分において駆動能力を上げてタイミングパスの最適化を実行することになる。
【0004】
従来の自動配置配線の設計手法としては、主に次の対処方法がある。その1は、特許文献1に示される手法である。この特許文献1においては、
図2に示されるように、そのボトルネックとなっているノード13対し、バッファ14などのドライバを挿入して駆動能力を上げて改善する方法が開示されている。
【0005】
第2の手法としては、
図3に示されるように、第1の手法と同じくドライバの挿入によるものであるが、ファンアウト分割する方法である。即ち、2つのドライバ14-1、14-2を設け、各ドライバのファンアウトをそれぞれ3としている。更に、第3の手法としては、特許文献2に開示の手法がある。この特許文献2の手法は、
図4に示すように、該当となるノードの出力部の素子をサイジングで駆動能力を上げる方法である。この
図4においては、「×1サイズ」のANDゲート11を「×2サイズ」のANDゲート11Aに交換するものである。
【0006】
上記のドライバを挿入する手法(第1の手法、第2の手法)は、ボトルネック部の負荷容量を下げることが可能である。しかしながら、副作用として挿入したドライバ分のセル遅延が加算されてしまう問題がある。また、第3の手法であるサイジングで対応する手法(素子と同意味)は、ドライバを挿入する手法の問題点であるセル遅延量の増加は回避できるが、サイジング用の同ファンクションのセルレパートリーを揃える必要があり、サイジングには上限があることになる。
【0007】
従って、原因が高ファンアウトなどの理由により局所的に高負荷となることによって生じるタイミングエラーが見つかった場合において、ドライバ挿入、サイジングで対処するなどの改善方法では、条件によってはクリティカルパスの改善は行われず、タイミングパスの最適化に至らない場合があった。
【先行技術文献】
【特許文献】
【0008】
【文献】特開2002-312411号公報
【文献】特開2015-210703号公報
【発明の概要】
【発明が解決しようとする課題】
【0009】
本発明は上記の手法による問題点を解決せんとなされたもので、その目的は、局所的に負荷が掛かりボトルネックとなるノードが存在するような場合に、適切にタイミングパスの改善を図ることが可能な半導体集積回路の設計装置を提供することである。
【課題を解決するための手段】
【0010】
本実施形態に係る半導体集積回路の設計装置は、半導体集積回路の設計用情報に基づきタイミングエラーを検出するタイミングエラー検出手段と、前記タイミングエラー検出手段によりタイミングエラーが検出された場合に、ボトルネックとなっている部位の出力側素子に対しサイジングで駆動能力を上げる処理を、素子のサイジングで用意した駆動能力の上限となるまで実行するゲートサイジング手段と、前記ゲートサイジング手段により素子のサイジングが上限に達すると、ボトルネックとなっている部位の出力側素子と同じ素子を1以上追加して前記出力側素子による多重化配線を行うと共に、必要な場合にボトルネックとなっている部位の入力側素子またはモジュールをグループ分けするグループ分割手段と、前記グループ分けした素子またはモジュールについて前記半導体集積回路の設計用情報に基づき配線設計を行う配線設計手段とを具備し、タイミングエラーを検出する前記タイミングエラー検出手段によりタイミングエラーが検出されなくなるまで前記各手段による処理を行うことを特徴とする。
【図面の簡単な説明】
【0011】
【
図1】高ファンアウトなどの理由により局所的に高負荷となることで、ボトルネックとなるノードが生じるロジック回路の一例を示す図。
【
図2】
図1のロジック回路を改善する従来手法(第1)を適用した回路の構成図。
【
図3】
図1のロジック回路を改善する従来手法(第2)を適用した回路の構成図。
【
図4】
図1のロジック回路を改善する従来手法(第3)を適用した回路の構成図。
【
図5】本発明の実施形態に係る半導体集積回路の設計装置のブロック図。
【
図6】本発明の実施形態に係る半導体集積回路の設計装置の内部機能を示すブロック図。
【
図7】本発明の実施形態に係る半導体集積回路の設計装置の動作を示すフローチャート。
【
図8】本発明の実施形態に係る半導体集積回路の設計装置により配線設計された結果を示す回路図。
【
図9】本発明の実施形態に係る半導体集積回路の設計装置により例外的な手法により配線設計された結果を示す回路図。
【
図10】本発明の実施形態に係る半導体集積回路の設計装置により、入力側素子またはモジュール間の長い配線長を検出し、グループ分けする対象の回路図(グループ化前)。
【
図11】本発明の実施形態に係る半導体集積回路の設計装置により、入力側素子またはモジュール間の長い配線長を検出し、グループ分けした対象の回路図(グループ化後)。
【発明を実施するための形態】
【0012】
以下添付図面を参照して、発明の実施形態に係る半導体集積回路の設計装置を説明する。各図において、同一の構成要素には同一の符号を付して重複する説明を省略する。
図5に実施形態に係る半導体集積回路の設計装置100のブロック図を示す。半導体集積回路の設計装置100は、サーバコンピュータ、パーソナルコンピュータ、その他のコンピュータにより構成することができる。
【0013】
半導体集積回路の設計装置100は、CPU101が主メモリ102のプログラムやデータに基づき演算を行うものである。CPU101には、バス103及び外部記憶インタフェース304を介して外部記憶装置104が接続されており、外部記憶装置104には、半導体集積回路の設計用プログラムが記憶されている。CPU101が外部記憶装置104から半導体集積回路の設計用プログラムを主メモリ102へ読み出してこのプログラムを実行することにより半導体集積回路の設計装置100として機能する。
【0014】
バス103には、外部記憶装置104以外に設計用情報供給部インタフェース305を介して半導体集積回路の設計用情報供給部105が接続されている。設計用情報供給部105は、外部の入力装置などから設計用情報を入力して保持するものとすることができ、或いは、外部の何らかの装置等で既に作成された設計用情報を取り込み保持したものとすることができる。更に、クライアントから提供された設計用情報を記憶した媒体がセットされることにより、設計用情報を保持し供給可能となっている装置であっても良い。更に、上記の構成を全て備えたものであっても良い。いずれにしても、CPU101が半導体集積回路の設計用プログラムを実行して設計用情報に基づき設計を行う場合には、設計用情報はこの設計用情報供給部105から供給される。
【0015】
設計用情報としては、設計する半導体集積回路の機能を言語あるいは記号により表した機能記述によるデータ、設計する半導体集積回路の動作仕様を表わす記述によるデータ、セルライブラリなどと称される論理的および物理的なセル情報の集合のデータなど、半導体集積回路の設計に必要なすべてのデータが設計用情報供給部105から供給される。
【0016】
バス103には、出力部インタフェース306を介して結果出力部106が接続されている。結果出力部106は、表示装置やプリンタなど、半導体集積回路の設計装置100において処理した結果を出力する装置とすることができる。また、結果出力部106は、半導体集積回路の設計装置100において処理した結果を記憶する媒体でもよく、更に、回線などを介して処理の依頼者(クライアント)へ処理結果を送信などする装置であっても良い。
【0017】
本実施形態では、外部記憶装置104に記憶されている半導体集積回路の設計用プログラムが実行されることにより、
図6に示される各手段が実現される。即ち、半導体集積回路の設計装置100は、
図6に示されるように、タイミングエラー検出手段201、ゲートサイジング手段202、グループ分割手段203、配線設計手段204を具備している。
【0018】
タイミングエラー検出手段201は、半導体集積回路の設計用情報に基づきタイミングエラーを検出するものである。タイミングエラー検出手段201は、回路接続情報の作成機能、モジュールの配置配線機能、セル配置配線機能、遅延時間算出機能を備えるものとすることができる。回路接続情報の作成機能は、機能記述やセルライブラリを用いて論理合成などを行ない、セルとセルとの接続情報を生成する機能である。モジュールの配置配線機能は、階層設計手法の、上位階層から参照される下位階層のモジュールの形状やモジュールのピン位置を決定する機能、更には、ピン配置位置を決定し、モジュールのピン間を接続する配線の経路を決定する機能である。
【0019】
セル配置配線機能は、モジュール内に存在するセルの配置位置や配線経路を決定する機能である。遅延時間算出機能は、セルの駆動能力、抵抗値、配線容量やピン容量等から、セル間の配線遅延時間の算出、またセルの入力ピンから出力ピンまでの遅延時間(セル遅延時間)を算出する機能である。なお、これらの機能は、タイミングエラー検出手段201が備えることが必須ではなく、個別な手段として実現することもできる。
【0020】
ゲートサイジング手段202は、
図4により説明した「×n(正の整数)サイズ」ゲートを多数用意して、取り換えを行って対応するものである。グループ分割手段203は、タイミングエラー検出手段201によりタイミングエラーが検出された場合に、ボトルネックとなっている部位の出力側素子と同じ素子を1以上追加して前記出力側素子による多重化配線を行うと共に、必要な場合にボトルネックとなっている部位の入力側素子またはモジュールをグループ分けするものである。更に、配線設計手段204は、上記グループ分けした素子またはモジュールについて上記半導体集積回路の設計用情報に基づき配線設計を行うものである。
【0021】
以上の構成を有する半導体集積回路の設計装置の実施形態は、
図7に示すフローチャートに対応するプログラムにより動作を行うので、このフローチャートを参照しながら動作説明を行う。設計用情報は上記の設計用情報供給部105から供給され、外部記憶装置104に記憶されているものとする。
図7のフローチャートのプログラムがスタートとなると、タイミングエラー検出手段201が備える各機能に基づき、回路の設計が行われ、配線遅延時間算出などが行われて、タイミングエラーの検出が行われ(S11)、タイミングエラーの有無が検出される(S12)。
【0022】
ステップS12においてNOとなると、ボトルネックとなるノードの検出を行う(S13)。例えば、ファンインの大きい素子群としての例えば論理ゲートを検出し、この素子群の入力側のノードが検出される。次に、上記ボトルネックとなるノードの出力側の素子のサイジングが上限に達したか否かを検出する(S14)。このステップS14において、NOとなると、該当素子のサイジングを実行して(S15)、ステップS11へ戻って処理を行う。
【0023】
一方、ステップS14において、YESとなると、入力側の各素子が同一モジュール内にあるかを検出する(S16)。このステップS16でYESとなると、入力側の各素子について同一モジュール内の素子同士をグルーピングし、ノード分割する(S17)。この場合に、分割数は素子が存在するモジュール数と同じ数となる。また、出力側には、分割前の出力側の素子と同じ論理演算を行う素子が(分割数-1)個設けられる。
【0024】
具体的には、
図1に示されるように、1つのANDゲート11が、6つの素子である論理ゲート(あるいは、バッファ)12-1~12-6に接続している回路は、
図8に示されるように分割される。即ち、入力側の素子12-1~12-6が2つのモジュール21、22に属しているとする。このため、モジュール21の素子12-1~12-3を1つのグループにまとめ、モジュール22の素子12-4~12-6を1つのグループにまとめる。出力側には、分割前の出力側の素子であるANDゲート11と同じ論理演算を行う素子であるANDゲート11Sが1(分割数2-1=1)個設けられる。
【0025】
ANDゲート11の出力はモジュール21の素子12-1~12-3の入力に接続され、ANDゲート11Sの出力はモジュール22の素子12-4~12-6の入力に接続される。この結果、ANDゲート11のファンアウトが低減され、この素子であるANDゲート11の出力部分において駆動能力を上げてタイミングパスの最適化が図られることが期待される。ステップS17の処理が終了すると、ステップS11へ戻って処理が続けられる。
【0026】
また、ステップS16においてNOへ分岐すると、タイミングエラー検出手段201が備えるセル配置配線機能などにより決定されたセルの配置位置や配線経路の位置情報等である配置情報に基づき、距離が近い素子を同一のグループにまとめ、いくつかのグループを作るように分割を行う(S18)。このステップS18においても、出力側には、分割前の出力側の素子と同じ論理演算を行う素子が(分割数-1)個設けられる。
【0027】
このステップS18の処理によって、ステップS16にて検出したような、入力側の各素子が同一モジュール内にある場合だけでなく、ファンイン側の複数の素子がいくつかのモジュールに分散されているような場合にあっても、素子であるANDゲート11の出力部分において駆動能力を上げてタイミングパスの最適化が図られることが期待される。
【0028】
上記のステップS16、S17、S18における処理がグループ分割手段203と配線設計手段204とによる処理である。本実施形態では、グループ分割手段203がボトルネックとなっている部位の入力側素子またはモジュールをグループ分けする処理を行ったが、このグループ分けする処理を行わなくともよい。つまり、入力側の素子12-1~12-6を2つに分割しなくともよい。
【0029】
上記の結果、回路構成は
図9のようになり、出力側には、分割前の出力側の素子であるANDゲート11と同じ論理演算を行う素子であるANDゲート11Sが1(分割数2-1=1)個設けられる。これによって、ANDゲート11とANDゲート11Sが共同することにより出力部分において駆動能力が上がり、タイミングパスの最適化が図られることが期待される。
【0030】
上記のようなタイミングエラーに対処する例外的な手法は、出力部の素子を重ねて全ての端子を同一ノードに接続して駆動能力を上げる方法である。具体的には
図9に示すように、ANDゲート11に加えて同じ入力信号に対する論理積演算を行うANDゲート11Sを追加してANDゲート11と同じく、6つの論理ゲート(あるいは、バッファ)12-1~12-6の入力側に接続する。しかしながら、この手法では、配線遅延を軽減できないこと、並びに二つ以上の出力の端子が同一ノードでショートする回路構成は、タイミング解析の対象外となってしまうため、自動配置配線の設計においては使用し難いという問題がある。
【0031】
上記実施形態では、グループ分割手段203は、ファンインの大きい入力側素子群を検出し、この入力側素子群を2以上のグループに分けるものであったが、これに加え、または上記動作を行わず、グループ分割手段203は、上記入力側素子またはモジュール間の長い配線長を検出し、グループに分けするものであることができる。このグループ分けを配線長によるグループ分けとすることができる。
【0032】
例えば、
図10に示すように出力側の素子(または、モジュール)30Aの出力信号が素子(または、モジュール)31、32、33、34、35、36へと達する回路の場合において、各素子間が配線41、42、43、44、45、46により接続されているとする。係る回路は、タイミングエラー検出手段201における前述の各機能により設計がなされ、ピン配置位置、配線座標などが得られている。タイミングエラーとして、配線44が予め定められた動作条件に反することや閾値より長いことが検出される。
【0033】
具体的な回路としては、
図1の論理ゲート(あるいは、バッファ)12-1~12-6の入力側を接続している配線が、上記配線41、42、43、44、45、46である。そして、配線44がエラーの原因として検出されたために、入力側素子(または、モジュール)31、32、33、34、35、36が配線44を境に
図11に示すようにグルーピングされる。
【0034】
グループ分けされた論理ゲート(あるいは、バッファ)31~33には、当初から設けられていた出力側素子30Aが接続されている。グループ分けされた論理ゲート(あるいは、バッファ)34~36には、当初から設けられていた出力側素子30Aと同じ素子30Bが接続される。このように配線長が長い位置からグループに分けることにより配線寄生負荷が低減されることが期待され、適切にタイミングパスの改善を図ることが可能となる。
【0035】
上記
図10と
図11により示した構成例は、グループ分割手段203は、上記入力側素子またはモジュールの位置に応じてグループ分けを実行すると考えることができる。2つの素子またはモジュールの配置位置が遠い場合には、配線長が長くなることにつながるからである。更に、グループ分割手段203は、機能に応じて上記入力側素子またはモジュールのグループ分けを実行するようにしても良い。同じ機能の素子やモジュールをグループ化することにより、出力側のファンアウトの能力を、1つの素子やモジュールの場合に対応する場合の何倍とすれば良いか予想や想定することができ、設計に都合が良いからである。
【0036】
上記実施形態の手法の導入により、バッファ挿入によるセル遅延の加算でタイミングパスを余計に悪化させる可能性を除去することができる。また、サイジングで使用する同ファンクションのセルを適当な範囲で用意すれば良いため、限られたセルレパートリーでのタイミングパス改善が可能となる。また、本実施形態の手法によれば配線寄生負荷の低減も可能となるため、最適化実行によるデザインサイズの面積増加を抑制することも期待できる。
【0037】
なお、本実施形態の手法を用いた最適化は現在の自動配置配線ツールでは取り入れられておらず、自動配置配線ツールに本機能を取り入れることで、ロジック回路のレイアウトの品質向上、効率改善につながることが期待できる。
【符号の説明】
【0038】
11、11A、11S ANDゲート
12-1~12-6 論理ゲート(あるいは、バッファ)
13 ノード
14 バッファ(ドライバ)
21、22 モジュール
30A、30B 出力側素子
31~36 素子(または、モジュール)
41~46 配線
100 設計装置
101 CPU
102 主メモリ
103 バス
104 外部記憶装置
105 設計用情報供給部
106 結果出力部
201 タイミングエラー検出手段
202 ゲートサイジング手段
203 グループ分割手段
204 配線設計手段
304 外部記憶インタフェース
305 設計用情報供給部インタフェース
306 出力部インタフェース