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

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

Info

Publication number
JP2008117318A
JP2008117318A JP2006302124A JP2006302124A JP2008117318A JP 2008117318 A JP2008117318 A JP 2008117318A JP 2006302124 A JP2006302124 A JP 2006302124A JP 2006302124 A JP2006302124 A JP 2006302124A JP 2008117318 A JP2008117318 A JP 2008117318A
Authority
JP
Japan
Prior art keywords
clock
hardware
model
block
description
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.)
Granted
Application number
JP2006302124A
Other languages
English (en)
Other versions
JP4293562B2 (ja
Inventor
Takahiro Morishita
貴弘 森下
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 JP2006302124A priority Critical patent/JP4293562B2/ja
Priority to US11/929,304 priority patent/US7992112B2/en
Publication of JP2008117318A publication Critical patent/JP2008117318A/ja
Application granted granted Critical
Publication of JP4293562B2 publication Critical patent/JP4293562B2/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
    • G06F30/32Circuit design at the digital level
    • G06F30/33Design verification, e.g. functional simulation or model checking
    • G06F30/3308Design verification, e.g. functional simulation or model checking using simulation
    • G06F30/3312Timing analysis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design
    • G06F30/32Circuit design at the digital level
    • G06F30/327Logic synthesis; Behaviour synthesis, e.g. mapping logic, HDL to netlist, high-level language to RTL or netlist

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)

Abstract

【課題】多相クロックにより動作するハードウェアをサイクル精度レベルで検証可能なモデルを汎用プログラミング記述として生成する。
【解決手段】多相クロックにより動作するハードウェアの動作記述47を構文解析・字句解析処理手段41により解析し、クロックドメイン分割処理手段42によりハードウェアを各クロック系統毎にクロックドメインに分割して、CDFG生成手段43により各クロックドメイン毎にCDFG48A、48B、・・を生成する。そのCDFG48A、48B、・・を、スケジューリング・ステート割り振り手段44で各ブロックのクロック周波数によりスケジューリングしてステートに割り振り、サイクル精度モデル生成手段45によりステート毎にハードウェアのサイクル精度モデルを汎用プログラミング言語により表現した記述として生成する。
【選択図】図2

Description

