JP4175953B2 - 高位合成装置、ハードウェア検証用モデル生成方法、ハードウェア検証方法、制御プログラムおよび可読記録媒体 - Google Patents

高位合成装置、ハードウェア検証用モデル生成方法、ハードウェア検証方法、制御プログラムおよび可読記録媒体 Download PDF

Info

Publication number
JP4175953B2
JP4175953B2 JP2003147025A JP2003147025A JP4175953B2 JP 4175953 B2 JP4175953 B2 JP 4175953B2 JP 2003147025 A JP2003147025 A JP 2003147025A JP 2003147025 A JP2003147025 A JP 2003147025A JP 4175953 B2 JP4175953 B2 JP 4175953B2
Authority
JP
Japan
Prior art keywords
state
hardware
calculation
variable
register
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
JP2003147025A
Other languages
English (en)
Other versions
JP2004348606A (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.)
Sharp Corp
Original Assignee
Sharp 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 Sharp Corp filed Critical Sharp Corp
Priority to JP2003147025A priority Critical patent/JP4175953B2/ja
Priority to US10/850,153 priority patent/US7266791B2/en
Publication of JP2004348606A publication Critical patent/JP2004348606A/ja
Application granted granted Critical
Publication of JP4175953B2 publication Critical patent/JP4175953B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design

Description

