(57)【要約】【課題】回路設計の所要時間を短縮化することが可能な機械学習装置を得ること。【解決手段】機械学習装置２０は、設計済みの集積回路である設計済回路をハードウェア記述言語で記述した第１の回路に含まれるロジックコーンである第１のロジックコーンの回路情報および第１のロジックコーンの論理段数と、第１の回路に対して論理合成を含む処理を実行して得られるデータで表される第２の回路に含まれるロジックコーンである第２のロジックコーンの論理段数とを状態変数として観測する状態観測部２１と、状態変数に基づいて作成されるデータセットに従って、設計済回路に含まれるロジックコーンの論理段数を学習する学習部２２と、を備える。【選択図】図１
2020173657.tif 000002
【特許請求の範囲】
【請求項１】
設計済みの集積回路である設計済回路をハードウェア記述言語で記述した第１の回路に含まれるロジックコーンである第１のロジックコーンの回路情報および前記第１のロジックコーンの論理段数と、前記第１の回路に対して論理合成を含む処理を実行して得られるデータで表される第２の回路に含まれるロジックコーンである第２のロジックコーンの論理段数とを状態変数として観測する状態観測部と、
前記状態変数に基づいて作成されるデータセットに従って、前記設計済回路に含まれるロジックコーンの論理段数を学習する学習部と、
を備えることを特徴とする機械学習装置。
【請求項２】
前記学習部は、
前記データセットに基づいて報酬を計算する報酬計算部と、
前記報酬に基づいて、設計対象の集積回路である設定対象回路に含まれるロジックコーンの論理段数を決定するための関数を更新する関数更新部と、
を備えることを特徴とする請求項１に記載の機械学習装置。
【請求項３】
前記報酬計算部は、
前記第１のロジックコーンの論理段数である第１の論理段数と前記第２のロジックコーンの論理段数である第２の論理段数との差がしきい値未満の場合に前記報酬を増やし、前記差が前記しきい値以上の場合に前記報酬を減らす、
ことを特徴とする請求項２に記載の機械学習装置。
【請求項４】
請求項１から３のいずれか一つに記載の機械学習装置と、
設計対象の集積回路である設計対象回路をハードウェア記述言語で記述した回路に含まれるロジックコーンの回路情報と、前記学習部による学習結果とに基づいて、前記設計対象回路に含まれるロジックコーンの論理段数を算出する論理段数算出部と、
を備えることを特徴とする設計支援装置。
【請求項５】
ハードウェア記述言語で記述された集積回路の論理回路情報を取得し、取得した前記論理回路情報が前記第１の回路の論理回路情報の場合、取得した論理回路情報から前記第１のロジックコーンの回路情報および前記第１のロジックコーンの論理段数を抽出して前記状態観測部に出力し、取得した前記論理回路情報が前記設計対象回路の論理回路情報の場合、取得した論理回路情報から前記設計対象回路に含まれるロジックコーンの回路情報を抽出して前記論理段数算出部に出力する回路情報取得部と、
前記第２の回路を表す前記データを取得し、取得したデータに基づいて前記第２のロジックコーンの論理段数を算出して前記状態観測部に出力する論理段数取得部と、
を備えることを特徴とする請求項４に記載の設計支援装置。
【請求項６】
機械学習装置が、設計済みの集積回路である設計済回路をハードウェア記述言語で記述した第１の回路に含まれるロジックコーンである第１のロジックコーンの回路情報および前記第１のロジックコーンの論理段数と、前記第１の回路に対して論理合成を含む処理を実行して得られるデータで表される第２の回路に含まれるロジックコーンである第２のロジックコーンの論理段数とを状態変数として観測する第１のステップと、
前記機械学習装置が、前記状態変数に基づいて作成されるデータセットに従って、前記設計済回路に含まれるロジックコーンの論理段数を学習する第２のステップと、
を含むことを特徴とする機械学習方法。
【請求項７】
機械学習装置が、設計済みの集積回路である設計済回路をハードウェア記述言語で記述した第１の回路に含まれるロジックコーンである第１のロジックコーンの回路情報および前記第１のロジックコーンの論理段数と、前記第１の回路に対して論理合成を含む処理を実行して得られるデータで表される第２の回路に含まれるロジックコーンである第２のロジックコーンの論理段数とを状態変数として観測する第１のステップと、
前記機械学習装置が、前記状態変数に基づいて作成されるデータセットに従って、前記設計済回路に含まれるロジックコーンの論理段数を学習する第２のステップと、
設計支援装置が、設計対象の集積回路である設計対象回路をハードウェア記述言語で記述した回路に含まれるロジックコーンの回路情報と、前記第２のステップでの学習結果とに基づいて、前記設計対象回路に含まれるロジックコーンの論理段数を算出する第３のステップと、
を含むことを特徴とする設計支援方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、集積回路（ＬＳＩ：Large  Scale  Integrated  Circuit）の設計を支援する設計支援装置を実現する機械学習装置、設計支援装置、機械学習方法および設計支援方法に関する。
【背景技術】
【０００２】
ＡＳＩＣ（Application  Specific  Integrated  Circuit）およびＦＰＧＡ（Field  Programmable  Gate  Array）といった集積回路を設計する一般的な方法では、まず、ハードウェア記述言語を使って対象回路のＲＴＬ（Register  Transfer  Level）を設計し、次に、論理合成を用いてＲＴＬからネットリストを生成する。次に、ネットリストを使用して回路のレイアウト、すなわち、物理的な配置、配線および負荷容量を決定し、タイミングを収束させる。
【０００３】
集積回路の設計方法に関する従来の発明として、特許文献１に記載の発明が存在する。特許文献１に記載の発明では、対象回路の性能が制約を満たすことができるよう、設定可能な複数のパラメータの最適な組み合わせを、機械学習データベースを用いて算出する。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１８−７７５９５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
特許文献１に記載の発明では、ネットリストを使用して対象回路の性能がタイミング制約を満たすかどうかを確認し、設計に要する時間を短縮することができる。しかしながら、対象回路の性能がタイミング制約を満たさず設計を見直す必要性が生じた場合、ＲＴＬを設計して論理合成を行ってネットリストを再度作成する必要があり工数がかかる。ネットリストを作成するよりも前の段階で設計見直しの必要性が確認できるようになれば、設計に要する時間を更に短くできる可能性が高まる。
【０００６】
本発明は、上記に鑑みてなされたものであって、回路設計の所要時間を短縮化することが可能な機械学習装置を得ることを目的とする。
【課題を解決するための手段】
【０００７】
上述した課題を解決し、目的を達成するために、本発明にかかる機械学習装置は、設計済みの集積回路である設計済回路をハードウェア記述言語で記述した第１の回路に含まれるロジックコーンである第１のロジックコーンの回路情報および第１のロジックコーンの論理段数と、第１の回路に対して論理合成を含む処理を実行して得られるデータで表される第２の回路に含まれるロジックコーンである第２のロジックコーンの論理段数とを状態変数として観測する状態観測部と、状態変数に基づいて作成されるデータセットに従って、設計済回路に含まれるロジックコーンの論理段数を学習する学習部と、を備える。
【発明の効果】
【０００８】
本発明によれば、回路設計の所要時間を短縮化することが可能な機械学習装置を実現できる、という効果を奏する。
【図面の簡単な説明】
【０００９】
【図１】本発明の実施の形態にかかる設計支援装置の構成例を示す図
【図２】本発明の実施の形態にかかる機械学習装置が備える学習部の構成例を示す図
【図３】本発明の実施の形態にかかる設計支援装置の動作の一例を示すフローチャート
【図４】本発明の実施の形態にかかる設計支援装置によるロジックコーンの特定方法を説明するための図
【図５】本発明の実施の形態にかかる設計支援装置による回路情報の抽出動作および論理段数の推定動作を説明するための図
【図６】本発明の実施の形態にかかる設計支援装置の論理段数取得部が算出する論理段数の一例を示す図
【図７】本発明の実施の形態にかかる設計支援装置を実現するハードウェアの一例を示す図
【発明を実施するための形態】
【００１０】
以下に、本発明の実施の形態にかかる機械学習装置、設計支援装置、機械学習方法および設計支援方法を図面に基づいて詳細に説明する。なお、この実施の形態によりこの発明が限定されるものではない。
【００１１】
実施の形態．
図１は、本発明の実施の形態にかかる設計支援装置１の構成例を示す図である。本実施の形態にかかる設計支援装置１は、集積回路の設計を支援する装置である。図１に示すように、設計支援装置１は、情報解析部１０および機械学習装置２０を備える。
【００１２】
情報解析部１０は、回路情報取得部１１、論理段数取得部１２および論理段数算出部１３を備える。
【００１３】
回路情報取得部１１は、設計支援装置１の外部からデータを取得する。回路情報取得部１１が取得するデータとしては、新規ＲＴＬ５１およびＲＴＬ５２が該当する。新規ＲＴＬ５１は、設計対象の集積回路である設計中の集積回路のＲＴＬである。設計中の集積回路のＲＴＬとは、論理合成を行いネットリストの生成を行う前のＲＴＬ、別の表現を用いれば、論理合成を行ってネットリストを生成したことがない状態のＲＴＬである。ＲＴＬ５２は、設計済みの集積回路のＲＴＬであり、学習用データ５０を構成する。新規ＲＴＬ５１およびＲＴＬ５２は、ハードウェア記述言語で記述された、集積回路の論理回路情報である。新規ＲＴＬ５１およびＲＴＬ５２は、順序回路および組み合わせ回路とその結線で構成される。回路情報取得部１１は、取得したデータ（新規ＲＴＬ５１またはＲＴＬ５２）が示す回路に含まれるロジックコーンを特定するとともに、特定した各ロジックコーンの回路情報を抽出する。ここで、ＲＴＬ５２が示す回路は第１の回路である。ロジックコーンは、記憶素子の１つの入力端子または集積回路の１つの出力端子を起点として他の記憶素子の出力端子または集積回路の入力端子に至る複数の経路で構成される。ロジックコーンの詳細については別途説明する。なお、通常は１つの回路に複数のロジックコーンが存在する。ロジックコーンの回路情報は、ロジックコーンの回路構成を表す情報である。また、回路情報取得部１１は、ＲＴＬ５２を取得した場合、特定した各ロジックコーンの情報を抽出する処理に加えて、特定した各ロジックコーンの論理段数の情報を抽出する処理を行う。ロジックコーンの論理段数とは、ロジックコーンに含まれる上記の経路を構成する論理ゲートの数である。ここでの論理ゲートは、論理演算を行う演算器を意味する。上述したように、１つのロジックコーンには複数の経路が存在する。回路情報取得部１１は、あるロジックコーンの論理段数の情報を抽出する場合、ロジックコーンに存在する複数の経路の全てについて論理段数を確認し、複数の経路それぞれの論理段数の中の最大値を、ロジックコーンの論理段数の情報として抽出力する。
【００１４】
論理段数取得部１２は、設計支援装置１の外部からデータを取得する。論理段数取得部１２が取得するデータとしては、レイアウト後ネットリスト５３が該当する。レイアウト後ネットリスト５３は、ＲＴＬ５２を論理合成してネットリストを作成し、さらに回路のレイアウトを行うことにより得られるデータである。レイアウト後ネットリスト５３は、フリップフロップなどの記憶素子および基本的な論理ゲートとその結線で構成される。また、レイアウト後ネットリスト５３は、上述したＲＴＬ５２とともに学習用データ５０を構成する。論理段数取得部１２は、取得したレイアウト後ネットリスト５３が示す回路である第２の回路に含まれるロジックコーンを特定するとともに、特定した各ロジックコーンの論理段数を確認する。論理段数取得部１２は、特定した各ロジックコーンに含まれる全ての経路の論理段数を確認する。論理段数取得部１２は、論理段数の確認結果を、具体的には、各ロジックコーンの複数の経路それぞれの論理段数の中の最大値を、ロジックコーンの論理段数の情報（以下、論理段数情報とする）として機械学習装置２０に出力する。
【００１５】
論理段数算出部１３は、回路情報取得部１１に新規ＲＴＬ５１が入力された場合に回路情報取得部１１から出力されるロジックコーンの回路情報が表す回路の論理段数である、新規ＲＴＬ５１上のロジックコーン内論理段数を算出する。なお、通常は新規ＲＴＬ５１に対応する回路に複数のロジックコーンが含まれており、論理段数算出部１３は、複数のロジックコーンそれぞれについて、新規ＲＴＬ５１上のロジックコーン内論理段数を算出する。
【００１６】
機械学習装置２０は、状態観測部２１および学習部２２を備える。
【００１７】
状態観測部２１は、回路情報取得部１１がＲＴＬ５２から抽出したロジックコーンの回路情報およびロジックコーンの論理段数と、論理段数取得部１２がレイアウト後ネットリスト５３から抽出した論理段数情報とを状態変数として観測する。
【００１８】
学習部２２は、状態観測部２１で観測された状態変数に基づいて、ＲＴＬ５２に対応する回路に含まれるロジックコーン内論理段数を学習する。
【００１９】
学習部２２が用いる学習アルゴリズムはどのようなものを用いてもよい。一例として、強化学習（Reinforcement  Learning）を適用する場合について説明する。強化学習は、ある環境内におけるエージェント（行動主体）が、現在の状態を観測し、取るべき行動を決定する、というものである。エージェントは行動を選択することで環境から報酬を得て、一連の行動を通じて報酬が最も多く得られるような方策を学習する。強化学習の代表的な手法として、Ｑ学習（Q-learning）およびＴＤ学習（TD-learning）が知られている。例えば、Ｑ学習の場合、学習済みモデルである行動価値関数Ｑ（ｓ，ａ）の一般的な更新式である行動価値テーブルは式（１）で表される。
【００２０】
【数１】
2020173657.tif 000003
【００２１】
式（１）において、ｓtは時刻ｔにおける環境を表し、ａtは時刻ｔにおける行動を表す。行動ａtにより、環境はｓt+1に変わる。ｒt+1はその環境の変化によってもらえる報酬を表し、γは割引率を表し、αは学習係数を表す。なお、γおよびαの範囲は、それぞれ、０＜γ≦１，０＜α≦１とする。Ｑ学習を設計支援装置１の学習部２２に適用した場合、新規ＲＴＬ５１上のロジックコーン内論理段数が行動ａtとなる。
【００２２】
式（１）で表される更新式は、時刻ｔ＋１における最良の行動ａの行動価値が、時刻ｔにおいて実行された行動ａの行動価値Ｑよりも大きければ、行動価値Ｑを大きくし、逆の場合は、行動価値Ｑを小さくする。換言すれば、時刻ｔにおける行動ａの行動価値Ｑを、時刻ｔ＋１における最良の行動価値に近づけるように、行動価値関数Ｑ（ｓ，ａ）を更新する。それにより、或る環境における最良の行動価値が、それ以前の環境における行動価値に順次伝播していくようになる。
【００２３】
学習部２２は、図２に示すように、報酬計算部２３および関数更新部２４を備える。なお、図２は、本発明の実施の形態にかかる機械学習装置２０が備える学習部２２の構成例を示す図である。
【００２４】
報酬計算部２３は、状態観測部２１から入力される状態変数に基づいて報酬ｒを計算する。すなわち、報酬計算部２３は、状態観測部２１が観測する、回路情報取得部１１がＲＴＬ５２から抽出したロジックコーンの回路情報から特定した論理段数と、論理段数取得部１２がレイアウト後ネットリスト５３から抽出した論理段数情報とに基づいて、報酬ｒを計算する。
【００２５】
例えば、報酬計算部２３は、ＲＴＬ５２が示す回路に含まれるロジックコーンの論理段数がレイアウト後ネットリスト５３から抽出したロジックコーンの論理段数と比べて乖離が小さい場合には報酬ｒを増大させる（例えば「１」の報酬を与える）。他方、報酬計算部２３は、ＲＴＬ５２が示す回路に含まれるロジックコーンの論理段数がレイアウト後ネットリスト５３から抽出したロジックコーンの論理段数と比べて乖離が大きい場合には報酬ｒを低減する（例えば「−１」の報酬を与える）。なお、ＲＴＬ５２が示す回路に含まれるロジックコーンの論理段数は第１の論理段数である。レイアウト後ネットリスト５３から抽出したロジックコーンの論理段数は第２の論理段数である。
【００２６】
関数更新部２４は、報酬計算部２３によって計算される報酬に従って、新規ＲＴＬ５１上のロジックコーン内論理段数を決定するための関数を更新する。例えばＱ学習の場合、上記の式（１）で表される行動価値関数Ｑ（ｓt，ａt）を新規ＲＴＬ５１上のロジックコーン内論理段数を算出するための関数として用いる。すなわち、行動価値関数Ｑ（ｓt，ａt）は、論理段数算出部１３が新規ＲＴＬ５１上のロジックコーン内論理段数を算出する際に用いられる。
【００２７】
次に、設計支援装置１が、学習用データ５０が入力された場合に上記の行動価値関数Ｑ（ｓ，ａ）を更新する学習動作について説明する。図３は、本発明の実施の形態にかかる設計支援装置１の動作の一例を示すフローチャートである。図３のフローチャートは、設計支援装置１の機械学習装置２０が行動価値関数Ｑ（ｓ，ａ）を更新する動作を示す。
【００２８】
設計支援装置１は、学習用データ５０としてＲＴＬ５２およびレイアウト後ネットリスト５３が入力されると、まず、図３に示すステップＳ１１〜Ｓ１４を実行する。ステップＳ１１およびＳ１２は回路情報取得部１１が実行し、ステップＳ１３およびＳ１４は論理段数取得部１２が実行する。なお、ステップＳ１１およびＳ１２とステップＳ１３およびＳ１４とは並列に実行されることを想定するが、ステップＳ１１およびＳ１２が実行された後にステップＳ１３およびＳ１４が実行される構成でもよい。また、ステップＳ１３およびＳ１４が実行された後にステップＳ１１およびＳ１２が実行される構成でもよい。
【００２９】
回路情報取得部１１は、ＲＴＬ５２が入力されると、まず、ＲＴＬ５２から後述するロジックコーンを特定する（ステップＳ１１）。通常、ロジックコーンは集積回路内に複数存在する。回路情報取得部１１は、ＲＴＬ５２で表される集積回路に含まれる全てのロジックコーンを特定する。回路情報取得部１１は、次に、特定したロジックコーンから回路情報を抽出し、ロジックコーンを構成する回路の論理段数を推定する（ステップＳ１２）。このステップＳ１２において、回路情報取得部１１は、ステップＳ１１で特定したロジックコーンの各々について、回路情報を抽出し、各ロジックコーンにおける論理段数を推定する。
【００３０】
また、論理段数取得部１２は、レイアウト後ネットリスト５３が入力されると、まず、レイアウト後ネットリスト５３からロジックコーンを特定する（ステップＳ１３）。論理段数取得部１２は、レイアウト後ネットリスト５３で表される回路に含まれる全てのロジックコーンを特定する。論理段数取得部１２は、次に、ステップＳ１３で特定したロジックコーンの各々について、ロジックコーンを構成する回路の論理段数を算出する（ステップＳ１４）。
【００３１】
これにより、ＲＴＬ５２上のロジックコーンを構成する回路の論理段数とレイアウト後ネットリスト５３上のロジックコーンを構成する回路の論理段数が算出される。
【００３２】
設計支援装置１は、次に、ステップＳ１１で特定した各ロジックコーン（以下、第１のロジックコーンとする）とステップＳ１３で特定した各ロジックコーン（以下、第２のロジックコーンとする）の紐付けを行う（ステップＳ１５）。具体的には、状態観測部２１が、第１のロジックコーンの各々と第２のロジックコーンの各々とを比較して紐付けを行う。より詳細には、状態観測部２１は、第１のロジックコーンの始点、終点、接続関係などの回路構成と、第２のロジックコーンの始点、終点、接続関係などの回路構成とを比較し、回路構成が一致する第１のロジックコーンと第２のロジックコーンとを紐付けして機械学習用のデータセットを作成する。状態観測部２１が紐付けを行うことができるよう、回路情報取得部１１は、ステップＳ１１で特定したロジックコーンの回路情報をステップＳ１２で推定した論理段数とともに状態観測部２１へ出力する。また、論理段数取得部１２は、ステップＳ１３で特定したロジックコーンを示すレイアウト後ネットリストをステップ１４で算出した論理段数とともに状態観測部２１へ出力する。
【００３３】
設計支援装置１は、次に、紐付けして作成した第１のロジックコーンと第２のロジックコーンの組の中の１組を対象として、ＲＴＬ５２から推定した論理段数とレイアウト後ネットリスト５３から算出した論理段数とを比較する（ステップＳ１６）。設計支援装置１は、２つの論理段数の差が３未満の場合（ステップＳ１６：Ｙｅｓ）、機械学習への報酬ｒを増やし（ステップＳ１７）、差が３以上の場合（ステップＳ１６：Ｎｏ）、であれば機械学習への報酬ｒを減らす（ステップＳ１８）。なお、判定に用いる差の値「３」は一例であり、他の値としてもよい。設計支援装置１は、このような方法で、行動価値関数Ｑ（ｓ，ａ）を更新する。なお、学習部２２において、報酬計算部２３がステップＳ１６〜Ｓ１８を行う。
【００３４】
設計支援装置１は、ステップＳ１７を実行して機械学習への報酬ｒを増やすか、ステップＳ１８を実行して機械学習への報酬ｒを減らした後、行動価値関数Ｑ（ｓ，ａ）を更新する（ステップＳ１９）。このステップＳ１９では、学習部２２の関数更新部２４が、報酬計算部２３で算出された報酬ｒに基づいて行動価値関数Ｑ（ｓ，ａ）を更新する。
【００３５】
設計支援装置１は、次に、全てのロジックコーンを確認したか、すなわち、報酬計算部２３は、ステップＳ１５で状態観測部２１が紐付けして作成した第１のロジックコーンと第２のロジックコーンの組の全ての確認が終了したかを判定する（ステップＳ２０）。報酬計算部２３は、全てのロジックコーンの確認が終了した場合（ステップＳ２０：Ｙｅｓ）、ステップＳ１６〜Ｓ１８を再度実行して報酬ｒを計算することはしない。すなわち、設計支援装置１は、行動価値関数Ｑ（ｓ，ａ）を更新する動作である図３に示す動作を終了する。報酬計算部２３は、確認が終了していないロジックコーンが存在する場合（ステップＳ２０：Ｎｏ）、ステップＳ１６と、これに続くステップＳ１７またはステップＳ１８とを実行する。すなわち、報酬計算部２３は、確認が終了していない第１のロジックコーンと第２のロジックコーンの組の中の１組を選択してステップＳ１６を実行し、さらに、ステップＳ１７またはステップＳ１８を実行する。報酬計算部２３がステップＳ１７またはＳ１８を実行して報酬ｒを計算した後は、関数更新部２４がステップＳ１９を実行して行動価値関数Ｑ（ｓ，ａ）を更新する。以下、ステップＳ２０での判定が「Ｙｅｓ」となるまで、報酬計算部２３および関数更新部２４が上述したステップＳ１６〜Ｓ１９の処理を繰り返して行動価値関数Ｑ（ｓ，ａ）を更新する。
【００３６】
つづいて、設計支援装置１がロジックコーンを特定する動作について、図４を参照しながら説明する。図４は、本発明の実施の形態にかかる設計支援装置１によるロジックコーンの特定方法を説明するための図である。設計支援装置１は、外部から新規ＲＴＬ５１、ＲＴＬ５２またはレイアウト後ネットリスト５３が入力されると、入力された情報を解析してロジックコーンを特定する。新規ＲＴＬ５１またはＲＴＬ５２が入力された場合は回路情報取得部１１がロジックコーンを特定し、レイアウト後ネットリスト５３が入力された場合は論理段数取得部１２がロジックコーンを特定する。回路情報取得部１１がロジックコーンを特定する方法と論理段数取得部１２がロジックコーンを特定する方法とは同様であるため、まとめて説明する。
【００３７】
設計支援装置１は、ロジックコーンを特定する場合、図４に示すように、まず、ＲＴＬ（新規ＲＴＬ５１，ＲＴＬ５２）またはレイアウト後ネットリスト５３から、（１）入力信号、（２）フリップフロップ（以下、Ｆ／Ｆと表す）などの記憶素子、および（３）出力信号を全て抽出する。なお、以下では、便宜上、記憶素子がＦ／Ｆであるものとして説明を行う。Ｆ／Ｆ以外の記憶素子が存在する場合、それらの記憶素子については、以下で説明するＦ／Ｆと同様に取り扱えばよい。
【００３８】
設計支援装置１は、次に、図４の下段に示すように、１つのＦ／Ｆの入力端子を終点にして、それに接続される全ての入力信号、および、全てのＦ／Ｆの出力端子を特定し、これを１つのロジックコーン（図４のロジックコーン＃１および＃２などに相当）とする。同様に、設計支援装置１は、１つの出力信号を終点にして、それに接続される全ての入力信号、および、全てのＦ／Ｆの出力端子を特定し、これを１つのロジックコーン（図４のロジックコーン＃３および＃４などに相当）とする。設計支援装置１は、これらと同様の処理を全てのＦ／Ｆの入力端子および全ての出力信号に対して実施し、回路に含まれる全てのロジックコーンを特定する。
【００３９】
なお、図４では、全てのロジックコーンの中の１部をロジックコーン＃１〜＃４として示している。また、各ロジックコーンの途中の構成を省略し、省略した部分を雲マークで表している。
【００４０】
つづいて、設計支援装置１が回路情報を抽出する動作および論理段数を推定する動作について、図５を参照しながら説明する。これらの動作は、回路情報取得部１１が、上述したロジックコーンを特定する動作に続いて行う。図５は、本発明の実施の形態にかかる設計支援装置１による回路情報の抽出動作および論理段数の推定動作を説明するための図である。論理段数とは、ロジックコーン内の始点から終点までの経路を構成する論理ゲートの数である。論理段数が大きすぎるとゲート遅延が増大することになりタイミング違反を引き起こす可能性が高くなる。
【００４１】
回路情報取得部１１は、新規ＲＴＬ５１またはＲＴＬ５２を解析して特定したロジックコーンのそれぞれに対して、回路情報の抽出動作を行う。具体的には、回路情報取得部１１は、新規ＲＴＬ５１またはＲＴＬ５２を解析して特定したロジックコーン内にどのような種別の演算器が何ｂｉｔで何個使われているか、また、接続がどのようになっているのか、といった情報をロジックコーンの回路情報として抽出する。
【００４２】
図５に示した「演算器の種別、ｂｉｔ幅」、「個数」および「接続情報」がロジックコーンの回路情報となる。「仮論理段数」は、回路情報取得部１１がＲＴＬ５２を取得してロジックコーンの回路情報を抽出した後に、抽出したロジックコーンの回路情報に基づいて作成される論理段数情報である。
【００４３】
このように、図５に示した情報は、回路情報取得部１１がＲＴＬ５２を取得した場合に抽出されるロジックコーンの回路情報と、抽出されたロジックコーンの回路情報から得られる論理段数情報とで構成され、状態観測部２１に出力される。また、図５に示したロジックコーンの回路情報は、回路情報取得部１１が取得するＲＴＬ５２で表される回路に３つのロジックコーンが存在する場合に抽出される。図５では、これら３つのロジックコーンの名称をＬＣ＃１１、ＬＣ＃１２およびＬＣ＃１３としている。
【００４４】
また、図５に示した情報は、ＬＣ＃１１に含まれる経路の中の論理段数が最大の経路が、ビット幅が１の論理積回路（ａｎｄ回路）、ビット幅が１の論理和回路（ｏｒ回路）、ビット幅が１の論理和回路（ｏｒ回路）、および、ビット幅が８の加算回路（ａｄｄｅｒ回路）がこの順番で接続された構成の場合に得られるＬＣ＃１１の回路情報を含む。
【００４５】
ＬＣ＃１１の回路情報は、論理段数が最大の経路に含まれる演算器の種類が、＜１＞ビット幅が１の論理積回路、＜２＞ビット幅が１の論理和回路、＜３＞ビット幅が８の加算回路であることを示す情報（演算器の種別、ｂｉｔ幅に該当）を含む。また、ＬＣ＃１１の回路情報は、論理段数が最大の経路が、ビット幅が１の論理積回路１つと、ビット幅が１の論理和回路２つと、ビット幅が８の加算回路１つとで構成されることを示す情報（個数に該当）を含む。また、ＬＣ＃１１の回路情報は、論理段数が最大の経路が、＜１＞ビット幅が１の論理積回路、＜２＞ビット幅が１の論理和回路、＜２＞ビット幅が１の論理和回路、および、＜３＞ビット幅が８の加算回路がこの順番で接続されていることを示す情報（接続情報に該当）を含む。この場合、論理段数が最大の経路に含まれる論理ゲートである演算器の合計数が、＜１＞の論理積回路の個数＋＜２＞の論理和回路の個数＋＜３＞の加算回路の個数＝１＋２＋１＝４であるため、仮論理段数は４となる。
【００４６】
また、図５に示した情報は、ＬＣ＃１２に含まれる経路の中の論理段数が最大の経路が、ビット幅が１の論理積回路（ａｎｄ回路）で構成されている場合に得られるＬＣ＃１２の回路情報を含む。
【００４７】
ＬＣ＃１２の回路情報は、論理段数が最大の経路に含まれる演算器の種類が、＜１＞ビット幅が１の論理積回路であることを示す情報（演算器の種別、ｂｉｔ幅に該当）を含む。また、ＬＣ＃１２の回路情報は、論理段数が最大の経路が、ビット幅が１の論理積回路１つで構成され、この論理積回路に接続される他の演算器が存在しないことを示す情報（個数，接続情報に該当）を含む。この場合、論理段数が最大の経路に含まれる論理ゲートである演算器の合計数が、＜１＞の論理積回路の個数＝１であるため、仮論理段数は１となる。
【００４８】
また、図５に示した情報は、ＬＣ＃１３に含まれる経路の中の論理段数が最大の経路が、ビット幅が１の論理積回路（ａｎｄ回路）、ビット幅が８のセレクタ回路（ｓｅｌ回路）、および、ビット幅が８の加算回路（ａｄｄｅｒ回路）がこの順番で接続された構成の場合に得られるＬＣ＃１３の回路情報を含む。
【００４９】
ＬＣ＃１３の回路情報は、論理段数が最大の経路に含まれる演算器の種類が、＜１＞ビット幅が１の論理積回路、＜２＞ビット幅が８のセレクタ回路、＜３＞ビット幅が８の加算回路であることを示す情報（演算器の種別、ｂｉｔ幅に該当）を含む。また、ＬＣ＃１３の回路情報は、論理段数が最大の経路が、ビット幅が１の論理積回路１つと、ビット幅が８のセレクタ回路１つと、ビット幅が８の加算回路１つとで構成されることを示す情報（個数に該当）を含む。また、ＬＣ＃１３の回路情報は、論理段数が最大の経路が、＜１＞ビット幅が１の論理積回路、＜２＞ビット幅が８のセレクタ回路、および、＜３＞ビット幅が８の加算回路がこの順番で接続されていることを示す情報（接続情報に該当）を含む。この場合、論理段数が最大の経路に含まれる論理ゲートである演算器の合計数が、＜１＞の論理積回路の個数＋＜２＞のセレクタ回路の個数＋＜３＞の加算回路の個数＝１＋１＋１＝３であるため、仮論理段数は３となる。
【００５０】
回路情報取得部１１は、ＲＴＬ５２からロジックコーンの回路情報を抽出後、さらに、ロジックコーンの回路情報に含まれる「個数」に基づいて論理段数の推定値を算出し、算出した論理段数の推定値を仮論理段数とする。回路情報取得部１１は、機械学習を用いて論理段数の推定を行ってもよい。
【００５１】
回路情報取得部１１は、ＲＴＬ５２からロジックコーンの回路情報を抽出して図５に示す構成の情報を生成した場合、生成した情報を機械学習装置２０の状態観測部２１に出力する。
【００５２】
つづいて、設計支援装置１がレイアウト後ネットリスト５３から論理段数を算出する動作について、図６を参照しながら説明する。この動作は、論理段数取得部１２が行う。図６は、本発明の実施の形態にかかる設計支援装置１の論理段数取得部１２が算出する論理段数の一例を示す図である。図６に示す内容の論理段数は、回路情報取得部１１が図５に示す情報を生成する際に使用するＲＴＬ５２と対応付けられて学習用データ５０を構成するレイアウト後ネットリスト５３に基づいて、論理段数取得部１２で算出される。
【００５３】
論理段数取得部１２は、レイアウト後ネットリスト５３を解析して特定したロジックコーンのそれぞれに対して、論理段数の算出動作を行う。具体的には、論理段数取得部１２は、レイアウト後ネットリスト５３を解析して特定したロジックコーン内の接続情報を解析することにより論理段数を算出して図６に示す情報を生成する。１つのロジックコーン内には複数の経路が存在する可能性があるが、論理段数取得部１２は、最多段数となる経路を対象として算出を行う。論理段数取得部１２は、生成した情報を機械学習装置２０の状態観測部２１に出力する。
【００５４】
図５に示す情報および図６に示す情報は、機械学習装置２０の状態観測部２１により状態変数として観測される。機械学習装置２０の状態観測部２１が状態変数として観測する情報が図５に示す情報および図６に示す情報の場合、学習部２２の報酬計算部２３の動作は以下のようになる。
【００５５】
すなわち、報酬計算部２３は、ＬＣ＃１１の仮論理段数および論理段数がそれぞれ４および３であり両者の差が３未満であるため、ＬＣ＃１１の仮論理段数と論理段数とを比較した場合は機械学習への報酬ｒを増やす（図３のステップＳ１６〜Ｓ１８参照）。なお、図３のＳ１６における論理段数の算出値が図５に示す仮論理段数に対応し、図３のＳ１６における論理段数の推定値が図６に示す論理段数に対応する。
【００５６】
また、報酬計算部２３は、ＬＣ＃１２の仮論理段数および論理段数が共に１であり両者の差が３未満であるため、ＬＣ＃１２の仮論理段数と論理段数とを比較した場合は機械学習への報酬ｒを増やす。また、報酬計算部２３は、ＬＣ＃１３の仮論理段数および論理段数がそれぞれ３および７であり両者の差が３以上であるため、ＬＣ＃１３の仮論理段数と論理段数とを比較した場合は機械学習への報酬ｒを減らす。
【００５７】
なお、本実施の形態では、学習部２２が用いる学習アルゴリズムに強化学習を適用した場合について説明したが、これに限られるものではない。学習アルゴリズムについては、強化学習以外にも、教師あり学習、教師なし学習、又は半教師あり学習等を適用することも可能である。
【００５８】
また、上述した学習アルゴリズムとしては、特徴量そのものの抽出を学習する、深層学習（Deep  Learning）を用いることもでき、他の公知の方法、例えばニューラルネットワーク、遺伝的プログラミング、機能論理プログラミング、サポートベクターマシンなどに従って機械学習を実行してもよい。
【００５９】
また、本実施の形態では、回路情報取得部１１がＲＴＬ５２で記述された回路に含まれるロジックコーンの回路情報およびロジックコーンの論理段数の推定値を作成して機械学習装置２０に入力し、論理段数取得部１２がレイアウト後ネットリスト５３で表される回路に含まれるロジックコーンの論理段数を算出して機械学習装置２０に入力することとしたがこれに限定されない。例えば、ＲＴＬ５２で記述された回路に含まれるロジックコーンの回路情報およびロジックコーンの論理段数の推定値を作成する処理、および、レイアウト後ネットリスト５３で表される回路に含まれるロジックコーンの論理段数を算出する処理を機械学習装置２０の状態観測部２１が行うようにしても構わない。
【００６０】
また、本実施の形態では、設計支援装置１に機械学習装置２０が内蔵されている構成について説明したがこの構成に限定されない。機械学習装置２０は、例えば、ネットワークを介して設計支援装置１に接続される構成、すなわち、設計支援装置１とは別個の装置であってもよい。この場合、機械学習装置２０は、クラウドサーバ上に存在していてもよい。
【００６１】
また、学習部２２は、複数の設計支援装置１に対して作成されるデータセット（図１の学習用データ５０に相当）に従って、新規ＲＴＬ５１上のロジックコーン内論理段数を算出するための学習を行うようにしてもよい。なお、学習部２２は、同一の現場で使用される複数の設計支援装置１からデータセットを取得してもよいし、異なる現場で独立して稼働する複数の設計支援装置１からデータセットを取得してもよい。さらに、データセットを収集する対象の設計支援装置１を途中で追加することも可能であるし、或いは、データセットを収集する対象の設計支援装置１の一部を対象から除去することも可能である。さらに、第１の設計支援装置１に関して新規ＲＴＬ５１上のロジックコーン内論理段数を算出するための学習を行う機械学習装置２０を、これとは別の第２の設計支援装置１に取り付け、第２の設計支援装置１に関して新規ＲＴＬ５１上のロジックコーン内論理段数を算出するための学習を再度行い、学習結果である学習済みモデルを更新するようにしてもよい。
【００６２】
また、本実施の形態は、ＲＴＬから論理段数を推定することとしたが、Ｃ言語等、より上位もしくは下位の抽象度から構成する回路記述から論理段数を推定してもよい。また、同様にレイアウト後ネットリストから算出した論理段数を用いた機械学習を行うこととしたが、論理合成して得られるネットリスト、すなわちレイアウトを実施する前のネットリスト等、より上位もしくは下位の抽象度から構成する回路記述を用いて機械学習を行ってもよい。
【００６３】
次に、設計支援装置１を実現するハードウェアについて説明する。図７は、本発明の実施の形態にかかる設計支援装置１を実現するハードウェアの一例を示す図である。設計支援装置１は、図７に示すプロセッサ１０１、メモリ１０２およびインタフェース回路１０３により実現することができる。
【００６４】
プロセッサ１０１は、ＣＰＵ（Central  Processing  Unit、中央処理装置、処理装置、演算装置、マイクロプロセッサ、マイクロコンピュータ、ＤＳＰ（Digital  Signal  Processor）ともいう）、システムＬＳＩ（Large  Scale  Integration）などである。メモリ１０２は、ＲＡＭ（Random  Access  Memory）、ＲＯＭ（Read  Only  Memory）、ＥＰＲＯＭ（Erasable  Programmable  Read  Only  Memory）、ＥＥＰＲＯＭ（登録商標）（Electrically  Erasable  Programmable  Read  Only  Memory）、ハードディスクドライブなどである。インタフェース回路１０３は、設計支援装置１が外部の装置との間でデータの受け渡しを行うための回路である。
【００６５】
設計支援装置１の回路情報取得部１１、論理段数取得部１２、論理段数算出部１３、状態観測部２１および学習部２２は、これらの各部として動作するためのプログラムをプロセッサ１０１が実行することにより実現される。回路情報取得部１１、論理段数取得部１２、論理段数算出部１３、状態観測部２１および学習部２２として動作するためのプログラムはメモリ１０２に予め格納されている。プロセッサ１０１は、上記プログラムをメモリ１０２から読み出して実行することにより、回路情報取得部１１、論理段数取得部１２、論理段数算出部１３、状態観測部２１および学習部２２として動作する。
【００６６】
なお、回路情報取得部１１、論理段数取得部１２、論理段数算出部１３、状態観測部２１および学習部２２として動作するためのプログラムは、メモリ１０２に予め格納されていることを想定するがこれに限定されない。上記のプログラムは、ＣＤ（Compact  Disc）−ＲＯＭ、ＤＶＤ（Digital  Versatile  Disc）−ＲＯＭなどの記録媒体に書き込まれた状態でユーザに供給され、ユーザが上記プログラムをメモリ１０２にインストールする形態であってもよい。この場合、設計支援装置１を実現するハードウェアは、記録媒体からプログラムを読み出すための読み取り装置を更に含む。インタフェース回路１０３に読み取り装置を接続してプログラムをインストールする形態としてもよい。
【００６７】
上述したように、本実施の形態にかかる設計支援装置１は、設計済みの集積回路のハードウェア記述言語で記述された論理回路情報であるＲＴＬ５２と、論理回路情報を論理合成し、さらにレイアウトを行うことにより得られるデータであるレイアウト後ネットリスト５３とを使用し、ＲＴＬ５２に基づいて推定した論理段数と、レイアウト後ネットリスト５３に基づいて算出した論理段数とを状態変数として観測して機械学習を行う。また、設計支援装置１は、機械学習で得られる学習済みモデルと、設計中の集積回路のハードウェア記述言語で記述された論理回路情報である新規ＲＴＬ５１とに基づいて、設計中の集積回路を構成する各ロジックコーンに含まれる回路の論理段数を算出する。
【００６８】
本実施の形態にかかる設計支援装置１によれば、ハードウェア記述言語で記述された論理回路情報であるＲＴＬから、設計中の集積回路を構成する各ロジックコーンに含まれる回路の論理段数を算出して回路に問題が無いかどうかを確認できるため、ＲＴＬを論理合成して作成されるネットリストからロジックコーンに含まれる論理段数を算出して回路に問題が無いかどうかを確認する場合（例えば、特許文献１に記載の構成）と比較して、集積回路を設計する際の所要時間を短縮化できる。すなわち、ネットリストを利用して回路の問題の有無を判定する方法よりも早い段階で問題を発見して修正することができる。
【００６９】
以上の実施の形態に示した構成は、本発明の内容の一例を示すものであり、別の公知の技術と組み合わせることも可能であるし、本発明の要旨を逸脱しない範囲で、構成の一部を省略、変更することも可能である。
【符号の説明】
【００７０】
１  設計支援装置、１０  情報解析部、１１  回路情報取得部、１２  論理段数取得部、１３  論理段数算出部、２０  機械学習装置、２１  状態観測部、２２  学習部、２３  報酬計算部、２４  関数更新部、５０  学習用データ、５１  新規ＲＴＬ、５２  ＲＴＬ、５３  レイアウト後ネットリスト。
【図１】
2020173657.tif 000004
【図２】
2020173657.tif 000005
【図３】
2020173657.tif 000006
【図４】
2020173657.tif 000007
【図５】
2020173657.tif 000008
【図６】
2020173657.tif 000009
【図７】
2020173657.tif 000010