本発明は、多相クロックにより回路動作するハードウェアの処理動作をサイクル精度レベルで検証可能なモデルを汎用プログラミング記述として生成するハードウェア検証用プログラミング記述生成装置、高位合成装置、このハードウェア検証用プログラミング記述生成装置を用いたハードウェア検証用プログラミング記述生成方法、これを用いたハードウェア検証用プログラム生成方法、このハードウェア検証用プログラミング記述生成方法の各処理手順をコンピュータに実行させるためのハードウェア検証用プログラミング記述生成プログラムおよび、これを用いたハードウェア検証用プログラムなどの制御プログラムおよびこの制御プログラムが記録されたコンピュータ読み取り可能な可読記憶媒体に関する。
従来のシステムLSIの開発では、設計されたハードウェアの回路動作がシステムに与えられた要求仕様を満たすか否かを検証する必要がある。従来は、サイクル精度レベルの検証を行うために、HDL(Hardware Description Language)シミュレータが用いられていた。ここで述べるサイクル精度レベルとは、ハードウェアの回路動作について、そのハードウェアの状態をクロックサイクル単位で示すことが可能な精度レベルのことである。例えば、クロックの立ち上がりに同期して動作するハードウェアについては、そのクロックの立ち上がりエッジにおけるハードウェア中のレジスタやメモリなどの記憶装置の状態が示されることになる。HDLシミュレータでは、動作速度などのパフォーマンス測定が行われ、与えられた仕様を満たしているか否かが検証される。一般的に、HDLシミュレータでは、VHDLなどのハードウェア記述言語により記述された回路動作がシミュレーションされている。HDLシミュレータによって、回路内の信号の変化がクロック周期よりも短い時間単位により監視され、その変化が接続される信号に伝搬されるというイベント駆動方式によってシミュレーションが行われている。
さらに、従来のシステムLSI開発では、多相クロックを用いてハードウェア設計を行うというケースがある。この場合には、ハードウェアを設計する際に、まず、関連性を有する処理がまとめられて機能ブロックとして分割される。ハードウェアに要求される機能仕様を満たすため、動作を高速に行う必要がある機能ブロックについてはクロック周期が短くなるようにクロック周波数が高く設定されるという手法が用いられる。一方、動作を高速に行う必要がない機能ブロックについては、クロック周期が長くなるようにクロック周波数が低く設定される。このように、1つのハードウェアに対して異なるクロック周期により回路動作する機能ブロックが含まれるようにハードウェアが設計されて、そのハードウェアの回路動作が検証される。
例えば特許文献1には、ハードウェアの動作記述を解析し、ハードウェアの動作記述からコントロールデータフローグラフ(CDFG)を生成して、ステートに分割されたハードウェアの動作情報とデータパス情報とから全演算の動作を示す動作記述を作成することによって、汎用プログラミング言語による検証モデルを生成して、ハードウェアのサイクル精度レベルの検証を高速に行うことができるという手法が開示されている。ハードウェアの動作記述においては、構造に関する情報は含まず、ハードウェアにより行われる処理動作のみが記述されている。また、CDFGにおいては、ハードウェアにより行われる演算処理などの動作がノードで表され、データの流れがノード間を接続する枝によって表されている。
例えば特許文献2には、HDLシュミレータに比べて高速にハードウェアの処理動作を検証することを目的として、ハードウェアのクロック精度検証用プログラミング記述を生成する手法が開示されている。これを図6を用いて説明する。
図6は、従来のハードウェア検証用プログラミング記述生成装置の要部構成例を示すブロック図である。
図6に示すように、まず、動作合成手段61が単相クロックで回路動作するハードウェアの動作記述71からCDFGデータ72を生成する。次に、ハードウェア仕様により要求される動作周波数によって、CDFGデータ72をスケジューリングしてステート毎に割り振った後に、クロック精度モデル生成手段62が、CDFGデータ72に含まれるノードの動作情報を用いて各ノードの動作モデルを生成し、ノードの接続情報を用いて各ノードの動作モデルを計算する際の順序付けを行うことによって、各ステートでシミュレーション可能なモデルを生成して、ハードウェアをサイクル精度レベルで検証可能とするHWクロック精度記述73を生成する。
例えば特許文献3には、本発明でも用いる高位合成手法の従来技術が開示されている。
特開2001−14356号公報 特開2006−139729号公報 特開平5−101141号公報
しかしながら、上記従来のハードウェア検証方法には、以下のような問題が生じる。
HDLシミュレータを用いてイベント駆動方式によりシミュレーションを進める従来の検証方法では、シミュレーションの時間単位がクロック周期よりも短い。よって、ハードウェアをサイクル精度レベルで検証するためには、冗長、かつ、無駄な計算が多くなり、効率が悪いという問題がある。また、検証される回路の規模が大きい場合や、用いられるテストパターンが長い場合には、シミュレーションに必要とされる計算量が非常に多くなり過ぎて、シミュレーションを行うために時間がかかるという問題がある。さらに、HDLシミュレータは高価であり、システムLSIの開発コストが増えるという問題もある。
多相クロックにより回路動作するハードウェアを、イベント駆動方式のHDLシミュレータを用いて検証すると、上述したように、シミュレーションのために時間がかかる。
特許文献1に開示されている従来のサイクル精度レベルの検証方法において、検証モデルは、単相クロックにより回路動作するハードウェアを対象としており、多相クロックにより動作するハードウェアを特許文献1に開示されている検証方法により検証することはできない。即ち、多相クロックにより動作するハードウェアを検証可能なモデルは生成できない。
また、特許文献2に開示されている従来のサイクル精度レベルの検証方法においても、生成されたHWクロック精度記述73は、単相クロックにより回路動作するハードウェアを回路対象としており、多相クロックにより動作するハードウェアを検証することはできない。
このように、上記従来のハードウェア検証方法では、多相クロックにより動作するハードウェアの設計および検証期間が大幅に長くなり、また、開発コストの増加を招くという問題がある。
本発明は、上記従来の問題を解決するもので、多相クロックにより回路動作するハードウェアをサイクル精度レベルで検証可能なモデルを汎用プログラミング記述として生成することにより、高速かつ安価にハードウェアの回路動作を検証し、ハードウェアの設計および検証期間を短縮して、低コストによりシステムLSIの開発を実現できるハードウェア検証用プログラミング記述生成装置、高位合成装置、このハードウェア検証用プログラミング記述生成装置を用いたハードウェア検証用プログラミング記述生成方法、これを用いたハードウェア検証用プログラム生成方法、このハードウェア検証用プログラミング記述生成方法をコンピュータによって実行するためのハードウェア検証用プログラミング記述生成プログラムである制御プログラムおよび、この制御プログラムが記録されたコンピュータ読み取り可能な可読記憶媒体を提供することを目的とする。
本発明のハードウェア検証用プログラミング記述生成装置は、多相クロックにより回路動作するハードウェアについて、構造に関する情報は含まず、処理動作のみが記述された動作記述から、該ハードウエアを各クロック系統毎のブロックに分割し、分割された各ブロック毎に動作合成処理を行う動作合成処理手段と、該動作合成処理されたデータを用いて該ハードウェアをサイクル精度レベルで検証可能なクロック精度モデルを生成するクロック精度モデル生成手段とを有するものであり、そのことにより上記目的が達成される。
また、好ましくは、本発明のハードウェア検証用プログラミング記述生成装置において、前記サイクル精度レベルで前記ハードウェアをシミュレーションする際に前記各クロック系統毎のブロックについて、前記クロック精度モデルの計算が行われる順番を制御するための制御モデルを生成するクロック制御モデル生成手段をさらに有する。
さらに、好ましくは、本発明のハードウェア検証用プログラミング記述生成装置における動作合成処理手段は、前記ハードウェアの動作記述を解析して該ハードウェアの動作情報を得る動作記述解析手段と、該ハードウェアの動作情報から該ハードウェアを前記各クロック系統毎にブロックに分割するクロックドメイン分割処理手段と、該各クロック系統毎のブロックについて、該ハードウェアの動作記述から、該ハードウェアの動作がノードと該ノード間を接続する枝とを用いて表現されたコントロールデータフローグラフを生成するコントロールデータフローグラフ生成手段とを有する。
さらに、好ましくは、本発明のハードウェア検証用プログラミング記述生成装置におけるクロック精度モデル生成手段は、前記動作合成処理されたデータとしてのコントロールデータフローグラフの各ノードを、該各ブロックのクロック周波数によりスケジューリングして各ステートに割り振るスケジューリング・ステート割り振り手段と、該各ステート毎に、スケジューリング・ステート割り振り結果を用いて、該ハードウェアをサイクル精度により検証可能な動作モデルを前記クロック精度モデルとして生成するサイクル精度モデル生成手段とを有する。
さらに、好ましくは、本発明のハードウェア検証用プログラミング記述生成装置において、前記クロック精度モデルおよび前記制御モデルのうちの少なくともいずれかを汎用プログラミング言語により表現された記述として生成する。
さらに、好ましくは、本発明のハードウェア検証用プログラミング記述生成装置におけるクロック制御モデル生成手段は、前記各クロック系統毎のブロックについて前記クロック精度モデルの計算が実行される時刻を比較し、該計算が実行されるまでの時間が最も短い時間を選定すると共に、該各クロック系統毎のブロックの計算が実行されるブロックとして選定し、選定されたブロックについては次に該クロック精度モデルの計算が実行される時刻を当該ブロックにおけるクロック周期の値に更新し、当該ブロック以外のブロックについては該クロック精度モデルが計算されるまでの時間から該最も短い時間を減算し、順次同様に、計算が実行されるまでの時間が最も短い時間およびブロックの選定処理と、該クロック精度モデルの計算が実行される時刻を更新する処理とを繰り返す。
さらに、好ましくは、本発明のハードウェア検証用プログラミング記述生成装置におけるクロック制御モデル生成手段は、前記各クロック系統毎のブロックにおけるクロック周期の最大公約数となる時間を計算し、該各クロック系統毎のブロックについて前記クロック精度モデルの計算が実行される時刻を示すカウンタの値に該最大公約数となる時間を加算し、該各クロック系統毎のブロックにおけるクロック周期と該カウンタの値とが一致したブロックについては該クロック精度モデルの計算が実行されるブロックと判定して該カウンタの値を初期化し、それ以外のブロックについては該クロック精度モデルの計算が実行されないブロックと判定して該カウンタの値に該最大公約数となる時間を加算する処理を繰り返し行う。
さらに、好ましくは、本発明のハードウェア検証用プログラミング記述生成装置におけるクロック制御モデル生成手段は、前記ハードウェアの動作記述から前記各クロック系統毎に指定された回路動作が開始される時刻を解析し、該各クロック系統毎のブロックについてクロック精度モデルの計算が開始される時刻を制御する。
さらに、好ましくは、本発明のハードウェア検証用プログラミング記述生成装置における動作記述は、回路の機能単位でブロックに分割した形式により記述可能で、各機能ブロックに動作クロックを指定することが可能であり、該各機能ブロックを並列動作させることが指定可能とされている。
さらに、好ましくは、本発明のハードウェア検証用プログラミング記述生成装置における汎用プログラミング言語としてC言語が用いられている。
さらに、好ましくは、本発明のハードウェア検証用プログラミング記述生成装置におけるクロックドメイン分割処理手段は、前記動作記述において、前記各ブロックの並列動作に関する記述と、該各ブロックに指定された動作クロックとに従って、前記各クロック系統毎に前記ハードウェアをブロックに分割する。
さらに、好ましくは、本発明のハードウェア検証用プログラミング記述生成装置におけるクロックドメイン分割処理手段は、クロックドメイン分割処理の他に、前記各クロック系統毎のブロックについて前記クロック精度モデルの計算が行われる順番を制御するために用いる制御情報として、前記ブロックを示すクロックドメインの名前とクロック周期の値とによって構成されたクロックドメインの制御情報を作成する。
本発明の高位合成装置は、前記動作記述から、多相クロックにより回路動作するハードウェアを高位合成し、高位合成したハードウェアを、本発明の上記ハードウェア検証用プログラミング記述生成装置により生成されたハードウェア検証用プログラミング記述を用いて検証可能とするものであり、そのことにより上記目的が達成される。
本発明のハードウェア検証用プログラミング記述生成方法は、多相クロックにより回路動作するハードウェアについて、構造に関する情報は含まず、処理動作のみが記述された動作記述から、該ハードウエアを各クロック系統毎のブロックに分割し、分割された各ブロック毎に動作合成処理を行う動作合成処理工程と、該動作合成処理されたデータを用いて該ハードウェアをサイクル精度レベルで検証可能なクロック精度モデルを生成するクロック精度モデル生成工程とを有するものであり、そのことにより上記目的が達成される。
また、好ましくは、本発明のハードウェア検証用プログラミング記述生成方法において、前記サイクル精度レベルで前記ハードウェアをシミュレーションする際に前記各クロック系統毎のブロックについて、前記クロック精度モデルの計算が行われる順番を制御するための制御モデルを生成するクロック制御モデル生成工程をさらに有する。
さらに、好ましくは、本発明のハードウェア検証用プログラミング記述生成方法において、前記動作合成処理工程は、前記ハードウェアの動作記述を解析して該ハードウェアの動作情報を得る動作記述解析工程と、該ハードウェアの動作情報から該ハードウェアを前記各クロック系統毎にブロックに分割するクロックドメイン分割処理工程と、該各クロック系統のブロックについて、該ハードウェアの動作記述から、該ハードウェアの動作がノードと該ノード間を接続する枝とを用いて表現されたコントロールデータフローグラフを生成するコントロールデータフローグラフ生成工程とを有する。
さらに、好ましくは、本発明のハードウェア検証用プログラミング記述生成方法において、前記クロック精度モデル生成工程は、前記動作合成処理されたデータとしてのコントロールデータフローグラフの各ノードを、前記各ブロックのクロック周波数によりスケジューリングして各ステートに割り振るスケジューリング・ステート割り振り工程と、該各ステート毎に、スケジューリング・ステート割り振り結果を用いて、該ハードウェアをサイクル精度により検証可能な動作モデルを前記クロック精度モデルとして生成するサイクル精度モデル生成工程とを有する。
さらに、好ましくは、本発明のハードウェア検証用プログラミング記述生成方法において、前記クロック精度モデルおよび前記制御モデルのうちの少なくともいずれかを汎用プログラミング言語により表現された記述として生成する。
さらに、好ましくは、本発明のハードウェア検証用プログラミング記述生成方法におけるクロック制御モデル生成工程は、前記各クロック系統毎のブロックについて前記クロック精度モデルの計算が実行される時刻を比較し、該計算が実行されるまでの時間が最も短い時間を選定すると共に、該各クロック系統毎のブロックを計算が実行されるブロックとして選定し、選定されたブロックについては次に該クロック精度モデルの計算が実行される時刻を当該ブロックにおけるクロック周期の値に更新し、当該ブロック以外のブロックについては該クロック精度モデルが計算されるまでの時間から該最も短い時間を減算し、順次同様に、計算が実行されるまでの時間が最も短い時間およびブロックの選定処理と、該クロック精度モデルの計算が実行される時刻を更新する処理とを繰り返し行う。
さらに、好ましくは、本発明のハードウェア検証用プログラミング記述生成方法におけるクロック制御モデル生成工程は、前記各クロック系統毎のブロックにおけるクロック周期の最大公約数となる時間を計算し、該各クロック系統毎のブロックについて前記クロック精度モデルの計算が実行される時刻を示すカウンタの値に該最大公約数となる時間を加算し、該各クロック系統毎のブロックにおけるクロック周期と該カウンタの値とが一致したブロックについては該クロック精度モデルの計算が実行されるブロックと判定して該カウンタの値を初期化し、それ以外のブロックについては該クロック精度モデルの計算が実行されないブロックと判定して該カウンタの値に該最大公約数となる時間を加算する処理を繰り返し行う。
さらに、好ましくは、本発明のハードウェア検証用プログラミング記述生成方法におけるクロック制御モデル生成工程は、前記ハードウェアの動作記述から前記各クロック系統に指定された回路動作が開始される時刻を解析し、該各クロック系統毎のブロックについて前記クロック精度モデルの計算が開始される時刻を制御する。
本発明のハードウェア検証用プログラム生成方法は、本発明の上記ハードウェア検証用プログラミング記述生成方法により生成されたクロック精度モデルの記述とクロック制御モデルの記述とをコンパイルおよびリンクすることによって、多相クロックにより回路動作するハードウェアの処理動作をサイクル精度レベルで検証可能な実行形式のプログラムを生成するものであり、そのことにより上記目的が達成される。
本発明の制御プログラムは、本発明の上記ハードウェア検証用プログラミング記述生成方法をコンピュータにより実行させるための各処理手順が記述されたものであり、そのことにより上記目的が達成される。
本発明の制御プログラムは、本発明の上記ハードウェア検証用プログラム生成方法により生成されたハードウェア検証用プログラムであって、コンピュータにより実行させるための各処理手順が記述されたものであり、そのことにより上記目的が達成される。
本発明の可読記憶媒体は、本発明の上記制御プログラムが記録されたコンピュータ読み取り可能なものであり、そのことにより上記目的が達成される。
上記構成により、以下に、本発明の作用について説明する。
本発明にあっては、ハードウエアをクロック系統毎にブロック分割し、分割されたブロック(クロックドメイン)毎にハードウェアをサイクル精度レベルで検証可能なサイクル精度モデルを生成し、各クロックドメインのモデルの計算(シミュレーション)が行われる順番を制御する制御モデルを生成するため、多相クロックにより回路動作するハードウェアの処理動作がサイクル精度レベルで検証可能である。また、これらのモデルを汎用プログラミング言語記述として生成することにより、高価で時間がかかるHDLシミュレータを用いなくても、回路動作の検証を行なうことが可能となる。
さらに説明すると、まず、多相クロックにより回路動作するハードウェアの動作記述を解析し、ハードウェアを、互いに周期の異なるクロック系統毎にブロックに分割して、各クロック系統毎のブロックについて、ハードウェアの動作記述からCDFGデータを生成する。次に、CDFGデータを、各ブロックのクロック周波数によりスケジューリングしてステートに割り振って、ステート毎にハードウェアのサイクル精度モデルを汎用プログラミング言語により表現された記述として生成し、回路動作のシミュレーション時(検証時)に各クロック系統のブロックについてサイクル精度モデルの計算が行われる順番を制御する制御モデルを汎用プログラミング言語により表現された記述として生成する。これにより、多相クロックにより回路動作するハードウェアにおいて、各クロック系統毎にサイクル精度モデルの計算を制御してサイクル精度レベルの検証を順次進めることが可能となる。
例えば、各クロック系統のブロックについてサイクル精度モデルの計算が実行される時刻を比較し、計算が実行されるまでの時間が最も短い時間とそのクロック系統のブロックを選定する処理と、選定されたブロックについて、次に、サイクル精度モデルの計算が実行される時刻をそのブロックにおけるクロック周期の値に更新し、選定されたブロック以外のブロックについてサイクル精度モデルが計算されるまでの時間からその最も短い時間を減算する処理を繰り返すことによって、サイクル精度モデルの計算順序を制御することが可能となる。
また、例えば、各クロック系統のブロックにおけるクロック周期の最大公約数となる時間を計算し、各クロック系統のブロックについてサイクル精度モデルの計算が実行される時刻を示すカウンタの値にこの最大公約数となる時間を加算し、各クロック系統のブロックにおけるクロック周期とカウンタ値とが一致したブロックについてサイクル精度モデルの計算が実行されるブロックと判定してカウンタの値を初期化し、それ以外のブロックについては、サイクル制度モデルの計算が実行されないブロックと判定してカウンタの値にその最大公約数となる時間を加算する処理を繰り返し行うことによっても、サイクル精度モデルの計算順序を制御することが可能となる。
ハードウェアの動作記述から各クロック系統に指定された動作が開始される時刻を解析し、オフセット時間を設けることによって、各クロック系統のブロックについてサイクル精度モデルの計算が開始される時刻を制御することが可能となる。
このようにして生成されたサイクル精度モデルの記述と、クロックドメインの制御モデルの記述とをコンパイルおよびリンクすることによって、多相クロックにより動作するハードウェアの動作をサイクル精度レベルで検証可能な実行形式のハードウェア検証用プログラムを生成することが可能となる。
以上により、本発明によれば、ハードウエアをクロック系統毎にブロック分割し、分割されたブロック(クロックドメイン)毎にハードウェアをサイクル精度レベルで検証可能なサイクル精度モデルを生成し、各クロックドメインのモデルの計算(シミュレーション)が行われる順番を制御する制御モデルを生成するため、多相クロックにより動作するハードウェアの回路動作をサイクル精度レベルで検証することができる。さらに、これらのモデルを汎用プログラミング言語記述として生成するため、HDLシミュレータによる回路動作の検証に比べて高速かつ安価に検証を行うことができる。これによって、LSI開発において設計と検証に必要な期間を大幅に短縮化できて、システムLSIの開発コストを削減することができる。
本発明のハードウェア検証用プログラミング記述生成装置では、多相クロックにより回路動作するハードウェアを高位合成装置にて高位合成する際に、サイクル精度レベルで、多相クロックを含むハードウェアの処理動作のシミュレーション(検証)を行うために用いられるハードウェア検証用プログラミング記述を生成するために用いる。
ここで、ハードウェアの高位合成とは、高位合成装置を用いて行うものであり、ハードウェアの構造に関する情報は含まれず、処理動作のみが記述された動作記述から、RTL(レジスタ・トランスファ・レベル)の論理回路をコンピュータ自動生成する回路設計の技術である。この高位合成の手法は、例えば前述の特許文献3に詳細が述べられているため、ここではその詳細な説明は省略する。なお、本実施形態で説明する多相クロックにより動作するハードウェアの高位合成において、この動作記述は、回路の機能単位でブロックに分割した形式により記述可能で、各機能ブロックに動作クロックを指定することが可能であり、各機能ブロックを並列動作させることが指定可能である。また、本実施形態において生成されるハードウェアをサイクル精度レベルで検証可能なモデルは、汎用プログラミング言語であるC言語により記述されるものとするが、C言語以外の他の言語でも同様に記述することが可能である。
以下に、本発明のハードウェア検証用プログラミング記述生成装置およびこれを用いたハードウェア検証用プログラミング記述生成方法の実施形態について、図面を参照しながら詳細に説明する。
図1は、本発明の実施形態に係るハードウェア検証用プログラミング記述生成装置として機能するコンピュータシステムの基本処理図である。
図1において、本実施形態のハードウェア検証用プログラミング記述生成装置として機能するコンピュータシステム10は、多相クロックにより回路動作するハードウェアについて、構造に関する情報は含まず、処理動作のみが記述された動作記述47から、このハードウエアをクロック系統毎のブロックに分割し、分割された各ブロック毎に動作合成処理(ステップS1)を行う動作合成処理手段と、この動作合成処理されたデータ(CDFGデータ)を用いてハードウェアをサイクル精度レベルで検証可能なクロック精度モデルを生成処理(ステップS2)するクロック精度モデル生成手段と、サイクル精度レベルでハードウェアをシミュレーションする際に各クロック系統毎のブロックについて、このクロック精度モデルの計算が行われる順番を制御する制御モデルを生成処理(ステップS3)するクロック制御モデル生成手段とを有している。
上記構成により、まず、ステップS1の動作合成処理において、多相クロックにより回路動作する検証回路対象であるハードウェア(後述する図4ではハードウェア5)を、互いに周期が異なる回路のクロック系統毎に複数の機能ブロック(クロックドメイン)に分割し、多相クロックで回路動作するハードウェアの動作記述47から各クロックドメイン毎のCDFGデータ48A、48B、・・をそれぞれ生成する。
次に、ステップS2のクロックモデル生成処理において、ハードウェア仕様により要求される動作周波数によって、CDFGデータ48A、48B、・・をスケジューリングしてステート毎に割り振り、CDFGデータ48A、48B、・・に含まれるノードの動作情報を用いて各ノードの動作モデルを生成し、ノードの接続情報を用いて各ノードの動作モデルを計算する際の順序付けを行うことによって、各ステートでシミュレーション可能なモデルを生成して、ハードウェアをサイクル精度レベルで検証可能とするHWクロック精度記述49A、49B、・・を生成する。
さらに、ステップS3のクロックドメインの制御モデル生成処理において、ステップS1の動作合成処理で生成されたクロックドメインの制御情報50から、各クロックドメインのサイクル精度モデルが計算される順番を制御する制御モデルをクロックドメインの制御記述51として生成する。
このようにして、HWクロック精度記述49A、49B、・・として、クロックドメイン毎にクロック精度で検証可能なハードウェアモデルをプログラミング記述で生成し、クロックの周期を比較してモデルの状態を1クロック分進めるクロックドメインを選定し、ハードウェアのシュミレーションを行う。このように、本発明では、クロックドメインの選定と、モデルの状態を進めるための制御を行うプログラミング記述を生成する。
以上により、検証回路対象のハードウエアをクロック系統毎にクロックドメインに分割し、分割されたクロックドメイン毎にハードウェアをサイクル精度レベルで検証可能なサイクル精度モデル(HWクロック精度記述49A、49B、・・)を生成し、各クロックドメインのモデルの計算(シミュレーション)が行われる順番を制御する制御モデル(クロックドメインの制御記述51)を生成するため、多相クロックにより動作するハードウェアの回路動作をサイクル精度レベルで検証することができる。さらに、これらのモデルを汎用プログラミング言語記述として生成するため、HDLシミュレータによる回路動作の検証に比べて高速かつ安価に検証を行うことができる。
以下、以上の本実施形態のハードウェア検証用プログラミング記述生成装置として機能するコンピュータシステム10および、これを用いたハードウェア検証用プログラミング記述生成方法について更に詳細に説明する。
図2は、図1のコンピュータシステムの要部構成例を示すブロック図である。
図2において、本実施形態のハードウェア検証用プログラミング記述生成装置として機能するコンピュータ10は、入力情報や処理結果情報などの各種情報を表示可能とする表示画面が設けられたモニタ装置1と、各種入力操作指令を入力可能とするキーボードやマウスなどの入力装置2と、入力装置2からの各種入力操作指令に基づいて各種処理を実行すると共にモニタ装置1に対して表示制御する計算機本体3とを有している。
計算機本体3は、本実施形態のハードウェア検証機能を実行可能とするCPU(中央演算処理ユニット)からなる制御部31と、制御部31が実行するための各種制御プログラムおよびそのデータなどを記憶するコンピュータ読み取り可能なハードディスクや内部メモリなどの可読記録媒体32と、各種制御プログラムおよびそのデータなどを記憶する小型携帯用メモリである半導体メモリ、光ディスクや磁気ディスクなどのコンピュータ読み取り可能な可読記録媒体33とを有している。
可読記録媒体32の内部メモリは、CPU起動時に各種制御プログラムおよびそのデータなどを可読記録媒体32のハードディスクから読み込んでワークメモリ(RAM)として機能するかまたは、インターネットやイントラネット、さらには可読記録媒体33などから各種制御プログラムおよびそのデータなどを読み込んでワークメモリ(RAM)として機能する。
磁気ディスクなどの可読記録媒体33は、小型携帯用メモリであって、本実施形態に係るハードウェア検証用プログラミング記述生成方法の各処理手順をコンピュータによって実行するためのハードウェア検証用プログラミング記述生成プログラムやシミュレーション用プログラム(ハードウェア検証用プログラム)などの各種制御プログラムとしてのハードウェア高位合成プログラム4がコンピュータ読み取り可能に格納されている。
ハードウェア高位合成プログラム4のハードウェア検証用プログラミング記述生成プログラムは、制御部31により実行されるものであり、多相クロックにより回路動作するハードウェアの動作記述47を構文解析・字句解析処理する動作記述解析手段としての構文解析・字句解析処理手段41と、ハードウェアをクロック系統毎に機能ブロック(クロックドメイン)に分割すると共に、クロックドメインのサイクル精度モデルが計算される順番を制御するための制御情報として、各クロックドメインの名前とクロック周期の値とによって構成されたクロックドメインの制御情報を作成するクロックドメイン分割処理手段42と、ハードウェアの動作記述47からクロックドメイン応じたCDFGをそれぞれ生成するCDFG生成手段43と、各クロックドメインのクロック周波数により回路が動作可能なようにスケジューリングされてステートに割り振るスケジューリング・ステート割り振り手段44と、ステート毎に、ハードウェアをサイクル精度で検証可能なモデルを各クロックドメインのサイクル精度記述としてそれぞれ生成するサイクル精度モデル生成手段45と、各クロックドメインのクロック精度モデル(サイクル精度モデル)が計算される順番を制御する制御モデルをクロックドメインの制御記述として生成するクロック精度モデル生成手段としてのクロックドメインの制御モデル生成手段46とを有している。
以下に、本発明の実施形態に係るハードウェア検証用プログラミング記述生成方法の処理手順について、図3のフローチャートを用いて説明する。
図3は、本発明の実施形態に係るハードウェア検証用プログラミング記述生成装置10のハード構成例を示すブロック図および、その動作を示すフローチャートである。
図3に示すように、制御部31は、ハードウェア検証用プログラミング記述生成プログラムおよびそのデータに基づいて、まず、ステップS11において、多相クロックにより回路動作するハードウェアについて、構造に関する情報は含まれず、処理動作のみが記述された動作記述47が、構文解析・字句解析処理手段41によって構文解析・字句解析処理される。
次に、ステップS12において、クロックドメイン分割処理手段42によって、ハードウェアがクロック系統毎にブロックに分割される。このクロックドメイン分割処理手段42では、解析されたハードウェアの動作記述47から、機能ブロックの並列動作に関する記述と、各機能ブロックに指定された動作クロックに従って、ハードウェアがクロック系統毎にまとめられた機能ブロック(クロックドメイン)に分割する。
以下の説明では、このように分割された機能ブロックをクロックドメインと表記する。機能ブロックの並列動作と動作クロックを指定するための記述例について、以下に説明する。
#pragmaparallel

