JP5741077B2 - タイミング検証支援装置、方法及びプログラム - Google Patents

タイミング検証支援装置、方法及びプログラム Download PDF

Info

Publication number
JP5741077B2
JP5741077B2 JP2011050123A JP2011050123A JP5741077B2 JP 5741077 B2 JP5741077 B2 JP 5741077B2 JP 2011050123 A JP2011050123 A JP 2011050123A JP 2011050123 A JP2011050123 A JP 2011050123A JP 5741077 B2 JP5741077 B2 JP 5741077B2
Authority
JP
Japan
Prior art keywords
circuit
data
circuit element
pin
path
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.)
Active
Application number
JP2011050123A
Other languages
English (en)
Other versions
JP2012185775A (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 JP2011050123A priority Critical patent/JP5741077B2/ja
Priority to US13/406,906 priority patent/US8572531B2/en
Publication of JP2012185775A publication Critical patent/JP2012185775A/ja
Application granted granted Critical
Publication of JP5741077B2 publication Critical patent/JP5741077B2/ja
Active 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
    • G06F30/32Circuit design at the digital level
    • G06F30/33Design verification, e.g. functional simulation or model checking
    • G06F30/3308Design verification, e.g. functional simulation or model checking using simulation
    • G06F30/3312Timing analysis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2119/00Details relating to the type or aim of the analysis or the optimisation
    • G06F2119/12Timing analysis or timing optimisation

Description

本技術は、半導体集積回路のタイミング検証を支援するための技術に関する。
半導体集積回路の設計段階においては、当該半導体集積回路においてデータ転送が正常に実施可能か否かを判定するタイミング検証が行われている。このタイミング検証では、データ転送を行う2つの順序回路(例えば、フリップフロップ(Flip Flop。以下、FFと記す。))間で、半導体集積回路の動作時における実際の電気特性を考慮したデータパスディレイとクロックパスディレイを計算し、要求されるクロック周期内でデータ転送が可能か否か(セットアップ(setup)タイミングチェック)や、データ転送が早すぎないかどうか(ホールド(hold)タイミングチェック)などを調べる。
典型的には、大規模な半導体集積回路(以下、チップと略する。)の設計においては、チップ全体を機能の単位である機能ブロックに分割し、機能ブロック単位で設計を並列に行っている。回路規模の大きな機能ブロックは、さらに機能単位で複数の下位階層の機能ブロックに分割して並列設計が行なわれる。このように集積回路を複数の論理階層にわたって機能ブロックに分割して並列設計を行なう階層設計を行なうことにより、設計期間の短縮を図っている。なお、機能ブロック内部のタイミング検証についても、機能ブロックの設計者が行う。
しかしながら、機能ブロック間のタイミング検証(以下、機能ブロック境界のタイミング検証とも呼ぶ)はチップレベルで行うことになる。機能ブロックの設計者が機能ブロック境界のタイミング検証を行うには、典型的には、チップレベルの回路データベースをメモリにロードして処理することになる。
チップレベルの回路データベース全体をメモリにロードすることになるので、メモリ容量が大きなコンピュータでなければ対応できず、ロードにかかる時間も長くなる。また、検証対象の機能ブロック以外のデータをも処理しなければならず、処理時間自体も長くなってしまう。さらに、チップレベルの検証結果は膨大であり、その中から検証対象の機能ブロックについての検証結果を抽出するのにも時間が掛ってしまう。
なお、マクロが含まれた半導体集積回路の動作タイミングを検証する技術が存在している。この技術では、機能ブロック境界のタイミング検証で境界遅延算出ツールを使用して、外部端子に対して与えられる物理量と境界遅延時間との間の依存性を示す特殊な境界遅延テーブルを生成する。
また、大規模マクロを含むカスタム論理IC(Integrated Circuit)の論理及びタイミングチェックを行うタイミングチェック技術も存在している。この技術では、大規模マクロのタイミング仕様を記述するデータシートタイミング定義ファイルと、内部論理を定義するゲートレベルネットリストファイルと、全体のシミュレーション時に大規模マクロ境界で状態値を取り出すプローブ処理と、状態値をプローブしたシミュレーション結果をインタフェースするためのプローブインタフェースファイルとを備える。そして、データシートタイミング定義ファイルの制約条件を満足するか否かをチェックし、規約違反と未検出タイミングエラー項目一覧を出力するチェックツールによって大規模マクロ境界とユーザロジック間でのタイミングチェックを行うものである。しかしながら、メモリ容量を少なくするというような観点はない。
特開2001−273338号公報 特開平6−174781号公報
従って、本技術の目的は、一側面において、半導体集積回路における回路境界についてのタイミング検証処理を、少ないメモリ容量で可能にするための技術を提供することである。
第1の態様に係るタイミング検証支援装置は、(A)半導体集積回路全体についての回路データである第1の回路データを格納する記憶装置と、(B)記憶装置に格納されている第1の回路データにおいて、タイミング検証対象として指定された回路素子である指定回路素子と当該指定回路素子以外の部分との境界におけるタイミング検証を行う際にトレースすべきパスに含まれ且つ指定回路素子を含む複数の回路素子を特定する探索部と、(C)探索部によって特定された複数の回路素子についての回路データを含む、上記タイミング検証用の第2の回路データを生成し、記憶装置に格納する生成部とを有する。
第2の態様に係るタイミング検証支援装置は、(A)半導体集積回路全体についての回路データである第1の回路データを格納する記憶装置と、(B)記憶装置に格納されている第1の回路データに含まれ且つ半導体集積回路を機能単位で分割した複数の機能ブロックの境界をまたいで繋がれる順序回路間の回路素子群と当該回路素子群にクロックを供給するパスに含まれる回路素子群とを特定する探索部と、(C)探索部によって特定された回路素子群についての回路データを含む、複数の機能ブロックの境界についてのタイミング検証用の第2の回路データを生成し、記憶装置に格納する生成部とを有する。
半導体集積回路における回路境界についてのタイミング検証処理が、少ないメモリ容量で可能になる。
図1は、実施の形態のシステム概要図である。 図2は、タイミング検証支援装置の機能ブロック図である。 図3は、タイミング検証装置の機能ブロック図である。 図4は、第1の実施の形態に係る処理の処理フローを示す図である。 図5は、チップの第1の例を示す図である。 図6は、チップの第2の例を示す図である。 図7Aは、本実施の形態において用いられるデータ構造を示す図である。 図7Bは、本実施の形態において用いられるデータ構造を示す図である。 図8は、回路素子についてのマーク付与処理の処理フローを示す図である。 図9は、回路素子についてのマーク付与処理の処理フローを示す図である。 図10は、バックワードトレースを説明するための図である。 図11は、バックワードトレースのデータ構造の一例を示す図である。 図12は、フォーワードトレースを説明するための図である。 図13は、フォーワードトレースのデータ構造の一例を示す図である。 図14は、回路素子についてのマーク付与処理の処理フローを示す図である。 図15は、クロックパスについてのマーク付与処理の処理フローを示す図である。 図16は、クロックパスのトレースについて説明するための図である。 図17は、クロックパスのトレースで生成されるデータ構造の一例を示す図である。 図18は、クロックパスのトレースで生成されるデータ構造の一例を示す図である。 図19は、クロックパスについてのマーク付与処理の処理フローを示す図である。 図20は、回路素子削除処理の処理フローを示す図である。 図21は、回路素子削除処理の処理フローを示す図である。 図22は、第2回路DBを模式的に示す図である。 図23は、第2回路DBを模式的に示す図である。 図24は、タイミング検証装置において実行される処理の処理フローを示す図である。 図25は、第2の実施の形態における処理の処理フローを示す図である。 図26Aは、回路素子についての第2マーク付与処理の処理フローを示す図である。 図26Bは、回路素子についての第2マーク付与処理の処理フローを示す図である。 図27は、回路素子についての第2マーク付与処理の処理フローを示す図である。 図28は、回路素子についての第2マーク付与処理の処理結果例を模式的に示す図である。 図29は、第2の実施の形態における処理結果例を示す図である。 図30は、コンピュータの機能ブロック図である。
[実施の形態1]
図1に本実施の形態に係るシステム概要を示す。図1に示すように、本システムにおいて、ネットワーク1には、タイミング検証支援装置3と、複数のタイミング検証装置5(図1ではタイミング検証装置5A乃至5D)とが接続されている。本実施の形態では、例えば機能ブロックの設計者が、タイミング検証装置5を用いて、自身が設計を行っている機能ブロックの境界におけるタイミング検証を実施する。タイミング検証装置5によって行われるタイミング検証は、タイミング検証支援装置3によって生成されたデータを用いて行われる。タイミング検証支援装置3は、タイミング検証装置5よりも大容量のメモリを搭載しており、処理能力もタイミング検証装置5より高いものとする。
図1に示すように、タイミング検証支援装置3は、タイミング検証対象の半導体集積回路全体(チップレベルとも呼ぶ)の回路データベースのデータ等を格納する記憶装置31を有する。なお、回路データベースは、マクロ情報、ディレイ情報、回路素子間の接続情報などを含む設計データである。また、タイミング検証装置5は、タイミング検証対象の機能ブロックの回路データベース及び本実施の形態で生成される、チップレベルの回路データベースを格納する記憶装置51を有する。
図2に、タイミング検証支援装置3の機能ブロック図を示す。タイミング検証支援装置3は、処理部33と、記憶装置31と、メモリ35とを有する。処理部33は、タイミング検証支援部333を有しており、タイミング検証支援部333は、データパス探索部3331とクロックパス探索部3333とを含む探索部3330と、回路DB生成部3335とを有する。タイミング検証支援部333は、記憶装置31に格納されている回路データベースのデータをメモリ35に読み出して処理を実施し、処理結果の回路データベースのデータを記憶装置31に格納する。本実施の形態では、記憶装置31には、チップレベルの回路データベースである第1回路DB311が格納されており、タイミング検証支援部333は、第1回路DB311をメモリ35に読み出して処理を実施して、処理結果である第2回路DB313を記憶装置31に格納する。以下で説明するように、第1回路DB311よりも第2回路DB313の方がサイズが小さくなっている。
図3に、タイミング検証装置5の機能ブロック図を示す。タイミング検証装置5は、記憶装置51と、処理部53と、メモリ55とを有する。処理部53は、タイミング検証部531と設計処理部533とを有している。タイミング検証部531は、記憶装置51に格納されている回路データベースのデータをメモリ55に読み出して、よく知られているタイミング検証のための処理を実施し、処理結果を設計者に出力する。また、設計処理部533は、機能ブロック等の設計変更を行うためのツールなどである。本実施の形態では、記憶装置51には、タイミング検証支援装置3で生成された第2回路DB313と、設計者が設計している機能ブロック等の回路データベースである第3回路DB511とが格納されている。タイミング検証部531は、記憶装置51に格納されている第2回路DB313及び第3回路DB511をメモリ55に読み出して、タイミング検証のためのデータを生成して、よく知られているタイミング検証のための処理を実施する。
次に、図4乃至図23を用いて、タイミング検証支援装置3で行われる処理について説明する。タイミング検証支援装置3のタイミング検証支援部333は、機能ブロックの設計者から、処理開始の指示及び処理対象の機能ブロック等の指定を受け付け、処理対象の機能ブロック等を特定するためのデータをメモリ35に格納する(ステップS1)。本実施の形態では、機能ブロック単位で処理対象を指定する他に、任意の領域内の回路を指定するようにしても良い。第1の例として、図5に示すようなチップを想定する。図5の例では、チップ1000内に、処理対象の機能ブロック1100が含まれており、この機能ブロック1100には、FF(L03乃至L05)と、ゲートG03乃至G08及びG10と、ネットN05乃至N10とが含まれる。チップ1000には、機能ブロック1100以外の回路も存在しているが、以下の処理で、機能ブロック境界についてのタイミング検証を行う際にトレースすべきパスに含まれる回路素子が抽出される。なお、FFのMは出力端子を表しDは入力端子を表す。また、FFの上部の三角印はクロック端子であり、FFには外部クロック端子CLKからバッファを介してクロックが供給される。
また、第2の例として、図6に示すようなチップを想定する。図6の例では、チップ3000内には、機能ブロック(subchipと示す)1乃至9が含まれているが、ここでは機能ブロック境界とは無関係に、処理対象領域3100が指定されている。この処理対象領域3100には、FF(COMP3、COMP9、COMP10及びCOMP16)が含まれている。このように、機能ブロック2、機能ブロック4、機能ブロック5、機能ブロック6及び機能ブロック8の一部が、処理対象領域3100に含まれる。
次に、タイミング検証支援部333は、チップレベルの回路データベースである第1回路DB311のデータを、メモリ35に読み込む(ステップS3)。本実施の形態では、以下の処理のために、第1回路DB311のデータは、図7A及び図7Bに示すようなテーブル構造で展開される。但し、本実施の形態に特に関係ある部分のみが示されている。図7Aに示すように、処理に係るチップについてのデータを保持するためのチップテーブル(chip_table)は、当該チップに含まれる機能ブロックのリストであるサブチップテーブルリスト(subchip_table_list)へリンクしている。本機能ブロックについてのデータを保持するためのサブチップテーブルリストの各エントリは、その機能ブロックのサブチップテーブル(subchip_table)へリンクしており、サブチップテーブルは、当該機能ブロックに含まれる回路素子のリストであるコンポーネントテーブルリスト(component_table_list)へリンクしている。コンポーネントテーブルリストの各エントリは、その回路素子のコンポーネントテーブル(component_table)へリンクしている。コンポーネントテーブル以下の構造については、図7Bに示されている。コンポーネントテーブルは、当該回路素子の種別(kind)と、本実施の形態で導入され且つ注目すべきFFであるか否かを表すフラグ(flag)とを含んでおり、当該回路素子のピンテーブルリスト(pin_table_list)へリンクしている。本回路素子の端子についてのデータを保持するためのピンテーブルリストの各エントリは、本回路素子に含まれる端子のピンテーブル(pin_table)へリンクしている。ピンテーブルは、当該ピンの種別(kind)と、入出力の区別(io)と、本実施の形態で導入され且つ第2回路DB313に含めるべきピンであるか否かを表すフラグ(flag)と、当該ピンを含む回路素子のコンポーネントテーブルと当該ピンが接続されているパス(fw_path及びbw_path)のパステーブルリスト(path_table_list(forward)及びpath_table_list(backward))とへリンクしている。パステーブルリスト(path_table_list(forward)及びpath_table_list(backward))の各エントリは、当該パスのパステーブル(path_table)へリンクしている。パステーブルは、接続元のピンのピンテーブルと、接続先のピンのピンテーブルとへリンクしている。なお、フラグについては、初期的には全て「0」にセットされている。また、チップテーブルにおけるsubchipはサブチップテーブルリストへのポインタを表しており、サブチップテーブルにおけるcomponentはコンポーネントテーブルリストへのポインタを表しており、コンポーネントテーブルにおけるpinはピンテーブルリストへのポインタを表す。
そして、探索部3330のデータパス探索部3331は、回路素子についてのマーク付与処理を実施する(ステップS5)。回路素子についてのマーク付与処理については、図8乃至図14を用いて説明する。データパス探索部3331は、ステップS1で設計者から指定された処理対象が機能ブロックであるか判断する(ステップS21)。設計者から指定された処理対象が機能ブロックであれば、データパス探索部3331は、メモリ35に展開されているデータ構造において、処理対象の機能ブロックに該当するサブチップテーブル(subchip_table)を選択し(ステップS23)、選択したサブチップテーブルのコンポーネントテーブルリスト(component_table_list)から、処理に係るコンポーネントテーブルリスト(component_table_list)を生成し、メモリ35に格納する(ステップS25)。選択したサブチップテーブルのコンポーネントテーブルリストからリンクしているコンポーネントテーブル(component_table)を、処理に係るコンポーネントテーブルリストに登録する。そして、ステップS31に移行する。
一方、処理対象が機能ブロックではなく、設計者に指定された領域である場合には、データパス探索部3331は、メモリ35に展開されているデータ構造から、指定された領域に含まれる回路素子を抽出し(ステップS27)、抽出した回路素子のデータから、処理に係るコンポーネントテーブルリスト(component_table_list)を生成し、メモリ35に格納する(ステップS29)。該当する機能ブロックのコンポーネントテーブルリストから、該当する回路素子のコンポーネントテーブルを抽出して、処理に係るコンポーネントテーブルリストに登録する。そして、ステップS31に移行する。
データパス探索部3331は、処理に係るコンポーネントテーブルリストに登録されているコンポーネントテーブル(component_table)におけるフラグと、当該コンポーネントテーブルにリンクしている全てのピンテーブル(pin_table)のフラグを「1」にセットする。これによって、処理対象の機能ブロック等の内部の回路素子及びピンのフラグについては全て「1」がセットされることになる。ピンのフラグが「1」にセットされているということは、そのピンを有する回路素子は削除しないことになる。
その後、データパス探索部3331は、処理に係るコンポーネントテーブルリストにおいて、未処理のコンポーネントテーブルが存在しているか判断する(ステップS33)。未処理のコンポーネントテーブルが存在していない場合には、処理が完了したことになるので、呼び出し元の処理に戻る。
一方、処理に係るコンポーネントテーブルリストにおいて未処理のコンポーネントテーブルが存在している場合には、データパス探索部3331は、処理に係るコンポーネントテーブルリストから未処理のコンポーネントテーブルを1つ特定する(ステップS35)。そして、データパス探索部3331は、特定されたコンポーネントテーブルにおける種別がFFを示しているか判断する(ステップS37)。FFでない場合には、探索対象ではないのでステップS33に戻る。一方、FFであれば、図8の結合子Aを介して図9の処理に移行する。
図9の処理の説明に移行して、データパス探索部3331は、特定されたコンポーネントテーブルからリンクするピンテーブルリスト(pin_table_list)において未処理のピンが存在するか判断する(ステップS39)。未処理のピンが存在しない場合には、結合子Bを介して図8のステップS33に戻る。一方、未処理のピンが存在する場合には、データパス探索部3331は、特定されたコンポーネントテーブルからリンクするピンテーブルリストにおいて、未処理のピンを1つ特定する(ステップS41)。そして、データパス探索部3331は、特定されたピンのピンテーブルにおけるピンの種別が入力ピンを表しているか判断する(ステップS43)。特定されたピンのピンテーブルにおけるピンの種別が入力ピンであれば、データパス探索部3331は、当該ピンについてのバックワードトレースを行い、トレース結果をバックワードトレースのデータ構造として登録する(ステップS45)。その後処理はステップS49に移行する。
ステップS45について図10及び図11を用いて説明する。図10の例では、FF(COMP6)が処理対象の機能ブロック等の内部に配置されている回路素子であるとする。本実施の形態では、FF(COMP6)の入力ピンDから、別のFFの出力ピンMに到達するまでデータパスを、データパス上をデータが伝播する方向とは逆方向にトレースする。図10の例では、FF(COMP1)までのルート1(route_1)と、FF(COMP3)までのルート2(route_2)とが検出される。この際、経路上の回路素子のピンは、ピンテーブルリスト(pin_table_list)に登録される。図10に現れている部分では、ルート1では、COMP6のピンD、COMP5のピンX、COMP5のピンA、...COMP2のピンX、COMP2のピンA、及びCOMP1のピンMが特定される。同様に、ルート2では、COMP6のピンD、COMP5のピンX、COMP5のピンA、COMP4のピンX、COMP4のピンA、及びCOMP3のピンMが特定される。このようなトレースの結果は、例えば図11に示すようなバックワードトレースのデータ構造で保持する。
図11の例では、ルートテーブルリスト(route_table_list)に、探索で検出されたルートのリストが登録されており、各ルートのルートテーブル(route_table)にリンクしている。ルートテーブルは、ピンテーブルリスト(pin_table_list)にリンクしており、ピンテーブルリストは、ルート上検出されたピンが登録されている。ルート1についてのピンテーブルリストには、上で述べた回路素子のピンが登録されている。例えばCOMP1.Mは、FF(COMP1)のピンMを表している。また、ルート2についてのピンテーブルリストにも、上で述べた回路素子のピンが登録されている。例えばCOMP3.Mは、FF(COMP3)のピンMを表している。
一方、特定されたピンのピンテーブルにおけるピンの種別が出力ピンであれば、データパス探索部3331は、当該ピンについてのフォーワードトレースを行い、トレース結果をフォーワードトレースのデータ構造として登録する(ステップS47)。その後処理はステップS49に移行する。
ステップS47について図12及び図13を用いて説明する。図12の例では、FF(COMP1)が処理対象の機能ブロック等の内部に配置されている回路素子であるとする。本実施の形態では、FF(COMP1)の出力ピンMから、別のFFの入力ピンDに達するまでデータパスを順方向にトレースする。図12の例では、FF(COMP4)までのルート1(route_1)と、FF(COMP6)までのルート2(route_2)とが検出される。この際、経路上の回路素子のピンは、ピンテーブルリスト(pin_table_list)に登録される。図12に現れている部分では、ルート1では、COMP1のピンM、COMP2のピンA、COMP2のピンX、...COMP3のピンA、COMP3のピンX、及びCOMP4のピンDが特定される。同様に、ルート2では、COMP1のピンM、COMP2のピンA、COMP2のピンX、COMP5のピンA、COMP5のピンX、及びCOMP6のピンDが特定される。このようなトレースの結果は、例えば図13に示すようなフォーワードトレースのデータ構造で保持する。
図13の例では、ルートテーブルリスト(route_table_list)に、探索で検出されたルートが登録されており、各ルートのルートテーブル(route_table)にリンクしている。ルートテーブルは、ピンテーブルリスト(pin_table_list)にリンクしており、ピンテーブルリストは、ルート上検出されたピンが登録されている。このようにバックワードトレースとフォーワードトレースとは同じデータ構造となっている。
図5の例で、FF(L03)についてバックワードトレース(ステップS45)を実施する場合には、FF(L03)の入力ピンD、ネットN05、ゲートG03、ネットN04、ゲートG02、ネットN03、及びFF(L02)の出力ピンMのルートが特定される。また、FF(L04)についてバックワードトレース(ステップS45)を実施する場合には、FF(L04)の入力ピンD、ネットN06、ゲートG04、ネットN04、ゲートG02、ネットN03、及びFF(L02)の出力ピンMのルートが特定される。なお、FF(L03)の出力ピンMからはフォーワードトレースが行われて、FF(L03)の出力ピンM、ネットN07、及びゲートG05のルートも特定される。但し、このルートについては、ステップS31でフラグがオンにされている部分と同じ部分をトレースすることになる。FF(L04)の出力ピンMからのルートも同様である。
また、図5の例で、FF(L05)についてフォーワードトレース(ステップS47)を実施する場合には、FF(L05)の出力ピンM、ネットN10、ゲートG08、ネットN11、ゲートG09、ネットN12、及びFF(L06)の入力ピンDのルートが特定される。また、FF(L05)の出力ピンM、ネットN10、ゲートG10、ネットN13、ゲートG11、ネットN14、及びFF(L07)の入力ピンDのルートが特定される。なお、FF(L05)の入力ピンDからはバックワードトレースが行われて、FF(L05)の入力ピンD、ネットN09、及びゲートG07のルートも特定される。但し、このルートについては、ステップS31でフラグがオンにされている部分と同じ部分をトレースすることになる。
図6の例で、FF(COMP3)についてバックワードトレース(ステップS45)を行う場合には、FF(COMP3)の入力ピンD、及びFF(COMP2)の出力ピンMのルートが特定される。また、FF(COMP9)についてバックワードトレース(ステップS45)を行う場合には、FF(COMP9)の入力ピンD、及びFF(COMP8)の出力ピンMのルートが特定される。FF(COMP16)についてバックワードトレース(ステップS45)を行う場合には、FF(COMP16)の入力ピンD、及びFF(COMP15)の出力ピンMのルートが特定される。一方、FF(COMP3)についてフォーワードトレース(ステップS47)を行う場合には、FF(COMP3)の出力ピンM、及びFF(COMP4)の入力ピンDのルートが特定される。また、FF(COMP10)についてフォーワードトレース(ステップS47)を行う場合には、FF(COMP10)の出力ピンM、及びFF(COMP11)の入力ピンDのルートが特定される。FF(COMP16)についてフォーワードトレース(ステップS47)を行う場合には、FF(COMP16)の出力ピンM、及びFF(COMP17)の入力ピンDのルートが特定される。
その後、データパス探索部3331は、ステップS45又はS47で生成されたルートテーブルリスト(route_table_list)において未処理のルートテーブル(route_table)が存在しているか判断する(ステップS49)。未処理のルートテーブルが存在しない場合にはステップS39に戻る。一方、データパス探索部3331は、ルートテーブルリストにおいて未処理のルートテーブルを1つ特定する(ステップS51)。そして処理は図9の結合子Dを介して図14の処理に移行する。
図14の処理の説明に移行して、データパス探索部3331は、特定されたルートテーブルについてのピンテーブルリスト(pin_table_list)において未処理のピン(具体的にはピンテーブル(pin_table))が存在するか判断する(ステップS53)。未処理のピンが存在しない場合には、図14の結合子Cを介して図9のステップS49に戻る。一方、未処理のピンが存在する場合には、データパス探索部3331は、特定されたルートテーブルについてのピンテーブルリストにおける未処理のピンを1つ特定する(ステップS55)。そして、データパス探索部3331は、特定されたピンについてのピンテーブルにおけるフラグを1にセットする(ステップS57)。さらに、データパス探索部3331は、特定されたピンを有する回路素子のコンポーネントテーブルにおける種別がFFであるか判断する(ステップS59)。FFでなければ、ステップS53に戻る。一方、FFであれば、当該FFはクロックパスをトレースすべき回路素子であるから、データパス探索部3331は、当該コンポーネントテーブルにおけるフラグを1にセットする(ステップS61)。そしてステップS53に戻る。
以上のように、処理対象の機能ブロック等の内部に配置されているFFからフォーワードトレース又はバックワードトレースを行って、最初にFFを検出するまでのルート上の回路素子のピンにフラグをセットする。さらに、フォーワードトレース及びバックワードトレースにおいて検出されたFFについては、クロックパスのトレースを行う起点となるため、回路素子についてのフラグもセットする。
このような処理の後に図4の処理の説明に戻って、探索部3330のクロックパス探索部3333は、クロックパスについてのマーク付与処理を実施する(ステップS7)。クロックパスについてのマーク付与処理については、図15乃至図19を用いて説明する。クロックパス探索部3333は、図7A及び図7Bで示したようなデータ構造においてマークされた(すなわちフラグがセットされた)FFを特定し、当該FFのコンポーネントテーブルをマーク付きFFテーブルリスト(marked_ff_table_list)に登録する(ステップS71)。そして、クロックパス探索部3333は、マーク付きFFテーブルリストにおいて未処理のFFが存在するか判断する(ステップS73)。未処理のFFが存在しない場合には、呼び出し元の処理に戻る。一方、未処理のFFが存在する場合には、クロックパス探索部3333は、マーク付きFFテーブルリストにおいて未処理のFFのコンポーネントテーブルを1つ特定する(ステップS75)。
その後、クロックパス探索部3333は、特定されたFFのコンポーネントテーブルからリンクされるピンテーブルリストに列挙されたピンのうち種別がクロック入力であるピンについてバックワードトレースを実施して、トレース結果をトレースのデータ構造として登録する(ステップS77)。
ステップS77の処理については図16乃至図18を用いて説明する。図16に示すように、処理対象の機能ブロック等3500には、FF(COMP3)が配置されており、処理対象の機能ブロック等3500の外部には、当該FF(COMP3)の入力ピンDからバックワードトレースによって特定されたFF(COMP5)が配置されている。これらのFF(COMP3及び5)についてのコンポーネントテーブルにおけるフラグは1にセットされ、クロックパスのトレースの対象となる。そして、FF(COMP3)のクロックピンからは、回路素子COMP2の出力ピンXと入力ピンAと、...回路素子COMP1の出力ピンXと入力ピンAとを介してクロック源までバックワードトレースが行われる。ここではこのトレースでのルートをルート1−1(route_1_1)とする。また、FF(COMP5)のクロックピンからは、回路素子COMP4の出力ピンXと入力ピンAと、...回路素子COMP1の出力ピンXと入力ピンAとを介してクロック源までバックワードトレースが行われる。ここではこのトレースでのルートをルート2−1(route_2_1)とする。
FF(COMP3)についてのトレースで生成されるデータ構造を、図17に示す。図17の例では、FF毎にルートテーブルリスト(route_table_list)が設けられ、当該FFについて検出されたルートが登録されており、各エントリは、ルートテーブル(route_table)へリンクされている。ルートテーブルは、ピンテーブルリスト(pin_table_list)にリンクされており、当該ルートをトレースする際に検出されたピンのピンテーブルが列挙されている。図17のピンテーブルリストは、ルート1−1について述べたピンのリストとなっている。
FF(COMP5)についてのトレースで生成されるデータ構造を、図18に示す。図18も図17と同様のデータ構造を示しており、図18のピンテーブルリストは、ルート2−1について述べたピンのリストとなっている。
そして、クロックパス探索部3333は、ルートテーブルリスト(route_table_list)において未処理のルートテーブル(route_table)が存在するか判断する(ステップS79)。未処理のルートテーブルが存在しない場合にはステップS73に戻る。一方、未処理のルートテーブルが存在する場合には、クロックパス探索部3333は、ルートテーブルリストにおいて未処理のルートテーブルを1つ特定する(ステップS81)。そして、処理は図15の結合子Eを介して図19の処理に移行する。
図19の処理の説明に移行して、クロックパス探索部3333は、特定されたルートテーブルのピンテーブルリスト(pin_table_list)において未処理のピンが存在しているか判断する(ステップS83)。未処理のピンが存在しない場合には、図19の結合子Fを介して図15のステップS79に戻る。一方、未処理のピンが存在する場合には、クロックパス探索部3333は、特定されたルートテーブルのピンテーブルリストにおいて未処理のピンを1つ特定する(ステップS85)。そして、クロックパス探索部3333は、当該ピンのピンテーブル(pin_table)におけるフラグを1にセットする(ステップS87)。そしてステップS83に戻る。
以上のような処理を実施することで、回路素子についてのマーク付与処理において特定された各FFから探索されるクロックパス上の回路素子のピンにフラグをセットすることができる。
図5の例では、FF(L02)、FF(L03)、FF(L04)、FF(L05)、FF(L06)及びFF(L07)について、クロック源(CLK)までのルート上のゲート1110乃至1150のピンにはフラグがセットされる。
図4の処理の説明に戻って、回路DB生成部3335は、回路素子削除処理を実施する(ステップS9)。回路素子削除処理については、図20乃至図23を用いて説明する。回路DB生成部3335は、サブチップテーブルリスト(subchip_table_list)において未処理の機能ブロックが存在しているか判断する(ステップS91)。未処理の機能ブロックが存在していない場合には、呼び出し元の処理に戻る。
一方、未処理の機能ブロックが存在している場合には、回路DB生成部3335は、サブチップテーブルリストにおいて未処理の機能ブロックを1つ特定する(ステップS93)。そして、回路DB生成部3335は、特定された機能ブロックについてのサブチップテーブル(subchip_table)からリンクされているコンポーネントテーブルリスト(component_table_list)において未処理のコンポーネントテーブル(component_table)が存在するか判断する(ステップS95)。未処理のコンポーネントテーブルが存在していない場合には、ステップS91に戻る。
一方、未処理のコンポーネントテーブルが存在している場合には、回路DB生成部3335は、特定された機能ブロックについてのサブチップテーブルからリンクされているコンポーネントテーブルリストにおける未処理のコンポーネントテーブルを1つ特定する(ステップS97)。そして、回路DB生成部3335は、特定されたコンポーネントテーブルからリンクされているピンテーブルリスト(pin_table_list)において未処理のピンが存在するか判断する(ステップS99)。未処理のピンが存在しない場合については、後に説明する。
一方、未処理のピンが存在する場合には、回路DB生成部3335は、特定されたコンポーネントテーブルからリンクされているピンテーブルリストにおいて未処理のピンを1つ特定する(ステップS101)。処理は図20の結合子Gを介して図21の処理に移行する。
図21の処理の説明に移行して、回路DB生成部3335は、特定されたピンのピンテーブルにおけるフラグが1にセットされているか判断する(ステップS109)。フラグが1であれば図21の結合子Hを介して図20のステップS99に戻る。一方、フラグが0であれば、回路DB生成部3335は、該当するピンテーブル(pin_table)以下のデータを削除し、当該ピンテーブルにリンクしているピンテーブルリスト(pin_table_list)の該当ピンのエントリにNULLを代入する(ステップS109)。これによりピン自体が存在しないことになる。そして図21の結合子Hを介して図20のステップS99に戻る。
一方、ステップS99で、特定されたコンポーネントテーブルからリンクされているピンテーブルリスト(pin_table_list)において未処理のピンが存在しないと判断された場合には、回路DB生成部3335は、特定されたコンポーネントテーブルからリンクされているピンテーブルリストのエントリが全てNULLであるか判断する(ステップS103)。ピンテーブルリストのエントリが全てNULLである場合には、回路DB生成部3335は、特定されたコンポーネントテーブルを削除する(ステップS105)。他の回路素子に接続されていない回路素子については全く用いられないので削除する。そしてステップS95に戻る。一方、ピンテーブルリストのエントリの少なくとも1つにNULLではない値が登録されている場合には、ステップS95に戻る。
以上のような処理を実施することで、フラグがセットされていない回路素子のピンは削除され、いずれの回路素子にも接続されていない回路素子も削除される。
図4の処理の説明に戻って、回路DB生成部3335は、メモリ35に格納されている、回路素子削除処理後の回路データを、チップレベルの新たな回路データベース、すなわち第2回路DB313として、記憶装置31に格納する(ステップS11)。回路データベースの構造などについてはよく知られているので生成方法などについては説明を省略する。なお、削除されてしまった回路素子については、ディレイ情報などのタイミング検証で用いられないデータについても削除され、第2回路DB313には含まれない。
例えば、設計者には、処理完了を通知する。第2回路DB313を、設計者が使用するタイミング検証装置5に送信するようにしても良い。
図5の例の処理結果を図22に示す。図22に示すように、上で述べた処理でフラグがセットされていない回路素子のピンについては削除され、全てのピンが削除された回路素子も削除され、回路データがコンパクト化されている。具体的には、FF(L01)、FF(L08)、FF(L09)と、ゲートG01、G12及びG13、ゲート1160及び1170とが削除されている。図6の例でも、FF(COMP1)、FF(COMP5)、FF(COMP6)、FF(COMP7)、FF(COMP12)、FF(COMP13)、FF(COMP14)及びFF(COMP18)が削除される。
なお、図5の例では処理対象の機能ブロックとチップ全体との関係があまり明瞭ではないので、データ削減効果が分かりにくい。しかし、図23に示すように、チップ1500に機能ブロックが64個あるような場合、処理対象の機能ブロック1600については全ての回路素子のデータが含まれるが、当該機能ブロック1600との境界についてタイミング検証を行う際にトレースすべきパス(データパス及びクロックパス)が存在している14個の機能ブロックについては、一部の回路素子だけが含まれるようになる。すなわち、図23においてハッチングが付されている16個の機能ブロックにおいては、機能ブロック1600内のFFからデータパスをトレースして検出される直前又は直後の隣接FFまでの回路素子と機能ブロック1600内のFF及び隣接FFに対するクロックパス上の回路素子とだけが残される。その他の機能ブロックについては、管理情報だけになるため、大幅にデータが削減されていることが分かる。従って、チップ全体の回路データが展開されるメモリ35よりも少ないメモリしか有しないタイミング検証装置5においても、タイミング検証を実施できるようになる。
タイミング検証装置5の処理内容については従来とほぼ同じであるが、簡単に図24を用いて説明する。タイミング検証装置5のタイミング検証部531は、機能ブロックの設計者からの指示に応じて、記憶装置51(場合によってはタイミング検証支援装置3の記憶装置31)からチップレベルの新しい回路DB(すなわち第2回路DB313)をメモリ55に読み出すと共に、検証対象の機能ブロック等の回路データベースである第3回路DB511を記憶装置51からメモリ55に読み出して、マージする(ステップS201)。第2回路DB313に含まれる検証対象機能ブロック等の回路部分を、第3回路DB511の回路データで置換して繋ぎ直す処理を実施する。この処理はよく知られているのでこれ以上述べない。なお、検証対象機能ブロック等の最新データで第2回路DB313が生成されていれば(例えば初めて実行する場合など)、ステップS201では第3回路DB511を読み出してマージすることはない。
次に、タイミング検証部531は、周知の方法で機能ブロック境界(又は指定領域との境界)のディレイ計算を実施する(ステップS203)。そして、タイミング検証部531は、機能ブロック境界のディレイ計算の結果を用いて、周知の方法でタイミング検証を実施する(ステップS205)。検証結果はメモリ55又は記憶装置51に格納される。その後、タイミング検証部531は、検証結果から機能ブロック境界等の結果を検索して、出力装置(表示装置等)に出力する(ステップS207)。検証結果が問題なしを表している場合には、処理を終了する。
一方、検証結果に問題がある場合には、設計者は、タイミング検証装置5又は他の装置の設計処理部533により、機能ブロックの設計変更を実施する(ステップS211)。この処理については、設計ツールなど他のプログラムを使用するが、本実施の形態の主旨ではないのでこれ以上説明しない。そして、タイミング検証部531は、設計変更後の機能ブロック内部のディレイ計算を実施し、機能ブロックの回路データベース(すなわち、新たな第3回路DB511)として記憶装置51に格納する(ステップS213)。そしてステップS201に戻る。
このような処理を実施することで、機能ブロック境界のタイミング検証において問題のない機能ブロックの回路データを生成することができるようになる。上でも述べたように、第2回路DB313は、第1回路DB311よりもサイズが小さくなっているため、タイミング検証装置5のメモリ55の容量が少なくても済む。また、第2回路DB313のサイズが小さくなっているため、メモリ55への読み込み時間も短縮され、着目している回路の数も減っているため、ターンアラウンドタイム(Turn Around Time)の短縮が期待される。また、機能ブロックの設計でチップ設計のクロックスキューを使用することにより、機能ブロックの設計でクロックディレイを正確に評価できるようになる。
[実施の形態2]
第1の実施の形態では、主に、機能ブロックの設計者を中心に機能ブロック境界のタイミング検証で用いるデータを削減するための構成例を示した。本実施の形態では、チップレベルの設計者が、チップ全体で、機能ブロック境界のタイミング検証を行うケースを考える。
基本的なシステム構成は第1の実施の形態と同様である。また、タイミング検証支援装置3の構成も、その具体的な機能は異なるが図2に示したものと同様である。さらに、タイミング検証装置5の構成も、図3に示したものとほぼ同様である。
図25乃至図29を用いて、本実施の形態に係るタイミング検証支援装置3の処理内容について説明する。まず、タイミング検証支援部333は、チップレベルの回路データベースである第1回路DB311のデータを、メモリ35に読み込む(ステップS301)。本実施の形態でも、以下の処理のために、第1回路DB311のデータは、図7A及び図7Bに示すようなテーブル構造で展開される。
そして、データパス探索部3331は、回路素子についての第2マーク付与処理を実施する(ステップS303)。回路素子についての第2マーク付与処理については、図26A乃至図29を用いて説明する。この処理では、各機能ブロックにおいて、その機能ブロック境界に配置されているFF及び当該FFより外側の他の回路素子にマークを付すものである。
データパス探索部3331は、サブチップテーブルリスト(subchip_table_list)において未処理の機能ブロックが存在しているか判断する(ステップS311)。未処理の機能ブロックが存在していない場合には、呼び出し元の処理に戻る。一方、未処理の機能ブロックが存在している場合には、データパス探索部3331は、サブチップテーブルリストから未処理の機能ブロックを1つ特定する(ステップS313)。そして、データパス探索部3331は、特定された機能ブロックの外部にある全てのFFのコンポーネントテーブル(component_table)をFFコンポーネントテーブルリスト(ff_component_table_list)に登録する(ステップS315)。図7A及び図7Bのデータ構造から、特定された機能ブロック以外の機能ブロックを特定して、それらの機能ブロックの全てのコンポーネントテーブルの種別を確認し、FFであれば当該コンポーネントテーブルをFFコンポーネントテーブルリストに登録する。
そして、データパス探索部3331は、FFコンポーネントテーブルリストにおいて未処理のコンポーネントテーブルが存在しているか判断する(ステップS317)。未処理のコンポーネントテーブルが存在していない場合にはステップS311に戻る。一方、未処理のコンポーネントテーブルが存在している場合には、データパス探索部3331は、FFコンポーネントテーブルリストにおける未処理のコンポーネントテーブルを1つ特定する(ステップS319)。そして、データパス探索部3331は、特定されたコンポーネントテーブルからリンクされるピンテーブルリスト(pin_table_list)において未処理のピンが存在するか判断する(ステップS321)。未処理のピンが存在しない場合には、データパス探索部3331は、ピンテーブルリストにおいて未処理のピンを特定する(ステップS323)。そして処理は図26Aの結合子Jを介して図26Bの処理に移行する。
図26Bの処理の説明に移行して、データパス探索部3331は、特定されたピンのピンテーブルにおける種別が入力ピンを示しているか判断する(ステップS325)。特定されたピンのピンテーブルにおけるピンの種別が入力ピンであれば、データパス探索部3331は、当該ピンについてのバックワードトレースを行い、トレース結果をバックワードトレースのデータ構造として登録する(ステップS327)。この処理はステップS45と同じであり、詳細な説明は省略する。その後処理はステップS331に移行する。
一方、特定されたピンのピンテーブルにおけるピンの種別が出力ピンである場合には、データパス探索部3331は、当該ピンについてのフォーワードトレースを行い、トレース結果をフォーワードトレースのデータ構造として登録する(ステップS329)。この処理はステップS47と同じであり、詳細な説明を省略する。その後処理はステップS331に移行する。
その後、データパス探索部3331は、ステップS327又はS329で生成されたルートテーブルリスト(route_table_list)において未処理のルートテーブルが存在するか判断する(ステップS331)。未処理のルートテーブルが存在していない場合には、図26Bの結合子Kを介して図26AのステップS321に戻る。一方、未処理のルートテーブルが存在している場合には、データパス探索部3331は、ルートテーブルリストにおいて未処理のルートテーブルを1つ特定する(ステップS333)。そして図26Bの結合子Mを介して図27の処理に移行する。
図27の処理に移行して、データパス探索部3331は、特定されたルートテーブルからリンクされるピンテーブルリスト(pin_table_list)において未処理のピンが存在するか判断する(ステップS335)。未処理のピンが存在していない場合には、図27の結合子Lを介して図26BのステップS331に戻る。一方、未処理のピンが存在する場合には、データパス探索部3331は、特定されたルートテーブルからリンクされるピンテーブルリストにおいて未処理のピンを1つ特定する(ステップS337)。そして、データパス探索部3331は、特定されたピンのピンテーブルからリンクしているコンポーネントテーブル等から、特定されたピンを有するコンポーネントが、ステップS313で特定した注目機能ブロック内に含まれているか判断する(ステップS339)。特定されたピンを有するコンポーネントが注目機能ブロック内に含まれていない場合には、ここではフラグをセットしないピンであるので、ステップS335に戻る。
一方、特定されたピンを有するコンポーネントが注目機能ブロック内に含まれている場合には、データパス探索部3331は、特定されたピンのピンテーブルにおけるフラグを1にセットする(ステップS341)。そして、データパス探索部3331は、特定されたピンを有する回路素子のコンポーネントテーブルにおける種別がFFを示しているか判断する(ステップS343)。特定されたピンを有する回路素子のコンポーネントテーブルにおける種別がFFではない場合には、クロックパス探索の対象ではないのでステップS335に戻る。一方、特定されたピンを有する回路素子のコンポーネントテーブルにおける種別がFFである場合には、データパス探索部3331は、当該ピンを有する回路素子のコンポーネントテーブルにおけるフラグを1にセットする(ステップS345)。これによってクロックパスを探索する対象のFFを特定できるようになる。そしてステップS335に戻る。
以上のような処理を実施することで、各機能ブロックにおいて、機能ブロック境界に配置されているFF及び当該FFより外側の回路素子にマークが付されることになる。図5の例で、図28に示すように、機能ブロック1100の内部の一部の回路素子のみにマークが付される。すなわち、機能ブロック1100の内部には、FF(L03)、FF(L04)、FF(L05)、ゲートG03乃至G08及びG10が存在しているが、ここでは、ゲートG05乃至G07のピンにはマークは付されない。
図25の処理の説明に戻って、クロックパス探索部3333は、クロックについてのマーク付与処理を実施する(ステップS305)。この処理はステップS7(図15及び図19)と同じである。これによって、マークされたFFからのクロックパス上の回路素子のピンにマークが付される。
そして、回路DB生成部3335は、回路素子削除処理を実施する(ステップS307)。回路素子削除処理については、ステップS9(図20及び図21)と同じである。これによって、機能ブロック境界に配置されているFF間のデータパス上の回路素子と、それらのFFからのクロックパス上の回路素子とが残ることになる。模式的に示すと図29に示すような回路データが残ることになる。すなわち、機能ブロック境界付近に配置されて機能ブロック境界をまたいで接続されており且つ矩形で示されているFFと、当該FFについてのクロックパス1700上の回路素子(丸印)とが残る。図29では、一部のFFにはFF同士の接続しか示していないものもあるが、これらのFFにもクロックパス1700が接続されている。
その後、回路DB生成部3335は、メモリ35に格納されている、回路素子削除処理後の回路データを、チップレベルの新たな回路データベース、すなわち第2回路DB313(第1の実施の形態における第2回路DB313とは異なる)として、記憶装置31に格納する(ステップS309)。回路データベースの構造などについてはよく知られているので生成方法などについては説明を省略する。なお、削除されてしまった回路素子については、ディレイ情報などのタイミング検証で用いられないデータについても削除され、第2回路DB313には含まれない。
チップレベルの設計者は、例えばタイミング検証装置5において、機能ブロック境界のタイミング検証を実施する。但し、第1の実施の形態とは異なり、各機能ブロック内部の回路も一部に限定されており、機能ブロックについての第3回路DB511とマージすることはない。また、検証処理で問題が検出された場合においては、チップレベルの設計者が、問題が検出された機能ブロックの設計者に設計の修正を依頼する。そして、問題が修正されると、再度上で述べた処理を実施して、チップ全体の機能ブロック境界についての第2回路DB313を生成して、タイミング検証処理を実施する。
この場合においても、タイミング検証処理自体は、データ量が削減された第2回路DB313を用いて行うことができるので、メモリ容量が少ないタイミング検証装置5で実施できる。
以上本技術の実施の形態を説明したが、本技術はこれに限定されるものではない。例えば、処理フローについては、処理結果が変わらない限り、順番を入れ替えたり、ステップを並列実行するようにしても良い。上で述べた機能ブロック図は一例であって、必ずしも実際のプログラムモジュール構成と一致しない場合がある。
なお、上で述べたタイミング検証装置5及びタイミング検証支援装置3は、コンピュータ装置であって、図30に示すように、メモリ2501とCPU(Central Processing Unit)2503とハードディスク・ドライブ(HDD:Hard Disk Drive)2505と表示装置2509に接続される表示制御部2507とリムーバブル・ディスク2511用のドライブ装置2513と入力装置2515とネットワークに接続するための通信制御部2517とがバス2519で接続されている。オペレーティング・システム(OS:Operating System)及び本実施例における処理を実施するためのアプリケーション・プログラムは、HDD2505に格納されており、CPU2503により実行される際にはHDD2505からメモリ2501に読み出される。CPU2503は、アプリケーション・プログラムの処理内容に応じて表示制御部2507、通信制御部2517、ドライブ装置2513を制御して、所定の動作を行わせる。また、処理途中のデータについては、主としてメモリ2501に格納されるが、HDD2505に格納されるようにしてもよい。本技術の実施例では、上で述べた処理を実施するためのアプリケーション・プログラムはコンピュータ読み取り可能なリムーバブル・ディスク2511に格納されて頒布され、ドライブ装置2513からHDD2505にインストールされる。インターネットなどのネットワーク及び通信制御部2517を経由して、HDD2505にインストールされる場合もある。このようなコンピュータ装置は、上で述べたCPU2503、メモリ2501などのハードウエアとOS及びアプリケーション・プログラムなどのプログラムとが有機的に協働することにより、上で述べたような各種機能を実現する。
以上述べた本実施の形態をまとめると、以下のようになる。
本実施の形態の第1の態様に係るタイミング検証支援装置は、(A)半導体集積回路全体についての回路データである第1の回路データを格納する記憶装置と、(B)記憶装置に格納されている第1の回路データにおいて、タイミング検証対象として指定された回路素子である指定回路素子と当該指定回路素子以外の部分との境界におけるタイミング検証を行う際にトレースすべきパスに含まれ且つ指定回路素子を含む複数の回路素子を特定する探索部と、(C)探索部によって特定された複数の回路素子についての回路データを含む、上記タイミング検証用の第2の回路データを生成し、記憶装置に格納する生成部とを有する。
このような構成を採用することで、第1の回路データのサイズより小さい第2の回路データが生成されるため、当該第2の回路データを用いてメモリ容量の少ない装置でも上記のタイミング検証を実施できるようになる。
また、上で述べた探索部が、指定回路素子に含まれる順序回路からデータパスを順方向及び逆方向に他の順序回路にたどり着くまでトレースすることによって回路素子を特定するデータパス探索部と、データパス探索部によって特定された順序回路のクロックパスに含まれる回路素子を特定するクロックパス探索部とを含むようにしてもよい。このようにデータパスをベースに先に回路素子を特定した上で、特定された回路素子のうち順序回路についてのクロックパスをベースに回路素子を特定すれば、目的の回路素子を効率的に特定できるようになる。
なお、記憶装置から読み出された第1の回路データにおいて、第2の回路データに含めるべき回路素子端子を示すための第1のフラグと、当該第2の回路データに含めるべき回路素子端子に係る回路素子が順序回路であるか否かを示すための第2のフラグとを設けておくようにしてもよい。その際、上で述べたデータパス探索部は、指定回路素子に含まれる順序回路から他の順序回路にたどり着くまでのデータパス上の回路素子端子に係る第1のフラグをオンにセットし、当該第1のフラグをオンにセットした回路素子端子に係る回路素子が順序回路であれば第2のフラグをオンにセットするようにしてもよい。さらに、上で述べたクロックパス探索部は、第2のフラグがオンにセットされた順序回路のクロックパス上の回路素子端子に係る第1のフラグをオンにセットするようにしてもよい。また、上で述べた生成部は、記憶装置から読み出された第1の回路データから、第1のフラグがオフの回路素子端子についてのデータ及び全ての回路素子端子についてのデータが削除された回路素子についてのデータを削除することで第2の回路データを生成するようにしてもよい。このようにすれば、効率的に適切な回路素子に絞り込むことができる。
また、第2の態様の実施の形態に係るタイミング検証支援装置は、(A)半導体集積回路全体についての回路データである第1の回路データを格納する記憶装置と、(B)記憶装置に格納されている第1の回路データに含まれ且つ半導体集積回路を機能単位で分割した複数の機能ブロックの境界をまたいで繋がれる順序回路間の回路素子群と当該回路素子群にクロックを供給するパスに含まれる回路素子群とを特定する探索部と、(C)探索部によって特定された回路素子群についての回路データを含む、複数の機能ブロックの境界についてのタイミング検証用の第2の回路データを生成し、記憶装置に格納する生成部とを有する。
このようにすれば、一部の回路素子に着目するのではなく、第1の回路データ全体において複数の機能ブロックの境界についてタイミング検証を行う場合にも、メモリ容量が小さい装置で実施できるようになる。
また、上で述べた探索部が、複数の機能ブロックの各々について、当該機能ブロックである第1の機能ブロック以外の第2の機能ブロックに含まれる順序回路からデータパスを順方向及び逆方向に他の順序回路にたどり着くまでトレースして第1の機能ブロック内部の回路素子を特定するデータパス探索部と、データパス探索部によって特定された順序回路のクロックパスに含まれる回路素子を特定するクロックパス探索部とを含むようにしても良い。このようにすれば、目的の回路素子を効率的に特定できるようになる。
さらに、記憶装置から読み出された第1の回路データにおいて、第2の回路データに含めるべき回路素子端子を示すための第1のフラグと、当該第2の回路データに含めるべき回路素子端子に係る回路素子が順序回路であるか否かを示すための第2のフラグとを設けておくようにしてもよい。上で述べたデータパス探索部は、第2の機能ブロックに含まれる順序回路から他の順序回路にたどり着くまでのデータパス上の回路素子端子のうち第1の機能ブロックに含まれる回路素子端子に係る第1のフラグをオンにセットし、当該第1のフラグをオンにセットした回路素子端子に係る回路素子が順序回路であれば第2のフラグをオンにセットするようにしてもよい。また、上で述べたクロックパス探索部は、第2のフラグがオンにセットされた順序回路のクロックパス上の回路素子端子に係る第1のフラグをオンにセットするようにしてもよい。さらに、上で述べた生成部は、記憶装置から読み出された第1の回路データから、第1のフラグがオフの回路素子端子についてのデータ及び全ての回路素子端子についてのデータが削除された回路素子についてのデータを削除することで第2の回路データを生成するようにしてもよい。このようにすれば、効率的に適切な回路素子に絞り込むことができる。
なお、上で述べたような処理をコンピュータに実施させるためのプログラムを作成することができ、当該プログラムは、例えばフレキシブル・ディスク、CD−ROMなどの光ディスク、光磁気ディスク、半導体メモリ(例えばROM)、ハードディスク等のコンピュータ読み取り可能な記憶媒体又は記憶装置に格納される。なお、処理途中のデータについては、RAM等の記憶装置に一時保管される。
以上の実施例を含む実施形態に関し、さらに以下の付記を開示する。
(付記1)
半導体集積回路全体についての回路データである第1の回路データを格納する記憶装置と、
前記記憶装置に格納されている前記第1の回路データにおいて、タイミング検証対象として指定された回路素子である指定回路素子と当該指定回路素子以外の部分との境界におけるタイミング検証を行う際にトレースすべきパスに含まれ且つ前記指定回路素子を含む複数の回路素子を特定する探索部と、
前記探索部によって特定された前記複数の回路素子についての回路データを含む、前記タイミング検証用の第2の回路データを生成し、前記記憶装置に格納する生成部と、
を有するタイミング検証支援装置。
(付記2)
前記探索部が、
前記指定回路素子に含まれる順序回路からデータパスを順方向及び逆方向に他の順序回路にたどり着くまでトレースすることによって回路素子を特定するデータパス探索部と、
前記データパス探索部によって特定された順序回路のクロックパスに含まれる回路素子を特定するクロックパス探索部と、
を含む付記1記載のタイミング検証支援装置。
(付記3)
前記記憶装置から読み出された前記第1の回路データにおいて、前記第2の回路データに含めるべき回路素子端子を示すための第1のフラグと、当該第2の回路データに含めるべき回路素子端子に係る回路素子が順序回路であるか否かを示すための第2のフラグとを設けておき、
前記データパス探索部は、
前記指定回路素子に含まれる順序回路から他の順序回路にたどり着くまでのデータパス上の回路素子端子に係る第1のフラグをオンにセットし、当該第1のフラグをオンにセットした回路素子端子に係る回路素子が順序回路であれば第2のフラグをオンにセットし、
前記クロックパス探索部は、
前記第2のフラグがオンにセットされた順序回路のクロックパス上の回路素子端子に係る第1のフラグをオンにセットし、
前記生成部は、
前記記憶装置から読み出された前記第1の回路データから、前記第1のフラグがオフの回路素子端子についてのデータ及び全ての回路素子端子についてのデータが削除された回路素子についてのデータを削除することで前記第2の回路データを生成する
付記2記載のタイミング検証支援装置。
(付記4)
半導体集積回路全体についての回路データである第1の回路データを格納する記憶装置と、
前記記憶装置に格納されている前記第1の回路データに含まれ且つ前記半導体集積回路を機能単位で分割した複数の機能ブロックの境界をまたいで繋がれる順序回路間の回路素子群と当該回路素子群にクロックを供給するパスに含まれる回路素子群とを特定する探索部と、
前記探索部によって特定された回路素子群についての回路データを含む、前記複数の機能ブロックの境界についてのタイミング検証用の第2の回路データを生成し、前記記憶装置に格納する生成部と、
を有するタイミング検証支援装置。
(付記5)
前記探索部が、
前記複数の機能ブロックの各々について、当該機能ブロックである第1の機能ブロック以外の第2の機能ブロックに含まれる順序回路からデータパスを順方向及び逆方向に他の順序回路にたどり着くまでトレースして前記第1の機能ブロック内部の回路素子を特定するデータパス探索部と、
前記データパス探索部によって特定された順序回路のクロックパスに含まれる回路素子を特定するクロックパス探索部と、
を含む付記4記載のタイミング検証支援装置。
(付記6)
前記記憶装置から読み出された前記第1の回路データにおいて、前記第2の回路データに含めるべき回路素子端子を示すための第1のフラグと、当該第2の回路データに含めるべき回路素子端子に係る回路素子が順序回路であるか否かを示すための第2のフラグとを設けておき、
前記データパス探索部は、
前記第2の機能ブロックに含まれる順序回路から他の順序回路にたどり着くまでのデータパス上の回路素子端子のうち前記第1の機能ブロックに含まれる回路素子端子に係る第1のフラグをオンにセットし、当該第1のフラグをオンにセットした回路素子端子に係る回路素子が順序回路であれば第2のフラグをオンにセットし、
前記クロックパス探索部は、
前記第2のフラグがオンにセットされた順序回路のクロックパス上の回路素子端子に係る第1のフラグをオンにセットし、
前記生成部は、
前記記憶装置から読み出された前記第1の回路データから、前記第1のフラグがオフの回路素子端子についてのデータ及び全ての回路素子端子についてのデータが削除された回路素子についてのデータを削除することで前記第2の回路データを生成する
付記5記載のタイミング検証支援装置。
(付記7)
半導体集積回路全体についての回路データである第1の回路データを格納する記憶装置に格納されている前記第1の回路データにおいて、タイミング検証対象として指定された回路素子である指定回路素子と当該指定回路素子以外の部分との境界におけるタイミング検証を行う際にトレースすべきパスに含まれ且つ前記指定回路素子を含む複数の回路素子を特定するステップと、
前記特定ステップにおいて特定された前記複数の回路素子についての回路データを含む、前記タイミング検証用の第2の回路データを生成し、前記記憶装置に格納するステップと、
を、コンピュータに実行させるためのタイミング検証支援プログラム。
(付記8)
半導体集積回路全体についての回路データである第1の回路データを格納する記憶装置に格納されている前記第1の回路データに含まれ且つ前記半導体集積回路を機能単位で分割した複数の機能ブロックの境界をまたいで繋がれる順序回路間の回路素子群と当該回路素子群にクロックを供給するパスに含まれる回路素子群とを特定するステップと、
前記特定ステップにおいて特定された回路素子群についての回路データを含む、前記複数の機能ブロックの境界についてのタイミング検証用の第2の回路データを生成し、前記記憶装置に格納するステップと、
を、コンピュータに実行させるためのタイミング検証支援プログラム。
3 タイミング検証支援装置
5 タイミング検証装置
31 記憶装置
33 処理部
35 メモリ
333 タイミング検証支援部
3330 探索部
3331 データパス探索部
3333 クロックパス探索部
3335 回路DB生成部
311 第1回路DB
313 第2回路DB

Claims (8)

  1. 半導体集積回路全体についての回路データである第1の回路データを格納する記憶装置と、
    前記記憶装置に格納されている前記第1の回路データにおいて、タイミング検証対象として指定された回路素子である指定回路素子と当該指定回路素子以外の回路素子とを含む回路におけるタイミング検証を行う際にトレースすべきパスに含まれ且つ前記指定回路素子を含む複数の回路素子を特定する探索部と、
    前記探索部によって特定された前記複数の回路素子以外の回路データを削除することによって、前記タイミング検証用の第2の回路データを生成し、前記記憶装置に格納する生成部と、
    を有し、
    前記探索部が、
    前記指定回路素子に含まれる順序回路からデータパスを順方向又は逆方向に他の順序回路にたどり着くまでトレースすることによって回路素子を特定するデータパス探索部と、
    前記データパス探索部によって特定された回路素子に含まれる順序回路のクロックパスを逆方向にクロック源にたどり着くまでトレースすることによって回路素子を特定するクロックパス探索部と、
    を含むタイミング検証支援装置。
  2. 前記探索部は、前記半導体集積回路を機能単位で分割した複数の機能ブロックの境界とは無関係に複数の前記指定回路素子を特定し、特定した複数の前記指定回路素子の各々のタイミング検証を行う際にトレースすべきパスに含まれる複数の回路素子を特定する
    請求項1記載のタイミング検証支援装置。
  3. 前記記憶装置から読み出された前記第1の回路データにおいて、前記第2の回路データに含めるべき回路素子端子を示すための第1のフラグと、当該第2の回路データに含めるべき回路素子端子に係る回路素子が順序回路であるか否かを示すための第2のフラグとを設けておき、
    前記データパス探索部は、
    前記指定回路素子に含まれる順序回路から他の順序回路にたどり着くまでのデータパス上の回路素子端子に係る第1のフラグをオンにセットし、当該第1のフラグをオンにセットした回路素子端子に係る回路素子が順序回路であれば第2のフラグをオンにセットし、
    前記クロックパス探索部は、
    前記第2のフラグがオンにセットされた順序回路のクロックパス上の回路素子端子に係る第1のフラグをオンにセットし、
    前記生成部は、
    前記記憶装置から読み出された前記第1の回路データから、前記第1のフラグがオフの回路素子端子についてのデータ及び全ての回路素子端子についてのデータが削除された回路素子についてのデータを削除することで前記第2の回路データを生成する
    請求項1又は2記載のタイミング検証支援装置。
  4. 半導体集積回路全体についての回路データである第1の回路データを格納する記憶装置と、
    前記記憶装置に格納されている前記第1の回路データに含まれ且つ前記半導体集積回路を機能単位で分割した複数の機能ブロックの境界をまたいで繋がれる順序回路間の回路素子群と当該回路素子群にクロックを供給するパスに含まれる回路素子群とを特定する探索部と、
    前記探索部によって特定された回路素子群以外の回路データを削除することによって、前記複数の機能ブロックの境界についてのタイミング検証用の第2の回路データを生成し、前記記憶装置に格納する生成部と、
    を有し、
    前記探索部が、
    前記複数の機能ブロックの各々について、当該機能ブロックである第1の機能ブロック以外の第2の機能ブロックに含まれる順序回路からデータパスを順方向又は逆方向に他の順序回路にたどり着くまでトレースして前記第1の機能ブロック内部の回路素子を特定するデータパス探索部と、
    前記データパス探索部によって特定された回路素子に含まれる順序回路のクロックパスを逆方向にクロック源にたどり着くまでトレースすることによって回路素子を特定するクロックパス探索部と、
    を含むタイミング検証支援装置。
  5. 前記記憶装置から読み出された前記第1の回路データにおいて、前記第2の回路データに含めるべき回路素子端子を示すための第1のフラグと、当該第2の回路データに含めるべき回路素子端子に係る回路素子が順序回路であるか否かを示すための第2のフラグとを設けておき、
    前記データパス探索部は、
    前記第2の機能ブロックに含まれる順序回路から他の順序回路にたどり着くまでのデータパス上の回路素子端子のうち前記第1の機能ブロックに含まれる回路素子端子に係る第1のフラグをオンにセットし、当該第1のフラグをオンにセットした回路素子端子に係る回路素子が順序回路であれば第2のフラグをオンにセットし、
    前記クロックパス探索部は、
    前記第2のフラグがオンにセットされた順序回路のクロックパス上の回路素子端子に係る第1のフラグをオンにセットし、
    前記生成部は、
    前記記憶装置から読み出された前記第1の回路データから、前記第1のフラグがオフの回路素子端子についてのデータ及び全ての回路素子端子についてのデータが削除された回路素子についてのデータを削除することで前記第2の回路データを生成する
    請求項4記載のタイミング検証支援装置。
  6. 半導体集積回路全体についての回路データである第1の回路データを格納する記憶装置に格納されている前記第1の回路データにおいて、タイミング検証対象として指定された回路素子である指定回路素子と当該指定回路素子以外の回路素子とを含む回路におけるタイミング検証を行う際にトレースすべきパスに含まれ且つ前記指定回路素子を含む複数の回路素子を特定する特定ステップと、
    前記特定ステップにおいて特定された前記複数の回路素子以外の回路データを削除することによって、前記タイミング検証用の第2の回路データを生成し、前記記憶装置に格納するステップと、
    を、コンピュータに実行させ、
    前記特定ステップが、
    前記指定回路素子に含まれる順序回路からデータパスを順方向又は逆方向に他の順序回路にたどり着くまでトレースすることによって回路素子を特定する探索ステップと、
    前記探索ステップにおいて特定された回路素子に含まれる順序回路のクロックパスを逆方向にクロック源にたどり着くまでトレースすることによって回路素子を特定するステップと
    を含むタイミング検証支援プログラム。
  7. 前記特定ステップにおいて、前記半導体集積回路を機能単位で分割した複数の機能ブロックの境界とは無関係に複数の前記指定回路素子を特定し、特定した複数の前記指定回路素子の各々のタイミング検証を行う際にトレースすべきパスに含まれる複数の回路素子を特定する
    請求項6記載のタイミング検証支援プログラム
  8. 半導体集積回路全体についての回路データである第1の回路データを格納する記憶装置に格納されている前記第1の回路データに含まれ且つ前記半導体集積回路を機能単位で分割した複数の機能ブロックの境界をまたいで繋がれる順序回路間の回路素子群と当該回路素子群にクロックを供給するパスに含まれる回路素子群とを特定する特定ステップと、
    前記特定ステップにおいて特定された回路素子群以外の回路データを削除することによって、前記複数の機能ブロックの境界についてのタイミング検証用の第2の回路データを生成し、前記記憶装置に格納するステップと、
    を、コンピュータに実行させ、
    前記特定ステップが、
    前記複数の機能ブロックの各々について、当該機能ブロックである第1の機能ブロック以外の第2の機能ブロックに含まれる順序回路からデータパスを順方向又は逆方向に他の順序回路にたどり着くまでトレースして前記第1の機能ブロック内部の回路素子を特定する探索ステップと、
    前記探索ステップにおいて特定された回路素子に含まれる順序回路のクロックパスを逆方向にクロック源にたどり着くまでトレースすることによって回路素子を特定するステップと
    を含むタイミング検証支援プログラム。
JP2011050123A 2011-03-08 2011-03-08 タイミング検証支援装置、方法及びプログラム Active JP5741077B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2011050123A JP5741077B2 (ja) 2011-03-08 2011-03-08 タイミング検証支援装置、方法及びプログラム
US13/406,906 US8572531B2 (en) 2011-03-08 2012-02-28 Timing verification support device generating second circuit data including circuit elements identified from first circuit data and timing verification support method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2011050123A JP5741077B2 (ja) 2011-03-08 2011-03-08 タイミング検証支援装置、方法及びプログラム

Publications (2)

Publication Number Publication Date
JP2012185775A JP2012185775A (ja) 2012-09-27
JP5741077B2 true JP5741077B2 (ja) 2015-07-01

Family

ID=46797212

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2011050123A Active JP5741077B2 (ja) 2011-03-08 2011-03-08 タイミング検証支援装置、方法及びプログラム

Country Status (2)

Country Link
US (1) US8572531B2 (ja)
JP (1) JP5741077B2 (ja)

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2891004B2 (ja) 1992-12-07 1999-05-17 日本電気株式会社 論理icのタイミングチェック方式
US5644498A (en) * 1995-01-25 1997-07-01 Lsi Logic Corporation Timing shell generation through netlist reduction
US5844818A (en) * 1996-05-10 1998-12-01 Lsi Logic Corporation Method for creating and using design shells for integrated circuit designs
JPH1185810A (ja) * 1997-09-09 1999-03-30 Mitsubishi Electric Corp 半導体集積回路の論理回路検証装置および論理回路検証装置における論理回路検証方法
JP2001273338A (ja) 2000-03-24 2001-10-05 Nec Corp 半導体集積回路の動作タイミング検証方法
JP3987302B2 (ja) * 2001-04-26 2007-10-10 富士通株式会社 経路探索方法、タイミング解析方法、波形解析方法、電子回路シミュレーション装置、及びプログラム
JP2003108619A (ja) * 2001-09-27 2003-04-11 Toshiba Corp 半導体集積回路の設計方法および設計プログラム
US7941774B2 (en) * 2008-08-04 2011-05-10 Texas Instruments Incorporated Partial timing modeling for gate level simulation

Also Published As

Publication number Publication date
JP2012185775A (ja) 2012-09-27
US8572531B2 (en) 2013-10-29
US20120233580A1 (en) 2012-09-13

Similar Documents

Publication Publication Date Title
Bhatnagar Advanced ASIC chip synthesis
JP4994393B2 (ja) 単一のマスターモデルから異なる抽象化レベルの複数のモデルを生成するシステムと方法
US11836641B2 (en) Machine learning-based prediction of metrics at early-stage circuit design
US8762907B2 (en) Hierarchical equivalence checking and efficient handling of equivalence checks when engineering change orders are in an unsharable register transfer level
US8782589B1 (en) Soft pin insertion during physical design
US11836425B2 (en) Engineering change orders with consideration of adversely affected constraints
CN107784185B (zh) 一种门级网表中伪路径的提取方法、装置及终端设备
US11022634B1 (en) Rail block context generation for block-level rail voltage drop analysis
JP5444985B2 (ja) 情報処理装置
JP2000277617A (ja) Asic設計方法およびasic設計装置
JP4998150B2 (ja) 半導体集積回路のフロアプラン編集装置
JP5741077B2 (ja) タイミング検証支援装置、方法及びプログラム
US11675726B2 (en) Interconnect repeater planning and implementation flow for abutting designs
US20210374314A1 (en) Engineering Change Order Scenario Compression by Applying Hybrid of Live and Static Timing Views
JP5447547B2 (ja) マクロ遅延解析装置、マクロ境界パスの遅延解析方法、マクロ境界パスの遅延解析プログラム
JP2006309667A (ja) 動作合成検証装置及び方法
JP7045921B2 (ja) 半導体lsi設計装置および設計方法
Hari et al. Automatic constraint based test generation for behavioral HDL models
JP2005293349A (ja) 回路設計支援システム、設計方法及びプログラム
Khan et al. GHAZI: An Open-Source ASIC Implementation of RISC-V based SoC
US20230177244A1 (en) Creation of reduced formal model for scalable system-on-chip (soc) level connectivity verification
US11475190B1 (en) Method for designing an integrated circuit and an integrated circuit designing system performing the same
US11853668B1 (en) FPGA implementation interleaved with FPGA overlay architectures for emulation
JP5262678B2 (ja) 動作合成システム、動作合成方法、及び動作合成用プログラム
US20230195982A1 (en) Transformations for multicycle path prediction of clock signals

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20131129

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20140626

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20140805

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20141003

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20141202

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20150128

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: 20150331

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20150413

R150 Certificate of patent or registration of utility model

Ref document number: 5741077

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150