(57)【要約】【課題】従来の高位合成技術では、ハードウェア資源間の接続網が複雑になり、結果としてユーザが回路構成を把握しにくい回路が生成されることがあった。また、入力される動作レベル記述が複数の機能を有する場合に、複雑さが増大する傾向があった。【解決手段】機能ユニットと機能ユニット間の接続関係を定義したデータパステンプレートを選択するステップＳ２と、入力された動作レベル記述を機能ユニットに対応する粒度に分割するステップＳ３と、分割された動作レベル記述と機能ユニットを対応付けるステップＳ４とにより、生成される回路構成をデータパステンプレートに定義された回路構成となるようにし、回路構成が把握しやすい回路を生成する。また、機能ユニット内で動作レベル記述を結合するステップＳ５により、複数の動作レベル記述を１つの回路として生成することにより、動作レベル記述が複数の機能を有する場合においても、回路構成の複雑さの増大を抑制する。【選択図】図１
2007287088.tif 000002
【特許請求の範囲】
【請求項１】
回路のレジスタ転送レベルでの生成方法を定義した機能ユニットと前記機能ユニット間の信号の接続関係とを定義したデータパステンプレートを参照し、動作レベル記述からレジスタ転送レベル記述を生成する高位合成方法。
【請求項２】
前記動作レベル記述として、同時に実行されない複数の動作が記述されている請求項１に記載の高位合成方法。
【請求項３】
前記機能ユニットが、レジスタ転送レベルの実装である演算器と記憶素子と外部Ｉ／Ｆの少なくとも１つと、前記動作レベル記述から前記レジスタ転送レベル記述を生成するための合成ルールを定義している請求項１に記載の高位合成方法。
【請求項４】
前記演算器が、排他的な複数の機能を持ち、前記演算器を有する前記機能ユニットは、前記動作レベル記述における複数個所と対応可能である請求項３に記載の高位合成方法。
【請求項５】
前記記憶素子が、メモリ、レジスタファイル、ＦＩＦＯレジスタのいずれか１つである請求項３に記載の高位合成方法。
【請求項６】
前記外部Ｉ／Ｆが、ハンドシェークなし、片方向ハンドシェーク、双方向ハンドシェークのいずれか１つである請求項３に記載の高位合成方法。
【請求項７】
前記合成ルールには、前記レジスタ転送レベル記述において生成する回路の制御方式が定義されている請求項３に記載の高位合成方法。
【請求項８】
前記合成ルールに定義されている前記制御方式が、逐次処理、パイプライン処理、制御なしのいずれか１つである請求項７に記載の高位合成方法。
【請求項９】
前記動作レベル記述から前記レジスタ転送レベル記述を生成する方法が、前記動作レベル記述を部分動作レベル記述に分割するステップと、前記部分動作レベル記述を前記データパステンプレート中の前記機能ユニットに対応付けるステップと、前記部分動作レベル記述から前記レジスタ転送レベル記述を生成するステップとで行う請求項１に記載の高位合成方法。
【請求項１０】
同時に実行されない複数の動作毎に前記動作レベル記述を部分動作レベル記述に分割するステップと、前記部分動作レベル記述を前記データパステンプレート中の前記機能ユニットと対応付けるステップと、前記機能ユニットに対応付けられた前記部分動作レベル記述が複数の場合に、複数の前記部分動作レベル記述を１つの部分動作レベル記述に結合するステップと、結合された前記部分動作レベル記述から前記レジスタ転送レベル記述を生成するステップとで行う請求項２に記載の高位合成方法。
【請求項１１】
複数の前記データパステンプレートが登録されているデータパステンプレートライブラリから、処理サイクル数、面積、消費電力の少なくとも１つを指標として、１つの前記データパステンプレートを選択するステップにより、参照される前記データパステンプレートが決定される請求項１に記載の高位合成方法。
【請求項１２】
回路のレジスタ転送レベルでの生成方法を定義した機能ユニットと前記機能ユニット間の信号の接続関係とを定義したデータパステンプレートが予め登録されたデータパステンプレートライブラリから１つの前記データパステンプレートを選択する手段と、動作レベル記述を入力する手段と、前記データパステンプレートと入力された前記動作レベル記述からレジスタ転送レベル記述を生成する手段とを備えている高位合成システム。
【請求項１３】
前記レジスタ転送レベル記述を生成する手段が、入力された前記動作レベル記述を部分動作レベル記述に分割する手段と、前記部分動作レベル記述を前記機能ユニットと対応付ける手段と、前記部分動作レベル記述から前記レジスタ転送レベル記述を生成する手段とを備えている請求項１２に記載の高位合成システム。
【請求項１４】
前記機能ユニットに対応付けられた前記部分動作レベル記述が複数の場合に、１つの部分動作レベル記述に結合する手段を備えている請求項１３に記載の高位合成システム。
【請求項１５】
ユーザが新たな前記データパステンプレートを前記データパステンプレートライブラリに登録する手段を備えている請求項１２に記載の高位合成システム。
【請求項１６】
前記動作レベル記述を表示する動作レベルデータ表示手段と、選択された前記データパステンプレートを表示するデータパステンプレート表示手段とを備え、前記動作レベルデータ表示手段において前記部分動作レベル記述を選択し、前記データパステンプレート表示手段において前記機能ユニットを選択し、選択された前記部分動作レベル記述と選択された前記機能ユニットを対応付ける請求項１３に記載の高位合成システム。
【請求項１７】
選択された前記データパステンプレートを表示するデータパステンプレート表示手段と、生成された前記レジスタ転送レベル記述を表示するレジスタ転送レベルデータ表示手段とを備え、前記データパステンプレート表示手段において前記機能ユニットが選択された場合に、前記レジスタ転送レベルデータ表示手段において、選択された前記機能ユニットに対応する前記レジスタ転送レベル記述の部分記述を強調表示する請求項１２に記載の高位合成システム。
【請求項１８】
生成された前記レジスタ転送レベル記述のシミュレーション結果を入力する手段と、指定された時刻における前記機能ユニットの動作を表示するデータパステンプレート表示手段とを備えている請求項１２に記載の高位合成システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、回路の動作レベル記述を入力としてレジスタ転送レベル記述を出力する高位合成方法および高位合成システムに関する。
【背景技術】
【０００２】
社会の高度情報化とそれを支える情報技術の進展に伴い、電子機器における情報処理機能は飛躍的に増大している。これらの電子機器では、情報処理機能を実現するために、大規模集積回路が中心的な役割を果たしている。大規模集積回路をより少ない作業で短期間に設計するための設計技術として、より抽象性を高めた高位レベルの設計情報から、ソフトウェア支援による回路合成を行う技術の研究開発が進められている。回路合成技術の１つとして、動作レベル記述からレジスタ転送レベル記述を生成する高位合成技術が非特許文献１等で提案されている。動作レベル記述では、回路の入力から出力までの処理内容だけが定義され、処理にかかる時間（サイクル数）までは定義されていない。一方、レジスタ転送レベル記述では、回路のレジスタが確定しているため、処理にかかる時間（サイクル数）までが定義されている。従来の高位合成技術では、Ｃ／Ｃ＋＋等の高級言語で記述された動作レベル記述から、図１６に示した構成のレジスタ転送レベル回路を生成する。
【０００３】
図１６において、ａ１，ａ２は演算器または記憶素子であるハードウェア（ＨＷ）リソース、ａ３はＮ入力Ｎ出力のスイッチボックス、ａ４，ａ５はスイッチボックスａ３からハードウェアリソースａ１，ａ２への信号線、ａ６，ａ７は、ハードウェアリソースａ１，ａ２からスイッチボックスａ３への信号線、ａ８はスイッチボックスａ３を制御する有限状態マシン、ａ９は有限状態マシンａ８とスイッチボックスａ３間を接続する信号線を表している。スイッチボックスａ３はハードウェアリソースａ１，ａ２間の接続網を形成しており、有限状態マシンａ８からの信号に応じて、有効となる経路が決定される。
【０００４】
従来の高位合成技術では、動作レベル記述内の各演算の実行ステートを決定（スケジューリング）し、その後、異なるステートで実行される演算を同一のハードウェアリソースに割り付け（共有化）し、最後に、ハードウェアリソース間の接続網をスイッチボックスとして生成し、そのスイッチボックスを制御する制御回路を生成することとで、図１６に示したようなレジスタ転送レベル回路を生成する。
【０００５】
生成されたレジスタ転送レベル回路の接続網は、スケジューリング、共有化の最適化手法で決定される。共有化等の最適化の探索について、接続網の複雑さを考慮せずに回路性能や面積を改善することを考えると、生成される接続網は非常に複雑になる可能性がある。そのため、高位合成技術のユーザが、生成されたレジスタ転送レベル回路を把握することが困難になる場合が多い。その結果、生成されたレジスタ転送レベル回路が所望の性能や面積が得られない場合に、原因の追究が非常に困難になり、解析時間増加による設計期間の増大化を招いたり、所望のレジスタ転送レベル回路を得られなかったりする。
【０００６】
さらに、従来の高位合成技術では、図１６の回路構成しか生成できないために、そもそも、同回路構成で所望の性能や面積を実現できる動作レベル記述の場合にしか高位合成技術は適用できなかった。
【０００７】
非特許文献２等で開示されているような、動作レベル記述内の複数の演算を一度に実行できるハードウェアリソース（複合演算リソース）を定義することで必要となるハードウェアリソース数が少なくなるために、副次的に、生成されるレジスタ転送レベル回路の接続網の複雑さが多少緩和される場合がある。
【０００８】
特許文献１に開示されている方法では、ＩＰ（Intellectual Property）として登録されたプロセッサやメモリや専用の処理をするハードウェア（専用ハード）から任意のＩＰを選択し、選択したＩＰ間の接続をテンプレートとして定義することが可能である。同方法で、専用ハードのＩＰのみを選択すれば、図１６以外の回路構成を生成することが可能である。
【特許文献１】特開２００１−２０２３９７号公報
【非特許文献１】Giovanni De Micheli著「デジタル回路における合成と最適化（Synthesis and Optimization of Digital Circuits）」、（発行国：米国）、McgrawHill Series in Eletrical and Computer Engineering、１９９４年
【非特許文献２】貞方、松永、“複合演算を考慮した動作合成方法”、ＤＡシンポジウム２００４
【発明の開示】
【発明が解決しようとする課題】
【０００９】
しかし、複合演算リソースを用いた方法では、最適化の結果として接続網が決定されることには変わりなく、回路の複雑さを本質的に緩和することは期待できない。また、ＩＰを用いた方法では、個々の専用ハードは、従来の高位合成技術により生成することを前提としているために、個々の専用ハードは、図１６の回路構成、すなわち、複雑な接続網を持った回路構成となることには変わりない。
【００１０】
これら従来の方法は、入力となる動作モデルの複雑度が増すにつれて、ハードウェアリソースの接続網の複雑さは大きくなる。よって、同時に実行されない動作が複数存在するような複雑な動作モデルを入力とする場合は、より一層複雑な接続網を有したレジスタ転送レベル回路が生成される。
【００１１】
本発明は、このような事情に鑑みて創作したものであり、回路解析においてユーザが把握しやすい構成のレジスタ転送レベル回路を生成でき、また、従来の高位合成方法では対応がむずかしいとされていた様々な性能を実現するレジスタ転送レベル回路を生成できるようにすることを目的としている。
【課題を解決するための手段】
【００１２】
本発明の高位合成方法は、回路のレジスタ転送レベルでの生成方法（実装方法）を定義した機能ユニットと前記機能ユニット間の信号の接続関係を定義したデータパステンプレートを参照し、動作レベル記述からレジスタ転送レベル記述を生成する。
【００１３】
動作レベル記述としては、同時に実行されない複数の動作が記述されていてもよい。
【００１４】
また、機能ユニットは、レジスタ転送レベルの実装である演算器と記憶素子と外部Ｉ／Ｆ（Interface）の少なくとも１つと、動作レベル記述からレジスタ転送レベル記述を生成するための合成ルールを定義していてもよい。
【００１５】
また、機能ユニットは、動作レベル記述内の複数の部分動作レベル記述と対応付け可能な排他的な複数の機能を持つ演算器を有してもよい。
【００１６】
また、記憶素子は、メモリ、レジスタグループ（レジスタファイル）、ＦＩＦＯ(First-in-First-out)レジスタのいずれか１つであってもよい。
【００１７】
また、外部Ｉ／Ｆは、ハンドシェークなし（同期なし）、片方向ハンドシェーク、双方向ハンドシェークのいずれか１つであってもよい。
【００１８】
また、合成ルールには、レジスタ転送レベル記述において生成する回路の制御方式が定義されていてもよい。
【００１９】
また、合成ルールに定義されている制御方式は、逐次処理、パイプライン処理、制御なし、のいずれか１つであってもよい。
【００２０】
回路のレジスタ転送レベルでの生成方法（実装方法）を定義した機能ユニットと前記機能ユニット間の信号の接続関係を定義したデータパステンプレートを参照し、動作レベル記述からレジスタ転送レベル記述を生成する場合、動作レベル記述を部分動作レベル記述に分割するステップと、部分動作レベル記述をデータパステンプレート中の機能ユニットに対応付けるステップと、機能ユニット毎に部分動作レベル記述からレジスタ転送レベル記述を生成するステップとを備えていてもよい。
【００２１】
また、回路のレジスタ転送レベルでの生成方法（実装方法）を定義した機能ユニットと前記機能ユニット間の信号の接続関係を定義したデータパステンプレートを参照し、同時に実行されない複数の動作を含む動作レベル記述からレジスタ転送レベル記述を生成する場合、同時に実行されない動作毎に動作レベル記述を部分動作レベル記述に分割するステップと、部分動作レベル記述をデータパステンプレート中の機能ユニットと対応付けるステップと、機能ユニットに対応付けられた部分動作レベル記述が複数の場合に、機能ユニット毎に複数の部分動作レベル記述を結合するステップと、機能ユニット毎に結合された部分動作レベル記述からレジスタ転送レベル記述を生成するステップとを備えていてもよい。
【００２２】
また、データパステンプレートは、複数のデータパステンプレートが登録されているデータパステンプレートライブラリから、処理サイクル数、面積、消費電力の少なくとも１つを指標として選択されるステップを備えていてもよい。
【００２３】
本発明の高位合成システムは、回路のレジスタ転送レベルでの生成方法（実装方法）を定義した機能ユニットと前記機能ユニット間の信号の接続関係を定義したデータパステンプレートが、予め登録されたデータパステンプレートライブラリから少なくとも１つのデータパステンプレートを選択する手段と、動作レベル記述を入力する手段と、前記データパステンプレートと入力された前記動作レベル記述からレジスタ転送レベル記述を生成する手段を備えている。
【００２４】
レジスタ転送レベル記述を生成する手段は、入力された前記動作レベル記述を部分動作レベル記述に分割する手段と、部分動作レベル記述をデータパステンプレート中の機能ユニットと対応付けする手段と、機能ユニット毎に部分動作レベル記述からレジスタ転送レベル記述を生成する手段を備えていてもよい。
また、機能ユニットに対応付けられた部分動作レベル記述が複数の場合に、１つの部分動作レベル記述に結合する手段を備えていてもよい。
【００２５】
また、ユーザが新たなデータパステンプレートをデータパステンプレートライブラリに登録する手段を備えていてもよい。
【００２６】
また、動作レベル記述を表示する動作レベルデータ表示手段と、選択されたデータパステンプレートを表示するデータパステンプレート表示手段とを備えるようにし、動作レベルデータ表示手段において部分動作レベル記述を選択し、データパステンプレート表示手段において機能ユニットを選択し、選択された部分動作レベル記述と選択された機能ユニットを対応付けるように構成してもよい。
【００２７】
また、選択されたデータパステンプレートを表示するデータパステンプレート表示手段と、生成されたレジスタ転送レベル記述を表示するレジスタ転送レベルデータ表示手段とを備えるようにし、データパステンプレート表示手段において機能ユニットが選択された場合に、レジスタ転送レベルデータ表示手段において、選択された機能ユニットに対応するレジスタ転送レベル記述の部分記述を強調表示（ハイライト表示）するように構成してもよい。
【００２８】
また、生成したレジスタ転送レベル記述のシミュレーション結果を入力する手段と、指定された時刻における機能ユニットの動作を表示するデータパステンプレート表示手段を備えていてもよい。
【発明の効果】
【００２９】
本発明の高位合成方法では、
１）ユーザがデータパステンプレートでレジスタ転送レベルの回路構成を定義することで、ユーザが把握しやすい構成のレジスタ転送レベル回路が生成できる。その結果、生成されたレジスタ転送レベル回路の解析容易性が向上し、短期間で、ユーザが意図した性能（処理能力や面積）を持ったレジスタ転送レベル回路を得ることができる。
【００３０】
２）また、データパステンプレートを与えることで、従来の高位合成方法と異なる様々な構成のレジスタ転送レベル回路を生成することができる。そのため、従来の高位合成方法では、所望の性能を実現するレジスタ転送レベル回路を生成できないような動作モデルにおいても適用可能となる。
【００３１】
さらに、本発明の高位合成システムでは、前記効果に加え、
３）表示手段が動作モデル、データパステンプレート、回路との関係を表示するので、回路解析の容易性が一層高まる。
【００３２】
４）回路構成をライブラリとして登録することで、過去の回路資産を再利用することができる。
【発明を実施するための最良の形態】
【００３３】
以下、本発明にかかわる高位合成方法、高位合成システムの実施の形態を図面に基づいて詳細に説明する。
【００３４】
（実施の形態１）
図１は、本発明の上記の実施の形態１における高位合成方法の処理順序を示したフローチャートである。この高位合成方法は、入力された動作レベル記述ファイルから動作レベルデータを生成する動作レベルデータ生成ステップＳ１と、データパステンプレートを選択するデータパステンプレート選択ステップＳ２と、動作レベルデータを任意の動作単位データに分割する分割ステップＳ３と、分割された動作単位データとデータパステンプレート内の機能ユニットとを対応付ける対応付けステップＳ４と、同一の機能ユニットに対応付けられた、分割された動作単位データを結合する結合ステップＳ５と、機能ユニットに定義された合成ルールに従い、機能ユニット毎に結合された動作レベルデータからＲＴＬデータを生成するＲＴＬ生成ステップＳ６から構成されている（ＲＴＬ：Register Transfer Level）。
【００３５】
図２は、本発明の実施の形態１における高位合成システムＡ１の構成を示す。この高位合成システムＡ１は、動作レベル記述ファイルＦ１を入力し、動作レベルデータＤ１を生成する動作レベル記述ファイル入力手段１と、動作レベルデータＤ１を動作単位データＤ２に分割する動作レベル分割手段２と、動作単位データＤ２とデータパステンプレートＴＰ内の機能ユニットとを対応付け、動作単位と機能ユニットの対応表ＴＢを生成する対応付け手段５と、同一の機能ユニットに対応付けられた複数の動作単位データＤ２を結合する動作単位データ結合手段６と、結合された動作レベルデータＤ３からＲＴＬデータＤ４を生成するＲＴＬ生成手段７と、ＲＴＬ記述ファイルＦ３を出力するＲＴＬ記述ファイル出力手段８と、データパステンプレートＴＰが格納されているデータパステンプレートライブラリＬ１と、データパステンプレートライブラリＬ１にデータパステンプレートファイルＦ２を登録するデータパステンプレート登録手段３と、データパステンプレートライブラリＬ１から高位合成に使用する１つのデータパステンプレートＴＰを選択するデータパステンプレート選択手段４とから構成されている。
【００３６】
動作レベル記述ファイルＦ１は、高位合成の対象となる回路を動作レベルで記述したファイルであり、Ｃ言語等の手続き型言語によって記述されている。
【００３７】
動作レベル記述ファイル入力手段１は、動作レベル記述ファイルＦ１を読み込み、動作レベルデータＤ１を生成する。動作レベルデータＤ１は、動作レベル記述ファイルＦ１に記述された関数の区切りが分かるデータ構造であり、また、関数内の文に関しては、文間の関係を木構造で表現したデータである。なお、動作レベルデータＤ１は、動作レベル記述ファイルＦ１の記述内容と１対１の対応関係を有する。
【００３８】
動作レベル分割手段２では、動作レベルデータＤ１をユーザによって指定された部分に分割し、あるいは使用するデータパステンプレートＴＰに従って自動的に抽出した部分に分割し、動作単位データＤ２を生成する。動作単位データＤ２は、動作単位を関数として表現したデータである。したがって、指定された部分が関数である場合は、動作レベルデータＤ１の対応する関数と同一のデータとして生成される。一方、指定された部分が文である場合は、分割の際に、動作レベルデータＤ１内の指定された文を根とする木構造が抽出され、抽出された木構造のみを含む関数として生成される。ここで、動作単位データＤ２は、入力である動作レベル記述ファイルＦ１における部分を表現したものであり、動作レベル記述ファイルＦ１における部分動作レベル記述とみなすことができる。
【００３９】
対応付け手段５では、動作単位データＤ２内の関数とデータパステンプレートＴＰ内の機能ユニットとの対応表ＴＢを生成する。機能ユニットと関数は１対多の関係であり、関数で示されている処理がその機能ユニットで実施されることを意味している。１つの機能ユニットに対し、複数の関数が対応付けられている場合は、それらの関数で示されている処理は同時に実施されることがないことを意味している。機能ユニットと関数の対応関係は、ユーザによって指定されるか、あるいは自動的に生成される。
【００４０】
動作単位データ結合手段６は、対応表ＴＢで１つの機能ユニットに対して、２つ以上の関数が対応付けられている場合は、それらの関数で示されている処理内容を分岐処理によって結合した処理をする１つの関数に変換して結合動作レベルデータＤ３を生成する。結合動作レベルデータＤ３は、１つの機能ユニットに対応する関数が１つの場合は、動作単位データＤ２の関数と同一のデータとして生成され、２つ以上の場合は、結合処理によって新たに生成された関数のデータとして生成される。結合動作レベルデータＤ３は、動作単位を関数として表現されたデータであり、かつ、関数は機能ユニットと１対１の関係を持つ。以上のようにして、１対多の関係から１対１の関係へと変換する。
【００４１】
ＲＴＬ生成手段７は、データパステンプレートＴＰの機能ユニットに記述されている合成ルールに従い、結合動作レベルデータＤ３からＲＴＬデータＤ４を生成する。
【００４２】
ＲＴＬ記述ファイル出力手段８は、ＲＴＬデータＤ４をＶｅｒｉｌｏｇ言語等のハードウェア記述言語によって記述されたＲＴＬ記述ファイルＦ３として出力する。
【００４３】
データパステンプレート登録手段３は、データパステンプレートファイルＦ２をデータパステンプレートライブラリＬ１に登録する。
【００４４】
データパステンプレート選択手段４は、データパステンプレートライブラリＬ１において、動作レベル記述ファイルＦ１からＲＴＬデータＤ４を合成するために使用する１つのデータパステンプレートＴＰを選択する。
【００４５】
データパステンプレートファイルＦ２には、機能ユニットと機能ユニット間の信号の接続と性能パラメータが記述されている。
【００４６】
性能パラメータは、データパステンプレートＴＰを使用した際に生成される回路の処理サイクル数、面積、消費電力を算出するパラメータとして記述されている。
【００４７】
機能ユニットには、機能ユニットに対応する動作単位データＤ２内の関数からＲＴＬデータＤ４を生成するために必要な、リソースと１つの制御方式とが記述されている。
【００４８】
リソースとしては、予め定義されている記憶リソースと演算リソースと外部Ｉ／Ｆリソースとの３種類がある。
【００４９】
記憶リソースは、レジスタファイルリソース、メモリリソース、ＦＩＦＯリソースの４種類があり、必要なリソース個数分を機能ユニットに記述する。
【００５０】
演算リソースは、加算器や乗算器等の動作レベルデータＤ３での演算子に対応する基本演算器を組み合わせて記述する。例えば、入力となる動作レベル記述がＣ言語で記述されている場合は、Ｃ言語で定義されている演算子と１対１となる演算器が基本演算器と予め定義される。
【００５１】
さらに演算リソースは、排他的な演算を複数記述することができ、その場合には、制御信号と制御信号値毎の演算内容を記述する。
【００５２】
外部Ｉ／Ｆリソースは、合成対象となる動作レベル記述の外部とのプロトコルの信号を生成するリソースであり、予め定義されているハンドシェークなし、片方向ハンドシェーク、双方向ハンドシェークから選択して記述する。
【００５３】
制御方式は、予め定義されている逐次処理、パイプライン処理、制御なしから１つを選択して記述する。
【００５４】
次に、図面を用いてデータパステンプレートファイルＦ２の記述例を説明する。
【００５５】
図３は、データパステンプレートファイルＦ２の一例であり、データパステンプレートファイルＦ２′には、機能ユニットｅ１と機能ユニット間の信号の接続ｅ２と性能パラメータｅ３を記述する。機能ユニットｅ１には複数の機能ユニットが記述でき、機能ユニット間の接続ｅ２として、信号の接続を記述する。各機能ユニットには複数のリソースを記述でき、ここでは機能ユニットＵ１には複数の演算が行える演算器リソースＲ１が記述され、機能ユニットＵ２にはメモリリソースＲ２が記述されている。また、制御方式として機能ユニットＵ１は制御なし、機能ユニットＵ２はパイプライン処理、機能ユニットＵ３は逐次処理として記述されている。
【００５６】
次に、本発明の実施の形態１である、データパステンプレートを用いた高位合成方法について、図１、図２を用いて、図４に示した動作レベル記述を入力とした場合を説明する。
【００５７】
図４は、Ｃ言語を使用して回路の動作が記述されており、動作レベル記述ファイルＦ１１，Ｆ１２は、同時には実行されない別々の動作である。同時に実行されない動作とは、１つの回路で全ての動作を行えるが、１回の処理では１つの動作だけしか実行しないことを意味する。例えば、画像コーデック処理を行う回路で、ＭＰＥＧ２やＭＰＥＧ４といった複数の規格に対応する回路のとき、動作レベル記述は規格毎に動作レベル記述があり、ＭＰＥＧ２の動作レベル記述とＭＰＥＧ４の動作レベル記述は、同時に実行されない動作レベル記述となる。この場合、生成されるＲＴＬ記述が示す回路は、１回の処理では１つの規格の画像コーデック処理しか行えない回路となる。
【００５８】
図１のフローチャートの処理に入る前に、準備として、データパステンプレート登録手段３をより、データパステンプレートファイルＦ２をデータパステンプレートライブラリＬ１に登録する。ここでは、データパステンプレートファイルＦ２として、データパステンプレートファイルＦ２′が登録され、後のステップで同データパステンプレートが選択されるとして説明を行う。
【００５９】
最初に、動作レベルデータ生成ステップＳ１において、動作レベル記述ファイル入力手段１により、入力された動作レベル記述ファイルＦ１１，Ｆ１２から、動作レベルデータＤ１を生成する。
【００６０】
データパステンプレートファイルＦ２′には、３つの機能ユニットＵ１，Ｕ２，Ｕ３が記述されている。また、機能ユニットＵ１には演算リソースＲ１が使用可能であることが記述され、機能ユニットＵ２にはメモリリソースＲ２が使用可能であることが記述されている。また、演算リソースＲ１は、制御信号ｍｏｄｅに排他的な３つの演算が可能であることが記述されている。
【００６１】
次に、データパステンプレート選択ステップＳ２において、データパステンプレート選択手段４により、データパステンプレートライブラリＬ１から、合成に使用する１つのデータパステンプレートＴＰが選択される。ここでは、先に説明したように、ユーザによりデータパステンプレートファイルＦ２′が選択されたものとして、以下を説明する。
【００６２】
次に、分割ステップＳ３において、動作レベル分割手段２により、動作レベルデータＤ１内から、ユーザにより指定された部分毎に動作単位データＤ２が生成される。これは、動作レベルデータＤ１をデータパステンプレートＴＰにある機能ユニットと対応付けるための前処理である。なお、ユーザが指定する以外に、パターンマッチング等の技術を用いることで、データパステンプレートＴＰ内のリソースを動作レベルデータＤ１から抽出し、自動的に動作単位データＤ２を生成することも可能である。データパステンプレートファイルＦ２′では、機能ユニットＵ１内のリソースＲ１の演算を動作レベルデータ内から探し出すこととなる。
【００６３】
図５は、動作単位データＤ２を模式的に表現したものであり、動作単位データＤ２′は、ユーザにより指定された部分毎に関数の形態で格納されている。
【００６４】
次に、対応付けステップＳ４において、対応付け手段５により、データパステンプレートＴＰ内の機能ユニットと動作単位データＤ２内の関数との対応付けが行われ、対応表ＴＢが生成される。
【００６５】
図６は、データパステンプレートファイルＦ２′と動作単位データＤ２′とを入力とした場合における対応表ＴＢ′であり、動作単位データＤ２′内の全ての関数に対して、機能ユニットとの対応付けが行われている。
【００６６】
なお、分割ステップＳ３において自動的に動作単位データＤ２の生成を行った場合は、対応付けも自動的に実施される。なぜなら、データパステンプレートＴＰ内のリソースに基づいて、動作単位データＤ２が生成されているため、動作単位データはすでに、機能ユニットとの対応は取れているからである。
【００６７】
動作レベルデータＤ１が同時に実行されない複数の動作レベル記述である場合は、対応付けステップＳ４までは、同時に実行されない動作レベル記述毎に処理される。
【００６８】
次に、結合ステップＳ５において、動作単位データ結合手段６により、同一の機能ユニットと対応付けられている関数が結合され、結合動作レベルデータＤ３が生成される。
【００６９】
図７は、結合動作レベルデータＤ３を模式的に表現したものであり、動作単位データＤ２′と対応表ＴＢ′とを入力とした場合における結合動作レベルデータＤ３１であり、機能ユニット毎に関数の形態で格納されている。関数Ｕ１は、動作単位データＤ２′における関数func1_p2、func2_p3、func2_p4が結合された結果生成された関数である。他の関数Ｕ２、Ｕ３についても同様である。
【００７０】
また、結合動作レベルデータＤ３においては、演算器リソースが排他的な複数の演算が行える場合は、リソースを使用する形態のデータとして格納される。例えば、機能ユニットＵ１に対応する関数Ｕ１は、結合動作レベルデータＤ３１の排他的な複数の演算が行えるリソースＲ１をもつ機能ユニットであるため、結合動作レベルデータＤ３２で示されるような、リソースＲ１を使用した形態のデータとして格納される。
【００７１】
分割ステップＳ３、結合ステップＳ５をユーザの指定によって実施した場合は、結合動作レベルデータＤ３１の関数Ｕ１からデータフローグラフを生成し、データフローグラフにおいてリソースＲ１に記述されている演算内容と一致する箇所をパターンマッチング等の技術を利用して抽出し、リソースＲ１を使用したデータフローグラフに変換することで、目的の結合動作レベルデータＤ３２を生成する。なお、分割ステップＳ３において自動的に動作単位データＤ２を生成した場合は、すでに、リソースとの対応が取れているので、容易に結合動作レベルデータＤ３２を生成できることは言うまでもない。
【００７２】
次に、ＲＴＬ生成ステップＳ６において、ＲＴＬ生成手段７により、結合動作レベルデータＤ３からデータパステンプレートＴＰ内の機能ユニット内の制御方式の指定に基づいて、ＲＴＬデータＤ４が合成され、ＲＴＬデータＤ４とハードウェア記述言語で記述したＲＴＬ記述ファイルＦ３が生成される。
【００７３】
図８は、結合動作レベルデータＤ３１から、データパステンプレートファイルＦ２′のルールに従って生成したＲＴＬ記述ファイルＦ３′の一部であり、データパステンプレートファイルＦ２′に記述されている機能ユニット毎にモジュールとして生成され、機能ユニットで使用するリソースと記述したリソースＲ１，Ｒ２を使用したＲＴＬ記述が生成される。
【００７４】
以上のように、動作レベル記述ファイルＦ１から、データパステンプレートＴＰに指定された回路構成を有するＲＴＬ記述ファイルＦ３を生成することができるため、ユーザは、従来の高位合成で生成不可能な任意の回路構成、且つ、把握し易い回路構成を有するＲＴＬ記述ファイルＦ３を短期間に得ることができる。一度の合成で、所望の性能が実現しなかった場合でも、ユーザが把握し易いＲＴＬ記述ファイルＦ３が生成されているので、問題点の解析が容易あり、使用するデータパステンプレートファイルＦ２の変更、あるいは、部分的な修正等により、短期間に所望の性能を有するＲＴＬ記述ファイルＦ３を生成することができる。また、同時に実行されることがない複数の動作レベル記述ファイルＦ１においてもデータパステンプレートＴＰに指定された回路構成を有するＲＴＬ記述ファイルＦ３を生成することができ、入力する動作レベル記述ファイルＦ１が複雑になった場合でも同様の効果が得られる。
【００７５】
さらに、本実施の形態では、データパステンプレートを新たに登録し、同データパステンプレートを使用する場合を説明したが、過去に登録されたデータパステンプレートをそのまま、あるいは、一部編集して利用することも可能であり、データパステンプレートの再利用が可能である。
【００７６】
なお、本実施の形態では、同時に実行されることがない複数の動作レベル記述ファイルを使用する場合を説明したが、１つの動作レベル記述ファイルを使用した場合においても、同様の効果があることは言うまでもない。
【００７７】
（実施の形態２）
図９は、上記実施の形態１におけるデータパステンプレート選択ステップＳ２の詳細な処理順序を示した図である。なお、データパステンプレート選択ステップＳ２以外は、実施の形態１と同一であるために、説明は省略する。
【００７８】
ユーザが合成したいレジスタ転送レベル回路の性能に対する制約値と処理サイクル数、面積、消費電力の指標の優先順位を指定するステップＳ１１と、入力された動作レベル記述ファイルＦ１に対する動作レベルデータＤ１を解析し、演算子数、ビット幅を求めるステップＳ１２と、データパステンプレートライブラリＬ１に登録されている全てのデータパステンプレートＴＰに対して、解析ステップＳ１２で求めた演算子数、ビット幅とデータパステンプレートＴＰに記述されている性能パラメータとから、処理サイクル数、面積、消費電力を算出するステップＳ１３と、算出ステップＳ１３で算出した処理サイクル数、面積、消費電力と制約指定ステップＳ１１で与えられた制約値とを比較し、制約を満たすデータパステンプレートＴＰのうち、ステップＳ１１で指定された優先順に指標が最小となるデータパステンプレートＴＰを１つ選択するステップＳ１４を経て、合成に使用するデータパステンプレートＴＰを選択する。
【００７９】
最初の性能制約指定ステップＳ１１で、ユーザにより、制約値として、処理サイクルは「２０」、面積は「５０」、消費電力は「制約なし」と指定され、さらに指標の優先順位が、「消費電力＞面積＞処理サイクル数」という順序で指定されたとする。
【００８０】
動作レベルデータ解析ステップＳ１２で動作レベルデータＤ１を解析し、その結果、乗算の回数Ｎ（ｍｕｌ）＝４、乗算のビット幅ＢＷ（ｍｕｌ）＝８が得られたとする。
【００８１】
性能算出ステップＳ１３では、データパステンプレートライブラリＬ１に登録されているデータパステンプレートＴＰ毎に、データパステンプレートＴＰに記述されている処理サイクル数、面積、消費電力の各項目について図１０に示す一覧表Ｔ１１が作成される。一覧表Ｔ１１において、Ｎ（ｍｕｌ），ＢＷ（ｍｕｌ）の記号は、先に説明したように、それぞれ、乗算の回数、乗算のビット幅を示しており、各性能値がパラメータ化されていることを示している。例えば、Ｔ３の処理サイクル数は、乗算１回当たり５サイクルということを意味している。このルールに従って、動作レベルデータ解析ステップＳ１２で得られた値を使用し、数値一覧表Ｔ１２が作成される。
【００８２】
最後のデータパステンプレート選択ステップＳ２４では、一覧表Ｔ１２と制約値を比較し、制約値を満たすデータパステンプレートＴ１，Ｔ３のうち、指標の優先順位の高い消費電力が最小となるデータパステンプレートＴ３が選択される。
【００８３】
以上説明したように、データパステンプレートライブラリＬ１から目標性能を考慮したデータパステンプレートＴＰを自動に選択することができるため、データパステンプレートライブラリＬ１に登録されている過去の設計資産が多数ある場合に、所望のレジスタ転送レベル回路を生成するためのデータパステンプレートＴＰを容易に発見することができる。なお、ここで選択されたデータパステンプレートＴＰを基に、ユーザが、より目的にあったデータパステンプレートに編集して、レジスタ転送レベル回路を生成できることは言うまでもない。
【００８４】
さらに、自動的に選択されたデータパステンプレートを用いてレジスタ転送レベル回路を生成しても、ユーザは、選択されたデータパステンプレート自体を参照することで、生成されたＲＴＬ記述を把握することが可能である。
【００８５】
（実施の形態３）
図１１は、本発明の実施の形態３における高位合成システムＡ２の構成を示した図であり、図２の高位合成システムＡ１に、入力された動作レベルデータＤ１を表示する動作レベルデータ表示手段９と、生成したＲＴＬデータＤ４を表示するＲＴＬデータ表示手段１０と、データパステンプレートＴＰを表示するデータパステンプレート表示手段１１と、生成したＲＴＬ記述ファイルＦ３を用いて動的シミュレーションを実施した結果Ｓを入力し、信号値遷移データベースＤＢを生成するシミュレーション結果入力手段１２とを追加した構成である。なお、動作レベル記述ファイル入力手段１、動作レベル分割手段２、対応付け手段５、動作単位データ結合手段６、ＲＴＬ生成手段７、ＲＴＬ記述ファイル出力手段８、データパステンプレート登録手段３、データパステンプレート選択手段４は、実施の形態１で説明した手段と同一である。
【００８６】
動作レベルデータ表示手段９は、動作レベルデータＤ１を、入力された動作レベル記述ファイルＦ１と同一の言語記述にて、テキストとして表示する。例えば、入力された動作レベル記述ファイルＦ１がＣ言語を用いて記述されている場合は、動作レベルデータ表示手段９においても、動作レベルデータＤ１がＣ言語の記述として表示される。図１２は、動作レベルデータ表示手段９での表示画面の一例である。
【００８７】
動作レベルデータ表示手段９は、表示されている動作レベルデータＤ１を文の単位で選択することができ、動作レベルデータＤ１における選択された文を根とするツリー構造に対応する部分が、動作レベルデータ表示手段９において強調表示（ハイライト表示）される。例えば、図１２の表示画面Ｐ１において４行目のｉｆ文を選択した場合は、ｉｆ文以下のツリー構造である選択範囲ｆ１が強調表示される範囲となる。
【００８８】
選択された文に対し、ユーザが分割操作を実行した場合、動作レベル分割手段２で選択された文を指定された部分として、動作レベルデータＤ１の分割を行う。
【００８９】
データパステンプレート表示手段１１は、選択されたデータパステンプレートＴＰを機能ユニットと機能ユニット間の信号接続を図形として表示する。図１３は、データパステンプレート表示手段１１での表示画面の一例であり、データパステンプレート全体を示す図形２１と、データパステンプレートＴＰ内に機能ユニットを示す図形２２，２３，２４と、機能ユニット内にリソースが記述されている場合は、機能ユニット２２，２３内にリソースを示す図形２５，２６を表示する。
動作レベルデータ表示手段９で選択されている文を、データパステンプレート表示手段１１の表示されている機能ユニットに対して、ユーザがドラッグアンドドロップ操作を実行した場合、対応付け手段５で機能ユニットと関数の対応付けが実施され、対応関係が対応表ＴＢに追加される。
【００９０】
ＲＴＬデータ表示手段１０は、生成されたＲＴＬデータＤ４を、出力するＲＴＬ記述ファイルＦ３と同一の言語記述にて、テキストとして表示する。例えば、出力するＲＴＬ記述ファイルＦ３がＶｅｒｉｌｏｇ言語を用いて記述される場合は、ＲＴＬデータ表示手段１０においても、ＲＴＬデータＤ４がＶｅｒｉｌｏｇ言語の記述として表示される。図１４は、ＲＴＬデータ表示手段１０での表示画面の一例である。
【００９１】
ＲＴＬデータ表示手段１０は、表示されているＲＴＬデータを機能ユニットもしくはリソースの単位で選択することができ、選択された機能ユニットもしくはリソースに対応する部分が、ＲＴＬデータ表示手段１０において強調表示される。また、このとき同時にデータパステンプレート表示手段１１においても、対応する機能ユニットもしくはリソースが強調表示される。
【００９２】
シミュレーション結果入力手段１２は、シミュレーション結果Ｓを入力し、データパステンプレートＴＰに記述されている全ての信号に対して、信号値の遷移情報である信号値遷移データベースＤＢを生成する。
【００９３】
データパステンプレート表示手段１１は、ユーザに指定された時刻におけるデータパステンプレートＴＰに記述されている信号の信号値を信号値遷移データベースＤＢから検索し、リソースが演算リソースである場合は、その信号値で実行される演算内容をリソースの図形内に表示する。
【００９４】
例えば、図１５で示されるように、データパステンプレートＴＰにリソースＲ１が記述され、時刻１が指定された場合、信号値遷移データベースＤＢに格納されている値から、時刻１における信号ｍｏｄｅの値として「０」が得られ、データパステンプレート表示手段１１の表示画面内には、リソースＲ１の図形２５に、信号ｍｏｄｅ＝０の場合の演算内容である“Ｙ＝Ａ＋Ｂ”が表示される。
【００９５】
以上説明したように、本実施の形態３では、動作レベルデータＤ１を表示し、表示された動作レベルデータＤ１上で分割する部分を指定し、機能ユニットとの対応を指定することで、ユーザが指定する作業負担を軽減することができる。
【００９６】
また、ＲＴＬデータＤ４を表示し、データパステンプレートＴＰとの対応関係を表示することで、出力されたＲＴＬ記述の回路の解析を一層容易にすることができる。
【００９７】
また、シミュレーション結果Ｓから信号値を解析し、指定の時刻におけるリソースの動作を示すことで、回路の解析をさらに一層容易にすることができる。
【産業上の利用可能性】
【００９８】
本発明の高位合成方法および高位合成システムは、ユーザが指定したデータパステンプレートと同様の回路構成を持つＲＴＬ記述を生成するため、所望の性能を持ち、且つ、ユーザが把握しやすい構成のＲＴＬ記述を生成できる特徴を有しているので、大規模集積回路の設計に広く利用することができる。
【図面の簡単な説明】
【００９９】
【図１】本発明の実施の形態１における高位合成方法のフローチャート
【図２】本発明の実施の形態１における高位合成システムの構成図
【図３】データパステンプレートファイルの記述例
【図４】動作レベル記述ファイルの記述例
【図５】動作単位データのデータ構造例
【図６】動作単位データとデータパステンプレートの対応表例
【図７】結合動作レベルデータのデータ構造例
【図８】ＲＴＬ記述ファイルの記述例
【図９】本発明の実施の形態２におけるデータパステンプレート選択方法のフローチャート
【図１０】本発明の実施の形態２における性能パラメータ算出例
【図１１】本発明の実施の形態３における高位合成システムの構成図
【図１２】動作レベルデータ表示手段の表示例
【図１３】データパステンプレート表示手段の表示例
【図１４】ＲＴＬ表示手段の表示例
【図１５】データパステンプレート表示手段の表示例
【図１６】従来技術での高位合成技術で生成される回路構成
【符号の説明】
【０１００】
１  動作レベル記述ファイル入力手段
２  動作レベル分割手段
３  データパステンプレート登録手段
４  データパステンプレート選択手段
５  動作単位データとデータパステンプレートの対応付け手段
６  動作単位データ結合手段
７  ＲＴＬ生成手段
８  ＲＴＬ記述ファイル出力手段
９  動作レベルデータ表示手段
１０  ＲＴＬデータ表示手段
１１  データパステンプレート表示手段
１２  シミュレーション結果入力手段
Ａ１，Ａ２  高位合成システム
Ｄ１  動作レベルデータ
Ｄ２  動作単位データ
Ｄ３  結合された動作レベルデータ
Ｄ４  ＲＴＬデータ
ＤＢ  信号値遷移データベース
Ｆ１  動作レベル記述ファイル
Ｆ２  データパステンプレートファイル
Ｆ３  ＲＴＬ記述ファイル
Ｌ１  データパステンプレートライブラリ
Ｓ  シミュレーション結果ファイル
Ｓ１  動作レベルデータ生成ステップ
Ｓ２  データパステンプレートの選択ステップ
Ｓ３  動作レベルデータの分割ステップ
Ｓ４  動作単位データとデータパステンプレートの対応付けステップ
Ｓ５  動作単位データの結合ステップ
Ｓ６  ＲＴＬデータの生成ステップ
Ｓ１１  性能制約指定ステップ
Ｓ１２  動作レベルデータ解析ステップ
Ｓ１３  性能算出ステップ
Ｓ１４  データパステンプレート選択ステップ
ＴＢ  動作単位データとデータパステンプレートの対応表
ＴＰ  合成に使用するデータパステンプレート 
【図１】
2007287088.tif 000003
【図２】
2007287088.tif 000004
【図３】
2007287088.tif 000005
【図４】
2007287088.tif 000006
【図５】
2007287088.tif 000007
【図６】
2007287088.tif 000008
【図７】
2007287088.tif 000009
【図８】
2007287088.tif 000010
【図９】
2007287088.tif 000011
【図１０】
2007287088.tif 000012
【図１１】
2007287088.tif 000013
【図１２】
2007287088.tif 000014
【図１３】
2007287088.tif 000015
【図１４】
2007287088.tif 000016
【図１５】
2007287088.tif 000017
【図１６】
2007287088.tif 000018