#pragmaclock A

FunctionA();
}

#pragmaclock B
{
FunctionB();
}

#pragmaclock C
{
FunctionC();
}
上記記述例において、#pragma parallelに続く{}で囲まれる記述部分がそれぞれ並列動作する機能ブロック回路として高位合成される。また、#pragmaclockに続く数値A、B、Cをクロック周期として、続く{}で囲まれる記述部分が各クロック系統の機能ブロックとして高位合成される。本例中、FunctionA()、FunctionB()およびFunctionC()は、回路の動作を表す関数とする。
次に、ステップS13において、クロックドメイン分割処理手段42によって分割されたクロックドメインが、周期AのクロックドメインAか、周期BのクロックドメインBか、・・それら以外のクロックドメインの制御情報かを判定する。
このようにして、クロックドメイン分割処理手段42によりハードウェアが、周期が異なる複数種類のクロックドメインに分割処理された後、ステップS14において、クロックドメインAまたはB、・・毎に、CDFG(以下、コントロールデータフローグラフをCDFGと略す)生成手段43によってハードウェアの動作記述47から、クロックドメインAまたはB、・・に応じたCDFG48A、48B、・・・がそれぞれ作成される。
図1に示す事例では、CDFG生成手段43によってクロックドメインAのCDFG48Aが作成され、また、CDFG生成手段43によってクロックドメインBのCDFG48Bが作成される。CDFGとは、ハードウェアの動作がノードとノード間を接続する枝とを用いて表現されたものである。ノードはハードウェア中で動作する演算などを示し、ノード間の枝はデータの流れを示している。あるノードから出力されたデータは、そのノードに接続されている枝を通り、接続先のノードの入力として用いられる。
さらに、ステップS21において、生成されたCDFG48A,48B・・の各ノードは、スケジューリング・ステート割り振り手段44によって、各クロックドメインのクロック周波数により回路が動作可能なようにスケジューリングされてステートに割り振られる。
このスケジューリング・ステート割り振り結果を用いて、ステップS22において、サイクル精度モデル生成手段45によって、ステート毎に、ハードウェアをサイクル精度で検証可能なモデルが、汎用プログラミング言語であるC言語により表現されたクロックドメインAのサイクル精度記述49A、クロックドメインBのサイクル精度記述49B、・・・として生成される。
なお、サイクル精度モデルの計算を実行することによって、クロックドメインの回路のステートが時間軸方向に1クロック分進められることになる。CDFGからハードウェアをサイクル精度レベルで検証可能なモデルを生成する手法は、例えば特許文献2に詳細が述べられているため、ここではその説明を省略する。
一方、上記クロックドメイン分割処理手段42では、各クロックドメインのサイクル精度モデルが計算される順番を制御するための制御情報として、各クロックドメインの名前とクロック周期の値とによって構成されたクロックドメインの制御情報50が作成される。ステップS13でクロックドメインの制御情報と判定した場合には、ステップS3において、このクロックドメインの制御情報50を用いて、クロックドメインの制御モデル生成手段46によって、各クロックドメインのサイクル精度モデルが計算される順番を制御する制御モデルが、汎用プログラミング言語であるC言語により表現されたクロックドメインの制御記述51として生成される。
このようにして生成されたサイクル精度モデルのサイクル精度記述49A、49B、・・・と、クロックドメインの制御記述51とをコンパイルして作成されたオブジェクトをリンクすることによって、多相クロックにより動作するハードウェアの動作をサイクル精度レベルで検証可能な実行形式のハードウェア検証用プログラム52が生成される。このハードウェア検証用プログラム52をコンピュータシステム10上で実行することによって、そのハードウェアがサイクル精度レベルで要求仕様を満たしているか否かを検証することが可能となる。
次に、各クロックドメインのサイクル精度モデルが計算される順番を制御する方法について説明する。
図4は、本発明の実施形態により作成されるクロックドメインの制御記述51において、各クロックドメインのサイクル精度モデルが計算される順番を制御する方法を説明するための図であって、多相クロックにより動作するハードウェアにおいて並列動作するクロックドメインの一例を示すブロック図である。
図4において、検証対象であるハードウェア5には、互いに周期が異なる3系統のクロックA、クロックBおよびクロックCが用いられている。各クロックA〜Cのクロック周期は、クロックAが周期A、クロックBが周期B、クロックCが周期Cとされている。また、各クロックA〜Cで動作するクロックドメインとして、クロックAによりクロックドメインA、クロックBによりクロックドメインB、クロックCによりクロックドメインCが動作するものとされている。
図5は、本発明の実施形態により作成されるクロックドメインの制御記述51において、各クロックドメインのサイクル精度モデルが計算される順番を制御する方法を説明するための図であって、図4の各クロックA、クロックBおよびクロックCの状態を、ハードウェア信号のHighおよびLowを用いて表した信号波形図である。
図5において、縦軸は信号レベル、横軸は各クロックドメインの制御時間軸tを示している。図4のハードウェアでは、クロックの状態がLowからHighに立ち上がるタイミングで回路のステートが変化するものとする。
サイクル精度モデルを用いた検証では、モデルの計算が実行されることによって回路のステートの変化がシミュレーションされる。回路のステートの変化とは、クロックドメインの回路内部に含まれるレジスタなどの記憶素子の値の変化、および回路外部へ出力される値の変化を意味する。
図5においては、クロックA、クロックBおよびクロックCにおいて、各クロックA〜CのクロックドメインであるクロックドメインA、クロックドメインBおよびクロックドメインCのステートの変化をそれぞれ次のように表している。
クロックドメインAのステートの変化
ステートA0 → ステートA1 → ステートA2
クロックドメインBのステートの変化
ステートB0 → ステートB1
クロックドメインCのステートの変化
ステートC0 → ステートC1
各クロックドメインのサイクル精度モデルが計算される順番を制御する方法としては、例えば以下の2つの方法を用いることができる。なお、以下の説明において、サイクル精度モデルを用いたシミュレーション時刻をtとし、シミュレーション時刻tは”0”を初期値(t0)とする。
制御方法(1)
この制御方法(1)では、ハードウェア5における各クロック系統の機能ブロック(クロックドメインA〜C)についてサイクル精度モデルの計算が実行される時刻を比較して、計算が実行されるまでの時間が最も短い時間を選定すると共にそのクロック系統のブロックを計算が実行されるブロックとして選定する処理と、次にサイクル精度モデルの計算が実行されるまでの時間を更新する処理とが繰り返し行われる。
計算が実行されるまでの時間が最も短い時間およびそのクロック系統の機能ブロック(クロックドメインのモデル)を選定する処理は、以下の式によって表される。
D(x,y,z)=min(tA(x),tB(y),tC(z))
上記式において、min()は与えられた引数の中から最小の値を持つクロックドメインのモデルを選定するための関数とする。
図5において、シミュレーション時刻tからクロックドメインAのモデルが計算されるまでの時間をtA(x)、クロックドメインBのモデルが計算されるまでの時間をtB(y)、クロックドメインCのモデルが計算されるまでの時間をtC(z)とする。ここで、x、y、zの値は、各クロックドメインの計算が実行された回数、即ち、各クロックドメインのステートの状態が変化した回数を表している。計算が行われるクロックドメインのサイクル精度モデルD(x,y,z)は、時間tA(x)、tB(y)およびtC(z)の中で最小の値を有するクロックドメインのモデルである。例えば、
tA(x) < tB(y) < tC(z)
の関係が成り立つ場合には、D(x,y,z)はクロックドメインAのモデルとなる。
選定されたクロックドメインAのモデルが計算されて回路のステートの変化がシミュレーションされた後、シミュレーション時刻tと、時間tA(x)、tB(y)およびtC(z)の値とが更新される。この更新処理は、選定されて計算が実行されたブロックについては、次にサイクル精度モデルの計算が実行される時刻がそのブロックにおけるクロック周期の値に更新される。また、計算が実行されていないブロックについては、サイクル精度モデルが計算されるまでの時間からその最も短い時間が減算される。この更新処理は、以下の式によって表される。
t=t+tA(x)
tA(x+1)=A
tB(y)=tB(y)−tA(x)
tC(z)=tC(z)−tA(x)
次に、計算が実行されるまでの時間が最も短い時間およびそのクロック系統のブロック(クロックドメインのモデル)を選定する処理は、以下の式によって表される。
D(x+1,y,z)=min(tA(x+1),tB(y),tC(z))
以上のように、シミュレーション時刻tから各クロックドメインのモデルが計算されるまでの時間を比較し、最も時間が短いクロックドメインのモデルを計算して、次に、モデルの計算が実行されるまでの時間を更新する処理を繰り返すことによって、各クロックドメインのモデルが計算される順番を制御することができる。
例えば、時間tA(x)を1、tB(y)を2、tC(z)を4とし、クロック周期Aを2、クロック周期Bを3、クロック周期Cを4と仮定した場合に、各クロックドメインのモデルが計算される順番の制御は、以下のようにして行われる。
まず、計算が実行されるクロックドメインのモデルが以下の式によって選定される。
D(x,y,z)=min(1,2,4)
上記式から、D(x,y,z)はクロックドメインAのモデルである。
次に、計算が実行されるまでの時間が以下の式によって更新される。
tA(x+1)=2
tB(y)=2−1=1
tC(z)=3−1=2
次に、計算が実行されるクロックドメインのモデルが以下の式によって選定される。
D(x+1,y,z)=min(2,1,2)
上記式から、D(x+1,y,z)はクロックドメインBのモデルである。
次に、計算が実行されるまでの時間が以下の式によって更新される。
tA(x+1)=2−1=1
tB(y+1)=3
tC(z)=2−1=1
次に、計算が実行されるクロックドメインのモデルが以下の式によって選定される。
D(x+1,y+1,z)=min(1,3,1)
上記式から、D(x+1,y+1,z)はクロックドメインAとクロックドメインCのモデルである。この場合、2つのクロックドメインのモデルが計算されるが、計算が行われる順番は任意である。サイクル精度モデルを用いたシミュレーションでは、どちらのクロックドメインのモデルから計算が実行されても、各モデルの計算結果は同じである。上述したように、サイクル精度モデルの計算とは、クロックドメインの回路内部に含まれるレジスタなどの記憶素子の値の変化、および回路外部へ出力される値の変化を求めるものであり、各クロックドメインのモデルの計算が開始される順番が変わっても、回路内部への入力の値は変わらないため、モデルの計算順序によって計算結果は変わらない。このようなサイクル精度モデルの詳細については、例えば特許文献2に述べられている。
クロックドメインAのモデルとクロックドメインCのモデルの計算が実行された後、次に計算が実行されるまでの時間が以下の式によって更新される。
tA(x+2)=2
tB(y+1)=3−1=2
tC(z+1)=4
次に、計算が実行されるクロックドメインのモデルが以下の式によって選定される。
D(x+2,y+1,z+1)=min(2,2,4)
以上により、クロックドメインの制御モデル生成手段46による制御方法(1)は、各クロック系統毎のブロックについてクロック精度モデルの計算が実行される時刻を比較し、この計算が実行されるまでの時間が最も短い時間を選定すると共に、各クロック系統毎のブロックの計算が実行されるブロックとして選定し、選定されたブロックについては次にクロック精度モデルの計算が実行される時刻を当該ブロックにおけるクロック周期の値に更新し、当該ブロック以外のブロックについてはクロック精度モデルが計算されるまでの時間から最も短い時間を減算し、順次同様に、計算が実行されるまでの時間が最も短い時間およびブロックの選定処理と、クロック精度モデルの計算が実行される時刻を更新する処理とを繰り返し行う。
以上のように、計算が実行されるモデルを選定する処理と、次に計算が実行されるまでの時間を更新する処理とが繰り返し行われることによって、各クロックドメインのサイクル精度モデルが計算される順番を制御することができる。
制御方法(2)
この制御方法(2)では、ハードウェア5における各クロック系統の機能ブロック(クロックドメインA〜C)におけるクロック周期の最大公約数となる時間が計算され、各クロック系統のブロックについてサイクル精度モデルの計算が実行される時刻を示すカウンタの値にその最大公約数となる時間が加算されて、各クロック系統のブロックにおけるクロック周期とそのカウンタの値とが一致した場合に、そのブロックのサイクル精度モデルの計算が実行される。計算が実行されたブロックは、カウンタの値が初期化され、それ以外のブロックについてはカウンタの値にその最大公約数となる時間が加算される。
計算が実行されるブロックを判定する処理は、以下の式によって表される。
eA=exec(A−cA)
eB=exec(B−cB)
eC=exec(C−cC)
上記式において、exec()では、与えられた引数が0である場合に、そのクロックドメインのモデルが計算されると判定される。判定結果は、各クロックドメインにおいてeA、eBおよびeCとして表されている。また、各クロックドメインで計算が実行されるまでの時間を示すカウンタの値は、cA、cBおよびcCとして表されている。
判定結果から計算を実行する必要があると判定されたモデルの計算が実行された後、カウンタの値にサイクル周期A、サイクル周期Bおよびサイクル周期Cの最大公約数GCDが加算される。また、シミュレーション時刻tには、クロック周期の最大公約数が加算されていく。この処理は、以下の式によって表される。なお、この制御方法(2)の説明においても、上記制御方法(1)の場合と同様に、クロックドメインAのモデルだけ、計算が実行されたとする。また、カウンタの初期値は、「0」とする。
t=t+GCD
cA=0
cB=cB+GCD
cC=cC+GCD
以降、同様に、計算の実行判定とカウンタの値にクロックの最大公約数を加算する処理とが繰り返されることによって、各クロックドメインのモデルが計算される順番を制御することができる。
例えば、カウンタの値cAを0、cBを0、cCを0とし、クロック周期Aを2、クロック周期Bを3、クロック周期Cを4と仮定した場合に、各クロックドメインのモデルが計算される順番の制御は、以下のようにして行われる。
まず、クロック周期の最大公約数が求められる。
この例では、クロック周期Aが2、クロック周期Bが3、クロック周期Cが4であるので、最大公約数は1である。
次に、計算が実行されるブロックが、以下の式によって判定される。
eA=exec(2−0)
eB=exec(3−0)
eC=exec(4−0)
上記式から、全てのクロックドメインのモデルについて、計算は実行されないと判定される。
次に、以下の式によって、カウンタの値に最大公約数が加算される。
cA=0+1=1
cB=0+1=1
cC=0+1=1
次に、計算が実行されるブロックが、以下の式によって判定される。
eA=exec(2−1)
eB=exec(3−1)
eC=exec(4−1)
上記式から、全てのクロックドメインのモデルについて、計算は実行されないと判定される。
次に、以下の式によって、カウンタの値に最大公約数が加算される。
cA=1+1=2
cB=1+1=2
cC=1+1=2
次に、計算が実行されるブロックが、以下の式によって判定される。
eA=exec(2−2)
eB=exec(3−2)
eC=exec(4−2)
上記式から、クロックドメインAの判定においてモデルの計算が実行されると判定され、それ以外のクロックドメインの判定においてはモデルの計算は実行されないと判定される。判定結果から、クロックドメインAのモデルの計算が実行される。
次に、以下の式によって、カウンタの値に最大公約数が加算されるか、またはカウンタの値が初期化される。
cA=0
cB=2+1=3
cC=2+1=3
次に、計算が実行されるブロックが、以下の式によって判定される。
eA=exec(2−0)
eB=exec(3−3)
eC=exec(4−3)
上記式から、クロックドメインBの判定においてモデルの計算が実行されると判定され、それ以外のクロックドメインの判定においてはモデルの計算は実行されないと判定される。判定結果から、クロックドメインBのモデルの計算が実行される。
次に、以下の式によって、カウンタの値に最大公約数が加算されるか、またはカウンタの値が初期化される。
cA=0+1=1
cB=0
cC=3+1=4
次に、計算が実行されるブロックが、以下の式によって判定される。
eA=exec(2−1)
eB=exec(3−0)
eC=exec(4−4)
上記式から、クロックドメインCの判定においてモデルの計算が実行されると判定され、それ以外のクロックドメインの判定においてはモデルの計算は実行されないと判定される。判定結果から、クロックドメインCのモデルの計算が実行される。
次に、以下の式によって、カウンタの値に最大公約数が加算されるか、またはカウンタの値が初期化される。
cA=1+1=2
cB=0+1=1
cC=0
以上により、クロックドメインの制御モデル生成手段46による制御方法(2)は、各クロック系統毎のブロックにおけるクロック周期の最大公約数となる時間を計算し、各クロック系統毎のブロックについてクロック精度モデルの計算が実行される時刻を示すカウンタの値に最大公約数となる時間を加算し、各クロック系統毎のブロックにおけるクロック周期とカウンタの値とが一致したブロックについてはクロック精度モデルの計算が実行されるブロックと判定してカウンタの値を初期化し、それ以外のブロックについてはクロック精度モデルの計算が実行されないブロックと判定してカウンタの値に該最大公約数となる時間を加算する処理を繰り返し行う。
以上のように、計算が実行されるモデルを判定する処理と、カウンタの値にクロック周波数の最大公約数を加算するか、またはカウンタの値を初期化する処理とが繰り返し行われることによって、各クロックドメインのサイクル精度モデルが計算される順番を制御することができる。
次に、クロックドメインのサイクル精度モデルが計算される順番を制御する方法として、ハードウェアの動作記述から各クロック系統に指定された動作が開始される時刻を解析し、各クロック系統のブロックについてサイクル精度モデルの計算が開始される時刻を制御する方法について説明する。
各クロックドメインのサイクル精度モデルの計算が開始される時刻とは、シミュレーション時刻tの初期値0の時点からの遅延時間であり、オフセット時間を示すものである。本実施形態では、ハードウェアの動作記述に対して、各クロックドメインのサイクル精度モデルの計算が開始されるまでのオフセット時間を指定する。この動作記述にオフセット時間を指定する処理は、例えば以下の式によって表される。
#pragmaparallel
#pragmaclock A
#pragmaoffset offsetA
{
FunctionA();
}

#pragmaclock B
#pragmaoffset offsetB
{
FunctionB();
}

#pragmaclock C
#pragmaoffset offsetC
{
FunctionC();
}
上記式において、#pragma offsetに続く数値がオフセット時間とされており、それに続く{}で囲まれたクロックドメインが高位合成される。上記例では、FunctionA()のクロックドメインにオフセット時間offsetAが指定され、FunctionB()のクロックドメインにオフセットoffsetBが指定され、FunctionC()のクロックドメインにオフセットoffsetCが指定されている。
上述したクロックドメインのサイクル精度モデルが計算される順番を制御する制御方法(1)においては、図3に示すtA(0)、tB(0)およびtC(0)の値がオフセット時間としてそれぞれ指定されることになる。また、制御方法(2)においては、ハードウェアのシミュレーション開始時におけるカウンタの値cA、cBおよびcCの初期値がオフセット時間として指定されることになる。
したがって、ハードウェアの動作記述にオフセット時間を指定することによって、ハードウェアの動作記述から各クロック系統に指定された動作が開始される時刻を解析して、各クロック系統のブロックについてサイクル精度モデルの計算が開始される時刻を制御することができる。
以上のように、上記実施形態によれば、多相クロックにより動作するハードウェアの動作記述47を構文解析・字句解析処理手段41により解析し、クロックドメイン分割処理手段42によりハードウェアを各クロック系統毎にクロックドメインに分割して、CDFG生成手段43により各クロックドメイン毎にCDFG48A、48B、・・を生成する。そのCDFG48A、48B、・・を、スケジューリング・ステート割り振り手段44で各ブロックのクロック周波数によりスケジューリングしてステートに割り振り、サイクル精度モデル生成手段45によりステート毎にハードウェアのサイクル精度モデルを汎用プログラミング言語により表現した記述として生成する。シミュレーション時に各クロックドメインのサイクル精度モデルの計算が行われる順番を制御する制御モデルを、クロックドメインの制御モデル生成手段46によって、汎用プログラミング言語により表現されたクロックドメインの制御記述51として生成し、各クロックドメインのサイクル精度モデルの計算が行われる順番を制御することができる。これによって、多相クロックにより動作するハードウェアをサイクル精度レベルで検証可能なモデルを汎用プログラミング記述として生成することができる。
なお、上記実施形態では、特に説明しなかったが、本発明は、要は、多相クロックにより回路動作するハードウェアについて、構造に関する情報は含まず、処理動作のみが記述された動作記述47から、ハードウエアを各クロック系統毎のブロックに分割し、分割された各ブロック毎に動作合成処理を行う動作合成処理手段と、動作合成処理されたデータを用いてハードウェアをサイクル精度レベルで検証可能なクロック精度モデル(サイクル精度モデル)を生成するクロック精度モデル生成手段とを有すれば、多相クロックにより回路動作するハードウェアをサイクル精度レベルで検証可能なモデルを汎用プログラミング記述として生成することにより、高速かつ安価にハードウェアの回路動作を検証し、ハードウェアの設計および検証期間を短縮して、低コストによりシステムLSIの開発を実現できる本発明の目的を達成することができる。
以上のように、本発明の好ましい実施形態を用いて本発明を例示してきたが、本発明は、この実施形態に限定して解釈されるべきものではない。本発明は、特許請求の範囲によってのみその範囲が解釈されるべきであることが理解される。当業者は、本発明の具体的な好ましい実施形態の記載から、本発明の記載および技術常識に基づいて等価な範囲を実施することができることが理解される。本明細書において引用した特許、特許出願および文献は、その内容自体が具体的に本明細書に記載されているのと同様にその内容が本明細書に対する参考として援用されるべきであることが理解される。
本発明は、多相クロックにより回路動作するハードウェアの処理動作をサイクル精度レベルで検証可能なモデルを汎用プログラミング記述として生成するハードウェア検証用プログラミング記述生成装置、高位合成装置、このハードウェア検証用プログラミング記述生成装置を用いたハードウェア検証用プログラミング記述生成方法、これを用いたハードウェア検証用プログラム生成方法、このハードウェア検証用プログラミング記述生成方法の各処理手順をコンピュータに実行させるためのハードウェア検証用プログラミング記述生成プログラムおよび、これを用いたハードウェア検証用プログラムなどの制御プログラムおよびこの制御プログラムが記録されたコンピュータ読み取り可能な可読記憶媒体の分野において、ハードウエアをクロック系統毎にブロック分割し、分割されたブロック(クロックドメイン)毎にハードウェアをサイクル精度レベルで検証可能なサイクル精度モデルを生成し、各クロックドメインのモデルの計算(シミュレーション)が行われる順番を制御する制御モデルを生成するため、多相クロックにより動作するハードウェアの回路動作をサイクル精度レベルで検証することができる。さらに、これらのモデルを汎用プログラミング言語記述として生成するため、HDLシミュレータによる回路動作の検証に比べて高速かつ安価に検証を行うことができる。これによって、LSI開発において設計と検証に必要な期間を大幅に短縮化できて、システムLSIの開発コストを削減することができる。
本発明の実施形態に係るハードウェア検証用プログラミング記述生成装置として機能するコンピュータシステムの基本処理図である。 図1のコンピュータシステムの要部構成例を示すブロック図である。 図2のコンピュータシステムを用いたハードウェア検証用プログラミング記述生成方法の各処理手順を示すフローチャートである。 多相クロックにより回路動作するハードウェアにおいて並列動作するクロックドメインの例を示すブロック図である。 図4のクロックA、クロックBおよびクロックCの状態を、ハードウェア信号のHighおよびLowを用いて表した信号波形図である。 従来のハードウェア検証用プログラミング記述生成装置の要部構成例を示すブロック図である。
符号の説明
1 モニタ装置
2 キーボードなどの入力装置
3 計算機本体
31 制御部(CPU)
32 メモリなどの可読記録媒体
33 磁気ディスクなどの可読記録媒体
4 ハードウェア高位合成プログラム
41 構文解析・字句解析処理手段
42 クロックドメイン分割処理手段
43 CDFG生成手段
44 スケジューリング・ステート割り振り手段
45 サイクル精度モデル生成手段
46 クロックドメインの制御モデル生成手段
47 多相クロックにより動作するハードウェアの動作記述
48A クロックドメインAのCDFG
48B クロックドメインBのCDFG
49A クロックドメインAのサイクル精度記述
49B クロックドメインBのサイクル精度記述
50 クロックドメインの制御情報
51 クロックドメインの制御記述
52 多相クロックにより動作するハードウェアの動作をサイクル精度レベルで検証可能な実行形式のハードウェア検証用プログラム
5 検証対象であるハードウェア
10 ハードウェア検証用プログラミング記述生成装置として機能するコンピュータシステム