【0001】
【発明の属する技術分野】
本発明は、ハードウェアをサイクルアキュレートレベル(サイクルまたはクロックの精度)で検証するための汎用プログラミング言語によるモデルを生成することができる高位合成装置、ハードウェア検証用モデル生成方法ハードウェア検証方法、これらの方法の各処理手順をコンピュータに実行させる制御プログラムおよび、この制御プログラムが記録されたコンピュータ読み取り可能な可読記録媒体に関する。
【0002】
【従来の技術】
近年、大規模なシステムLSIの開発においては、設計されたハードウェアの動作がシステムに与えられた要求仕様を満たすか否かを検証する必要がある。
【0003】
従来、サイクルアキュレートレベルでハードウェアの検証を行うためには、HDL(Hardware Description Language)シミュレータが用いられており、HDLシミュレータでハードウェアの動作速度などのパフォーマンスを測定することによって、システムに与えられた仕様が満たされているか否かが検証されている。
【0004】
一般に、HDLシミュレータでは、VHDLなどのハードウエア記述言語で記述された回路動作のシミュレーションが行われる。このHDLシミュレータによって、回路内の信号の変化をクロックサイクルより短い時間単位で監視し、その変化を、接続される信号に伝搬するイベント駆動方式によってシミュレーションが行われる。
【0005】
ハードウェアとソフトウェアとからなるシステムにおいて、ハードウェア記述言語で記述されたハードウェアの動作と、汎用プログラミング言語で記述されたソフトウェアの動作とを協調検証する場合には、ハードウェアはHDLシミュレータを用いてデバッグされ、ソフトウェアはソフトデバッガなどを用いてデバッグされる。
【0006】
このようなHDLシミュレータを用いない検証方法として、特許文献1には、汎用プログラミング言語を用いてハードウェアの動作をシミュレーションし、ハードウェアとソフトウェアとを協調検証する手法が記載されている。
【0007】
また、特許文献2には、ハードウェアの全演算器の動作を示す動作記述を作成し、汎用プログラミング言語による検証モデルを生成することによって、ハードウェアのサイクルアキュレートレベルでの検証を高速に行うことができるという手法が開示されている。
【0008】
【特許文献1】
特開平10−149382号公報
【特許文献2】
特開2001−14356号公報
【0009】
【発明が解決しようとする課題】
しかしながら、イベント駆動方式でシミュレーションを進めるHDLシミュレータによる検証では、シミュレーションの時間単位がクロックサイクルより短い。よって、ハードウェアをサイクルアキュレートレベルで検証するためには冗長で無駄な計算が多く、効率が悪くなるという問題がある。また、シミュレーションされる回路の規模が大きいか、またはテストパターンが長い場合などには、シミュレーションのために必要な計算量が非常に多くなり、シミュレーションに時間がかかるという問題もある。さらに、HDLシミュレータは高価であり、システムLSIの開発コストが増加するという問題もある。
【0010】
さらに、ハードウェア記述言語で記述されたハードウェアをHDLシミュレータでデバッグし、また、汎用プログラミング言語で記述されたソフトウェアをソフトデバッガでデバッグすることによって、ハードウェアとソフトウェアとを協調させて検証する場合には、言語が異なるデバッガを用いる。よって、言語間のマッチングを取るために手間がかかり、効率が悪くなるという問題もある。
【0011】
上記特許文献1では、並列動作するハードウェアをC言語などの汎用プログラミング言語にて表現し、これをデバッグすることによって、ハードウェアとソフトウェアとの協調検証における高効率化が図られている。
【0012】
しかしながら、この特許文献1に開示されている手法では、ハードウェアのアルゴリズムレベルにおける検証は可能であるが、サイクルアキュレートレベルでの検証精度は低く、システムに与えられた動作周波数などの要求仕様を満たすか否かを検証することはできない。
【0013】
また、特許文献2に開示されている検証モデルは、高位合成された回路の動作に対して、サイクルアキュレートレベルで同等の動作を実行させることができると記載されているが、任意のクロックサイクルにおける回路の状態を観測することはできない。ハードウェアのデバッグにおいて、回路内部の状態、特にレジスタの値とコントローラの状態とを確認することは、ハードウェアの不具合となる原因を究明するための材料となることが多いため、回路内部の状態を確認することは重要である。
【0014】
本発明は、上記従来の問題を解決するもので、HDLシミュレータを用いずに、ハードウェアの検証をクロックサイクル単位で行う汎用プログラミング言語モデルを作成することができる高位合成装置、ハードウェア検証用モデル生成方法ハードウェア検証方法、これらの方法の各処理手順をコンピュータに実行させる制御プログラムおよび、この制御プログラムが記録されたコンピュータ読み取り可能な可読記録媒体を提供することを目的とする。
【0015】
【課題を解決するための手段】
本発明の高位合成装置は、ハードウェアの動作が表現された動作記述を解析し、該解析された動作情報からレジスタトランスファーレベルのハードウェアを高位合成する高位合成装置において、動作が割り当てられたコンポーネントの動作情報と、これらのコンポーネントの接続を示すデータパス情報と、コントローラの状態遷移情報とから、レジスタの状態を計算するための計算式と、コントローラの状態を計算するための計算式とを作成し、これらの作成された各計算式を、サイクルアキュレートレベルでハードウェアを検証するための汎用プログラミング言語による記述として生成するサイクルアキュレートモデル生成手段を有するものであり、そのことにより上記目的が達成される。
【0016】
また、好ましくは、本発明の高位合成装置におけるサイクルアキュレートモデル生成手段は、前記レジスタの状態およびコントローラの状態を保存するためにそれぞれ、読み出し用変数および書き込み用変数の2種類の変数と、これらの変数を格納するための読み出し用記憶領域および書き込み用記憶領域とを設定する。
【0017】
さらに、好ましくは、本発明の高位合成装置におけるサイクルアキュレートモデル生成手段は、1クロックサイクルの検証を行うために、前記レジスタの状態を計算するための計算式およびコントローラの状態を計算するための計算式を用いて、読み出し用変数の値からレジスタおよびコントローラの状態を計算し、この計算結果を書き込み用変数として保存させる関数と、書き込み用変数として保存された計算結果を読み出し用変数として保存させる関数とを作成し、これらの作成された各関数の式を汎用プログラミング言語による記述として生成する。
【0018】
さらに、好ましくは、本発明の高位合成装置におけるサイクルアキュレートモデル生成手段は、前記コンポーネントに記憶装置が含まれている場合に、該記憶装置の状態を計算するための計算式を作成し、この作成した計算式を、サイクルアキュレートレベルでハードウェアを検証するための汎用プログラミング言語による記述として生成する。
【0019】
さらに、好ましくは、本発明の高位合成装置におけるサイクルアキュレートモデル生成手段は、前記記憶装置の状態を保存するために、読み出し用変数および書き込み用変数の2種類の各変数と、これらの変数を格納するための読み出し用記憶領域および書き込み用記憶領域とを設定する。
【0020】
さらに、好ましくは、本発明の高位合成装置におけるサイクルアキュレートモデル生成手段は、1クロックサイクルの検証を行うために、前記記憶装置の状態を計算するための計算式を用いて、読み出し用変数の値から記憶装置の状態を計算し、この計算結果を書き込み用変数として保存させる関数と、書き込み用変数として保存された計算結果を読み出し用変数として保存させる関数とを作成し、これらの作成した関数の式を汎用プログラミング言語による記述として生成する。
【0021】
本発明のハードウェア検証用モデル生成方法は、請求項1〜6の何れかに記載の高位合成装置を用いて、該高位合成装置のサイクルアキュレートモデル生成手段が、動作が割り当てられたコンポーネントの動作情報と、これらのコンポーネントの接続を示すデータパス情報と、コントローラの状態遷移情報とから、レジスタの状態を計算するための計算式と、コントローラの状態を計算するための計算式とを作成し、これらの作成された計算式を、サイクルアキュレートレベルでハードウェアを検証するための汎用プログラミング言語による記述として生成するサイクルアキュレートレベルでのハードウェア検証用プログラミング言語モデルを生成するサイクルアキュレートモデル生成ステップを実行するものであり、そのことにより上記目的が達成される。
【0022】
また、好ましくは、本発明のハードウェア検証用モデル生成方法において、コンポーネントに記憶装置が含まれている場合に、請求項4〜6の何れかに記載の高位合成装置を用いて前記サイクルアキュレートモデル生成手段が、記憶装置の状態を計算する計算式を作成し、この作成された計算式を、サイクルアキュレートレベルでハードウェアを検証するための汎用プログラミング言語による記述として生成する。
【0023】
本発明のハードウェア検証方法は、請求項1〜6の何れかに記載の高位合成装置のサイクルアキュレートモデル生成手段によって作成された計算式を用いて、ハードウェア検証手段が、レジスタの状態およびコントローラの状態を計算し、この計算結果を用いてハードウェアの動作を検証するステップを実行するものであり、そのことにより上記目的が達成される。
【0024】
また、好ましくは、本発明のハードウェア検証方法において、コンポーネントに記憶装置が含まれている場合に、請求項4〜6の何れかに記載の高位合成装置によって作成された計算式を用いて、前記ハードウェア検証手段が、記憶装置の状態を計算し、この計算結果を用いてハードウェアの動作を検証するステップを実行する
【0025】
さらに、好ましくは、本発明のハードウェア検証方法において、請求項2、3、5または6に記載の高位合成装置によって作成された計算式を用いて、前記ハードウェア検証手段が、読み出し用変数の値からレジスタの状態およびコントローラの状態を計算し、計算結果を書き込み用変数として保存させる計算ステップと、該計算ステップで得られた計算結果を読み出し用変数として保存させる更新ステップとを実行することによって、ハードウェアの1クロックサイクルの検証を行う。
【0026】
さらに、好ましくは、本発明のハードウェア検証方法にいて、請求項5または6に記載の高位合成装置によって作成された計算式を用いて、前記ハードウェア検証手段が、読み出し用変数の値から記憶装置の状態を計算し、この計算結果を書き込み用変数として保存させる計算ステップと、該計算ステップで得られた計算結果を読み出し用変数として保存させる更新ステップとを実行することによって、ハードウェアの1クロックサイクルの検証を行う。
【0027】
さらに、好ましくは、本発明のハードウェア検証方法における更新ステップにおいて、記憶装置の状態については、計算ステップで計算された要素についてのみ更新動作を行う。
【0028】
さらに、好ましくは、本発明のハードウェア検証方法における計算ステップにおいて、同一クロックサイクルに重複して計算を行っても計算結果が同じであるコンポーネントについては、計算実行中のクロックサイクルで既に計算済みであれば、それらの計算を重複して行わないようにする。
【0029】
本発明の制御プログラムは、請求項7〜14の何れかに記載のハードウェア検証用モデル生成方法またはハードウェア検証方法の各処理手順をコンピュータに実行させるものである。
【0030】
本発明の可読記録媒体は、請求項15に記載の制御プログラムが記録されたコンピュータ読み取り可能である。
【0031】
上記構成により、以下に、本発明の作用について説明する。
【0032】
本発明にあっては、ハードウェアの動作が表現された動作記述(ビヘイビア記述)を解析し、その解析された動作情報からハードウェアを自動合成する高位合成装置において、その高位合成の結果、割り当てられた演算器やレジスタなどのコンポーネントの動作情報と、それらの接続を示すデータパスの情報と、それらのコンポーネントを制御するコントローラの状態遷移情報とから、レジスタの状態を計算する計算式と、コントローラの状態を計算する計算式とを作成し、これらの計算式を汎用プログラミング言語の記述として生成する。
【0033】
C言語等の高級プログラミング言語では、逐次処理が行われるため、そのプログラムの処理サイクルと検証のサイクルとを時間的に対応させる必要がある。処理のサイクル単位で考えると、処理の最初(読み出し時に対応)の変数(レジスタの値に対応)と、処理後(書き込み時に対応)の変数(レジスタの値に対応)とは、同じ変数であっても、時間的に変化しているからである。このため、ハードウェアが複数のレジスタを含んでおり、また、それらレジスタが相互の値を参照して動作する場合に、レジスタへの入力データを計算する順番によっては、正確な値を算出できないことがある。例えば、レジスタ1によってレジスタ2で保存されている値が参照され、レジスタ2によってレジスタ1で保存されている値が参照される場合、(1)レジスタ1の動作を計算した後、レジスタ2の動作を計算する場合と、(2)レジスタ2の動作を計算した後、レジスタ1の動作を計算する場合とでは、計算結果が異なることがある。
【0034】
この問題を解決するために、本発明では、書き込み用変数および読み出し用変数と、それらの変数を格納する領域とを設定する。読み出し用変数を用いて、実際のハードウェアにおいて1クロックサイクルで何らかの演算などが行われた後でレジスタに入力されるデータを計算式により求め、この計算結果を書き込み用変数としてバッファやレジスタなどの書き込み用記憶領域に保存させる計算ステップと、書き込み用変数として保存されている計算結果を読み出し用変数としてバッファやレジスタなどの読み出し用記憶領域に保存させる更新ステップとを順番に行う。これによって、ハードウェアの1クロックサイクルのシミュレーションを行うことができる。
【0035】
コンポーネントとしてRAMなどの記憶装置が含まれている場合には、レジスタと同様に、記憶装置の状態を計算する計算式を作成し、この計算式を汎用プログラミング言語の記述として生成することによって、RAMなどの記憶装置を含むハードウェアに対しても、サイクルアキュレートレベルでの検証を行うことができる。
【0036】
本発明によれば、従来技術のように、動作速度が遅く、高価なHDLシミュレータを用いなくても、ハードウェアのパフォーマンスを高速に検証することができる。また、検証用モデルは、汎用プログラミング言語で記述されているので、ソフトウェアによって表現されたハードウェア以外の動作部分と組み合わせることができ、ハードウェア/ソフトウェア協調設計を容易に行うことができる。また、クロックサイクル単位でハードウェアの動作を記述することができるので、任意のサイクル数だけシミュレーションを行ったり、任意のタイミングでシミュレーションを止めたりすることができる。これは、ハードウェアのデバッグを行うために有効である。
【0037】
RAMなどの複数の要素を有するものに対して入力データを計算する場合に、マルチ入力可能なメモリではなく、1クロックサイクル中に一つの要素に対してのみデータ入力が行われるのであれば、その入力された要素についてのみ、保存される値(変数)を更新することも可能である。これによって、一度計算された部分は次に計算されるまで更新されないようにして、効率を向上させることができる。
【0038】
また、クロックサイクルレベルで変化していない変数であれば、同一クロックサイクルに重複して計算を行っても計算結果が同じとなるため、変化した部分のみ、保存される値(変数)を更新することも可能である。これによって、計算実行中のクロックサイクルで既に計算済みの部分は、それらの計算が重複して行われないように保存しておき、次回以降、その保存された値を用いることにより、効率を向上させることができる。複数の類似の処理ルートがある場合には、特に有効である。
【0039】
【発明の実施の形態】
以下に、本発明の高位合成装置の実施形態1〜3について、図面を参照しながら説明する。
【0040】
(実施形態1)
ハードウェアの高位合成とは、ハードウェアの構造に関する情報は含まれず、処理の動作のみが記述された動作記述から、RTL(レジスタ・トランスファ・レベル)の論理回路を自動生成するコンピュータシステムによる技術である。高位合成の手法としては、“High−Level Synthesis", Kluwer Academic Publishersや、特開平5−格納部10格納部1141号公報などに詳細が記載されているので、ここでは基本的な動作についてのみ説明する。なお、本実施形態1〜3で説明するハードウェアの高位合成においては、回路の並列動作を記述することができるものとする。また、本実施形態1〜3では、汎用プログラミング言語としてC言語を用いるものとする。
【0041】
図1は、本発明の高位合成装置の実施形態1における要部構成を示すブロック図である。
【0042】
図1において、高位合成装置10は、コンピュータシステムにて構成され、各部を制御して制御プログラムを実行する制御部11と、制御プログラムおよびそのデータなどが記録されたROM12と、制御部11の制御時にワークメモリとして働くRAM13と、回路設計に必要な各種データが記録されていると共に、コントローラ情報やデータパス情報など各種生成結果情報を記憶するデータベース14と、ユーザによる操作指令入力を可能とする操作部15と、各種画像表示が為される表示部16とを有し、ハードウェアの動作が表現された動作記述を解析し、この解析された動作記述から、演算処理を示す節点とデータの流れを示す入出力枝により生成されたコントロールデータフローグラフを用いて、RTL(レジスタトランスファレベル)の所望のハードウェア(回路図)を自動合成(自動設計)する。この場合、ROM12には、FDやCD(光ディスク)などの可読記録媒体から制御プログラムおよびそのデータがインストールされている。
【0043】
制御部11はCPU(中央演算処理装置)で構成されており、制御プログラムに基づいて、図2に示すサイクルアキュレートモデル自動生成部113などの各種機能手段(機能部)による各処理手順を順次実行するようになっている。
【0044】
図2は、本発明の高位合成装置の実施形態1における制御部の要部構成を示すブロック図である。
【0045】
図2において、この高位合成装置は、ハードウェアの動作記述格納部格納部101と、構文解析・字句解析部102と、ブロック分割部103と、CDFG(コントロールデータフローグラフ)生成部104と、スケジューリング部105と、演算器・レジスタの割り当て部106と、データパス生成部107と、コントローラ生成部108と、RTL記述自動生成部112と、サイクルアキュレートモデル自動生成部113と、RTL記述格納部114と、汎用プログラミング言語モデル格納部115とを有している。
【0046】
本実施形態1の高位合成装置において、ハードウェアの動作記述格納部101からの動作記述は、構文解析・字句解析部102によって解析された後、ブロック分割部103で、並列動作の記述に従って、回路がブロック分割される。その後、CDFG生成部104では、分割された各ブロックにおいてコントロールデータフローグラフ(CDFG)が作成される。さらに、スケジューリング部105によって、CDFGの各ノードについて、スケジューリングが行われる。演算器・レジスタの割り当て部106で、スケジューリングされた各ノードについて、演算器やレジスタなどのハードウェアが割り当てられて、各コンポーネントについての動作情報が作成される。その作成された動作情報がコンポーネント動作情報格納部109に記憶される。
【0047】
次に、データパス生成部107では、演算器・レジスタの割り当て部106でハードウェアにアロケーション(割り当て)された各演算器やレジスタの接続関係から、回路のデータパス情報が作成される。その作成されたデータパス情報がデータパス情報格納部111に記憶される。
【0048】
さらに、コントローラ生成部108では、各ブロックのコントローラ回路が生成され、コントローラ回路の状態遷移を含むコントローラ情報が作成される。その作成されたコントローラ情報がコントローラ情報格納部110に記憶される。
【0049】
RTL記述自動生成部112では、演算器やレジスタなどのコンポーネント動作情報格納部109と、コントローラ情報格納部110と、回路のデータパス情報格納部111とからRTL記述が生成される。その生成されたRTL記述がRTL記述格納部114に記憶される。
【0050】
また、サイクルアキュレートモデル自動生成部113では、ハードウェアをサイクルアキュレートレベルでシミュレーション可能な汎用プログラミング言語モデルがサイクルアキュレートモデルとして生成される。その生成されたサイクルアキュレートモデルがサイクルアキュレートモデル格納部115に記憶される。
【0051】
本実施形態1の高位合成装置と従来の高位合成装置との違いは、このサイクルアキュレートモデル自動生成部113が設けられていることである。このサイクルアキュレートモデル自動生成部113で生成された汎用プログラミング言語モデルは、LSIなどのハードウェアを高位合成にて生成した際に、シミュレーションやデバッグを、クロック単位(サイクル単位)で確認できるようにしたものである。このサイクルアキュレートモデルは、汎用プログラミング言語で記述されているため、RTLレベルの各部分を検証する際に、正確かつ高速に検証を行うことができる。
【0052】
以下に、本発明の特徴構成である図2に示すサイクルアキュレートモデル自動生成部113およびサイクルアキュレートモデル格納部115について、さらに詳細に説明する。
【0053】
図3は、本発明の実施形態1として、図2のサイクルアキュレートモデル自動生成部113によるサイクルアキュレートモデル生成処理が行われる回路の一例を示す図である。
【0054】
図3において、この回路は、本発明の高位合成装置によって生成された回路であって、一つの定数201と、一つのレジスタ202と、一つのコントローラ203と、一つの外部入力ポート204と、一つの演算器205と、一つの外部出力ポート206とを有している。図3では、定数201にC、レジスタ202にR、コントローラ203にCTRL、演算器205にOP、外部入力ポート204にI、外部出力ポート206にOの記号を付けている。
【0055】
演算器205では、定数201およびレジスタRとの値が入力されて演算処理が行われ、演算結果が外部出力ポート206から出力されると共にレジスタ202に格納されるようになっている。また、演算器205は、外部入力ポート204の値によって状態が制御されるコントローラ203によって制御されるようになっている。
【0056】
図4は、図3に示す回路例について、図2のコンポーネント動作情報格納部109に格納されるコンポーネント動作情報の構成例を示す図である。ここでは、ハードウェアのコンポーネントとして、図3に示す定数201と、レジスタ202と、演算器205とについてのコンポーネント動作情報が含まれている。
【0057】
図4に示すように、各コンポーネントの動作情報には、それぞれの入出力ポートについての情報も含まれており、定数Cについては出力ポートO1、レジスタRについては入力ポートI1および出力ポートO1、演算器OPについては入力ポートI1、I2、I3および出力ポートO1の情報が含まれている。
【0058】
演算器OPでは、入力ポートI3の値が‘0’のときに、入力ポートI1の値と入力ポートI2の値とを加算する演算が行われ、I3の値が‘1’のときには、I1の値からI2の値を減算する演算が行われものとする。
【0059】
図5は、図3に示す回路例について、図2のコントローラ情報格納部110に格納されるコントローラ情報の構成例を示す図である。ここでは、図3に示すコントローラ203の情報が含まれている。
【0060】
図3のコントローラ203は、図5に示すように、“ステートA”と“ステートB”との二つのステート(状態)を有し、“ステートA”のときには‘0’が出力され、“ステートB”のときには‘1’が出力されるものとする。また、コントローラ203への入力が‘0’のときには、そのまま状態が維持され、コントローラへ203の入力が‘1’のときには状態が変化されるものとする。図6は、図3に示す回路例について、コントローラ203の状態遷移を図示したものである。
【0061】
図7は、図3に示す回路例について、図2のデータパス情報格納部111に格納されたデータパス情報の構成例を示す図である。ここでは、図3に示す回路のデータパス情報が含まれている。
【0062】
図7に示すように、例えば定数Cの出力ポートO1の値は、演算器OPの入力ポートI1に入力され、レジスタRの出力ポートO1の値は、演算器OPの入力ポートI2に入力され、コントローラCTRLの出力ポートO1の値は、演算器OPの入力ポートI3に入力される。また、外部入力ポートIの値は、コントローラCTRLの入力ポートI1に入力される。さらに、演算器OPの出力ポートO1の値は、外部出力ポートOに入力されると共にレジスタRの入力ポート11に入力される。
【0063】
上記構成により、図4に示すコンポーネント動作情報と、図5に示すコントローラ情報と、図7に示す回路のデータパス情報とから、この回路をサイクルアキュレートレベルでシミュレーション可能な汎用プログラミング言語モデル(サイクルアキュレートモデル)を自動生成するサイクルアキュレートモデル生成処理の各処理手順について説明する。
【0064】
まず、コンポーネント動作情報格納部109に格納されているコンポーネント動作情報から、この回路に含まれるレジスタRの情報を抽出する。図3に示す回路の場合、レジスタRの情報が抽出される。
【0065】
次に、レジスタRの状態(値)を計算するために、読み出し用変数と書き込み用変数とを用意し、バッファやレジスタにそれらの変数を格納するための領域を設ける。本実施形態1では、図8に示すように、読み出し用変数R_rdataと書き込み用変数R_wdataとして表す。
【0066】
読み出し用変数R_rdataは、シミュレーションしようとするクロックサイクルでのレジスタRの値を示している。また、書き込み用変数R_wdataは、シミュレーションしようとするクロックサイクルの次のクロックサイクルでのレジスタRの値を示している。
【0067】
次に、コントローラCTRLの状態を計算するために、読み出し用変数と書き込み用変数とを用意し、バッファやレジスタにそれらの変数を格納するための領域を設ける。本実施形態1では、図9に示すように、読み出し用cSTATEと書き込み用変数nSTATEとして表す。
【0068】
読み出し用変数cSTATEは、シミュレーションしようとするクロックサイクルでのコントローラCTRLのステート(状態)を示している。また、書き込み用変数nSTATEは、シミュレーションしようとするクロックサイクルの次のクロックサイクルでのコントローラCTRLのステートを示している。
【0069】
次に、コントローラの各状態を表す定数を用意する。図5に示すコントローラ情報格納部110に格納されたコントローラ情報では、コントローラCTRLのステートは、“ステートA”と“ステートB”とによって構成される。本実施形態1では、図10に示すように、“ステートA”をSTATE_Aとして表し、“ステートB”をSTATE_Bとして表す。
【0070】
さらに、次のクロックサイクルでのレジスタR(レジスタ202)の値R_wdata(書き込み用変数)を求める計算式を作成する。
【0071】
図7に示すデータパス情報格納部111に格納されたデータパス情報によれば、レジスタRの入力は、演算器OP(演算器205)の出力と接続されている。図11に、レジスタRの値R_wdata(書き込み用変数)の計算を行う式の一例を示す。この例では、演算器OPの計算は、関数execOP( )として表されており、定数C、レジスタRの値R_rdata(読み出し用変数)およびコントローラCTRL(コントローラ203)の値CTRL_O1が入力されて計算が行われる。
【0072】
図4に示すコンポーネント動作情報格納部109に格納されたコンポーネント動作情報によれば、演算器OPの処理は、入力I3が‘0’のときには入力I1とI2の値が加算され、‘1’のときにはI1からI2の値が減算される。この処理の例を図12に示している。この図12に示す例では、演算器OPの入力I1、I2、I3がそれぞれ、引数input1、input2、input3とされている。また、入力I3が‘0’でも‘1’でもないときには、エラー処理関数error( )が実行される。
【0073】
図7に示すデータパス情報格納部111に格納されたデータパス情報によれば、演算器OPの入力I1は定数Cの出力であり、また、入力I2はレジスタRの出力であり、さらに、入力I3はコントローラCTRLの出力である。
【0074】
よって、図11に示すレジスタRの書き込み用変数R_wdataの計算式においては、演算器OPの計算を行う関数execOP( )の引数として、input1には定数Cの値が、input2にはレジスタRの値R_rdata(読み出し用変数)が、input3にはコントローラCTRLの出力を示すCTRL_O1の値が代入されている。
【0075】
次に、コントローラCTRLの次の状態nSTATEを計算する式を作成する。
【0076】
図5に示すコントローラ情報格納部110に格納されたコントローラ情報によれば、コントローラCTRL(コントローラ203)の出力は、コントローラCTRLのステートが”ステートA“のときには‘0’で、”ステートB“のときには‘1’である。よって、コントローラCTRLの出力CTRL_O1は、図13に示すような式で表すことができる。
【0077】
また、図5に示すコントローラ情報によれば、コントローラCTRLは、入力I1の値が‘0’のときにはそのままの状態を維持し、‘1’のときには状態を遷移させる。また、図7に示すデータパス情報によれば、コントローラCTRLの入力I1は、外部入力Iの値である。これらの条件から、コントローラCTRLの次の状態を計算する式は、図14に示すように表すことができる。この図14に示す例では、コントローラCTRL203の入力I1が‘0’でも‘1’でもないときには、エラー処理関数error( )が実行される。
【0078】
次に、レジスタR(書き込み用変数R_wdata)の計算式と、コントローラCTRLの状態(書き込み用変数nSTATE)を計算する式とを実行するための関数を作成する。ハードウェアのシミュレーションでは、この関数を実行することによって、読み出し用変数を用いてレジスタの状態およびコントローラの状態を計算し、計算結果を書き込み用変数に保存するという計算ステップの処理が行われる。
【0079】
図15に、レジスタRの計算式と、コントローラCTRLの状態を計算する式とを実行するための関数の例calculate_circuit( )を示す。ここでは、図11に示すレジスタRの計算式と、図14に示すコントローラCTRLの状態を計算する式とが実行される。
【0080】
calculate_circuit( )において、レジスタRの計算式と、コントローラCTRLの状態を計算する式との実行順序は、変えてもよい。これは、各計算が、レジスタRの読み出し用記憶領域R_rdataと、コントローラCTRLの読み出し用記憶領域cSTATEとを用いて行われており、これらの値は、関数calculate_circuit( )の中では変更されない。よって、各計算の処理順序を変えても計算結果は変わらないからである。このように計算の順序を変えても良いため、C言語などの逐次処理系の言語を用いて、ハードウェアをサイクルアキュレートレベルでシミュレーション可能な汎用プログラミング言語モデルを生成する場合に、計算するハードウェアの順序を決める必要がなく、効率を向上させることができる。
【0081】
次に、読み出し用変数を更新するための関数を作成する。ハードウェアのシミュレーションでは、この関数を実行することによって、計算ステップで計算された結果(書き込み用変数の値)を、読み出し用変数に更新するという更新ステップの処理が行われる。
【0082】
図16に、レジスタRの計算式と、コントローラCTRLの状態を計算する式とによって計算された結果を、読み出し用変数に更新するための関数の例update_circuit( )を示す。ここでは、レジスタRの読み出し用R_rdataに書き込み用R_wdataの値が代入される。また、コントローラCTRLの読み出し用cSTATEに、書き込み用nSTATEの値が代入される。
【0083】
以上のようにして、図3に示す回路をサイクルアキュレートレベルでシミュレーション可能な汎用プログラミング言語モデル(サイクルアキュレートモデル格納部115に格納されるサイクルアキュレートモデル)が生成される。
【0084】
以上により、本実施形態1で生成されたサイクルアキュレートモデルによれば、図15に示す計算ステップの関数calculate_circuit( )を実行した後、図16に示す更新ステップの関数update_circuit( )を実行することによって、図3に示す回路の1クロックサイクル分の動作をシミュレーションすることができる。また、レジスタRの値や、コントローラCTRLの状態などが変数として保存されているので、任意のクロックサイクルにおいて、それらの値を検証することができる。例えば、ハードウェアのデバッグを行う場合に、あるクロックサイクルで何らかの不具合が発生しているのであれば、本実施形態1によって生成されたサイクルアキュレートモデルを用いて、そのクロックサイクルまでシミュレーションを実行させ、そのときのレジスタRの値やコントローラCTRLの状態を観測することによって、その不具合の原因を究明することができる。
【0085】
これに対して、特許文献1に開示されている従来技術では、クロック単位(サイクル単位)での確認ができず、イベント単位での確認しかできない。また、特許文献2に開示されている従来技術では、高位合成された回路の動作に対して、サイクル単位で同等の動作(真似)をさせることはできるが、その状態を記憶させる記憶部(レジスタや変数)が設けられていないため、サイクル単位での観測を行って不具合が生じている部分を検出することはできない。
【0086】
また、本実施形態1で生成されたサイクルアキュレートモデルによれば、HDLシミュレータによるデバッグよりも高速に実行することができる。また、C言語などの汎用プログラミング言語で記述されているので、安価なCコンパイラがあればシミュレーションを行うことができるため、高価なHDLシミュレータを用意する必要がない。本実施形態1のC言語で記述されたサイクルアキュレートモデルを用いた検証結果では、RTLの回路をHDLシミュレータのみで検証したときと比べて、6倍〜40倍程度も高速にシミュレーションを行うことができた。なお、LSIの内容によって、結果が大きく異なることは、容易に推測できると考えられるが、少なくとも高速にシミュレーションを実行することは可能である。
【0087】
(実施形態2)
本実施形態2では、コンポーネントとしてRAMなどの記憶装置が含まれている回路について、サイクルアキュレートレベルでシミュレーション可能な汎用プログラミング言語モデルを生成する例について説明する。
【0088】
図17は、本発明の実施形態2として、図2に示すサイクルアキュレートモデル自動生成部113Aによるサイクルアキュレートモデル生成処理が行われる回路の一例を示す図である。
【0089】
図17において、この回路は、メモリ305(RAM1)に対して、外部からアドレスデータ301と、書き込みデータ302と、書き込み許可信号303と、読み出し許可信号304とが入力されている。また、メモリ305からは、読み出しデータ306が外部へ出力されている。図17では、アドレスデータ301にはAddr、書き込みデータ302にはDin、書き込み許可信号303にはWen、読み出し許可信号304にはRen、メモリ305にはRAM1、読み出しデータ306にはDoutの記号を付けている。また、メモリ305の各要素にはE0、E1、E2、E3、・・・、En(nは自然数)の記号を付けている。
【0090】
図18に、図17に示すメモリ305の動作モデルを表すVHDL記述の一例を示している。図18に示す例では、メモリ305(RAM1)は、クロックに同期して値Doutの読み出し、またはDinの書き込み処理が行われる。1クロックサイクル中に読み出し、または書き込みが行われる要素は、アドレスAddrによって一つだけ示されるものとする。また、このメモリ305の動作モデルでは、書き込み要求Wenおよび読み出し要求Renは、値‘1’でアクティブとされ、RAM1に対するWenとRenとが同一クロックサイクル中に同時アクティブになった場合には、書き込み動作が優先されるようになっている。
【0091】
図19および図20に、図17に示すメモリ305について、図18に示すVHDL記述と同等の動作が行われるように、本実施形態2の汎用プログラミング言語モデル(サイクルアキュレートモデル)を生成した例を示している。
【0092】
図19では、読み出し用変数RAM1_rdataの値を用いてRAM1の状態を計算し、書き込み用変数RAM1_wdataに保存する計算ステップの処理を行うための関数として、calculate_RAM1( )が表されている。
【0093】
図20では、計算ステップで計算された結果(書き込み用変数の値)を、読み出し用変数に更新する更新ステップの処理を行うための関数として、update_RAM1_all( )が表されている。
【0094】
図19および図20に示す関数calculate_RAM1( )および関数update_RAM1_all( )において、RAM1の読み出し用変数は配列RAM1_rdata[ ]として表され、書き込み用変数は配列RAM1_wdata[ ]として表されている。RAM1_rdata[ ]は、シミュレーションしようとするクロックサイクルでのRAM1の値を表し、RAM1_wdata[ ]は、シミュレーションしようとするクロックサイクルの次のクロックサイクルでのRAM1の値を表す。また、RAM1の要素数を定数SIZEで表している。
【0095】
図19に示す関数calculate_RAM1( )では、図18に示すVHDL記述のモデルと同様に、書き込み要求Wenと読み出し要求Renとが同一クロックサイクル中に同時にアクティブになった場合に、書き込み動作が優先されている。
【0096】
図20に示す関数update_RAM1_all( )では、上記実施形態1において図3に示す回路を用いて説明したレジスタRの更新処理と同様に、読み出し用変数RAM1_rdata[ ]の値に、書き込み用変数RAM1_wdata[ ]の値が更新されている。
【0097】
ところで、図18に示すRAM1の動作モデルでは、1クロックサイクル中に読み出し、または書き込みが行われる要素は、アドレスAddrで示される一つの要素だけである。したがって、図20に示す関数update_RAM1_all( )は、図21に示す関数update_RAM1( )として表すことができる。
【0098】
図20に示す関数update_RAM1_all( )では、RAM1の全ての要素について更新処理が行われるのに対して、図21に示す関数update_RAM1( )では、計算ステップで用いられる関数calculate_RAM1( )において、書き込み処理が行われた要素についてのみ更新処理が行われるようになっている。
【0099】
図20に示す関数update_RAM1_all( )と、図21に示すupdate_RAM1( )とを比較すると、その処理時間は大きく異なっており、図20に示す関数update_RAM1_all( )に比べて、図21に示す関数update_RAM1( )によれば、高速に読み出し変数RAM1_rdataの更新処理を行うことができる。
【0100】
このように、メモリなどの記憶装置をサイクルアキュレートレベルでシミュレーション可能な汎用プログラミング言語モデルを生成するときに、計算ステップで計算された要素についてのみ、読み出し変数の更新処理を行うようにすると、シミュレーション時間を短縮化することができるため、効率を向上させることができる。
【0101】
(実施形態3)
図22は、本発明の実施形態3として、図2のサイクルアキュレートモデル自動生成部113Bによるサイクルアキュレートモデル生成処理が行われる回路の一例を示す図である。
【0102】
図22に示す例では、図3に示す回路が一つの回路ブロック207として表されている。回路ブロック207の外部出力ポート206は、回路ブロック208の外部入力ポート209および回路ブロック211の外部入力ポート212に接続されている。また、回路ブロック208において、外部入力ポート209はレジスタ210に接続され、回路ブロック211において、外部入力ポート212はレジスタ213に接続されている。図22では、外部入力ポート209にI2、外部入力ポート212にI3の記号を付けている。また、レジスタ210にR2、レジスタ213にはR3の記号を付けている。
【0103】
図23に、図22のレジスタR2の読み出し用変数R2_rdataの値を用いてレジスタR2の状態を計算し、書き込み用変数R2_wdataに保存する計算ステップの処理を行うための関数としてのcalculate_block2を示している。
【0104】
図24に、図22のレジスタR3の読み出し用変数R3_rdataの値を用いてレジスタR3の状態を計算し、書き込み用変数R3_wdataに保存する計算ステップの処理を行うための関数としてのcalculate_block3を示している。
【0105】
図23に示す関数calculate_block2( )と、図24に示す関数calculate_block3( )とにおいて、回路ブロック208および回路ブロック211に含まれるレジスタR2およびR3の次のクロックサイクルでの値(書き込み用変数R2_wdataおよびR3_wdata)を求める計算式は、いずれも、回路ブロック207からの外部出力Oの値を参照して行われる。
【0106】
図7に示す回路ブロック207のデータパス情報によれば、外部出力Oの値は演算器OPの計算式によって求められる。この演算器OPの計算式は、図11に示すレジスタRの計算式のように、関数execOP( )で表される。したがって、回路ブロック208の計算ステップと、回路ブロック211の計算ステップにおいては、何れも、関数execOP( )が実行される。
【0107】
本実施形態3では、この関数execOP( )の計算結果が一度得られると、そのときのクロックサイクルを記憶しておき、その後、同一のクロックサイクルのシミュレーションにおいて、再びexecOP( )が実行されても、同じ計算を行わないように工夫をする。
【0108】
図25に、このような工夫を施した関数execOP( )の例を示している。
【0109】
図25に示す関数execOP( )では、クロックサイクルの値を示すための二つの変数cycle_last_calculatedと、cycle_current_calculateとが用いられている。変数cycle_last_calculatedは、関数execOP( )の処理において、最後に演算器OPによる計算が実行されたシミュレーションのクロックサイクルの値を表している。また、変数cycle_current_calculateは、シミュレーションしようとするクロックサイクルの値を表している。
【0110】
図25に示すように、変数cycle_current_calculateが、変数cycle_last_calculatedの値に満たない場合には、それは、関数execOP( )がシミュレーションしようとするクロックサイクルにおいて、まだ一度も実行されていないことを示している。このときには、演算器OPによる計算が行われ、変数cycle_last_calculatedの値が、変数cycle_current_calculateの値に更新される。また、それ以外の場合には、関数execOP( )がシミュレーションしようとするクロックサイクルにおいて、実行済みであることを示しているので、計算は行われない。
【0111】
これによって、同一クロックサイクル中に複数回、関数execOP( )が実行されても、演算器OPによる計算が実行されるのは1回だけである。したがって、シミュレーション時間を短縮化することができ、効率を向上させることができる。
【0112】
以上により、本実施形態1〜3によれば、図2に示すように、ハードウェアの動作が表現された動作記述格納部101からの動作記述を解析し、その動作解析情報からレジスタトランスファーレベルのハードウェアを高位合成する高位合成装置において、動作が割り当てられたコンポーネントの動作情報を格納するコンポーネント動作情報格納部109と、それらのコンポーネントの接続を示すデータパス情報を格納するデータパス情報格納部111と、コントローラの状態遷移情報を格納するコントローラ情報格納部110とから、サイクルアキュレートモデル生成部113(または113A、113B)によって、レジスタの状態を計算するための計算式と、コントローラの状態を計算するための計算式とを作成し、作成された計算式を、サイクルアキュレートレベルでハードウェアを検証するための汎用プログラミング言語による記述として生成してサイクルアキュレートモデルを作成する。これによって、従来のHDLシミュレータを用いずに、ハードウェアの検証をクロックサイクル単位で行う汎用プログラミング言語モデルを作成することができる。
【0113】
【発明の効果】
以上により、本発明によれば、ハードウェアのサイクルアキュレートレベルでの検証を、従来のHDLシミュレータによる検証に比べて、高速かつ安価に行うことができる。また、任意のクロックサイクルにおいて、ハードウェアを構成するレジスタの状態やコントローラの状態、メモリなどの記憶装置の状態を観測することができるため、ハードウェアのデバッグ効率を向上させることができる。
【0114】
また、ハードウェアを構成するレジスタ、コントローラ、メモリなどの記憶装置の各状態をシミュレーションする際に、読み出し用変数と書き込み用変数との二つの変数を設定することによって、それらの計算順序を決定する必要がないため、モデルの生成を効率良く行うことができる。
【0115】
また、メモリなどの記憶装置をシミュレーションするときには、計算処理が行われた要素についてのみ、更新処理を行うことによって、シミュレーション速度をさらに高速化させることができる。
【0116】
さらに、同一クロックサイクルに重複して計算が行われる場合に、計算結果が同じである演算器や出力ポートなどの計算については、シミュレーション実行中のクロックサイクルをチェックし、そのクロックサイクルにおいて既に計算済みであれば、それらの出力を求める計算を重複して行わないようにすることによって、シミュレーション速度をさらに高速化させることができる。
【0117】
システムLSIの設計において、ハードウェアとソフトウェアとからなるシステムを検証するときに、本発明の高位合成装置を用いてハードウェアを汎用プログラミング言語モデルとして生成することによって、そのオブジェクトコードと、ソフトウェアのオブジェクトコードとをリンクさせることが可能であり、ハードウェアのシミュレーションとソフトウェアのシミュレーションとを、クロックサイクルレベルで同期を取りながら実行させることができる。したがって、ハードウェアとソフトウェアとからなるシステムについて、サイクルアキュレートレベルでのデバッグおよび検証を効率良く行うことができる。
【図面の簡単な説明】
【図1】本発明の高位合成装置の実施形態1における要部構成を示すブロック図である。
【図2】本発明の高位合成装置の実施形態1における制御部の構成例を示すブロック図である。
【図3】本発明の実施形態1として、ハードウェアをサイクルアキュレートレベルでシミュレーション可能な汎用プログラミング言語モデルが生成される回路の一例を示す回路図である。
【図4】図3に示す回路のコンポーネント動作情報を示す図である。
【図5】図3に示す回路のコントローラ情報を示す図である。
【図6】図3に示す回路におけるコントローラの状態遷移を示す図である。
【図7】図3に示す回路のデータパス情報を示す図である。
【図8】図3に示す回路例について、レジスタの読み出し用記憶領域と、書き込み用記憶領域とを、C言語の変数として表す記述を示す図である。
【図9】図3に示す回路例について、コントローラの読み出し用記憶領域と、書き込み用記憶領域とを、C言語の変数として表す記述を示す図である。
【図10】図3に示す回路例について、コントローラの状態を表すためのC言語の定数を定義する記述を示す図である。
【図11】図3に示す回路例について、レジスタの状態を計算する計算式を示す図である。
【図12】図3に示す回路例について、演算器の計算を実行する式を、C言語の関数として示す記述を示す図である。
【図13】図3に示す回路例について、コントローラの出力値を表す式を示す図である。
【図14】図3に示す回路例について、コントローラの状態を計算する計算式を示す図である。
【図15】図3に示す回路例について、計算ステップの処理を示す記述を示す図である。
【図16】図3に示す回路例について、更新ステップの処理を示す記述を示す図である。
【図17】本発明の実施形態2として、ハードウェアをサイクルアキュレートレベルでシミュレーション可能な汎用プログラミング言語モデルが生成される回路の一例を示す回路図である。
【図18】図17に示す回路例について、メモリの動作モデルを表すVHDL記述を示す図である。
【図19】図17に示す回路例について、計算ステップの処理を示す記述を示す図である。
【図20】図17に示す回路例について、更新ステップの処理を示す記述を示す図である。
【図21】図17に示す回路例について、効率化を図った更新ステップの処理例を示す記述を示す図である。
【図22】本発明の実施形態3として、ハードウェアをサイクルアキュレートレベルでシミュレーション可能な汎用プログラミング言語モデルが生成される回路の一例を示す回路図である。
【図23】図22に示す回路例について、ブロック2に含まれるレジスタの計算ステップの処理を示す記述を示す図である。
【図24】図22に示す回路例について、ブロック3に含まれるレジスタの計算ステップの処理を示す記述を示す図である。
【図25】図22に示す回路例について、計算を重複して行わない工夫を施した処理例を示す記述を示す図である。
【符号の説明】
10 高位合成装置
11 制御部
12 ROM
13 RAM
14 データベース
15 操作部
16 表示部
101 ハードウェアの動作記述格納部
102 構文解析・字句解析部
103 ブロック分割部
104 CDFG生成部
105 スケジューリング部
106 演算器・レジスタの割り当て部
107 データパス生成部
108 コントローラ生成部
109 コンポーネント動作情報格納部
110 コントローラ情報格納部
111 データパス情報格納部
112 RTL動作記述自動生成部
113 サイクルアキュレートモデル自動生成部
114 RTL記述格納部
115 サイクルアキュレートモデル格納部
201 定数(定数C)
202、210、213 レジスタ(レジスタR、R2、R3)
203 コントローラ(コントローラCTRL)
204、209、212 外部入力ポート(外部入力ポートI、I1、I2)205 演算器(演算器OP)
206 外部出力ポート(外部出力ポートO)
207 回路ブロック1
208 回路ブロック2
211 回路ブロック3
301 アドレスデータ
302 書き込みデータ
303 書き込み許可信号
304 読み出し許可信号
305 メモリ(RAM1)
306 読み出しデータ

