(57)【要約】【課題】設計意図を反映した回路データを作成可能な論理回路設計方法。【解決手段】実施形態の論理回路設計方法は、レジスタトランスファレベルの記述を含んだ設計データに基づいて、前記レジスタトランスファレベルの記述に対応する論理データを生成する工程（Ｓ１０２）と、前記設計データに基づいて、前記論理データと論理的に等価な複数のゲートレベルの回路データの中から所定の条件を満たす回路データを指定する制約条件を生成する工程（Ｓ１０３）と、を備える。実施形態の論理回路設計方法は、前記制約条件のもとで、前記論理データに基づいてゲートレベルの回路データを生成する工程（Ｓ１０３）をさらに備える。【選択図】図２
2014041598.tif 000002
【特許請求の範囲】
【請求項１】
レジスタトランスファレベルの記述を含んだ設計データに基づいて、前記レジスタトランスファレベルの記述に対応する論理データを生成する工程と、
前記設計データに基づいて、前記論理データと論理的に等価な複数のゲートレベルの回路データの中から所定の条件を満たす回路データを指定する制約条件を生成する工程と、
前記制約条件のもとで、前記論理データに基づいてゲートレベルの回路データを生成する工程と、
を備える論理回路設計方法。
【請求項２】
前記設計データは、前記レジスタトランスファレベルの記述の中に前記制約条件を示す記述を含む、
請求項１に記載の論理回路設計方法。
【請求項３】
前記レジスタトランスファレベルの記述のブロックに対応する部分ごとの論理データを生成する工程を更に備え、
前記制約条件を生成する工程は、前記部分ごとの論理データに基づいて、前記制約条件を生成する
請求項１に記載の論理回路設計方法。
【請求項４】
前記制約条件は、前記部分ごとの論理データにおいて複数の異なるクロックでそれぞれ駆動される複数の信号が混在している箇所の情報を含み、
前記回路データを生成する工程は、前記箇所を最適化の対象としないで前記回路データを生成する
請求項３に記載の論理回路設計方法。
【請求項５】
前記レジスタトランスファレベルの記述のブロックに対応する部分ごとの論理データを生成する工程を更に備え、
前記設計データは、マルチサイクルパスの信号を指定するタイミング制約情報を含み、
前記制約条件は、前記部分ごとの論理データにおいて前記マルチサイクルパスの信号が入力されている箇所の情報を含み、
前記回路データを生成する工程は、前記箇所を最適化の対象としないで前記回路データを生成する
請求項１に記載の論理回路設計方法。
【請求項６】
前記制約条件により指定される前記所定の条件を満たす回路データにおいては、当該回路データの第１論理回路に入力される信号を出力する第２論理回路に、前記制約条件で指定された信号が入力される
請求項１〜５のいずれか１項に記載の論理回路設計方法。
【請求項７】
電子計算機に実行させるためのプログラムであって、
レジスタトランスファレベルの記述を含んだ設計データに基づいて、前記レジスタトランスファレベルの記述に対応する論理データを生成する手順と、
前記設計データに基づいて、前記論理データと論理的に等価な複数のゲートレベルの回路データの中から所定の条件を満たす回路データを指定する制約条件を生成する手順と、
前記制約条件のもとで、前記論理データに基づいてゲートレベルの回路データを生成する手順と、
を備える論理回路設計プログラム。
【請求項８】
前記設計データは、前記レジスタトランスファレベルの記述の中に前記制約条件を示す記述を含む、
請求項７に記載の論理回路設計プログラム。
【請求項９】
前記レジスタトランスファレベルの記述のブロックに対応する部分ごとの論理データを生成する手順を更に備え、
前記制約条件を生成する手順は、前記部分ごとの論理データに基づいて、前記制約条件を生成する
請求項７に記載の論理回路設計プログラム。
【請求項１０】
前記制約条件は、前記部分ごとの論理データにおいて複数の異なるクロックでそれぞれ駆動される複数の信号が混在している箇所の情報を含み、
前記回路データを生成する手順は、前記箇所を最適化の対象としないで前記回路データを生成する
請求項９に記載の論理回路設計プログラム。
【請求項１１】
前記レジスタトランスファレベルの記述のブロックに対応する部分ごとの論理データを生成する手順を更に備え、
前記設計データは、マルチサイクルパスの信号を指定するタイミング制約情報を含み、
前記制約条件は、前記部分ごとの論理データにおいて前記マルチサイクルパスの信号が入力されている箇所の情報を含み、
前記回路データを生成する手順は、前記箇所を最適化の対象としないで前記回路データを生成する
請求項７に記載の論理回路設計プログラム。
【請求項１２】
前記制約条件により指定される前記所定の条件を満たす回路データにおいては、当該回路データの第１論理回路に入力される信号を出力する第２論理回路に、前記制約条件で指定された信号が入力される
請求項７〜１１のいずれか１項に記載の論理回路設計プログラム。
【請求項１３】
レジスタトランスファレベルの記述を含んだ設計データに基づいて、前記レジスタトランスファレベルの記述に対応する論理データを生成する論理データ生成部と、
前記設計データに基づいて、前記論理データと論理的に等価な複数のゲートレベルの回路データの中から所定の条件を満たす回路データを指定する制約条件を生成する制約条件抽出部と、
前記制約条件のもとで、前記論理データに基づいてゲートレベルの回路データを生成する最適化部と、
を備える論理回路設計システム。
【請求項１４】
前記設計データは、前記レジスタトランスファレベルの記述の中に前記制約条件を示す記述を含む、
請求項１３に記載の論理回路設計システム。
【請求項１５】
前記論理データ生成部は、前記レジスタトランスファレベルの記述のブロックに対応する部分ごとの論理データを生成し、
前記制約条件抽出部は、前記部分ごとの論理データに基づいて、前記制約条件を生成する
請求項１３に記載の論理回路設計システム。
【請求項１６】
前記制約条件は、前記部分ごとの論理データにおいて複数の異なるクロックでそれぞれ駆動される複数の信号が混在している箇所の情報を含み、
前記最適化部は、前記箇所を最適化の対象としないで前記回路データを生成する
請求項１５に記載の論理回路設計システム。
【請求項１７】
前記設計データは、マルチサイクルパスの信号を指定するタイミング制約情報を含み、
前記論理データ生成部は、前記レジスタトランスファレベルの記述のブロックに対応する部分ごとの論理データを生成し、
前記制約条件は、前記部分ごとの論理データにおいて前記マルチサイクルパスの信号が入力されている箇所の情報を含み、
前記最適化部は、前記箇所を最適化の対象としないで前記回路データを生成する
請求項１３に記載の論理回路設計システム。
【請求項１８】
前記制約条件により指定される前記所定の条件を満たす回路データにおいては、当該回路データの第１論理回路に入力される信号を出力する第２論理回路に、前記制約条件で指定された信号が入力される
請求項１３〜１７のいずれか１項に記載の論理回路設計システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、論理回路設計方法、論理回路設計プログラム、および論理回路設計システムに関する。
【背景技術】
【０００２】
電子計算機を用いたデジタル論理回路の設計においては、設計者が作成したソースコードに基づいて、実際のトランジスタセルレベルの回路データを合成するソフトウェアツールである論理合成ＣＡＤが用いられる。設計者は、まず、ＲＴＬ（Register Transfer Level：レジスタ転送レベル）と呼ばれるレベル（設計抽象度）での回路動作を記述するための設計用記述言語を用いてソースコードを作成する。これをＲＴＬ設計と言い、ＲＴＬ設計では、回路の動作をレジスタ（フリップフロップなど）間の信号の流れ（データ転送）とそれに対する論理演算の組み合わせで構成する。ＲＴＬ設計によるソースコードで記載された動作記述に基づいて、論理合成ＣＡＤによって、実際のトランジスタセルレベルの回路データ（ネットリスト）が作成（合成）される。
【０００３】
論理合成ＣＡＤにおいては、ＲＴＬ設計のソースコードからそれに対応する論理式を表現するゲートレベルの中間データにまず変換される。この中間データに基づいて、半導体ベンダが提供するゲート回路やフリップフロップを定義してあるテクノロジライブラリを用いてゲートレベルからトランジスタセルレベルへのマッピング（テクノロジライブラリマッピング）が行われる。その後、さらに不要なトランジスタセルを削除するなどして処理速度や回路規模の適正化などのための最適化を経てトランジスタセルレベルの回路データが作成される。
【０００４】
上述したＲＴＬ設計のソースコードに対応する論理式と論理的に等価なトランジスタセルレベルの回路データは一般に複数存在し得るが、論理合成ＣＡＤは上記したテクノロジライブラリマッピングと最適化を経てその中から１つのトランジスタセルレベルの回路データを作成する。しかしながら、従来の論理合成ＣＡＤでは、回路規模・動作速度・消費電力についての最適化は図られるものの、２つ以上のクロックが存在するシステムにおけるクロックの乗り替え回路（ＣＤＣ：Clock Domain Crossing、クロックドメインクロッシング）、或いは、規定クロックの１サイクルより長いサイクルで設計されるマルチサイクルパス回路などが設計対象となった場合において、設計者の意図を論理合成ＣＡＤに伝える手段がなかった。そのため、設計者の意図しないトランジスタセルレベルの回路データが合成されてしまう可能性があった。すなわち、論理的には等価であるが設計意図が反映されないゲートレベルの回路データが合成されてしまうおそれがあった。その結果、回路の誤動作を招くという問題があった。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００３−２１６６７２号公報
【特許文献２】特開２００５−１２２５７８号公報
【特許文献３】特開２００１−２９７１２５号公報
【特許文献４】特開２００８−２２６０６９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
本発明の一つの実施形態は、論理合成ＣＡＤにおいて、設計意図を反映した回路データを作成することが可能な論理回路設計方法、論理回路設計プログラム、および論理回路設計システムを提供することを目的とする。
【課題を解決するための手段】
【０００７】
本発明の一つの実施形態の論理回路設計方法は、レジスタトランスファレベルの記述を含んだ設計データに基づいて、前記レジスタトランスファレベルの記述に対応する論理データを生成する工程と、前記設計データに基づいて、前記論理データと論理的に等価な複数のゲートレベルの回路データの中から所定の条件を満たす回路データを指定する制約条件を生成する工程と、を備える。実施形態の論理回路設計方法は、前記制約条件のもとで、前記論理データに基づいてゲートレベルの回路データを生成する工程をさらに備える。
【図面の簡単な説明】
【０００８】
【図１】図１は、第１の実施形態にかかる論理回路設計システムの構成を示す図面である。
【図２】図２は、第１の実施形態にかかる論理回路設計方法のフローチャートを示す図面である。
【図３】図３は、第１および第２の実施形態において設計者が意図した回路構成を示す図である。
【図４】図４は、第１および第２の実施形態において設計者が意図しなかった回路構成を示す図である。
【図５】図５は、第２の実施形態にかかる論理回路設計システムの構成を示す図面である。
【図６】図６は、第２の実施形態にかかる論理回路設計方法のフローチャートを示す図面である。
【図７】図７は、第３の実施形態にかかる論理回路設計システムの構成を示す図面である。
【図８】図８は、第３の実施形態におけるソースコードを示す図である。
【図９】図９は、第３の実施形態にかかる信号タイムチャートを示す図である。
【図１０】図１０は、第３の実施形態において設計者が意図した回路構成を示す図である。
【図１１】図１１は、第３の実施形態において設計者が意図しない回路構成を示す図である。
【図１２】図１２は、第３の実施形態において設計者が意図しないグリッチが生ずる様子を示す図である。
【図１３】図１３は、第３の実施形態にかかる論理回路設計方法のフローチャートを示す図面である。
【図１４】図１４は、第３の実施形態における断片化された部分ごとの論理データの様子を示した図である。
【図１５】図１５は、第３の実施形態における回路データを示す図である。
【図１６】図１６は、第４の実施形態にかかる論理回路設計システムの構成を示す図面である。
【図１７】図１７は、第４の実施形態におけるソースコードを示す図である。
【図１８】図１８は、第４の実施形態において設計者が意図した回路構成を示す図である。
【図１９】図１９は、第４の実施形態にかかる論理回路設計方法のフローチャートを示す図面である。
【図２０】図２０は、実施形態にかかる論理回路設計システムを実現するハードウェアの構成を示す図面である。
【発明を実施するための形態】
【０００９】
以下に添付図面を参照して、実施形態にかかる論理回路設計方法、論理回路設計プログラム、および論理回路設計システムを詳細に説明する。なお、これらの実施形態により本発明が限定されるものではない。
【００１０】
（第１の実施形態）
図１は、第１の実施形態にかかる論理回路設計システム１００の構成を示す図面である。論理回路設計システム１００は、電子計算機が実行するＣＡＤソフトウェアにより実現される論理合成ＣＡＤ部４０、マウス、キーボードなどである入力部１、ディスプレイなどである出力部２、およびＨＤＤ、フラッシュメモリなどの記憶装置である記憶部３０を備える。論理回路設計システム１００は、パーソナルコンピュータなどの電子計算機により実現される。論理回路設計システム１００を実現するハードウェアの構成を図２０に示す。入力部１、出力部２、ＣＰＵ１０１、ＲＡＭ１０２、および記憶部３０がバス１０４を介して接続されている。図２０に示すように、記憶部３０には、論理回路設計プログラムである論理合成ＣＡＤプログラム１０３が記憶されている。ＣＰＵ１０１は、論理合成ＣＡＤプログラム１０３を読み出してＲＡＭ１０２にプログラムモジュールとして展開し、展開されたプログラムモジュールをＣＰＵ１０１が実行することにより図１の論理合成ＣＡＤ部４０として機能する。なお、図を簡単にするため、図１、５、７、および１６の記憶部３０において論理合成ＣＡＤプログラム１０３は示さない。
【００１１】
論理合成ＣＡＤ部４０は、ＲＴＬのソースコード（以下、単にＲＴＬ、又はＲＴＬの記述とも称する）に対応する論理式を、ランダムロジックの組み合わせ論理とフリップフロップ・ラッチの保持論理のパートに分け、記述された論理を実際の回路ライブラリにマッピングを行う。論理合成ＣＡＤ部４０は、前処理部１０および最適化部２０を備える。前処理部１０は、レジスタレベルの動作を記述したソースコードであるＲＴＬの記述を含んだ回路の設計データ３１を入力として、ＲＴＬの記述に対応する論理データ３２、および制約条件を出力する。論理データ３２は、ＲＴＬのソースコードに対応する論理式を表現するゲートレベルの回路データである。制約条件は、論理データ３２と論理的に等価な複数のゲートレベルの回路データの中から所定の条件を満たす回路データを指定する。
【００１２】
前処理部１０は、論理データ生成部１１および制約条件抽出部１２を備える。論理データ生成部１１は、設計データ３１に基づいてＲＴＬの記述に対応する論理データ３２を生成する。制約条件抽出部１２は、論理データ３２と論理的に等価な複数のゲートレベルの回路データの中から所定の条件を満たす回路データを指定する制約条件を出力する。制約条件抽出部１２は、制約条件を抽出するに際し、設計データ３１に記載されたＲＴＬの記述に基づいてもよいし、設計データ３１に含まれるタイミング制約情報などのＲＴＬの記述以外の情報に基づいてもよいし、或いは、ＲＴＬの記述に対応する論理データ３２に基づいて当該条件を抽出してもよい。最適化部２０は、制約条件抽出部１２が出力した制約条件のもとで、論理データ３２に基づいてゲートレベルの回路データ３３を生成する。回路データ３３は、トランジスタセルレベルの接続関係を表現したデータであってネットリストとも呼ばれる。なお、設計データ３１、論理データ３２、および回路データ３３は、記憶部３０に保持される。
【００１３】
論理回路設計システム１００による論理回路設計方法のフローチャートを図２に示す。まず、ＲＴＬの記述を含んだ回路の設計データ３１が前処理部１０に入力される（ステップＳ１０１）。ここで、設計データ３１は、例えば以下の（ＲＴＬ記述例１）に示すようなＲＴＬの記述を含んでいる。なお、以後の説明におけるＲＴＬの記述は、全てＶｅｒｉｌｏｇでの記載を例として示す。
【００１４】
（ＲＴＬ記述例１）
if(EN==1'b1)  begin
if(SEL==1'b0)  begin
Z<=D1;
end  else  begin
Z<=D2;
end
end  else  begin
Z<=1'b0
End
【００１５】
上記ＲＴＬの記述において、１行目のif文の中の条件「EN==1'b1」は、イネーブル信号ENが１ビット信号で値「1」をとるならば（「1'b」は１ビットの信号を意味している）、以下の内容
if(SEL==1'b0)  begin
Z<=D1;
end  else  begin
Z<=D2;
end
を実行する。即ち、信号SELが１ビット信号で値「0」をとるならば、ZにD1を代入（Z<=D1）し、それ以外の場合は、ZにD2を代入（Z<=D2）する。
【００１６】
そして、イネーブル信号ENが１ビット信号で「1」以外の値をとる場合（イネーブル信号ENが１ビット信号で値「0」をとる場合）は、以下の内容
Z<=1'b0
を実行する。即ち、Zに１ビット信号で値「0」を代入することを意味する。
【００１７】
まとめると、上記（ＲＴＬ記述例１）の記述は、イネーブル信号ENが１ビット信号で値「1」をとるならば、Zには信号SELの値に依存してD1またはD2の値が代入され、「1」以外の値（すなわち「0」）の場合は、Zには１ビット信号で値「0」の値が代入されることを意図している。このようなＲＴＬを記述した設計者は、通常、図３に示すような、フリップフロップ５、論理積ゲート６、およびセレクタ７を備えた回路構成が合成されることを意図している。すなわち、セレクタ７の出力とイネーブル信号ENとの論理積を論理積ゲート６で取った結果の値の信号をフリップフロップ５に入力することを意図している。
【００１８】
次に、論理データ生成部１１は、設計データ３１に含まれるＲＴＬの記述に対応する論理データ３２を生成する（ステップＳ１０２）。上記ＲＴＬの記述に対応する論理データ３２は、以下の式（１）となる。
Z=EN・(D1・SEL'+D2・SEL)  ・・・（１）
なお、ここで、SEL'は、SELの否定を示している。
【００１９】
前述したとおり、（ＲＴＬ記述例１）で示した設計データ３１は、回路設計者が、セレクタ７の出力とイネーブル信号ENとの論理積を論理積ゲート６で取った結果の値の信号をフリップフロップ５に入力するという設計意図に基づいて作成したものである。このような設計意図は、（ＲＴＬ記述例１）の一番外のif文のネスト（if(EN==1'b1)以下のネスト）の記述により表現されている。しかしながら、従来の論理合成ＣＡＤにおいては、このような設計意図を理解することなく、後述する最適化において、式（１）の論理式を表現するトランジスタセルレベルの回路データを作成していた。
【００２０】
そこで、本実施の形態にかかる論理合成ＣＡＤ部４０においては、このような設計意図を明示的に抽出する。このような設計意図を抽出するためには、具体的には、信号のクロック情報を利用したり、あるいはＲＴＬの記述に追加的な記載を付加したり、ＲＴＬの記述とは別にタイミング情報を利用するなど、何らかの明示的な手段で設計データ３１に別途含ませた情報を利用する。
【００２１】
そして、制約条件抽出部１２が設計データ３１或いは設計データ３１から求められた論理データ３２に基づいて、上述した設計意図に基づいた回路に対する制約条件を抽出する（ステップＳ１０３）。ここで抽出された制約条件は、セレクタ７の出力に対してとイネーブル信号ENとの論理積を取った信号をフリップフロップ５に入力するという回路構成を固定し、この後の最適化においてその部分は変更しないようにすることである。
【００２２】
最後に、最適化部２０は、抽出された制約条件のもとで、半導体ベンダが提供するゲート回路やフリップフロップを定義してあるテクノロジライブラリを用いて処理速度や回路規模を考慮した最適化を実行して回路データ３３を生成する（ステップＳ１０４）。最適化部２０は、抽出された制約条件のもとで、式（１）で示される論理データ３２と論理的に等価なトランジスタレベルの回路データとして図３に示すような回路データ３３を生成する。式（１）で示される論理データ３２と論理的に等価なトランジスタレベルの回路データとしては図４に示すようなものがある。しかし本第１の実施形態によれば、制約条件により設計意図を反映した図３に示すような回路データ３３が生成される。
【００２３】
従来は、ＲＴＬ記述し回路を設計する段階では、設計の前提条件について記述する術がないため、ＲＴＬから論理合成を行なう場合、論理的に等価であり、かつ論理合成の制約に違反しなければ、その範囲でどのような回路データが作成されるかについて設計者の意図を反映させることはできなかった。しかし、第１の実施形態によれば、回路設計データに基づいて回路制約条件が生成される。この回路制約条件のもとでレジスタトランスファレベルの記述に対応する論理データからゲートレベルの回路データを生成する論理合成ＣＡＤによる最適化を実行する。その結果、回路設計者の設計意図を反映した回路データを生成するという効果を得ることができる。
【００２４】
以下の第２乃至４の実施形態において、より具体的な他の実施形態についての説明を行う。なお、第２乃至４の実施形態においても、第１の実施形態と同様に、図２０のＣＰＵ１０１が、論理合成ＣＡＤプログラム１０３を読み出してＲＡＭ１０２にプログラムモジュールとして展開し、展開されたプログラムモジュールをＣＰＵ１０１が実行することにより論理合成ＣＡＤ部４０Ａ（図５）、４０Ｂ（図７）、あるいは４０Ｃ（図１６）として機能する。
【００２５】
（第２の実施形態）
論理回路の設計において、非同期パスもしくは、同期回路内のクロックで規定される１サイクル以内にタイミングパスを収束させない例外箇所が存在する場合がある。そのような場合は、設計者は、例外でない箇所に対しては１サイクル以内にタイミングを満たすことを保証する制御信号を用いる。そして、非同期もしくは例外として扱う箇所が、続く後段の論理ブロックに伝播しないように遮断する回路をＲＴＬで記述する。具体的には、制御信号であるイネーブル信号ENは信号SELの値が変化した１サイクル後に変化するということを前提とし、最後はイネーブル信号ENで出力のタイミングを規定するという意図をもって、設計者はＲＴＬのソースコードを記述することがある。その一例は、例えば上記した（ＲＴＬ記述例１）である。
【００２６】
（ＲＴＬ記述例１）で記述された論理回路データにおいて、設計者が意図しているのは、図３に示すようなゲートレベルの回路データである。この回路構成に従って論理積ゲート６から出力されてフリップフロップ５に入力される信号Zの論理式は上述した式（１）のようになる。
【００２７】
図３の例では、信号ＳＥＬの値が変化した後、最初のクロックの立ち上がりでイネーブル信号ENが変化することがフリップフロップ５への入力信号に対する条件となる。すなわち、イネーブル信号ENでフリップフロップ５への入力に制限をかけることができる回路になっている。
【００２８】
しかしながら、従来は、ＲＴＬのソースコードを記述して回路を設計する段階では、設計の前提条件について記述する術がなかった。そのため、ＲＴＬのソースコードから論理合成を行なう場合において、論理的に等価でありかつ論理合成の制約に違反しなければ、途中の信号の変化タイミングについては、考慮されることはなかった。この結果、非同期クロックの論理回路間の信号の受け渡し時の制御信号が支配的でなくなる等、ＲＴＬのソースコードを記述した回路設計者の意図しないタイミングで変化する信号が伝搬する回路が合成されてしまう可能性があった。
【００２９】
具体的には、（ＲＴＬ記述例１）で記述された論理回路データに対して、論理合成ＣＡＤによって図４に示すような、設計者の意図とは異なるゲートレベルの回路データが生成されてしまうことがある。これは、以下に述べるように図４に示すような回路データも（ＲＴＬ記述例１）に対応する論理式と論理的に等価であるからである。図４の回路構成に従ってセレクタ７から出力されてフリップフロップ５に入力される信号Zの論理式は以下のようになり、図３の信号Zと論理的には等価である。
Z=(EN・D1)・SEL'+(EN・D2)・SEL=EN・(D1・SEL'+D2・SEL)
【００３０】
即ち、図４のゲートレベルの回路データにおいては、ＲＴＬ記述における設計者の意図に反して、信号SELがイネーブル信号ENの後段に入力されるように配置されている。即ち、図４のゲートレベルの回路データは図３のゲートレベルの回路データと論理的には等価であるものの、イネーブル信号ENの制限がなく、信号SELがフリップフロップ５へ入力される回路構成となっている。
【００３１】
図５は、第２の実施形態にかかる論理回路設計システム２００の構成を示す図面である。本実施の形態においては、条件付きソースコード３４およびタイミング制約情報３６が図１の設計データ３１に相当する。前処理部１０Ａは、ソースコード解析部１３および論理データ生成部１１Ａを備える。ソースコード解析部１３は、図１の制約条件抽出部１２の機能を含んでおり、例えばＲＴＬの設計言語の文法チェックなども行う。マッピング部２１および回路最適化部２２は、図１の最適化部２０に相当する。マッピング部２１は、半導体ベンダが提供するゲート回路やフリップフロップを定義してあるテクノロジライブラリを用いてゲートセルからトランジスタセルレベルへのマッピング（テクノロジライブラリマッピング）を実行する。回路最適化部２２は、不要なトランジスタセルを削除するなどして処理速度や回路規模の適正化などのための最適化を実行して回路データ３３を生成する。条件付きソースコード３４は、例えば、図３のフリップフロップ５の動作を記述する以下のようなものである。
【００３２】
／／受信ＦＦ
always(posedge@Clock)
#pragma(EN&SEL_OUT)
if(EN==1'b1)  begin
Z<=SEL_OUT;
end  else  begin
Z<=1'b0;
End
assign  SEL_OUT=SEL?D2:D1;
【００３３】
上記の条件付きソースコード３４の中で、図３の論理積ゲート６を規定するのが、“always(posedge@Clock)”から“End”までの部分である。“always(posedge@Clock)”は、Clock（クロック）の立ち上がりエッジの度に、以下の“End”までを実行するという命令文である。そして、次の“#pragma(EN&SEL_OUT)”がソースコードに付加された条件である。この１行をソースコード３４に追加することによりソースコード解析部１３がイネーブル信号ENと他の信号SEL_OUTとの論理積（&）をフリップフロップ５の保持値とするという条件を抽出することが可能になる。
【００３４】
論理データ生成部１１Ａが、ＲＴＬの記述をコンパイルして論理データ３２に変換するコンパイラとして機能する。“#pragma(EN&SEL_OUT)”の１行は、コンパイル前にプリプロセッサに相当するソースコード解析部１３で解釈される行であり、ＲＴＬの記述を論理データ３２に変換する際には無視される行である。このようにして、設計者はＲＴＬ記述の中に設計意図に基づいた条件を埋め込む。なお、“#pragma”の表記はＣ言語におけるプリプロセッサへの表記方法を引用した例であり、ＲＴＬ記述の中において設計意図に基づいた条件を示す方法はこの例に限定されるものではない。
【００３５】
“#pragma(EN&SEL_OUT)”以降の  if(EN==1'b1)  begin  からEnd  までの記述は、イネーブル信号ENが１ビット信号で値「1」をとるならば、ZにSEL_OUTを代入（Z<=SEL_OUT）し、それ以外の場合は、Zに１ビット信号の値「0」を代入（Z<=1'b0）することを意味している。
【００３６】
その後、１行空行を挟んだ後の“assign  SEL_OUT=SEL?D2:D1;”の部分は、セレクタ７を規定している。これは、SELが真(1)の場合のSEL_OUTがD2で、偽(0)の場合のSEL_OUTがD1を意味する。即ち、SEL_OUT= D1・SEL'+D2・SELを意味する。従って、“assign  SEL_OUT=SEL?D2:D1;”は以下の記載と同じ意味である。
【００３７】
if(SEL==1'b0)  begin
SEL_OUT<=D1;
end  else  begin
SEL_OUT<=D2;
end
【００３８】
ところで、設計者が“#pragma(EN&SEL_OUT)”で記述したように、イネーブル信号ENでフリップフロップ５への入力に制限をかける設計意図を持つ理由は、図３においてセレクタ７の出力信号であるSEL_OUTがマルチサイクルのタイミング制約を持つ信号だからである。すなわち、イネーブル信号ENは、マルチサイクルパスであるSEL_OUTと論理積演算される（ＡＮＤゲートをかけられる）。このようなマルチサイクルパスのタイミングの制約に関する情報であるタイミング制約情報３６も論理合成ＣＡＤ部４０に提供される。
【００３９】
論理回路設計システム２００による論理回路設計方法のフローチャートを図６に示す。まず、ソースコード解析部１３が条件付きソースコード３４から“#pragma(EN&SEL_OUT)”の部分を解釈して、イネーブル信号ENと他の信号SEL_OUTとの論理積（&）をフリップフロップ５の保持値にするという制約条件を抽出する（ステップＳ２０１）。ソースコード解析部１３は、上述したようにここでは、一種のプリプロセッサとして機能する。次に、論理データ生成部１１Ａは、条件付きソースコード３４の“#pragma(EN&SEL_OUT)”を除いた部分に基づいて論理データ３２を生成する（ステップＳ２０２）。ここで、ソースコード解析部１３は、上述した制約条件に基いてイネーブル信号ENと信号SEL_OUTの論理積をとる形式の論理データ３２を生成するように論理データ生成部１１Ａに指示する。即ち、ソースコード解析部１３は、論理データ生成部１１Ａに、
(EN・D1)・SEL'+(EN・D2)・SEL
ではなくて、
EN・(D1・SEL'+D2・SEL)
の形式の論理データ３２を生成するように指示する。
【００４０】
さらに、ソースコード解析部１３が指定したイネーブル信号ENと信号SEL_OUTの論理積の部分は論理積ゲート６として固定するという条件のもとで、マッピング部２１は、トランジスタセルレベルへのマッピングを実行し、回路最適化部２２は最適化を実行して図３に相当する回路データ３３を生成する（ステップＳ２０３）。なお、回路データ３３の生成においては、タイミング制約情報３６もマッピング部２１に入力され、最適化において考慮される。
【００４１】
第２の実施形態によれば、ソースコード解析部１３が、条件付きのソースコードから設計意図が反映された制約条件を抽出し、当該制約条件のもとで回路データの論理合成ＣＡＤによる最適化が実行される。その結果、設計意図を反映した回路データを得ることができる。
【００４２】
（第３の実施形態）
図７は、第３の実施形態にかかる論理回路設計システム３００の構成を示す図面である。本実施の形態においては、前処理部１０Ｂは、ソースコード解析部１３Ｂ、論理データ生成部１１Ｂ、および非同期回路抽出部１４を備える。ソースコード３５が図１の設計データ３１に相当し、非同期回路抽出部１４が図１の制約条件抽出部１２に相当する。マッピング部２１Ｂおよび回路最適化部２２は、図１の最適化部２０に相当し、それぞれ第２の実施形態と同様な機能を有する。
【００４３】
図８のＲＴＬで記述される回路は、２つのクロックＣＬＫ１およびＣＬＫ２それぞれにより駆動される論理ブロックの間でのデータ受け渡しが生じるクロックの乗り替え回路（ＣＤＣ：Clock Domain Crossing）を含んでいる回路の例である。イネーブル信号ENはＣＬＫ２で駆動されており、ＲＴＬの設計意図は、データが有効であるタイミングを示すイネーブル信号EN＝“１”のときに、”Latch_DO”の値を保持するフリップフロップに”DO”のデータを取り込むことである。それ以外のEN＝“０”のタイミングでは、図９の信号タイムチャートに示すように”Latch_DO”の値は常に８ビットの値“０”で固定されていることが要求される。
【００４４】
このような場合に図８のＲＴＬを記述した設計者が想定しているのは、図１０に示すような回路である。図１０の例では、ＲＴＬで記述された通り、”Latch_DO”の値を保持するフリップフロップ５の直前の論理積ゲート６にイネーブル信号ENがマッピングされる。このことにより、イネーブル信号EN＝“０”のタイミングでは”Latch_DO”へ入力される信号は常に８ビットの値“０”となる。”Latch_DO”の値を論理式で示すと
Latch_DO=EN・(D1・SEL'+D2・SEL)
となる。しかし、EN・(D1・SEL'+D2・SEL)=((EN・D1)'・SEL'+(EN・D2)'・SEL)'なので、従来の論理合成ＣＡＤにおいては、Latch_DO=((EN・D1)'・SEL'+(EN・D2)'・SEL)'の論理形式を反映した、図１１に示すような回路が合成される可能性があった。
【００４５】
しかし、図１１が表現するLatch_DO=((EN・D1)'・SEL'+(EN・D2)'・SEL)'は論理式としては図１０と等価であるものの、EN＝“０”とすると、Latch_DO=(SEL'+SEL)'となる。この場合、論理的には(SEL'+SEL)'=0となるが、実際の回路において信号SELが変化するタイミングと、信号SELの反転信号である信号SEL'が変化するタイミングとの間にタイムラグが生じて、SEL'+SELが“１”を維持できずに“０”となってしまう期間が発生する可能性がある。即ち、図１２に示すように、信号SELの信号変化が生じると上記タイムラグに応じた期間の幅でLatch_DO=(SEL'+SEL)'＝“１”となるグリッチを生み出す可能性がある。その結果、”Latch_DO”=(SEL'+SEL)'の値が“０”を維持できない期間が発生することがある。
【００４６】
この問題の原因は、設計者がLatch_DOの直前の論路回路に、制御信号としてイネーブル信号ENが入力されるようにＲＴＬを記述したにも関わらず、従来の論理合成ＣＡＤにおいては、タイミング・面積等の最適化の結果として、その設計意図に反して論理式の最適化が行われて、この意図が反映されない回路を合成してしまうことにある。
【００４７】
上記のような問題を解決するために、論理回路設計システム３００は、ＲＴＬ設計の段階で記述したソースコード３５のブロックを論理合成における仮想的なグループとして維持する。そして各グループ内の論理ブロックの中で、ＣＤＣの完全同期回路ではない箇所を推定し、この箇所を分離して固定することにより設計者の意図に反した論理合成が行なわれることを防止する。ここで言うブロックとは、例えば、Ｖｅｒｉｌｏｇの記述ならば、always文の”begin”から”end”までの範囲や、assign文のセミコロン”;”までの範囲などを指す。本実施の形態にかかる論理回路設計システム３００の非同期回路抽出部１４は、上記した設計意図をソースコード３５から抽出する。
【００４８】
次に、図７，８，１３，１４を用いて本実施の形態にかかる論理回路設計システム３００の論理回路設計方法を説明する。図１３は、論理回路設計システム３００による論理回路設計方法のフローチャートを示す図である。まず、図８に示したソースコード３５は、ソースコード解析部１３Ｂによる文法チェックなど経て複数のブロックに分離される。論理データ生成部１１Ｂは、各ブロックについて、図１４に示すような断片化された部分ごとの論理セルに変換する（ステップＳ３０１）。ここで変換されるのは、最終的な論理データ３２の全体ではなく、その前段階で作成されグループごとに断片化された部分ごとの論理データであって論理データ３２の一部である。
【００４９】
即ち、論理合成ＣＡＤ部４０Ｂは、ソースコード３５に記載された全てのＲＴＬ記述を解析し、ＲＴＬ記述のブロックに従い仮想的なグループを設け、その中で記述される論理ブロックを対象に論理合成ＣＡＤ用の論理セルに変換していく。またこの際には、ＲＴＬの記述の優先順位に従って、論理セルに変換する。例えば、if文であれば一番外のネストが、回路の最終段に来るように論理セルに変換する。
【００５０】
具体的には、図８のＲＴＬ記述のブロックＡは、図１４の論理データの一部であるグループＡに変換され、図８のＲＴＬ記述のブロックＢは、図１４の論理データの一部であるグループＢに変換され、図８のＲＴＬ記述のブロックＣは、図１４の論理データの一部であるグループＣに変換される。
【００５１】
ところで、図１４に示されるように、ここで生成されたグループごとに断片化された部分ごとの論理データには各信号を駆動するクロックの情報も含まれている。非同期回路抽出部１４は、この部分ごとの論理データにおいて、複数の異なるクロックでそれぞれ駆動される複数の信号が混在して入力されるグループを抽出する。即ち、非同期回路抽出部１４は、完全同期回路ではない非同期回路のグループをこの後の最適化において回路構成を固定すべき制約条件として抽出する（ステップＳ３０２）。即ち、図１４のブロックＢにおいて、ＣＬＫ１で駆動される信号DOとＣＬＫ２で駆動されるイネーブル信号ENは、フリップフロップ５に入力される論理積ゲート６に入力されなければならないという制約条件が抽出される。従って、制約条件は複数の異なるクロックでそれぞれ駆動される複数の信号が混在している非同期回路の箇所の情報を含んでいる。具体的には、ＲＴＬ記述のブロックに従って図８で示されるＲＴＬ記述からマッピングされた図１４で示される断片化された部分ごとの論理データのグループのうち、複数のクロックであるＣＬＫ１およびＣＬＫ２で動作する複数の論理ブロックが含まれるグループＢについては、これ以降の処理では、回路構成が固定化される。すなわち、グループＢについては、論理回路の最適化が行われないような固定化の属性を付加する。
【００５２】
非同期回路抽出部１４は、この制約条件に基いて、イネーブル信号ENと信号DOとの論理積をフリップフロップ５の保持値とするという論理表現を有する論理データ３２を生成するように論理データ生成部１１Ｂに指示する。そして論理データ生成部１１Ｂは、この制約条件に基づいて、論理データ３２を生成する（ステップＳ３０３）。
【００５３】
さらに、非同期回路抽出部１４が指示したイネーブル信号ENと信号DOの論理積の演算部分は論理積ゲート６として固定するという条件のもとで、マッピング部２１Ｂは、トランジスタセルレベルへのマッピングを実行し、回路最適化部２２は最適化を実行する。即ち、図１５に示すように、ステップＳ３０２で固定化の属性が付加されたＸの論理回路は固定化され、それ以外の部分は完全な同期回路とみなし、速度・面積・消費電力の観点から、従来通り論理の最適化を実行する。その結果、図１５に示すように、Ｘの部分の回路構成を固定した状態で最適化が施された回路データ３３が生成される（ステップＳ３０４）。
【００５４】
なお、マッピング部２１Ｂにおけるマッピングにおいては、テクノロジライブラリにＡＮＤ・ＯＲ／ＮＡＮＤ・ＮＯＲのセルがあれば、設計者が意図した論理として直接マッピングすることが可能であるが、テクノロジライブラリに所望のセルがない場合もあり得る。そのような場合であっても、最終的にはテクノロジライブラリに存在する何らかのセルを選択する必要がある。例えば、上述したような制約条件が存在する場合は、最終的な回路データ３３において、グリッチが発生しないような組み合わせ論理となるセルを選択するようにする。すなわち、開始端での信号の立ち上り（Rise）、または立ち下り（Fall）の変化から、終了端での立ち上りパスと立ち下りパスの両方が発生するような冗長な論理回路を生成させないことが可能となる。例えば、A・B＝A・(A'+B)の関係から、A・Bの論理をA・(A'+B)の論理で構成することにより、A・A'によってAからの立ち上りパスとA'の立ち下りパスの両経路が発生してしまうことを防ぐことが可能となる。
【００５５】
第３の実施形態によれば、非同期回路抽出部１４が、論理データの中から複数のクロックが混在している非同期な回路を抽出して制約条件とする。そして当該制約条件のもとで回路データの論理合成ＣＡＤによる最適化が実行される。その結果、設計意図を反映した回路データを得ることができる。
【００５６】
（第４の実施形態）
次に図１６を用いて、第４の実施形態にかかる論理回路設計方法を説明する。図１６は、第４の実施形態にかかる論理回路設計システム４００の構成を示す図面である。本実施の形態においては、前処理部１０Ｃは、ソースコード解析部１３Ｃ、論理データ生成部１１Ｃ、および制約条件抽出部１２Ｃを備える。ソースコード３５およびタイミング制約情報３６が図１の設計データ３１に相当する。マッピング部２１Ｃおよび回路最適化部２２は、図１の最適化部２０に相当し、それぞれ第２の実施形態と同様な機能を有する。
【００５７】
本実施の形態におけるソースコード３５は、図１７に示した内容である。設計者がソースコード３５で意図しているのは図１８に示す回路である。この回路においては、クロック信号としてＣＬＫで駆動されるDATA1[7:0]（[7:0]は、ビット桁が０ビットの桁から７ビットの桁までの計８桁、即ち８ビットのデータであることを意味する）およびDATA2[7:0]に対して、加算器９による加算結果ADD_ANS[8:0]は、DATA1[7:0]およびDATA2[7:0]の値が変化する時点からＣＬＫの２サイクル以内に結果が出ればよいマルチサイクルパスになっている。これは、加算器９による演算が１サイクル以内に終了しないからである。一般に演算器の処理を１サイクル以内に終了させようとすると回路規模が増大してしまう。従って、適切な回路規模で加算器９を実現すると演算が１サイクル以内に終了しなくなる。
【００５８】
従って、セレクタ７の出力は、ＣＬＫの２サイクルに１回“１”となる計算可能信号CALC_READYによってフリップフロップ５への転送が許可される。計算可能信号CALC_READYは、ＤＡＴＡ１，２の計算結果であるセレクタ７の出力をフリップフロップ５へ転送することを許可する信号である。即ち、図１８は、マルチサイクルパスである加算器９の出力ADD_ANS[8]（ADD_ANS[8:0]の８ビット目）のタイミング制約が、論理積ゲート６に入力される計算可能信号CALC_READYによって与えられた回路である。
【００５９】
フリップフロップ５への入力信号のタイミングを計算可能信号CALC_READYによって制御する意図で記載されたＲＴＬの記述は、図１７に示したソースコードのブロックＤの記述である。従って、本実施の形態においても、第３の実施形態と同様に、if文の一番外のネスト（if(CALC_READY==1'b1)beginからそれに対応するendまで）が、回路の最終段に来るようにセルがマッピングされることが望まれる。しかし、図１８の回路においてはクロック信号がＣＬＫの１つだけなので、ソースコード３５を論理データ生成部１１Ｃがクロック情報を含んだグループごとに断片化された部分的な論理データに変換したとしても、第３の実施形態のようにそこから固定すべき回路の箇所を抽出することは出来ない。そこで、本実施の形態においては、上述したタイミング制約を指定したタイミング制約情報３６をソースコード３５と共に前処理部１０Ｃに与える。
【００６０】
次に、図１９を用いて第４の実施形態にかかる論理回路設計方法を説明する。図１９は論理回路設計システム４００による論理回路設計方法のフローチャートである。まず、ソースコード３５と共にタイミング制約情報３６が前処理部１０Ｃに与えられる（ステップＳ４０１）。具体的には、ソースコード３５はソースコード解析部１３Ｃに与えられ、タイミング制約情報３６は制約条件抽出部１２Ｃに与えられる。タイミング制約情報３６の具体的な記載は、例えば以下のような記載である。
set_multicycle_path -through ADD_ANS[8:0]
これによりマルチサイクルパスである加算器９の出力ADD_ANS[8:0]を指定する。
【００６１】
次に、ソースコード解析部１３Ｃを経たソースコード３５が、論理データ生成部１１Ｃによりブロックごとに断片化された部分ごとの論理データに変換される（ステップＳ４０２）。具体的には、図１７のＲＴＬ記述のブロックＡは、図１８のグループＡに対応する論理データの一部に変換され、図１７のＲＴＬ記述のブロックＢは、図１８のグループＢに対応する論理データの一部に変換される。図１７のＲＴＬ記述のブロックＣは、図１８のグループＣに対応する論理データの一部に変換され、図１７のＲＴＬ記述のブロックＤは、図１８のグループＤに対応する論理データの一部に変換される。ちなみに、図１７のＲＴＬ記述のブロックＥは、ブロックＢで用いられる加算器の関数を定義しているので図１８との対応はない。
【００６２】
そして、制約条件抽出部１２Ｃはタイミング制約箇所を制約条件として抽出する（ステップＳ４０３）。具体的には、上記したタイミング制約情報３６に基づいて、マルチサイクルパスである加算器９の出力ADD_ANS[8:0]が入力となっている論理表現のグループを抽出する。即ち、ADD_ANS[8:0]が入力となっている図１８のグループＤで示したTMP_FF_boundaryに相当する論理表現のグループについては、今後、固定化して論理の最適化が行われないような属性を付加する。
【００６３】
制約条件抽出部１２Ｃは、この制約条件に基いて、計算可能信号CALC_READYとセレクタ７との論理積をフリップフロップ５の保持値とするという論理表現を有する論理データ３２を生成するように論理データ生成部１１Ｃに指示する（ステップＳ４０４）。
【００６４】
さらに、制約条件抽出部１２Ｃが指示した計算可能信号CALC_READYとセレクタ７との論理積の演算部分は論理積ゲート６として固定するという条件のもとで、マッピング部２１Ｃは、トランジスタセルレベルへのマッピングを実行し、回路最適化部２２は最適化を実行する。即ち、ステップＳ４０３で固定化の属性が付加された図１８のグループＤの部分は固定化され、それ以外の部分は完全な同期回路とみなし、速度・面積・消費電力の観点から、従来通り論理の最適化を実行する。その結果、図１８に示すように、グループＤのTMP_FF_boundaryの回路構成を固定した状態で最適化が施された回路データ３３が生成される（ステップＳ４０５）。
【００６５】
なお、マッピング部２１Ｃにおけるマッピングにおいては、テクノロジライブラリにＡＮＤ・ＯＲ／ＮＡＮＤ・ＮＯＲのセルがあれば、設計者が意図した論理として直接マッピングすることが可能であるが、テクノロジライブラリに所望のセルがない場合もあり得る。そのような場合であっても、最終的にはテクノロジライブラリに存在する何らかのセルを選択する必要がある。上述したような制約条件が存在する場合は、最終的な回路データ３３において、グリッチが発生しないような組み合わせ論理となるセルを選択するようにする。すなわち、開始端での信号の立ち上り（Rise）、または立ち下り（Fall）の変化から、終了端での立ち上りパスと立ち下りパスの両方が発生するような冗長な論理回路を生成させないことが可能となる。例えば、A・B＝A・(A'+B)の関係から、A・Bの論理をA・(A'+B)の論理で構成することにより、A・A'によってAからの立ち上りパスとA'の立ち下りパスの両経路が発生してしまうことを防ぐことが可能となる。
【００６６】
第４の実施形態によれば、マルチサイクルパスの信号へタイミング制約をかけるための信号が入力される箇所をタイミング制約情報として論理合成ＣＡＤに与える。この制約情報に基づいた制約条件のもとで回路データの論理合成ＣＡＤによる最適化が実行される。その結果、設計意図を反映した回路データを得ることができる。
【００６７】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【００６８】
１  入力部、２  出力部、５  フリップフロップ、６  論理積ゲート、７  セレクタ、１０  前処理部、２０  最適化部、３０  記憶部、４０  論理合成ＣＡＤ部、１００，２００，３００，４００  論理回路設計システム。
【図１】
2014041598.tif 000003
【図２】
2014041598.tif 000004
【図３】
2014041598.tif 000005
【図４】
2014041598.tif 000006
【図５】
2014041598.tif 000007
【図６】
2014041598.tif 000008
【図７】
2014041598.tif 000009
【図８】
2014041598.tif 000010
【図９】
2014041598.tif 000011
【図１０】
2014041598.tif 000012
【図１１】
2014041598.tif 000013
【図１２】
2014041598.tif 000014
【図１３】
2014041598.tif 000015
【図１４】
2014041598.tif 000016
【図１５】
2014041598.tif 000017
【図１６】
2014041598.tif 000018
【図１７】
2014041598.tif 000019
【図１８】
2014041598.tif 000020
【図１９】
2014041598.tif 000021
【図２０】
2014041598.tif 000022