Claims (25)

  1. 多相クロックにより回路動作するハードウェアについて、構造に関する情報は含まず、処理動作のみが記述された動作記述から、該ハードウエアを各クロック系統毎のブロックに分割し、分割された各ブロック毎に動作合成処理を行う動作合成処理手段と、該動作合成処理されたデータを用いて該ハードウェアをサイクル精度レベルで検証可能なクロック精度モデルを生成するクロック精度モデル生成手段とを有するハードウェア検証用プログラミング記述生成装置。
  2. 前記サイクル精度レベルで前記ハードウェアをシミュレーションする際に前記各クロック系統毎のブロックについて、前記クロック精度モデルの計算が行われる順番を制御するための制御モデルを生成するクロック制御モデル生成手段をさらに有する請求項1に記載のハードウェア検証用プログラミング記述生成装置。
  3. 前記動作合成処理手段は、
    前記ハードウェアの動作記述を解析して該ハードウェアの動作情報を得る動作記述解析手段と、
    該ハードウェアの動作情報から該ハードウェアを前記各クロック系統毎にブロックに分割するクロックドメイン分割処理手段と、
    該各クロック系統毎のブロックについて、該ハードウェアの動作記述から、該ハードウェアの動作がノードと該ノード間を接続する枝とを用いて表現されたコントロールデータフローグラフを生成するコントロールデータフローグラフ生成手段とを有する請求項1に記載のハードウェア検証用プログラミング記述生成装置。
  4. 前記クロック精度モデル生成手段は、
    前記動作合成処理されたデータとしてのコントロールデータフローグラフの各ノードを、該各ブロックのクロック周波数によりスケジューリングして各ステートに割り振るスケジューリング・ステート割り振り手段と、
    該各ステート毎に、スケジューリング・ステート割り振り結果を用いて、該ハードウェアをサイクル精度により検証可能な動作モデルを前記クロック精度モデルとして生成するサイクル精度モデル生成手段とを有する請求項1または3に記載のハードウェア検証用プログラミング記述生成装置。
  5. 前記クロック精度モデルおよび前記制御モデルのうちの少なくともいずれかを汎用プログラミング言語により表現された記述として生成する請求項1、2および4のいずれかに記載のハードウェア検証用プログラミング記述生成装置。
  6. 前記クロック制御モデル生成手段は、前記各クロック系統毎のブロックについて前記クロック精度モデルの計算が実行される時刻を比較し、該計算が実行されるまでの時間が最も短い時間を選定すると共に、該各クロック系統毎のブロックの計算が実行されるブロックとして選定し、選定されたブロックについては次に該クロック精度モデルの計算が実行される時刻を当該ブロックにおけるクロック周期の値に更新し、当該ブロック以外のブロックについては該クロック精度モデルが計算されるまでの時間から該最も短い時間を減算し、順次同様に、計算が実行されるまでの時間が最も短い時間およびブロックの選定処理と、該クロック精度モデルの計算が実行される時刻を更新する処理とを繰り返す請求項2に記載のハードウェア検証用プログラミング記述生成装置。
  7. 前記クロック制御モデル生成手段は、前記各クロック系統毎のブロックにおけるクロック周期の最大公約数となる時間を計算し、該各クロック系統毎のブロックについて前記クロック精度モデルの計算が実行される時刻を示すカウンタの値に該最大公約数となる時間を加算し、該各クロック系統毎のブロックにおけるクロック周期と該カウンタの値とが一致したブロックについては該クロック精度モデルの計算が実行されるブロックと判定して該カウンタの値を初期化し、それ以外のブロックについては該クロック精度モデルの計算が実行されないブロックと判定して該カウンタの値に該最大公約数となる時間を加算する処理を繰り返し行う請求項2に記載のハードウェア検証用プログラミング記述生成装置。
  8. 前記クロック制御モデル生成手段は、前記ハードウェアの動作記述から前記各クロック系統毎に指定された回路動作が開始される時刻を解析し、該各クロック系統毎のブロックについてクロック精度モデルの計算が開始される時刻を制御する請求項2に記載のハードウェア検証用プログラミング記述生成装置。
  9. 前記動作記述は、回路の機能単位でブロックに分割した形式により記述可能で、各機能ブロックに動作クロックを指定することが可能であり、該各機能ブロックを並列動作させることが指定可能とされている請求項1、3および8のいずれかに記載のハードウェア検証用プログラミング記述生成装置。
  10. 前記汎用プログラミング言語としてC言語が用いられている請求項5に記載のハードウェア検証用プログラミング記述生成装置。
  11. 前記クロックドメイン分割処理手段は、前記動作記述において、前記各ブロックの並列動作に関する記述と、該各ブロックに指定された動作クロックとに従って、前記各クロック系統毎に前記ハードウェアをブロックに分割する請求項3または9に記載のハードウェア検証用プログラミング記述生成装置。
  12. 前記クロックドメイン分割処理手段は、クロックドメイン分割処理の他に、前記各クロック系統毎のブロックについて前記クロック精度モデルの計算が行われる順番を制御するために用いる制御情報として、前記ブロックを示すクロックドメインの名前とクロック周期の値とによって構成されたクロックドメインの制御情報を作成する請求項3または11に記載のハードウェア検証用プログラミング記述生成装置。
  13. 前記動作記述から、多相クロックにより回路動作するハードウェアを高位合成し、高位合成したハードウェアを、請求項1〜12のいずれかに記載のハードウェア検証用プログラミング記述生成装置により生成されたハードウェア検証用プログラミング記述を用いて検証可能とする高位合成装置。
  14. 多相クロックにより回路動作するハードウェアについて、構造に関する情報は含まず、処理動作のみが記述された動作記述から、該ハードウエアを各クロック系統毎のブロックに分割し、分割された各ブロック毎に動作合成処理を行う動作合成処理工程と、該動作合成処理されたデータを用いて該ハードウェアをサイクル精度レベルで検証可能なクロック精度モデルを生成するクロック精度モデル生成工程とを有するハードウェア検証用プログラミング記述生成方法。
  15. 前記サイクル精度レベルで前記ハードウェアをシミュレーションする際に前記各クロック系統毎のブロックについて、前記クロック精度モデルの計算が行われる順番を制御するための制御モデルを生成するクロック制御モデル生成工程をさらに有する請求項14に記載のハードウェア検証用プログラミング記述生成方法。
  16. 前記動作合成処理工程は、
    前記ハードウェアの動作記述を解析して該ハードウェアの動作情報を得る動作記述解析工程と、
    該ハードウェアの動作情報から該ハードウェアを前記各クロック系統毎にブロックに分割するクロックドメイン分割処理工程と、
    該各クロック系統のブロックについて、該ハードウェアの動作記述から、該ハードウェアの動作がノードと該ノード間を接続する枝とを用いて表現されたコントロールデータフローグラフを生成するコントロールデータフローグラフ生成工程とを有する請求項14に記載のハードウェア検証用プログラミング記述生成方法。
  17. 前記クロック精度モデル生成工程は、
    前記動作合成処理されたデータとしてのコントロールデータフローグラフの各ノードを、前記各ブロックのクロック周波数によりスケジューリングして各ステートに割り振るスケジューリング・ステート割り振り工程と、
    該各ステート毎に、スケジューリング・ステート割り振り結果を用いて、該ハードウェアをサイクル精度により検証可能な動作モデルを前記クロック精度モデルとして生成するサイクル精度モデル生成工程とを有する請求項14または16に記載のハードウェア検証用プログラミング記述生成方法。
  18. 前記クロック精度モデルおよび前記制御モデルのうちの少なくともいずれかを汎用プログラミング言語により表現された記述として生成する請求項14、15および17のいずれかに記載のハードウェア検証用プログラミング記述生成装置。
  19. 前記クロック制御モデル生成工程は、前記各クロック系統毎のブロックについて前記クロック精度モデルの計算が実行される時刻を比較し、該計算が実行されるまでの時間が最も短い時間を選定すると共に、該各クロック系統毎のブロックを計算が実行されるブロックとして選定し、選定されたブロックについては次に該クロック精度モデルの計算が実行される時刻を当該ブロックにおけるクロック周期の値に更新し、当該ブロック以外のブロックについては該クロック精度モデルが計算されるまでの時間から該最も短い時間を減算し、順次同様に、計算が実行されるまでの時間が最も短い時間およびブロックの選定処理と、該クロック精度モデルの計算が実行される時刻を更新する処理とを繰り返し行う請求項15に記載のハードウェア検証用プログラミング記述生成方法。
  20. 前記クロック制御モデル生成工程は、前記各クロック系統毎のブロックにおけるクロック周期の最大公約数となる時間を計算し、該各クロック系統毎のブロックについて前記クロック精度モデルの計算が実行される時刻を示すカウンタの値に該最大公約数となる時間を加算し、該各クロック系統毎のブロックにおけるクロック周期と該カウンタの値とが一致したブロックについては該クロック精度モデルの計算が実行されるブロックと判定して該カウンタの値を初期化し、それ以外のブロックについては該クロック精度モデルの計算が実行されないブロックと判定して該カウンタの値に該最大公約数となる時間を加算する処理を繰り返し行う請求項15に記載のハードウェア検証用プログラミング記述生成方法。
  21. 前記クロック制御モデル生成工程は、前記ハードウェアの動作記述から前記各クロック系統に指定された回路動作が開始される時刻を解析し、該各クロック系統毎のブロックについて前記クロック精度モデルの計算が開始される時刻を制御する請求項15に記載のハードウェア検証用プログラミング記述生成方法。
  22. 請求項14〜21のいずれかに記載のハードウェア検証用プログラミング記述生成方法により生成されたクロック精度モデルの記述とクロック制御モデルの記述とをコンパイルおよびリンクすることによって、多相クロックにより回路動作するハードウェアの処理動作をサイクル精度レベルで検証可能な実行形式のプログラムを生成するハードウェア検証用プログラム生成方法。
  23. 請求項14〜21のいずれかに記載のハードウェア検証用プログラミング記述生成方法をコンピュータにより実行させるための各処理手順が記述された制御プログラム。
  24. 請求項22に記載のハードウェア検証用プログラム生成方法により生成されたハードウェア検証用プログラムであって、コンピュータにより実行させるための各処理手順が記述された制御プログラム。
  25. 請求項23または24に記載の制御プログラムが記録されたコンピュータ読み取り可能な可読記憶媒体。