Claims (16)

  1. ハードウェアの動作が表現された動作記述を解析し、該解析された動作情報からレジスタトランスファーレベルのハードウェアを高位合成する高位合成装置において、
    動作が割り当てられたコンポーネントの動作情報と、これらのコンポーネントの接続を示すデータパス情報と、コントローラの状態遷移情報とから、レジスタの状態を計算するための計算式と、コントローラの状態を計算するための計算式とを作成し、これらの作成された各計算式を、サイクルアキュレートレベルでハードウェアを検証するための汎用プログラミング言語による記述として生成するサイクルアキュレートモデル生成手段を有する高位合成装置。
  2. 前記サイクルアキュレートモデル生成手段は、前記レジスタの状態およびコントローラの状態を保存するためにそれぞれ、読み出し用変数および書き込み用変数の2種類の変数と、これらの変数を格納するための読み出し用記憶領域および書き込み用記憶領域とを設定する請求項1に記載の高位合成装置。
  3. 前記サイクルアキュレートモデル生成手段は、1クロックサイクルの検証を行うために、前記レジスタの状態を計算するための計算式およびコントローラの状態を計算するための計算式を用いて、読み出し用変数の値からレジスタおよびコントローラの状態を計算し、この計算結果を書き込み用変数として保存させる関数と、書き込み用変数として保存された計算結果を読み出し用変数として保存させる関数とを作成し、これらの作成された各関数の式を汎用プログラミング言語による記述として生成する請求項2に記載の高位合成装置。
  4. 前記サイクルアキュレートモデル生成手段は、前記コンポーネントに記憶装置が含まれている場合に、該記憶装置の状態を計算するための計算式を作成し、この作成した計算式を、サイクルアキュレートレベルでハードウェアを検証するための汎用プログラミング言語による記述として生成する請求項1〜3の何れかに記載の高位合成装置。
  5. 前記サイクルアキュレートモデル生成手段は、前記記憶装置の状態を保存するために、読み出し用変数および書き込み用変数の2種類の各変数と、これらの変数を格納するための読み出し用記憶領域および書き込み用記憶領域とを設定する請求項4に記載の高位合成装置。
  6. 前記サイクルアキュレートモデル生成手段は、1クロックサイクルの検証を行うために、前記記憶装置の状態を計算するための計算式を用いて、読み出し用変数の値から記憶装置の状態を計算し、この計算結果を書き込み用変数として保存させる関数と、書き込み用変数として保存された計算結果を読み出し用変数として保存させる関数とを作成し、これらの作成した関数の式を汎用プログラミング言語による記述として生成する請求項5に記載の高位合成装置。
  7. 請求項1〜6の何れかに記載の高位合成装置を用いて、
    該高位合成装置のサイクルアキュレートモデル生成手段が、動作が割り当てられたコンポーネントの動作情報と、これらのコンポーネントの接続を示すデータパス情報と、コントローラの状態遷移情報とから、レジスタの状態を計算するための計算式と、コントローラの状態を計算するための計算式とを作成し、これらの作成された計算式を、サイクルアキュレートレベルでハードウェアを検証するための汎用プログラミング言語による記述として生成するサイクルアキュレートレベルでのハードウェア検証用プログラミング言語モデルを生成するサイクルアキュレートモデル生成ステップを実行するハードウェア検証用モデル生成方法。
  8. 前記コンポーネントに記憶装置が含まれている場合に、請求項4〜6の何れかに記載の高位合成装置を用いて前記サイクルアキュレートモデル生成手段が、記憶装置の状態を計算する計算式を作成し、この作成された計算式を、サイクルアキュレートレベルでハードウェアを検証するための汎用プログラミング言語による記述として生成する請求項7に記載のハードウェア検証用モデル生成方法。
  9. 請求項1〜6の何れかに記載の高位合成装置のサイクルアキュレートモデル生成手段によって作成された計算式を用いて、ハードウェア検証手段が、レジスタの状態およびコントローラの状態を計算し、この計算結果を用いてハードウェアの動作を検証するステップを実行するハードウェア検証方法。
  10. 前記コンポーネントに記憶装置が含まれている場合に、請求項4〜6の何れかに記載の高位合成装置によって作成された計算式を用いて、
    前記ハードウェア検証手段が、記憶装置の状態を計算し、この計算結果を用いてハードウェアの動作を検証するステップを実行する請求項9に記載のハードウェア検証方法。
  11. 請求項2、3、5または6に記載の高位合成装置によって作成された計算式を用いて、前記ハードウェア検証手段が、
    読み出し用変数の値からレジスタの状態およびコントローラの状態を計算し、計算結果を書き込み用変数として保存させる計算ステップと、
    該計算ステップで得られた計算結果を読み出し用変数として保存させる更新ステップとを実行することによって、ハードウェアの1クロックサイクルの検証を行う請求項9に記載のハードウェア検証方法。
  12. 請求項5または6に記載の高位合成装置によって作成された計算式を用いて、前記ハードウェア検証手段が、
    読み出し用変数の値から記憶装置の状態を計算し、この計算結果を書き込み用変数として保存させる計算ステップと、
    該計算ステップで得られた計算結果を読み出し用変数として保存させる更新ステップとを実行することによって、ハードウェアの1クロックサイクルの検証を行う請求項10に記載のハードウェア検証方法。
  13. 前記更新ステップにおいて、記憶装置の状態については、計算ステップで計算された要素についてのみ更新動作を行う請求項12に記載のハードウェア検証方法。
  14. 前記計算ステップにおいて、同一クロックサイクルに重複して計算を行っても計算結果が同じであるコンポーネントについては、計算実行中のクロックサイクルで既に計算済みであれば、それらの計算を重複して行わないようにする請求項11〜13の何れかに記載のハードウェア検証方法。
  15. 請求項7〜14の何れかに記載の方法の各処理手順をコンピュータに実行させる制御プログラム。
  16. 請求項15に記載の制御プログラムが記録されたコンピュータ読み取り可能な可読記録媒体。
