JP4805779B2 - 集積回路設計方法、集積回路設計装置及び集積回路設計プログラム - Google Patents

集積回路設計方法、集積回路設計装置及び集積回路設計プログラム Download PDF

Info

Publication number
JP4805779B2
JP4805779B2 JP2006272452A JP2006272452A JP4805779B2 JP 4805779 B2 JP4805779 B2 JP 4805779B2 JP 2006272452 A JP2006272452 A JP 2006272452A JP 2006272452 A JP2006272452 A JP 2006272452A JP 4805779 B2 JP4805779 B2 JP 4805779B2
Authority
JP
Japan
Prior art keywords
block
netlist
chip
level
integrated circuit
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2006272452A
Other languages
English (en)
Other versions
JP2008090695A (ja
Inventor
則之 伊藤
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2006272452A priority Critical patent/JP4805779B2/ja
Priority to US11/785,430 priority patent/US7757188B2/en
Publication of JP2008090695A publication Critical patent/JP2008090695A/ja
Application granted granted Critical
Publication of JP4805779B2 publication Critical patent/JP4805779B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Evolutionary Computation (AREA)
  • Geometry (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Design And Manufacture Of Integrated Circuits (AREA)

Description

本発明は、集積回路を複数のブロックに分割して回路設計を行う集積回路設計方法及びその装置と、その集積回路設計装置の実現に用いられる集積回路設計プログラムとに関し、特に、集積回路全体で最適化する必要がある回路系について、その最適化を効率的に実行できるようにするとともに、集積回路を効率的に設計できるようにする集積回路設計方法及びその装置と、その集積回路設計装置の実現に用いられる集積回路設計プログラムとに関する。
年々大規模化する集積回路の設計では、一般的に階層設計が行われる。この階層設計では、集積回路をいくつかのブロックに分割して、それぞれを独立に並行して設計を進めることで、大規模な集積回路を効率的に設計できるようにしている。
この階層設計では、いくつかの課題があり、その一つにクロック分配回路の設計がある。クロック分配回路では集積回路全体で分配系を最適化するのが理想である。しかしながら、従来の階層設計では、このようなクロック分配回路についても、各ブロック毎に分割して回路設計を行うようにしている。
次に、図14〜18に従って、従来の階層設計により行われるクロック分配回路の回路設計について具体的に説明する。
集積回路を階層設計する場合には、先ず最初に、ブロックを単位にして、フリップフロップやラッチやバッファなどの回路素子の論理的な接続のみについて論理設計を行い、次に、それらの回路素子やブロックの具体的な配置について物理設計を行うことになる。
図14に、階層設計に従って論理設計されたクロック分配回路の一例を図示する。この例では、集積回路を論理ブロックA、論理ブロックB、論理ブロックC、論理ブロックDという4つの論理ブロックに分割してクロック分配回路の論理設計を行うとともに、クロック分配回路を構成するクロックバッファpを論理ブロックDに配置することを想定している。ここで、図中に示す太線は論理ブロック間を接続する論理配線である。
図15〜17に、このときに論理設計されたクロック分配回路のネットリストのデータを図示する。
このネットリストでは、図15(a)の部分で、集積回路のチップがピンckを持ち、クロックckを入力するということについて定義するとともに、論理ブロックDがクロックckを入力するピンck1と、信号w1を出力するピンck2と、信号w1を入力するピンck3とを持ち、論理ブロックAが信号w1を入力するピンckを持ち、論理ブロックBが信号w1を入力するピンckを持ち、論理ブロックCが信号w1を入力するピンckを持つということについて定義することで、チップに配置される論理ブロックの接続関係について定義している。
また、図15(b)の部分で、論理ブロックAがピンckを持ち、クロックckを入力するということについて定義するとともに、図14に示すクロックバッファbuf2i0がクロックckを入力として信号w1を出力し、図14に示すクロックバッファbuf3i1が信号w1を入力として信号w2を出力し、図14に示すクロックバッファbuf3i2が信号w1を入力として信号w3を出力するということについて定義する。
さらに、図15(b)の部分で、フリップフロップffi0(左側のグループの左端に位置するフリップフロップ)が信号w2を入力とするピンckを持ち、フリップフロップffi1(左側のグループの左端から2番目に位置するフリップフロップ)が信号w2を入力とするピンckを持ち、フリップフロップffi2(左側のグループの左端から3番目に位置するフリップフロップ)が信号w2を入力とするピンckを持ち、フリップフロップffi3(左側のグループの右端に位置するフリップフロップ)が信号w2を入力とするピンckを持つということについて定義している。
さらに、図15(b)の部分で、フリップフロップffi4(右側のグループの左端に位置するフリップフロップ)が信号w3を入力とするピンckを持ち、フリップフロップffi5(右側のグループの左端から2番目に位置するフリップフロップ)が信号w3を入力とするピンckを持ち、フリップフロップffi6(右側のグループの左端から3番目に位置するフリップフロップ)が信号w3を入力とするピンckを持ち、フリップフロップffi7 (右側のグループの右端に位置するフリップフロップ)が信号w3を入力とするピンckを持つということについて定義している。
また、図16(c)の部分で、論理ブロックBについて、図15(b)と同様のことについて定義している。
また、図16(d)の部分で、論理ブロックCについて、図15(b)と同様のことについて定義している。
また、図17(e)の部分で、論理ブロックDについて、ピンck1,ck2,ck3を持ち、クロックck1,ck2を入力としてクロックck3を出力するということについて定義するとともに、図15(b)と同様のことについて定義し、さらに、これらに加えて、buf1i0で示されるクロックバッファpについて、クロックck1を入力としてクロックck3を出力するということについて定義している。
集積回路の設計者は、階層設計に従ってクロック分配回路を設計する場合、先ず最初に、各ブロックに配置するクロック回路部分を決めて、それからブロックを単位とする論理設計を行うことで、図15〜17に示すように、ブロックを単位とするクロック分配回路のネットリストを作成し、続いて、図18に示すように、論理ブロックや回路素子の具体的な配置について物理設計を行う。ここで、図中に示す太線は物理ブロック間を接続する物理配線である。
このようにして、従来技術では、階層設計に従って集積回路をいくつかのブロックに分割して設計する場合に、集積回路全体で分配系を最適化するのが理想であるクロック分配回路についても、各ブロック毎に分割して回路設計を行うようにしている。
ここで、下記に示す特許文献1,2では、本発明に関連する技術について開示している。
すなわち、下記に示す特許文献1には、各階層からクロック合成をするのに必要な論理を取り出し、合成されたクロックを分割して各階層に戻すという発明が記載されている。また、下記に示す特許文献2には、各階層を展開した形にしてクロック配線を行い、その結果を見ながら同じような配線を各階層の中で行うという発明が記載されている。
特開2003−316843号公報 特開平8−129576号公報
しかしながら、従来技術に従っていると、集積回路を複数のブロックに分割して回路設計を行うときに、クロック分配回路のような集積回路全体で最適化するのが理想であるような回路系について、その最適化を効率的に実行できないという問題がある。
すなわち、従来技術のように、クロック分配回路を分割して設計するようにしていると、全体を見たスキュー(クロック到達時間の差)などを考慮した最適化が難しいという問題がある。
このように、クロック分配回路のような集積回路全体で最適化するのが理想であるような回路系については、ブロックに分割せずに設計できるようにする必要があるが、従来技術では、このような回路系についてもブロックに分割して設計していることから、集積回路全体で最適化するのが難しいのである。
しかも、従来技術に従っていると、集積回路を複数のブロックに分割して回路設計を行うときに、その回路設計を効率的に実行できないという問題もある。
すなわち、図14に示すように、論理設計時にはクロックバッファpは論理ブロックDに入っているが、物理設計時に、クロックバッファpを別の物理ブロックに入れる必要があるということが判明することが起こる。例えば、図19に示すように、クロックバッファpを物理ブロックAに入れる必要があるということが判明することが起こる。
このようなことが起こると、論理設計でも、クロックバッファpが論理ブロックAに入るように論理修正する必要がある。
このように、従来技術に従っていると、集積回路を複数のブロックに分割して回路設計を行うときに、物理設計の都合での変更が論理修正を伴い、これにより、集積回路を効率的に設計できないという問題もある。
本発明はかかる事情に鑑みてなされたものであって、集積回路を複数のブロックに分割して回路設計を行うときに、集積回路全体で最適化する必要がある回路系について、その最適化を効率的に実行できるようにするとともに、集積回路を効率的に設計できるようにする新たな集積回路設計技術の提供を目的とする。
この目的を達成するために、本発明の集積回路設計装置は、集積回路を複数のブロックに分割して回路設計を行うときにあって、(1)ブロックレベルで設計する回路素子について、同一ブロックに属する回路素子をグループ化し入力ピンを割り付けることで、ブロックレベルのネットリストを作成するブロックレベルネットリスト作成手段と、(2)チップレベルで設計する回路素子について、それらの回路素子の内の配置先ブロックが決められるものについてはそれを明確にしながら、それらの回路素子とブロックレベルネットリスト作成手段の割り付けた入力ピンとについてのチップレベルのネットリストを作成するチップレベルネットリスト作成手段と、(3)チップレベルで設計する回路素子の内の配置先ブロックの決められないものについて、その配置先のブロックを決定する配置先ブロック決定手段と、(4)配置先ブロック決定手段の決定した配置先ブロックの情報に基づいて、チップレベルネットリスト作成手段の作成したチップレベルのネットリストを、ブロックレベルネットリスト作成手段の作成したブロックレベルのネットリストに反映させるとともに、この反映にあたって、反映させるネットリスト部分の持つ構成要素名に対して、チップレベルのネットリストから生成されたことを示すキーワードを付与することで、最終的なブロックレベルのネットリストを作成するネットリスト作成手段とを備える構成を採る。
さらに、本発明の集積回路設計装置は、(5)ブロックレベルで設計する回路素子について、それらの回路素子のブロック上の配置位置を決定するブロックレベル配置位置決定手段と、(6)チップレベルで設計する回路素子について、それらの回路素子のチップ上の配置位置を決定するチップレベル配置位置決定手段と、(7)チップレベル配置位置決定手段の決定したチップ上の回路素子の配置位置の情報を、ブロックレベル配置位置決定手段の決定したブロック上の回路素子の配置位置の情報に反映させるとともに、この反映にあたって、反映させる回路素子の構成要素名として、キーワードを付与した対応の構成要素名を用いることで、最終的な回路素子のブロック上の配置位置を決定する回路素子配置位置決定手段とを備えることがある。
さらに、本発明の集積回路設計装置は、(8)キーワードを付与したネットリストを作成した後に、チップレベルのネットリストが修正された場合に、そのキーワード付与のネットリストからキーワードを持つネットリスト部分を削除して、その修正されたチップレベルのネットリストに基づいて作成されるキーワード付与のネットリスト部分を、その削除したネットリスト部分に置き換えるチップレベル修正対応手段と、(9)キーワードを付与したネットリストが修正された場合に、その修正部分のネットリストからキーワードを削除するとともに、チップレベルのネットリストが持つその修正部分に対応するネットリスト部分を削除して、そのキーワードの削除したネットリスト部分を、その削除したネットリスト部分に置き換えるブロックレベル修正対応手段と、(10)キーワードを付与したネットリストの持つキーワード付与のネットリスト部分と、チップレベルのネットリストとが一致するのか否かを判断する判断手段とを備えることがある。
以上の各処理手段はコンピュータプログラムでも実現できるものであり、このコンピュータプログラムは、適当なコンピュータ読み取り可能な記録媒体に記録して提供されたり、ネットワークを介して提供され、本発明を実施する際にインストールされてCPUなどの制御手段上で動作することにより本発明を実現することになる。
このように構成される本発明の集積回路設計装置では、先ず最初に、集積回路の設計者と対話することでブロックレベルの設計を行って、ブロックレベルで設計する回路素子について、同一ブロックに属する回路素子をグループ化し入力ピンを割り付けることで、ブロックレベルのネットリストを作成する。
そして、ブロックレベルで設計する回路素子について、それらの回路素子のブロック上の配置位置を決定する。
続いて、集積回路の設計者と対話することでチップレベルの設計を行って、チップレベルで設計する回路素子について、それらの回路素子の内の配置先ブロックが決められるものについてはそれを明確にしながら、それらの回路素子とブロックレベルで割り付けられた入力ピンとについてのチップレベルのネットリストを作成する。
そして、チップレベルで設計する回路素子について、それらの回路素子のチップ上の配置位置を決定する。このとき、決定しようとするチップ上の配置位置が配置の許されていない領域にある場合には、最も近くに位置する配置の許されている領域内に移動させることで、その配置位置を決定する。
続いて、チップレベルで設計する回路素子の内の配置先ブロックが決められないものについて、その配置先のブロックを決定する。このとき、その回路素子について決定したチップ上の配置位置に基づいて、その回路素子がどのブロック内に位置するのかを特定することで、その配置先のブロックを決定することがある。
続いて、チップレベルで設計する回路素子の内の配置先ブロックが決められないものについて決定した配置先ブロックの情報に基づいて、チップレベルのネットリストをブロックレベルのネットリストに反映させるとともに、この反映にあたって、反映させるネットリスト部分の持つ構成要素名に対して、チップレベルのネットリストから生成されたことを示すキーワードを付与することで、最終的なブロックレベルのネットリストを作成する。
最後に、チップレベルで設計する回路素子について決定したチップ上の回路素子の配置位置の情報を、ブロックレベルで設計する回路素子について決定したブロック上の回路素子の配置位置の情報に反映させるとともに、この反映にあたって、反映させる回路素子の構成要素名として、キーワードを付与した対応の構成要素名を用いることで、最終的な回路素子のブロック上の配置位置の情報を作成する。
このようにして、本発明の集積回路設計装置では、ブロックレベルのネットリストとチップレベルのネットリストとを分離し、チップレベルのネットリストについては、ブロックを意識しない形で作成できるようにして、そのチップレベルのネットリストに記述される配置先ブロックの決められていない回路素子についてその配置先ブロックを決定すると、その配置先ブロックの情報に基づいて、そのようにして作成したチップレベルのネットリストをブロックレベルのネットリストに反映させることで、最終的なブロックレベルのネットリストを作成するように処理するのである。
この構成に従って、本発明の集積回路設計装置によれば、集積回路の設計者は、チップ全体で最適化する必要があるクロック分配回路のような回路系について、ブロックを意識しない形でネットリストを作成することができるようになることから、その最適化を効率的に実行できるようになる。
しかも、本発明の集積回路設計装置によれば、ブロックレベルのネットリストとチップレベルのネットリストとを変更することなく、チップレベルのネットリストに記述される配置先ブロックの決められていない回路素子についての配置先ブロックを変更することで、新たな最終的なネットリストを作成することができることから、物理設計の都合での変更が論理修正を伴うというようなことが起こらないことで、集積回路を効率的に設計できるようになる。
本発明の集積回路設計装置では、キーワードを付与したネットリストを作成した後に、チップレベルのネットリストが修正されるようなことが起こる。このようなことが起こると整合性が保てなくなる。
そこで、本発明の集積回路設計装置では、キーワードを付与したネットリストを作成した後に、チップレベルのネットリストが修正された場合には、そのキーワード付与のネットリストからキーワードを持つネットリスト部分を削除して、その修正されたチップレベルのネットリストに基づいて作成されるキーワード付与のネットリスト部分を、その削除したネットリスト部分に置き換えるように処理する。
また、本発明の集積回路設計装置では、キーワードを付与したネットリストが修正されることが起こる。このようなことが起こると整合性が保てなくなる。
そこで、本発明の集積回路設計装置では、キーワードを付与したネットリストが修正された場合には、その修正部分のネットリストからキーワードを削除するとともに、チップレベルのネットリストが持つその修正部分に対応するネットリスト部分を削除して、そのキーワードの削除したネットリスト部分を、その削除したネットリスト部分に置き換えるように処理する。
また、本発明の集積回路設計装置では、キーワードを付与したネットリストを作成した後に、チップレベルのネットリストが修正されたり、キーワードを付与したネットリストが修正されることが起こる。このようなことが起こる場合にあって、集積回路の設計者がその整合性を保つための処理を起動することを忘れることがある。
そこで、本発明の集積回路設計装置では、キーワードを付与したネットリストの持つキーワード付与のネットリスト部分と、チップレベルのネットリストとが一致するのか否かを判断する機能を用意している。
本発明によれば、集積回路の設計者は、チップ全体で最適化する必要があるクロック分配回路のような回路系について、ブロックを意識しない形でネットリストを作成することができるようになることから、その最適化を効率的に実行できるようになる。
しかも、本発明によれば、ブロックレベルのネットリストとチップレベルのネットリストとを変更することなく、チップレベルのネットリストに記述される配置先ブロックの決められていない回路素子についての配置先ブロックを変更することで、新たな最終的なネットリストを作成することができることから、物理設計の都合での変更が論理修正を伴うというようなことが起こらないことで、集積回路を効率的に設計できるようになる。
以下、実施の形態に従って本発明を詳細に説明する。
図1に、クロック分配系を設計する本発明を具備する集積回路設計装置1の一実施形態例を図示する。
ここで、以下に説明する実施形態例では、クロックバッファ間のネットの配線や回路素子間のネットの配線を行う機能については説明の便宜上省略している。
この図1に示すように、本実施形態例の集積回路設計装置1は、クロック分配回路の設計者の操作する入出力端末2に接続され、入出力端末2との間の入出力処理を実行する入出力部10と、記憶素子配置手段11と、記憶素子配置情報データベース12と、記憶素子グループ化設定手段13と、記憶素子グループ化情報データベース14と、入力ピン割当手段15と、記憶素子グループ表示手段16と、ネットリスト作成手段17と、ネットリスト情報データベース18と、サイト管理手段19と、クロックバッファ配置手段20と、クロックバッファ配置情報データベース21と、最終ネットリスト作成手段22と、最終ネットリスト情報データベース23と、レイアウトデータ作成手段24と、レイアウトデータ情報データベース25と、チェック手段26と、第1の削除手段27と、第2の削除手段28と、第1の置換手段29と、第1の置換手段30とを備える。
集積回路のチップレベルで定義されたクロック分配系は、チップの入力から供給されるクロックを途中何段かのクロックバッファを経由して、フリップフロップやラッチやRAMなどのクロック同期の記憶素子まで供給する。
チップが階層設計された場合には、これらの記憶素子は分割された各ブロックの中にある。この場合、一般的には各ブロックの入口にクロック入力を作り、そこからブロックの中にクロック分配回路を入れて記憶素子までクロックを分配する。そして、チップレベルでは、チップのクロック入力から各ブロックのクロック入力までクロックを分配する回路のネットリストを作成する。
しかしながら、本来は、クロック分配系はチップ全体で記憶素子までクロックを分配する回路のネットリストを作成して、そのネットリストの中のクロックバッファの配置及びクロックネットの配線をチップレベルで行った方が最適化や配置・配線が効率的なものとなる。
そこで、本実施形態例の集積回路設計装置1は、以下に説明する構成に従って、このことを実現するものである。
〔1〕記憶素子配置手段11の処理
記憶素子配置手段11は、ブロックレベルの処理を行うものであって、クロック分配回路の設計者と対話することで、各ブロックの中にラッチなどの記憶素子を配置して、その配置データを記憶素子配置情報データベース12に格納する。
図2に、記憶素子配置手段11の作成した記憶素子の配置データの一例を図示する。
ここで、この配置データは、図14に示した論理回路に記述される記憶素子を配置することを想定している。また、この配置データでは、各ブロックのローカルな座標系を使って各記憶素子の配置位置を表している。
〔2〕記憶素子グループ化設定手段13の処理
記憶素子グループ化設定手段13は、ブロックレベルの処理を行うものであって、各ブロックの中で同一の最終段クロックバッファからクロック供給を受け取る記憶素子を、
グループ1:記憶素子番号1,・・・・・・・・・
グループ2:記憶素子番号n,・・・・・・・・・


というようにグループ化して、そのグループ化情報を記憶素子グループ化情報データベース14に格納する。
図2の配置データに記述される記憶素子で説明するならば、記憶素子グループ化設定手段13は、例えば、ブロックAのffi0〜ffi3を1つのグループとし、ブロックAのffi4〜ffi7を1つのグループとして設定する。そして、ブロックBのffi0〜ffi3を1つのグループとし、ブロックBのffi4〜ffi7を1つのグループとして設定する。そして、ブロックCのffi0〜ffi3を1つのグループとし、ブロックCのffi4〜ffi7を1つのグループとして設定する。そして、ブロックDのffi0〜ffi3を1つのグループとし、ブロックDのffi4〜ffi7を1つのグループとして設定する。
このグループ化を行う理由は、verilog(ネットリストを記述する言語)の違うブロックにまたがってグループ化を行うとネットリストの記述が複雑になるなどの問題があるからである。
ここで、このグループ化情報については、外部からファイルの形で与えられることもある。
〔3〕入力ピン割当手段15の処理
入力ピン割当手段15は、ブロックレベルの処理を行うものであって、記憶素子グループ化設定手段13の設定した各記憶素子グループに対して、1つの入力ピンを割り当てて、その割り当てたデータを記憶素子グループ化情報データベース14に格納する。
図3に、入力ピン割当手段15の作成した入力ピンの割当データの一例を図示する。
この図3に示すように、入力ピン割当手段15は、例えば、1つのグループとしたブロックAのffi0〜ffi3に対して、クロックckを入力するための入力ピンck1を割り当て、1つのグループとしたブロックAのffi4〜ffi7に対して、クロックckを入力するための入力ピンck2を割り当てる。
そして、入力ピン割当手段15は、例えば、1つのグループとしたブロックBのffi0〜ffi3に対して、クロックckを入力するための入力ピンck1を割り当て、1つのグループとしたブロックBのffi4〜ffi7に対して、クロックckを入力するための入力ピンck2を割り当てる。
そして、入力ピン割当手段15は、例えば、1つのグループとしたブロックCのffi0〜ffi3に対して、クロックckを入力するための入力ピンck1を割り当て、1つのグループとしたブロックCのffi4〜ffi7に対して、クロックckを入力するための入力ピンck2を割り当てる。
そして、入力ピン割当手段15は、例えば、1つのグループとしたブロックDのffi0〜ffi3に対して、クロックckを入力するための入力ピンck1を割り当て、1つのグループとしたブロックDのffi4〜ffi7に対して、クロックckの入力のための入力ピンck2を割り当てる。
この入力ピン割当手段15の処理に従って、図3に示すように、ブロックレベルのネットリストが作成されることになる。
〔4〕記憶素子グループ表示手段16の処理
記憶素子グループ表示手段16は、チップレベルに従って各ブロックを表示画面に表示する際に、記憶素子グループ化設定手段13の設定した各記憶素子グループの配置位置と、そのグループを示す枠(グループ内の記憶素子を囲む最小矩形などの枠)とを表示画面に描画するとともに、この描画にあたって、入力ピン割当手段15の割り当てた入力ピンをその枠位置に描画する。
〔5〕ネットリスト作成手段17の処理
ネットリスト作成手段17は、チップレベルの処理を行うものであって、記憶素子グループ表示手段16の表示する描画データを使って、クロック分配回路の設計者と対話することで、ブロックに属さない形で定義されるクロックバッファと、ブロック内に配置される形で定義されるクロックバッファと、入力ピン割当手段15の割り当てた入力ピン(どのブロックに配置されるのが定義されている)との間の接続関係について規定するチップレベルのネットリストを設計して、ネットリスト情報データベース18に格納する。
すなわち、ネットリスト作成手段17は、チップレベルで記述されるクロック分配回路のネットリストを設計して、ネットリスト情報データベース18に格納するように処理するのである。
図4に、ネットリスト作成手段17が図3に示す入力ピンの割当データに基づいて作成したネットリストの一例を図示する。
この図4に示すネットリストでは、(a)の部分で、チップがピンckを持ち、クロックckを入力するということについて定義するとともに、信号として、w1,w2 A,w3 A,w4 A,w2 B,w3 B,w4 B,w2 C,w3 C,w4 C,w2 D,w3 D,w4 Dというものが用いられることについて定義する。
また、(b)の部分で、ブロックに属さない形で定義されるクロックバッファとして、クロックckを入力として信号w1を出力するクロックバッファbuf1i0があるということについて定義する。
また、(c)の部分で、ブロックAに配置されるクロックバッファとして、信号w1を入力として信号w2 Aを出力するクロックバッファbuf2i1 Aと、信号w2 Aを入力として信号w3 Aを出力するクロックバッファbuf3i2 Aと、信号w2 Aを入力として信号w4 Aを出力するクロックバッファbuf3i3 Aというものがあることについて定義する。
また、(d)の部分で、ブロックBに配置されるクロックバッファとして、信号w1を入力として信号w2 Bを出力するクロックバッファbuf2i1 Bと、信号w2 Bを入力として信号w3 Bを出力するクロックバッファbuf3i2 Bと、信号w2 Bを入力として信号w4 Bを出力するクロックバッファbuf3i3 Bというものがあることについて定義する。
また、(e)の部分で、ブロックCに配置されるクロックバッファとして、信号w1を入力として信号w2 Cを出力するクロックバッファbuf2i1 Cと、信号w2 Cを入力として信号w3 Cを出力するクロックバッファbuf3i2 Cと、信号w2 Cを入力として信号w4 Cを出力するクロックバッファbuf3i3 Cというものがあることについて定義する。
また、(f)の部分で、ブロックDに配置されるクロックバッファとして、信号w1を入力として信号w2 Dを出力するクロックバッファbuf2i1 Dと、信号w2 Dを入力として信号w3 Dを出力するクロックバッファbuf3i2 Dと、信号w2 Dを入力として信号w4 Dを出力するクロックバッファbuf3i3 Dというものがあることについて定義する。
また、(g)の部分で、ブロックAが、信号w3 Aを入力するピンck1(入力ピン割当手段の割り当てた入力ピンck1)と、信号w4 Aを入力するピンck2(入力ピン割当手段の割り当てた入力ピンck2)とを持つということを定義する。そして、ブロックBが、信号w3 Bを入力するピンck1(入力ピン割当手段の割り当てた入力ピンck1)と、信号w4 Bを入力するピンck2(入力ピン割当手段の割り当てた入力ピンck2)とを持つということを定義する。そして、ブロックCが、信号w3 Cを入力するピンck1(入力ピン割当手段の割り当てた入力ピンck1)と、信号w4 Cを入力するピンck2(入力ピン割当手段の割り当てた入力ピンck2)とを持つということを定義する。そして、ブロックDが、信号w3 Dを入力するピンck1(入力ピン割当手段の割り当てた入力ピンck1)と、信号w4 Dを入力するピンck2(入力ピン割当手段の割り当てた入力ピンck2)とを持つということについて定義する。
このように、ブロックレベルの処理を行う記憶素子配置手段11や記憶素子グループ化設定手段13や入力ピン割当手段15では、チップ全体で最適化の要求されるクロックバッファについて取り扱わないようにして、チップレベルの処理を行うネットリスト作成手段17で始めて、そのようなクロックバッファについて取り扱うようにしている。
このようにして、ネットリスト作成手段17は、記憶素子グループ表示手段16の表示する描画データを使って、クロック分配回路の設計者と対話することで、ブロックに属さない形で定義されるクロックバッファと、ブロック内に配置される形で定義されるクロックバッファと、入力ピン割当手段15の割り当てた入力ピンとの間の接続関係について規定するチップレベルのネットリストを設計して、ネットリスト情報データベース18に格納するのである。
〔6〕クロックバッファ配置手段20の処理
クロックバッファ配置手段20は、チップレベルの処理を行うものであって、ネットリスト作成手段17の作成したネットリストで定義されるクロックバッファを処理対象として、クロック分配回路の設計者と対話することで、それらのクロックバッファのチップ上の最適な配置位置を決定するとともに、各ブロックのチップ上の配置位置を決定して、それらの配置データをクロックバッファ配置情報データベース21に格納する。
この配置位置の決定にあたって、クロックバッファ配置手段20は、チップ上の配置の許されている領域(サイト)の情報を管理するサイト管理手段19の管理データを参照することで、クロック分配回路の設計者の指定するクロックバッファの配置位置がチップ上の配置の許されている領域にあるのか否かを判断して、配置の許されていない領域にある場合には、最も近くに位置する配置の許されているサイト内に移動させることで、その配置位置を決定する。
この機能が用意されていることで、クロック分配回路の設計者は、サイトのことを意識することなく、クロックバッファのチップ上の配置位置を決定することができるようになる。
図5に、クロックバッファ配置手段20の作成したクロックバッファの配置データの一例を図示する。
ここで、この配置データでは、チップ上のグローバルな座標系を使って、各クロックバッファの配置位置と各ブロックの配置位置とを表している。
このクロックバッファ配置手段20の処理と、前述した記憶素子配置手段11の処理とに従って、図19に示すようなクロック分配回路についての配置位置が設計されることになる。
前述したように、ネットリスト作成手段17は、クロック分配回路のネットリストを作成する際に、ブロックに属さない形のクロックバッファ(図4中に示すクロックバッファbuf1i0)を定義してネットリストを作成するようにしているが、クロックバッファ配置手段20の処理に従って、図5中の(a)で示すように、このブロックに属さない形のクロックバッファの配置位置が決定され、これにより、この段階で、このクロックバッファがどのブロックに属するのかが決定されることになる。
〔7〕最終ネットリスト作成手段22の処理
クロックバッファ配置手段20の処理に従って、ブロックに属さない形で定義されたクロックバッファが最終的にどこのブロックに属するのかが決定されたので、最終ネットリスト作成手段22は、この決定結果とネットリスト作成手段17の作成したネットリストとに基づいて、クロック分配回路の最終的なネットリスト(全てのクロックバッファがいずれかのブロックに属することが定義されているブロックレベルのネットリスト)を自動作成して、最終ネットリスト情報データベース23に格納する。
この最終的なネットリストの作成処理は、チップレベルのクロック分配回路のネットリストの影を各ブロックに落とすことで実行される。すなわち、チップレベルからブロックレベルへと、ブロックレベルには記載されていないネットリスト情報を反映(射影)することで実行される。
最終ネットリスト作成手段22は、クロックバッファ配置手段20の処理に従ってブロックに重ねて配置されたクロックバッファがその位置にあるブロックに対して影を落とすという判断基準に従って、チップレベルで定義されたクロックバッファとそれらの間のネットとを各ブロックに影を落とすべき部分として決定する。
最終ネットリスト作成手段22は、この決定部分について、verilog のコピーを別の場所に作成して、セルのインスタンス名やネット名には、その先頭に、影であることを示す特別のキーワード(例えば、@from-chip@ )を付与して、影であることを明確にする。ここで、ブロック境界の入力ピン名としては、このピンに接続される影のネット名にさらにピン名に変換されたことを示すキーワードを付与した名前を用いる。
なお、セルのインスタンス名とは、同じ機能を持つセルが複数使われる場合に、それを識別するためのものであり、例えば、buf3i2 Aで説明するならば、buf3がセル名で、i2 Aがインスタンス名となる。
図6〜8に、最終ネットリスト作成手段22の作成したネットリストの一例を図示する。
図6の(a)の部分では、ブロックA,B,C,Dの持つピンを定義しているが、ネットリスト作成手段17によりブロックに属さない形で定義されたクロックバッファが最終的にブロックAに属することが決定されたので、ブロックAについては、図19に示すことからも分かるように、チップレベルのネットリストからの影に従って3つのピン(ブロックの境界部分に設けられるピン)を持つことが定義される。これに対して、ブロックB,C,Dについては、ネットリスト作成手段17によりブロックに属さない形で定義されたクロックバッファから影響を受けることがないので、図19に示すことからも分かるように、チップレベルのネットリストからの影に従って1つのピン(ブロックの境界部分に設けられるピン)を持つことが定義される。
また、図6の(b−1)の部分に示すように、ネットリスト作成手段17によりブロックに属さない形で定義されたクロックバッファが最終的にブロックAに属することが決定されたので、図19に示すことからも分かるように、チップレベルのネットリストからの影に従ってブロックAが4つのクロックバッファを持つことが定義されるとともに、それらの接続関係が定義されることになる。これに対して、ブロックB,C,Dについては、ネットリスト作成手段17によりブロックに属さない形で定義されたクロックバッファからの影響を受けることがないので、図7の(b−2),(b−3)、図8の(b−4)の部分に示すように、チップレベルのネットリストからの影に従ってそれぞれが3つのクロックバッファを持つことが定義される。
図7に示すブロックBのネットリスト部分を具体例にして、最終ネットリスト作成手段22の実行する処理についてさらに説明するならば、ブロックレベルの処理を行う記憶素子グループ化設定手段13及び入力ピン割当手段15の処理に従って、図3に示すように、ブロックBには、ffi0〜ffi3が1つのグループとして設定されてピンck1が割り当てられ、ffi4〜ffi7が1つのグループとして設定されてピンck2が割り当てられて、クロックバッファについて存在しないということが定義されている。
このとき、最終ネットリスト作成手段22は、ネットリスト作成手段17の作成した図4に示すネットリストに基づいて、クロックバッファについて記述する図4の(a)(d)の部分を影として落とす必要があると判断して、図7に示すブロックBのネットリスト部分に示すように、影であることを示す特別のキーワードである“@from-chip@ ”を付与して、この部分を影として落とすのである。
最終ネットリスト作成手段22により作成された最終的なネットリストは、影であることを示す特別のキーワードである“@from-chip@ ”が付与されていることを除けば、結局のところ従来技術の論理設計で作成されたブロックレベルのネットリストと変わるところはない。
ただ、本発明では、ネットリスト作成手段17がブロックに属さない形でクロックバッファの一部を定義しつつチップレベルのネットリストを作成して、クロックバッファ配置手段20がそれらのクロックバッファのチップ上の最適な配置位置を決定すると、最終ネットリスト作成手段22がその決定結果に基づいて、その段階で、それらのクロックバッファについてのネットリスト部分を入力ピン割当手段15により作成されたブロックレベルのネットリストに組み込むことで、最終的なネットリストを自動作成するという点に大きな特徴がある。
この構成を採ることで、クロック分配回路の設計者は、例えば、最初はあるクロックバッファをブロックAに配置するように決定したが、スキューなどの観点からブロックBに配置した方のがよいということが分かった場合に、そのクロックバッファをブロックAに配置することで作成したネットリストを破棄して、そのクロックバッファの配置位置をブロックBに変えて最終ネットリスト作成手段22を起動するだけで、所望のネットリストを得ることができるようになる。
ここで、影のネットリストを各ブロックに実際に入れ込むために、最終ネットリスト作成手段22は、具体的には、次のような内部処理を行う。
すなわち、各ブロックのデータ(ネットリスト及びレイアウトデータで構成される)から、verilog ネットリスト及びレイアウトデータ(セル配置情報や配線情報など)をテキスト形式で出力して、その出力したverilog ネットリストに影のネットリストをマージする。そして、このマージしたネットリストから再度各ブロックのデータを作成して、そこにさらにテキストとして出力したレイアウトデータを書き込むという内部処理を行う。
〔8〕レイアウトデータ作成手段24の処理
最終ネットリスト作成手段22の処理に従って最終的なネットリストが作成されると、レイアウトデータ作成手段24は、各ブロックのレイアトデータに対して影のレイアウトデータを落とすことで、影のレイアウトデータのマージされたレイアウトデータを作成して、レイアウトデータ情報データベース25に格納する。
このとき、レイアウトデータ作成手段24は、最終ネットリスト作成手段22と同様に、クロックバッファのインスタンス名やネット名を、影のネットリストの名前に対応した名前に変更して下位の階層に落とすように処理する。
図9に、レイアウトデータ作成手段24の作成したレイアウトデータの一例を図示する。
ここで、このレイアウトデータでは、チップ上のグローバルな座標系を使って、各記憶素子及び各クロックバッファの配置位置と各ブロックの配置位置とを表している。
この図9に示すように、レイアウトデータ作成手段24は、記憶素子配置手段11の作成した図2に示す記憶素子の配置データに対して、クロックバッファ配置手段20の決定した図5に示すクロックバッファの配置データを、“@from-chip@ ”を付与しながら影のデータとして落とすのである。
このレイアウトデータ作成手段24の処理に従って、影のネットリストと影のレイアウトデータとが結び付けられ(この結び付けられたデータがブロックのデータとなる)、これにより、クロック分配回路の設計者は、下位のブロックにおいて影の設計情報をあたかも実体としての設計情報として見ることができるようになる。
ここで、影のレイアウトデータを各ブロックに実際に入れ込むために、レイアウトデータ作成手段24は、具体的には、次のような内部処理を行う。
すなわち、各ブロックのデータから一度レイアウトデータを出力し、その出力したレイアウトデータに影のレイアウトデータをマージして、再度ブロックの中に読み込ませることで行う。
〔9〕チェック手段26の処理
チェック手段26は、チップレベルのネットリストと、ブロックレベルのネットリストにマージされたキーワード付与のネットリスト部分(影のネットリスト部分)との間に矛盾がないのか否かの検証を行う。
クロック分配回路の設計者は、ブロックレベルのネットリストにマージされたキーワード付与のネットリスト部分とは関係なく、チップレベルのネットリストを変更することが可能であり、また、チップレベルのネットリストに関係なく、ブロックレベルのネットリストにマージされたキーワード付与のネットリスト部分を変更することが可能であることから、本実施形態例の集積回路設計装置1では、この2つの間に矛盾がないのか否かの検証を行うチェック手段26を用意している。
図10に、チェック手段26の実行する処理フローを図示する。
ここで、処理フロー中に記載する「マークのついたネット」とは、ブロック境界に位置する入力ピンに対応付けられるネットを意味しており、この処理フローでは、このネットを起点にして、そこから先のブロック内のネットリスト部分を比較することになる。
チェック手段26は、この図10に示す処理フローに従い、深さ優先探索(depth-first-search)を使って2つのネットリストのツリー構造を辿って比較することで、チップレベルのネットリストと、ブロックレベルのネットリストにマージされたキーワード付与のネットリスト部分(影のネットリスト部分)との間に矛盾がないのか否かの検証を行うように処理する。
〔10〕第1の削除手段27、第2の削除手段28、第1の置換手段29及び第2の置換手段30の処理
第1の削除手段27は、最終ネットリスト作成手段22により作成されたキーワード付与のネットリストを削除対象として、そのキーワード付与のネットリスト(影のネットリスト)から、キーワードを持つネットリスト部分を削除する処理を行う。
第2の削除手段28は、ネットリスト作成手段17により作成されたネットリスト(チップレベルのネットリスト)を削除対象として、そのネットリストから、キーワード付与のネットリスト部分に対応付けられるネットリスト部分を削除する処理を行う。
第1の置換手段29は、最終ネットリスト作成手段22により作成される新たな影のネットリスト部分を、第1の削除手段27の削除したネットリスト部分の代わりとして置き換える処理を行う。
第2の置換手段30は、ネットリスト作成手段17により作成されたネットリストと関係なく変更されたキーワード付与のネットリスト部分からキーワードを削除して、そのキーワード削除のネットリスト部分を、第2の削除手段28の削除したネットリスト部分の代わりとして置き換える処理を行う。
本実施形態例の集積回路設計装置1が、第1の削除手段27、第2の削除手段28、第1の置換手段29及び第2の置換手段30を備えるのは、次のような理由による。
チップレベルでネットリストが修正された場合、その修正をブロックレベルのネットリストの持つキーワード付与のネットリスト部分(影のネットリスト部分)に反映する必要がある。
この反映処理は次のように行われる。すなわち、先ず最初に、各ブロックのデータから、 verilogネットリスト及びレイアウトデータをテキスト形式で出力する。続いて、第1の削除手段27を使って、出力したネットリストから影のネットリストを削除する。影のネットリストについては、インスタンス名とネット名に対して影であることを識別可能とするキーワードが付与されているので、その部分を認識して削除する。
この削除した状態は、影を落とす前の状態と同じになることから、続いて、前述した手順に従って各ブロックのデータを作成する。続いて、第1の置換手段29を使って、チップレベルで修正されたネットリストを下位の各ブロックの影のネットリスト部分(削除したネットリスト部分)と置き換える。
このようにして、第1の削除手段27及び第1の置換手段29を備えることで、チップレベルでネットリストが修正された場合に、その修正をブロックレベルのネットリストに反映することができるようになる。
また、下位のブロックに落ちている影のネットリストについては、影と識別できるキーワードがインスタンス名やネット名についているだけなので、通常の verilogネットリストと形式は同じである。これから、この影のネットリストを、ブロックの設計を担当する設計者がブロック内で最適化するために修正することが可能である。
レイアウトデータと一緒になったブロックのデータに対して影のネットリストを修正する場合には、別に保存しておいた影のネットリストを修正するか、ブロックのデータから一度 verilog形式の影のネットリストを出力して修正するという方法があるが、いずれの方法を使うにしても、ブロック内の影のネットリストの原本はチップレベルのネットリストであるので、この原本に影のネットリストの変更部分を反映しなければならない。
この反映処理は次のように行われる。すなわち、先ず最初に、修正された影のネットリストを持つブロックを特定して、そのブロックの持つ境界部分の入力ピンを特定する。この入力ピンから先のブロック内のネットリスト部分が修正されたことを意味する。
続いて、その入力ピンに対応付けられる原本のネットリスト位置を特定して、第2の削除手段28を使って、その特定したネットリスト位置から先のネットリスト部分を削除する。続いて、第2の置換手段30を使って、先に特定した入力ピンから先のブロック内のネットリスト部分からキーワードを削除して、そのキーワード削除のネットリスト部分を、第2の削除手段28の削除したネットリスト部分の代わりとして接続する。
このようにして、第2の削除手段28及び第2の置換手段30を備えることで、影のネットリストが修正された場合に、その修正を原本のネットリストに反映することができるようになる。
〔11〕集積回路設計装置1の処理
図11〜13に、本実施形態例の集積回路設計装置1の実行する処理フローを図示する。
次に、この処理フローに従って、図1のように構成される本実施形態例の集積回路設計装置1の実行する処理について説明する。
本実施形態例の集積回路設計装置1は、集積回路の設計要求に応答して起動されると、図11の処理フローに示すように、先ず最初に、ステップS10で、集積回路の設計者と対話することで、集積回路を分割する各ブロックのサイズ及び形状を決定して、各ブロックの配置位置を決定する。
続いて、ステップS11で、集積回路の設計者と対話することで、クロック分配回路以外の回路素子について、同一ブロックに属する回路素子をグループ化し入力ピンを割り付けることで、ブロックレベルのネットリストを作成する。
続いて、ステップS12で、集積回路の設計者と対話することで、クロック分配回路以外の回路素子について、それらの回路素子のブロック上の配置位置を決定する。
続いて、ステップS13で、集積回路の設計者と対話することで、クロック分配回路のクロックバッファについて、配置先ブロックが決められるものについてはそれを明確にしながら、それらのクロックバッファと同一回路素子グループに割り付けた入力ピンとについてのチップレベルのネットリストを作成する。
続いて、ステップS14で、集積回路の設計者と対話することで、クロック分配回路のクロックバッファについて、それらのクロックバッファのブロック上の配置位置を決定する。
続いて、ステップS15で、ステップS10で決定した各ブロックのサイズ・形状・配置位置と、ステップS14で決定したクロックバッファのブロック上の配置位置とに基づいて、配置先ブロックが決められていないクロックバッファについて、その配置先ブロックを決定する。
続いて、ステップS16で、ブロックに重ねて配置されたクロックバッファがその位置にあるブロックに対して影を落とすという判断基準に従って、チップレベルのネットリストの影を各ブロックに落とす。
続いて、ステップS17で、チップレベルのレイアウト情報の影を各ブロックに落として、処理を終了する。
このようにして、本実施形態例の集積回路設計装置1は、集積回路の設計情報として、図6〜8に示すようなネットリストと、図9に示すようなレイアウトデータとを作成するのである。
次に、図12の処理フローに従って、チップレベルでネットリストが修正された場合に、本実施形態例の集積回路設計装置1の実行する処理について説明する。
本実施形態例の集積回路設計装置1は、チップレベルのネットリストの修正要求に応答して起動されると、図12の処理フローに示すように、先ず最初に、ステップS20で、集積回路の設計者と対話することで、クロック分配回路についてのチップレベルのネットリストを修正する。
続いて、ステップS21で、集積回路の設計者と対話することで、チップレベルで変更になったクロックバッファの配置位置を変更する。
続いて、ステップS22で、各ブロックのサイズ・形状・配置位置と、ステップS21で変更したクロックバッファのブロック上の配置位置とに基づいて、配置位置の変更になったクロックバッファについて、その配置先ブロックを決定する。
続いて、ステップS23で、各ブロックへと影を落としているネットリスト部分を全て削除する。
続いて、ステップS24で、ブロックに重ねて配置されたクロックバッファがその位置にあるブロックに対して影を落とすという判断基準に従って、修正したチップレベルのネットリストの影を各ブロックに落とす。
続いて、ステップS25で、修正したチップレベルのレイアウト情報の影を各ブロックに落として、処理を終了する。
このようにして、本実施形態例の集積回路設計装置1は、チップレベルでネットリストが修正された場合に、その修正をブロックレベルのネットリストに反映するように処理するのである。
次に、図13の処理フローに従って、ブロック内に配置を終えたクロックバッファのネットリストが修正された場合に、本実施形態例の集積回路設計装置1の実行する処理について説明する。
本実施形態例の集積回路設計装置1は、ブロック内に配置を終えたクロック分配回路のネットリストの修正要求に応答して起動されると、図13の処理フローに示すように、先ず最初に、ステップS30で、集積回路の設計者と対話することで、クロック分配回路についての影のネットリストをブロック内で修正する。
続いて、ステップS31で、修正したブロック内の影のネットリストから、影であることを示すキーワードを削除することで、そのネットリスト部分を原本のネットリスト表現に変換する。
続いて、ステップS32で、チップレベルのネットリスト(原本)の論理の中で、ステップS30で修正した影の論理に相当するネットリスト部分を特定して、削除する。
続いて、ステップS33で、ステップS32で削除したチップレベルのネットリスト部分の代わりに、ブロック内の影のネットリストから変換したネットリスト部分(ステップS31の削除処理により得たネットリスト部分)を接続して、処理を終了する。
このようにして、本実施形態例の集積回路設計装置1は、影のネットリストが修正された場合に、その修正を原本のネットリストに反映するように処理するのである。
本発明は、集積回路を複数のブロックに分割して回路設計を行う場合に適用できるものであり、集積回路全体で最適化する必要がある回路系について、その最適化を効率的に実行できるようになる。
(付記1)集積回路を複数のブロックに分割して回路設計を行う集積回路設計方法であって、ブロックレベルで設計する回路素子について、同一ブロックに属する回路素子をグループ化し入力ピンを割り付けることで、ブロックレベルのネットリストを作成する過程と、チップレベルで設計する回路素子について、それらの回路素子の内の配置先ブロックが決められるものについてはそれを明確にしながら、それらの回路素子と前記入力ピンとについてのチップレベルのネットリストを作成する過程と、チップレベルで設計する回路素子の内の配置先ブロックが決められないものについて、その配置先のブロックを決定する過程と、前記決定した配置先ブロックの情報に基づいて、前記チップレベルのネットリストを前記ブロックレベルのネットリストに反映させるとともに、この反映にあたって、反映させるネットリスト部分の持つ構成要素名に対して、チップレベルのネットリストから生成されたことを示すキーワードを付与することで、最終的なブロックレベルのネットリストを作成する過程とを備えることを、特徴とする集積回路設計方法。
(付記2)付記1に記載の集積回路設計方法において、チップレベルで設計する回路素子について、それらの回路素子のチップ上の配置位置を決定する過程を備え、前記配置先ブロックを決定する過程では、前記決定したチップ上の配置位置に基づいて、チップレベルで設計する回路素子の内の配置先ブロックが決められないものについて、その配置先のブロックを決定することを、特徴とする集積回路設計方法。
(付記3)付記1に記載の集積回路設計方法において、ブロックレベルで設計する回路素子について、それらの回路素子のブロック上の配置位置を決定する過程と、チップレベルで設計する回路素子について、それらの回路素子のチップ上の配置位置を決定する過程と、前記決定したチップ上の回路素子の配置位置の情報を、前記決定したブロック上の回路素子の配置位置の情報に反映させるとともに、この反映にあたって、反映させる回路素子の構成要素名として、前記キーワードを付与した対応の構成要素名を用いることで、最終的な回路素子のブロック上の配置位置の情報を作成する過程とを備えることを、特徴とする集積回路設計方法。
(付記4)付記2又は3に記載の集積回路設計方法において、前記チップ上の配置位置を決定する過程では、その配置位置が配置の許されていない領域にある場合には、最も近くに位置する配置の許されている領域内に移動させることで、その配置位置を決定することを、特徴とする集積回路設計方法。
(付記5)付記1ないし4のいずれか1項に記載の集積回路設計方法において、キーワードを付与したネットリストを作成した後に、チップレベルのネットリストが修正された場合に、そのキーワード付与のネットリストからキーワードを持つネットリスト部分を削除して、その修正されたチップレベルのネットリストに基づいて作成されるキーワード付与のネットリスト部分を、その削除したネットリスト部分に置き換える過程を備えることを、特徴とする集積回路設計方法。
(付記6)付記1ないし5のいずれか1項に記載の集積回路設計方法において、キーワードを付与したネットリストが修正された場合に、その修正部分のネットリストからキーワードを削除するとともに、チップレベルのネットリストが持つその修正部分に対応するネットリスト部分を削除して、そのキーワードの削除したネットリスト部分を、その削除したネットリスト部分に置き換える過程を備えることを、特徴とする集積回路設計方法。
(付記7)付記1ないし6のいずれか1項に記載の集積回路設計方法において、キーワードを付与したネットリストの持つキーワード付与のネットリスト部分と、チップレベルのネットリストとが一致するのか否かを判断する過程を備えることを、特徴とする集積回路設計方法。
(付記8)集積回路を複数のブロックに分割して回路設計を行う集積回路設計装置であって、ブロックレベルで設計する回路素子について、同一ブロックに属する回路素子をグループ化し入力ピンを割り付けることで、ブロックレベルのネットリストを作成する手段と、チップレベルで設計する回路素子について、それらの回路素子の内の配置先ブロックが決められるものについてはそれを明確にしながら、それらの回路素子と前記入力ピンとについてのチップレベルのネットリストを作成する手段と、チップレベルで設計する回路素子の内の配置先ブロックが決められないものについて、その配置先のブロックを決定する手段と、前記決定した配置先ブロックの情報に基づいて、前記チップレベルのネットリストを前記ブロックレベルのネットリストに反映させるとともに、この反映にあたって、反映させるネットリスト部分の持つ構成要素名に対して、チップレベルのネットリストから生成されたことを示すキーワードを付与することで、最終的なブロックレベルのネットリストを作成する手段とを備えることを、特徴とする集積回路設計装置。
(付記9)付記8に記載の集積回路設計装置において、チップレベルで設計する回路素子について、それらの回路素子のチップ上の配置位置を決定する手段を備え、前記配置先ブロックを決定する手段は、前記決定したチップ上の配置位置に基づいて、チップレベルで設計する回路素子の内の配置先ブロックが決められないものについて、その配置先のブロックを決定することを、特徴とする集積回路設計装置。
(付記10)付記8に記載の集積回路設計装置において、ブロックレベルで設計する回路素子について、それらの回路素子のブロック上の配置位置を決定する手段と、チップレベルで設計する回路素子について、それらの回路素子のチップ上の配置位置を決定する手段と、前記決定したチップ上の回路素子の配置位置の情報を、前記決定したブロック上の回路素子の配置位置の情報に反映させるとともに、この反映にあたって、反映させる回路素子の構成要素名として、前記キーワードを付与した対応の構成要素名を用いることで、最終的な回路素子のブロック上の配置位置の情報を作成する手段とを備えることを、特徴とする集積回路設計装置。
(付記11)集積回路を複数のブロックに分割して回路設計を行う集積回路設計装置の実現に用いられる集積回路設計プログラムであって、コンピュータを、ブロックレベルで設計する回路素子について、同一ブロックに属する回路素子をグループ化し入力ピンを割り付けることで、ブロックレベルのネットリストを作成する手段と、チップレベルで設計する回路素子について、それらの回路素子の内の配置先ブロックが決められるものについてはそれを明確にしながら、それらの回路素子と前記入力ピンとについてのチップレベルのネットリストを作成する手段と、チップレベルで設計する回路素子の内の配置先ブロックが決められないものについて、その配置先のブロックを決定する手段と、前記決定した配置先ブロックの情報に基づいて、前記チップレベルのネットリストを前記ブロックレベルのネットリストに反映させるとともに、この反映にあたって、反映させるネットリスト部分の持つ構成要素名に対して、チップレベルのネットリストから生成されたことを示すキーワードを付与することで、最終的なブロックレベルのネットリストを作成する手段として機能させるための集積回路設計プログラム。
(付記12)コンピュータを、さらに、チップレベルで設計する回路素子について、それらの回路素子のチップ上の配置位置を決定する手段として機能させ、前記配置先ブロックを決定する手段は、前記決定したチップ上の配置位置に基づいて、チップレベルで設計する回路素子の内の配置先ブロックが決められないものについて、その配置先のブロックを決定する付記11に記載の集積回路設計プログラム。
(付記13)コンピュータを、さらに、ブロックレベルで設計する回路素子について、それらの回路素子のブロック上の配置位置を決定する手段と、チップレベルで設計する回路素子について、それらの回路素子のチップ上の配置位置を決定する手段と、前記決定したチップ上の回路素子の配置位置の情報を、前記決定したブロック上の回路素子の配置位置の情報に反映させるとともに、この反映にあたって、反映させる回路素子の構成要素名として、前記キーワードを付与した対応の構成要素名を用いることで、最終的な回路素子のブロック上の配置位置の情報を作成する手段として機能させるための付記11に記載の集積回路設計プログラム。
本発明の集積回路設計装置の一実施形態例である。 記憶素子配置手段の作成した記憶素子の配置データの一例を示す図である。 入力ピン割当手段の作成した入力ピンの割当データの一例を示す図である。 ネットリスト作成手段の作成したネットリストの一例を示す図である。 クロックバッファ配置手段の作成したクロックバッファの配置データの一例を示す図である。 最終ネットリスト作成手段の作成したネットリストの一例を示す図である。 最終ネットリスト作成手段の作成したネットリストの一例を示す図である。 最終ネットリスト作成手段の作成したネットリストの一例を示す図である。 レイアウトデータ作成手段の作成したレイアウトデータの一例を示す図である。 チェック手段の実行する処理フローである。 集積回路設計装置の実行する処理フローである。 集積回路設計装置の実行する処理フローである。 集積回路設計装置の実行する処理フローである。 論理設計されたクロック分配回路の説明図である。 従来技術で作成されるクロック分配回路のネットリストの説明図である。 従来技術で作成されるクロック分配回路のネットリストの説明図である。 従来技術で作成されるクロック分配回路のネットリストの説明図である。 物理設計されたクロック分配回路の説明図である。 従来技術の問題を説明するためのクロック分配回路の説明図である。
符号の説明
1 集積回路設計装置
2 入出力端末
10 入出力部
11 記憶素子配置手段
12 記憶素子配置情報データベース
13 記憶素子グループ化設定手段
14 記憶素子グループ化情報データベース
15 入力ピン割当手段
16 記憶素子グループ表示手段
17 ネットリスト作成手段
18 ネットリスト情報データベース
19 サイト管理手段
20 クロックバッファ配置手段
21 クロックバッファ配置情報データベース
22 最終ネットリスト作成手段
23 最終ネットリスト情報データベース
24 レイアウトデータ作成手段
25 レイアウトデータ情報データベース
26 チェック手段
27 第1の削除手段
28 第2の削除手段
29 第1の置換手段
30 第2の置換手段

Claims (8)

  1. 集積回路を複数のブロックに分割して回路設計を行う集積回路設計方法であって,
    同一ブロックに属する記憶素子について設計者がグループ化した記憶素子のグループごとにクロック信号を入力するクロック入力ピンを割り付けることで,ブロックレベルのネットリストを作成する過程と,
    各ブロック内の記憶素子のグループごとに割り付けられたクロック入力ピンの各々に,クロック分配回路を構成する回路素子の一つを対応付けて接続したチップレベルのネットリストを作成する過程と,
    前記チップレベルのネットリスト中の前記回路素子について設計者が配置した配置位置の情報と,各ブロックの配置領域の情報とに基づいて,前記チップレベルのネットリストに含まれる前記回路素子が存在する配置領域のブロックを配置先ブロック決定する過程と,
    定した配置先ブロックの情報に基づいて,前記チップレベルのネットリストに含まれる前記回路素子の情報を前記ブロックレベルのネットリストに反映させるとともに,前記ブロックレベルのネットリストに反映させた前記チップレベルのネットリストに含まれる前記回路素子のネットリスト部分の持つ構成要素名に対して,チップレベルのネットリストから生成されたことを示すキーワードを付与することで,クロック設計後のブロックレベルのネットリストを作成する過程とをコンピュータが実行することを,
    特徴とする集積回路設計方法。
  2. 請求項1に記載の集積回路設計方法において,
    チップレベルで設計するクロック分配回路を構成する回路素子のチップ上の配置位置を決定する過程と,
    前記決定したチップ上の前記回路素子の配置位置の情報を,当該回路素子の配置先ブロック上の配置位置の情報に反映させるとともに,反映させる回路素子の構成要素名として,前記キーワードを付与した対応の構成要素名を用いることで,クロック設計後の前記回路素子のブロック上の配置位置の情報を作成する過程とを備えることを,
    特徴とする集積回路設計方法。
  3. 請求項に記載の集積回路設計方法において,
    前記チップ上の前記回路素子の配置位置を決定する過程では,当該回路素子の配置位置が配置の許されていない領域にある場合には,最も近くに位置する配置の許されている領域内に移動させることで,当該回路素子の配置位置を決定することを,
    特徴とする集積回路設計方法。
  4. 請求項1ないし3のいずれか1項に記載の集積回路設計方法において,
    前記クロック設計後のブロックレベルのネットリストを作成した後に,チップレベルのネットリストが修正された場合に,当該ブロックレベルのネットリストから前記キーワードを持つネットリスト部分を削除して,修正されたチップレベルのネットリストに基づいて当該ブロックレベルのネットリストに反映させる当該チップレベルの前記回路素子のネットリスト部分にキーワードを付与して,当該ブロックレベルのネットリストから削除したネットリスト部分に置き換える過程を備えることを,
    特徴とする集積回路設計方法。
  5. 請求項1ないし4のいずれか1項に記載の集積回路設計方法において,
    前記クロック設計後のブロックレベルのネットリストに含まれるキーワードを付与したネットリスト部分が修正された場合に,当該ブロックレベルのネットリストの修正部分に対応するチップレベルのネットリストの対応部分を削除して,当該ブロックレベルのネットリストの修正部分から前記キーワードを削除した修正部分を,チップレベルのネットリストから削除したネットリスト部分に置き換える過程を備えることを,
    特徴とする集積回路設計方法。
  6. 請求項1ないし5のいずれか1項に記載の集積回路設計方法において,
    前記クロック設計後のブロックレベルのネットリストに含まれるキーワードを付与したネットリストの持つキーワード付与のネットリスト部分と,チップレベルのネットリストの対応部分とが一致するのか否かを判断する過程を備えることを,
    特徴とする集積回路設計方法。
  7. 集積回路を複数のブロックに分割して回路設計を行う集積回路設計装置であって,
    同一ブロックに属する記憶素子について設計者がグループ化した記憶素子のグループごとにクロック信号を入力するクロック入力ピンを割り付けることで,ブロックレベルのネットリストを作成する手段と,
    各ブロック内の記憶素子のグループごとに割り付けられたクロック入力ピンの各々に,クロック分配回路を構成する回路素子の一つを対応付けて接続したチップレベルのネットリストを作成する手段と,
    前記チップレベルのネットリスト中の前記回路素子について設計者が配置した配置位置の情報と,各ブロックの配置領域の情報とに基づいて,前記チップレベルのネットリストに含まれる前記回路素子が存在する配置領域のブロックを配置先ブロックと決定する手段と,
    決定した配置先ブロックの情報に基づいて,前記チップレベルのネットリストに含まれる前記回路素子の情報を前記ブロックレベルのネットリストに反映させるとともに,前記ブロックレベルのネットリストに反映させた前記チップレベルのネットリストに含まれる前記回路素子のネットリスト部分の持つ構成要素名に対して,チップレベルのネットリストから生成されたことを示すキーワードを付与することで,クロック設計後のブロックレベルのネットリストを作成する手段とを備えることを,
    特徴とする集積回路設計装置。
  8. 集積回路を複数のブロックに分割して回路設計を行う集積回路設計装置の実現に用いられる集積回路設計プログラムであって,
    コンピュータを,
    同一ブロックに属する記憶素子について設計者がグループ化した記憶素子のグループごとにクロック信号を入力するクロック入力ピンを割り付けることで,ブロックレベルのネットリストを作成する手段と,
    各ブロック内の記憶素子のグループごとに割り付けられたクロック入力ピンの各々に,クロック分配回路を構成する回路素子の一つを対応付けて接続したチップレベルのネットリストを作成する手段と,
    前記チップレベルのネットリスト中の前記回路素子について設計者が配置した配置位置の情報と,各ブロックの配置領域の情報とに基づいて,前記チップレベルのネットリストに含まれる前記回路素子が存在する配置領域のブロックを配置先ブロックと決定する手段と,
    決定した配置先ブロックの情報に基づいて,前記チップレベルのネットリストに含まれる前記回路素子の情報を前記ブロックレベルのネットリストに反映させるとともに,前記ブロックレベルのネットリストに反映させた前記チップレベルのネットリストに含まれる前記回路素子のネットリスト部分の持つ構成要素名に対して,チップレベルのネットリストから生成されたことを示すキーワードを付与することで,クロック設計後のブロックレベルのネットリストを作成する手段として機能させるための集積回路設計プログラム。
JP2006272452A 2006-10-04 2006-10-04 集積回路設計方法、集積回路設計装置及び集積回路設計プログラム Expired - Fee Related JP4805779B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2006272452A JP4805779B2 (ja) 2006-10-04 2006-10-04 集積回路設計方法、集積回路設計装置及び集積回路設計プログラム
US11/785,430 US7757188B2 (en) 2006-10-04 2007-04-17 Method and apparatus for designing integrated circuit

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2006272452A JP4805779B2 (ja) 2006-10-04 2006-10-04 集積回路設計方法、集積回路設計装置及び集積回路設計プログラム

Publications (2)

Publication Number Publication Date
JP2008090695A JP2008090695A (ja) 2008-04-17
JP4805779B2 true JP4805779B2 (ja) 2011-11-02

Family

ID=39275926

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2006272452A Expired - Fee Related JP4805779B2 (ja) 2006-10-04 2006-10-04 集積回路設計方法、集積回路設計装置及び集積回路設計プログラム

Country Status (2)

Country Link
US (1) US7757188B2 (ja)
JP (1) JP4805779B2 (ja)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5117170B2 (ja) * 2007-11-20 2013-01-09 株式会社リコー 回路設計支援装置、回路設計支援方法、回路設計支援プログラム及び記録媒体
US8104014B2 (en) * 2008-01-30 2012-01-24 International Business Machines Corporation Regular local clock buffer placement and latch clustering by iterative optimization
US8082528B2 (en) * 2008-07-29 2011-12-20 Rambus Inc. Process-independent schema library
JP6503308B2 (ja) * 2016-02-18 2019-04-17 富士通フロンテック株式会社 画像処理装置及び画像処理方法

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH06342456A (ja) 1993-04-08 1994-12-13 Sony Corp 配線レイアウト方法
JPH08129576A (ja) * 1994-11-01 1996-05-21 Matsushita Electric Ind Co Ltd 半導体装置のマスクレイアウト設計方法
JP2921484B2 (ja) * 1996-04-12 1999-07-19 日本電気株式会社 論理回路修正方式
HUP0301274A2 (en) * 1998-09-30 2003-08-28 Cadence Design Systems Block based design methodology
JP2000215217A (ja) * 1999-01-25 2000-08-04 Nec Ibaraki Ltd 論理合成方法及び装置
JP2001142915A (ja) 1999-11-10 2001-05-25 Fujitsu Ltd 設計データ処理方法及び記録媒体
JP2002056041A (ja) * 2000-08-11 2002-02-20 Hitachi Ltd ハードウェア記述言語階層情報反映方法
JP4723740B2 (ja) * 2001-03-14 2011-07-13 富士通株式会社 密度一様化配置問題の最適解探索方法および密度一様化配置問題の最適解探索プログラム
JP2002280455A (ja) * 2001-03-21 2002-09-27 Kawasaki Microelectronics Kk 半導体集積回路設計方法及びコンピュータ・プログラム及びコンピュータ読み取り可能な記録媒体
EP1265164A3 (en) * 2001-06-04 2009-07-29 Broadcom Corporation Method and apparatus for circuit design
JP4131119B2 (ja) * 2002-04-19 2008-08-13 富士通株式会社 半導体集積回路設計方法及び半導体集積回路設計プログラム

Also Published As

Publication number Publication date
US7757188B2 (en) 2010-07-13
JP2008090695A (ja) 2008-04-17
US20080086711A1 (en) 2008-04-10

Similar Documents

Publication Publication Date Title
US6530073B2 (en) RTL annotation tool for layout induced netlist changes
US9792396B2 (en) Method and apparatus for automatic relative placement generation for clock trees
JP5217390B2 (ja) 回路設計支援装置、回路設計支援方法および回路設計支援プログラム
US7111269B2 (en) Comparison of two hierarchical netlist to generate change orders for updating an integrated circuit layout
JP5056376B2 (ja) 回路設計支援装置、回路設計支援方法および回路設計支援プログラム
JP5040617B2 (ja) 回路設計支援装置、回路設計支援方法、回路設計支援プログラムおよびプリント基板の製造方法
JP5056377B2 (ja) 協調設計支援装置、協調設計支援方法および協調設計支援プログラム
TWI788768B (zh) 針對具有嵌入式邏輯的多位元記憶體的系統與方法
US7904863B2 (en) Circuit-design supporting apparatus, circuit-design supporting method, computer product, and printed-circuit-board manufacturing method
US8751986B2 (en) Method and apparatus for automatic relative placement rule generation
US9361417B2 (en) Placement of single-bit and multi-bit flip-flops
JP4805779B2 (ja) 集積回路設計方法、集積回路設計装置及び集積回路設計プログラム
JP2010257164A (ja) 半導体集積回路装置の設計方法およびプログラム
US11675726B2 (en) Interconnect repeater planning and implementation flow for abutting designs
US8694940B2 (en) System and method for integrated circuit design and implementation using mixed cell libraries
US20200401179A1 (en) Hierarchical clock tree construction based on constraints
US8255844B2 (en) Coordinated-design supporting apparatus, coordinated-design supporting method, computer product, printed-circuit-board manufacturing method, circuit-design supporting apparatus, circuit-design supporting method, computer product, and printed-circuit-board manufacturing method
JP4448048B2 (ja) 構造解析プログラム
JP4806535B2 (ja) スペアセルセットの配置方法
JP2930087B2 (ja) 論理設計支援システム
JPH0969119A (ja) 回路設計装置及び回路設計方法
JP2008117136A (ja) 検証支援プログラム、記録媒体、検証支援装置および検証支援方法
JP2000322460A (ja) タイミングエラー情報管理方法および装置
JP2008171036A (ja) 論理回路検査支援装置、入出力端子対応関係導出方法、およびコンピュータプログラム
JP2008071000A (ja) 半導体集積回路の設計装置、設計方法、設計プログラムおよび該プログラムを記録した記録媒体

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20090710

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20110216

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110222

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110425

RD03 Notification of appointment of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7423

Effective date: 20110425

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20110425

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20110809

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20110811

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20140819

Year of fee payment: 3

LAPS Cancellation because of no payment of annual fees