JP2006302124A 2006-11-07 2006-11-07 ハードウェア検証用プログラミング記述生成装置、高位合成装置、ハードウェア検証用プログラミング記述生成方法、ハードウェア検証用プログラム生成方法、制御プログラムおよび可読記録媒体 Expired - Fee Related JP4293562B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2006302124A JP4293562B2 (ja) 2006-11-07 2006-11-07 ハードウェア検証用プログラミング記述生成装置、高位合成装置、ハードウェア検証用プログラミング記述生成方法、ハードウェア検証用プログラム生成方法、制御プログラムおよび可読記録媒体
US11/929,304 US7992112B2 (en) 2006-11-07 2007-10-30 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

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2006302124A JP4293562B2 (ja) 2006-11-07 2006-11-07 ハードウェア検証用プログラミング記述生成装置、高位合成装置、ハードウェア検証用プログラミング記述生成方法、ハードウェア検証用プログラム生成方法、制御プログラムおよび可読記録媒体

Publications (2)

Publication Number Publication Date
JP2008117318A true JP2008117318A (ja) 2008-05-22
JP4293562B2 JP4293562B2 (ja) 2009-07-08

Family

ID=39361112

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2006302124A Expired - Fee Related JP4293562B2 (ja) 2006-11-07 2006-11-07 ハードウェア検証用プログラミング記述生成装置、高位合成装置、ハードウェア検証用プログラミング記述生成方法、ハードウェア検証用プログラム生成方法、制御プログラムおよび可読記録媒体

