JP5110206B2 - 動作合成装置、動作合成方法、ならびに、プログラム - Google Patents

動作合成装置、動作合成方法、ならびに、プログラム Download PDF

Info

Publication number
JP5110206B2
JP5110206B2 JP2011522765A JP2011522765A JP5110206B2 JP 5110206 B2 JP5110206 B2 JP 5110206B2 JP 2011522765 A JP2011522765 A JP 2011522765A JP 2011522765 A JP2011522765 A JP 2011522765A JP 5110206 B2 JP5110206 B2 JP 5110206B2
Authority
JP
Japan
Prior art keywords
level description
loop structure
intermediate level
specified
simulation
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.)
Expired - Fee Related
Application number
JP2011522765A
Other languages
English (en)
Other versions
JPWO2011007640A1 (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.)
NEC Corp
Original Assignee
NEC Corp
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 NEC Corp filed Critical NEC Corp
Priority to JP2011522765A priority Critical patent/JP5110206B2/ja
Application granted granted Critical
Publication of JP5110206B2 publication Critical patent/JP5110206B2/ja
Publication of JPWO2011007640A1 publication Critical patent/JPWO2011007640A1/ja
Expired - Fee Related 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Evolutionary Computation (AREA)
  • Geometry (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Design And Manufacture Of Integrated Circuits (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Description

本発明は、動作レベル記述により表される回路の性能を速やかに取得するのに好適な動作合成装置、動作合成方法、ならびに、これらをコンビュータ上で実現するためのプログラムに関する。
所望のシステムの回路機能の全てを1つのチップで実現するLSI(Large Scale Integration)が知られている。このようなLSIは、システムLSIあるいはSOC(System On Chip)と呼ばれる。近年、半導体製造技術の向上に伴って、システムLSIに集積できるゲート数が飛躍的に増加し、システムLSIの処理能力も飛躍的に向上している。このため、システムLSIは、画像処理、暗号化処理、復号処理、および、フィルタ処理など多彩な処理に用いられている。
一般に、システムLSIの設計にあたっては、LSI設計を自動的に行う、もしくは、LSI設計を支援する、LSI設計自動化・支援技術が採用される。このLSI設計自動化・支援技術を採用した設計のうち、代表的なものとして、EDA(Electronic Design Automation)ツールを利用したトップダウン設計があげられる。このトップダウン設計の各工程は、上流工程から順に、システム設計、機能設計、論理設計、レイアウト設計と大別することができる。以下に、トップダウン設計について具体的に説明する。
トップダウン設計は、まず、システム仕様の作成工程から始まる。この工程では、例えば、設計者が、所定の記述言語を用いて、システムの動作を記述する。この工程は、動作レベル設計フェーズと呼ばれる。動作レベル設計フェーズで作成される記述は、動作レベル回路記述、動作レベル記述、もしくは、動作記述と呼ばれる。動作レベル記述の作成には、C、C++、あるいは、JAVA(登録商標)などの言語が用いられる。なお、SystemCやSpecC等のように、CやC++に、回路表現に便利な機能が付加された言語が用いられることもある。
次に、動作合成フェーズにおいて、動作レベル設計フェーズにおいて生成された動作レベル記述が、RTレベル(Register Transfer Level)記述に変換される。RTレベル記述は、HDL(Hardware Discription Language)もしくはプログラム言語により表現される。
そして、論理合成フェーズにおいて、動作合成フェーズにおいて生成されたRTレベル記述が、ゲートレベル記述(ゲートレベル論理回路:ネットリスト)に自動で変換される。このようにして生成されたネットリストをもとに、レイアウト設計が行われ、ついで、チップ設計が行われる。
動作合成フェーズにおいて実行される動作合成では、与えられた合成制約を満たすように、動作レベル記述から合成回路が生成される。すなわち、合成制約が変更されると、同じ動作レベル記述から異なる合成回路が生成される。従って、利用目的に適合した合成回路が得られるように、動作合成装置に適当な合成制約を与える必要がある。しかしながら、所望の合成回路を得るための最適な合成制約があらかじめ分かっている場合はまれである。従って、合成制約を適宜変更しながら動作合成を行い、得られた複数の合成回路から最適な合成回路を探索する手法が有効である。このように所望の合成回路を探索することを、アーキテクチャ探索という。
アーキテクチャ探索を実行するためには、多くの合成回路の性能を評価する必要がある。ここで、合成回路の性能としては、動作周波数や回路面積の他、合成回路に所定の入力が与えられたときに、その入力に対する処理を完了するために必要となる実行サイクル数(実行クロック数)があげられる。ところで、合成回路の性能は、クロックサイクル毎の動作を指定する中間レベル記述を用いたシミュレーションにより評価することができる。例えば、特許文献1には、合成回路の性能を評価するシミュレーションを実行するシミュレーション装置が開示されている。
特開2003−67438号公報
しかしながら、特許文献1に記載されているような、合成回路の性能を評価するシミュレーションは、多くの時間を要する。従って、多くの合成回路に対してシミュレーションを実行して性能を評価する必要があるアーキテクチャ探索には、多大な時間がかかってしまっていた。このため、合成回路の性能を速やかに取得し、短時間でアーキテクチャ探索をすることが可能な動作合成システムが望まれている。
本発明は、上記問題に鑑みてなされたものであり、動作レベル記述により表される回路の性能を速やかに取得するのに好適な動作合成装置、動作合成方法、ならびに、これらをコンビュータ上で実現するためのプログラムを提供することを目的とする。
上記目的を達成するために、本発明の第1の観点に係る動作合成装置は、
集積回路上に実装される回路の動作が記述された動作レベル記述と制約条件とに基づいて、当該動作レベル記述に記述されている動作を実現するとともに当該制約条件を満たす回路を表現する中間レベル記述を生成する生成手段と、
前記生成手段により生成された中間レベル記述を解析して、当該中間レベル記述のループ構造を特定する特定手段と、
前記特定手段により特定されたループ構造と同じループ構造を有するいずれかの中間レベル記述について、シミュレーション済みであるか否かを判別する判別手段と、
前記判別手段によりシミュレーション済みではないと判別された場合、前記生成手段により生成された中間レベル記述により表現される回路の動作をシミュレーションし、当該中間レベル記述に記述されている各処理を実行するのに要する個別実行サイクル数を求めるとともに、当該中間レベル記述に記述されている全ての処理を実行するのに要する総実行サイクル数を求める計測手段と、
前記計測手段により求められた個別実行サイクル数と、前記特定手段により特定されたループ構造とを対応付けて記憶する記憶手段と、
前記判別手段によりシミュレーション済みであると判別された場合、前記特定手段により特定されたループ構造と同じループ構造に対応付けられて前記記憶手段に記憶されている個別実行サイクル数に基づいて、前記生成手段により生成された中間レベル記述の総実行サイクル数を求める計算手段と、を備える、
ことを特徴とする。
上記目的を達成するために、本発明の第2の観点に係る動作合成方法は、
動作合成装置が実行する動作合成方法であって、
集積回路上に実装される回路の動作が記述された動作レベル記述と制約条件とに基づいて、当該動作レベル記述に記述されている動作を実現するとともに当該制約条件を満たす回路を表現する中間レベル記述を生成する生成ステップと、
前記生成ステップで生成された中間レベル記述を解析して、当該中間レベル記述のループ構造を特定する特定ステップと、
前記特定ステップで特定されたループ構造と同じループ構造を有するいずれかの中間レベル記述について、シミュレーション済みであるか否かを判別する判別ステップと、
前記判別ステップでシミュレーション済みではないと判別された場合、前記生成ステップでより生成された中間レベル記述により表現される回路の動作をシミュレーションし、当該中間レベル記述に記述されている各処理を実行するのに要する個別実行サイクル数を求めるとともに、当該中間レベル記述に記述されている全ての処理を実行するのに要する総実行サイクル数を求める計測ステップと、
前記計測ステップで求められた個別実行サイクル数と、前記特定ステップで特定されたループ構造とを対応付けて記憶する記憶ステップと、
前記判別ステップでシミュレーション済みであると判別された場合、前記特定ステップで特定されたループ構造と同じループ構造に対応付けられて前記記憶手段に記憶されている個別実行サイクル数に基づいて、前記生成ステップで生成された中間レベル記述の総実行サイクル数を求める計算ステップと、を備える、
ことを特徴とする。
上記目的を達成するために、本発明の第3の観点に係るプログラムは、
コンピュータを、
集積回路上に実装される回路の動作が記述された動作レベル記述と制約条件とに基づいて、当該動作レベル記述に記述されている動作を実現するとともに当該制約条件を満たす回路を表現する中間レベル記述を生成する生成手段、
前記生成手段により生成された中間レベル記述を解析して、当該中間レベル記述のループ構造を特定する特定手段、
前記特定手段により特定されたループ構造と同じループ構造を有するいずれかの中間レベル記述について、シミュレーション済みであるか否かを判別する判別手段、
前記判別手段によりシミュレーション済みではないと判別された場合、前記生成手段により生成された中間レベル記述により表現される回路の動作をシミュレーションし、当該中間レベル記述に記述されている各処理を実行するのに要する個別実行サイクル数を求めるとともに、当該中間レベル記述に記述されている全ての処理を実行するのに要する総実行サイクル数を求める計測手段、
前記計測手段により求められた個別実行サイクル数と、前記特定手段により特定されたループ構造とを対応付けて記憶する記憶手段、
前記判別手段によりシミュレーション済みであると判別された場合、前記特定手段により特定されたループ構造と同じループ構造に対応付けられて前記記憶手段に記憶されている個別実行サイクル数に基づいて、前記生成手段により生成された中間レベル記述の総実行サイクル数を求める計算手段、
として機能させるためのプログラムである。
本発明によれば、動作レベル記述により表される回路の性能を速やかに取得するのに好適な動作合成装置、動作合成方法、ならびに、これらをコンビュータ上で実現するためのプログラムを提供することができる。
本発明の実施形態に係る動作合成装置の構成を示すブロック図である。 本発明の実施形態に係る動作合成装置の動作の概略を説明するためのブロック図である。 本発明の実施形態に係る動作合成装置が備える機能を説明するためのブロック図である。 本発明の実施形態に係る動作合成装置が実行するアーキテクチャ探索処理を示すフローチャートである。 動作レベル記述を示す図である。 クロックサイクル毎の動作を指定する中間レベル記述を示す第1の図である。 特定されたループ構造を示す第1の図である。 シミュレーションモデルを示す図である。 入力端子に供給されるデータを示す図である。 ループ構造と実行サイクル数との対応関係を示す第1の図である。 クロックサイクル毎の動作を指定する中間レベル記述を示す第2の図である。 特定されたループ構造を示す第2の図である。 ループ構造と実行サイクル数との対応関係を示す第2の図である。
以下、本発明の実施形態に係る動作合成装置について図面を参照して説明する。ここで、動作合成装置は、動作レベルで半導体集積回路等の回路を表現する記述(以下「動作レベル記述」という。)を、合成制約に基づいて動作合成することにより、クロックサイクル毎の動作を指定する中間レベル記述を生成する。ここで、クロックサイクル毎の動作を指定する中間レベル記述により表される回路を、合成回路という。なお、動作合成装置は、クロックサイクル毎の動作を指定する中間レベル記述を、さらにRTレベル(Register Transfer Level)記述に変換する。また、動作合成装置は、生成された複数の合成回路から最適な合成回路を探索するアーキテクチャ探索が可能な装置であるものとする。従って、動作合成装置は、生成された合成回路の性能を取得することが可能なシミュレータを備える。そして、動作合成装置は、合成制約を適宜切り替えながら、所望の合成回路を探索する。なお、合成制約の切り替え、ならびに、所望の合成回路の探索は、設計者が行っても良いが、本実施形態においては、動作合成装置が自動で行うものとする。
まず、図1を参照して、本実施形態に係る動作合成装置の構成について説明する。
図1に示すように、動作合成装置10は、物理的には、CPU(Central Processing Unit)11と、ROM(Read Only Memory)12と、RAM(Random Access Memory)13と、ハードディスク装置14と、入力装置15と、表示装置16と、を備える。動作合成装置10が備える各構成要素はバスを介して接続される。
CPU11は、ハードディスク装置14に記憶されたプログラムに従って動作合成装置10全体の動作を制御する。CPU11は、各構成要素とバスを介して接続され制御信号やデータのやりとりをする。
ROM12は、電源投入直後に実行されるIPL(Initial Program Loader)を記憶する。IPLが実行された後、CPU11は、ハードディスク装置14に記憶されたプログラムをRAM13に読み出して実行する。
RAM13は、データやプログラムを一時的に記憶する。RAM13は、ハードディスク装置14から読み出されたプログラムや、アーキテクチャ探索処理に必要なデータ等を一時記憶する。
ハードディスク装置14は、CPU11により実行されるプログラムを記憶する。また、ハードディスク装置14は、動作レベル記述や合成制約なども記憶する。
入力装置15は、CPU11による制御のもと、動作レベル記述や合成制約等の入力をユーザから受け付け、また、アーキテクチャ探索の開始要求等の要求をユーザから受け付ける。入力装置15は、例えば、キーボードやマウスから構成される。
表示装置16は、CPU11による制御のもと、動作レベル記述を示す画面、合成制約を示す画面、シミュレーション実行中の画面などを表示する。表示装置16は、例えば、LCD(Liquid Crystal Display)やCRT(Cathode Ray Tube)などから構成される。
図2を参照して、本実施形態に係る動作合成装置10の動作の概略について説明する。図2に示すように、動作合成装置10は、生成部21と、特定部22と、判別部23と、計測部24と、記憶部25と、計算部26とを含む。
生成部21は、集積回路上に実装される回路の動作が記述された動作レベル記述と制約条件とに基づいて、当該動作レベル記述に記述されている動作を実現するとともに当該制約条件を満たす回路を表現する中間レベル記述を生成する。
特定部22は、生成部21により生成された中間レベル記述を解析して、当該中間レベル記述のループ構造を特定する。
判別部23は、特定部22により特定されたループ構造と同じループ構造を有するいずれかの中間レベル記述について、シミュレーション済みであるか否かを判別する。
計測部24は、判別部23によりシミュレーション済みではないと判別された場合、生成部21により生成された中間レベル記述により表現される回路の動作をシミュレーションし、当該中間レベル記述に記述されている各処理を実行するのに要する個別実行サイクル数を求めるとともに、当該中間レベル記述に記述されている全ての処理を実行するのに要する総実行サイクル数を求める。
記憶部25は、計測部24により求められた個別実行サイクル数と、特定部22により特定されたループ構造とを対応付けて記憶する。
計算部26は、判別部23によりシミュレーション済みであると判別された場合、特定部22により特定されたループ構造と同じループ構造に対応付けられて記憶部25に記憶されている個別実行サイクル数に基づいて、生成部21により生成された中間レベル記述の総実行サイクル数を求める。
図3は、本実施形態に係る動作合成装置10が備える機能を説明するためのブロック図である。図3に示すように、動作合成装置10は、機能的には、処理装置100と、記憶装置110とから構成される。処理装置100は、機能的には、動作合成部101と、ループ構造解析部102と、ループ構造比較部103と、実行サイクル数計算部104と、シミュレーションモデル生成部105と、シミュレーション実行部106と、を備える。
記憶装置110は、機能的には、動作レベル記述記憶部111と、合成制約記憶部112と、ループ構造記憶部113と、シミュレーションデータ記憶部114と、対応関係記憶部115と、実行サイクル数記憶部116と、を備える。なお、処理装置100は、CPU11が、ROM12及びRAM13と協働することにより実現される。従って、処理装置100が備える各部は、それぞれ、CPU11が、ROM12及びRAM13と協働することにより実現される。また、記憶装置110は、ハードディスク装置14により実現される。従って、記憶装置110が備える各部は、それぞれ、ハードディスク装置14により実現される。
動作合成部101は、動作レベル記述記憶部111に記憶されている動作レベル記述を、合成制約記憶部112に記憶されている合成制約に基づいて動作合成する。具体的には、動作合成部101は、最適化処理、スケジューリング処理、ならびに、バインディング処理を順次実行することにより、動作レベル記述をクロックサイクル毎の動作を指定する中間レベル記述に変換する。
ループ構造解析部102は、動作合成部101により生成されたクロックサイクル毎の動作を指定する中間レベル記述を解析し、ループ構造を特定する。
ループ構造比較部103は、ループ構造解析部102により特定されたループ構造とループ構造記憶部113に記憶されているループ構造とを比較し、ループ構造解析部102により特定されたループ構造と同一のループ構造がループ構造記憶部113に記憶されているか否かを判別する。そして、ループ構造比較部103は、同一のループ構造が記憶されていない場合、ループ構造解析部102により特定されたループ構造をループ構造記憶部113に記憶する。
実行サイクル数計算部104は、対応関係記憶部115から、ループ構造解析部102により特定されたループ構造に対応する、ループ構造と実行サイクル数との対応関係を示す情報を読み出す。そして、実行サイクル数計算部104は、読み出された情報に基づいて、実行サイクル数を計算し、計算結果を実行サイクル数記憶部116に記憶する。
シミュレーションモデル生成部105は、動作合成部101により生成されたクロックサイクル毎の動作を指定する中間レベル記述を、シミュレーションを実行可能なシミュレーションモデルに変換する。
シミュレーション実行部106は、シミュレーションモデル生成部105により生成されたシミュレーションモデルに対してシミュレーションを実行する。具体的には、シミュレーション実行部106は、シミュレーションモデル生成部105により生成されたシミュレーションモデルと、シミュレーションデータ記憶部114に記憶されているシミュレーションデータとを用いて、動作合成部101により生成された中間レベル記述により表される合成回路のシミュレーションを実行する。シミュレーション実行部106は、シミュレーションの最中に、実行サイクル数を求める。そして、シミュレーション実行部106は、求められた実行サイクル数とループ構造との対応関係を示す情報を対応関係記憶部115に記憶するとともに、当該実行サイクル数を実行サイクル数記憶部116に記憶する。
動作レベル記述記憶部111には、動作レベル記述があらかじめ記憶されている。動作レベル記述は、ハードウェア記述言語やプログラム言語により表現される。ハードウェア記述言語は、例えば、Verilog−HDL(Verilog Hardware Discription Language)、VHDL(Very High Speed Hardware Discription Language)、SystemVerilogである。プログラム言語は、例えば、C、C++、C#、SystemC、SpecC、JAVA(登録商標)、Perl、Scheme、Lispである。動作レベル記述は、C、C++、あるいは、JAVA(登録商標)に、回路を実現するための拡張が行われた言語で表現されてもよい。動作レベル記述は、例えば、設計者によって準備される。
合成制約記憶部112は、複数の合成制約をあらかじめ記憶している。合成制約は、回路の合成に使用可能なハードウェア資源、合成回路の動作クロック周波数、あるいは、合成回路の面積、もしくはこれらの組み合わせにより指定される。
ループ構造記憶部113は、実行サイクル数を取得済のループ構造を示す情報を記憶する。ループ構造は、クロックサイクル毎の動作を指定する中間レベル記述から抽出された、ループ構造に関する記述により特定される。なお、ループ構造は、各ループを特定する文字列、ループ間の関係を特定する情報、各ループが実行される回数、各ループの中身が実行される回数などにより特定されてもよい。
シミュレーションデータ記憶部114は、シミュレーションの実行に必要なシミュレーションデータを記憶する。
対応関係記憶部115は、ループ構造と実行サイクル数との対応関係を示す情報を記憶する。対応関係を示す情報は、ループ構造を特定する情報と、各ループを実行するのに要した実行サイクル数とを含む情報である。
実行サイクル数記憶部116は、シミュレーション実行部106から取得した実行サイクル数を記憶する。記憶する実行サイクル数は、各ループを実行するのに要した実行サイクル数であってもよいし、これらの実行サイクル数の総和であってもよい。
なお、動作合成部101は、生成部21に相当する。また、ループ構造解析部102は、特定部22に相当する。そして、ループ構造比較部103は、判別部23に相当する。さらに、シミュレーションモデル生成部105ならびにシミュレーション実行部106は、計測部24に相当する。また、対応関係記憶部115は、記憶部25に相当する。そして、実行サイクル数計算部104は、計算部26に相当する。
以下、図4に示すフローチャートを用いて、動作合成装置10が実行するアーキテクチャ探索処理について説明する。アーキテクチャ探索処理は、複数の合成制約のそれぞれに基づいて動作レベル記述を動作合成することにより複数の合成回路を生成し、生成された複数の合成回路から最適な合成回路を探索する処理である。動作合成装置10は、設計者などによる、アーキテクチャ探索処理の開始を要求する操作入力を受け付けると、図4に示すアーキテクチャ探索処理を開始する。
まず、CPU11は、ハードディスク装置14に記憶されている動作レベル記述をRAM13に読み出す(ステップS101)。ステップS101の処理は、動作合成部101が、動作レベル記述記憶部111に記憶されている動作レベル記述を取得する処理に相当する。
図5に、SystemC言語を用いて表現された動作レベル記述を示す。なお、図5には、本実施形態の説明に必要な部分のみを示している。以下、図5に示す動作レベル記述の処理の内容を説明する。
図5の1行目から4行目までに、端子が定義されている。具体的には、int型の入力端子として、入力端子in0、in1が定義され、int型の出力端子として出力端子out0が定義されている。
そして、5行目から17行目までに、当該動作レベル記述により表される合成回路の動作を定義する情報が示されている。まず、int型の変数vが値0で初期化されている。そして、10行目に定義されたラベルL1を持つfor文によるループにより、変数iの値が0から3になるまで、11行目に記述された処理が繰り返し実行される。11行目では、入力端子in0および入力端子in1から値が読み出され、読み出された値の和が変数vに足されている。14行目では、出力端子out0に変数vの値が出力されている。
CPU11は、図4のステップS101の処理を終了すると、ハードディスク装置14に記憶されている複数の合成制約から合成制約を1つ選択し、選択した合成制約をRAM13に読み出す(ステップS102)。ここでは、加算器を2つ使用できることを示す合成制約、すなわち、2つ以下の加算器で合成することを示す合成制約が選択されたものとして説明する。
CPU11は、ステップS102の処理を終了すると、ステップS101で読み出された動作レベル記述をステップS102で選択された合成制約を用いて動作合成する(ステップS103)。具体的には、CPU11は、最適化処理、スケジューリング処理、ならびに、バインディング処理を順次実行することにより、動作レベル記述をクロックサイクル毎の動作を指定する中間レベル記述に変換する。なお、生成されたクロックサイクル毎の動作を指定する中間レベル記述は、RAM13に記憶される。また、最適化処理、スケジューリング処理、ならびに、バインディング処理には、例えばJohn P. Elliott,「Understanding Behavioral Synthesis」,Kluwer Academic Publishers,pp.25−40.に開示されている技術を用いることができる。
図6に、クロックサイクル毎の動作を指定する中間レベル記述を示す。以下、図6に示されたクロックサイクル毎の動作を指定する中間レベル記述により表現されている動作について説明する。
図6に示されたクロックサイクル毎の動作を指定する中間レベル記述では、1行目から4行目に示されているように、図5に示された動作レベル記述と同じ端子が定義されている。ここで、バインディング処理によって、動作レベル記述における変数vに、中間レベル記述においてはレジスタRG_vが割り当てられている。また、動作レベル記述における変数iに、中間レベル記述においてはレジスタRG_iが割り当てられている。さらに、スケジューリング処理によって、動作レベル記述における11行目の処理が、中間レベル記述における11行目の処理で実現されるように変換されている。すなわち、1クロック内で、入力端子in0ならびに入力端子in1の値が読み出されて、読み出された値がレジスタRG_vに加算されている。
CPU11は、図4のステップS103の処理を終了すると、ステップS103で生成されたクロックサイクル毎の動作を指定する中間レベル記述を解析して、制御フローに含まれるループ構造を特定する(ステップS104)。本実施形態においては、ループ構造は、中間レベル記述のうち、ループの部分とクロック境界の部分を抜き出したもので表現されるものとする。
図7に、特定されたループ構造を示す。図7に示すループ構造は、図6に示すクロックサイクル毎の動作を指定する中間レベル記述から、ループ文、および、クロック境界を示すwait()文のみを抜き出したものである。図7に示すループ構造の1行目には、図6に示す中間レベル記述の8行目のループL0が抽出されている。図7に示すループ構造の2行目には、図6に示す中間レベル記述の10行目のループL1が抽出されている。そして、図7に示すループ構造には、ループL1のボディの実行に1サイクル、ループL1の実行が完了してからループL0の先頭に戻るまでに1サイクル必要であることが示されている。
CPU11は、図4のステップS104の処理を終了すると、ステップS104で特定されたループ構造と同一のループ構造が、ハードディスク装置14に記憶されているか否かを判別する(ステップS105)。なお、ハードディスク装置14に記憶されているループ構造は、後述するシミュレーションにより実行サイクル数を取得済のループ構造である。従って、最初にステップS105の処理が実行される場合、ハードディスク装置14にはいかなるループ構造も記憶されていないため、CPU11は、NOと判別する。なお、本実施形態においては、同一のループ構造であるか否かは、ループの部分とクロック境界の部分を抜き出したもので表現されたループ構造に対して、クロック境界の部分を無視した上で構成されるループが全く同じであるか否かを基準に判断するものとする。
CPU11は、同じループ構造が存在しないと判別した場合(ステップS105:NO)、ループ構造を示す情報をハードディスク装置14に記憶する(ステップS106)。ここでは、図7に示すループ構造を示す情報が記憶される。
CPU11は、ステップS106の処理を終了すると、ステップS103で生成されたクロックサイクル毎の動作を指定する中間レベル記述からシミュレーションモデルを生成する(ステップS107)。シミュレーションモデルは、Verilog−HDL、VHDL、SystemVerilogといったハードウェア記述言語や、C、C++、C#、SystemC、SpecC、JAVA(登録商標)、Perl、Scheme、Lispといったプログラム言語により表現される。
図8に、SystemC言語を用いて表現されたシミュレーションモデルを示す。なお、図8には、本実施形態の説明に必要な部分のみを示している。また、本実施形態においては、図8に示すシミュレーションモデルは、図6に示す中間レベル記述と同じ記述となっている。
CPU11は、ステップS107の処理を終了すると、ハードディスク装置14に記憶されているシミュレーションデータを用いて、ステップS107で生成されたシミュレーションモデルに対してシミュレーションを実行する(ステップS108)。本実施形態においては、動作合成装置10がシミュレーションを実行するものとして説明するが、外部のシミュレータにシミュレーションを実行させることもできる。この場合、CPU11は、外部のシミュレータに、シミュレーションデータとシミュレーションモデルとを引き渡し、当該外部のシミュレータから、シミュレーションにより得られた実行サイクル数を取得する。なお、シミュレータには、例えば、Open SystemC InitiativeのSystemCシミュレータ、Synopsys(登録商標)社のVCS(登録商標)、MentorGraphics(登録商標)社のModelSim、もしくは、Cadence(登録商標)社のIncisive(登録商標)などを採用することができる。
図9に、入力端子in0ならびに入力端子in1に順次供給されるシミュレーションデータを示す。図9に示す例は、入力端子in0ならびに入力端子in1のそれぞれに、1から9までの値が順次供給されることを示している。
CPU11は、ステップS108の処理を終了すると、シミュレーションにより得られた実行サイクル数とループ構造との対応関係を示す情報をハードディスク装置14に記憶する(ステップS109)。
一方、CPU11は、同じループ構造が存在すると判別した場合(ステップS105:YES)、ハードディスク装置14に記憶されている情報に基づいて実行サイクル数を計算する(ステップS110)。具体的には、CPU11は、ハードディスク装置14に記憶されている情報を参照して、当該ループ構造の各ループを実行するのに必要な実行サイクル数をRAM13に読み出し、読み出された実行サイクル数に基づいて、ステップS103で生成されたクロックサイクル毎の動作を指定する中間レベル記述により表現される、全ての処理を実行するのに必要な実行サイクル数を計算する。
CPU11は、ステップS109の処理、もしくは、ステップS110の処理を終了すると、ステップS108のシミュレーションで取得した実行サイクル数、もしくは、ステップS110で計算した実行サイクル数を、ステップS102で選択した合成制約と対応付けてハードディスク装置14に記憶する(ステップS111)。
図10に、ループ構造と実行サイクル数との対応関係を示す。図10に示す例では、ループ構造は、ループ名によって特定される。ループ名は、ループ文に記述されているシンボル名を表す文字列などにより表現される。なお、図示しないが、ループ名により、ループ間の構造も特定されるものとする。本実施形態においては、ループL1はループL0内に配置され、ループL0はループMAIN内に配置されることを前提としている。そして、ループ構造に対応づけられるデータとして、ループの訪問回数と、ループボディ(ループの中身の処理)の実行回数と、ループボディの1回あたりの実行サイクル数とが記憶される。ループの訪問回数は、そのループが訪問される回数である。ループボディの実行回数は、ループが1回訪問される毎にループボディが実行される回数である。
図10は、図9に示すシミュレーションデータによりシミュレーションが実行される際に、ループL0は、1回訪問され、ループボディが3回実行され、ループボディの1回の実行あたりの実行サイクル数が4サイクルであることを表している。同様に、ループL1は、3回訪問され、ループボディが3回実行され、ループボディの1回の実行あたりの実行サイクル数が1サイクルであることを表している。そして、ループMAINの実行サイクル数(全体の実行サイクル数)が12であることを示している。従って、ここでは、実行サイクル数として12サイクルが、加算器が2個であることを示す合成制約と対応付けられて記憶される。ここで、ループL0のループボディが3回実行されるのは、図9に示すように、シミュレーションデータが9個であるためである。なお、シミュレーションデータが無限に与えられる場合、ループL0のループボディは無限に実行される。
CPU11は、図4のステップS111の処理を終了すると、未選択の合成制約がハードディスク装置14に記憶されているか否かを判別する(ステップS112)。CPU11は、未選択の合成制約があると判別すると(ステップS112:YES)、合成制約を選択する処理(ステップS102)に処理を戻す。
ここで、加算器が1つしか使用できないことを指定する合成制約が、未選択の合成制約として、ハードディスク装置14に記憶されている場合について説明する。
図11に、ステップS103の処理において、このような合成制約に基づいて動作合成することにより生成されるクロックサイクル毎の動作を指定する中間レベル記述を示す。図6に示す中間レベル記述の11行目から12行目において1サイクルで実行されていた処理が、図11に示す中間レベル記述では、11行目から14行目の2サイクルをかけて実行されている。
ここで、図12に、ステップS104の処理において、図11に示すクロックサイクル毎の動作を指定する中間レベル記述から特定されるループ構造を示す。図12に示すように、図7に示すループ構造においては1サイクルで実行されていたループL1のボディの実行が、図12に示すループ構造においては2サイクルで実行される。
そして、ステップS105において、CPU11は、同じループ構造が存在するか否かが判別する。この時点においては、ステップS106の処理において、図7に示すループ構造がハードディスク装置14に記憶されている。ここで、図7に示すループ構造と、図12に示すループ構造とは、ループL2のボディの実行にかかるサイクル数が異なるものの、ループの構造自体は同じである。すなわち、図7に示すループ構造と図12に示すループ構造とは、ともに、ループL0とループL1とから構成され、ループL1がループL0の内側に含まれている。従って、ステップS105で、CPU11は、同じループ構造があると判別する。
次に、ステップS110において、CPU11は、ループ構造と実行サイクル数との対応関係を示す情報を、ハードディスク装置14から読み出し、実行サイクル数が計算する。ここでは、CPU11は、同じループ構造を有するクロックサイクル毎の動作を指定する中間レベル記述について、シミュレーションにより得られた実行サイクル数と異なる部分についてのみ、実行サイクル数を計算する。本実施形態においては、ループL0,L1のループはともに、ループ構造が同じであるため、ループの訪問回数とループボディの実行回数は同じである。これは、ループ構造が同じである場合、シミュレーションにおいて、同じ入力データが与えられると、ループの訪問回数およびループボディの実行回数は同じになるためである。従って、ハードディスク装置14に記憶されている情報を使用すれば、シミュレーションをしなくてもループの訪問回数およびループボディの実行回数を得ることができる。
しかしながら、CPU11は、ループL1についてのループボディの1回の実行あたりの実行サイクル数については、シミュレーションにより得られた値を採用することができない。従って、CPU11は、当該実行サイクル数については、ループボディに含まれるクロック境界の数をもとに計算により求める。また、ループL0は、ループL1を含む。このため、CPU11は、ループL0についてのループボディの1回の実行あたりの実行サイクル数についても、シミュレーションにより得られた値を採用することができない。従って、CPU11は、当該実行サイクル数も、計算により求める。図13に、計算により求められる実行サイクル数を示す。
一方、CPU11は、未選択の合成制約がないと判別すると(ステップS112:NO)、実行サイクル数が最も少ない合成制約を特定する(ステップS113)。具体的には、CPU11は、ステップS111でハードディスク装置14に記憶された実行サイクル数のうち、実行サイクル数が最も少ない実行サイクル数に対応付けられている合成制約を特定する。なお、当該合成制約に基づいて生成された合成回路は、実行サイクル数が最も少ない合成回路である。
CPU11は、ステップS113の処理を終了すると、アーキテクチャ探索処理を終了する。
本実施形態に係る動作合成装置10は、過去に性能が評価された合成回路とループ構造が同じ回路に対しては、シミュレーションを実行せずに性能が評価されるように構成される。係る構成によれば、シミュレーションが実行される回数が抑制され、アーキテクチャ探索に要する時間が短縮されることが期待できる。
なお、動作合成装置10は、シミュレーションにより得られた実行サイクル数を採用できない部分についてのみ、実行サイクル数を計算し、シミュレーションにより得られた実行サイクル数を採用できる部分についてはシミュレーションにより得られた実行サイクル数を採用する。このため、実行サイクル数を求めようとしている中間レベル記述と、当該中間レベル記述とループ構造が同じであるシミュレーション済みの中間レベル記述とが、一部しか記述が異ならないなどの場合には、多くの部分についてシミュレーションにより求められた実行サイクル数を採用することができ、計算量を少なくすることができる。
なお、アーキテクチャ探索する場合は、動作レベル記述そのものは変化せず、合成制約が変化するだけである。ここで、合成制約の変化は、ループ構造には影響を与えずに、ループボディ一回の実行あたりのサイクル数に影響を与える場合が多い。従って、多くの場合、ループ構造が変化しないことが期待できる。このため、シミュレーションによらず、計算のみによって実行サイクル数が求められる場合も多いと考えられる。
上記実施形態においては、ループ構造は、中間レベル記述のうち、ループの部分とクロック境界の部分とを抜き出したもので表現されていた。しかしながら、ループ構造は、中間レベル記述のうち、ループの部分だけを抜き出したもので表現されてもよい。あるいは、ループ構造は、中間レベル記述のうち、ループの部分とクロック境界の部分を抜き出し、かつ、ループボディの動作の内容を論理式で表現される形式でもよい。
上記実施形態においては、同一のループ構造であるか否かは、ループの部分とクロック境界の部分を抜き出したもので表現されたループ構造に対して、クロック境界の部分を無視した上で構成されるループが全く同じであるか否かを基準に判断されるものとして説明した。しかしながら、同一のループ構造であるか否かは、構成されるループが全く同じであるか否かを基準にして判断されてもよい。あるいは、中間レベル記述の制御の構造をグラフとして表現されたループ構造に対して、グラフが同形であるか否かを基準に判断されてもよい。あるいは、ループの部分とクロック境界の部分を抜き出し、かつ、ループボディの動作の内容を論理式で表現する形式であるループ構造に対して、クロック境界の部分を無視した上で構成されるループが全く同じであり、かつ、ループボディの動作の内容を表現した論理式が等価であるか否かを基準に判断されてもよい。
上記実施形態においては、ループ構造は、ループ名(ループ間の関係を含む)、ならびに、ループボディの実行回数によりループ構造が特定される例を示した。しかし、より少ない要素によりループ構造を特定するようにしてもよい。例えば、ループ名(ループ間の関係を含む)によりループ構造が特定されるようにする。このようにループ構造を特定することで、シミュレーション済みのループ構造と同じであると判別されやすくなる。従って、シミュレーションの回数が減ることが期待できる。反対に、より多くの要素によりループ構造を特定するようにしてもよい。例えば、ループ名(ループ間の関係を含む)、ループボディの実行回数、ならびに、ループボディの1回の実行あたりの実行サイクル数によりループ構造が特定されるようにする。このようにループ構造を特定することで、複雑な計算をせずに実行サイクル数を求めることが可能となる。
なお、本発明に係る動作合成装置は、専用のシステムによらず、通常のコンピュータシステムを用いて実現可能である。例えば、コンピュータに、上記動作を実行するためのプログラムを、フレキシブルディスク、CD−ROM(Compact Disk Read−Only Memory)、DVD(Digital Versatile Disk)、MO(Magneto Optical Disk)などのコンピュータ読み取り可能な記録媒体に格納して配布し、これをコンピュータシステムにインストールすることにより、上述の処理を実行する動作合成装置を構成しても良い。
さらに、インターネット上のサーバ装置が有するディスク装置等にプログラムを格納しておき、例えば、搬送波に重畳させて、コンピュータにダウンロード等するものとしてもよい。
上記の実施形態の一部又は全部は、以下の付記のようにも記載されうるが、以下には限られない。
(付記1)
集積回路上に実装される回路の動作が記述された動作レベル記述と制約条件とに基づいて、当該動作レベル記述に記述されている動作を実現するとともに当該制約条件を満たす回路を表現する中間レベル記述を生成する生成手段と、
前記生成手段により生成された中間レベル記述を解析して、当該中間レベル記述のループ構造を特定する特定手段と、
前記特定手段により特定されたループ構造と同じループ構造を有するいずれかの中間レベル記述について、シミュレーション済みであるか否かを判別する判別手段と、
前記判別手段によりシミュレーション済みではないと判別された場合、前記生成手段により生成された中間レベル記述により表現される回路の動作をシミュレーションし、当該中間レベル記述に記述されている各処理を実行するのに要する個別実行サイクル数を求めるとともに、当該中間レベル記述に記述されている全ての処理を実行するのに要する総実行サイクル数を求める計測手段と、
前記計測手段により求められた個別実行サイクル数と、前記特定手段により特定されたループ構造とを対応付けて記憶する記憶手段と、
前記判別手段によりシミュレーション済みであると判別された場合、前記特定手段により特定されたループ構造と同じループ構造に対応付けられて前記記憶手段に記憶されている個別実行サイクル数に基づいて、前記生成手段により生成された中間レベル記述の総実行サイクル数を求める計算手段と、を備える、
ことを特徴とする動作合成装置。
(付記2)
前記判別手段は、前記特定手段により特定されたループ構造と同じループ構造が前記記憶手段に記憶されている場合に、シミュレーション済みであると判別し、前記特定手段により特定されたループ構造と同じループ構造が前記記憶手段に記憶されていない場合に、シミュレーション済みではないと判別する、
ことを特徴とする付記1に記載の動作合成装置。
(付記3)
前記ループ構造は、前記中間レベル記述からループ文を特定したときに得られる記述の構造により特定される、
ことを特徴とする付記1または2に記載の動作合成装置。
(付記4)
前記ループ構造は、前記中間レベル記述からループ文ならびにクロック境界指定文を特定したときに得られる記述の構造により特定される、
ことを特徴とする付記1または2に記載の動作合成装置。
(付記5)
動作合成装置が実行する動作合成方法であって、
集積回路上に実装される回路の動作が記述された動作レベル記述と制約条件とに基づいて、当該動作レベル記述に記述されている動作を実現するとともに当該制約条件を満たす回路を表現する中間レベル記述を生成する生成ステップと、
前記生成ステップで生成された中間レベル記述を解析して、当該中間レベル記述のループ構造を特定する特定ステップと、
前記特定ステップで特定されたループ構造と同じループ構造を有するいずれかの中間レベル記述について、シミュレーション済みであるか否かを判別する判別ステップと、
前記判別ステップでシミュレーション済みではないと判別された場合、前記生成ステップで生成された中間レベル記述により表現される回路の動作をシミュレーションし、当該中間レベル記述に記述されている各処理を実行するのに要する個別実行サイクル数を求めるとともに、当該中間レベル記述に記述されている全ての処理を実行するのに要する総実行サイクル数を求める計測ステップと、
前記計測ステップで求められた個別実行サイクル数と、前記特定手段ステップで特定されたループ構造とを対応付けて記憶する記憶ステップと、
前記判別ステップでシミュレーション済みであると判別された場合、前記特定ステップで特定されたループ構造と同じループ構造に対応付けられて前記記憶手段に記憶されている個別実行サイクル数に基づいて、前記生成ステップで生成された中間レベル記述の総実行サイクル数を求める計算ステップと、を備える、
ことを特徴とする動作合成方法。
(付記6)
前記判別ステップでは、前記特定ステップで特定されたループ構造と同じループ構造が前記記憶手段に記憶されている場合に、シミュレーション済みであると判別し、前記特定ステップで特定されたループ構造と同じループ構造が前記記憶手段に記憶されていない場合に、シミュレーション済みではないと判別する、
ことを特徴とする付記5に記載の動作合成方法。
(付記7)
前記ループ構造は、前記中間レベル記述からループ文を特定したときに得られる記述の構造により特定される、
ことを特徴とする付記5または6に記載の動作合成方法。
(付記8)
前記ループ構造は、前記中間レベル記述からループ文ならびにクロック境界指定文を特定したときに得られる記述の構造により特定される、
ことを特徴とする付記5または6に記載の動作合成方法。
(付記9)
コンピュータを、
集積回路上に実装される回路の動作が記述された動作レベル記述と制約条件とに基づいて、当該動作レベル記述に記述されている動作を実現するとともに当該制約条件を満たす回路を表現する中間レベル記述を生成する生成手段、
前記生成手段により生成された中間レベル記述を解析して、当該中間レベル記述のループ構造を特定する特定手段、
前記特定手段により特定されたループ構造と同じループ構造を有するいずれかの中間レベル記述について、シミュレーション済みであるか否かを判別する判別手段、
前記判別手段によりシミュレーション済みではないと判別された場合、前記生成手段により生成された中間レベル記述により表現される回路の動作をシミュレーションし、当該中間レベル記述に記述されている各処理を実行するのに要する個別実行サイクル数を求めるとともに、当該中間レベル記述に記述されている全ての処理を実行するのに要する総実行サイクル数を求める計測手段、
前記計測手段により求められた個別実行サイクル数と、前記特定手段により特定されたループ構造とを対応付けて記憶する記憶手段、
前記判別手段によりシミュレーション済みであると判別された場合、前記特定手段により特定されたループ構造と同じループ構造に対応付けられて前記記憶手段に記憶されている個別実行サイクル数に基づいて、前記生成手段により生成された中間レベル記述の総実行サイクル数を求める計算手段、
として機能させることを特徴とするプログラムを記録したコンピュータ読み取り可能な記録媒体。
本出願は、2009年7月15日に出願された日本国特許出願2009−167286号に基づく。本明細書中に日本国特許出願2009−167286号の明細書、特許請求の範囲、図面全体を参照として取り込むものとする。
本発明は、例えば、電子回路の回路設計を支援する動作合成装置に利用することができる。
10 動作合成装置
11 CPU
12 ROM
13 RAM
14 ハードディスク装置
15 入力装置
16 表示装置
21 生成部
22 特定部
23 判別部
24 計測部
25 記憶部
26 計算部
100 処理装置
101 動作合成部
102 ループ構造解析部
103 ループ構造比較部
104 実行サイクル数計算部
105 シミュレーションモデル生成部
106 シミュレーション実行部
110 記憶装置
111 動作レベル記述記憶部
112 合成制約記憶部
113 ループ構造記憶部
114 シミュレーションデータ記憶部
115 対応関係記憶部
116 実行サイクル数記憶部

Claims (9)

  1. 集積回路上に実装される回路の動作が記述された動作レベル記述と制約条件とに基づいて、当該動作レベル記述に記述されている動作を実現するとともに当該制約条件を満たす回路を表現する中間レベル記述を生成する生成手段と、
    前記生成手段により生成された中間レベル記述を解析して、当該中間レベル記述のループ構造を特定する特定手段と、
    前記特定手段により特定されたループ構造と同じループ構造を有するいずれかの中間レベル記述について、シミュレーション済みであるか否かを判別する判別手段と、
    前記判別手段によりシミュレーション済みではないと判別された場合、前記生成手段により生成された中間レベル記述により表現される回路の動作をシミュレーションし、当該中間レベル記述に記述されている各処理を実行するのに要する個別実行サイクル数を求めるとともに、当該中間レベル記述に記述されている全ての処理を実行するのに要する総実行サイクル数を求める計測手段と、
    前記計測手段により求められた個別実行サイクル数と、前記特定手段により特定されたループ構造とを対応付けて記憶する記憶手段と、
    前記判別手段によりシミュレーション済みであると判別された場合、前記特定手段により特定されたループ構造と同じループ構造に対応付けられて前記記憶手段に記憶されている個別実行サイクル数に基づいて、前記生成手段により生成された中間レベル記述の総実行サイクル数を求める計算手段と、を備える、
    ことを特徴とする動作合成装置。
  2. 前記判別手段は、前記特定手段により特定されたループ構造と同じループ構造が前記記憶手段に記憶されている場合に、シミュレーション済みであると判別し、前記特定手段により特定されたループ構造と同じループ構造が前記記憶手段に記憶されていない場合に、シミュレーション済みではないと判別する、
    ことを特徴とする請求項1に記載の動作合成装置。
  3. 前記ループ構造は、前記中間レベル記述からループ文を特定したときに得られる記述の構造により特定される、
    ことを特徴とする請求項1または2に記載の動作合成装置。
  4. 前記ループ構造は、前記中間レベル記述からループ文ならびにクロック境界指定文を特定したときに得られる記述の構造により特定される、
    ことを特徴とする請求項1または2に記載の動作合成装置。
  5. 動作合成装置が実行する動作合成方法であって、
    集積回路上に実装される回路の動作が記述された動作レベル記述と制約条件とに基づいて、当該動作レベル記述に記述されている動作を実現するとともに当該制約条件を満たす回路を表現する中間レベル記述を生成する生成ステップと、
    前記生成ステップで生成された中間レベル記述を解析して、当該中間レベル記述のループ構造を特定する特定ステップと、
    前記特定ステップで特定されたループ構造と同じループ構造を有するいずれかの中間レベル記述について、シミュレーション済みであるか否かを判別する判別ステップと、
    前記判別ステップでシミュレーション済みではないと判別された場合、前記生成ステップで生成された中間レベル記述により表現される回路の動作をシミュレーションし、当該中間レベル記述に記述されている各処理を実行するのに要する個別実行サイクル数を求めるとともに、当該中間レベル記述に記述されている全ての処理を実行するのに要する総実行サイクル数を求める計測ステップと、
    前記計測ステップで求められた個別実行サイクル数と、前記特定ステップで特定されたループ構造とを対応付けて記憶する記憶ステップと、
    前記判別ステップでシミュレーション済みであると判別された場合、前記特定ステップで特定されたループ構造と同じループ構造に対応付けられて前記記憶手段に記憶されている個別実行サイクル数に基づいて、前記生成ステップで生成された中間レベル記述の総実行サイクル数を求める計算ステップと、を備える、
    ことを特徴とする動作合成方法。
  6. 前記判別ステップでは、前記特定ステップで特定されたループ構造と同じループ構造が前記記憶手段に記憶されている場合に、シミュレーション済みであると判別し、前記特定ステップで特定されたループ構造と同じループ構造が前記記憶手段に記憶されていない場合に、シミュレーション済みではないと判別する、
    ことを特徴とする請求項5に記載の動作合成方法。
  7. 前記ループ構造は、前記中間レベル記述からループ文を特定したときに得られる記述の構造により特定される、
    ことを特徴とする請求項5または6に記載の動作合成方法。
  8. 前記ループ構造は、前記中間レベル記述からループ文ならびにクロック境界指定文を特定したときに得られる記述の構造により特定される、
    ことを特徴とする請求項5または6に記載の動作合成方法。
  9. コンピュータを、
    集積回路上に実装される回路の動作が記述された動作レベル記述と制約条件とに基づいて、当該動作レベル記述に記述されている動作を実現するとともに当該制約条件を満たす回路を表現する中間レベル記述を生成する生成手段、
    前記生成手段により生成された中間レベル記述を解析して、当該中間レベル記述のループ構造を特定する特定手段、
    前記特定手段により特定されたループ構造と同じループ構造を有するいずれかの中間レベル記述について、シミュレーション済みであるか否かを判別する判別手段、
    前記判別手段によりシミュレーション済みではないと判別された場合、前記生成手段により生成された中間レベル記述により表現される回路の動作をシミュレーションし、当該中間レベル記述に記述されている各処理を実行するのに要する個別実行サイクル数を求めるとともに、当該中間レベル記述に記述されている全ての処理を実行するのに要する総実行サイクル数を求める計測手段、
    前記計測手段により求められた個別実行サイクル数と、前記特定手段により特定されたループ構造とを対応付けて記憶する記憶手段、
    前記判別手段によりシミュレーション済みであると判別された場合、前記特定手段により特定されたループ構造と同じループ構造に対応付けられて前記記憶手段に記憶されている個別実行サイクル数に基づいて、前記生成手段により生成された中間レベル記述の総実行サイクル数を求める計算手段、
    として機能させるためのプログラム。
JP2011522765A 2009-07-15 2010-06-18 動作合成装置、動作合成方法、ならびに、プログラム Expired - Fee Related JP5110206B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2011522765A JP5110206B2 (ja) 2009-07-15 2010-06-18 動作合成装置、動作合成方法、ならびに、プログラム

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
JP2009167286 2009-07-15
JP2009167286 2009-07-15
PCT/JP2010/060359 WO2011007640A1 (ja) 2009-07-15 2010-06-18 動作合成装置、動作合成方法、ならびに、記録媒体
JP2011522765A JP5110206B2 (ja) 2009-07-15 2010-06-18 動作合成装置、動作合成方法、ならびに、プログラム

Publications (2)

Publication Number Publication Date
JP5110206B2 true JP5110206B2 (ja) 2012-12-26
JPWO2011007640A1 JPWO2011007640A1 (ja) 2012-12-27

Family

ID=43449250

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2011522765A Expired - Fee Related JP5110206B2 (ja) 2009-07-15 2010-06-18 動作合成装置、動作合成方法、ならびに、プログラム

Country Status (2)

Country Link
JP (1) JP5110206B2 (ja)
WO (1) WO2011007640A1 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2019171428A1 (ja) * 2018-03-05 2019-09-12 株式会社日立製作所 回路生成装置及びソフトウェア生成装置

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001109788A (ja) * 1999-10-12 2001-04-20 Nec Corp シミュレーションモデル、その生成方法、シミュレーション方法及びその記録媒体
JP2003067438A (ja) * 2002-06-21 2003-03-07 Nec Corp シミュレーションモデルの生成方法及びシミュレーション方法及びその記録媒体
JP2009217778A (ja) * 2008-03-13 2009-09-24 Nec Corp 動作合成装置、動作合成方法、および、プログラム

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001109788A (ja) * 1999-10-12 2001-04-20 Nec Corp シミュレーションモデル、その生成方法、シミュレーション方法及びその記録媒体
JP2003067438A (ja) * 2002-06-21 2003-03-07 Nec Corp シミュレーションモデルの生成方法及びシミュレーション方法及びその記録媒体
JP2009217778A (ja) * 2008-03-13 2009-09-24 Nec Corp 動作合成装置、動作合成方法、および、プログラム

Also Published As

Publication number Publication date
JPWO2011007640A1 (ja) 2012-12-27
WO2011007640A1 (ja) 2011-01-20

Similar Documents

Publication Publication Date Title
US11836641B2 (en) Machine learning-based prediction of metrics at early-stage circuit design
JP4994393B2 (ja) 単一のマスターモデルから異なる抽象化レベルの複数のモデルを生成するシステムと方法
US8719742B2 (en) Conversion of circuit description to an abstract model of the circuit
US9171114B2 (en) Managing the configuration and functionality of a semiconductor design
WO2005119528A2 (en) Loop manipulation in a behavioral synthesis tool
US9443050B2 (en) Low-voltage swing circuit modifications
US11853662B2 (en) Machine-learning enhanced compiler
US20130091482A1 (en) Method and apparatus for design space exploration acceleration
JP2005293163A (ja) 消費電力計算方法及び装置
JP2006285333A (ja) 動作合成装置及び方法
JP2009140388A (ja) 性能評価モデル生成方法、システム性能評価方法、及び性能評価モデル生成装置
US6907584B1 (en) Method and apparatus for providing an interface to an electronic design of an integrated circuit
JP5110206B2 (ja) 動作合成装置、動作合成方法、ならびに、プログラム
JP2008299464A (ja) 消費電力計算方法、消費電力計算プログラムおよび消費電力計算装置
US11556676B2 (en) Scalable formal security verification of circuit designs
JP4881769B2 (ja) 半導体集積回路設計支援装置、半導体集積回路設計支援方法、半導体集積回路設計支援プログラム
US20140059505A1 (en) Method for designing integrated circuits employing correct-by-construction progressive modeling and an apparatus employing the method
US20230072923A1 (en) Supervised machine learning based memory and runtime prediction using design and auxiliary constructs
US11829692B1 (en) Machine-learning-based design-for-test (DFT) recommendation system for improving automatic test pattern generation (ATPG) quality of results (QOR)
US20240111660A1 (en) Managing high performance simulation representation of an emulation system
Lee Implementation of VLSI design flow for MIPS-based SOC
JP2016045726A (ja) 半導体集積回路の設計データのデータ構造ならびに半導体集積回路の設計装置および設計方法
JP3751410B2 (ja) 論理回路変換装置
Martins et al. AIDA-L: Architecture and Integration

Legal Events

Date Code Title Description
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: 20120911

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20120924

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20151019

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Ref document number: 5110206

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees