(57)【要約】【課題】可検査性に優れる半導体集積回路を設計すること。【解決手段】設計支援装置は、ライブラリ２２、作成部２３、分割部２４及び削除部２５を備える。ライブラリ２２は、複数の演算器のそれぞれについて信号の入力から出力までに要する時間を示す遅延値の情報を有する。作成部２３は、コンピュータのプログラミング言語のソースコード２１及びライブラリ２２に基づいて、演算器及びフリップフロップの配置を示すデータフロー図を作成する。分割部２４は、遅延値が周波数の制約条件を満たすとともに、演算器の一つの出力端子に対する入力端子の数が閾値以下となるように、データフロー図の演算器の論理を分割する。削除部２５は、連続する複数の演算器の遅延値の和が周波数の制約条件を満たすとともに、演算器の一つの出力端子に対する入力端子の数が閾値以下となるように、データフロー図の演算器間のフリップフロップを削除する。【選択図】図２
2014021679.tif 000002
【特許請求の範囲】
【請求項１】
複数の演算器のそれぞれについて信号の入力から出力までに要する時間を示す遅延値の情報を有するライブラリと、
コンピュータのプログラミング言語のソースコード及び前記ライブラリに基づいて、前記演算器及びフリップフロップの配置を示すデータフロー図を作成する作成部と、
前記遅延値が周波数の制約条件を満たすとともに、前記演算器の一つの出力端子に対する入力端子の数が閾値以下となるように、前記データフロー図の前記演算器の論理を分割する分割部と、
連続する複数の前記演算器の前記遅延値の和が前記周波数の制約条件を満たすとともに、前記演算器の一つの出力端子に対する入力端子の数が前記閾値以下となるように、前記データフロー図の前記演算器間のフリップフロップを削除する削除部と、
を備えることを特徴とする設計支援装置。
【請求項２】
前記分割部は、前記入力端子の数が前記閾値を超える前記演算器を、前記入力端子の数よりも少ない数の入力端子を有する第１演算器と、前記入力端子の数よりも少ない数の入力端子を有する第２演算器とに分割することを特徴とする請求項１に記載の設計支援装置。
【請求項３】
前記分割部は、前記入力端子の数が前記閾値を超える前記演算器を、前段のブロックの出力が後段のブロックの入力になるように複数段のブロックに分割し、前記前段のブロックの出力端子と前記後段のブロックの入力端子との間にフリップフロップを挿入することを特徴とする請求項１に記載の設計支援装置。
【請求項４】
前記閾値は、生成される集積回路に対するテストパターンを生成する際の処理能力に基づいて決定されることを特徴とする請求項１乃至３のいずれか一項に記載の設計支援装置。
【請求項５】
コンピュータのプログラミング言語のソースコード、及び複数の演算器のそれぞれについて信号の入力から出力までに要する時間を示す遅延値の情報を有するライブラリ、に基づいて、前記演算器及びフリップフロップの配置を示すデータフロー図を作成し、
前記遅延値が周波数の制約条件を満たすとともに、前記演算器の一つの出力端子に対する入力端子の数が閾値以下となるように、前記データフロー図の前記演算器の論理を分割し、
連続する複数の前記演算器の前記遅延値の和が前記周波数の制約条件を満たすとともに、前記演算器の一つの出力端子に対する入力端子の数が前記閾値以下となるように、前記データフロー図の前記演算器間のフリップフロップを削除することを特徴とする設計支援方法。
【請求項６】
コンピュータのプログラミング言語のソースコード、及び複数の演算器のそれぞれについて信号の入力から出力までに要する時間を示す遅延値の情報を有するライブラリ、に基づいて、前記演算器及びフリップフロップの配置を示すデータフロー図を作成し、
前記遅延値が周波数の制約条件を満たすとともに、前記演算器の一つの出力端子に対する入力端子の数が閾値以下となるように、前記データフロー図の前記演算器の論理を分割し、
連続する複数の前記演算器の前記遅延値の和が前記周波数の制約条件を満たすとともに、前記演算器の一つの出力端子に対する入力端子の数が前記閾値以下となるように、前記データフロー図の前記演算器間のフリップフロップを削除する、
処理をコンピュータに実行させるプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、設計支援装置、設計支援方法及びプログラムに関する。
【背景技術】
【０００２】
従来、半導体集積回路を設計する際の設計支援技術の一つに、高位合成技術がある。従来、高位合成技術に関し、レジスタトランスファレベル（Ｒｅｇｉｓｔｅｒ  Ｔｒａｎｓｆｅｒ  Ｌｅｖｅｌ：ＲＴＬ）設計工程で設計された集積回路に対して、フィードバックループを含まない無閉路構造、ｎ重整列構造（ｎは正の整数）、などの条件を満たすブロックに分割する方法がある（例えば、特許文献１参照）。また、故障シミュレーションの結果をフィードバックし、論理合成後の組み合わせ回路段数を分割するように、ゲートレベルの論理回路を修正する方法がある（例えば、特許文献２参照）。また、希望時間を超える演算器を、希望時間内に収まるビット数の複数の演算器に分解し、その分解結果から各演算器を割り当てるとともに演算処理に必要なレジスタを各演算器にそれぞれ割り付け、その割り当て結果から論理ゲートレベルの論理回路を生成する装置がある（例えば、特許文献３参照）。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開平１０−１２４５６２号公報
【特許文献２】特開２００５−２２７８４３号公報
【特許文献３】特開平１０−３２６２９７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、従来、高位合成ツールによって、Ｃ言語で記述されている集積回路の動作記述からＲＴＬ記述の集積回路を生成する場合、周波数の制約条件を満たすように演算器及びフリップフロップ（ＦｌｉｐＦｌｏｐ：ＦＦ）が配置されるため、フリップフロップ間の論理段数が多くなることがある。そのため、自動テストパターン生成（Ａｕｔｏｍａｔｉｃ  Ｔｅｓｔ  Ｐａｔｔｅｒｎ  Ｇｅｎｅｒａｔｉｏｎ：ＡＴＰＧ）処理によってテストパターンを生成するのが困難になり、可検査性が悪いという問題点がある。
【０００５】
可検査性に優れる半導体集積回路を設計することができる設計支援装置、設計支援方法及びプログラムを提供することを目的とする。
【課題を解決するための手段】
【０００６】
設計支援装置は、ライブラリ、作成部、分割部及び削除部を有する。ライブラリは、複数の演算器のそれぞれについて信号の入力から出力までに要する時間を示す遅延値の情報を有する。作成部は、コンピュータのプログラミング言語のソースコード及びライブラリに基づいて、演算器及びフリップフロップの配置を示すデータフロー図を作成する。分割部は、遅延値が周波数の制約条件を満たすとともに、演算器の一つの出力端子に対する入力端子の数が閾値以下となるように、データフロー図の演算器の論理を分割する。削除部は、連続する複数の演算器の遅延値の和が周波数の制約条件を満たすとともに、演算器の一つの出力端子に対する入力端子の数が閾値以下となるように、データフロー図の演算器間のフリップフロップを削除する。
【発明の効果】
【０００７】
この設計支援装置、設計支援方法及びプログラムによれば、可検査性に優れる半導体集積回路を設計することができる。
【図面の簡単な説明】
【０００８】
【図１】図１は、実施の形態にかかる設計支援装置のハードウェア構成の一例を示す図である。
【図２】図２は、実施の形態にかかる設計支援装置の機能的構成の一例を示す図である。
【図３】図３は、実施の形態にかかる設計支援方法の一例を示す図である。
【図４】図４は、半導体集積回路の設計処理の一例を示す図である。
【図５】図５は、実施の形態にかかる設計支援装置の機能的構成の別の例を示す図である。
【図６】図６は、実施の形態にかかる設計支援方法の別の例を示す図である。
【図７】図７は、Ｃコードで記述されているデザインの一例を示す図である。
【図８】図８は、図７に示すデザインに対応するデータフロー図を示す図である。
【図９】図９は、図６に示すフローチャートにおけるスケジューリング処理の一例を示す図である。
【図１０】図１０は、スケジューリング処理における論理の分割の一例を示す図である。
【図１１】図１１は、論理の分割前の乗算器の一例を示す図である。
【図１２】図１２は、図１１に示す乗算器に対して論理の分割後の一例を示す図である。
【図１３】図１３は、スケジューリング処理における論理の分割の別の例を示す図である。
【図１４】図１４は、図１３に示すフローチャートに従って論理を分割する例を示す図である。
【図１５】図１５は、論理の分割前の加算器の一例を示す図である。
【図１６】図１６は、図１５に示す加算器に対して論理の分割後の一例を示す図である。
【図１７】図１７は、図６に示すフローチャートにおけるリタイミング処理の一例を示す図である。
【図１８】図１８は、図５に示す設計支援装置によって生成される回路の一例を示す図である。
【発明を実施するための形態】
【０００９】
以下に添付図面を参照して、この設計支援装置、設計支援方法及びプログラムの好適な実施の形態を詳細に説明する。以下の各実施例の説明においては、同様の構成要素には同一の符号を付して、重複する説明を省略する。
【００１０】
・設計支援装置のハードウェア構成の一例
図１は、実施の形態にかかる設計支援装置のハードウェア構成の一例を示す図である。図１に示すように、設計支援装置は、例えばコンピュータ本体１、入力装置２及び出力装置３を有していてもよい。設計支援装置は、例えば図示しないルータやモデムを介して構内通信網（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ：ＬＡＮ）や広域通信網（Ｗｉｄｅ  Ａｒｅａ  Ｎｅｔｗｏｒｋ：ＷＡＮ）やインターネットなどのネットワーク４に接続可能である。
【００１１】
コンピュータ本体１は、例えば中央処理装置（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ：ＣＰＵ）、記憶部及びインターフェースを有していてもよい。ＣＰＵは、設計支援装置の全体の制御を司る。記憶部は、例えばリードオンリーメモリ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ：ＲＯＭ）、ランダムアクセスメモリ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ：ＲＡＭ）、ハードディスク（Ｈａｒｄ  Ｄｉｓｋ：ＨＤ）、光ディスク５及びフラッシュメモリのうちの一つ以上で構成される。
【００１２】
記憶部は、ＣＰＵのワークエリアとして使用される。記憶部には各種プログラムが格納されており、ＣＰＵからの命令に応じてロードされる。ハードディスクや光ディスク５は、ディスクドライブによりデータの読み出し及び書き込みが制御される。光ディスク５やフラッシュメモリは、コンピュータ本体１に対して着脱可能となっている。
【００１３】
インターフェースは、入力装置２からの入力、出力装置３への出力、及びネットワーク４に対する送信及び受信の制御を行う。入力装置２としては、例えばキーボード６、マウス７及びスキャナ８などがある。キーボード６は、文字や数字や各種指示などの入力に用いられるキーを有し、データの入力を行う。また、キーボード６は、タッチパネル式であってもよい。マウス７は、カーソルの移動や範囲選択、あるいはウィンドウの移動やサイズの変更などを行う。
【００１４】
スキャナ８は、画像を光学的に読み取る。読み取られた画像は、画像データとして取り込まれ、コンピュータ本体１内の記憶部に格納される。スキャナ８に光学式文字読み取り（Ｏｐｔｉｃａｌ  Ｃｈａｒａｃｔｅｒ  Ｒｅａｄｅｒ：ＯＣＲ）機能を持たせてもよい。
【００１５】
出力装置３としては、例えばディスプレイ９、スピーカ１０及びプリンタ１１などが挙げられる。ディスプレイ９は、カーソル、アイコンまたはツールボックスをはじめ、文書、画像及び機能情報などのデータを表示する。スピーカ１０は、効果音や読み上げ音などの音声を出力する。プリンタ１１は、画像データや文書データを印刷する。
【００１６】
・設計支援装置の機能的構成の一例
図２は、実施の形態にかかる設計支援装置の機能的構成の一例を示す図である。図２に示すように、設計支援装置は、ライブラリ２２、作成部２３、分割部２４及び削除部２５を有していてもよい。
【００１７】
ソースコード２１は、半導体集積回路の動作記述を、コンピュータのプログラミング言語のソースコードを用いて記述しているものである。ライブラリ２２は、半導体集積回路に用いられる複数の演算器のそれぞれについて遅延値の情報を有していてもよい。遅延値は、演算器に信号が入力されてから出力されるまでに要する時間を示す値である。作成部２３は、ソースコード２１及びライブラリ２２に基づいてデータフロー図を作成する。データフロー図は、演算器及びフリップフロップの配置を示す。
【００１８】
分割部２４は、演算器の遅延値が周波数の制約条件を満たすとともに、演算器の一つの出力端子に対する入力端子の数が閾値以下となるように、データフロー図に示される演算器の論理を分割する。削除部２５は、連続する複数の演算器の遅延値の和が周波数の制約条件を満たすとともに、演算器の一つの出力端子に対する入力端子の数が閾値以下となるように、データフロー図に示される演算器間のフリップフロップを削除する。
【００１９】
作成部２３、分割部２４及び削除部２５は、例えば図１に示す設計支援装置の記憶部に記憶された当該各部２３〜２５の機能に関するプログラムをＣＰＵに実行させることにより、または、入力や出力のインターフェースにより、実現されてもよい。なお、コンピュータ本体１は、作成部２３、分割部２４及び削除部２５の各機能に関するプログラムをネットワーク４から取得してＣＰＵにより実行してもよい。
【００２０】
また、ソースコード２１及びライブラリ２２は、例えば図１に示す設計支援装置の記憶部に保持されてもよい。また、作成部２３、分割部２４及び削除部２５からの出力データは、例えば図１に示す設計支援装置の記憶部に保持されてもよい。
【００２１】
・設計支援方法の一例
図３は、実施の形態にかかる設計支援方法の一例を示す図である。図３に示す設計支援方法は、図２に示す設計支援装置により実施されてもよい。本実施例では、図２に示す設計支援装置が、図３に示す設計支援方法を実施する場合について説明する。
【００２２】
図３に示すように、設計支援方法を実現するプログラムの処理が開始されると、設計支援装置は、ソースコード２１及びライブラリ２２に基づいて、作成部２３によりデータフロー図を作成する（ステップＳ１）。次いで、設計支援装置は、演算器の遅延値が周波数の制約条件を満たすとともに、演算器の一つの出力端子に対する入力端子の数が閾値以下となるように、データフロー図の演算器の論理を分割する（ステップＳ２）。
【００２３】
次いで、設計支援装置は、連続する複数の演算器の遅延値の和が周波数の制約条件を満たすとともに、演算器の一つの出力端子に対する入力端子の数が閾値以下となるように、データフロー図の演算器間のフリップフロップを削除する（ステップＳ３）。設計支援装置は、そして、一連の処理を終了する。
【００２４】
図２に示す設計支援装置及び図３に示す設計支援方法によれば、演算器の遅延値が周波数の制約条件を満たすとともに、演算器の一つの出力端子に対する入力端子の数が閾値以下となるように、演算器及びフリップフロップが配置される。それによって、フリップフロップ間の論理段数が多くなり過ぎるのを回避することができる。従って、ＡＴＰＧ処理によって容易にテストパターンを生成することができる。つまり、可検査性に優れる半導体集積回路を設計することができる。
【００２５】
・半導体集積回路の設計処理の一例
図４は、半導体集積回路の設計処理の一例を示す図である。図４に示すように、半導体集積回路の設計処理が開始されると、まず、高位合成処理が行われる（ステップＳ１１）。高位合成処理は、例えば高位合成ツールと呼ばれる設計支援装置を用いて実施されてもよい。
【００２６】
高位合成処理では、例えばコンピュータのプログラミング言語のソースコードによって記述されている半導体集積回路の動作記述からＲＴＬ記述の半導体集積回路３１が生成される。コンピュータのプログラミング言語の一例として、例えばＣ言語が挙げられる。本実施例では、コンピュータのプログラミング言語がＣ言語である場合について説明する。
【００２７】
次いで、ＲＴＬ記述の半導体集積回路３１に基づいて論理合成処理が行われる（ステップＳ１２）。論理合成処理は、例えば論理合成ツールと呼ばれるプログラムを設計支援装置によって実行することによって実施されてもよい。論理合成処理では、ＲＴＬ記述の半導体集積回路３１から論理回路の実装設計が行われる。それによって、ネットリスト３２が生成される。
【００２８】
次いで、ネットリスト３２に基づいてＡＴＰＧ処理が行われる（ステップＳ１３）。ＡＴＰＧ処理は、例えばテストパターンを自動的に生成するプログラムを設計支援装置によって実行することによって実施されてもよい。ＡＴＰＧ処理では、半導体集積回路に対する故障検出用のテストパターンが自動的に生成される。そして、一連の処理が終了する。
【００２９】
・設計支援装置の機能的構成の別の例
図５は、実施の形態にかかる設計支援装置の機能的構成の別の例を示す図である。図５に示す設計支援装置は、例えば高位合成ツールによって実現されてもよい。また、高位合成ツールは、例えばＣ言語記述の半導体集積回路の動作記述からＲＴＬ記述の半導体集積回路を生成するツールであってもよい。本実施例では、設計支援装置が、例えばＣ言語記述の半導体集積回路の動作記述からＲＴＬ記述の半導体集積回路を生成する高位合成ツールである場合について説明する。
【００３０】
図５に示すように、設計支援装置は、演算器ライブラリ生成部４１、データフロー図作成部４２、Ｃソースコード入力部４３、合成制御部４４、スケジューリング部４５、リタイミング部４６及びＲＴＬ出力部４７を有していてもよい。データフロー図作成部４２は、作成部の一例である。スケジューリング部４５は、分割部の一例である。リタイミング部４６は、削除部の一例である。
【００３１】
演算器ライブラリ生成部４１は、演算器ライブラリ生成処理を行う。演算器ライブラリ生成処理において、演算器ライブラリ生成部４１は、合成仕様書４８に基づいて各演算器のライブラリを作成する。合成仕様書４８には、合成する制約が記述されている。例えば合成仕様書４８には、作成する半導体集積回路に適用されるテクノロジ及び周波数の制約条件などの仕様が指示されていてもよい。
【００３２】
適用されるテクノロジによって、例えば配線幅が決まる。配線幅によって、ゲート遅延値、面積または消費電力が決まることがある。作成されるライブラリには、各演算器の遅延値及び面積の情報が含まれていてもよい。例えば、高位合成ツールは、各演算器に該当するＲＴＬ記述のサンプルを有している。論理合成ツールを用いてＲＴＬ記述のサンプルを論理合成することによって、各演算器の遅延値及び面積の情報が得られる。
【００３３】
Ｃソースコード入力部４３は、ＲＴＬ記述の半導体集積回路を生成するためのＣコードの仕様書４９から作成されるＣソースコードを入力する。半導体集積回路の設計者が、ＲＴＬ記述の半導体集積回路を生成するためのＣコードの仕様書４９から、Ｃソースコード入力部４３が入力するＣソースコードを作成してもよい。
【００３４】
データフロー図作成部４２は、データフロー図作成処理を行う。データフロー図作成処理において、データフロー図作成部４２は、演算器ライブラリ生成部４１により生成される演算器を用いて、Ｃソースコード入力部４３により入力されるＣソースコードに基づいてデータフロー図を作成する。データフロー図作成部４２は、データフロー図に基づいてデータの計算処理を解析し、その解析結果に基づいてクロック境界を仮に設定する。例えば、クロック境界は、演算器の入力または出力ごとに設定されてもよい。
【００３５】
スケジューリング部４５は、スケジューリング処理を行う。スケジューリング処理において、スケジューリング部４５は、データフロー図作成部４２により作成されるデータフロー図に示される演算器の論理を分割する。スケジューリング部４５は、演算器の遅延値が周波数の制約条件を満たさないか、または演算器の一つの出力端子に対する入力端子の数が閾値以下とならない場合に、演算器の論理を分割する。周波数の制約条件からは周期が導かれる。
【００３６】
閾値は、ＡＴＰＧ処理の処理能力に基づいて決定される。例えば、閾値は、ＡＴＰＧ処理の処理能力を超えない範囲で、演算器の一つの出力端子に対する入力端子の数の最大値であってもよい。ＡＴＰＧ処理によって生成されるテストパターンの数は、論理の入力端子数に依存する。そのため、演算器の一つの出力端子に対する入力端子の数が多くなると、生成するテストパターンの数が増えてしまい、テストパターンを生成する際の負荷がＡＴＰＧ処理の処理能力を超えてしまう虞がある。
【００３７】
そこで、半導体集積回路の故障検出用のテストパターンを生成する際には、演算器の一つの出力端子に対する入力端子の数をＡＴＰＧ処理の処理能力内に収まるように設定するのが望ましい。従って、スケジューリング処理において、スケジューリング部４５は、演算器の遅延値が周期を満たすとともに、演算器の一つの出力端子に対する入力端子の数がＡＴＰＧ処理の処理能力内に収まるように、演算器の論理を分割する。
【００３８】
リタイミング部４６は、リタイミング処理を行う。リタイミング処理において、リタイミング部４６は、データフロー図作成部４２により作成されるデータフロー図において連続する複数の演算器の遅延値の和が周波数の制約条件を満たす場合に、演算器間のフリップフロップを削除する。ここで、連続する複数の演算器とは、前段の演算器の出力信号が後段の演算器の入力信号となるような接続関係を有する演算器群のことである。
【００３９】
連続する複数の演算器間のフリップフロップが削除されると、連続する複数の演算器はマージされる。つまり、リタイミング部４６は、連続する複数の演算器の遅延値の和が周波数の制約条件を満たす場合に、連続する複数の演算器をマージする。
【００４０】
ただし、マージによって一まとめにされる演算器群の出力端子に対する入力端子の数が上述する閾値を超えることがある。演算器群の出力端子に対する入力端子の数が閾値を超えてしまうと、テストパターンを生成する際の負荷がＡＴＰＧ処理の処理能力を超えてしまう虞がある。
【００４１】
そこで、リタイミング部４６は、連続する複数の演算器の遅延値の和が周期を満たす場合でも、マージによって一まとめにされる演算器群の出力端子に対する入力端子の数が閾値以下とならない場合には、マージしない。従って、リタイミング処理において、リタイミング部４６は、連続する複数の演算器の遅延値の和が周期を満たす場合、マージによって一まとめにされる演算器群の出力端子に対する入力端子の数がＡＴＰＧ処理の処理能力内に収まるように、演算器のマージを行う。
【００４２】
合成制御部４４は、合成仕様書４８に基づいて、スケジューリング部４５及びリタイミング部４６における各処理を制御する。ＲＴＬ出力部４７は、スケジューリング部４５による論理の分割処理及びリタイミング部４６による演算器のマージ処理の実施によって生成されるＲＴＬ記述の半導体集積回路を出力する。
【００４３】
図５に示す各部４１〜４７は、例えば図１に示す設計支援装置の記憶部に記憶された当該各部４１〜４７の機能に関するプログラムをＣＰＵに実行させることにより、または、入力や出力のインターフェースにより、実現されてもよい。なお、コンピュータ本体１は、各部４１〜４７の機能に関するプログラムをネットワーク４から取得してＣＰＵにより実行してもよい。
【００４４】
また、合成仕様書４８及びＣコードの仕様書４９は、例えば図１に示す設計支援装置の記憶部に保持されてもよい。また、図５に示す各部４１〜４７からの出力データは、例えば図１に示す設計支援装置の記憶部に保持されてもよい。
【００４５】
・設計支援方法の別の例
図６は、実施の形態にかかる設計支援方法の別の例を示す図である。図６に示す設計支援方法は、例えば図５に示す設計支援装置がＣ言語記述の半導体集積回路の動作記述からＲＴＬ記述の半導体集積回路を生成する高位合成ツールであり、この高位合成ツールにより実施されるとする。
【００４６】
図６に示すように、高位合成処理が開始されると、まず、演算器ライブラリ生成部４１によって演算器ライブラリ生成処理が行われる（ステップＳ２１）。演算器ライブラリ生成処理が行われると、各演算器のライブラリ３３が作成される。
【００４７】
次いで、データフロー図作成部４２によってデータフロー図作成処理が行われる（ステップＳ２２）。データフロー図作成処理が行われると、各演算器のライブラリ３３及びＣソースコード３４に基づいてデータフロー図が作成される。
【００４８】
次いで、スケジューリング部４５によってスケジューリング処理が行われる（ステップＳ２３）。スケジューリング処理が行われると、演算器の遅延値が周期を満たす場合に、演算器の一つの出力端子に対する入力端子の数が、ＡＴＰＧ処理の処理能力内に収まるように、演算器の論理が分割される。
【００４９】
次いで、リタイミング部４６によってリタイミング処理が行われる（ステップＳ２４）。リタイミング処理が行われると、連続する複数の演算器の遅延値の和が周期を満たす場合に、マージによって一まとめにされる演算器群の出力端子に対する入力端子の数がＡＴＰＧ処理の処理能力内に収まるように、演算器がマージされる。リタイミング処理が終わると、ＲＴＬ記述の半導体集積回路３１が出力され、一連の処理が終了する。
【００５０】
・データフロー図の一例
図７は、Ｃコードで記述されているデザインの一例を示す図である。図７に示すデザイン５１には、例えば整数型変数ａと整数型変数ｂとを乗算し、その結果に整数型変数ｃを足し、その結果を２倍した値を整数型変数ｚとして出力することが記述されている。
【００５１】
図８は、図７に示すデザインに対応するデータフロー図を示す図である。図８に示すデータフロー図５２において、「＊」は乗算器５３，５５を表し、「＋」は加算器５４を表す。各演算器５３，５４，５５の入力端子及び出力端子には、フリップフロップ５６〜６２が接続される。
【００５２】
前段の乗算器５３の２つの入力端子にそれぞれ接続されるフリップフロップ５６，５７を通る破線は、クロック境界６３を表す。前段の乗算器５３の出力端子すなわち加算器５４の一方の入力端子、及び加算器５４の他方の入力端子、にそれぞれ接続されるフリップフロップ５８，５９を通る破線は、クロック境界６４を表す。
【００５３】
加算器５４の出力端子すなわち後段の乗算器５５の一方の入力端子、及び後段の乗算器５５の他方の入力端子、にそれぞれ接続されるフリップフロップ６０，６１を通る破線は、クロック境界６５を表す。後段の乗算器５５の出力端子に接続されるフリップフロップ６２を通る破線は、クロック境界６６を表す。隣り合うクロック境界間での信号の遅延値は、周波数の制約条件から導かれる周期を満たすのが望ましい。
【００５４】
・スケジューリング処理の一例
図９は、図６に示すフローチャートにおけるスケジューリング処理の一例を示す図である。図９に示すように、スケジューリング部４５によってスケジューリング処理が開始されると、まず、周波数の制約条件から周期が計算される。また、各演算器のライブラリ３３の各演算器の遅延値の最大値が算出される（ステップＳ３１）。
【００５５】
次いで、演算器が割り当てられる（ステップＳ３２）。次いで、割り当てられる演算器の遅延値が周期以下でない場合（ステップＳ３３：Ｎｏ）、遅延値が周期を超える演算器の論理が分割される（ステップＳ３４）。そして、ステップＳ３３へ戻り、演算器の遅延値が周期以下となるまで演算器の論理が分割される（ステップＳ３３：Ｎｏ、ステップＳ３４）。
【００５６】
演算器の遅延値が周期以下である場合（ステップＳ３３：Ｙｅｓ）、フリップフロップ間の演算器、すなわちクロック境界間の演算器において、演算器の各出力端子に関与する入力端子の数が計算される（ステップＳ３５）。固定値が入力される入力端子は、出力端子に関与する入力端子として数えられない。演算器の一つの出力端子に関与する入力端子の数が閾値以下である場合（ステップＳ３６：Ｙｅｓ）、一連の処理が終了する。演算器の一つの出力端子に関与する入力端子の数が閾値以下であれば、ＡＴＰＧ処理の際に処理能力を超えることはない。
【００５７】
演算器の一つの出力端子に関与する入力端子の数が閾値以下でない場合（ステップＳ３６：Ｎｏ）、出力端子に関与する入力端子の数が閾値以下となるように、出力端子に関与する入力端子の数が閾値を超える演算器の論理が分割される（ステップＳ３７）。そして、一連の処理が終了する。図９に示すフローチャートの処理は、全ての演算器に対して行われる。
【００５８】
・論理の分割の一例
図１０は、スケジューリング処理における論理の分割の一例を示す図である。例えば図８に示す前段の乗算器５３の遅延値が周期を超えてしまう場合、図１０に示すように、前段の乗算器５３を「＊＿０」で示す乗算器６７及び「＊＿１」で示す乗算器６８に分割してもよい。「＊＿０」で示す乗算器６７及び「＊＿１」で示す乗算器６８の各遅延値は、いずれも周期以下である。
【００５９】
「＊＿０」で示す乗算器６７の２つの出力端子と「＊＿１」で示す乗算器６８の２つの入力端子との間には、フリップフロップ６９，７０が挿入される。フリップフロップ６９，７０を通る破線は、クロック境界７１を表す。このように論理を分割してクロック境界７１を設定することによって、周波数の制約条件を満たすことができる。あるいは、前段の乗算器５３の代わりに、前段の乗算器５３よりも小さくて、周波数の制約条件を満たす演算器を用いてもよい。
【００６０】
・論理の分割の別の例
図１１は、論理の分割前の乗算器の一例を示す図である。図１２は、図１１に示す乗算器に対して論理の分割後の一例を示す図である。図１１に示す乗算器８１は、４ビット×４ビットの乗算器である。例えばＡＴＰＧ処理において、演算器の一つの出力端子に関与する入力端子の数が６本以内であれば、処理可能であるとする。つまり、閾値が６であるとする。
【００６１】
この場合、図１１に示す４ビット×４ビットの乗算器８１の論理が、図１２に示すように、４ビット×２ビットの乗算器８２、４ビット×２ビットの乗算器８３、２ビットシフタ８４及び８ビット＋８ビットの加算器８５に分割されてもよい。図１２に示す例では、被乗数Ａ［３：０］と乗数Ｂ［３：０］との掛け算について、乗算器８２，８３によって乗数Ｂ［３：０］の上位２ビットＢ［３：２］及び下位２ビットＢ［１：０］にそれぞれ被乗数Ａ［３：０］が掛け合わされる。
【００６２】
そして、Ａ［３：０］×Ｂ［３：２］の結果が２ビットシフタ８４によって２ビットシフトされて、加算器８５によってＡ［３：０］×Ｂ［１：０］の結果に足し合わされる。このように乗算器の論理を分割することによって、図１１に示す４ビット×４ビットの乗算器８１の入力端子数が８本であるのに対して、図１２に示す４ビット×２ビットの２つの乗算器８２，８３のそれぞれの入力端子数を６本、すなわちＡＴＰＧ処理の処理能力内に収めることができる。
【００６３】
・論理の分割の別の例
図１３は、スケジューリング処理における論理の分割の別の例を示す図である。図１３に示すように、スケジューリング部４５によってスケジューリング処理が開始されると、まず、任意の１本の出力端子が選択される（ステップＳ４１）。そして、選択されている出力端子へ信号を出力するゲートまたはブロックが着目される（ステップＳ４２）。
【００６４】
着目されているゲートまたはブロックの入力端子の数が計算される（ステップＳ４３）。着目されているゲートまたはブロックの入力端子の数が閾値以下である場合（ステップＳ４４：Ｙｅｓ）、着目されているゲートまたはブロックの全ての入力端子について、それぞれの入力端子へ信号を与える前段のゲートまたはブロックが新たに着目される。入力端子へ信号を与える前段のゲートがフリップフロップである場合、そのフリップフロップに接続される入力端子は、そこで終わりとされる（ステップＳ４５）。
【００６５】
そして、ステップＳ４３へ戻り、新たに着目されているゲートまたはブロックの入力端子の数を含むように、入力端子の数が再計算される（ステップＳ４３）。再計算により得られる入力端子の数が閾値以下でなくなるまで、ゲートまたはブロックを遡り、新たに着目されているゲートまたはブロックの入力端子の数を含むように、入力端子の数が再計算される（ステップＳ４４：Ｙｅｓ、ステップＳ４５、ステップＳ４３）。
【００６６】
入力端子の数が閾値以下でなくなると（ステップＳ４４：Ｎｏ）、その時点で着目されているゲートまたはブロックの全ての出力端子にフリップフロップが追加される（ステップＳ４６）。そして、全ての出力端子についてステップＳ４１〜ステップＳ４６の処理が終わるまで、ステップＳ４１へ戻り、ステップＳ４１〜ステップＳ４７を繰り返す（ステップＳ４７：Ｎｏ、ステップＳ４１〜ステップＳ４７）。全ての出力端子についてステップＳ４１〜ステップＳ４６の処理が終了すると（ステップＳ４７：Ｙｅｓ）、一連の処理が終了する。
【００６７】
図１４は、図１３に示すフローチャートに従って論理を分割する例を示す図である。図１３に示すフローチャートの処理について、図１４に示す例を用いて説明する。閾値は６であるとする。
【００６８】
図１４に示す例では、後段のゲートまたはブロック９１の出力端子をＯｕｔ１と表し、入力端子をＩｎ１〜Ｉｎ５と表すことにする。一方の前段のゲートまたはブロック９２の出力端子をＯｕｔ１１と表し、入力端子をＩｎ１１〜Ｉｎ１５と表すことにする。他方の前段のゲートまたはブロック９３の出力端子をＯｕｔ２１と表し、入力端子をＩｎ２１〜Ｉｎ２５と表すことにする。また、論理の分割前には、フリップフロップ９５，９６は挿入されていない。
【００６９】
図１３のステップＳ４１において、後段のゲートまたはブロック９１の出力端子Ｏｕｔ１が選択されるとする。ステップＳ４２では、この後段のゲートまたはブロック９１の出力端子Ｏｕｔ１へ信号を出力するゲートまたはブロックとして、後段のゲートまたはブロック９１が着目される。
【００７０】
ステップＳ４３では、後段のゲートまたはブロック９１の入力端子の数が計算される。後段のゲートまたはブロック９１の入力端子の数は５本である。従って、後段のゲートまたはブロック９１の入力端子の数は、閾値以下である。ステップＳ４５へ進み、後段のゲートまたはブロック９１の全ての入力端子Ｉｎ１〜Ｉｎ５について、それぞれの入力端子へ信号を与える前段のゲートまたはブロックが新たに着目される。
【００７１】
後段のゲートまたはブロック９１の入力端子Ｉｎ１は、フリップフロップ９４に接続されている。従って、それ以上遡らずに、後段のゲートまたはブロック９１の入力端子Ｉｎ１は、そこで終わりである。
【００７２】
後段のゲートまたはブロック９１の入力端子Ｉｎ２は、一方の前段のゲートまたはブロック９２の出力端子をＯｕｔ１１に接続されている。つまり、一方の前段のゲートまたはブロック９２から出力される信号は、後段のゲートまたはブロック９１の入力端子Ｉｎ２をドライブし、後段のゲートまたはブロック９１の出力端子Ｏｕｔ１から出力される信号に影響を及ぼす。
【００７３】
従って、ステップＳ４３で、再度、入力端子の数を計算する際に、後段のゲートまたはブロック９１の入力端子Ｉｎ２の代わりに、一方の前段のゲートまたはブロック９２の５本の入力端子Ｉｎ１１〜Ｉｎ１５が数えられる。従って、後段のゲートまたはブロック９１の出力端子Ｏｕｔ１への出力信号に関与する入力端子の数は９本となり、閾値を超えてしまう。
【００７４】
そのため、ステップＳ４６へ進み、一方の前段のゲートまたはブロック９２の出力端子Ｏｕｔ１１にフリップフロップ９５が追加される。後段のゲートまたはブロック９１の入力端子Ｉｎ２と一方の前段のゲートまたはブロック９２の出力端子Ｏｕｔ１１との間にフリップフロップ９５が挿入されることによって、後段のゲートまたはブロック９１の入力端子Ｉｎ２については、それ以上遡らずに、そこで終わりである。従って、後段のゲートまたはブロック９１と一方の前段のゲートまたはブロック９２とが分割される。
【００７５】
後段のゲートまたはブロック９１の入力端子Ｉｎ３についても同様である、入力端子の数として、後段のゲートまたはブロック９１の入力端子Ｉｎ３の代わりに、他方の前段のゲートまたはブロック９３の５本の入力端子Ｉｎ２１〜Ｉｎ２５が数えられる。従って、後段のゲートまたはブロック９１の出力端子Ｏｕｔ１への出力信号に関与する入力端子の数は９本となる。
【００７６】
そのため、他方の前段のゲートまたはブロック９３の出力端子Ｏｕｔ２１にフリップフロップ９６が追加される。後段のゲートまたはブロック９１の入力端子Ｉｎ３と他方の前段のゲートまたはブロック９３の出力端子Ｏｕｔ２１との間にフリップフロップ９６が挿入されることによって、後段のゲートまたはブロック９１の入力端子Ｉｎ３については、それ以上遡らずに、そこで終わりである。従って、後段のゲートまたはブロック９１と他方の前段のゲートまたはブロック９３とが分割される。
【００７７】
このようにフリップフロップ９５，９６の追加によって論理を分割することによって、後段のゲートまたはブロック９１の出力端子Ｏｕｔ１から出力される信号に関与する入力端子の数が閾値以内に抑えられる。
【００７８】
図１５は、論理の分割前の加算器の一例を示す図である。図１６は、図１５に示す加算器に対して論理の分割後の一例を示す図である。図１５に示す加算器は、８ビット＋８ビットの加算器である。閾値は６であるとする。
【００７９】
図１５に示すように、８ビット＋８ビットの加算器１０１は、同じビット位置の値同士を加算する８つの加算部１０２〜１０９を有する。下位ビット同士の加算を行う加算部のキャリー出力端子Ｃｏｕｔは、上位ビット同士の加算を行う加算部のキャリー入力端子Ｃｉｎに接続されている。
【００８０】
最上位ビット同士の加算部の符号を１０２とし、下位ビット同士の加算部の符号を最上位ビット側から順に１０３、１０４、・・・とし、最下位ビット同士の加算部の符号を１０９とする。論理が分割されていない状態では、ロジックコーン１１０は１つである。
【００８１】
この場合、図１６に示すように、最上位ビット同士の加算を行う加算部１０２の出力端子ｓ［７］が選択される。この出力端子ｓ［７］から、キャリーを伝搬する信号線を辿って、最上位ビットから３番目のビット同士の加算を行う加算部１０４まで遡ると、出力端子ｓ［７］から出力される信号に影響を及ぼす入力端子の数が閾値を超えてしまう。従って、最上位ビットから３番目のビット同士の加算を行う加算部１０４のキャリー出力端子Ｃｏｕｔにフリップフロップ１１１が追加される。
【００８２】
最上位ビットから３番目のビット同士の加算を行う加算部１０４の出力端子ｓ［５］から、キャリーを伝搬する信号線を辿って、最上位ビットから５番目のビット同士の加算を行う加算部１０６まで遡ると、出力端子ｓ［５］から出力される信号に影響を及ぼす入力端子の数が閾値を超えてしまう。従って、最上位ビットから５番目のビット同士の加算を行う加算部１０６のキャリー出力端子Ｃｏｕｔにフリップフロップ１１２が追加される。
【００８３】
最上位ビットから５番目のビット同士の加算を行う加算部１０６の出力端子ｓ［３］から、キャリーを伝搬する信号線を辿って、最上位ビットから７番目のビット同士の加算を行う加算部１０８まで遡ると、出力端子ｓ［３］から出力される信号に影響を及ぼす入力端子の数が閾値を超えてしまう。従って、最上位ビットから７番目のビット同士の加算を行う加算部１０８のキャリー出力端子Ｃｏｕｔにフリップフロップ１１３が追加される。
【００８４】
最上位ビットから７番目のビット同士の加算を行う加算部１０８の出力端子ｓ［１］から、キャリーを伝搬する信号線を辿って、最下位ビット同士の加算を行う加算部１０９まで遡ると、出力端子ｓ［１］から出力される信号に影響を及ぼす入力端子の数は４であり、閾値である。従って、最下位ビット同士の加算を行う加算部１０９のキャリー出力端子Ｃｏｕｔにはフリップフロップが追加されない。
【００８５】
このようにフリップフロップ１１１〜１１３の追加によって、８ビット＋８ビットの加算器１０１が４つのブロックに分割される。それによって、図１５に示すロジックコーン１１０は、４つのロジックコーン１１４〜１１７に分割される。
【００８６】
・リタイミング処理の一例
図１７は、図６に示すフローチャートにおけるリタイミング処理の一例を示す図である。図１７に示すように、リタイミング部４６によってリタイミング処理が開始されると、まず、初期設定が行われる。ｋを整数とすると、初期設定ではｋが１に設定される（ステップＳ５１）。
【００８７】
次いで、入力側からｋ番目のフリップフロップ間の論理の遅延値と、入力側から［ｋ＋１］番目のフリップフロップ間の論理の遅延値との和が計算される（ステップＳ５２）。２つの遅延値の和が周期よりも小さくない場合（ステップＳ５３：Ｎｏ）、入力側からｋ番目のフリップフロップ間の論理と、入力側から［ｋ＋１］番目のフリップフロップ間の論理とがマージされずに、一連の処理が終了する。
【００８８】
２つの遅延値の和が周期よりも小さい場合（ステップＳ５３：Ｙｅｓ）、入力側からｋ番目のフリップフロップ間の論理と、入力側から［ｋ＋１］番目のフリップフロップ間の論理との間のフリップフロップが仮に削除される。それによって、入力側からｋ番目のフリップフロップ間の論理と、入力側から［ｋ＋１］番目のフリップフロップ間の論理とが仮にマージされる（ステップＳ５４）。
【００８９】
次いで、仮のマージによって一まとめにされる論理群の各出力端子に関与する入力端子の数が計算される（ステップＳ５５）。仮のマージによって一まとめにされる論理群の出力端子に関与する入力端子の数が閾値以下である場合（ステップＳ５６：Ｙｅｓ）、入力側からｋ番目のフリップフロップ間の論理と、入力側から［ｋ＋１］番目のフリップフロップ間の論理との間のフリップフロップが削除される。それによって、入力側からｋ番目のフリップフロップ間の論理と、入力側から［ｋ＋１］番目のフリップフロップ間の論理とがマージされる（ステップＳ５７）。
【００９０】
一方、仮のマージによって一まとめにされる論理群の出力端子に関与する入力端子の数が閾値以下でない場合（ステップＳ５６：Ｎｏ）、入力側からｋ番目のフリップフロップ間の論理と、入力側から［ｋ＋１］番目のフリップフロップ間の論理との間のフリップフロップは削除されない。それによって、入力側からｋ番目のフリップフロップ間の論理と、入力側から［ｋ＋１］番目のフリップフロップ間の論理とはマージされない（ステップＳ５８）。
【００９１】
入力側から［ｋ＋１］番目のフリップフロップ間の論理が最後のフリップフロップ間の論理でない場合（ステップＳ５９：Ｎｏ）、ｋの値をインクリメントし（ステップＳ６０）、ステップＳ５２へ戻る。そして、次のフリップフロップ間の論理に対する処理が開始される。
【００９２】
入力側から［ｋ＋１］番目のフリップフロップ間の論理が最後のフリップフロップ間の論理になるまで、マージする処理またはマージしない処理が行われる（ステップＳ５９：Ｎｏ、ステップＳ５２〜ステップＳ６０）。入力側から［ｋ＋１］番目のフリップフロップ間の論理が最後のフリップフロップ間の論理である場合（ステップＳ５９：Ｙｅｓ）、一連の処理が終了する。
【００９３】
・回路の一例
図１８は、図５に示す設計支援装置によって生成される回路の一例を示す図である。図１８に示す回路は、図７に示すＣコード記述のデザインに対応している。ただし、図１８のＡ、Ｂ、Ｃ及びＺは、図７ではそれぞれａ、ｂ、ｃ及びｚとなっている。
【００９４】
図１８に示す例において、４ビット×２ビットの乗算器１２１、４ビット×２ビットの乗算器１２２、２ビットシフタ１２３及び４つの加算器１２４〜１２７によって、４ビットの整数型変数Ａと４ビットの整数型変数Ｂとが乗算される。加算器１２７の出力端子に接続される４つの加算器１２８〜１３１によって、変数Ａと変数Ｂとの乗算結果に整数型変数Ｃが加算される。加算器１３１の出力端子に接続される１ビットシフタ１３２によって、変数Ａと変数Ｂとの乗算結果と変数Ｃとの加算結果が２倍される。
【００９５】
図１８において、破線はクロック境界を示す。図１８では、クロック境界上で、各演算器の出力端子に接続されているフリップフロップが省略されている。
【００９６】
図５に示す設計支援装置及び図６に示す設計支援方法によれば、Ｃ言語記述の半導体集積回路の動作記述からＲＴＬ記述の半導体集積回路を生成する高位合成処理において、演算器の一つの出力端子に対する入力端子の数が閾値以下となるように、演算器及びフリップフロップが配置される。それによって、フリップフロップ間の論理段数が多くなり過ぎるのを回避することができる。従って、ＡＴＰＧ処理によって容易にテストパターンを生成することができる。つまり、可検査性に優れる半導体集積回路を設計することができる。
【００９７】
また、閾値が、ＡＴＰＧ処理の処理能力を超えない範囲で、演算器の一つの出力端子に対する入力端子の数の最大値である場合、フリップフロップ間の論理段数がＡＴＰＧ処理の処理能力の範囲内に収まる。従って、ＡＴＰＧ処理によって容易にテストパターンを生成することが可能な可検査性に優れる半導体集積回路を設計することができる。
【００９８】
また、出力端子に対する入力端子の数が閾値を超える演算器を、入力端子の数よりも少ない数の入力端子を有する複数の演算器に分割することによって、分割後の各演算器の一つの出力端子に対する入力端子の数を閾値以下にすることができる。それによって、フリップフロップ間の論理段数が多くなり過ぎるのを回避することができる。従って、ＡＴＰＧ処理によって容易にテストパターンを生成することが可能な可検査性に優れる半導体集積回路を設計することができる。
【００９９】
また、出力端子に対する入力端子の数が前記閾値を超える演算器を複数段のブロックに分割し、ブロック間にフリップフロップを挿入することによって、各ブロックの出力端子に対する入力端子の数を閾値以下にすることができる。それによって、フリップフロップ間の論理段数が多くなり過ぎるのを回避することができる。従って、ＡＴＰＧ処理によって容易にテストパターンを生成することが可能な可検査性に優れる半導体集積回路を設計することができる。
【０１００】
なお、本実施の形態で説明する設計支援方法は、予め用意されるプログラムをパーソナル・コンピュータやワークステーション等のコンピュータで実行することにより実現することができる。このプログラムは、ハードディスク、フレキシブルディスク、ＣＤ−ＲＯＭ、ＭＯ、ＤＶＤ等のコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行される。
【０１０１】
また、本実施の形態で説明する設計支援装置は、スタンダードセルやストラクチャードＡＳＩＣ（Ａｐｐｌｉｃａｔｉｏｎ  Ｓｐｅｃｉｆｉｃ  Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ）などの特定用途向けＩＣ（以下、単に「ＡＳＩＣ」と称す。）やＦＰＧＡなどのＰＬＤ（Ｐｒｏｇｒａｍｍａｂｌｅ  Ｌｏｇｉｃ  Ｄｅｖｉｃｅ）によっても実現することができる。具体的には、例えば、上述する設計支援装置の各機能をＨＤＬ記述によって機能定義し、そのＨＤＬ記述を論理合成してＡＳＩＣやＰＬＤに与えることにより、設計支援装置を製造することができる。
【０１０２】
上述した各実施例を含む実施形態に関し、さらに以下の付記を開示する。
【０１０３】
（付記１）複数の演算器のそれぞれについて信号の入力から出力までに要する時間を示す遅延値の情報を有するライブラリと、コンピュータのプログラミング言語のソースコード及び前記ライブラリに基づいて、前記演算器及びフリップフロップの配置を示すデータフロー図を作成する作成部と、前記遅延値が周波数の制約条件を満たすとともに、前記演算器の一つの出力端子に対する入力端子の数が閾値以下となるように、前記データフロー図の前記演算器の論理を分割する分割部と、連続する複数の前記演算器の前記遅延値の和が前記周波数の制約条件を満たすとともに、前記演算器の一つの出力端子に対する入力端子の数が前記閾値以下となるように、前記データフロー図の前記演算器間のフリップフロップを削除する削除部と、を備えることを特徴とする設計支援装置。
【０１０４】
（付記２）前記分割部は、前記入力端子の数が前記閾値を超える前記演算器を、前記入力端子の数よりも少ない数の入力端子を有する第１演算器と、前記入力端子の数よりも少ない数の入力端子を有する第２演算器とに分割することを特徴とする付記１に記載の設計支援装置。
【０１０５】
（付記３）前記分割部は、前記入力端子の数が前記閾値を超える前記演算器を、前段のブロックの出力が後段のブロックの入力になるように複数段のブロックに分割し、前記前段のブロックの出力端子と前記後段のブロックの入力端子との間にフリップフロップを挿入することを特徴とする付記１に記載の設計支援装置。
【０１０６】
（付記４）前記閾値は、生成される集積回路に対するテストパターンを生成する際の処理能力に基づいて決定されることを特徴とする付記１乃至３のいずれか一項に記載の設計支援装置。
【０１０７】
（付記５）Ｃ言語で記述される集積回路の動作記述からレジスタトランスファレベルで記述される集積回路を生成することを特徴とする付記１乃至４のいずれか一項に記載の設計支援装置。
【０１０８】
（付記６）コンピュータのプログラミング言語のソースコード、及び複数の演算器のそれぞれについて信号の入力から出力までに要する時間を示す遅延値の情報を有するライブラリ、に基づいて、前記演算器及びフリップフロップの配置を示すデータフロー図を作成し、前記遅延値が周波数の制約条件を満たすとともに、前記演算器の一つの出力端子に対する入力端子の数が閾値以下となるように、前記データフロー図の前記演算器の論理を分割し、連続する複数の前記演算器の前記遅延値の和が前記周波数の制約条件を満たすとともに、前記演算器の一つの出力端子に対する入力端子の数が前記閾値以下となるように、前記データフロー図の前記演算器間のフリップフロップを削除することを特徴とする設計支援方法。
【０１０９】
（付記７）前記データフロー図の前記演算器の論理を分割する場合、前記入力端子の数が前記閾値を超える前記演算器を、前記入力端子の数よりも少ない数の入力端子を有する第１演算器と、前記入力端子の数よりも少ない数の入力端子を有する第２演算器とに分割することを特徴とする付記６に記載の設計支援方法。
【０１１０】
（付記８）前記データフロー図の前記演算器の論理を分割する場合、前記入力端子の数が前記閾値を超える前記演算器を、前段のブロックの出力が後段のブロックの入力になるように複数段のブロックに分割し、前記前段のブロックの出力端子と前記後段のブロックの入力端子との間にフリップフロップを挿入することを特徴とする付記６に記載の設計支援方法。
【０１１１】
（付記９）前記閾値は、生成される集積回路に対するテストパターンを生成する際の処理能力に基づいて決定されることを特徴とする付記６乃至８のいずれか一項に記載の設計支援方法。
【０１１２】
（付記１０）Ｃ言語で記述される集積回路の動作記述からレジスタトランスファレベルで記述される集積回路を生成することを特徴とする付記６乃至９のいずれか一項に記載の設計支援方法。
【０１１３】
（付記１１）コンピュータのプログラミング言語のソースコード、及び複数の演算器のそれぞれについて信号の入力から出力までに要する時間を示す遅延値の情報を有するライブラリ、に基づいて、前記演算器及びフリップフロップの配置を示すデータフロー図を作成し、前記遅延値が周波数の制約条件を満たすとともに、前記演算器の一つの出力端子に対する入力端子の数が閾値以下となるように、前記データフロー図の前記演算器の論理を分割し、連続する複数の前記演算器の前記遅延値の和が前記周波数の制約条件を満たすとともに、前記演算器の一つの出力端子に対する入力端子の数が前記閾値以下となるように、前記データフロー図の前記演算器間のフリップフロップを削除する、処理をコンピュータに実行させるプログラム。
【符号の説明】
【０１１４】
２１  ソースコード
２２  ライブラリ
２３  作成部
２４  分割部
２５  削除部
【図１】
2014021679.tif 000003
【図２】
2014021679.tif 000004
【図３】
2014021679.tif 000005
【図４】
2014021679.tif 000006
【図５】
2014021679.tif 000007
【図６】
2014021679.tif 000008
【図７】
2014021679.tif 000009
【図８】
2014021679.tif 000010
【図９】
2014021679.tif 000011
【図１０】
2014021679.tif 000012
【図１１】
2014021679.tif 000013
【図１２】
2014021679.tif 000014
【図１３】
2014021679.tif 000015
【図１４】
2014021679.tif 000016
【図１５】
2014021679.tif 000017
【図１６】
2014021679.tif 000018
【図１７】
2014021679.tif 000019
【図１８】
2014021679.tif 000020