Country Status (2)

Country Link
US (1) US7992112B2 (ja)
JP (1) JP4293562B2 (ja)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP2350818A4 (en) * 2008-11-03 2013-07-10 Enginelab Inc SYSTEM AND METHOD FOR THE DYNAMIC CONSTRUCTION OF A BEHAVIOR MODEL IN A HARDWARE SYSTEM
US8225262B1 (en) * 2009-03-18 2012-07-17 Xilinx, Inc. Method of and system for placing clock circuits in an integrated circuit
US20110047522A1 (en) * 2009-05-21 2011-02-24 Dane Mark W P Hardware Description Language Editing Engine
US9201992B2 (en) * 2014-02-19 2015-12-01 Synopsys, Inc. Method and apparatus using formal methods for checking generated-clock timing definitions
US11048289B1 (en) * 2020-01-10 2021-06-29 Rockwell Collins, Inc. Monitoring delay across clock domains using constant phase shift

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH05101141A (ja) 1991-08-13 1993-04-23 Toshiba Corp 高位合成装置
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
JP3803561B2 (ja) * 2001-06-29 2006-08-02 松下電器産業株式会社 論理回路設計方法
JP3909073B2 (ja) * 2002-10-15 2007-04-25 株式会社ルネサステクノロジ コンパイラ及び論理回路の設計方法
JP4204039B2 (ja) * 2003-04-24 2009-01-07 シャープ株式会社 動作合成システム、動作合成方法、制御プログラム、可読記録媒体、論理回路の製造方法および論理回路
US20040230414A1 (en) * 2003-05-12 2004-11-18 International Business Machines Corporation Method for verification of hardware designs with multiple asynchronous frequency domains
JP4175953B2 (ja) * 2003-05-23 2008-11-05 シャープ株式会社 高位合成装置、ハードウェア検証用モデル生成方法、ハードウェア検証方法、制御プログラムおよび可読記録媒体
US7257802B2 (en) * 2003-12-29 2007-08-14 Mentor Graphics Corporation Method and system for hardware accelerated verification of digital circuit design and its testbench
JP2006139729A (ja) 2004-11-15 2006-06-01 Sharp Corp ハードウェア検証用プログラミング言語モデル生成装置、ハードウェア検証用プログラミング言語モデル生成方法、コンピュータシステム、ハードウェアシミュレーション方法、制御プログラムおよび可読記憶媒体
JP4580827B2 (ja) * 2005-06-17 2010-11-17 株式会社東芝 動作合成装置及び自動動作合成方法
US20070129924A1 (en) * 2005-12-06 2007-06-07 Verheyen Henry T Partitioning of tasks for execution by a VLIW hardware acceleration system

