(57)【要約】【課題】外部タイミングを考慮したピン配置設計を行う回路設計支援装置を提供する。【解決手段】記憶部１は、ピン配置表と、ピン一覧表とを記憶する。仮配置部４１は、ピン配置表及びピン一覧表を基に各端子の仮の配置を行う。タイミング判定部５は、各端子からのデータ信号又はクロック信号の遅延量を求め、データ信号の遅延量がクロック信号の遅延量に対して前記許容範囲に収まるか否かを判定する。配置位置変更部４２は、タイミング判定部５により前記許容範囲に収まらないと判定されたデータ信号がある場合、ピン配置表及びピン一覧表を基に許容範囲に収まらないデータ信号の入力を受けた端子の位置を変更する。制御部６は、各端子におけるデータ信号の遅延量が許容範囲内に収まると判定されるまで、配置位置変更部４２による端子の位置の変更及びタイミング判定部５による判定を繰り返させる。【選択図】図１
2012027861.tif 000002
【特許請求の範囲】
【請求項１】
クロック信号が生成するタイミングに基づいてデータ信号の処理を行う回路における各端子の位置を表すピン配置表と、前記クロック信号に対する前記データ信号の遅延量の許容範囲並びに前記回路に入力される時点での前記クロック信号の遅延量及び前記データ信号の遅延量の補正に用いるパラメータを含むタイミング設計情報が記載されたピン一覧表とを記憶する記憶部と、
前記ピン配置表及び前記ピン一覧表を基に各前記端子の仮の配置を行う仮配置部と、
前記タイミング設計情報及び各前記端子の配置位置を基に、各前記端子からの前記データ信号又は前記クロック信号の遅延量を求め、当該求めた結果を基に前記データ信号の遅延量が前記クロック信号の遅延量に対して前記許容範囲に収まるか否かを判定するタイミング判定部と、
前記タイミング判定部により前記許容範囲に収まらないと判定された前記データ信号がある場合、前記ピン配置表及び前記ピン一覧表を基に許容範囲に収まらない前記データ信号の入力を受けた端子の位置を変更する配置位置変更部と、
前記タイミング判定部により各前記端子における前記データ信号の遅延量が許容範囲内に収まると判定されるまで、前記配置位置変更部による端子の位置の変更及び前記タイミング判定部による判定を繰り返させる制御部と、
前記タイミング判定部により各前記端子における前記データ信号の遅延量が許容範囲に収まると判定された場合、当該許容範囲に収まると判定された状態の各前記端子の位置を出力する出力部と
を備えることを特徴とする回路設計支援装置。
【請求項２】
前記配置位置変更部は、クロック専用入力端子及びリセット専用入力端子のみを位置固定の専用端子へ配置した状態で、許容範囲に収まらない前記データ信号の入出力を行った端子を配置し、その後残りの端子の配置を行うことを特徴とする請求項１に記載の回路設計支援装置。
【請求項３】
前記許容範囲は、前記データ信号の遅延量が前記クロック信号の遅延量より大きい場合の遅延量の差の第１閾値、及び前記データ信号の遅延量が前記クロック信号の遅延量より小さい場合の入力タイミングの差の第２閾値で表され、
前記タイミング判定部は、前記データ信号の遅延量と前記クロック信号の遅延量との差が、前記第１閾値を越える場合、該データ信号を出力した端子の位置を該データ信号の遅延量が減少するように変更し、前記データ信号の遅延量と前記クロック信号の遅延量との差が、前記第２閾値を超える場合、該データ信号を出力した端子の位置を該データ信号の遅延量が増加するように変更する
ことを特徴とする請求項１又は請求項２に記載の回路設計支援装置。
【請求項４】
前記タイミング判定部は、各前記端子に接続される部品から前記回路までの配線長及び前記回路内の信号経路の配線長を基に前記クロック信号及び前記データ信号の遅延量を求めることを特徴とする請求項１乃至請求項３のいずれか一つに記載の回路設計支援装置。
【請求項５】
前記配置位置変更部は、許容範囲に収まらない前記データ信号の入力を受けた端子の位置が変更可能か否かを判定し、
前記制御部は、前記配置位置変更部により許容範囲に収まらない前記データ信号の入力を受けた端子の位置の変更が不可と判定された場合、前記タイミング判定部により各前記端子における前記データ信号の遅延量が許容範囲内に収まると判定されなくても、許容範囲に収まらない前記データ信号の入力を受けた端子の位置の変更を中止し、エラーの通知を行う
ことを特徴とする請求項１乃至請求項４のいずれか一つに記載の回路設計支援装置。
【請求項６】
クロック信号が生成するタイミングに基づいてデータ信号の処理を行う回路における各端子の位置を表すピン配置表と、前記クロック信号に対する前記データ信号の遅延量の許容範囲並びに前記回路に入力される時点での前記クロック信号の遅延量及び前記データ信号の遅延量の補正に用いるパラメータを含むタイミング設計情報が記載されたピン一覧表とを記憶させる記憶ステップと、
前記ピン配置表及び前記ピン一覧表を基に各前記端子の仮の配置を行う仮配置ステップと、
前記タイミング設計情報及び各前記端子の配置位置を基に、各前記端子からの前記データ信号又は前記クロック信号の遅延量を求め、当該求めた結果を基に前記データ信号の遅延量が前記クロック信号の遅延量に対して前記許容範囲に収まるか否かを判定するタイミング判定ステップと、
前記タイミング判定ステップにおいて前記許容範囲に収まらないと判定された前記データ信号がある場合、前記ピン配置表及び前記ピン一覧表を基に前記許容範囲に収まらない前記データ信号の入力を受けた端子の位置を変更する配置位置変更部と、
各前記端子における前記データ信号の遅延量が許容範囲内に収まると判定されるまで、前記配置位置変更ステップにおける端子の位置の変更及び前記タイミング判定ステップにおける前記判定を繰り返させる繰り返し制御ステップと、
前記タイミング判定ステップにおいて各前記端子における前記データ信号の遅延量が許容範囲に収まると判定された場合、当該許容範囲に収まると判定された状態の各前記端子の位置を出力する出力ステップと
を含んだことを特徴とする回路設計支援方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、回路設計支援装置及び回路設計支援方法に関する。
【背景技術】
【０００２】
近年、ＬＳＩ(Large Scale Integration)やＦＰＧＡ(Field Programmable Gate Array)といった集積回路では、信号の入出力を行うためのピンの数が非常に増加している。また、これらの集積回路では、扱う信号も高速化してきている。このような多ピン化や信号の高速化に伴い、集積回路におけるプリント板設計及びピン配置設計が非常に複雑になっている。ここで、ピン配置設計とは、プリント板に搭載する部品の配置を決定するものである。以下では、ピンのことを端子という場合がある。
【０００３】
また、集積回路では、その集積回路に接続される他のＬＳＩなどといった対向デバイスとの動作の整合性をとるため、集積回路においてデータの遅延量とクロックの遅延量が所定の許容範囲内に収まっている必要がある。以下では、この許容範囲を「タイミングの制約値」という場合がある。また、集積回路におけるデータ信号及びクロック信号の入力又は出力のタイミングの組み合わせを「外部タイミング」と言う場合がある。しかし、プリント板設計及びピン配置設計が複雑化していくにつれ、対向デバイスと集積回路との間の動作のタイミングの整合性を図ることが難しくなってきている。これにより、集積回路におけるデータの遅延量がクロックの遅延量に対して許容範囲外になってしまいタイミングエラーが頻発している。このため、タイミングエラーに起因するプリント板再設計が必要となる事例が次第に増加している。そこで、プリント板設計及びピン配置設計を行うにあたり、対向デバイスと集積回路との間の動作のタイミングをより詳細に検証することが求められてきている。
【０００４】
これに対して、現在の集積回路の設計では、プリント板設計の後にピン配置設計が行われる。ピン配置設計の流れとしては、まず、開発している回路の標準電源位置、テスト専用端子及びクロック専用入力端子位置などの情報を入手し、ピン配置表を作成する。次に、バッファタイプ、出力電流値、及び外部付加容量値などのタイミング設計に必要な情報をプリント板設計者から入手し、ピン一覧表を作成する。さらに、部品レイアウト図をプリント板設計者から入手し、ノイズ対策などのデバイス特有の設計制約条件を勘案しつつ、ピン配置設計を進める。
【０００５】
そして、ピン配置設計が終わった後に、集積回路におけるデータの遅延量とクロックの遅延量との調整を行い対向デバイスと集積回路との動作のタイミングを調整する外部タイミング設計が、仮の論理設計情報を基にインプリメント設計ＣＡＤ(Computer Aided Design)を用いて開始される。この外部タイミング設計において、ピン配置設計直後の状態では、各部の動作が保証されるタイミングの制約値に収まらない場合が多い。特に、高速インタフェースやＣＰＵインタフェースなどの複数の制御信号が必要となる部分において、タイミングの制約値を満たすことができない場合がある。このようなタイミングの制約値を満たすことができない要因としては、以下の２つの要因が考えられる。
【０００６】
まず、１つの要因としては、開発工程の順序がある。回路の開発においては、外部タイミング設計が開発工程の後半で行われる。具体的な開発工程の流れとしては、「プリント板設計」、「ピン配置設計」、「回路内部の論理設計」、「回路の外部タイミング設計」、「回路を搭載したプリント板評価」の順で行われる。そのため、ピン配置設計時に外部タイミング設計を行うことができない。すなわち、ピン配置設計においては、タイミングを予想して設計するしかなく、正確なタイミングを用いた設計を行うことができない。
【０００７】
もう１つの要因としては、外部タイミング設計に必要な情報がいつ揃うかという問題がある。外部タイミング設計では、インプリメントＣＡＤに論理設計情報を入力する必要がある。しかし、論理設計情報は、ピン配置設計時には存在しない。そのため、ピン配置設計時に外部タイミング設計を行うことができない。
【０００８】
そこで、論理設計情報を持たずにピン配置設計の妥当性を確認するため、仮論理設計情報を作成し、ピン配置設計の検証を行う従来技術がある。また、ＦＰＧＡの設計に用いるＣＡＤシステムの技術として、ＦＰＧＡにおいてピンの配置を変えることで配線のクロスを回避する従来技術もある。
【先行技術文献】
【特許文献】
【０００９】
【特許文献１】特開２００７−４１９８４号公報
【特許文献２】特開２００８−１６５７４７号公報
【発明の概要】
【発明が解決しようとする課題】
【００１０】
しかしながら、ＣＡＤシステムに関する従来技術では、タイミング設計を考慮しておらず、外部タイミングを考慮したピン配置設計を行うことは困難である。
【００１１】
また、仮論理設計を用いてピン配置設計を行う従来技術では、ピン配置設計の完了後に従来と同様にインプリメントＣＡＤを用いて外部タイミングの検証を行っている。そして、この従来技術では、外部タイミングにおいてタイミングエラーが発生した場合の対処は行っていない。すなわち、この従来技術では、外部タイミングの検証でのエラー結果をプリント板設計者に伝達し、プリント板設計者から提示されているタイミング制約値の緩和を依頼することになる。この点、タイミング制約値に余裕があり、緩和が可能であればタイミングエラーを解消することができる。しかし、タイミング制約値の緩和にも限度があり、タイミング制約値の緩和による解消が不可能なほどのタイミングエラーが発生した場合、ピン配置設計やプリント板設計の再設計を行う必要がある。これでは、開発工程の大きな後戻りとなり、大きな時間のロスが発生するとともに、コストが非常に増加してしまう。
【００１２】
開示の技術は、上記に鑑みてなされたものであって、外部タイミングを考慮したピン配置設計を行う回路設計支援装置及び回路設計支援方法を提供することを目的とする。
【課題を解決するための手段】
【００１３】
本願の開示する回路設計支援装置及び回路設計支援方法は、一つの態様において、記憶部は、クロック信号が生成するタイミングに基づいてデータ信号の処理を行う回路における各端子の位置を表すピン配置表と、クロック信号に対するデータ信号の遅延量の許容範囲並びに前記回路に入力される時点でのクロック信号の遅延量及びデータ信号の遅延量の補正に用いるパラメータを含むタイミング設計情報が記載されたピン一覧表とを記憶する。仮配置部は、前記ピン配置表及び前記ピン一覧表を基に各前記端子の仮の配置を行う。タイミング判定部は、前記タイミング設計情報及び各前記端子の配置位置を基に、各前記端子からのデータ信号又はクロック信号の遅延量を求め、当該求めた結果を基にデータ信号の遅延量がクロック信号の遅延量に対して前記許容範囲に収まるか否かを判定する。配置位置変更部は、前記タイミング判定部により前記許容範囲に収まらないと判定されたデータ信号がある場合、前記ピン配置表及び前記ピン一覧表を基に許容範囲に収まらないデータ信号の入力を受けた端子の位置を変更する。制御部は、前記タイミング判定部により各端子におけるデータ信号の遅延量が許容範囲内に収まると判定されるまで、前記配置位置変更部による端子の位置の変更及び前記タイミング判定部による判定を繰り返させる。出力部は、前記タイミング判定部により各端子における前記データ信号の遅延量が許容範囲に収まると判定された場合、当該許容範囲に収まると判定された状態の端子位置を出力する。
【発明の効果】
【００１４】
本願の開示する回路設計支援装置及び回路設計支援方法の一つの態様によれば、外部タイミングを考慮したピン配置設計を行うことができ、ピン配置設計及び外部タイミング設計にかかる時間を短縮することができる。これにより、回路の開発時間の短縮及び開発コストの削減という効果を奏する。
【図面の簡単な説明】
【００１５】
【図１】図１は、実施例に係る回路設計支援装置のブロック図である。
【図２】図２は、ピン配置表の一例を示す図である。
【図３】図３は、ピン一覧表の一例を示す図である。
【図４】図４は、部品レイアウト図である。
【図５】図５は、各補正パラメータによる補正値を求めるための表の一例を示す図である。
【図６】図６は、クロック信号とデータ信号との入力のタイミングの許容範囲を説明するための図である。
【図７】図７は、実施例に係るクロック信号とデータ信号との入力のタイミングの判定を説明するための図である。
【図８】図８は、エラーレポートの一例を示す図である。
【図９】図９は、実施例に係る回路設計支援装置を用いた回路の開発工程全体のフローチャートである。
【図１０】図１０は、実施例に係る回路設計支援装置におけるピン配置設計のフローチャートである。
【発明を実施するための形態】
【００１６】
以下に、本願の開示する回路設計支援装置及び回路設計支援方法の実施例を図面に基づいて詳細に説明する。なお、以下の実施例により本願の開示する回路設計支援装置及び回路設計支援方法が限定されるものではない。
【実施例】
【００１７】
図１は、実施例に係る回路設計支援装置のブロック図である。また、図２は、ピン配置表の一例を示す図である。さらに、図３は、ピン一覧表の一例を示す図である。このピン配置表及びピン一覧表については後で詳細に説明する。さらに、図４は、部品レイアウト図である。ここで、部品レイアウト図とは、設計対象の回路及びその周りの対向デバイスなどの部品がどのように基板上に配置されるかを示す図であり、回路と対向デバイスとの位置関係を表している。ここで、設計対象となる回路はクロック信号が生成するタイミングを用いてデータ信号の処理を行う回路である。また、対向デバイスとは、設計する回路と接続され信号の送受信を行うＬＳＩなどの部品のことを指す。また、本実施例では、設計する回路としてＦＰＧＡを用いるものとする。そして、図４のＦＰＧＡ１００が、本実施例において回路設計支援装置を用いて設計を行う回路である。また、対向デバイス１０１がＦＰＧＡ１００と接続される対向デバイスの一つである。
【００１８】
図１に示すように本実施例に係る回路設計支援装置は、記憶部１、初期配置部２、バッファ変更部３、端子配置部４、タイミング判定部５、制御部６、結果出力部７及びエラー通知部８を有する。
【００１９】
記憶部１は、ハードディスクやメモリなどの記憶装置である。記憶部１には、図２に示すピン配置表２００及び図３に示すピン一覧表３００を予め記憶している。また、記憶部１は、各端子におけるＦＰＧＡ１００内部での信号の遅延量を記憶している。ここで、ＦＰＧＡ１００内部での信号の遅延量とは、入力信号の場合には、端子に入力された信号が最初のレジストリまでに到達する間に発生する遅延量である。このレジストリとは、たとえばＦＦ（Flip Flop）などである。また、出力信号の場合には、出力端子の直前のレジストリから出力端子まで到達する間に信号に発生する遅延量である。さらに、記憶部１は、対向デバイスからＦＰＧＡ１００の各端子までの配線長を記憶している。ここで、ピン配置表２００及びピン一覧表３００について詳細に説明する。
【００２０】
ピン配置表２００は、ピン番号、端子名、バンク(BANK)、バッファ型(Buffer type)、ＳＬＯＷサイドの入力側計算結果(SLACK値)及び出力計算結果(SLACK値)、ＦＡＳＴサイドの入力側計算結果(SLACK値)及び出力計算結果(SLACK値)、並びに判定が記載されている。さらに、ピン配置表２００には、ＮＧ端子に必要な要調整距離が設けられている。
【００２１】
ピン番号は、ＦＰＧＡ１００が有する端子の識別番号である。この識別番号は固定されている。端子名は、ＦＰＧＡ１００が有する各端子に対応する名前である。バンクは、ＦＰＧＡ１００上の配置される領域である。例えば、本実施例では、図４のようにＦＰＧＡ１００が８つの一点差線で仕切られた領域１０２（Ｂ１〜Ｂ８）に分けられそれら各領域１０２が１つのバンクとなる。バッファ型は、その端子で用いられるバッファのタイプ（インタフェースレベル）である。例えば、バッファ型には、ＬＶＣＭＯＳ、ＬＶＴＴＬ、及びＬＶＤＳなどがある。ＳＬＯＷサイドの入力側計算結果(SLACK値)及び出力計算結果(SLACK値)は、温度条件や電圧条件によって信号の伝達速度が遅くなる場合、すなわち信号の遅延が大きい場合の入力タイミングの実効値である。ＦＡＳＴサイドの入力側計算結果(SLACK値)及び出力計算結果(SLACK値) は、温度条件や電圧条件によって信号の伝達速度が速くなる場合、すなわち信号の遅延が小さい場合の出力タイミングの実効値である。判定は、入力タイミング及び出力タイミングが許容範囲内に収まっているか否かを表す。ＮＧ端子に必要な要調整距離は、後述するタイミング判定においてＮＧとされた端子において、どのくらいの配線長の調整が必要かを表す値である。
【００２２】
標準電源位置及びテスト専用端子はＦＰＧＡ１００上の固定位置に配置する必要がある。そこで、ピン配置表２００には、最初は標準電源位置、テスト専用端子が記載されている。図２には一例として、標準電源位置のみが記載された状態のピン配置表を表している。
【００２３】
ピン一覧表３００は、ＦＰＧＡ１００でどのような端子が必要かという情報が記載されている。ピン一覧表３００は、分類、端子名、種別、ＢＵＳ、本数、極性、同期クロック、動作周波数、バッファ型(Buffer type)、内部ＰＵ(Pull Up)／ＰＤ(Pull Down)、ＳｌｅｗＲａｔｅ、外部負荷、電流値、基準クロック、入力要求及び出力要求Delayが記載されている。また、ピン一覧表３００は、対向デバイス、対向デバイス位置(POSITION)、配線長、補正混み遅延量、対向デバイスpin負荷容量、基準クロック、入力要求及び出力Delayなどの対向デバイス情報が記載されている。これらの、ピン一覧表３００に記載されている情報がタイミング設計を行うためのタイミング設計情報の一例である。
【００２４】
分類は、ＦＰＧＡ１００に接続される部品（対向デバイス）の種類である。端子名は、端子の名前である。種別は、入力端子か出力端子かを示す。ＢＵＳは、複数本のラインで信号の送信を行うかである。ＢＵＳにチェックがついている端子は複数本のラインで信号の送信を行うことになる。本数は、信号の送信に使用するラインの数である。極性は、立上り時に有効になるか、立下り時に有効になるかを示す。同期ＣＬＫは、どのクロック発生回路を使用するかである。動作周波数は、使用するクロックの周波数である。バッファ型は、必要とされるバッファタイプである。内部ＰＵ／ＰＤは、Ｉ／Ｏバッファの機能として、プルアップ機能が必要か、プルダウン機能が必要かを示している。ＳｌｅｗＲａｔｅは信号の遅延のしやすさである。外部負荷は、出力端子における外部負荷である。この外部負荷が大きいほど遅延は大きくなる。電流値は、端子から信号を出力するときに必要な電流値である。以下では、この電流値を「出力駆動電流値」という場合がある。電流値の値が大きくなれば、遅延量は小さくなる。基準クロックは、使用するクロック発生回路である。入力要求は、入力におけるデータ信号の遅延量とクロック信号の遅延量の差の許容範囲である。基準クロックのＳｅｔｕｐは、データ信号の遅延量が多い場合の許容範囲である。また、基準クロックのＨｏｌｄは、データ信号の遅延量が少ない場合の許容範囲である。出力要求は、出力におけるデータ信号の遅延量とクロック信号の遅延量の差の許容範囲である。基準クロックのｍｉｎは、データ信号の遅延量が少ない場合の許容範囲である。また、基準クロックのｍａｘは、データ信号の遅延量が多い場合の許容範囲である。すなわち、ピン配置表２００の判定欄がＯＫであれば、入力要求及び出力要求における許容値の範囲内に、データ信号とクロック信号の入力または出力のタイミングの実効値が収まっているということである。
【００２５】
また、対向デバイス情報は、各端子に接続される対向デバイスにおける端子の情報である。ピン一覧表３００に記載の対向デバイスの欄には、対向デバイスの名前が記載される。また、対向デバイス位置とは、ＦＰＧＡ１００と対向デバイスとの位置関係を表す。具体的には、ピン一覧表３００の対向デバイス位置は、ＦＰＧＡ１００の各辺を複数等分し、対向デバイスに対して最も近い辺の複数等分した部分が記載されている。以下では、ＦＰＧＡ１００の各辺を三等分してできた辺の一部分を「部分辺」と呼ぶ。例えば、本実施例であれば、図４に示すようにＦＰＧＡ１００が四角形であり、ＦＰＧＡ１００の４つの辺をそれぞれ三等分して１２個の部分辺を形成する。本実施例では、図４の部品レイアウト図に示すように、ＦＰＧＡ１００の各辺をＴＯＰ、ＢＯＴＴＯＭ、ＬＥＦＴ、ＲＩＧＨＴと分け、さらに、それら各辺を３つに分けている。例えば、ＴＯＰの辺に含まれる部分辺はＴＯＰ−Ｌ、ＴＯＰ−Ｃ、ＴＯＰ−Ｒとなる。そして、対向デバイス位置には、部分辺のなかで対向デバイスの出力端子に一番近い場所が記載してある。例えば、図４の対向デバイス１０１の出力端子１１１に一番近い部分辺は、ＴＯＰ―Ｌであるので、対向デバイス１０１の対向デバイス位置はＴＯＰ−Ｌとなる。配線長は、ＦＰＧＡ１００の端子と対向デバイスの端子との信号経路の長さを表している。補正混み遅延量は、ピン一覧表３００に記載された他のパラメータを用いて求めた補正量を加えた、対向デバイスからＦＰＧＡ１００までの信号の遅延量である。この補正込み遅延量は後述するタイミング判定部５によって書き込まれる。対向デバイスピン負荷容量は、対向デバイスの端子からの出力信号の外部負荷である。基準クロックは、使用するクロック発生回路である。入力要求は、入力におけるデータ信号の遅延量とクロック信号の遅延量の差である。基準クロックのＳｅｔｕｐは、データ信号の遅延量が多い場合の信号の入力タイミングの実効値である。また、基準クロックのＨｏｌｄは、データ信号の遅延量が少ない場合の入力タイミングの実効値である。出力要求Delayは、出力におけるデータ信号の遅延量とクロック信号の遅延量の差である。ここでは、出力要求Delayの単位はピコセカンドである。基準クロックのｍｉｎは、データ信号の遅延量が少ない場合の出力タイミングの実効値である。また、基準クロックのｍａｘは、データ信号の遅延量が多い場合の出力タイミングの実効値である。
【００２６】
ピン配置表２００の端子名は、ピン一覧表３００の端子名と一致する。すなわち、ピン一覧表３００に記載された端子名を持つピンを、ピン配置表２００のどの識別子を有するピンに割り当てるかがピン配置となる。
【００２７】
初期配置部２は、ピン一覧表３００の対向デバイス位置に記載されているＦＰＧＡ１００の辺の中央に端子を集中させる。すなわち、初期配置部２は、ＦＰＧＡ１００の部分辺のうちの対向デバイスに一番近い辺の中央のピンに対向デバイスの各ピンが接続されたものとして配置を行う。この、初期配置部２が配置したピンの状態を、以下では「初期配置」という。
【００２８】
そして、初期配置部２は、初期配置の状態の各端子の情報をバッファ変更部３に出力する。
【００２９】
バッファ変更部３は、初期配置の状態の各端子の情報の入力を初期配置部２から受ける。ここで、バッファは配置できるＦＰＧＡ１００上のバンクが決まっている。そのため、対向デバイスに一番近い部分辺上に端子を設けた場合に、必要とするバッファをその端子が使用できない場合がある。そこで、バッファ変更部３は、ピン一覧表３００のバッファ型を参照し、各端子において必要とされるバッファがその部分辺において使用可能か否かを判定する。そして、バッファ変更部３は、必要とするバッファが初期配置の状態では使用不可能と判定した端子を、必要とするバッファが使用できるバンクに含まれる部分辺に移動する。ここで、バッファ変更部３は、なるべく初期配置の位置に近い部分辺（例えば、初期配置で使用している部分変の隣の部分辺）を選択し、その部分辺の中央の端子に移動する。これは、対向デバイスからＦＰＧＡ１００の端子までの距離をなるべく短くするためである。
【００３０】
そして、バッファ変更部３は、初期配置の状態からバッファ変更のための端子の移動を行った状態の端子の情報を端子配置部４に出力する。
【００３１】
端子配置部４は、仮配置部４１及び配置位置変更部４２を有する。端子配置部４は、初期配置からバッファ変更のための端子の移動を行った状態の端子の情報の入力をバッファ変更部３から受ける。
【００３２】
仮配置部４１は、クロック端子やリセット端子は位置が固定なので、まずクロック端子やリセット端子を配置する。このとき、仮配置部４１は、標準電源位置及びテスト専用端子の位置にはクロック端子やリセット端子を配置することは禁止されている。仮配置部４１によって配置されたクロック端子やリセット端子の位置は、後述する端子の移動においても移動は行われない。
【００３３】
次に仮配置部４１は、バッファ変更部３から入力された端子の情報の中の各端子が配置されている部分辺に含まれる端子の位置に、残りの端子を予め決められた条件に基づいて各端子を配置していく。本実施例では、仮配置部４１は、ピン一覧表３００に記載された順に端子を並べて配置していく。ここで、仮配置部４１の行う配置は、ピン一覧表３００に記載された端子をピン配置表２００に記載していくことである。ここで、仮配置部４１が行う配置は仮の配置であり、これを基に端子の移動を行っていくため、仮配置部４１が配置を行う条件には特に制限はない。
【００３４】
そして、仮配置部４１は、仮配置がなされたピン配置表２００をタイミング判定部５へ出力する。
【００３５】
配置位置変更部４２は、ピン配置表２００のＮＧ端子に必要な要調整距離を参照し、データ信号の遅延量が許容範囲外となっている各端子の要調整距離を取得する。以下では、データ信号の遅延量が許容範囲外となっている各端子を「ＮＧ端子」と呼ぶことがある。ここで、ピン配置表２００のＮＧ端子に必要な要調整距離は後述するタイミング判定部５により入力される。
【００３６】
さらに、配置位置変更部４２は、位置的制約などにより全てのＮＧ端子が現在の端子の配置から動かせない状態であるといったベストの状態か否かを判断する。ここで、現在の位置がベストとは、具体的には、データの遅延量が大きいためＮＧ端子を対向デバイスからもっと離す必要があるにもかかわらず、これ以上対向デバイスから離すことができないといった状態のことを指す。配置位置変更部４２は、現在の状態がベストの状態だと判定すると、端子の移動が不可能であるという通知とともに、各ＮＧ端子の情報をエラー通知部８に出力する。
【００３７】
これに対して、現在の状態がベストの状態ではないと判定すると、配置位置変更部４２は、標準電源位置、テスト専用端子、クロック入力端子及びリセット入力端子以外の端子の情報をピン配置表２００からクリアする。そして、配置位置変更部４２は、各ＮＧ端子を、取得した要調整距離を満たすように配置する。例えば、配置位置変更部４２は、あるＮＧ端子の要調整距離が＋２ｍｍであれば、対向デバイスからの信号経路の長さを２ｍｍ増やすようにＮＧ端子の位置を移動する。逆に、配置位置変更部４２は、あるＮＧ端子の要調整距離が−２ｍｍであれば、対向デバイスからの信号経路の長さを２ｍｍ減らすようにＮＧ端子の位置を移動する。そして、全てのＮＧ端子の移動が終わった後に、配置位置変更部４２は、残りの端子の配置を行う。例えば、配置位置変更部４２は、ＮＧ端子を移動した先の端子をＮＧ端子の元の位置に移動し、残りの端子はピン配置表２００のクリア前の状態に戻すように配置する。そして、配置位置変更部４２は、ピン一覧表３００の配線長に端子の移動により発生した長さの変化を加える。例えば、対向デバイスから端子までの信号経路を２ｍｍ増やした場合には、配置位置変更部４２は、その移動した端子に対応するピン一覧表３００の配線長に２ｍｍを加える。
【００３８】
そして、配置位置変更部４２は、全ての端子の配置が完了したピン配置表２００をタイミング判定部５へ出力する。
【００３９】
端子配置部４は、タイミング判定部５によりＮＧ端子がないと判定された場合、制御部６からの制御を受けて、配置位置変更部４２が作成したピン配置表を結果出力部７に出力する。これに対して、タイミング判定部５によりＮＧ端子があると判定された場合、配置位置変更部４２は、制御部６からの制御を受けて、端子の配置位置の変更を再度行う。
【００４０】
タイミング判定部５は、配線長（ｍｍ）を遅延時間（ｎｓ）に変換するパラメータを予め記憶している。本実施例では、このパラメータを１（ｍ）＝５（ｎｓ）として記憶している。さらに、タイミング判定部５は、ピン一覧表３００に記載されているパラメータを用いて遅延量の補正値を算出する計算式を予め記憶している。本実施例では、タイミング判定部５は、外部負荷容量値、対向デバイス負荷容量値、出力駆動電流値及びＳｌｅｗＲａｔｅそれぞれによる補正値を加算し、対向デバイスからＦＰＧＡ１００までの信号の遅延量を求める計算式を記憶している。また、タイミング判定部５は、遅延量の補正値を求める計算式で用いる各パラメータによる補正値を求める表を予め記憶している。図５は、各補正パラメータによる補正値を求めるための表の一例を示す図である。本実施例では、タイミング判定部５は、外部負荷容量による補正値を求める表４０１、対向デバイスによる補正値を求める表４０２、出力駆動電流値による補正値を求める表４０３及びＳｌｅｗＲａｔｅによる補正値を求める表４０４を記憶している。各表の紙面に向かって左側の欄の範囲は、左の値より大きく右の値以下の場合を表している。例えば、表４０１の左側の欄の１０ｐＦ〜１５ｐＦは、１０ｐＦより大きく１５ｐＦ以下の場合を表している。
【００４１】
タイミング判定部５は、仮配置部４１又は配置位置変更部４２からピン配置表２００の入力を受ける。また、タイミング判定部５は、ピン一覧表３００を記憶部１から取得する。
【００４２】
そして、タイミング判定部５は、ピン一覧表３００に記載された端子名を有する端子がピン配置表２００におけるどのピン番号を有する端子に割り当てられているかを確認する。そして、タイミング判定部５は、対向デバイスからそのピン番号を持つ端子までの配線長を記憶部１に記憶されているデータベースから取得する。そして、タイミング判定部５は、予め記憶しているパラメータを用いて対向デバイスから各ピンまでの配線長を遅延時間に変換する。
【００４３】
さらに、タイミング判定部５は、ピン一覧表３００から各端子の外部負荷容量値、対向デバイス付加容量値、出力駆動電流値及びＳｌｅｗＲａｔｅを取得する。そして、タイミング判定部５は、図５の表４０１、表４０２、表４０３及び表４０４から、各端子におけるそれぞれのパラメータの補正値を取得する。そして、タイミング判定部５は、記憶している計算式に取得した各パラメータの補正値を代入して、遅延量の補正値を算出する。
【００４４】
ここで、本実施例における補正値の算出を説明する。本実施例では、タイミング判定部５は、補正値を算出する計算式として、図５の４つの補正値を全て加えて補正値を算出する計算式を記憶している。そして、タイミング判定部５は、ピン一覧表３００から各パラメータの値を取得する。例えば、ピン一覧表３００の端子名「ＤＴ」の場合、タイミング判定部５は、外部負荷として１５（ｐＦ）、対向デバイス負荷容量として１２（ｐＦ）、出力駆動電流値として１２（ｍＡ）、及びＳｌｅｗＲａｔｅとしてＳＬＯＷを取得する。そして、タイミング判定部５は、取得した各パラメータの値に対応する補正値を図５各表から取得する。ここでは、外部負荷による補正値は０．０３％、対向デバイス負荷容量による補正値は０．０３％、出力駆動電流値による補正値は０．０２％、ＳｌｅｗＲａｔｅによる補正値は０．０３％となる。タイミング判定部５は、各補正値を加えて遅延量の補正値を算出する。ここでは、遅延量の補正値は、０．０３＋０．０３＋０．０２＋０．０３＝０．１１％となる。次に、タイミング判定部５は、配線長から遅延量を算出する。端子名「ＤＴ」の場合、タイミング判定部５は、５３×５／１０００＝０．２６５（ｎｓ）として遅延量を算出する。そして、タイミング判定部５は、算出した補正値を用いて遅延量を補正する。ここでは、端子名「ＤＴ」の補正込み遅延量は、０．２６５×１．１１＝０．２９４（ｎｓ）＝２９４（ｐｓ）となる。そして、タイミング判定部５は、ピン一覧表３００に求めた補正込み遅延量を書き込む。タイミング判定部５は、全ての端子に対して補正込み遅延量を求め、ピン一覧表３００に書き込む。
【００４５】
そして、タイミング判定部５は、ピン一覧表３００を用いて、各端子におけるデータ信号の遅延量とクロック信号の遅延量の差を求めて、データ信号の遅延量が許容範囲内か否かを判定する。タイミング判定部５によるこの判定を以下では「タイミング判定」という場合がある。そこで、次に、タイミング判定部５によるタイミング判定について具体的に説明する。ここでは、端子名が「ＣＴＬ＿Ａ」の端子に入力されるデータ信号とそのデータ信号の処理に用いられるクロックに対するタイミング判定について説明する。以下では、端子名が「ＣＴＬ＿Ａ」の端子を「ＣＴＬ＿Ａ端子」という場合がある。図３より、「ＣＴＬ＿Ａ」に入力されるデータ信号の処理に用いられるクロック信号は、端子名が「ＣＬＫ１００Ｍ」の端子に入力される。以下では、端子名が「ＣＬＫ１００Ｍ」の端子を「ＣＬＫ１００Ｍ端子」という場合がある。ここで、図６は、クロック信号とデータ信号との入力のタイミングの許容範囲を説明するための図である。図７は、実施例に係るクロック信号とデータ信号との入力のタイミングの判定を説明するための図である。
【００４６】
クロック信号とデータ信号との入力のタイミングの許容範囲として、クロック信号の立ち上がりに対するデータ信号が入力されるタイミングに対する許容範囲が決まっている。図６は、クロックの立ち上がりでデータの入力が行われた場合を示している。点線５０３がデータの入力のタイミングを表している。そして、クロック信号５００の立ち上がりに対して、左側のデータ確定領域であるＴｓｕ（セットアップタイム）５０１、右側のデータ確定領域であるＴｈ（ホールドタイム）５０２が許容範囲として決められている。すなわち、データ信号の入力はＴｓｕ５０１とＴｈ５０２の範囲内に収まらなければいけない。例えば、データ信号の遅延量が大きい場合には、データ信号の入力のタイミングが遅れるため点線５０３は図６の紙面に向かって左側に動く。そして、データ信号の遅延量がクロック信号の遅延量に比べて非常に大きくなると、データ信号の入力のタイミングがＴｈ５０２に収まらなくなる。また、データ信号の遅延量が小さい場合には、データ信号の入力のタイミングが早まるため点線５０３は図６の紙面に向かって右側に動く。そして、データ信号の遅延量がクロック信号の遅延量に比べて非常に小さくなると、データ信号の入力のタイミングがＴｓｕ５０１に収まらなくなる。このように、データ信号の入力のタイミングがＴｓｕ５０１、Ｔｈ５０２に収まらなくなる状態の場合に、タイミング判定がＮＧとなる。すなわち、データ信号の遅延量とクロック信号の遅延量は以下の式１及び式２を満たす必要がある。
【００４７】
（Ｔｈ−クロック信号の遅延量）＋  データ信号の遅延量≧０        （式１）
【００４８】
（Ｔｓｕ−データ信号の遅延量）＋クロック信号の遅延量≧０        （式２）
【００４９】
そこで、まず、タイミング判定部５が、式１を用いてデータ信号の入力タイミングがＴｈ５０２に収まるか否かを判定する場合について説明する。本実施例では、Ｔｈ５０２は、１（ｎｓ）であるとする。
【００５０】
タイミング判定部５は、ピン一覧表３００から、ＣＴＬ＿Ａ端子に入力されるデータ信号の出力Ｄｅｌａｙ値の最小値（ｍｉｎ）を取得する。このＤｅｌａｙ値は、対向デバイスから出力される時点でのクロック信号から見たデータ信号の遅延量である。ここでは、Ｔｈに収まるか否かを判定するため、データ信号の遅延が最も小さい場合が必要となる。そこで、データ信号の出力Ｄｅｌａｙ値として遅延量の最小値を用いる。本実施例では、タイミング判定部５は、データ信号の出力Ｄｅｌａｙ値として０．５を取得する。図７のクロック信号６０１及びデータ信号６０２が、対向デバイスからの出力時点での各信号の状態を表している。図７に示すように、対向デバイスからの出力時点では、データ信号６０２がクロック信号６０１に比べて０．５（ｎｓ）遅れて出力されている。
【００５１】
そして、タイミング判定部５は、ピン一覧表３００に記載されているＣＬＫ１００Ｍ端子及びＣＴＬ＿Ａ端子の補正込み遅延量を取得する。本実施例では、タイミング判定部５は、ＣＬＫ１００Ｍ端子に入力されるクロック信号の補正込み遅延量として０．９５５（ｎｓ）を取得し、ＣＴＬ＿Ａ端子に入力されるデータ信号の補正込み遅延量として０．４９５（ｎｓ）を取得する。そして、タイミング判定部５は、ＣＴＬ＿Ａ端子の補正込み遅延量０．４９５（ｎｓ）にデータ信号の出力Ｄｅｌａｙ値０．５（ｎｓ）を加えて、ＦＰＧＡ１００にデータ信号が届いた時点での遅延量を求める。ここでは、ＦＰＧＡ１００にデータ信号が届いた時点での遅延量は０．９９５（ｎｓ）となる。この場合、クロック信号の遅延量０．９５５（ｎｓ）とデータ信号の遅延量０．９９５（ｎｓ）はほぼ一緒である。そこで、データ信号及びクロック信号のＦＰＧＡ１００への入力時点においては、クロック信号の立ち上がりとデータ信号の入力とが一致していると考えることができる。図７のクロック信号６０３及びデータ信号６０４が、ＦＰＧＡ１００への入力時点での状態を表している。図７に示すように、ＦＰＧＡ１００への入力時点では、データ信号６０４がクロック信号６０３とほぼ同一のタイミングでＦＰＧＡ１００に入力されている。
【００５２】
ここで、本実施例では、分かりやすいようにデータ信号及びクロック信号のＦＰＧＡ１００への入力時点では、クロック信号の立ち上がりとデータ信号の入力とが一致している場合で説明した。ただし、実際にはＦＰＧＡ１００への入力時点で、データ信号とクロック信号の遅延量に差が有る場合があり、その場合には次に説明する判定において、入力時点での差をデータ信号の遅延量に加えることになる。
【００５３】
次に、タイミング判定部５は、記憶部１に記憶されているＦＰＧＡ１００内部における各端子に入力された信号の遅延量から、ＣＬＫ１００Ｍ端子におけるクロック信号の遅延量とＣＴＬ＿Ａ端子におけるデータ信号の遅延量を取得する。本実施例では、ＦＰＧＡ１００内部におけるデータ信号の遅延量は０．５（ｎｓ）とし、クロック信号の遅延量は３（ｎｓ）とする。この２つの値を式１に代入する。この場合、式１は（１−３）＋０．５＝−１．５＜０となる。すなわち、式１を−１．５満たさないので、タイミング判定部５はタイミングがＮＧであると判定する。図７のクロック信号６０５及びデータ信号６０６が、ＦＰＧＡ１００内部での遅延を各信号に加えた状態を表している。図７に表されるように、ＦＰＧＡ１００内部での遅延が加えられた状態では、データ信号６０４がクロック信号６０３に対して、２．５（ｎｓ）遅れている。そして、図７で表されるように、データ信号６０４のタイミングがＴｈから０．５（ｎｓ）はみ出してしまっている。この図７のはみ出した部分の時間のタイミング調整が必要となる。
【００５４】
この場合とは逆に、タイミング判定部５は、式１に各遅延量を代入した場合に式１を満たすならば、タイミングはＯＫと判定する。
【００５５】
次に、タイミング判定部５が、式２を用いてデータ信号の入力タイミングがＴｓｕ５０１に収まるか否かを判定する場合について説明する。本実施例では、Ｔｓｕ５０１は、１（ｎｓ）であるとする。
【００５６】
タイミング判定部５は、ピン一覧表３００から、ＣＴＬ＿Ａ端子に入力されるデータ信号の出力Ｄｅｌａｙ値の最大値（ｍａｘ）を取得する。ここでは、Ｔｓｕ５０１に収まるか否かを判定するため、データ信号の遅延が最も大きい場合が必要となる。そこで、データ信号の出力Ｄｅｌａｙ値として遅延量の最大値を用いる。本実施例では、タイミング判定部５は、データ信号の出力Ｄｅｌａｙ値として３を取得する。
【００５７】
そして、タイミング判定部５は、ピン一覧表３００に記載されているＣＬＫ１００Ｍ端子及びＣＴＬ＿Ａ端子の補正込み遅延量を取得する。本実施例では、タイミング判定部５は、ＣＬＫ１００Ｍ端子に入力されるクロック信号の補正込み遅延量として０．９５５（ｎｓ）を取得し、ＣＴＬ＿Ａ端子に入力されるデータ信号の補正込み遅延量として０．４９５（ｎｓ）を取得する。そして、タイミング判定部５は、ＣＴＬ＿Ａ端子の補正込み遅延量０．４９５（ｎｓ）にデータ信号の出力Ｄｅｌａｙ値３（ｎｓ）を加えて、ＦＰＧＡ１００にデータ信号が届いた時点での遅延量を求める。ここでは、ＦＰＧＡ１００にデータ信号が届いた時点での遅延量は３．４９５（ｎｓ）となる。この場合、クロック信号の遅延量０．９５５（ｎｓ）とデータ信号の遅延量０．９９５（ｎｓ）の差はほぼ２．５（ｎｓ）なので、データ信号及びクロック信号のＦＰＧＡ１００への入力時点では、クロック信号の立ち上がりとデータ信号の入力とが２．５（ｎｓ）ずれていると考えることができる。
【００５８】
次に、タイミング判定部５は、記憶部１に記憶されているＦＰＧＡ１００内部での各端子に入力された信号の遅延量から、ＣＬＫ１００Ｍ端子におけるクロック信号の遅延量とＣＴＬ＿Ａ端子におけるデータ信号の遅延量を取得する。本実施例では、ＦＰＧＡ１００内部でのデータ信号の遅延量は３（ｎｓ）とし、クロック信号の遅延量は７（ｎｓ）とする。ＦＰＧＡ１００に到達した時点でデータ信号はクロック信号に比べて２．５（ｎｓ）遅延しているので、データ信号の遅延量は５．５（ｎｓ）となる。この２つの値を式２に代入する。この場合、式２は（１−７）＋５．５＝−０．５＜０となる。すなわち、式１を−０．５満たさないので、タイミング判定部５はタイミングがＮＧであると判定する。この場合とは逆に、タイミング判定部５は、式２に各遅延量を代入した場合に式２を満たすならば、タイミングはＯＫと判定する。
【００５９】
タイミング判定部５は、タイミングがＮＧとなった端子の要調整距離を算出する。具体的には、タイミング判定部５は、データ信号の入力のタイミングがＴｈ５０２の許容範囲に収まらない場合、配線長を伸ばしてデータ遅延量を増やすように要調整距離を求める。また、タイミング判定部５は、データ信号の入力のタイミングがＴｓｕ５０１の許容範囲に収まらない場合、配線長を短くしてデータ遅延量を減らすように要調整距離を求める。例えば、タイミング判定部５は、式１を−１．５満たさない場合には、遅延量１．５（ｎｓ）を距離に換算し、求めた距離分配線長が増えるように要調整距離を求める。また、タイミング判定部５は、式２を−０．５満たさない場合には、遅延量０．５（ｎｓ）を距離に換算し、求めた距離分配線長が減るように要調整距離を求める。そして、タイミング判定部５は、求めた要調整距離をピン配置表２００に書き加える。さらに、タイミング判定部５は、ＮＧ端子に対しては、ピン配置表２００の判定部分にＮＧの判定を記入する。そして、タイミング判定部５は、タイミングがＮＧとなる端子がある旨を制御部６に通知する。
【００６０】
さらに、タイミング判定部５は、ＳＬＯＷサイド及びＦＡＳＴサイドにおける信号の遅延を求めるための係数を予め記憶している。そして、タイミング判定部５は、データ信号の遅延量及びクロック信号の遅延量にＳＬＯＷサイドの係数を乗じてＳＬＯＷサイドでの各信号の遅延量を求める。そして、求めた各信号の遅延量を用いて、データ信号の遅延量が、ピン配置表のＳＬＯＷサイドの許容範囲内に収まるか否かを判定する。同様に、タイミング判定部５はＦＡＳＴサイドについてもデータ信号の遅延量がピン配置表のＦＡＳＴサイドの許容範囲内に収まるかを判定する。そして、タイミング判定部５は、ＳＬＯＷサイド及びＦＡＳＴサイドにおいてデータ信号の遅延量が許容範囲を超えた場合、ＮＧ端子に対しては、ピン配置表２００の判定部分にＮＧの判定を記入する。さらに、タイミング判定部５は、求めた要調整距離をピン配置表２００に書き加える。そして、タイミング判定部５は、タイミングがＮＧとなる端子がある旨を制御部６に通知する。
【００６１】
また、タイミング判定部５は、係数を乗じない状態、ＦＡＳＴサイド及びＳＬＯＷサイドのいずれにおいてもデータ信号の遅延量が許容範囲に収まると判定した場合、その端子をＯＫと判定する。そして、タイミング判定部５は、ＯＫの端子に対して、ピン配置表２００の判定部分にＯＫの判定を記入する。また、タイミング判定部５は、タイミングがＮＧとなる端子がない場合には、全ての端子でタイミングがＯＫとなった旨の通知を制御部６に出力する。
【００６２】
ここで、本実施例ではデータ信号及びクロック信号の入力についてのタイミング判定について説明したが、このタイミング判定は出力の場合も同様に行うことができる。その場合、データ信号が出力される端子を移動することで出力端子から対向デバイスまでの配線長が調整できる。そして、出力端子から対向デバイスまでの配線長を調整することでデータ信号の出力時の遅延量も調整することができる。具体的には、タイミング判定部５は、補正込み遅延量及びＦＰＧＡ１００内部での遅延量を基に出力時点でのデータ信号の遅延量及びクロック信号の遅延量を求める。そして、タイミング判定部５は、それらの遅延量がピン一覧表３００の出力要求Delayの欄に記載された許容範囲に収まるか否かを判定する。そして、タイミング判定部５は、許容範囲に収まらないデータ信号の端子に要求される調整距離を求め、ピン配置表２００に書き込む。そして、配置位置変更部４２は、ピン配置表２００に記載された要調整距離を満たすように端子を移動する。これによって、出力端子から対向デバイスまでの配線長を調整することができ、出力側の基準も満たすことができる。
【００６３】
制御部６は、タイミング判定部５からＮＧ端子の有無の通知を受ける。そして、ＮＧ端子がある場合には、制御部６は、端子配置部４に端子の再配置を命令する。これに対して、全ての端子においてタイミングがＯＫとなった場合には、制御部６は、端子配置部４にピン配置表２００の出力を命令する。
【００６４】
結果出力部７は、ピン配置表２００の入力を端子配置部４から受ける。この端子配置部４から出力されるピン配置表２００では図２におけるピン配置に必要な情報が全て埋まっており、且つ判定が全てＯＫとなっている。そして、結果出力部７は、受信したピン配置表２００を、回路設計者などが確認できるように出力する。具体的には、結果出力部７は、モニタ画面への表示やプリンタによる印刷などといった出力を行う。
【００６５】
エラー通知部８は、端子の移動が不可能であるという通知とともに、各ＮＧ端子の情報の通知を配置位置変更部４２から受ける。そして、エラー通知部８は、タイミングエラー発生の情報と、ＮＧ端子の情報を含むエラーレポートを出力する。
【００６６】
ここで、図８は、エラーレポートの一例を示す図である。エラーレポート７００は、データ信号の入力におけるホールドタイミング（Ｔｈ）のエラーのエラーレポートである。またエラーレポート７００は、Ｔｈを０とした場合のエラーレポートである。図８に示すように、本実施例ではエラーレポート７００には、SourcePin７０１、SinkPin７０２、Delay７０３、Slack７０４、Arrival７０５、Required７０６が記載されている。SourcePin７０１は、タイミングエラーが発生した端子を示している。SinkPin７０２は、SourcePin７０１に入力された信号が最初に到達するレジスタを示している。Delay７０３は、クロック信号の遅延量を表している。Arrival７０５は、データ信号の遅延量を表している。Required７０６は、データ信号に要求される遅延量である。ここでは、Ｔｈを０としているので、クロック信号の遅延量と同じ値がデータ信号の遅延量の限界である。そこで、Required７０６は、Delay７０３と一致している。そして、Slack７０４は、要求される遅延量からどのくらいずれているかを表している。ここでは、Required７０６が０．３４４（ｎｓ）であるのに対して、Arrival７０５が０．３３３（ｎｓ）なので、Slack７０４は、０．３３３−０．３４４＝−０．０１１（ｎｓ）となる。回路設計者は、エラーレポート７００を参照することで、どの端子にどのくらいの遅延量のずれが発生しているかを把握することができる。
【００６７】
次に、図９を参照して本実施例に係る回路設計支援装置を用いたＦＰＧＡ１００の開発工程全体の流れを説明する。ここで、図９は、実施例に係る回路設計支援装置を用いた回路の開発工程の全体のフローチャートである。
【００６８】
まず、回路設計者などのＦＰＧＡ１００の開発にかかわる開発者は、ピン配置表２００、ピン一覧表３００及びＦＰＧＡ１００内部での信号の遅延量を含むデータベースを作成する（ステップＳ１０１）。開発者は作成したデータベースを記憶部１に記憶させる。
【００６９】
初期配置部２、バッファ変更部３、及び端子配置部４によって、端子の配置が行われる（ステップＳ１０２）。この端子の配置については後で詳しく説明する。
【００７０】
タイミング判定部５は、配置された端子の状態での、各端子におけるデータ信号とクロック信号との入力及び出力のタイミングがＯＫか否かを判定する（ステップＳ１０３）。
【００７１】
タイミングがＮＧとなるＮＧ端子がある場合（ステップＳ１０３否定）、タイミング判定部５は、ピン一覧表３００のＮＧ端子の判定の欄にタイミングが許容範囲に収まっていない旨を書き加えることで、ＮＧ端子にタグをつける（ステップＳ１０４）。そして、ＮＧ端子を優先的に配置する再配置を行うためにステップＳ１０２に戻る。
【００７２】
これに対して、タイミングがＮＧとなる端子がない場合（ステップＳ１０３肯定）、タイミング判定部５によりタイミングがＯＫとされた端子の配置でＦＰＧＡ１００を製造し、製造したＦＰＧＡ１００の単体試験で信号特性試験やタイミング試験を実行する（ステップＳ１０５）。
【００７３】
その他様々な試験において良品判定がなされると（ステップＳ１０６）、ＦＰＧＡ１００の開発工程が終了する。
【００７４】
次に、図１０を参照して本実施例に係る回路設計支援装置を用いた回路設計の処理について説明する。ここで、図１０は、実施例に係る回路設計支援装置におけるピン配置設計のフローチャートである。
【００７５】
まず、開発者は、ピン配置表２００、ピン一覧表３００及びＦＰＧＡ１００内部での各端子に入力された信号遅延量及び各端子から出力される信号の遅延量などを含むデータベースを作成する（ステップＳ２０１）。開発者は作成したデータベースを記憶部１に記憶させる。
【００７６】
初期配置部２は、各端子の初期配置を行う（ステップＳ２０２）。そして、バッファ変更部３は、必要とされるバッファが各端子で使用できるか否かを判定する（ステップＳ２０３）。必要とされるバッファが使用できない端子がある場合（ステップＳ２０３否定）、バッファ変更部３は、必要とされるバッファが使用できかつ、現在の位置に隣接するブロックへ移動させる（ステップＳ２０４）。バッファ変更部３は、必要とされるバッファが使用できるように各端子を移動する。
【００７７】
必要とされるバッファが各端子で使用できるようになると（ステップＳ２０３肯定）、仮配置部４１は、ピン一覧表３００を参照してクロック端子やリセット端子があるか否か判定する（ステップＳ２０５）。クロック端子やリセット端子がある場合（ステップＳ２０５肯定）、仮配置部４１は、クロック端子やリセット端子を一固定の専用端子へ優先配置する（ステップＳ２０６）。クロック端子やリセット端子がない場合（ステップＳ２０５否定）又はクロック端子やリセット端子の優先配置を終えた後に、仮配置部４１は、ピン配置表２００及びピン一覧表３００を用いて他の端子の配置を行う（ステップＳ２０７）。この時、ピン配置表２００にはピン一覧表３００に記載されている各端子が配置される。そして、端子配置部４は、ピン配置表２００のピン番号を用いて端子の位置を判断し、対向デバイスから各端子までの配線長をもとめ、ピン一覧表３００に書き込む。
【００７８】
タイミング判定部５は、ピン一覧表３００から補正に用いるパラメータの値を取得する。そして、タイミング判定部５は、取得したパラメータの値から各パラメータによる補正値を求める。そして、タイミング判定部５は、予め記憶している計算式に各パラメータによる補正値を代入して、データ信号及びクロック信号の補正値込みの遅延量を求め、ピン一覧表３００に書き込む。また、タイミング判定部５は、記憶部１に記憶されているデータベースからＦＰＧＡ１００内部でのデータ信号及びクロック信号の遅延量を取得する。そして、タイミング判定部５は、式１又は式２に対して補正値込みの遅延量及びＦＰＧＡ１００内部での遅延量を用いて、各端子においてデータ信号の入力又は出力のタイミングの計算を行う（ステップＳ２０８）。そして、タイミング判定部５は、各端子においてデータ信号の入力又は出力のタイミングが許容範囲内にあるか否かを判定する（ステップＳ２０９）。許容範囲内にないＮＧ端子がある場合（ステップＳ２０９否定）、配置位置変更部４２は、ＮＧ端子を現在の位置から求める方向に動かすことができるか否か、すなわち現在の位置がベストか否かを判定する（ステップＳ２１０）。ＮＧ端子の現在の位置がベストでない場合（ステップＳ２１０否定）、ステップＳ２０７に戻り、配置位置変更部４２は、ピン配置表２００及びピン一覧表３００を基に端子の配置を行う。このとき、配置位置変更部４２は、標準電源位置、テスト専用端子、クロック端子及びリセット端子を残して、ピン配置表２００をクリアする。そして、配置位置変更部４２は、ＮＧ端子を優先的に配置し、その後残りの端子の配置を行う。
【００７９】
ＮＧ端子の現在の位置がベストの場合（ステップＳ２１０肯定）、制御部６は、エラー通知部８にタイミングエラーの発生を通知させ（ステップＳ２１１）、回路設計の処理を終了する。
【００８０】
また、全ての端子においてタイミングが許容範囲内の場合（ステップＳ２０９肯定）、制御部６は、結果出力部７に端子配置の結果を出力させ、回路設計の処理を終了する。
【００８１】
以上に説明したように、本実施例に係る回路設計支援装置は、データ信号及びクロック信号の入力又は出力のタイミングを考慮しながら端子の配置を行うことができる。これにより、タイミングの制約値を守ることが容易となり、ピン配置設計及び外部タイミング設計にかかる時間を短縮することができる。さらに、回路の開発時間の短縮及びコストの削減という効果も有する。
【００８２】
ここで、本実施形態では、回路設計支援装置において、端子の配置を行う前に初期配置及びバッファの変更を行ったが、この初期配置及びバッファの変更は他の装置で行われても良い。その場合、回路設計支援装置は、他の装置から入力された初期配置及びバッファの変更の情報を基に回路の端子の配置を行うことになる。
【００８３】
以上の各実施例を含む実施形態に関し、さらに以下の付記を開示する。
【００８４】
（付記１）クロック信号が生成するタイミングに基づいてデータ信号の処理を行う回路における各端子の位置を表すピン配置表と、前記クロック信号に対する前記データ信号の遅延量の許容範囲並びに前記回路に入力される時点での前記クロック信号の遅延量及び前記データ信号の遅延量の補正に用いるパラメータを含むタイミング設計情報が記載されたピン一覧表とを記憶する記憶部と、
前記ピン配置表及び前記ピン一覧表を基に各前記端子の仮の配置を行う仮配置部と、
前記タイミング設計情報及び各前記端子の配置位置を基に、各前記端子からの前記データ信号又は前記クロック信号の遅延量を求め、当該求めた結果を基に前記データ信号の遅延量が前記クロック信号の遅延量に対して前記許容範囲に収まるか否かを判定するタイミング判定部と、
前記タイミング判定部により前記許容範囲に収まらないと判定された前記データ信号がある場合、前記ピン配置表及び前記ピン一覧表を基に許容範囲に収まらない前記データ信号の入力を受けた端子の位置を変更する配置位置変更部と、
前記タイミング判定部により各前記端子における前記データ信号の遅延量が許容範囲内に収まると判定されるまで、前記配置位置変更部による端子の位置の変更及び前記タイミング判定部による判定を繰り返させる制御部と、
前記タイミング判定部により各前記端子における前記データ信号の遅延量が許容範囲に収まると判定された場合、当該許容範囲に収まると判定された状態の各前記端子の位置を出力する出力部と
を備えることを特徴とする回路設計支援装置。
【００８５】
（付記２）前記ピン配置表及び前記ピン一覧表を基に、予め決められた規則に従い端子の初期配置を行う初期配置部と、
前記初期配置の状態で、各端子において必要とされるバッファを使用できるか否かを判定し、必要とされるバッファを使用できないと判定した端子を、必要とされるバッファが使用できる近接する位置に移動するバッファ変更部と
をさらに備えたことを特徴とする付記１に記載の回路設計支援装置。
【００８６】
（付記３）前記配置位置変更部は、クロック専用入力端子及びリセット専用入力端子のみを位置固定の専用端子へ配置した状態で、許容範囲に収まらないデータ信号の入出力を行った端子を配置し、その後残りの端子の配置を行うことを特徴とする付記１又は付記２に記載の回路設計支援装置。
【００８７】
（付記４）前記許容範囲は、前記データ信号の遅延量が前記クロック信号の遅延量より大きい場合の遅延量の差の第１閾値、及び前記データ信号の遅延量が前記クロック信号の遅延量より小さい場合の入力タイミングの差の第２閾値で表され、
前記タイミング判定部は、前記データ信号の遅延量と前記クロック信号の遅延量との差が、前記第１閾値を越える場合、該データ信号を出力した端子の位置を該データ信号の遅延量が減少するように変更し、前記データ信号の遅延量と前記クロック信号の遅延量との差が、前記第２閾値を超える場合、該データ信号を出力した端子の位置を該データ信号の遅延量が増加するように変更する
ことを特徴とする付記１乃至付記３のいずれか一つに記載の回路設計支援装置。
【００８８】
（付記５）前記タイミング判定部は、各前記端子に接続される部品から前記回路までの配線長及び前記回路内の信号経路の配線長を基に前記クロック信号及び前記データ信号の遅延量を求めることを特徴とする付記１乃至付記４のいずれか一つに記載の回路設計支援装置。
【００８９】
（付記６）前記配置位置変更部は、許容範囲に収まらない前記データ信号の入力を受けた端子の位置が変更可能か否かを判定し、
前記制御部は、前記配置位置変更部により許容範囲に収まらない前記データ信号の入力を受けた端子の位置の変更が不可と判定された場合、前記タイミング判定部により各前記端子における前記データ信号の遅延量が許容範囲内に収まると判定されなくても、許容範囲に収まらない前記データ信号の入力を受けた端子の位置の変更を中止し、エラーの通知を行う
ことを特徴とする付記１乃至付記５のいずれか一つに記載の回路設計支援装置。
【００９０】
（付記７）前記タイミング設計情報には、前記回路に入力される時点での前記クロック信号の遅延量及び前記データ信号の遅延量の補正に用いるパラメータとして、少なくとも各前記端子の外部負荷容量値、各前記端子に接続される部品の負荷容量値、各前記端子の出力駆動電流値、及び各前記端子のＳｌｅｗＲａｔｅを含むことを特徴とする付記１乃至付記６のいずれか一つに記載の回路設計支援装置。
【００９１】
（付記８）前記タイミング判定部は、前記データ信号の入力の遅延量が前記許容範囲に収まるか否かを判定することを特徴とする付記１乃至付記７のいずれか一つに記載の回路設計支援装置。
【００９２】
（付記９）前記タイミング判定部は、前記データ信号の出力の遅延量が前記許容範囲に収まるか否かを判定することを特徴とする付記１乃至付記８のいずれか一つに記載の回路設計支援装置。
【００９３】
（付記１０）クロック信号が生成するタイミングに基づいてデータ信号の処理を行う回路における各端子の位置を表すピン配置表と、前記クロック信号に対する前記データ信号の遅延量の許容範囲並びに前記回路に入力される時点での前記クロック信号の遅延量及び前記データ信号の遅延量の補正に用いるパラメータを含むタイミング設計情報が記載されたピン一覧表とを記憶させる記憶ステップと、
前記ピン配置表及び前記ピン一覧表を基に各前記端子の仮の配置を行う仮配置ステップと、
前記タイミング設計情報及び各前記端子の配置位置を基に、各前記端子からの前記データ信号又は前記クロック信号の遅延量を求め、当該求めた結果を基に前記データ信号の遅延量が前記クロック信号の遅延量に対して前記許容範囲に収まるか否かを判定するタイミング判定ステップと、
前記タイミング判定ステップにおいて前記許容範囲に収まらないと判定された前記データ信号がある場合、前記ピン配置表及び前記ピン一覧表を基に前記許容範囲に収まらない前記データ信号の入力を受けた端子の位置を変更する配置位置変更部と、
各前記端子における前記データ信号の遅延量が許容範囲内に収まると判定されるまで、前記配置位置変更ステップにおける端子の位置の変更及び前記タイミング判定ステップにおける前記判定を繰り返させる繰り返し制御ステップと、
前記タイミング判定ステップにおいて各前記端子における前記データ信号の遅延量が許容範囲に収まると判定された場合、当該許容範囲に収まると判定された状態の各前記端子の位置を出力する出力ステップと
を含んだことを特徴とする回路設計支援方法。
【符号の説明】
【００９４】
１  記憶部
２  初期配置部
３  バッファ変更部
４  端子配置部
５  タイミング判定部
６  制御部
７  結果出力部
８  エラー通知部
４１  仮配置部
４２  配置位置変更部
【図１】
2012027861.tif 000003
【図２】
2012027861.tif 000004
【図３】
2012027861.tif 000005
【図４】
2012027861.tif 000006
【図５】
2012027861.tif 000007
【図６】
2012027861.tif 000008
【図７】
2012027861.tif 000009
【図８】
2012027861.tif 000010
【図９】
2012027861.tif 000011
【図１０】
2012027861.tif 000012