JP2003147025A 2003-05-23 2003-05-23 高位合成装置、ハードウェア検証用モデル生成方法、ハードウェア検証方法、制御プログラムおよび可読記録媒体 Expired - Fee Related JP4175953B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2003147025A JP4175953B2 (ja) 2003-05-23 2003-05-23 高位合成装置、ハードウェア検証用モデル生成方法、ハードウェア検証方法、制御プログラムおよび可読記録媒体
US10/850,153 US7266791B2 (en) 2003-05-23 2004-05-21 High level synthesis device, method for generating a model for verifying hardware, method for verifying hardware, control program, and readable recording medium

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2003147025A JP4175953B2 (ja) 2003-05-23 2003-05-23 高位合成装置、ハードウェア検証用モデル生成方法、ハードウェア検証方法、制御プログラムおよび可読記録媒体

Publications (2)

Publication Number Publication Date
JP2004348606A JP2004348606A (ja) 2004-12-09
JP4175953B2 true JP4175953B2 (ja) 2008-11-05

Family

ID=33533675

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2003147025A Expired - Fee Related JP4175953B2 (ja) 2003-05-23 2003-05-23 高位合成装置、ハードウェア検証用モデル生成方法、ハードウェア検証方法、制御プログラムおよび可読記録媒体

Country Status (2)