Also Published As

Publication number Publication date
US20080109777A1 (en) 2008-05-08
JP4293562B2 (ja) 2009-07-08
US7992112B2 (en) 2011-08-02

Similar Documents

Publication Publication Date Title
US7882462B2 (en) Hardware definition language generation for frame-based processing
US9690550B2 (en) Program optimization via compile time execution
US9710237B1 (en) Systems and methods for hardware resource sharing
US7761272B1 (en) Method and apparatus for processing a dataflow description of a digital processing system
Bezati et al. High-level synthesis of dataflow programs for signal processing systems
US20130091482A1 (en) Method and apparatus for design space exploration acceleration
JP4293562B2 (ja) ハードウェア検証用プログラミング記述生成装置、高位合成装置、ハードウェア検証用プログラミング記述生成方法、ハードウェア検証用プログラム生成方法、制御プログラムおよび可読記録媒体
JP4175953B2 (ja) 高位合成装置、ハードウェア検証用モデル生成方法、ハードウェア検証方法、制御プログラムおよび可読記録媒体
JP2006139729A (ja) ハードウェア検証用プログラミング言語モデル生成装置、ハードウェア検証用プログラミング言語モデル生成方法、コンピュータシステム、ハードウェアシミュレーション方法、制御プログラムおよび可読記憶媒体
JP5034916B2 (ja) 性能評価モデル生成方法、システム性能評価方法、及び性能評価モデル生成装置
US7606694B1 (en) Framework for cycle accurate simulation
Potkonjak et al. Considering testability at behavioral level: use of transformations for partial scan cost minimization under timing and area constraints
US7162403B2 (en) System and method for efficiently tracing simulation data in hardware acceleration simulation systems
JPH05101141A (ja) 高位合成装置
US9223910B1 (en) Performance and memory efficient modeling of HDL ports for simulation
JP2005275967A (ja) システムlsiの設計支援システム及び設計支援方法
US10223077B2 (en) Determination of signals for readback from FPGA
JP5328447B2 (ja) 高位合成装置および高位合成方法、半導体集積回路の製造方法、制御プログラム、可読記憶媒体
Schlickling et al. A framework for static analysis of VHDL code
JP5001126B2 (ja) ハードウェア検証用プログラミング記述生成装置、ハードウェア検証用プログラミング記述生成方法、制御プログラムおよび可読記録媒体
Hu et al. Simulation of real-time systems with clock calculus
JP5147801B2 (ja) ハードウェア検証用プログラミング記述生成装置、ハードウェア検証用プログラミング記述生成方法、及び制御プログラム
Ferreira Restructuring Software Code for High-Level Synthesis Using a Graph-based Approach Targeting FPGAs
US8495539B1 (en) Scheduling processes in simulation of a circuit design
Aybek Transforming Models of Computation to Automotive Component Models

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20081107

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20081113

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20090109

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20090202

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20090306

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

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

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

Free format text: PAYMENT UNTIL: 20120417

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

Year of fee payment: 3

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

Free format text: PAYMENT UNTIL: 20130417

Year of fee payment: 4

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

Free format text: PAYMENT UNTIL: 20130417

Year of fee payment: 4

LAPS Cancellation because of no payment of annual fees