JP2004186515A - 集積回路およびその設計方法 - Google Patents
集積回路およびその設計方法 Download PDFInfo
- Publication number
- JP2004186515A JP2004186515A JP2002353159A JP2002353159A JP2004186515A JP 2004186515 A JP2004186515 A JP 2004186515A JP 2002353159 A JP2002353159 A JP 2002353159A JP 2002353159 A JP2002353159 A JP 2002353159A JP 2004186515 A JP2004186515 A JP 2004186515A
- Authority
- JP
- Japan
- Prior art keywords
- flip
- flop
- clock
- integrated circuit
- delay cell
- 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.)
- Pending
Links
Images
Landscapes
- Semiconductor Integrated Circuits (AREA)
- Design And Manufacture Of Integrated Circuits (AREA)
Abstract
【課題】集積回路において、複数の回路ブロック間のデータ授受の際に、ホールド時間制約を満足させることができるようにするとともに、集積回路の設計の後戻りや設計工数の増大を招くことがなく、しかも回路規模の増大を防止できるようにする。
【解決手段】クロック同期フリップフロップよりも後段に、半周期の遅延を生成する回路を設ける。ブロック50、51間での信号の送信側に、半周期遅延生成回路52、53、60を設ける。ネットリスト記述された、ブロック間の送信側のフリップフロップを、半周期遅延セルに置換する。
【選択図】 図4
【解決手段】クロック同期フリップフロップよりも後段に、半周期の遅延を生成する回路を設ける。ブロック50、51間での信号の送信側に、半周期遅延生成回路52、53、60を設ける。ネットリスト記述された、ブロック間の送信側のフリップフロップを、半周期遅延セルに置換する。
【選択図】 図4
Description
【0001】
【発明の属する技術分野】
本発明は集積回路およびその設計方法に関し、特に複数の回路ブロックから構成される半導体装置において、前記複数の回路ブロック間のデータ授受の際に、ホールド時間制約を満足させるための集積回路、および、その集積回路を構成するための集積回路の設計方法に関する。
【0002】
【従来の技術】
従来のLSI設計では、フリップフロップで機能ブロック間の同期を取ることで、データの授受を行っている(例えば、特許文献1)。
【0003】
一方、ホールド時間の制約を満足させるために、レイアウト後の実遅延シミュレーションでエラー発生した個所に対して、データ入力部を遅延素子をつけたフリップフロップに置き換える(例えば、特許文献2)ものや、逆相のクロックで動作するフリップフロップを該当パスに挿入する(例えば、特許文献3)ものがある。
【0004】
さらに、シフトレジスタ構成をとるスキャンパス構成部に、スキャン時に逆相のクロックで動作するラッチを設けて、スキャン時に半周期の遅延がつくことを選択する(例えば、特許文献4)ものもある。
【0005】
【特許文献1】
特開平11−26591号公報(第5−6項、第2図)
【0006】
【特許文献2】
特許2786017号公報(第2項、第1図)
【0007】
【特許文献3】
特開平7−192043号公報(第8−9項、第2−4図)
【0008】
【特許文献4】
特開2000−310671号公報(第5−6項、第1図)
【0009】
【発明が解決しようとする課題】
機能ブロック間をフリップフロップで同期を取り、データの授受を行う場合は、機能ブロック間のクロックの位相差により、ホールド時間制約を満足しにくいことがある。
【0010】
また、レイアウト後に行う実遅延シミュレーションにおいてホールド制約エラーが発生した部分に対して、遅延素子を有するフリップフロップや逆相のフリップフロップを挿入するものでは、集積回路の微細化や高密度化により挿入するスペースが無いという問題がある。また、配線経路が大きく変わり、周囲の経路の遅延制約を満足させることに対して悪影響を及ぼし、設計完了までの時間を増加させやすく、このため新たに逆相クロックを供給する必要が生じるという問題がある。
【0011】
さらに、スキャン時に半周期の遅延がつくことを選択する構成のフリップフロップ回路を用いる従来の手法では、全てのフリップフロップの回路規模が大きくなるという問題がある。
【0012】
そこで本発明は、このような問題点を解決して、集積回路において、複数の回路ブロック間のデータ授受の際に、ホールド時間制約を満足させることができるようにするとともに、集積回路の設計の後戻りや設計工数の増大を招くことがなく、しかも回路規模の増大を防止できるようにすることを目的とする。
【0013】
【課題を解決するための手段】
これらの課題を解決するために本発明においては、ホールド時間制約を満足させるように、半周期の遅延を有するクロック同期フリップフロップセルを用いることを特徴とする。このような半周期の遅延を有するクロック同期フリップフロップセルを、特にクロックの遅延差が発生しやすいブロック間のデータ授受に用いることで、回路規模の増加を防ぐことができる。
【0014】
また本発明によると、クロック同期フリップフロップよりも後段に半周期の遅延を生成するために、逆相クロックで動作するラッチやフリップフロップを備え、それらをあらかじめ1つのセルにしてあるので、挿入するスペースがなくなることや配線経路が変化することや逆相クロック配線が増加することなどは発生しなくなる。
【0015】
本発明の第1の方法は、ネットリスト記述された、ブロック間の送信側のフリップフロップを半周期遅延セルに置換するに際し、ホールド制約を満足しにくいと予想される部分にレイアウトを行う前にあらかじめ遅延を与えておくものである。これにより、レイアウト後の遅延変動を減少させることが可能となる。また、一律全てのフリップフロップに半周期の遅延を持たせるのではなく、ブロック間に限定することで、回路規模の増加を防ぐことができる。
【0016】
さらに、特定のフリップフロップを指定するセル名リストや、ブロックを指定するブロック名リストや、クロック信号を指定するクロック名リストや、あるクロック信号とそれとは異なる別のクロック信号の組を指定するクロック対リストを用いて、あらかじめ半周期遅延セルに置換するセルを選択しても良い。このように置換するセル数を絞り込むことで、回路規模の増加をさらに減少することができる。
【0017】
本発明の第2の方法は、ネットリスト記述された、ブロック間の信号の送受信がフリップフロップからフリップフロップへのシフトレジスタ構成となっているかどうかを調べ、該当する場合に送信側のフリップフロップを半周期遅延セルに置換するものであって、ホールド制約を満足しにくいと予想される部分にレイアウトを行う前にあらかじめ遅延を与えておくものである。これにより、レイアウト後の遅延変動を減少させることが可能となる。また、一律全てのフリップフロップに半周期の遅延を持たせるのではなく、ブロック間に限定することで、回路規模の増加を防ぐことができる。
【0018】
なお、ネットリスト記述中にある各クロック同期フリップフロップよりも後段に、前記フリップフロップに入力されているクロックの逆相で動作するラッチないし他のフリップフロップが接続されている場合は、ネットリスト中の前記フリップフロップとその後段にあるラッチないし他のフリップフロップをまとめて半周期遅延セルに置換することで、配線数やクロック配線の分岐数を減らすこともできる。
【0019】
本発明の第3の方法は、RTL記述を読み込んで合成する際に、ブロック間の送信側のフリップフロップとして半周期遅延セルを割付けるものであって、ホールド制約を満足しにくいと予想される部分にレイアウトを行う前にあらかじめ遅延を与えておくものである。これにより、レイアウト後の遅延変動を減少させることが可能となる。また、一律全てのフリップフロップに半周期の遅延を持たせるのではなく、ブロック間に限定することで、回路規模の増加を防ぐことができる。
【0020】
さらに、ブロックを指定するブロック名リストや、ブロック間を指定するブロック間リストや、クロック信号を指定するクロック名リストや、あるクロック信号とそれとは異なる別のクロック信号の組を指定するクロック対リストを用いて、半周期遅延セルに割付ける部分をあらかじめ選択しても良い。これにより、割付けするセル数を絞り込むことで、回路規模の増加をさらに減少できる。
【0021】
本発明の第4の方法は、合成時に、ブロック間の信号の送受信が第1のフリップフロップから第2のフリップフロップへのシフトレジスタ構成となっているかどうかを調べ、該当する送信側のフリップフロップとして半周期遅延セルを割付けるものであって、ホールド制約を満足しにくいと予想される部分にレイアウトを行う前にあらかじめ遅延を与えておくものである。これにより、レイアウト後の遅延変動を減少させることが可能となる。また、一律全てのフリップフロップに半周期の遅延を持たせるのではなく、ブロック間に限定することで、回路規模の増加を防ぐことができる。
【0022】
なお、RTL記述中にある各クロック同期フリップフロップよりも後段に、前記フリップフロップに入力されているクロックの逆相で動作するラッチないし他のフリップフロップが接続されている場合は、前記フリップフロップとその後段にあるラッチないし他のフリップフロップをまとめて半周期遅延セルに割付けることで、配線数やクロック配線の分岐数を減らすこともできる。
【0023】
本発明の第5の方法は、合成結果を仮配線遅延を用いてチェックして、タイミング違反を検知した場合において、始点のフリップフロップからの全経路で、半周期以上のホールド違反を起こしているときには、その始点のフリップフロップを半周期遅延セルに置き換えるものであつて、ホールド制約を満足しにくいと予想される部分にレイアウトを行う前にあらかじめ遅延を与えておくものである。
これにより、レイアウト後の遅延変動を減少させることが可能となる。また、一律全てのフリップフロップに半周期の遅延を持たせるのではなく、エラー発生部に限定することで、回路規模の増加を防ぐことができる。
【0024】
なお、半周期未満のホールド違反を起こしている経路がある場合に、その始点となるフリップフロップからの全経路の最大遅延時間が半周期未満の場合は、前記始点となるフリップフロップを半周期遅延セルに置き換えても遅延制約を満足でき、これにより、レイアウト後に遅延を調整する部分を削減することができる。
【0025】
本発明の第6の方法は、SRAM等のマクロにおいて、他のセルよりも比較的大きなホールド時間制約をあらかじめ必要としている場合は、合成用ライブラリ内のセルの入力ホールド時間制約を見てそのセルへの入力信号の始点にあるフリップフロップとして半周期遅延セルを割付けるものであり、ホールド制約を満足しにくいと予想される部分にレイアウトを行う前にあらかじめ遅延を与えておくものである。これにより、レイアウト後の遅延変動を減少させることが可能となる。
【0026】
また、合成用ライブラリ内のセルの入力ホールド時間制約を見る代わりに、合成用ライブラリに半周期遅延セルを割付けることを指示するための属性を与えて、それにより割付けるようにしても良い。
【0027】
さらに、RTL記述に半周期遅延セルを割付けることを指示するための記述をしておき、その記述のあるフリップフロップを割り付けるべき構文に対して、半周期遅延セルを割付けることもできる。
【0028】
【発明の実施の形態】
本発明の実施の形態について、図1から図22を用いて説明する。
(実施の形態1)
図1は請求項1に記載の本発明にもとづく半周期遅延セルの構成を示したものである。
【0029】
図1に示される半周期遅延セル1は、クロック同期フリップフロップ2と、半周期遅延回路3とで構成される。クロック同期フリップフロップ2は、データ入力4の信号を、クロック入力5から与えられるクロック信号の立ち上がりで内部に格納する。格納したデータは、クロック同期フリップフロップ2のデータ出力6から半周期遅延回路3のデータ入力7へ与えられ、半周期遅延回路3でクロック入力5からの信号に対して半周期遅延された後、データ出力8から出力される。
【0030】
図2は、半周期遅延回路3の一例を示す。この遅延回路3は、逆相クロックで動作するラッチ回路である(請求項3に相当)。
データ入力7はトランスファゲート10の入力11に接続される。また、クロック入力5からのクロック信号は、インバータ12に入力されて、トランスファゲート10、インバータ13、トランスファゲート15に出力される。なお、トランスファゲート10はクロック信号が”L”の場合にオンし、トランスファゲート15はクロック信号が”H”の場合にオンするように接続されている。インバータ13の出力は、トランスファゲート10とトランスファゲート15のインバータ12とは逆極性の制御ゲートとに入力される。トランスファゲート10の出力14はトランスファゲート15の出力16とワイヤードオアされてインバータ17に入力される。インバータ17の出力はインバータ20に入力され、インバータ20の出力はデータ出力8として半周期遅延回路3の外に出力される。また、インバータ17の出力はインバータ18に入力される。インバータ18の出力はトランスファゲート15の入力19に接続される。
【0031】
次に簡単に動作を説明する。クロック入力5が”H”の期間は、トランスファゲート10はオフで、トランスファゲート15はオンになる。これにより、インバータ17とインバータ18のループが形成され、期間中ある一定値を出力する。また、クロック入力5が”L”になると、トランスファゲート10はオンで、トランスファゲート15はオフになる。これによりデータ入力7からのデータがインバータ17とインバータ20を通じてデータ出力8から出力される。
【0032】
以上の動作をする半周期遅延回路3を、図1におけるクロック同期フリップフロップ2の後段に接続することで、クロック入力5の立ち上がりで格納されたデータを、クロック入力5の立下り(”L”になる最初)からデータ出力8より出力することとなり、半周期遅延セルとして機能する。
【0033】
図3に、半周期遅延回路3として逆相クロックで動作するクロック同期フリップフロップ回路30を接続した例を示す(請求項4に相当)。
クロック入力5からのクロック信号をインバータ31で反転し、クロック同期フリップフロップ30のクロック入力32から入力する。また、クロック同期フリップフロップ30のデータ入力33は、半周期遅延回路3のデータ入力7と接続し、クロック同期フリップフロップ30のデータ出力34はデータ出力8と接続する。
【0034】
この構成により、クロック入力5の立ち上がりでクロック同期フリップフロップ2に格納されたデータは、次のクロック入力5の立下りでクロック同期フリップフロップ30に格納され、データ出力8として出力される。これにより、クロック入力5の立ち上がりから半周期遅延してデータが出力される。
【0035】
図4に、半周期遅延セルをブロック間での信号の送信側に用いた例を示す(請求項2に相当)。
ブロック(A)50とブロック(B)51との間での信号授受において、ブロック(A)50からブロック(B)51へ信号を伝達する信号線55および信号線56のうち、信号線55は半周期遅延セル52の出力とフリップフロップ58の入力とに接続され、信号線56は半周期遅延セル53の出力とフリップフロップ59の入力とに接続されている。また逆にブロック(B)51からブロック(A)50へ信号を伝達する信号線57は、半周期遅延セル60の出力とフリップフロップ54の入力とに接続されている。また半周期遅延セル52、53とフリップフロップ54とにはバッファ62を通じてクロック61が入力され、フリップフロップ58、59と半周期遅延セル60とにはバッファ63を通じてクロック61が入力される。
【0036】
このような構成をとることで、ブロック(A)50とブロック(B)51との間のデータ授受を行う各フリップフロップ54、58、59と半周期遅延セル52、53、60とにおいて、バッファ62とバッファ63を通じて与えられるクロックの到達時刻に差が有った場合でも、送信側に半周期の遅延を有しているので、クロック信号の到達時間に半周期の差が生じない限り、ホールド時間の制約を違反することは無い。
【0037】
(実施の形態2)
図5は請求項5に記載の本発明の集積回路設計方法のフローを示した図で、RTL記述ステップ100で論理をRTL記述し、そのRTL記述を合成ステップ101で論理回路に割り付けてネットリストを作成する。次に作成したネットリストに対し、置換ステップ102においてブロック間の送信側のフリップフロップを半周期遅延セルに置換する。置換ステップ102での置換後にDFTステップ103でテスト回路挿入を実施したネットリストを作成し、そのネットリストに基づいてレイアウトステップ104でレイアウト作成する。
【0038】
次に置換ステップ102の詳細を説明する。ブロック間の送信側のフリップフロップを半周期遅延セルに置換する場合に、特定のフリップフロップを指定するセル名リスト111、ブロックを指定するブロック名リスト112、ブロック間を指定するブロック間リスト113、クロック信号を指定するクロック名リスト114、あるクロック信号とそれとは異なる別のクロック信号の組を指定するクロック対リスト115をリスト読み込みステップ110で読み込んで、前記複数のリストから半周期遅延セルに置換するブロック間の送信側のフリップフロップを選択し、セル置換ステップ116で半周期遅延セルに置換する。
【0039】
例えば、セル名リスト111を読み込んだ場合は、そのセル名と一致したブロック間の送信側のフリップフロップを選択して置換する(請求項6に相当)。
図6はその様子を示したもので、ブロック(A)120とブロック(B)121とのブロック間において、クロック131からバッファ132、バッファ133を通じて各フリップフロップにクロックが供給され、ブロック間をブロック(A)120からブロック(B)121へと信号線125−127で信号が伝達される構成の場合に、セル名リストから読み込んだセル名に相当する2つのフリップフロップを半周期遅延セル122、123に置換し、リストに記載されていない外のフリップフロップ124、128−130はそのままにする。
【0040】
また例えば、図5においてブロック名リスト112を読み込んだ場合は、ブロック名リスト112にあるブロックに存在するフリップフロップの内、ブロック間の送信側となるものを選択して置換する(請求項7に相当)。
【0041】
図7はその様子を示したもので、ブロック(A)140とブロック(B)141とのブロック間において、クロック151からバッファ152、バッファ153を通じて各フリップフロップ144、148−150にクロックが供給され、ブロック間をブロック(A)140からブロック(B)141へと信号線145、146で信号が伝達され、ブロック(B)141からブロック(A)140へと信号線147で信号が伝達される構成の場合において、ブロック名リスト112にブロック(A)140が記載されているときには、ブロック(A)140が送信側となるフリップフロップを半周期遅延セル142、143に置換し、受け側のフリップフロップ144や、リストに記載されていないブロック(B)のフリップフロップ148−150はそのままにする。
【0042】
さらに例えば、図5においてブロック間リスト113を読み込んだ場合には、リストに記載された一方のブロックと、それと対をなすブロックとの間のデータ授受を行う信号線の送信側のフリップフロップを選択して置換する(請求項8に相当)。
【0043】
図8はその様子を示したもので、ブロック(A)160とブロック(B)161、ブロック(A)160とブロック(C)162とのブロック間において、クロック172からバッファ173‐175を通じて各フリップフロップ165、169−171にクロックが供給され、ブロック間をブロック(A)160からブロック(B)161へと信号線166、167で信号が伝達され、ブロック間をブロック(A)160からブロック(C)162へと信号線168で信号が伝達される構成の場合において、ブロック間リスト113にブロック(A)160とブロック(B)161とが記載されているときには、ブロック(A)160とブロック(B)161との間の信号線166、167において、ブロック(A)160が送信側となるフリップフロップを半周期遅延セル163、164に置換し、受け側のフリップフロップ169、170や、ブロック(A)160からブロック(C)162へのフリップフロップ165、171は、そのままにする。
【0044】
次に、例えばクロック名リスト114を読み込んだ場合は、そのクロックに接続されたフリップフロップの内、ブロック間の送信側となるものを選択して置換する(請求項9に相当)。
【0045】
図9はその様子を示したもので、ブロック(A)180とブロック(B)181とのブロック間において、クロック191からバッファ192、バッファ193を通じて各フリップフロップにクロックが供給され、ブロック間をブロック(A)180からブロック(B)181へと信号線185、186で信号が伝達され、ブロック(B)181からブロック(A)180へと信号線187で信号が伝達される構成の場合において、クロック名リスト114にクロック191が記載されているときには、送信側となるフリップフロップを半周期遅延セル182、183、190に置換し、受け側のフリップフロップ184、188、189はそのままにする。
【0046】
また、例えばクロック対リスト115を読み込んだ場合は、リストに記載された一方のクロックに接続されたフリップフロップの内で、それと対をなすクロックに接続されたフリップフロップに対してブロック間での信号送信をしているものを選択して置換する(請求項10に相当)。
【0047】
図10はその様子を示したもので、ブロック(A)200とブロック(B)201とのブロック間において、クロック211からバッファ212を通じてブロック(A)200の各フリップフロップにクロックが供給され、クロック213からバッファ214を通じてブロック(B)201のフリップフロップ208、209にクロックが供給され、クロック215からバッファ216を通じてブロック(B)201のフリップフロップ210にクロックが供給され、ブロック間をブロック(A)200からブロック(B)201へと信号線205‐207で信号が伝達される構成の場合において、クロック対リスト115にクロック211とクロック213の対が記載されているときには、クロック211に接続されているフリップフロップの内で、それと対をなすクロック213に接続されているフリップフロップに対してブロック間での信号送信をしているフリップフロップを半周期遅延セル202、203に置換し、異なるクロック215との間で信号送信をしているフリップフロップ204や受け側のフリップフロップ208−210はそのままにする。
【0048】
(実施の形態3)
図11は、請求項11に記載の集積回路設計方法のフローを示したものである。まず、RTL記述ステップ300で論理をRTL記述し、そのRTL記述を合成ステップ301で論理回路に割り付けてネットリストを作成する。次に、作成したネットリストに対し、シフトレジスタ調査ステップ302で、ブロック間の信号の送受信が、フリップフロップからフリップフロップへのシフトレジスタ構成となっているか否かを調べ、置換ステップ303においてシフトレジスタ調査ステップ302の調査結果を基にブロック間の送信側のフリップフロップを半周期遅延セルに置換する。置換ステップ303での置換後にDFTステップ304でテスト回路挿入を実施したネットリストを作成し、そのネットリストに基づいてレイアウトステップ305でレイアウト作成する。
【0049】
図12はその様子を示したもので、ブロック(A)310とブロック(B)311とのブロック間において、クロック321からバッファ322、バッファ323を通じて各フリップフロップにクロックが供給され、ブロック間をブロック(A)310からブロック(B)311へと信号線315、316で信号が伝達され、ブロック(B)311からブロック(A)310へと信号線317で信号が伝達され、信号線316はブロック(B)311内のゲート325に入力されて信号線324と論理和をとった後にフリップフロップ319に入力される構成の場合には、シフトレジスタ調査ステップ302において、信号線315と信号線317で接続された2組のフリップフロップ間がシフトレジスタ構成になっていることが判明したときに、置換ステップ303では、その結果を受けて、送信側のフリップフロップを半周期遅延セル312、320に置換し、途中にゲート325のあるフリップフロップ313や、受信側のフリップフロップ314、318、319はそのままにする。
【0050】
(実施の形態4)
図13は、請求項12に記載の集積回路設計方法のフローを示したものである。まず、RTL記述ステップ400で論理をRTL記述し、そのRTL記述を合成ステップ401で論理回路に割り付けてネットリストを作成する。次に作成したネットリストに対し、逆相クロック接続調査ステップ402で、各クロック同期フリップフロップの後段に、前記フリップフロップに入力されているクロックの逆相で動作するラッチないしフリップフロップが接続されているかどうかを調べ、置換ステップ403において逆相クロック接続調査ステップ402の調査結果を基にネットリスト中の前記フリップフロップとそれよりも後段にあるラッチないしフリップフロップをまとめて半周期遅延セルに置換する。置換ステップ403での置換後にDFTステップ404でテスト回路挿入を実施したネットリストを作成し、そのネットリストに基づいてレイアウトステップ405でレイアウト作成する。
【0051】
図14はその様子を示した図で、(a)は合成ステップ401で論理回路に割り付けたネットリストの一部である。ここで、信号線500とクロック501がフリップフロップ502に入力されている。また、クロック501はインバータ503を通じてフリップフロップ505に供給されている。このとき、フリップフロップ505はフリップフロップ502に対しクロックの逆相で動作していることになる。フリップフロップ502の出力は信号線504を通じてフリップフロップ505に入力されている。フリップフロップ505の出力は信号線506を通じて次の回路に接続される。
【0052】
(b)は置換ステップ403で置換処理した後を示したものである。ここでは、逆相クロック接続調査ステップ402において、(a)のフリップフロップ502とフリップフロップ505が、クロック同期フリップフロップよりも後段に、このフリップフロップに入力されているクロックの逆相で動作するフリップフロップがある構成になっていることが判明する。そこで、置換ステップ403において、インバータ503、フリップフロップ505、信号線504を削除し、フリップフロップ502を半周期遅延セル510に置換する。
【0053】
(実施の形態5)
図15は請求項13に記載の集積回路設計方法のフローを示したもので、RTL記述ステップ600で論理をRTL記述し、そのRTLを読み込みステップ601で読み込み、読み込んだRTL記述を合成ステップ602で論理回路に割り付けてネットリストを作成する。
【0054】
次に合成ステップ602の詳細を説明する。ブロック間の送信側のフリップフロップを半周期遅延セルに置換する場合に、ブロックを指定するブロック名リスト610、ブロック間を指定するブロック間リスト611、クロック信号を指定するクロック名リスト612、あるクロック信号とそれとは異なる別のクロック信号の組を指定するクロック対リスト613をリスト読み込みステップ614で読み込む。そして、セル合成ステップ615において、論理合成を行う場合に、リストに該当する構成のフリップフロップとして半周期遅延セルを割り付け、ネットリストを作成する。
【0055】
例えば、ブロック名リスト610を読み込んだ場合は、このブロック名リスト610にあるブロックの論理を合成するときにおいて、フリップフロップを割り付ける際に、ブロック間の送信側となるものについては半周期遅延セルを割り付ける(請求項14に相当)。
【0056】
次に例えば、ブロック間リスト611を読み込んだ場合は、このブロック間リスト611に記載された第1のブロックと、それと対をなす第2のブロックとの論理を合成するときにおいて、第1のブロックのフリップフロップを割り付ける際に第2のブロックへ信号を出力する場合には半周期遅延セルを割り付け、逆に第2のブロックのフリップフロップを割り付ける際に第1のブロックへ信号を出力する場合には半周期遅延セルを割り付ける(請求項15に相当)。
【0057】
また例えば、クロック名リスト612を読み込んだ場合は、このクロック名リスト612に記載されたクロックに接続されているフリップフロップを割り付ける際に、ブロック間の送信側となるものについては半周期遅延セルを割り付ける(請求項16に相当)。
【0058】
さらに例えば、クロック対リスト613を読み込んだ場合は、このクロック対リスト613に記載された第1のクロックと、それと対をなす第2のクロックに接続されたフリップフロップを割り付ける際に、第1のクロックのフリップフロップから異なるブロック間の第2のクロックに接続されたフリップフロップへの送信がある場合は、第1のクロックのフリップフロップとして半周期遅延セルを割り付け、逆に第2のクロックのフリップフロップから異なるブロック間の第1のクロックに接続されたフリップフロップへの送信がある場合は、第2のクロックのフリップフロップとして半周期遅延セルを割り付ける(請求項17に相当)。
【0059】
(実施の形態6)
図16は、本発明の請求項18、19に記載の集積回路設計方法のフローを示したものである。ここでは、RTL記述ステップ700で論理をRTL記述し、そのRTLを読み込みステップ701で読み込み、読み込んだRTL記述を合成ステップ702で論理回路に割り付けてネットリストを作成する。合成ステップ702において、例えば図17に示すようなRTL記述の割付を行う際に、BLOCKAのRTL記述(RTL記述711)のフリップフロップ(REGA記述712)出力が、BLOCKBのRTL記述(RTL記述713)のフリップフロップ(REGB)入力に、上位階層のRTL記述(RTL記述710)内の配線(NETA接続記述715)で一対一接続される。そして、フリップフロップBの記述(REGB記述714)がNETAからの信号を単にクロック(CLKB)の立ち上がりで格納するものである場合は、フリップフロップAに半周期遅延セルを割り付けるようにする(請求項18に相当)。
【0060】
また、合成ステップ702において、例えば図18に示すようなRTL記述750の割付を行う際に、RTL記述750内のフリップフロップAの記述(REGA記述751)の出力(OUTA)がフリップフロップBの記述(REGB記述752)における一対一接続された入力となり、かつREGB記述752がOUTAからの信号を単にそのクロックで取り込む構成で、なおかつREGA記述751のクロック記述とREGB記述752のクロック記述が逆相の関係の場合は、REGA記述751とREGB記述752とをまとめて、入力(INA)を取り込んで出力(OUTB)する半周期遅延セルを割り付けるようにする(請求項19に相当)。
【0061】
(実施の形態7)
図19は、本発明の請求項20、21に記載の集積回路設計方法のフローを示すものである。RTL記述ステップ800で論理をRTL記述し、そのRTLを読み込みステップ801で読み込み、読み込んだRTL記述を合成ステップ802で論理回路に割り付けてネットリストを作成し、作成したネットリストについてタイミングチェックステップ803で仮配線遅延を用いて合成結果のタイミングをチェックし、判別ステップ804において前記タイミングチェックステップ803で違反が無い場合はそのまま終了し、違反がある場合には修正ステップ805で修正を施して終了する。
【0062】
修正ステップ805においては、違反個所を修正する場合に、始点のフリップフロップからの全経路で半周期以上のホールド違反を起こしている場合は、その始点フリップフロップを半周期遅延セルに置き換える(請求項20に相当)。
【0063】
また始点のフリップフロップからの全経路の内、少なくとも1つの経路が半周期未満のホールド違反を起こしている場合において、始点フリップフロップからの全経路の最大遅延時間が半周期未満であるとき、すなわち半周期遅れても違反が生じないときにも、始点フリップフロップを半周期遅延セルに置き換える(請求項21に相当)。
【0064】
(実施の形態8)
図20は、本発明の請求項22、23に記載の集積回路設計方法のフローを示したものである。ここで、RTL記述ステップ850で論理をRTL記述し、そのRTLを読み込みステップ851で読み込む。次にホールド時間判別ステップ853において、セルライブラリ852を参照し、読み込んだRTL内で利用されるライブラリセルのうち、閾値854で与えられる値以上のセルがあった場合には、そのライブラリセルにおいて、前記セルの入力に接続される信号線の始点となるフリップフロップを半周期遅延セルとする属性を付加する。合成ステップ855では、属性があるライブラリセルの入力に接続される始点のフリップフロップとして半周期遅延セルを割り付けて、ネットリストを作成する(請求項22に相当)。
【0065】
なお、セルライブラリ852にある、ホールド時間がある閾値以上必要なセルについては、あらかじめ前記セルの入力に接続される信号線の始点となるフリップフロップを半周期遅延セルとする属性を付加することで、ホールド時間判別ステップ853を省略することもできる(請求項23に相当)。
【0066】
(実施の形態9)
図21は、請求項24に記載の集積回路設計方法のフローを示したものであるる。これは、RTL記述ステップ860で論理をRTL記述し、そのRTLを読み込みステップ861で読み込み、読み込んだRTL記述を合成ステップ862で論理回路に割り付けてネットリストを作成する構成である。ここで、RTLを読み込むための読み込みステップ861は、RTL記述の内容を解析し、半周期遅延セルを割付けることを指示するための記述が有るかどうかを調べる。このために読み込みステップ861は、記述解析ステップ870と、その結果を受けて、該当したフリップフロップに半周期遅延セルを割り付けることを指示する、半周期遅延セル割り付け指示ステップ871とからなる。合成ステップ862では、半周期遅延セル割り付け指示ステップ871で指示されたフリップフロップに半周期遅延セルを割り付ける。
【0067】
図22は、RTL記述に半周期遅延セルを割付けることを指示するための記述を与える一例を示したもので、RTL記述880中に半周期遅延セル割り付け記述881を記載し、そのすぐ下にあるフリップフロップの記述(REG記述882)の部分を図21の半周期遅延セル割り付け指示ステップ871で指定するようにしたものである。
【0068】
ここで、例えば、半周期遅延セル割り付け記述881の先頭に”//”を記載した場合は、シミュレーションで無視するように取り決めておくこともできる(請求項25に相当)。
【0069】
また、たとえ半周期遅延セル割り付け記述881が有ったとしても、合成用のライブラリとして半周期遅延セルが存在しない場合には、無視するようにしても良い(請求項26に相当)。
【0070】
【発明の効果】
請求項1に記載の本発明によれば、半周期遅延セルを、通常のフリップフロップと置換して用いることで、簡単にホールド時間をクロックサイクルの半周期として確保することができる。
【0071】
また特にクロックの遅延差が発生しやすいブロック間のデータ授受に用いることで、回路規模の増加を防ぐことができる(請求項2)。
また、半周期遅延セルとして、クロック同期フリップフロップよりも後段に、半周期の遅延を生成する回路として、逆相クロックで動作するラッチ回路や逆相クロックで動作するクロック同期フリップフロップ回路を備えた構成にすることで、それらをあらかじめ1つのセルにしてあることから、挿入するスペースがなくなることや配線経路が変化することや逆相クロック配線が増加することといった問題は発生しなくなる(請求項3、4)。
【0072】
請求項5に記載の本発明の集積回路設計方法によれば、レイアウトを行う前に、ネットリスト記述されたブロック間の送信側のフリップフロップを半周期遅延セルに置換することで、ホールド制約を満足しにくいと予想される部分にあらかじめ遅延を与えることで、レイアウト後のホールド時間を満足させ、レイアウト後の遅延変動を減少させることが可能となる。また、一律全てのフリップフロップに半周期の遅延を持たせるのではなく、ブロック間に限定することで、回路規模の増加を防ぐことができる。
【0073】
さらに、特定のフリップフロップを指定するセル名リストや、ブロックを指定するブロック名リストや、クロック信号を指定するクロック名リストや、あるクロック信号とそれとは異なる別のクロック信号の組を指定するクロック対リストを用いて、半周期遅延セルに置換するセルをあらかじめ選択しても良い。このようにすると、置換するセル数を絞り込むことで、回路規模の増加をさらに減少できる(請求項6−10)。
【0074】
また、請求項11に記載の本発明の集積回路設計方法によれば、ネットリスト記述されたブロック間の信号の送受信が、フリップフロップからフリップフロップへのシフトレジスタ構成となっているかどうかを調べ、該当する場合に送信側のフリップフロップを半周期遅延セルに置換することで、ホールド制約を満足しにくいと予想される部分にレイアウトを行う前にあらかじめ遅延を与えることで、レイアウト後のホールド時間を満足させ、レイアウト後の遅延変動を減少させることが可能となる。さらに、一律全てのフリップフロップに半周期の遅延を持たせるのではなく、ブロック間に限定することで、回路規模の増加を防ぐことができる。
【0075】
なお、ネットリスト記述中にある各クロック同期フリップフロップよりも後段に、前記フリップフロップに入力されているクロックの逆相で動作するラッチないし他のフリップフロップが接続されている場合は、ネットリスト中の前記フリップフロップとそれよりも後段にあるラッチないし他のフリップフロップをまとめて半周期遅延セルに置換することで、配線数やクロック配線の分岐数を減らすこともできる(請求項12)。
【0076】
さらに、請求項13に記載の本発明の集積回路設計方法によれば、RTL記述を読み込んで合成する際に、ブロック間の送信側のフリップフロップとして半周期遅延セルを割付けて、ホールド制約を満足しにくいとレイアウトを行う前に予想される部分にあらかじめ遅延を与えることで、レイアウト後のホールド時間を満足させ、レイアウト後の遅延変動を減少させることが可能となる。また、一律全てのフリップフロップに半周期の遅延を持たせるのではなく、ブロック間に限定することで、回路規模の増加を防ぐことができる。
【0077】
さらに、ブロックを指定するブロック名リストや、ブロック間を指定するブロック間リストや、クロック信号を指定するクロック名リストや、あるクロック信号とそれとは異なる別のクロック信号の組を指定するクロック対リストを用いて、あらかじめ半周期遅延セルに割付ける部分を選択しても良い。このようにすると、割付けするセル数を絞り込むことで、回路規模の増加をさらに減少することができる(請求項14‐17)。
【0078】
請求項18に記載の本発明の集積回路設計方法によれば、合成時のブロック間の信号の送受信がフリップフロップからフリップフロップへのシフトレジスタ構成となっているかどうかを調べ、該当する送信側のフリップフロップとして半周期遅延セルを割付けて、ホールド制約を満足しにくいとレイアウトを行う前に予想される部分にあらかじめ遅延を与えることで、レイアウト後のホールド時間を満足させ、レイアウト後の遅延変動を減少させることが可能となる。また、一律全てのフリップフロップに半周期の遅延を持たせるのではなく、ブロック間に限定することで、回路規模の増加を防ぐことができる。
【0079】
なお、RTL記述中にある各クロック同期フリップフロップよりも後段に、前記フリップフロップに入力されているクロックの逆相で動作するラッチないし他のフリップフロップが接続されている場合は、前記フリップフロップとその後段にあるラッチないし他のフリップフロップをまとめて半周期遅延セルに割付けることで、配線数やクロック配線の分岐数を減らすこともできる(請求項19)。
【0080】
また、請求項20に記載の本発明の集積回路設計方法によれば、仮配線遅延を用いてタイミング違反を検知することで、半周期遅延セルに置き換えるために、ホールド制約を満足しにくいとレイアウトを行う前に予想される部分にあらかじめ遅延を与えることで、レイアウト後のホールド時間を満足させ、レイアウト後の遅延変動を減少させることが可能となる。また、一律全てのフリップフロップに半周期の遅延を持たせるのではなく、エラー発生部に限定することで、回路規模の増加を防ぐことができる。
【0081】
なお、半周期未満のホールド違反を起こしている経路がある場合に、その始点となるフリップフロップからの全経路の最大遅延時間が半周期未満の場合は、前記始点となるフリップフロップを半周期遅延セルに置き換えても遅延制約を満足でき、これにより、レイアウト後に遅延を調整する部分を削減することができる(請求項21)。
【0082】
請求項22に記載の本発明の集積回路設計方法によれば、SRAM等のマクロにおいて、比較的大きなホールド時間制約をあらかじめ必要とすることが判っている場合に、合成用ライブラリ内のセルの入力ホールド時間制約を見て、そのセルへの入力信号の始点にあるフリップフロップとして半周期遅延セルを割付ける様にして合成し、ホールド制約を満足しにくいとレイアウトを行う前に予想される部分にあらかじめ遅延を与えることで、レイアウト後のホールド時間を満足させ、レイアウト後の遅延変動を減少させることが可能となる。
【0083】
また、合成用ライブラリ内のセルの入力ホールド時間制約を見る代わりに、合成用ライブラリに半周期遅延セルを割付けることを指示するための属性を与えて、それにより割付けるようにしても良い(請求項23)。
【0084】
さらに、RTL記述に半周期遅延セルを割付けることを指示するための記述をしておき、その記述のあるフリップフロップを割り付けるべき構文に対して、半周期遅延セルを割付けることもできる(請求項24)。
【0085】
なお、半周期遅延セルを割付ける記述は論理シミュレーションで無視されるようにしておくとより良い(請求項25)。
また、半周期遅延セルを割付ける記述があっても、合成用ライブラリに半周期遅延セルが無い場合には、普通のフリップフロップを割り付けるようにすれば、RTL記述を半周期遅延セルの有無に関係なく共通化できる。
【図面の簡単な説明】
【図1】本発明の実施の形態1の集積回路における半周期遅延セルの構成を示した図
【図2】図1における半周期遅延回路の例を示した図
【図3】本発明の実施の形態1の集積回路におけるクロック同期フリップフロップ回路を接続した半周期遅延回路の例を示した図
【図4】本発明にもとづき半周期遅延セルをブロック間での信号の送信側に用いた例を示した図
【図5】本発明の実施の形態2の集積回路設計方法のフローを示した図
【図6】図5におけるセル名リストを用いて半周期遅延セルに置換する様子を示した図
【図7】図5におけるブロック名リストを用いて半周期遅延セルに置換する様子を示した図
【図8】図5におけるブロック間リストを用いて半周期遅延セルに置換する様子を示した図
【図9】図5におけるクロック名リストを用いて半周期遅延セルに置換する様子を示した図
【図10】図5におけるクロック対リストを用いて半周期遅延セルに置換する様子を示した図
【図11】本発明の実施の形態3の集積回路設計方法のフローを示した図
【図12】図11のフローにおける半周期遅延セルに置換する様子を示した図
【図13】本発明の実施の形態4の集積回路設計方法のフローを示した図
【図14】図13のフローにおける半周期遅延セルに置換する様子を示した図
【図15】本発明の実施の形態5の集積回路設計方法のフローを示した図
【図16】本発明の実施の形態6の集積回路設計方法のフローを示した図
【図17】図16のフローにおけるRTL記述の例を示した図
【図18】図16のフローにおけるRTL記述の他の例を示した図
【図19】本発明の実施の形態7の集積回路設計方法のフローを示した図
【図20】本発明の実施の形態8の集積回路設計方法のフローを示した図
【図21】本発明の実施の形態9の集積回路設計方法のフローを示した図
【図22】図21のフローにおける半周期遅延セルを割付けることを指示するためのRTL記述を示した図
【符号の説明】
1 半周期遅延セル
2 クロック同期フリップフロップ
3 半周期遅延回路
4 データ入力
5 クロック入力
8 データ出力
50 ブロック(A)
51 ブロック(B)
52 半周期遅延セル
53 半周期遅延セル
54 フリップフロップ
58 フリップフロップ
59 フリップフロップ
60 半周期遅延セル
61 クロック
62 バッファ
63 バッファ
【発明の属する技術分野】
本発明は集積回路およびその設計方法に関し、特に複数の回路ブロックから構成される半導体装置において、前記複数の回路ブロック間のデータ授受の際に、ホールド時間制約を満足させるための集積回路、および、その集積回路を構成するための集積回路の設計方法に関する。
【0002】
【従来の技術】
従来のLSI設計では、フリップフロップで機能ブロック間の同期を取ることで、データの授受を行っている(例えば、特許文献1)。
【0003】
一方、ホールド時間の制約を満足させるために、レイアウト後の実遅延シミュレーションでエラー発生した個所に対して、データ入力部を遅延素子をつけたフリップフロップに置き換える(例えば、特許文献2)ものや、逆相のクロックで動作するフリップフロップを該当パスに挿入する(例えば、特許文献3)ものがある。
【0004】
さらに、シフトレジスタ構成をとるスキャンパス構成部に、スキャン時に逆相のクロックで動作するラッチを設けて、スキャン時に半周期の遅延がつくことを選択する(例えば、特許文献4)ものもある。
【0005】
【特許文献1】
特開平11−26591号公報(第5−6項、第2図)
【0006】
【特許文献2】
特許2786017号公報(第2項、第1図)
【0007】
【特許文献3】
特開平7−192043号公報(第8−9項、第2−4図)
【0008】
【特許文献4】
特開2000−310671号公報(第5−6項、第1図)
【0009】
【発明が解決しようとする課題】
機能ブロック間をフリップフロップで同期を取り、データの授受を行う場合は、機能ブロック間のクロックの位相差により、ホールド時間制約を満足しにくいことがある。
【0010】
また、レイアウト後に行う実遅延シミュレーションにおいてホールド制約エラーが発生した部分に対して、遅延素子を有するフリップフロップや逆相のフリップフロップを挿入するものでは、集積回路の微細化や高密度化により挿入するスペースが無いという問題がある。また、配線経路が大きく変わり、周囲の経路の遅延制約を満足させることに対して悪影響を及ぼし、設計完了までの時間を増加させやすく、このため新たに逆相クロックを供給する必要が生じるという問題がある。
【0011】
さらに、スキャン時に半周期の遅延がつくことを選択する構成のフリップフロップ回路を用いる従来の手法では、全てのフリップフロップの回路規模が大きくなるという問題がある。
【0012】
そこで本発明は、このような問題点を解決して、集積回路において、複数の回路ブロック間のデータ授受の際に、ホールド時間制約を満足させることができるようにするとともに、集積回路の設計の後戻りや設計工数の増大を招くことがなく、しかも回路規模の増大を防止できるようにすることを目的とする。
【0013】
【課題を解決するための手段】
これらの課題を解決するために本発明においては、ホールド時間制約を満足させるように、半周期の遅延を有するクロック同期フリップフロップセルを用いることを特徴とする。このような半周期の遅延を有するクロック同期フリップフロップセルを、特にクロックの遅延差が発生しやすいブロック間のデータ授受に用いることで、回路規模の増加を防ぐことができる。
【0014】
また本発明によると、クロック同期フリップフロップよりも後段に半周期の遅延を生成するために、逆相クロックで動作するラッチやフリップフロップを備え、それらをあらかじめ1つのセルにしてあるので、挿入するスペースがなくなることや配線経路が変化することや逆相クロック配線が増加することなどは発生しなくなる。
【0015】
本発明の第1の方法は、ネットリスト記述された、ブロック間の送信側のフリップフロップを半周期遅延セルに置換するに際し、ホールド制約を満足しにくいと予想される部分にレイアウトを行う前にあらかじめ遅延を与えておくものである。これにより、レイアウト後の遅延変動を減少させることが可能となる。また、一律全てのフリップフロップに半周期の遅延を持たせるのではなく、ブロック間に限定することで、回路規模の増加を防ぐことができる。
【0016】
さらに、特定のフリップフロップを指定するセル名リストや、ブロックを指定するブロック名リストや、クロック信号を指定するクロック名リストや、あるクロック信号とそれとは異なる別のクロック信号の組を指定するクロック対リストを用いて、あらかじめ半周期遅延セルに置換するセルを選択しても良い。このように置換するセル数を絞り込むことで、回路規模の増加をさらに減少することができる。
【0017】
本発明の第2の方法は、ネットリスト記述された、ブロック間の信号の送受信がフリップフロップからフリップフロップへのシフトレジスタ構成となっているかどうかを調べ、該当する場合に送信側のフリップフロップを半周期遅延セルに置換するものであって、ホールド制約を満足しにくいと予想される部分にレイアウトを行う前にあらかじめ遅延を与えておくものである。これにより、レイアウト後の遅延変動を減少させることが可能となる。また、一律全てのフリップフロップに半周期の遅延を持たせるのではなく、ブロック間に限定することで、回路規模の増加を防ぐことができる。
【0018】
なお、ネットリスト記述中にある各クロック同期フリップフロップよりも後段に、前記フリップフロップに入力されているクロックの逆相で動作するラッチないし他のフリップフロップが接続されている場合は、ネットリスト中の前記フリップフロップとその後段にあるラッチないし他のフリップフロップをまとめて半周期遅延セルに置換することで、配線数やクロック配線の分岐数を減らすこともできる。
【0019】
本発明の第3の方法は、RTL記述を読み込んで合成する際に、ブロック間の送信側のフリップフロップとして半周期遅延セルを割付けるものであって、ホールド制約を満足しにくいと予想される部分にレイアウトを行う前にあらかじめ遅延を与えておくものである。これにより、レイアウト後の遅延変動を減少させることが可能となる。また、一律全てのフリップフロップに半周期の遅延を持たせるのではなく、ブロック間に限定することで、回路規模の増加を防ぐことができる。
【0020】
さらに、ブロックを指定するブロック名リストや、ブロック間を指定するブロック間リストや、クロック信号を指定するクロック名リストや、あるクロック信号とそれとは異なる別のクロック信号の組を指定するクロック対リストを用いて、半周期遅延セルに割付ける部分をあらかじめ選択しても良い。これにより、割付けするセル数を絞り込むことで、回路規模の増加をさらに減少できる。
【0021】
本発明の第4の方法は、合成時に、ブロック間の信号の送受信が第1のフリップフロップから第2のフリップフロップへのシフトレジスタ構成となっているかどうかを調べ、該当する送信側のフリップフロップとして半周期遅延セルを割付けるものであって、ホールド制約を満足しにくいと予想される部分にレイアウトを行う前にあらかじめ遅延を与えておくものである。これにより、レイアウト後の遅延変動を減少させることが可能となる。また、一律全てのフリップフロップに半周期の遅延を持たせるのではなく、ブロック間に限定することで、回路規模の増加を防ぐことができる。
【0022】
なお、RTL記述中にある各クロック同期フリップフロップよりも後段に、前記フリップフロップに入力されているクロックの逆相で動作するラッチないし他のフリップフロップが接続されている場合は、前記フリップフロップとその後段にあるラッチないし他のフリップフロップをまとめて半周期遅延セルに割付けることで、配線数やクロック配線の分岐数を減らすこともできる。
【0023】
本発明の第5の方法は、合成結果を仮配線遅延を用いてチェックして、タイミング違反を検知した場合において、始点のフリップフロップからの全経路で、半周期以上のホールド違反を起こしているときには、その始点のフリップフロップを半周期遅延セルに置き換えるものであつて、ホールド制約を満足しにくいと予想される部分にレイアウトを行う前にあらかじめ遅延を与えておくものである。
これにより、レイアウト後の遅延変動を減少させることが可能となる。また、一律全てのフリップフロップに半周期の遅延を持たせるのではなく、エラー発生部に限定することで、回路規模の増加を防ぐことができる。
【0024】
なお、半周期未満のホールド違反を起こしている経路がある場合に、その始点となるフリップフロップからの全経路の最大遅延時間が半周期未満の場合は、前記始点となるフリップフロップを半周期遅延セルに置き換えても遅延制約を満足でき、これにより、レイアウト後に遅延を調整する部分を削減することができる。
【0025】
本発明の第6の方法は、SRAM等のマクロにおいて、他のセルよりも比較的大きなホールド時間制約をあらかじめ必要としている場合は、合成用ライブラリ内のセルの入力ホールド時間制約を見てそのセルへの入力信号の始点にあるフリップフロップとして半周期遅延セルを割付けるものであり、ホールド制約を満足しにくいと予想される部分にレイアウトを行う前にあらかじめ遅延を与えておくものである。これにより、レイアウト後の遅延変動を減少させることが可能となる。
【0026】
また、合成用ライブラリ内のセルの入力ホールド時間制約を見る代わりに、合成用ライブラリに半周期遅延セルを割付けることを指示するための属性を与えて、それにより割付けるようにしても良い。
【0027】
さらに、RTL記述に半周期遅延セルを割付けることを指示するための記述をしておき、その記述のあるフリップフロップを割り付けるべき構文に対して、半周期遅延セルを割付けることもできる。
【0028】
【発明の実施の形態】
本発明の実施の形態について、図1から図22を用いて説明する。
(実施の形態1)
図1は請求項1に記載の本発明にもとづく半周期遅延セルの構成を示したものである。
【0029】
図1に示される半周期遅延セル1は、クロック同期フリップフロップ2と、半周期遅延回路3とで構成される。クロック同期フリップフロップ2は、データ入力4の信号を、クロック入力5から与えられるクロック信号の立ち上がりで内部に格納する。格納したデータは、クロック同期フリップフロップ2のデータ出力6から半周期遅延回路3のデータ入力7へ与えられ、半周期遅延回路3でクロック入力5からの信号に対して半周期遅延された後、データ出力8から出力される。
【0030】
図2は、半周期遅延回路3の一例を示す。この遅延回路3は、逆相クロックで動作するラッチ回路である(請求項3に相当)。
データ入力7はトランスファゲート10の入力11に接続される。また、クロック入力5からのクロック信号は、インバータ12に入力されて、トランスファゲート10、インバータ13、トランスファゲート15に出力される。なお、トランスファゲート10はクロック信号が”L”の場合にオンし、トランスファゲート15はクロック信号が”H”の場合にオンするように接続されている。インバータ13の出力は、トランスファゲート10とトランスファゲート15のインバータ12とは逆極性の制御ゲートとに入力される。トランスファゲート10の出力14はトランスファゲート15の出力16とワイヤードオアされてインバータ17に入力される。インバータ17の出力はインバータ20に入力され、インバータ20の出力はデータ出力8として半周期遅延回路3の外に出力される。また、インバータ17の出力はインバータ18に入力される。インバータ18の出力はトランスファゲート15の入力19に接続される。
【0031】
次に簡単に動作を説明する。クロック入力5が”H”の期間は、トランスファゲート10はオフで、トランスファゲート15はオンになる。これにより、インバータ17とインバータ18のループが形成され、期間中ある一定値を出力する。また、クロック入力5が”L”になると、トランスファゲート10はオンで、トランスファゲート15はオフになる。これによりデータ入力7からのデータがインバータ17とインバータ20を通じてデータ出力8から出力される。
【0032】
以上の動作をする半周期遅延回路3を、図1におけるクロック同期フリップフロップ2の後段に接続することで、クロック入力5の立ち上がりで格納されたデータを、クロック入力5の立下り(”L”になる最初)からデータ出力8より出力することとなり、半周期遅延セルとして機能する。
【0033】
図3に、半周期遅延回路3として逆相クロックで動作するクロック同期フリップフロップ回路30を接続した例を示す(請求項4に相当)。
クロック入力5からのクロック信号をインバータ31で反転し、クロック同期フリップフロップ30のクロック入力32から入力する。また、クロック同期フリップフロップ30のデータ入力33は、半周期遅延回路3のデータ入力7と接続し、クロック同期フリップフロップ30のデータ出力34はデータ出力8と接続する。
【0034】
この構成により、クロック入力5の立ち上がりでクロック同期フリップフロップ2に格納されたデータは、次のクロック入力5の立下りでクロック同期フリップフロップ30に格納され、データ出力8として出力される。これにより、クロック入力5の立ち上がりから半周期遅延してデータが出力される。
【0035】
図4に、半周期遅延セルをブロック間での信号の送信側に用いた例を示す(請求項2に相当)。
ブロック(A)50とブロック(B)51との間での信号授受において、ブロック(A)50からブロック(B)51へ信号を伝達する信号線55および信号線56のうち、信号線55は半周期遅延セル52の出力とフリップフロップ58の入力とに接続され、信号線56は半周期遅延セル53の出力とフリップフロップ59の入力とに接続されている。また逆にブロック(B)51からブロック(A)50へ信号を伝達する信号線57は、半周期遅延セル60の出力とフリップフロップ54の入力とに接続されている。また半周期遅延セル52、53とフリップフロップ54とにはバッファ62を通じてクロック61が入力され、フリップフロップ58、59と半周期遅延セル60とにはバッファ63を通じてクロック61が入力される。
【0036】
このような構成をとることで、ブロック(A)50とブロック(B)51との間のデータ授受を行う各フリップフロップ54、58、59と半周期遅延セル52、53、60とにおいて、バッファ62とバッファ63を通じて与えられるクロックの到達時刻に差が有った場合でも、送信側に半周期の遅延を有しているので、クロック信号の到達時間に半周期の差が生じない限り、ホールド時間の制約を違反することは無い。
【0037】
(実施の形態2)
図5は請求項5に記載の本発明の集積回路設計方法のフローを示した図で、RTL記述ステップ100で論理をRTL記述し、そのRTL記述を合成ステップ101で論理回路に割り付けてネットリストを作成する。次に作成したネットリストに対し、置換ステップ102においてブロック間の送信側のフリップフロップを半周期遅延セルに置換する。置換ステップ102での置換後にDFTステップ103でテスト回路挿入を実施したネットリストを作成し、そのネットリストに基づいてレイアウトステップ104でレイアウト作成する。
【0038】
次に置換ステップ102の詳細を説明する。ブロック間の送信側のフリップフロップを半周期遅延セルに置換する場合に、特定のフリップフロップを指定するセル名リスト111、ブロックを指定するブロック名リスト112、ブロック間を指定するブロック間リスト113、クロック信号を指定するクロック名リスト114、あるクロック信号とそれとは異なる別のクロック信号の組を指定するクロック対リスト115をリスト読み込みステップ110で読み込んで、前記複数のリストから半周期遅延セルに置換するブロック間の送信側のフリップフロップを選択し、セル置換ステップ116で半周期遅延セルに置換する。
【0039】
例えば、セル名リスト111を読み込んだ場合は、そのセル名と一致したブロック間の送信側のフリップフロップを選択して置換する(請求項6に相当)。
図6はその様子を示したもので、ブロック(A)120とブロック(B)121とのブロック間において、クロック131からバッファ132、バッファ133を通じて各フリップフロップにクロックが供給され、ブロック間をブロック(A)120からブロック(B)121へと信号線125−127で信号が伝達される構成の場合に、セル名リストから読み込んだセル名に相当する2つのフリップフロップを半周期遅延セル122、123に置換し、リストに記載されていない外のフリップフロップ124、128−130はそのままにする。
【0040】
また例えば、図5においてブロック名リスト112を読み込んだ場合は、ブロック名リスト112にあるブロックに存在するフリップフロップの内、ブロック間の送信側となるものを選択して置換する(請求項7に相当)。
【0041】
図7はその様子を示したもので、ブロック(A)140とブロック(B)141とのブロック間において、クロック151からバッファ152、バッファ153を通じて各フリップフロップ144、148−150にクロックが供給され、ブロック間をブロック(A)140からブロック(B)141へと信号線145、146で信号が伝達され、ブロック(B)141からブロック(A)140へと信号線147で信号が伝達される構成の場合において、ブロック名リスト112にブロック(A)140が記載されているときには、ブロック(A)140が送信側となるフリップフロップを半周期遅延セル142、143に置換し、受け側のフリップフロップ144や、リストに記載されていないブロック(B)のフリップフロップ148−150はそのままにする。
【0042】
さらに例えば、図5においてブロック間リスト113を読み込んだ場合には、リストに記載された一方のブロックと、それと対をなすブロックとの間のデータ授受を行う信号線の送信側のフリップフロップを選択して置換する(請求項8に相当)。
【0043】
図8はその様子を示したもので、ブロック(A)160とブロック(B)161、ブロック(A)160とブロック(C)162とのブロック間において、クロック172からバッファ173‐175を通じて各フリップフロップ165、169−171にクロックが供給され、ブロック間をブロック(A)160からブロック(B)161へと信号線166、167で信号が伝達され、ブロック間をブロック(A)160からブロック(C)162へと信号線168で信号が伝達される構成の場合において、ブロック間リスト113にブロック(A)160とブロック(B)161とが記載されているときには、ブロック(A)160とブロック(B)161との間の信号線166、167において、ブロック(A)160が送信側となるフリップフロップを半周期遅延セル163、164に置換し、受け側のフリップフロップ169、170や、ブロック(A)160からブロック(C)162へのフリップフロップ165、171は、そのままにする。
【0044】
次に、例えばクロック名リスト114を読み込んだ場合は、そのクロックに接続されたフリップフロップの内、ブロック間の送信側となるものを選択して置換する(請求項9に相当)。
【0045】
図9はその様子を示したもので、ブロック(A)180とブロック(B)181とのブロック間において、クロック191からバッファ192、バッファ193を通じて各フリップフロップにクロックが供給され、ブロック間をブロック(A)180からブロック(B)181へと信号線185、186で信号が伝達され、ブロック(B)181からブロック(A)180へと信号線187で信号が伝達される構成の場合において、クロック名リスト114にクロック191が記載されているときには、送信側となるフリップフロップを半周期遅延セル182、183、190に置換し、受け側のフリップフロップ184、188、189はそのままにする。
【0046】
また、例えばクロック対リスト115を読み込んだ場合は、リストに記載された一方のクロックに接続されたフリップフロップの内で、それと対をなすクロックに接続されたフリップフロップに対してブロック間での信号送信をしているものを選択して置換する(請求項10に相当)。
【0047】
図10はその様子を示したもので、ブロック(A)200とブロック(B)201とのブロック間において、クロック211からバッファ212を通じてブロック(A)200の各フリップフロップにクロックが供給され、クロック213からバッファ214を通じてブロック(B)201のフリップフロップ208、209にクロックが供給され、クロック215からバッファ216を通じてブロック(B)201のフリップフロップ210にクロックが供給され、ブロック間をブロック(A)200からブロック(B)201へと信号線205‐207で信号が伝達される構成の場合において、クロック対リスト115にクロック211とクロック213の対が記載されているときには、クロック211に接続されているフリップフロップの内で、それと対をなすクロック213に接続されているフリップフロップに対してブロック間での信号送信をしているフリップフロップを半周期遅延セル202、203に置換し、異なるクロック215との間で信号送信をしているフリップフロップ204や受け側のフリップフロップ208−210はそのままにする。
【0048】
(実施の形態3)
図11は、請求項11に記載の集積回路設計方法のフローを示したものである。まず、RTL記述ステップ300で論理をRTL記述し、そのRTL記述を合成ステップ301で論理回路に割り付けてネットリストを作成する。次に、作成したネットリストに対し、シフトレジスタ調査ステップ302で、ブロック間の信号の送受信が、フリップフロップからフリップフロップへのシフトレジスタ構成となっているか否かを調べ、置換ステップ303においてシフトレジスタ調査ステップ302の調査結果を基にブロック間の送信側のフリップフロップを半周期遅延セルに置換する。置換ステップ303での置換後にDFTステップ304でテスト回路挿入を実施したネットリストを作成し、そのネットリストに基づいてレイアウトステップ305でレイアウト作成する。
【0049】
図12はその様子を示したもので、ブロック(A)310とブロック(B)311とのブロック間において、クロック321からバッファ322、バッファ323を通じて各フリップフロップにクロックが供給され、ブロック間をブロック(A)310からブロック(B)311へと信号線315、316で信号が伝達され、ブロック(B)311からブロック(A)310へと信号線317で信号が伝達され、信号線316はブロック(B)311内のゲート325に入力されて信号線324と論理和をとった後にフリップフロップ319に入力される構成の場合には、シフトレジスタ調査ステップ302において、信号線315と信号線317で接続された2組のフリップフロップ間がシフトレジスタ構成になっていることが判明したときに、置換ステップ303では、その結果を受けて、送信側のフリップフロップを半周期遅延セル312、320に置換し、途中にゲート325のあるフリップフロップ313や、受信側のフリップフロップ314、318、319はそのままにする。
【0050】
(実施の形態4)
図13は、請求項12に記載の集積回路設計方法のフローを示したものである。まず、RTL記述ステップ400で論理をRTL記述し、そのRTL記述を合成ステップ401で論理回路に割り付けてネットリストを作成する。次に作成したネットリストに対し、逆相クロック接続調査ステップ402で、各クロック同期フリップフロップの後段に、前記フリップフロップに入力されているクロックの逆相で動作するラッチないしフリップフロップが接続されているかどうかを調べ、置換ステップ403において逆相クロック接続調査ステップ402の調査結果を基にネットリスト中の前記フリップフロップとそれよりも後段にあるラッチないしフリップフロップをまとめて半周期遅延セルに置換する。置換ステップ403での置換後にDFTステップ404でテスト回路挿入を実施したネットリストを作成し、そのネットリストに基づいてレイアウトステップ405でレイアウト作成する。
【0051】
図14はその様子を示した図で、(a)は合成ステップ401で論理回路に割り付けたネットリストの一部である。ここで、信号線500とクロック501がフリップフロップ502に入力されている。また、クロック501はインバータ503を通じてフリップフロップ505に供給されている。このとき、フリップフロップ505はフリップフロップ502に対しクロックの逆相で動作していることになる。フリップフロップ502の出力は信号線504を通じてフリップフロップ505に入力されている。フリップフロップ505の出力は信号線506を通じて次の回路に接続される。
【0052】
(b)は置換ステップ403で置換処理した後を示したものである。ここでは、逆相クロック接続調査ステップ402において、(a)のフリップフロップ502とフリップフロップ505が、クロック同期フリップフロップよりも後段に、このフリップフロップに入力されているクロックの逆相で動作するフリップフロップがある構成になっていることが判明する。そこで、置換ステップ403において、インバータ503、フリップフロップ505、信号線504を削除し、フリップフロップ502を半周期遅延セル510に置換する。
【0053】
(実施の形態5)
図15は請求項13に記載の集積回路設計方法のフローを示したもので、RTL記述ステップ600で論理をRTL記述し、そのRTLを読み込みステップ601で読み込み、読み込んだRTL記述を合成ステップ602で論理回路に割り付けてネットリストを作成する。
【0054】
次に合成ステップ602の詳細を説明する。ブロック間の送信側のフリップフロップを半周期遅延セルに置換する場合に、ブロックを指定するブロック名リスト610、ブロック間を指定するブロック間リスト611、クロック信号を指定するクロック名リスト612、あるクロック信号とそれとは異なる別のクロック信号の組を指定するクロック対リスト613をリスト読み込みステップ614で読み込む。そして、セル合成ステップ615において、論理合成を行う場合に、リストに該当する構成のフリップフロップとして半周期遅延セルを割り付け、ネットリストを作成する。
【0055】
例えば、ブロック名リスト610を読み込んだ場合は、このブロック名リスト610にあるブロックの論理を合成するときにおいて、フリップフロップを割り付ける際に、ブロック間の送信側となるものについては半周期遅延セルを割り付ける(請求項14に相当)。
【0056】
次に例えば、ブロック間リスト611を読み込んだ場合は、このブロック間リスト611に記載された第1のブロックと、それと対をなす第2のブロックとの論理を合成するときにおいて、第1のブロックのフリップフロップを割り付ける際に第2のブロックへ信号を出力する場合には半周期遅延セルを割り付け、逆に第2のブロックのフリップフロップを割り付ける際に第1のブロックへ信号を出力する場合には半周期遅延セルを割り付ける(請求項15に相当)。
【0057】
また例えば、クロック名リスト612を読み込んだ場合は、このクロック名リスト612に記載されたクロックに接続されているフリップフロップを割り付ける際に、ブロック間の送信側となるものについては半周期遅延セルを割り付ける(請求項16に相当)。
【0058】
さらに例えば、クロック対リスト613を読み込んだ場合は、このクロック対リスト613に記載された第1のクロックと、それと対をなす第2のクロックに接続されたフリップフロップを割り付ける際に、第1のクロックのフリップフロップから異なるブロック間の第2のクロックに接続されたフリップフロップへの送信がある場合は、第1のクロックのフリップフロップとして半周期遅延セルを割り付け、逆に第2のクロックのフリップフロップから異なるブロック間の第1のクロックに接続されたフリップフロップへの送信がある場合は、第2のクロックのフリップフロップとして半周期遅延セルを割り付ける(請求項17に相当)。
【0059】
(実施の形態6)
図16は、本発明の請求項18、19に記載の集積回路設計方法のフローを示したものである。ここでは、RTL記述ステップ700で論理をRTL記述し、そのRTLを読み込みステップ701で読み込み、読み込んだRTL記述を合成ステップ702で論理回路に割り付けてネットリストを作成する。合成ステップ702において、例えば図17に示すようなRTL記述の割付を行う際に、BLOCKAのRTL記述(RTL記述711)のフリップフロップ(REGA記述712)出力が、BLOCKBのRTL記述(RTL記述713)のフリップフロップ(REGB)入力に、上位階層のRTL記述(RTL記述710)内の配線(NETA接続記述715)で一対一接続される。そして、フリップフロップBの記述(REGB記述714)がNETAからの信号を単にクロック(CLKB)の立ち上がりで格納するものである場合は、フリップフロップAに半周期遅延セルを割り付けるようにする(請求項18に相当)。
【0060】
また、合成ステップ702において、例えば図18に示すようなRTL記述750の割付を行う際に、RTL記述750内のフリップフロップAの記述(REGA記述751)の出力(OUTA)がフリップフロップBの記述(REGB記述752)における一対一接続された入力となり、かつREGB記述752がOUTAからの信号を単にそのクロックで取り込む構成で、なおかつREGA記述751のクロック記述とREGB記述752のクロック記述が逆相の関係の場合は、REGA記述751とREGB記述752とをまとめて、入力(INA)を取り込んで出力(OUTB)する半周期遅延セルを割り付けるようにする(請求項19に相当)。
【0061】
(実施の形態7)
図19は、本発明の請求項20、21に記載の集積回路設計方法のフローを示すものである。RTL記述ステップ800で論理をRTL記述し、そのRTLを読み込みステップ801で読み込み、読み込んだRTL記述を合成ステップ802で論理回路に割り付けてネットリストを作成し、作成したネットリストについてタイミングチェックステップ803で仮配線遅延を用いて合成結果のタイミングをチェックし、判別ステップ804において前記タイミングチェックステップ803で違反が無い場合はそのまま終了し、違反がある場合には修正ステップ805で修正を施して終了する。
【0062】
修正ステップ805においては、違反個所を修正する場合に、始点のフリップフロップからの全経路で半周期以上のホールド違反を起こしている場合は、その始点フリップフロップを半周期遅延セルに置き換える(請求項20に相当)。
【0063】
また始点のフリップフロップからの全経路の内、少なくとも1つの経路が半周期未満のホールド違反を起こしている場合において、始点フリップフロップからの全経路の最大遅延時間が半周期未満であるとき、すなわち半周期遅れても違反が生じないときにも、始点フリップフロップを半周期遅延セルに置き換える(請求項21に相当)。
【0064】
(実施の形態8)
図20は、本発明の請求項22、23に記載の集積回路設計方法のフローを示したものである。ここで、RTL記述ステップ850で論理をRTL記述し、そのRTLを読み込みステップ851で読み込む。次にホールド時間判別ステップ853において、セルライブラリ852を参照し、読み込んだRTL内で利用されるライブラリセルのうち、閾値854で与えられる値以上のセルがあった場合には、そのライブラリセルにおいて、前記セルの入力に接続される信号線の始点となるフリップフロップを半周期遅延セルとする属性を付加する。合成ステップ855では、属性があるライブラリセルの入力に接続される始点のフリップフロップとして半周期遅延セルを割り付けて、ネットリストを作成する(請求項22に相当)。
【0065】
なお、セルライブラリ852にある、ホールド時間がある閾値以上必要なセルについては、あらかじめ前記セルの入力に接続される信号線の始点となるフリップフロップを半周期遅延セルとする属性を付加することで、ホールド時間判別ステップ853を省略することもできる(請求項23に相当)。
【0066】
(実施の形態9)
図21は、請求項24に記載の集積回路設計方法のフローを示したものであるる。これは、RTL記述ステップ860で論理をRTL記述し、そのRTLを読み込みステップ861で読み込み、読み込んだRTL記述を合成ステップ862で論理回路に割り付けてネットリストを作成する構成である。ここで、RTLを読み込むための読み込みステップ861は、RTL記述の内容を解析し、半周期遅延セルを割付けることを指示するための記述が有るかどうかを調べる。このために読み込みステップ861は、記述解析ステップ870と、その結果を受けて、該当したフリップフロップに半周期遅延セルを割り付けることを指示する、半周期遅延セル割り付け指示ステップ871とからなる。合成ステップ862では、半周期遅延セル割り付け指示ステップ871で指示されたフリップフロップに半周期遅延セルを割り付ける。
【0067】
図22は、RTL記述に半周期遅延セルを割付けることを指示するための記述を与える一例を示したもので、RTL記述880中に半周期遅延セル割り付け記述881を記載し、そのすぐ下にあるフリップフロップの記述(REG記述882)の部分を図21の半周期遅延セル割り付け指示ステップ871で指定するようにしたものである。
【0068】
ここで、例えば、半周期遅延セル割り付け記述881の先頭に”//”を記載した場合は、シミュレーションで無視するように取り決めておくこともできる(請求項25に相当)。
【0069】
また、たとえ半周期遅延セル割り付け記述881が有ったとしても、合成用のライブラリとして半周期遅延セルが存在しない場合には、無視するようにしても良い(請求項26に相当)。
【0070】
【発明の効果】
請求項1に記載の本発明によれば、半周期遅延セルを、通常のフリップフロップと置換して用いることで、簡単にホールド時間をクロックサイクルの半周期として確保することができる。
【0071】
また特にクロックの遅延差が発生しやすいブロック間のデータ授受に用いることで、回路規模の増加を防ぐことができる(請求項2)。
また、半周期遅延セルとして、クロック同期フリップフロップよりも後段に、半周期の遅延を生成する回路として、逆相クロックで動作するラッチ回路や逆相クロックで動作するクロック同期フリップフロップ回路を備えた構成にすることで、それらをあらかじめ1つのセルにしてあることから、挿入するスペースがなくなることや配線経路が変化することや逆相クロック配線が増加することといった問題は発生しなくなる(請求項3、4)。
【0072】
請求項5に記載の本発明の集積回路設計方法によれば、レイアウトを行う前に、ネットリスト記述されたブロック間の送信側のフリップフロップを半周期遅延セルに置換することで、ホールド制約を満足しにくいと予想される部分にあらかじめ遅延を与えることで、レイアウト後のホールド時間を満足させ、レイアウト後の遅延変動を減少させることが可能となる。また、一律全てのフリップフロップに半周期の遅延を持たせるのではなく、ブロック間に限定することで、回路規模の増加を防ぐことができる。
【0073】
さらに、特定のフリップフロップを指定するセル名リストや、ブロックを指定するブロック名リストや、クロック信号を指定するクロック名リストや、あるクロック信号とそれとは異なる別のクロック信号の組を指定するクロック対リストを用いて、半周期遅延セルに置換するセルをあらかじめ選択しても良い。このようにすると、置換するセル数を絞り込むことで、回路規模の増加をさらに減少できる(請求項6−10)。
【0074】
また、請求項11に記載の本発明の集積回路設計方法によれば、ネットリスト記述されたブロック間の信号の送受信が、フリップフロップからフリップフロップへのシフトレジスタ構成となっているかどうかを調べ、該当する場合に送信側のフリップフロップを半周期遅延セルに置換することで、ホールド制約を満足しにくいと予想される部分にレイアウトを行う前にあらかじめ遅延を与えることで、レイアウト後のホールド時間を満足させ、レイアウト後の遅延変動を減少させることが可能となる。さらに、一律全てのフリップフロップに半周期の遅延を持たせるのではなく、ブロック間に限定することで、回路規模の増加を防ぐことができる。
【0075】
なお、ネットリスト記述中にある各クロック同期フリップフロップよりも後段に、前記フリップフロップに入力されているクロックの逆相で動作するラッチないし他のフリップフロップが接続されている場合は、ネットリスト中の前記フリップフロップとそれよりも後段にあるラッチないし他のフリップフロップをまとめて半周期遅延セルに置換することで、配線数やクロック配線の分岐数を減らすこともできる(請求項12)。
【0076】
さらに、請求項13に記載の本発明の集積回路設計方法によれば、RTL記述を読み込んで合成する際に、ブロック間の送信側のフリップフロップとして半周期遅延セルを割付けて、ホールド制約を満足しにくいとレイアウトを行う前に予想される部分にあらかじめ遅延を与えることで、レイアウト後のホールド時間を満足させ、レイアウト後の遅延変動を減少させることが可能となる。また、一律全てのフリップフロップに半周期の遅延を持たせるのではなく、ブロック間に限定することで、回路規模の増加を防ぐことができる。
【0077】
さらに、ブロックを指定するブロック名リストや、ブロック間を指定するブロック間リストや、クロック信号を指定するクロック名リストや、あるクロック信号とそれとは異なる別のクロック信号の組を指定するクロック対リストを用いて、あらかじめ半周期遅延セルに割付ける部分を選択しても良い。このようにすると、割付けするセル数を絞り込むことで、回路規模の増加をさらに減少することができる(請求項14‐17)。
【0078】
請求項18に記載の本発明の集積回路設計方法によれば、合成時のブロック間の信号の送受信がフリップフロップからフリップフロップへのシフトレジスタ構成となっているかどうかを調べ、該当する送信側のフリップフロップとして半周期遅延セルを割付けて、ホールド制約を満足しにくいとレイアウトを行う前に予想される部分にあらかじめ遅延を与えることで、レイアウト後のホールド時間を満足させ、レイアウト後の遅延変動を減少させることが可能となる。また、一律全てのフリップフロップに半周期の遅延を持たせるのではなく、ブロック間に限定することで、回路規模の増加を防ぐことができる。
【0079】
なお、RTL記述中にある各クロック同期フリップフロップよりも後段に、前記フリップフロップに入力されているクロックの逆相で動作するラッチないし他のフリップフロップが接続されている場合は、前記フリップフロップとその後段にあるラッチないし他のフリップフロップをまとめて半周期遅延セルに割付けることで、配線数やクロック配線の分岐数を減らすこともできる(請求項19)。
【0080】
また、請求項20に記載の本発明の集積回路設計方法によれば、仮配線遅延を用いてタイミング違反を検知することで、半周期遅延セルに置き換えるために、ホールド制約を満足しにくいとレイアウトを行う前に予想される部分にあらかじめ遅延を与えることで、レイアウト後のホールド時間を満足させ、レイアウト後の遅延変動を減少させることが可能となる。また、一律全てのフリップフロップに半周期の遅延を持たせるのではなく、エラー発生部に限定することで、回路規模の増加を防ぐことができる。
【0081】
なお、半周期未満のホールド違反を起こしている経路がある場合に、その始点となるフリップフロップからの全経路の最大遅延時間が半周期未満の場合は、前記始点となるフリップフロップを半周期遅延セルに置き換えても遅延制約を満足でき、これにより、レイアウト後に遅延を調整する部分を削減することができる(請求項21)。
【0082】
請求項22に記載の本発明の集積回路設計方法によれば、SRAM等のマクロにおいて、比較的大きなホールド時間制約をあらかじめ必要とすることが判っている場合に、合成用ライブラリ内のセルの入力ホールド時間制約を見て、そのセルへの入力信号の始点にあるフリップフロップとして半周期遅延セルを割付ける様にして合成し、ホールド制約を満足しにくいとレイアウトを行う前に予想される部分にあらかじめ遅延を与えることで、レイアウト後のホールド時間を満足させ、レイアウト後の遅延変動を減少させることが可能となる。
【0083】
また、合成用ライブラリ内のセルの入力ホールド時間制約を見る代わりに、合成用ライブラリに半周期遅延セルを割付けることを指示するための属性を与えて、それにより割付けるようにしても良い(請求項23)。
【0084】
さらに、RTL記述に半周期遅延セルを割付けることを指示するための記述をしておき、その記述のあるフリップフロップを割り付けるべき構文に対して、半周期遅延セルを割付けることもできる(請求項24)。
【0085】
なお、半周期遅延セルを割付ける記述は論理シミュレーションで無視されるようにしておくとより良い(請求項25)。
また、半周期遅延セルを割付ける記述があっても、合成用ライブラリに半周期遅延セルが無い場合には、普通のフリップフロップを割り付けるようにすれば、RTL記述を半周期遅延セルの有無に関係なく共通化できる。
【図面の簡単な説明】
【図1】本発明の実施の形態1の集積回路における半周期遅延セルの構成を示した図
【図2】図1における半周期遅延回路の例を示した図
【図3】本発明の実施の形態1の集積回路におけるクロック同期フリップフロップ回路を接続した半周期遅延回路の例を示した図
【図4】本発明にもとづき半周期遅延セルをブロック間での信号の送信側に用いた例を示した図
【図5】本発明の実施の形態2の集積回路設計方法のフローを示した図
【図6】図5におけるセル名リストを用いて半周期遅延セルに置換する様子を示した図
【図7】図5におけるブロック名リストを用いて半周期遅延セルに置換する様子を示した図
【図8】図5におけるブロック間リストを用いて半周期遅延セルに置換する様子を示した図
【図9】図5におけるクロック名リストを用いて半周期遅延セルに置換する様子を示した図
【図10】図5におけるクロック対リストを用いて半周期遅延セルに置換する様子を示した図
【図11】本発明の実施の形態3の集積回路設計方法のフローを示した図
【図12】図11のフローにおける半周期遅延セルに置換する様子を示した図
【図13】本発明の実施の形態4の集積回路設計方法のフローを示した図
【図14】図13のフローにおける半周期遅延セルに置換する様子を示した図
【図15】本発明の実施の形態5の集積回路設計方法のフローを示した図
【図16】本発明の実施の形態6の集積回路設計方法のフローを示した図
【図17】図16のフローにおけるRTL記述の例を示した図
【図18】図16のフローにおけるRTL記述の他の例を示した図
【図19】本発明の実施の形態7の集積回路設計方法のフローを示した図
【図20】本発明の実施の形態8の集積回路設計方法のフローを示した図
【図21】本発明の実施の形態9の集積回路設計方法のフローを示した図
【図22】図21のフローにおける半周期遅延セルを割付けることを指示するためのRTL記述を示した図
【符号の説明】
1 半周期遅延セル
2 クロック同期フリップフロップ
3 半周期遅延回路
4 データ入力
5 クロック入力
8 データ出力
50 ブロック(A)
51 ブロック(B)
52 半周期遅延セル
53 半周期遅延セル
54 フリップフロップ
58 フリップフロップ
59 フリップフロップ
60 半周期遅延セル
61 クロック
62 バッファ
63 バッファ
Claims (26)
- クロック同期フリップフロップよりも後段に半周期の遅延を生成する回路を設けた集積回路。
- ブロック間での信号の送信側に半周期遅延生成回路を設けた請求項1記載の集積回路。
- クロック同期フリップフロップよりも後段に設けられた半周期の遅延を生成する回路が、逆相クロックで動作するラッチ回路である請求項1記載の集積回路。
- クロック同期フリップフロップよりも後段に設けられた半周期の遅延を生成する回路が、逆相クロックで動作するクロック同期フリップフロップ回路である請求項1記載の集積回路。
- ネットリスト記述された、ブロック間の送信側のフリップフロップを、半周期遅延セルに置換する置換ステップを有する集積回路設計方法。
- 特定のフリップフロップを指定するセル名リストを読み込むステップを有するとともに、前記リストに該当するフリップフロップを半周期遅延セルに置換する置換ステップを有する請求項5記載の集積回路設計方法。
- ブロックを指定するブロック名リストを読み込むステップを有するとともに、前記リストに該当するフリップフロップを半周期遅延セルに置換する置換ステップを有する請求項5記載の集積回路設計方法。
- 対をなすブロックどうしを指定するブロック間リストを読み込むステップを有するとともに、前記リストに該当するフリップフロップを半周期遅延セルに置換する置換ステップを有する請求項5記載の集積回路設計方法。
- クロック信号を指定するクロック名リストを読み込むステップを有するとともに、前記リストに該当するクロックで動作するブロック間の送信側のフリップフロップを半周期遅延セルに置換する置換ステップを有する請求項5記載の集積回路設計方法。
- あるクロック信号とそれとは異なる別のクロック信号との組を指定するクロック対リストを読み込むステップを有するとともに、前記リストに該当するクロックの組で動作するブロック間の送受信信号系において送信側のフリップフロップを半周期遅延セルに置換する置換ステップを有する請求項5記載の集積回路設計方法。
- ブロック間の信号の送受信がフリップフロップからフリップフロップへのシフトレジスタ構成となっているかどうかを調べるシフトレジスタ調査ステップと、このシフトレジスタ調査ステップの調査結果から、ネットリスト中の送信側のフリップフロップを半周期遅延セルに置換する置換ステップとを有する請求項5記載の集積回路設計方法。
- ネットリスト記述中にある各クロック同期フリップフロップよりも後段に、前記フリップフロップに入力されているクロックの逆相で動作するラッチないしフリップフロップが接続されているかどうかを調べる逆相クロック接続調査ステップと、この逆相クロック接続調査ステップの調査結果から、ネットリスト中の前記フリップフロップとそれよりも後段にあるラッチないしフリップフロップをまとめて半周期遅延セルに置換する置換ステップとを有する集積回路設計方法。
- RTL記述を読み込むための読み込みステップと、読み込んだRTL記述から論理を合成するための合成ステップとを有し、この合成ステップにおいて、ブロック間の送信側のフリップフロップとして半周期遅延セルを割付ける集積回路設計方法。
- ブロックを指定するブロック名リストを読み込むステップを有し、合成ステップにおいて、前記リストに該当するブロックの送信側のフリップフロップとして半周期遅延セルを割付ける請求項13記載の集積回路設計方法。
- ブロック間を指定するブロック間リストを読み込むステップを有し、合成ステップにおいて、前記リストに該当するブロック間の送信側のフリップフロップとして半周期遅延セルを割付ける請求項13記載の集積回路設計方法。
- クロック信号を指定するクロック名リストを読み込むステップを有し、合成ステップにおいて、前記リストに該当するクロックで動作するブロック間の送信側のフリップフロップとして半周期遅延セルを割付ける請求項13記載の集積回路設計方法。
- あるクロック信号とそれとは異なる別のクロック信号との組を指定するクロック対リストを読み込むステップを有し、合成ステップにおいて、前記リストに該当するクロックの組で動作するブロック間の送受信信号系に対し、送信側のフリップフロップとして半周期遅延セルを割付ける請求項13記載の集積回路設計方法。
- RTL記述を読み込むための読み込みステップと、読み込んだRTL記述から論理を合成するための合成ステップとを有し、この合成ステップにおいて、ブロック間の信号の送受信が、第1のフリップフロップから第2のフリップフロップへのシフトレジスタ構成となっているかどうかを調べて、該当する送信側のフリップフロップとして半周期遅延セルを割付ける請求項13記載の集積回路設計方法。
- RTL記述を読み込むための読み込みステップと、読み込んだRTL記述から論理を合成するための合成ステップとを有し、この合成ステップにおいて、クロック同期フリップフロップよりも後段に、このフリップフロップに入力されているクロックの逆相で動作するラッチないし他のフリップフロップが接続されているかどうかを調べ、該当する前記フリップフロップとそれよりも後段にあるラッチないし他のフリップフロップをまとめて半周期遅延セルとして割付ける集積回路設計方法。
- RTL記述を読み込むための読み込みステップと、読み込んだRTL記述から論理を合成するための合成ステップと、仮配線遅延を用いて合成結果のタイミングをチェックすることでタイミング違反を検知するためのタイミングチェックステップと、タイミング違反が発生した場合にそれを修正するための修正ステップとを有し、前記修正ステップにおいて、始点のフリップフロップからの全経路で半周期以上のホールド違反を起こしている場合は、前記始点のフリップフロップを半周期遅延セルに置き換える集積回路設計方法。
- 修正ステップにおいて、半周期未満のホールド違反を起こしている経路がある場合に、その始点のフリップフロップからの全経路の最大遅延時間が半周期未満の場合は、前記始点のフリップフロップを半周期遅延セルに置き換える請求項20記載の集積回路設計方法。
- RTL記述を読み込むための読み込みステップと、合成用ライブラリ内のセルの入力ホールド時間がある閾値以上であるかどうかを判別するためのホールド時間判別ステップと、読み込んだRTL記述から論理を合成するための合成ステップとを有し、前記ホールド時間判別ステップにおいて閾値以上のセルがあった場合には、そのセルへの入力信号の始点にあるフリップフロップとして、半周期遅延セルを割付けることを特徴とする集積回路設計方法。
- RTL記述を読み込むための読み込みステップと、読み込んだRTL記述から論理を合成するための合成ステップとを有し、入力ホールド時間がある閾値以上必要なセルについては、合成用ライブラリに半周期遅延セルを割付けることを指示するための属性を与えておき、前記合成ステップにおいて、前記入力ホールド時間がある閾値以上必要なセルを割り付けた場合には、そのセルへの入力信号の始点にあるフリップフロップとして半周期遅延セルを割付ける集積回路設計方法。
- RTL記述を読み込むための読み込みステップと、読み込んだRTL記述から論理を合成するための合成ステップとを有し、前記読み込みステップにおいて、RTL記述に半周期遅延セルを割付けることを指示するための記述を有する部分があった場合には、前記合成ステップにおいて前記記述部分を半周期遅延セルとする集積回路設計方法。
- 半周期遅延セルを割付けることを指示するための記述を、RTLシミュレーションでは無視されるように記述する請求項24記載の集積回路設計方法。
- 半周期遅延セルを割付けることを指示するための記述を、合成ライブラリ内に半周期遅延セルが存在しない場合には無視されるように記述する請求項24記載の集積回路設計方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2002353159A JP2004186515A (ja) | 2002-12-05 | 2002-12-05 | 集積回路およびその設計方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2002353159A JP2004186515A (ja) | 2002-12-05 | 2002-12-05 | 集積回路およびその設計方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2004186515A true JP2004186515A (ja) | 2004-07-02 |
Family
ID=32754514
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2002353159A Pending JP2004186515A (ja) | 2002-12-05 | 2002-12-05 | 集積回路およびその設計方法 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2004186515A (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2010101029A1 (ja) * | 2009-03-03 | 2010-09-10 | 日本電気株式会社 | 半導体集積回路設計装置、半導体集積回路設計方法、及び半導体集積回路設計プログラム |
-
2002
- 2002-12-05 JP JP2002353159A patent/JP2004186515A/ja active Pending
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2010101029A1 (ja) * | 2009-03-03 | 2010-09-10 | 日本電気株式会社 | 半導体集積回路設計装置、半導体集積回路設計方法、及び半導体集積回路設計プログラム |
JPWO2010101029A1 (ja) * | 2009-03-03 | 2012-09-06 | 日本電気株式会社 | 半導体集積回路設計装置、半導体集積回路設計方法、及び半導体集積回路設計プログラム |
US8438518B2 (en) | 2009-03-03 | 2013-05-07 | Nec Corporation | Apparatus for designing semiconductor integrated circuit, method of designing semiconductor integrated circuit, and program for designing semiconductor integrated circuit |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8291358B2 (en) | Synchronous to asynchronous logic conversion | |
US8717078B2 (en) | Sequential latching device with elements to increase hold times on the diagnostic data path | |
US8484523B2 (en) | Sequential digital circuitry with test scan | |
US7583106B2 (en) | Clock circuitry | |
US7254796B2 (en) | Method for synthesizing domino logic circuits cross reference to related patent application using partition | |
US7821850B2 (en) | Semiconductor digital circuit, FIFO buffer circuit, and data transferring method | |
JP2007170959A (ja) | 半導体集積回路とその設計方法 | |
JP2010277230A (ja) | 半導体集積回路の設計装置 | |
US6711089B2 (en) | Method and apparatus for performing signal synchronization | |
US20090271747A1 (en) | Logic circuit designing device, logic circuit designing method and logic circuit designing program for asynchronous logic circuit | |
JP2005303464A (ja) | フリップフロップ | |
TWI528720B (zh) | 用於低擺時脈之免競爭位準轉換正反器 | |
JP2002524790A (ja) | 同期多相クロック分配システム | |
US20110181331A1 (en) | Integrated circuit with leakage reduction in static nets | |
US7676685B2 (en) | Method for improving the data transfer in semi synchronous clock domains integrated circuits at any possible m/n clock ratio | |
JP2004186515A (ja) | 集積回路およびその設計方法 | |
WO2012042586A1 (ja) | 集積回路 | |
US6412099B1 (en) | Apparatus and method for converting logical connection information of circuit | |
JPH10133768A (ja) | クロックシステム、半導体装置、半導体装置のテスト方法、及びcad装置 | |
US7231620B2 (en) | Apparatus, generator, and method for clock tree synthesis | |
JP2011090493A (ja) | 回路設計装置及び方法 | |
JP4649064B2 (ja) | 出力回路 | |
Gilla | Silicon compilation and test for dataflow implementations in GasP and Click | |
JP5417874B2 (ja) | フリップフロップ回路 | |
Smith et al. | Low-latency multiple clock domain interfacing without alteration of local clocks |