Country Link
US (1) US7266791B2 (ja)
JP (1) JP4175953B2 (ja)

Families Citing this family (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060277534A1 (en) * 2005-06-07 2006-12-07 Atsushi Kasuya Evaluation of a temporal description within a general purpose programming language
JP2007120427A (ja) * 2005-10-28 2007-05-17 Fujitsu Ten Ltd 始動制御装置
US7472361B2 (en) * 2005-12-30 2008-12-30 Cadence Design Systems, Inc. System and method for generating a plurality of models at different levels of abstraction from a single master model
JP4820654B2 (ja) * 2006-02-06 2011-11-24 富士通セミコンダクター株式会社 サイクルシミュレーション方法、サイクルシミュレーションプログラム、該プログラムを記録した記録媒体、およびサイクルシミュレータ
US7606694B1 (en) * 2006-03-24 2009-10-20 Xilinx, Inc. Framework for cycle accurate simulation
JP4293562B2 (ja) * 2006-11-07 2009-07-08 シャープ株式会社 ハードウェア検証用プログラミング記述生成装置、高位合成装置、ハードウェア検証用プログラミング記述生成方法、ハードウェア検証用プログラム生成方法、制御プログラムおよび可読記録媒体
JP2009157440A (ja) * 2007-12-25 2009-07-16 Toshiba Corp 高位合成装置、高位合成システム、及び高位合成方法
JP5050985B2 (ja) * 2008-04-30 2012-10-17 富士通株式会社 検証支援プログラム、検証支援装置および検証支援方法
JP5163350B2 (ja) 2008-05-19 2013-03-13 富士通株式会社 検証支援プログラム、検証支援装置および検証支援方法
JP5328447B2 (ja) * 2009-03-30 2013-10-30 シャープ株式会社 高位合成装置および高位合成方法、半導体集積回路の製造方法、制御プログラム、可読記憶媒体
US8965768B2 (en) * 2010-08-06 2015-02-24 At&T Intellectual Property I, L.P. System and method for automatic detection of abnormal stress patterns in unit selection synthesis
KR101211152B1 (ko) 2010-12-02 2012-12-11 경희대학교 산학협력단 가상 현실 게임을 위한 행위분석 기반 스크립트 생성 장치 및 방법
US10192014B2 (en) * 2015-08-27 2019-01-29 Mitsubishi Electric Corporation Circuit design support apparatus and computer readable medium
KR102350941B1 (ko) * 2021-05-25 2022-01-14 주식회사 바움디자인시스템즈 집적 회로 설계 방법 및 이를 수행하는 집적 회로 설계 시스템

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH10149382A (ja) 1996-11-20 1998-06-02 Matsushita Electric Ind Co Ltd プログラム言語により電子回路を設計する装置
US6052524A (en) * 1998-05-14 2000-04-18 Software Development Systems, Inc. System and method for simulation of integrated hardware and software components
JP3825572B2 (ja) * 1999-01-18 2006-09-27 株式会社東芝 半導体集積回路の設計検証装置、方法及び記憶媒体
JP2001014356A (ja) 1999-06-28 2001-01-19 Toshiba Corp プログラミング言語モデル作成可能な高位合成装置、及びプログラミング言語モデル作成可能な高位合成方法
US6993469B1 (en) * 2000-06-02 2006-01-31 Arm Limited Method and apparatus for unified simulation
EP1301875A2 (en) * 2000-07-21 2003-04-16 Telecom Italia Lab S.p.A. Method and system for verifying modules destined for generating circuits
US20020152061A1 (en) * 2001-04-06 2002-10-17 Shintaro Shimogori Data processing system and design system
US6952816B2 (en) * 2002-10-07 2005-10-04 Hewlett-Packard Development Company, L.P. Methods and apparatus for digital circuit design generation

Also Published As

Publication number Publication date
US20050010387A1 (en) 2005-01-13
US7266791B2 (en) 2007-09-04
JP2004348606A (ja) 2004-12-09

Similar Documents

Publication Publication Date Title
KR100921314B1 (ko) 검증결과 재활용 기법을 채용한 고성능 설계검증 장치 및이를 활용한 신속한 설계검증 방법
JP4175953B2 (ja) 高位合成装置、ハードウェア検証用モデル生成方法、ハードウェア検証方法、制御プログラムおよび可読記録媒体
US20060130029A1 (en) Programming language model generating apparatus for hardware verification, programming language model generating method for hardware verification, computer system, hardware simulation method, control program and computer-readable storage medium
JP6448195B2 (ja) ランタイムにfpgaの信号値にランダムにアクセスするための方法、データ処理装置、コンピュータプログラム、ディジタル記憶媒体及びfpgaビルドの実施方法
US20210287120A1 (en) Machine learning-based prediction of metrics at early-stage circuit design
US10671785B1 (en) Framework for reusing cores in simulation
Liu et al. Automatic generation of assertions from system level design using data mining
KR20080055913A (ko) 집적회로 디자인 시뮬레이션을 위한 어써션의 개발 방법 및시스템과 장치
US10078500B2 (en) Method and system for automatic code generation
JP5034916B2 (ja) 性能評価モデル生成方法、システム性能評価方法、及び性能評価モデル生成装置
US7606694B1 (en) Framework for cycle accurate simulation
US7992112B2 (en) Hardware verification programming description generation apparatus, high-level synthesis apparatus, hardware verification programming description generation method, hardware verification program generation method, control program and computer-readable recording medium
US6813599B1 (en) Efficient memory structure simulation for sequential circuit design verification
US10223077B2 (en) Determination of signals for readback from FPGA
US7051301B2 (en) System and method for building a test case including a summary of instructions
Cortés Porto et al. Handling causality and schedulability when designing and prototyping cyber-physical systems
KR20230117364A (ko) 클록 인식 시뮬레이션 벡터 프로세서
JP5001126B2 (ja) ハードウェア検証用プログラミング記述生成装置、ハードウェア検証用プログラミング記述生成方法、制御プログラムおよび可読記録媒体
KR20060066634A (ko) 검증 성능과 검증 효율성을 높이는 동적검증 기법 방식의검증 장치 및 이를 이용한 검증 방법론
Ferro et al. Runtime verification of typical requirements for a space critical SoC platform
US20220300690A1 (en) Incremental compilation for fpga-based systems
Chang et al. InVerS: an incremental verification system with circuit similarity metrics and error visualization
US20240111660A1 (en) Managing high performance simulation representation of an emulation system
Jana et al. Planning based guided reconstruction of corner cases in architectural validation
US20240028812A1 (en) Waveform capture using multicycle path properties

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20050810

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20080501

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20080515

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20080711

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: 20080819

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: 20080819

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

Free format text: PAYMENT UNTIL: 20110829

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

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

Free format text: PAYMENT UNTIL: 20110829

Year of fee payment: 3

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

Free format text: PAYMENT UNTIL: 20120829

Year of fee payment: 4

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

Free format text: PAYMENT UNTIL: 20120829

Year of fee payment: 4

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

Free format text: PAYMENT UNTIL: 20130829

Year of fee payment: 5

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: R3D04

LAPS Cancellation because of no payment of annual fees