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

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

Info

Publication number
JP2009140028A
JP2009140028A JP2007312897A JP2007312897A JP2009140028A JP 2009140028 A JP2009140028 A JP 2009140028A JP 2007312897 A JP2007312897 A JP 2007312897A JP 2007312897 A JP2007312897 A JP 2007312897A JP 2009140028 A JP2009140028 A JP 2009140028A
Authority
JP
Japan
Prior art keywords
hardware
shared resource
access
description
block
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
JP2007312897A
Other languages
English (en)
Other versions
JP5001126B2 (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 JP2007312897A priority Critical patent/JP5001126B2/ja
Publication of JP2009140028A publication Critical patent/JP2009140028A/ja
Application granted granted Critical
Publication of JP5001126B2 publication Critical patent/JP5001126B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Abstract

【課題】サイクル精度レベルでハードウェアの正しい動作が成立する条件をアサーションにより検証可能な動作モデルを汎用プログラミング言語記述として生成する。
【解決手段】ハードウェアを機能ブロックに分割し、複数のブロックからアクセスされる共有リソースを抽出して共有リソースアクセス情報を作成するブロック分割・共有リソース抽出・アクセス情報作成手段42と、CDFGを生成し、スケジューリング・ステート割り振りをした後に、各機能ブロックの動作をサイクル精度レベルで検証可能なモデルを生成する機能ブロックのサイクル精度モデル生成手段45と、共有リソースの動作をサイクル精度レベルで検証可能なモデルを生成する共有リソースのサイクル精度モデル生成手段46と、共有リソースのアクセス情報から、アサーションにより共有リソースへのアクセスを制御するモデルを生成する共有リソースのサイクル制御モデル生成手段47とを有する。
【選択図】図1

Description

本発明は、ハードウェアの動作を検証可能な汎用プログラミング記述を生成するためのハードウェア検証用プログラミング記述生成装置、ハードウェア検証用プログラミング記述生成方法、ハードウェア検証用プログラミング記述生成プログラムなどの制御プログラムおよびこれが記録されたコンピュータ読み取り可能な可読記録媒体に関する。
従来、システムLSI開発において、設計されたハードウェアの論理的な動作が正しいことを検証するために、アサーション技術が用いられている。アサーションとは、設計者によって指定されたハードウェアの動作において成立すべき正しい動作条件を監視し、シミュレーションによりその条件が満たされない場合には、動作に誤りがあるとして設計者に通知するという技術である。
例えば、ハードウェア中に2つの論理回路ブロック(機能ブロック)と、これら2つの論理回路ブロックに共に使用される共有メモリが実装されているものとする。これら2つの論理回路ブロックから共有メモリへの書き込み動作が行われる場合に、それぞれの書き込み動作時にアクティブになる信号を信号Aおよび信号Bとして、書き込み動作が同一のクロックサイクルで重複されず、信号Aと信号Bは任意のクロックサイクルにおいて同時にアクティブな状態にならないものとする。この動作条件が正しい動作であるとするアサーションは、次の(1)〜(3)ように指定される。
即ち、(1)信号Aが非アクティブであり、かつ信号Bが非アクティブである。または、(2)信号Aがアクティブであり、かつ信号Bが非アクティブである。または、(3)信号Aが非アクティブであり、かつ信号Bがアクティブである。
また、LSI設計においては、高位合成技術が用いられている。高位合成とは、ハードウェアの構造に関する情報は含まれず、ハードウェアの処理動作のみが記述された動作記述(動作レベル記述)からRTL(レジスタ・トランスファ・レベル)の論理回路を生成するという技術である。この高位合成技術の具体的な手法は、例えば特許文献1に開示されている。
さらに、例えば特許文献2および特許文献3には、動作レベル記述に付加されたアサーションなどの情報を高位合成により生成されたRTL記述に反映させる手法が開示されている。
この特許文献2に開示されている高位合成方法では、動作記述からその動作記述に記述された回路動作を検証する第1アサーション情報を含むCDFG(コントロールデータフローグラフ)が抽出され、そのCDFGから第1アサーション情報が抽出され、そのCDFGから第1アサーション情報を除いたCDFGのスケジューリング結果とアロケーション結果に基づいて第1アサーション情報がRTLレベルで記述可能な第2アサーション情報に変換されて、その第2アサーション情報に基づいてRTLレベルで記述されたアサーション記述が生成される。
また、特許文献3に開示されている動作合成方法では、動作記述を基にRTLレベル記述が生成され、動作記述とRTLレベル記述からそれらに含まれる信号、演算や記述文などの対応関係を示す情報が生成されて、その対応関係を示す情報と予め設定された変換ルールとを元に、動作記述に付加された付帯情報がRTLレベル記述に付加される付帯情報に変換される。
LSI検証において、汎用プログラミング言語により記述された検証モデルを用いて設計されたハードウェアの動作がサイクル精度で要求仕様を満たすか否かを検証する手法が知られている。ここで述べるサイクル精度とは、ハードウェアの動作について、そのハードウェアの状態をクロックサイクル単位で示すことが可能な精度レベルのことである。例えば、クロックの立ち上がりに同期して動作するハードウェアにおいては、そのクロックの立ち上がりエッジにおけるハードウェア中のレジスタやメモリなどの記憶装置の状態を示すレベルのことである。
例えば、特許文献4には、従来、サイクル精度を検証するために用いられていたHDL(Hardware Description Language)シミュレータの代わりに、高位合成により生成されるCDFGから、ハードウェアをサイクル精度レベルで検証可能なモデルを生成し、シミュレーションを行う手法が開示されている。この特許文献4に開示されているハードウェア検証用プログラミング言語モデル生成方法では、ハードウェアの動作記述からCDFGが生成され、ハードウェアに要求される動作周波数でCDFGがスケジューリングされてステート毎に割り振られ、ステート毎にハードウェアの動作モデル(サイクル精度モデル)が汎用プログラミング言語で表現した記述として生成される。このサイクル精度モデルは、CDFGに含まれるノードの動作情報を用いて各ノードの動作モデルが生成され、ノードの接続情報を用いて各ノードの動作モデルを計算する際の順序付けが行われることによって、各ステートでシミュレーション可能なモデルとして生成される。
特開平5−101141号公報 特開2006−172113号公報 特開2006−285333号公報 特開2006−139729号公報
一般的に、ハードウェアの動作を検証する際には、VHDLなどのRTL記述言語で記述されたハードウェアの動作をシミュレーションするHDLシミュレータが用いらている。このHDLシミュレータにおいては、ハードウェア内の信号変化をクロック周期よりも短い時間単位で監視して、その信号変化を接続する信号に伝搬させるというイベント駆動方式によりシミュレーションが行われる。したがって、ハードウェアのサイクル精度レベルでの動作検証をHDLシミュレータを用いて行う場合、冗長かつ無駄な計算が多くなり、シミュレーション時間が長くなる。
即ち、アサーションを用いてハードウェアの論理的動作をサイクル精度レベルで検証する際に、例えば特許文献2および特許文献3に開示されているように高位合成により生成されたRTL記述を用いる場合には、HDLシミュレータによりシミュレーションを行うために多大な時間が必要とされる。また、回路規模が大きくなり、テストパターンが長くなると、検証のために多大な時間が必要とされ、これによって、LSIの開発コストが増大する原因となる。
さらに、特許文献4に開示されている従来技術では、CDFGからハードウェアをサイクル精度レベルで検証可能なモデルが生成されて、シミュレーションが行われるが、アサーションについては考慮されておらず、ハードウェアの動作において共有リソースに重複するアクセスが発生しないようにアサーションにより制御することはできない。
本発明は、上記従来の問題を解決するもので、サイクル精度レベルでハードウェアの正しい動作が成立する条件をアサーションにより検証可能な動作モデルを汎用プログラミング言語記述として自動生成することにより、高速かつ安価にハードウェアの動作を検証可能で、LSIの設計・検証期間を短縮できて、開発コストを低減できるハードウェア検証用プログラミング記述生成装置、ハードウェア検証用プログラミング記述生成方法、ハードウェア検証用プログラミング記述生成プログラムなどの制御プログラムおよび、この制御プログラムを記録したコンピュータ読み出し可能な可読記録媒体を提供することを目的とする。
本発明のハードウェア検証用プログラミング記述生成装置は、回路構造に関する情報は含まれず、処理動作のみが記述された動作記述から得られたハードウェアの動作情報から該ハードウェアを複数の機能ブロックに分割し、分割した複数の機能ブロックからアクセスされる共有リソースを抽出して、該共有リソースのアクセス情報を作成するブロック分割・共有リソース抽出・アクセス情報作成手段と、該共有リソースのアクセス情報から、アサーションにより該共有リソースへのアクセスが重複されないように制御するアクセス制御モデルを生成する共有リソースのアクセス制御モデル生成手段とを有するものであり、そのことにより上記目的が達成される。
また、好ましくは、本発明のハードウェア検証用プログラミング記述生成装置における共有リソースのアクセス制御モデル生成手段は、前記アクセス制御モデルとして、サイクル精度レベルで前記ハードウェアの正しい動作が成立する条件をアサーションにより検証可能な動作モデルを汎用プログラミング言語の記述として生成する。
さらに、好ましくは、本発明のハードウェア検証用プログラミング記述生成装置における共有リソースのアクセス制御モデルは、前記複数の機能ブロックのうちの少なくとも2つの機能ブロックのアクセスタイミングを示す各信号を前記汎用プログラミング言語によりそれぞれ表現した各変数を加算し、その加算結果をアサーション条件として前記ハードウェアが正しい条件で動作しているか否かを判断するように制御する。
さらに、好ましくは、本発明のハードウェア検証用プログラミング記述生成装置における加算結果が“1”以下であるという条件を前記アサーション条件とする。
さらに、好ましくは、本発明のハードウェア検証用プログラミング記述生成装置における加算結果が“1”よりも大きい場合に、前記ハードウェアの正しい動作条件に合致しないものとしてエラー情報を報知手段に出力して、該ハードウェアの動作が正しく実行されていないことを該報知手段によりユーザに報知する。
さらに、好ましくは、本発明のハードウェア検証用プログラミング記述生成装置における共有リソースのアクセス制御モデルは、前記共有リソースがマルチポートメモリの場合に、前記複数の機能ブロックのうちの少なくとも2つの機能ブロックのアクセスタイミングを示す各信号を前記汎用プログラミング言語によりそれぞれ表現した各変数と、該共有リソースにそれぞれアクセスされる各アドレスを比較した結果とをアサーション条件として、前記ハードウェアが正しい条件で動作しているか否かを判断するように制御する。
さらに、好ましくは、本発明のハードウェア検証用プログラミング記述生成装置における各変数が全て”1”でかつ前記各アドレスを比較した結果が等しいという条件が全て成り立つ場合を除くという条件をアサーション条件とする。
さらに、好ましくは、本発明のハードウェア検証用プログラミング記述生成装置における各変数が全て”1”でかつ前記各アドレスを比較した結果が等しいという条件が全て成り立つ場合に、前記ハードウェアの正しい動作条件に合致しないものとしてエラー情報を報知手段に出力して、該ハードウェアの動作が正しく実行されていないことをユーザに該報知手段により報知する。
さらに、好ましくは、本発明のハードウェア検証用プログラミング記述生成装置における共有リソースのアクセス制御モデルが生成されないようにアクセス制御モデル生成禁止情報を動作記述中に指定可能とする。
さらに、好ましくは、本発明のハードウェア検証用プログラミング記述生成装置における共有リソースのアクセス情報は、該共有リソースにアクセスするブロック名、データ書き込みおよび読み出しのうちの少なくともいずれかのアクセスの方向、および、アクセスに使用する信号として、該ブロック名のブロックと該共有リソース間でアクセス動作を実行するタイミングを示す信号、アクセスするアドレスを示す信号および書き込みデータである。
さらに、好ましくは、本発明のハードウェア検証用プログラミング記述生成装置において、前記動作記述から構文および字句を解析処理する構文解析・字句解析手段をさらに有し、前記ブロック分割・共有リソース抽出・アクセス情報作成手段は、該動作記述から構文および字句を解析処理して得られたハードウェアの動作情報から該ハードウェアを複数の機能ブロックに分割する。
さらに、好ましくは、本発明のハードウェア検証用プログラミング記述生成装置において、前記複数の機能ブロックの各CDFGをそれぞれ作成するCDFG生成手段と、該各CDFGで回路動作を表すノードをスケジューリングおよびステート割り振りするスケジューリング・ステート割り振り手段と、該機能ブロックの動作をサイクル精度レベルで検証可能なサイクルク精度モデルを生成する機能ブロックのサイクル精度モデル生成手段と、前記共有リソースの動作をサイクル精度レベルで検証可能なサイクル精度モデルを生成する共有リソースのサイクル精度モデル生成手段とをさらに有する。
本発明のハードウェア検証用プログラミング記述生成方法は、回路構造に関する情報は含まれず、処理動作のみが記述された動作記述から得られたハードウェアの動作情報から該ハードウェアを機能ブロックに分割し、分割した複数の機能ブロックからアクセスされる共有リソースを抽出して、該共有リソースのアクセス情報を作成するブロック分割・共有リソース抽出・アクセス情報作成ステップと、該共有リソースのアクセス情報から、アサーションにより該共有リソースへのアクセスが重複されないように制御するアクセス制御モデルを生成する共有リソースのアクセス制御モデル生成ステップとを有するものであり、そのことにより上記目的が達成される。
また、好ましくは、本発明のハードウェア検証用プログラミング記述生成方法における共有リソースのアクセス制御モデル生成ステップは、前記アクセス制御モデルとして、サイクル精度レベルで前記ハードウェアの正しい動作が成立する条件をアサーションにより検証可能な動作モデルを汎用プログラミング言語の記述として生成する。
さらに、好ましくは、本発明のハードウェア検証用プログラミング記述生成方法における共有リソースのアクセス制御モデル生成ステップにおいて、前記アクセス制御モデルは、前記複数の機能ブロックのうちの少なくとも2つの機能ブロックのアクセスタイミングを示す各信号を前記汎用プログラミング言語によりそれぞれ表現した各変数を加算し、その加算結果をアサーション条件として、前記ハードウェアが正しい条件で動作しているか否かを判断するように制御する。
さらに、好ましくは、本発明のハードウェア検証用プログラミング記述生成方法における加算結果が“1”以下であるという条件を前記アサーション条件とする。
さらに、好ましくは、本発明のハードウェア検証用プログラミング記述生成方法における加算結果が“1”よりも大きい場合に、前記ハードウェアの正しい動作条件に合致しないものとしてエラー情報を報知手段に出力して、該ハードウェアの動作が正しく実行されていないことを該報知手段によりユーザに報知する。
さらに、好ましくは、本発明のハードウェア検証用プログラミング記述生成方法における共有リソースのアクセス制御モデル生成ステップにおいて、該共有リソースがマルチポートメモリの場合に、前記アクセス制御モデルは、前記複数の機能ブロックのうちの少なくとも2つの機能ブロックのアクセスタイミングを示す各信号を前記汎用プログラミング言語によりそれぞれ表現した各変数と、該共有リソースにそれぞれアクセスされる各アドレスを比較した結果とをアサーション条件として、前記ハードウェアが正しい条件で動作しているか否かを判断するように制御する。
さらに、好ましくは、本発明のハードウェア検証用プログラミング記述生成方法における各変数が全て”1”でかつ前記各アドレスを比較した結果が等しいという条件が全て成り立つ場合を除くという条件をアサーション条件とする。
さらに、好ましくは、本発明のハードウェア検証用プログラミング記述生成方法における各変数が全て”1”でかつ前記各アドレスを比較した結果が等しいという条件が全て成り立つ場合に、前記ハードウェアの正しい動作条件に合致しないものとしてエラー情報を報知手段に出力して、該ハードウェアの動作が正しく実行されていないことをユーザに該報知手段により報知する。
さらに、好ましくは、本発明のハードウェア検証用プログラミング記述生成方法における共有リソースのアクセス制御モデルが生成されないようにアクセス制御モデル生成禁止情報を動作記述中に指定可能とする。
さらに、好ましくは、本発明のハードウェア検証用プログラミング記述生成方法における共有リソースのアクセス情報は、該共有リソースにアクセスするブロック名、データ書き込みおよび読み出しのうちの少なくともいずれかのアクセスの方向、および、アクセスに使用する信号として、該ブロック名のブロックと該共有リソース間でアクセス動作を実行するタイミングを示す信号、アクセスするアドレスを示す信号および書き込みデータである。
さらに、好ましくは、本発明のハードウェア検証用プログラミング記述生成方法において、前記動作記述から構文および字句を解析処理する構文解析・字句解析ステップをさらに有し、前記ブロック分割・共有リソース抽出・アクセス情報作成ステップは、該動作記述から構文および字句を解析処理して得られたハードウェアの動作情報から該ハードウェアを複数の機能ブロックに分割する。
さらに、好ましくは、本発明のハードウェア検証用プログラミング記述生成方法において、前記複数の機能ブロックの各CDFGをそれぞれ作成するCDFG生成ステップと、 該各CDFGで回路動作を表すノードをスケジューリングおよびステート割り振りするスケジューリング・ステート割り振りステップと、該機能ブロックの動作をサイクル精度レベルで検証可能なサイクルク精度モデルを生成する機能ブロックのサイクル精度モデル生成ステップと、前記共有リソースの動作をサイクル精度レベルで検証可能なサイクル精度モデルを生成する共有リソースのサイクル精度モデル生成ステップとをさらに有する。
本発明の制御プログラムは、本発明の上記ハードウェア検証用プログラミング記述生成方法の各ステップを計算機システムによって実行可能な処理手順が記述されたものであり、そのことにより上記目的が達成される。
本発明の可読記録媒体は、本発明の上記制御プログラムが記録されて前記計算機システムによって該制御プログラムを読み取り可能なものであり、そのことにより上記目的が達成される。
上記構成により、以下に、本発明の作用について説明する。
本発明にあっては、ハードウェアの動作記述から、ハードウェアを機能ブロックに分割し、分割した複数の機能ブロックのうちの少なくとも2つの機能ブロックからアクセスされる共有リソース(並列動作の共有リソース)を抽出して、その共有リソースのアクセス情報を作成する。その共有リソースのアクセス情報から、アサーションにより共有リソースへのアクセスを制御するアクセス制御モデルを生成する。この共有リソースのアクセス制御モデルにより、検証時間が長いHDLシミュレータを用いずに、アサーションによりハードウェアのサイクル精度での動作検証を高速に行うことが可能となる。
例えば、各機能ブロックからのアクセスタイミングを示す信号を汎用プログラミング言語により表現した各変数を加算し、その加算結果からハードウェアが正しい条件で動作しているか否かを判断して共有リソースへのアクセスを制御することが可能となる。また、共有リソースとしてマルチポートメモリが実装される場合に、各機能ブロックからのアクセスタイミングを示す信号を汎用プログラミング言語によりそれぞれ表現した各変数と、アクセスされる各アドレスを比較したアドレス比較結果とによって、ハードウェアが正しい条件で動作しているか否かを判断して共有リソースへのアクセスを制御することが可能となる。
また、機能ブロックのサイクル精度モデルと、共有リソースのサイクル精度モデルと、共有リソースのアクセス制御モデルをコンパイルしたオブジェクトをリンクすることにより、サイクル精度レベルでハードウェアの正しい動作が成立する条件をアサーションにより検証可能な動作モデルが汎用プログラミング言語により記述された制御プログラムとしてのハードウェア検証用プログラミング記述生成プログラムが得られる。
以上により、本発明によれば、アクセス制御モデルとして、サイクル精度でハードウェアの正しい動作が成立する条件をアサーションにより検証可能な動作モデルを汎用プログラミング言語の記述として生成するため、高速でかつ安価にハードウェアの動作を検証することができて、LSIの設計および検証期間を短縮化でき、開発コストを低減することができる。
以下に、ハードウェアの動作を検証可能な汎用プログラミング記述を生成するための本発明のハードウェア検証用プログラミング記述生成装置、ハードウェア検証用プログラミング記述生成方法、制御プログラムとしてのハードウェア検証用プログラミング記述生成プログラムおよび、この制御プログラムが格納されたコンピュータ読み出し可能な可読記録媒体をコンピュータシステム(計算機システム)に適用した本発明の実施形態について、図面を参照しながら詳細に説明する。
図1は、本発明の実施形態に係るハードウェア検証用プログラミング記述生成装置を実現するためのコンピュータシステムの要部構成図である。
図1において、本実施形態のハードウェア検証用プログラミング記述生成装置として動作するコンピュータシステム100は、画面表示するためのモニタ装置1、各種の情報を入力可能とする入力装置2および計算機本体3を有しており、計算機本体3には、全体の制御を行う制御手段としてのCPU(中央演算処理ユニット)31、CPU31の起動時に働くRAM32および、可読記録媒体としてのROM33が含まれている。
モニタ装置1は、表示画面上に、初期画面、選択画面、CPU31による制御結果画面、報知画面および操作入力画面などを表示する。
入力装置2は、CPU31に対して入力指令を行うためのキーボード、マウス、項目選択用などのタッチパネルおよびペン入力装置などの操作部や、さらには通信ネットワーク(例えばインターネットやイントラネット)を介して受信入力する入力装置などである。
RAM32は、CPU31の起動時に制御プログラムおよびそのデータなどが読み出されて、CPU31による制御毎にデータを読み出し・記憶するワークメモリとして働くICメモリなどの記憶部である。
ROM33は、ハードディスク(HDD)の他、携帯自在な光ディスク、光磁気ディスク、磁気ディスクおよびICメモリなどで構成されていてもよい。この制御プログラムおよびそのデータなどがROM33に記憶されるが、この制御プログラムおよびそのデータは、他の可読記録媒体から情報記録再生装置を介してROM33にダウンロードされてもよく、または、無線、有線またはインターネットなどを介してROM33にダウンロードされてもよい。
ROM33には、高位合成処理(高位合成プログラム)を含む本発明の実施形態に係る制御プログラムとしてのハードウェア検証用プログラミング記述生成プログラム4が記録されている。
高位合成処理は、例えばRTレベル回路を生成するために演算・レジスタ割付処理や制御器生成処理などが含まれ、さらには、各部の動作を検証するシミュレーション処理も含まれる。ハードウェア検証用プログラミング記述生成プログラム4は、本発明の実施形態に係るハードウェア検証用プログラミング記述生成方法を計算機システムであるコンピュータシステム100によって実行可能な処理手順が記述されており、サイクル精度レベルでハードウェアの正しい動作が成立する条件をアサーションにより検証可能な動作モデルを汎用プログラミング言語記述として生成するために用いられる。即ち、ハードウェアの動作記述を高位合成する際に、ハードウェアの動作をサイクル精度で検証可能な動作モデルを汎用プログラミング言語で生成し、アサーションによって検証できる動作について制御モデルを自動生成する。
本実施形態のハードウェア検証用プログラミング記述生成プログラム4の起動時には、ROM33としての例えばハードディスクHDDからRAM32にハードウェア検証用プログラミング記述生成プログラム4が読み込まれて、CPU31によってハードウェア検証用プログラミング記述生成処理が実行されるようになっている。
このハードウェア検証用プログラミング記述生成プログラム4はCPU31により実行されて、構文解析・字句解析手段41と、ブロック分割・共有リソース抽出・アクセス情報作成手段42と、CDFG生成手段43と、スケジューリング・ステート割り振り手段44と、機能ブロックのサイクル精度モデル生成手段45と、共有リソースのサイクル精度モデル生成手段46と、共有リソースのアクセス制御モデル生成手段47との各処理機能を有している。
構文解析・字句解析手段41では、回路の構造に関する情報が含まれず、処理動作のみが記述されたハードウェアの動作記述から構文および字句を解析してハードウェアの動作情報(加算および減算などの演算情報や並列動作情報など)を得る構文解析および字句解析処理が行われる。
ブロック分割・共有リソース抽出・アクセス情報作成手段42では、ハードウェアの動作情報、例えば並列動作情報からハードウェアを複数の機能ブロックに分割するブロック分割処理を行い、分割された複数の機能ブロックからアクセスされる共有リソースを抽出する共有リソース抽出処理を行って、共有リソースのアクセス情報を作成するアクセス情報作成処理が行われる。
CDFG生成手段43では、各機能ブロックのCDFG(コントロールデータフローグラフ)を作成するCDFG作成処理が行われる。
スケジューリング・ステート割り振り手段44では、ハードウェアに与えられた動作周波数などの制約を満たすために、各CDFGで回路動作を表すCDFGのノードをスケジューリングおよびステート割り振りするスケジューリング・ステート割り振り処理が行われる。
機能ブロックのサイクル精度モデル生成手段45では、各機能ブロックの動作をサイクル精度レベルで検証可能なサイクル精度モデルが汎用プログラミング言語記述として生成される。
共有リソースのサイクル精度モデル生成手段46では、ハードウェア内部の各機能ブロック、または検証対象のハードウェアに接続された外部のハードウェアなどからアクセスされる共有リソースの動作をサイクル精度レベルで検証可能なサイクル精度モデルが汎用プログラミング言語記述として生成される。
共有リソースのアクセス制御モデル生成手段47では、共有リソースのアクセス情報から、アサーションにより共有リソースへのアクセスが重複されないように制御するアクセス制御モデルが汎用プログラミング言語記述として生成される。
なお、本実施形態において、これらの構文解析・字句解析手段41、CDFG生成手段43およびスケジューリング・ステート割り振り手段44による処理は、高位合成技術により行われる。また、本実施形態において、ハードウェアの動作記述は、回路の機能単位でブロックに分割された形で記述可能であり、各機能ブロックを並列に動作させることを指定可能とする。さらに、本実施形態において、機能ブロックのサイクル精度モデル、共有リソースのサイクル精度モデルおよび共有リソースのアクセス制御モデルは、汎用プログラミング言語であるC言語で記述されるものとするが、他の言語でも同様に記述することができる。また、本実施形態において、機能ブロックのサイクル精度モデルは、ハードウェアの動作記述からCDFGが生成され、ハードウェアに要求される動作周波数でCDFGがスケジューリングされてステート毎に割り振られ、ステート毎にハードウェアの動作モデル(サイクル精度モデル)が汎用プログラミング言語で表現した記述として生成される。このサイクル精度モデルは、CDFGに含まれるノードの動作情報を用いて各ノードの動作モデルが生成され、ノードの接続情報を用いて各ノードの動作モデルを計算する際の順序付けが行われることによって、各ステートでシミュレーション可能なモデルとして生成される。
ハードウェア内部の各機能ブロック、または検証対象のハードウェアに接続された外部のハードウェアなどからアクセスされる共有リソースとしては、LSI内部に実装される組み込みメモリ、またはフリップフロップにより構成されるレジスタなどが挙げられる。
図2は、並列動作する複数の機能ブロックから共有リソースにデータを書き込む動作を表すハードウェア動作記述例を示す図である。
図2に示すように、動作記述において、“#pragma parallel”は、その後に続く“{ }”で区切られた動作記述を1つの機能ブロックとして高位合成することを高位合成プログラムに指示するための手段とする。
また、“int array[2]”は、C言語のデータ型“int”で表され、要素数が2個の共有リソースを宣言している。この動作記述において、1つ目の“{ }”で区切られた機能ブロックをブロックA、2つ目の“{ }”で区切られた機能ブロックをブロックBとする。ブロックAでは、共有リソース“array”にデータを書き込む動作が2回行われる。また、ブロックBでは、共有リソース“array”にデータを書き込む動作が1回行われる。
上記構成により、以下に、本実施形態のハードウェア検証プログラミング記述生成方法およびハードウェア検証プログラミング記述生成プログラム4の処理手順について説明する。
図3は、本実施形態のハードウェア検証プログラミング記述生成方法およびハードウェア検証プログラミング記述生成プログラム4の処理手順を示すフローチャートである。
まず、ステップS1では、ハードウェアの回路構造に関する情報が含まれず、処理動作のみが記述されたハードウェアの動作記述51が、構文解析・字句解析手段41によって、構文解析・字句解析処理されてハードウェアの動作情報(加算および減算などの演算情報や並列動作情報など)を得る。
続いて、ステップS2で、ブロック分割・共有リソース抽出・アクセス情報作成手段42によって、解析して得られたハードウェアの動作情報、例えば並列動作情報から、ハードウェアが並列動作する機能ブロック毎に分割処理される。さらに、ブロック分割・共有リソース抽出・アクセス情報作成手段42によって、分割された機能ブロック毎に、組み込みメモリやレジスタなどの共有リソースへのデータ書き込み動作、または共有リソースからのデータ読み出し動作があるか否かが判定されて、共有リソースが抽出されると共に共有リソースへのアクセス情報が作成される。
図2に示すハードウェアの動作記述では、機能ブロックAと機能ブロックBの双方からリソース“array”へのデータ書き込み動作が行われるため、“array”が共有リソースとして抽出される。この抽出された共有リソースについて、データの型などを含む共有リソースデータベース、および機能ブロックから共有リソースへのアクセス情報が作成される。
さらに、ステップS3では、ステップS2で分割された機能ブロックであるか(ブロックAかブロックBか)、共有リソースデータベースであるか、または、共有リソースのアクセス情報であるかどうかが判断される。
次に、ステップS4では、CDFG生成手段43によって、ブロックAかブロックBかの機能ブロック毎にCDFGが生成される。CDFGとは、ハードウェアの動作がノードとノード間を接続する枝とを用いて表現されたものである。ノードはハードウェア中で動作する演算処理などを示し、ノード間の枝はデータの流れを示している。あるノードから出力されたデータは、そのノードに接続されている枝を通り、接続先のノードの入力として用いられる。
その後、ステップS5では、ステップS4で生成されたCDFGがハードウェアに制約として与えられたクロック周期などで動作可能なように、スケジューリング・ステート割り振り手段44によってスケジューリング・ステート割り振り処理が行われる。
図2および図3に示す事例では、ステップS5でスケジューリング・ステート割り振りされた各機能ブロック(ブロックAかブロックBか)のCDFGとして、機能ブロックAのCDFG52Aおよび機能ブロックBのCDFG52Bが得られる。
さらに、ステップS6では、ステップS5で生成されたスケジューリング・ステート割り振り後の機能ブロックAのCDFG52Aおよび機能ブロックBのCDFG52Bを用いて、機能ブロックのサイクル精度モデル生成手段45によって、各機能ブロックのサイクル精度モデルがそれぞれ生成される。
図2および図3に示す事例では、各機能ブロックのサイクル精度モデルとして、ブロックAのサイクル精度モデル53AおよびブロックBのサイクル精度モデル53Bがそれぞれ得られる。機能ブロックのサイクル精度モデルは、任意のステートにおけるブロックへの入力データを用いて、そのステートにおける出力データを求める計算式として構成される。
次に、ステップS7では、ステップS2の共有リソース抽出・アクセス情報作成処理により得られた共有リソースデータベース54と共有リソースアクセス情報56とを用いて、共有リソースのサイクル精度モデル生成手段46によって、共有リソースのサイクル精度モデル55が生成される。共有リソースのサイクル精度モデルは、任意のクロックサイクルにおける共有リソースへの入力データから、その共有リソースに保持されるデータを更新する計算式として構成される。
次に、ステップS8では、ステップS2の共有リソースのアクセス情報作成処理により作成された共有リソースアクセス情報56を用いて、共有リソースのアクセス制御モデル生成手段47によって、共有リソースのアクセス制御モデル57が生成される。
要するに、本実施形態のハードウェア検証用プログラミング記述生成方法は、ハードウェアの構造に関する情報は含まれず、処理動作のみが記述されたハードウェアの動作記述から構文および字句を解析処理する構文解析・字句解析ステップ(S1)と、ハードウェアを機能ブロックに分割し、分割した複数の機能ブロックからアクセスされる共有リソースを抽出して、共有リソースのアクセス情報を作成するブロック分割・共有リソース抽出・アクセス情報作成ステップ(S2)と、複数の機能ブロックの各CDFGをそれぞれ作成するCDFG生成ステップ(S4)と、各CDFGで回路動作を表すノードをスケジューリングおよびステート割り振りするスケジューリング・ステート割り振りステップ(S5)と、各機能ブロックの各CDFGから、各機能ブロックの動作をサイクル精度レベルで検証可能なサイクルク精度モデルを生成する機能ブロックのサイクル精度モデル生成ステップ(S6)と、共有リソースデータベース54から、共有リソースの動作をサイクル精度レベルで検証可能なサイクル精度モデルを生成する共有リソースのサイクル精度モデル生成ステップ(S7)と 共有リソースのアクセス情報から、アサーションにより共有リソースへのアクセスが重複されないように制御するアクセス制御モデルを生成する共有リソースのアクセス制御モデル生成ステップ(S8)とを有している。
以上のようにして生成された機能ブロック毎のサイクル精度モデル53Aおよび53B、共有リソースのサイクル精度モデル55、および共有リソースのアクセス制御モデル57は、汎用プログラミング言語で記述されており、これらの記述をコンパイルして作成されたオブジェクトをリンクすることによって、アサーションを用いたハードウェア検証用プログラムが得られる。このハードウェア検証用プログラムをコンピュータシステム100上で実行することによって、ハードウェアがサイクル精度で要求された仕様を満たしているか否かを検証することができる。
以下に、具体的な回路例を用いて、本実施形態のハードウェア検証プログラミング記述生成方法およびハードウェア検証プログラミング記述生成プログラム4の処理手順についてさらに詳細に説明する。
図4は、図2に示すハードウェアの動作記述を図3に示すフローチャートの処理にしたがって高位合成して得られる回路構成例を示すブロック図である。
図4に示す回路構成は、ブロックAとブロックBの2つの機能ブロック、および1つの共有リソース(array)から構成されている。2つの機能ブロックAおよびBからは、共有リソースarrayに対してデータ書き込み動作が行われる。書き込み動作をハードウェアとして実現するため、各機能ブロックと共有リソースとの間で、書き込み動作を実行するタイミングを示す信号、書き込むアドレスを示す信号、および書き込みデータを示す信号という3種類の信号が用いられている。
図4に示す回路構成では、ブロックAから共有リソースarrayへデータを書き込むときの信号として、書き込み動作を実行するタイミングを示す信号“enA”、データが書き込まれるアドレスを示す信号“addrA”、および書き込みデータを示す信号“dataA”が用いられる。これと同様に、ブロックBから共有リソースarrayにデータを書き込むときの信号として、書き込み動作を実行するタイミングを示す信号“enB”、データが書き込まれるアドレスを示す信号“addrB”、および書き込みデータを示す信号“dataB”が用いられる。書き込みタイミングを示す信号“enA”および“enB”はハイアクティブとされ、信号が“1”の状態のときに書き込み動作が行われるものとする。
図5は、図4に示すブロックAについて、図2に示すハードウェアの動作記述を図3に示すフローチャートにしたがって処理して、ブロックAのスケジューリング・ステート割り振り処理後に得られるCDFGを示す図である。
図5に示すように、ブロックAでは、共有リソースに対してデータを書き込む動作が2回行われ、1回目はデータ“1”が書き込まれ、2回目はデータ“2”が書き込まれる。
即ち、ブロックAのCDFGでは、ステート“State m”においてデータ“1”を作成するノード61があり、これに続くステート“State m+1”では、ノード61で作成されたデータを入力として共有リソースに書き込む動作を示すノード62がある。これと同様に、ステート“State m+1”においてデータ“2”を作成するノード63があり、これに続くステート“State m+2”においては、ノード63で作成されたデータ“2”を入力として共有リソースに書き込む動作を示すノード64がある。
図6は、図4に示すブロックBについて、図2に示すハードウェアの動作記述を図3に示すフローチャートにしたがって処理して、ブロックBのスケジューリング・ステート割り振り処理後に得られるCDFGを示す図である。
図6に示すように、ブロックBでは、共有リソースに対してデータを書き込む動作が1回行われる。
即ち、ブロックBのCDFGでは、ステート“State n”においてデータ“x”を作成するノード71、およびデータ“y”を作成するノード72がある。これに続くステート“State n+1”において、ステート“State n”のノード71で作成されたデータ“x”と、ノード72で作成されたデータ“y”とを入力として、両データ“x”および“y”を加算する動作を示すノード73がある。これに続くステート“State n+2”において、ノード73で演算(加算)された結果データ(x+y)を入力データとして共有リソースに書き込む動作を示すノード74がある。
図7は、図4のブロックAについて、図5のブロックAのCDFGから生成されたサイクル精度モデルをC言語で記述した事例を示す図である。
図7では、図5に示すステート“State m+1”のサイクル精度モデルをC言語の関数“state_m1”とし、ステート“State m+2”のサイクル精度モデルを関数“state_m2”とする。なお、図4に示す回路においてブロックAから共有リソースに対して書き込み動作を実行するタイミングを示す信号“enA”は、図7に示すサイクル精度モデルにおいて“eA”というC言語の変数として表現されている。また、図4に示す回路においてデータが書き込まれるアドレスを示す信号“addrA”は、図7に示すサイクル精度モデルにおいて“aA”というC言語の変数として表現されている。さらに、図4に示す回路において書き込みデータを示す信号“dataA”は、図7に示すサイクル精度モデルにおいて“dA”というC言語の変数として表現されている。
図7に示すサイクル精度モデルの関数“state_m1”では、共有リソースのアドレス“0”にデータ“1”を書き込むため、変数“eA”に値“1”が、また、変数“aA”に値“0”が、さらに、変数“dA”に値“1”が、それぞれ代入される。また、関数“state_m2”では、共有リソースのアドレス“1”にデータ“2”を書き込むため、変数“eA”に値“1”が、また、変数“aA”に値“1”が、さらに、変数“dA”に値“2”が、それぞれ代入される。
図8は、図4のブロックBについて、図6のブロックBのCDFGから生成されたサイクル精度モデルをC言語で記述した事例を示す図である。
図8では、図7に示すステート“State n+1”のサイクル精度モデルをC言語の関数“State_n1”とし、ステート“State n+2”のサイクル精度モデルを関数“State_n2”とする。なお、図4に示す回路においてブロックBから共有リソースに対して書き込み動作を実行するタイミングを示す信号“enB”は、図8に示すサイクル精度モデルにおいて“eB”というC言語の変数として表現されている。また、図4に示す回路においてデータが書き込まれるアドレスを示す信号“addrB”は、図8に示すサイクル精度モデルにおいて“aB”というC言語の変数として表現されている。さらに、図4に示す回路において書き込みデータを示す信号“dataB”は、図8に示すサイクル精度モデルにおいて“dB”というC言語の変数として表現されている。
図8に示すサイクル精度モデルの関数“state_n1”では、データ“x”とデータ“y”が加算されて変数“z”に代入される。また、関数“state_n2”では、共有リソースのアドレス“0”にデータ“z”を書き込むため、変数“eB”に値“1”が、また、変数“aB”に値“0”が、さらに、変数“dB”に変数“z”が、それぞれ代入される。
図9は、図4に示す回路について、共有リソースへのアクセスタイミングを示す各信号のタイミングチャートである。
図9に示すように、図4に示す回路において、例えばある任意のクロックサイクル“t”で、ブロックAのCDFGのステートが図5に示すステート“State m+1”であり、かつ、ブロックBのCDFGのステートが図6に示すステート“State n+1”であるとすると、これに続くクロックサイクル“t+1”ではブロックAのCDFGのステートは“State m+2”となり、ブロックBのCDFGのステートは“State n+2”となる。
ブロックAでは、ステート“State m+1”およびステート“State m+2”において共有リソースにデータを書き込むため、図9のタイミングチャートに示すように信号“enA”はクロックサイクル“t”および“t+1”で“1”の状態になっている。
一方、ブロックBではステート“State n+2”において共有リソースにデータを書き込むため、図9のタイミングチャートに示すように信号“enB”はクロックサイクル“t+1”で“1”の状態になっている。
これによって、クロックサイクル“t+1”において、ブロックAから共有リソースに対する書き込み動作と、ブロックBから共有リソースに対する書き込み動作とが同時に実行されることになる。
図10は、図4に示す共有リソースについて、図2に示すハードウェアの動作記述を図3に示すフローチャートの処理に従って処理して得られる共有リソースデータベースを示す図である。
図10に示すように、共有リソース“array”のデータベースとして、リソース名が“array”、データの型が“int”、要素数が“2”というデータが格納されている。
図11は、図4に示す共有リソースについて、図2に示すハードウェアの動作記述を図3に示すフローチャートの処理にしたがって処理して得られる共有リソースデータベースとアクセス情報から生成された共有リソースのサイクル精度モデルを示す図である。
図11に示す共有リソースのサイクル精度モデルは、共有リソースの記憶領域がC言語の配列“storage_array[2]”として表現されている。この共有リソースには、ブロックAとブロックBからデータ書き込み動作が行われる。図11に示す共有リソースのサイクル精度モデルでは、ブロックAからの書き込みタイミングを示す信号はC言語の変数“eA”と表現されており、ブロックBからの書き込みタイミングを示す信号はC言語の変数“eB”と表現されている。
図7に示すブロックAのサイクル精度モデルを用いて説明したように、“eA”が“1”のときにブロックAからアドレス“aA”にデータ“dA”が書き込まれる。また、図8に示すブロックBのサイクル精度モデルを用いて説明したように、“eB”が“1”のときにブロックBからアドレス“aB”にデータ“dB”が書き込まれる。
図11に示す共有リソースのサイクル精度モデルの事例では、ブロックAからの書き込みがブロックBからの書き込みよりも優先されるものとする。この優先順位を決定する方法としては、例えば、ハードウェアの制約として設計者が指定する方法、またはブロック分割処理で生成されたブロックの順番をそのまま優先順位とする方法などが考えられる。本発明において、この優先順位の決定は任意である。
図11に示す共有リソースのサイクル精度モデルにおいて、図9に示すタイミングチャートのクロックサイクル“t”では、ブロックAからの書き込みタイミングを示す“eA”が“1”であるため、配列“storage_array[2]”のアドレス“aA”に示される番地にデータ“dA”が代入される。
次に、クロックサイクル“t+1”では、ブロックAからの書き込みタイミングを示す“eA”が“1”であるため、クロックサイクル“t”のときと同様に代入計算が行われる。クロックサイクル“t+1”のときは、ブロックBからの書き込みタイミングを示す“eB”も“1”であるが、書き込みの優先順位からブロックAが優先され、ブロックBからの書き込みは実行されない。よって、ブロックBでは正しく動作が実行されないこととなり、ハードウェアの誤動作の原因となる。
本発明では、このように、ハードウェアの誤動作の原因となる共有リソースへのアクセス動作について、正しい動作が成立する条件を満たすか否かをアサーションによりチェックするため、共有リソースのアクセス情報から汎用プログラミング言語記述により共有リソースのアクセス制御モデルを生成する。
図12は、図4に示す共有リソースarrayについて、図2に示すハードウェアの動作記述を図3に示すフローチャートの処理にしたがって得られる共有リソースのアクセス情報を示す図である。
図12に示すように、共有リソースのアクセス情報において、共有リソースarrayへはブロックAおよびブロックBからアクセスが行われ、各ブロックからのアクセス方向(アクセス内容)は“書き込み”であることが示されている。各ブロックからのアクセスに使用される信号は、図4の回路構成例に示すように、ブロックAからのアクセスには“enA”、“addrA”および“dataA”が用いられ、ブロックBからのアクセスには“enB”、“addrB”および“dataB”が用いられる。
即ち、共有リソースのアクセス情報としては、共有リソースにアクセスするブロック名、データ書き込みおよび読み出しの少なくともいずれかのアクセスの方向、および、アクセスに使用する信号として、ブロック名のブロックと共有リソース間でアクセス動作を実行するタイミングを示す信号“enA”および“enB”、アクセスするアドレスを示す信号“addrA”および“addrB”、および書き込みデータ“dataA” および“dataB”である
本実施形態では、図3に示すフローチャートにおけるステップS2のブロック分割・共有リソースの抽出処理により得られる共有リソースアクセス情報を用いて、アサーションにより共有リソースへのアクセスが重複されないように制御する共有リソースのアクセス制御モデルが生成される。
図2に示すハードウェアの動作記述の事例では、図12の共有リソースアクセス情報に示すように、共有リソースarrayに対してブロックAとブロックBから書き込みアクセスが行われる。前述したように、ブロックAからのアクセスには“enA”、“addrA”および“dataA”が用いられ、ブロックBからのアクセスには“enB”、“addrB”および“dataB”が用いられる。これらの共有リソースアクセス情報を元に、共有リソースarrayのアクセス制御モデルが生成される。
この共有リソースのアクセス制御モデルにより、例えばブロックAおよびBからのアクセスタイミングを示す各信号“enA”および“enB”を汎用プログラミング言語によりそれぞれ表現した各変数“eA”および“eB”を、“eA+eB”として加算し、その加算結果“eA+eB”をアサーション条件としてハードウェアが正しい条件で動作しているか否かを判断するように制御することができる。この一例を図13および図14を用いて詳細に説明する。
図13および図14はそれぞれ、図4に示す共有リソースへのアクセス動作について、正しい動作が成立する条件をアサーションを用いて表現した共有リソースの制御モデルをC言語により記述した事例である。
図13の共有リソースのアクセス制御モデルの事例は、上記加算結果“eA+eB”が“1”以下であるという条件をアサーション条件とする場合である。
即ち、ブロックAからの書き込みタイミングを示すC言語の変数“eA”と、ブロックBからの書き込みタイミングを示すC言語の変数“eB”を用いて、C言語の標準ライブラリ関数“assert”によりハードウェアの動作が正しいか否かがチェックされる。ブロックAとブロックBとから同一のクロックサイクルで書き込み動作が実行されない、即ち、変数“eA”と“eB”が同一のクロックサイクルで“1”にならないという条件がハードウェアの正しい動作条件であるとすれば、条件に合致するためには、変数“eA”と“eB”を加算して“1”以下であればよい。したがって、図13に示す共有リソースのアクセス制御モデルでは、“(eA+eB)<=1”という条件がアサーション条件としてチェックされる。
図14の共有リソースのアクセス制御モデルの事例は、上記加算結果“eA+eB”が“1”よりも大きい場合に、ハードウェアの正しい動作条件に合致しないものとしてエラー情報を報知手段に出力して、ハードウェアの動作が正しく実行されていないことを報知手段によりユーザに報知する場合である。
即ち、図13の場合と同様に、ブロックAからの書き込みタイミングを示すC言語の変数“eA”と、ブロックBからの書き込みタイミングを示すC言語の変数“eB”を用いて、C言語の“if”文によりハードウェアの動作が正しいか否かがチェックされる。図14に示す共有リソースのアクセス制御モデルでは、“eA”と“eB”を加算し、その加算結果が”1”よりも大きい場合にはハードウェアの正しい動作の条件に合致しないものとして、コンピュータシステム100における報知手段としてのモニタ装置1の標準出力にエラー情報を表示させ、ハードウェアの動作が正しく実行されていないことを設計者(ユーザ)に通知する。なお、報知手段としてはモニタ装置1に限らず、エラー情報を音声で警報報知する報知手段であってもよいし、エラー情報をプリントアウトするプリンタであってもよい。
ところで、共有リソースとして実装されるLSIの組み込みメモリなどは、マルチポートメモリとして実装される場合がある。マルチポートメモリとは、アドレス線、データ線および制御線が複数設けられ、同一クロックサイクルで複数のアクセスに対応可能なメモリのことである。しかしながら、一般的には、同一アドレスに対して同一クロックサイクルに複数の書き込みアクセスが行われた場合には、メモリの動作が不定になる。例えば、2つの書き込みアクセスが同一アドレスに同一クロックサイクルで発生した場合、どちらの値が書き込まれたかが分からず、ハードウェアの誤動作の原因となる。
本発明では、このようにマルチポートメモリとして実装された共有リソースへのアクセス動作についても、正しい動作が成立する条件を満たすか否かをアサーションによりチェックするため、共有リソースのアクセス情報から汎用プログラミング言語記述により共有リソースのアクセス制御モデルを生成する。
この共有リソースのアクセス制御モデルにより、例えばブロックAおよびBからのアクセスタイミングを示す各信号“enA”および“enB”を汎用プログラミング言語によりそれぞれ表現した各変数“eA”および“eB”と、共有リソースにアクセスされるアドレスを比較した結果とをアサーション条件として、ハードウェアが正しい条件で動作しているか否かを判断するように制御することができる。この一例を図15および図16を用いて詳細に説明する。
図15は、マルチポートメモリとして実装された共有リソースへのアクセス動作について、正しい動作が成立する条件をアサーションを用いて表現した共有リソースの制御モデルをC言語により記述した事例を示す図である。
図15の共有リソースのアクセス制御モデルの事例は、上記各変数“eA”および“eB”が全て”1”でかつ、ブロックAからの書き込みアドレスaAとブロックBからの書き込みアドレスaBを比較した結果が互いに等しいという条件aA=aBが全て成り立つ場合を除くという条件をアサーション条件とする場合である。
即ち、図2に示すハードウェアの動作記述例では、ブロックAとブロックBから書き込みアクセスが行われる。図15に示す共有リソースの制御モデルでは、図13に示すアサーションに用いられている書き込みタイミングを示すC言語の変数“eA”と“eB”に加えて、ブロックAからの書き込みアドレス“aA”とブロックBからの書き込みアドレス“aB”も条件に加えられている。マルチポートメモリとして実装された共有リソースに対して、同一クロックサイクルで同一アドレスに書き込む動作は正しくない動作であるので、“eA==1”、“eB==1”、“aA==aB”の条件が全て成り立つときが正しくない動作であると言える。言い換えると、“eA==1”、“eB==1”、“aA==aB”の全ての条件が成り立つとき以外は正しい動作である。よって、図15に示す共有リソースのアクセス制御モデルでは、C言語の標準ライブラリ関数“assert”を用いて、“! (eA==1 && eB==1 && aA == aB)”という条件がアサーション条件としてチェックされる。
図16は、図15の場合と同様に、マルチポートメモリとして実装された共有リソースへのアクセス動作について、正しい動作が成立する条件をアサーションを用いて表現した共有リソースの制御モデルをC言語により記述した他の事例を示す図である。
図16の共有リソースのアクセス制御モデルの事例は、上記各変数“eA”および“eB”が全て”1”でかつ、ブロックAからの書き込みアドレスaAとブロックBからの書き込みアドレスaBを比較した結果が互いに等しいという条件が全て成り立つ場合に、ハードウェアの正しい動作条件に合致しないものとしてエラー情報を報知手段に出力して、ハードウェアの動作が正しく実行されていないことがユーザに報知手段により報知される場合である。
即ち、図16に示す共有リソースの制御モデルでは、図15の場合と同様に、マルチポートメモリとして実装された共有リソースに対して、ブロックAからの書き込みタイミングを示すC言語の変数“eA”と書き込みアドレス“aA”、およびブロックBからの書き込みタイミングを示すC言語の変数“eB”と書き込みアドレス“aB”とを用いて、C言語の“if”文によりハードウェアの動作が正しいか否かがチェックされる。図16に示す共有リソースのアクセス制御モデルでは、図15を用いて説明したように、“eA==1”、“eB==1”、“aA==aB”の条件が全て成り立つときにハードウェアの正しい動作条件に合致しないものとして、コンピュータシステム100における報知手段としてのモニタ装置1の標準出力にエラー情報を表示させ、ハードウェアの動作が正しく実行されていないことを設計者(ユーザ)に通知する。なお、報知手段としてはモニタ装置1に限らず、エラー情報を音声で警報報知する報知手段であってもよいし、エラー情報をプリントアウトするプリンタであってもよい。
ハードウェアをサイクル精度レベルでシミュレーションする際には、各機能ブロックのサイクル精度モデルおよび共有リソースのサイクル精度モデルを計算した後、図13、図14、図15または図16に示す共有リソースのアクセス制御モデルを計算することによって、アサーションにより共有リソースへのアクセス動作を検証することができる。
図17は、図2に示すハードウェアの動作記述において、共有リソースのアクセス動作について、アサーションによる検証を行わないように、ハードウェア設計者が指定する方法の事例を説明するための図である。
共有リソースのアクセス制御モデルが生成されないように制御モデル生成禁止情報を指定可能とする場合、図17に示すように、アクセス制御モデル生成禁止情報として動作記述中に“#pragma no_assertion”が指定されると、それに続いて記述された共有リソースについて、図13〜図16に示すような共有リソースのアクセス制御モデルが生成されず、アサーションのチェックが行われないように設定することができる。これによって、ハードウェアのサイクル精度レベルでのシミュレーションにおいて、不必要な場合に、制御モデルの計算時間を削減することができる。ただし、このような制御モデル生成禁止情報の動作記述中での指定は、ハードウェアの動作において共有リソースに重複したアクセスが発生しないことが数学的に立証されているような場合に用いることが好ましい。
以上により、本実施形態によれば、ハードウェアの動作記述から構文・字句を解析する構文・字句解析手段41と、ハードウェアを機能ブロックに分割し、複数のブロックからアクセスされる共有リソースを抽出して共有リソースアクセス情報を作成するブロック分割・共有リソース抽出・アクセス情報作成手段42と、CDFG生成手段43と、スケジューリング・ステート割り振り手段44と、各機能ブロックの動作をサイクル精度レベルで検証可能なモデルを生成する機能ブロックのサイクル精度モデル生成手段45と、共有リソースの動作をサイクル精度レベルで検証可能なモデルを生成する共有リソースのサイクル精度モデル生成手段46と、共有リソースのアクセス情報から、アサーションにより共有リソースへのアクセスを制御するモデルを生成する共有リソースのサイクル制御モデル生成手段47とによって、サイクル精度レベルでハードウェアの正しい動作が成立する条件をアサーションにより検証可能な動作モデルを汎用プログラミング言語記述として生成することができる。
以上のように、本発明の好ましい実施形態を用いて本発明を例示してきたが、本発明は、この実施形態に限定して解釈されるべきものではない。本発明は、特許請求の範囲によってのみその範囲が解釈されるべきであることが理解される。当業者は、本発明の具体的な好ましい実施形態の記載から、本発明の記載および技術常識に基づいて等価な範囲を実施することができることが理解される。本明細書において引用した特許、特許出願および文献は、その内容自体が具体的に本明細書に記載されているのと同様にその内容が本明細書に対する参考として援用されるべきであることが理解される。
本発明は、ハードウェアの動作を検証可能な汎用プログラミング記述を生成するためのハードウェア検証用プログラミング用記述生成装置、ハードウェア検証用プログラミング記述生成方法、ハードウェア検証用プログラミング記述生成プログラムなどの制御プログラムおよびこれが記録されたコンピュータ読み取り可能な可読記録媒体の分野において、アクセス制御モデルとして、サイクル精度でハードウェアの正しい動作が成立する条件をアサーションにより検証可能な動作モデルを汎用プログラミング言語の記述として生成することができるため、高速かつ安価にハードウェアの動作を検証できて、LSIの設計および検証期間を短縮化でき、開発コストを低減することができる。
本発明の実施形態に係るハードウェア検証用プログラミング記述生成装置を実現するためのコンピュータシステムの要部構成図である。 並列動作する複数の機能ブロックから共有リソースにデータを書き込む動作を表すハードウェアの動作記述例を示す図である。 本実施形態のハードウェア検証プログラミング記述生成方法およびハードウェア検証プログラミング記述生成プログラムの処理手順を説明するためのフローチャートである。 図2に示すハードウェアの動作記述を図3に示すフローチャートの処理に従って高位合成して得られる回路構成例を示すブロック図である。 図4のブロックAについて、図2に示すハードウェアの動作記述を図3に示すフローチャートに従って処理して、ブロックAのスケジューリング・ステート割り振り処理後に得られるCDFGを示す図である。 図4のブロックBについて、図2に示すハードウェアの動作記述を図3に示すフローチャートに従って処理して、ブロックBのスケジューリング・ステート割り振り処理後に得られるCDFGを示す図である。 図4のブロックAについて、図5のブロックAのCDFGから生成されたサイクル精度モデルをC言語で記述した事例を示す図である。 図4のブロックBについて、図6のブロックBのCDFGから生成されたサイクル精度モデルをC言語で記述した事例を示す図である。 図4に示す回路について、共有リソースへのアクセスタイミングを示す各信号のタイミングチャートである。 図4に示す共有リソースについて、図2に示すハードウェアの動作記述を図3に示すフローチャートの処理に従って処理して得られる共有リソースのデータベースを示す図である。 図4に示す共有リソースについて、図2に示すハードウェアの動作記述を図3に示すフローチャートの処理に従って処理して得られる共有リソースのデータベースとアクセス情報から生成された共有リソースのサイクル精度モデルを示す図である。 図4に示す共有リソースについて、図2に示すハードウェアの動作記述を図3に示すフローチャートの処理に従って得られる共有リソースのアクセス情報を示す図である。 図4に示す共有リソースへのアクセス動作について、正しい動作が成立する条件をアサーションを用いて表現した共有リソースの制御モデルをC言語により記述した事例を示す図である。 図4に示す共有リソースへのアクセス動作について、正しい動作が成立する条件をアサーションを用いて表現した共有リソースの制御モデルをC言語により記述した他の事例を示す図である。 図4に示す共有リソースがマルチポートメモリとして実装されている場合のアクセス動作について、正しい動作が成立する条件をアサーションを用いて表現した共有リソースの制御モデルをC言語により記述した事例を示す図である。 図4に示す共有リソースがマルチポートメモリとして実装されている場合のアクセス動作について、正しい動作が成立する条件をアサーションを用いて表現した共有リソースの制御モデルをC言語により記述した他の事例を示す図である。 図2に示すハードウェアの動作記述において、共有リソースのアクセス動作について、アサーションによる検証を行わないように、ハードウェア設計者が指定する方法の事例を説明するための図である。
符号の説明
1 モニタ装置
2 キーボードなどの入力装置
3 計算機本体
31 CPU(制御部)
32 RAM
33 ROM(可読記録媒体)
4 ハードウェア検証用プログラミング記述生成プログラム
41 構文解析・字句解析手段
42 ブロック分割・共有リソースの抽出・アクセス情報作成手段
43 CDFG生成手段
44 スケジューリング・ステート割り振り手段
45 機能ブロックのサイクル精度モデル生成手段
46 共有リソースのサイクル精度モデル生成手段
47 共有リソースのアクセス制御モデル生成手段
51 ハードウェアの動作記述
52A ブロックAのCDFG
52B ブロックBのCDFG
53A ブロックAのサイクル精度モデル
53B ブロックBのサイクル精度モデル
54 共有リソースのデータベース
55 共有リソースのサイクル精度モデル
56 共有リソースのアクセス情報
57 共有リソースのアクセス制御モデル
100 コンピュータシステム

Claims (26)

  1. 回路構造に関する情報は含まれず、処理動作のみが記述された動作記述から得られたハードウェアの動作情報から該ハードウェアを複数の機能ブロックに分割し、分割した複数の機能ブロックからアクセスされる共有リソースを抽出して、該共有リソースのアクセス情報を作成するブロック分割・共有リソース抽出・アクセス情報作成手段と、
    該共有リソースのアクセス情報から、アサーションにより該共有リソースへのアクセスが重複されないように制御するアクセス制御モデルを生成する共有リソースのアクセス制御モデル生成手段とを有するハードウェア検証用プログラミング記述生成装置。
  2. 前記共有リソースのアクセス制御モデル生成手段は、前記アクセス制御モデルとして、サイクル精度レベルで前記ハードウェアの正しい動作が成立する条件をアサーションにより検証可能な動作モデルを汎用プログラミング言語の記述として生成する請求項1に記載のハードウェア検証用プログラミング記述生成装置。
  3. 前記共有リソースのアクセス制御モデルは、前記複数の機能ブロックのうちの少なくとも2つの機能ブロックのアクセスタイミングを示す各信号を前記汎用プログラミング言語によりそれぞれ表現した各変数を加算し、その加算結果をアサーション条件として前記ハードウェアが正しい条件で動作しているか否かを判断するように制御する請求項2に記載のハードウェア検証用プログラミング記述生成装置。
  4. 前記加算結果が“1”以下であるという条件を前記アサーション条件とする請求項3に記載のハードウェア検証用プログラミング記述生成装置。
  5. 前記加算結果が“1”よりも大きい場合に、前記ハードウェアの正しい動作条件に合致しないものとしてエラー情報を報知手段に出力して、該ハードウェアの動作が正しく実行されていないことを該報知手段によりユーザに報知する請求項3または4に記載のハードウェア検証用プログラミング記述生成装置。
  6. 前記共有リソースのアクセス制御モデルは、前記共有リソースがマルチポートメモリの場合に、前記複数の機能ブロックのうちの少なくとも2つの機能ブロックのアクセスタイミングを示す各信号を前記汎用プログラミング言語によりそれぞれ表現した各変数と、該共有リソースにそれぞれアクセスされる各アドレスを比較した結果とをアサーション条件として、前記ハードウェアが正しい条件で動作しているか否かを判断するように制御する請求項1に記載のハードウェア検証用プログラミング記述生成装置。
  7. 前記各変数が全て”1”でかつ前記各アドレスを比較した結果が等しいという条件が全て成り立つ場合を除くという条件をアサーション条件とする請求項6に記載のハードウェア検証用プログラミング記述生成装置。
  8. 前記各変数が全て”1”でかつ前記各アドレスを比較した結果が等しいという条件が全て成り立つ場合に、前記ハードウェアの正しい動作条件に合致しないものとしてエラー情報を報知手段に出力して、該ハードウェアの動作が正しく実行されていないことをユーザに該報知手段により報知する請求項6または7に記載のハードウェア検証用プログラミング記述生成装置。
  9. 前記共有リソースのアクセス制御モデルが生成されないようにアクセス制御モデル生成禁止情報を動作記述中に指定可能とする請求項1に記載のハードウェア検証用プログラミング記述生成装置。
  10. 前記共有リソースのアクセス情報は、該共有リソースにアクセスするブロック名、データ書き込みおよび読み出しのうちの少なくともいずれかのアクセスの方向、および、アクセスに使用する信号として、該ブロック名のブロックと該共有リソース間でアクセス動作を実行するタイミングを示す信号、アクセスするアドレスを示す信号および書き込みデータである請求項1に記載のハードウェア検証用プログラミング記述生成装置。
  11. 前記動作記述から構文および字句を解析処理する構文解析・字句解析手段をさらに有し、前記ブロック分割・共有リソース抽出・アクセス情報作成手段は、該動作記述から構文および字句を解析処理して得られたハードウェアの動作情報から該ハードウェアを複数の機能ブロックに分割する請求項1に記載のハードウェア検証用プログラミング記述生成装置。
  12. 前記複数の機能ブロックの各CDFGをそれぞれ作成するCDFG生成手段と、
    該各CDFGで回路動作を表すノードをスケジューリングおよびステート割り振りするスケジューリング・ステート割り振り手段と、
    該機能ブロックの動作をサイクル精度レベルで検証可能なサイクルク精度モデルを生成する機能ブロックのサイクル精度モデル生成手段と、
    前記共有リソースの動作をサイクル精度レベルで検証可能なサイクル精度モデルを生成する共有リソースのサイクル精度モデル生成手段とをさらに有する請求項1または11に記載のハードウェア検証用プログラミング記述生成装置。
  13. 回路構造に関する情報は含まれず、処理動作のみが記述された動作記述から得られたハードウェアの動作情報から該ハードウェアを機能ブロックに分割し、分割した複数の機能ブロックからアクセスされる共有リソースを抽出して、該共有リソースのアクセス情報を作成するブロック分割・共有リソース抽出・アクセス情報作成ステップと、
    該共有リソースのアクセス情報から、アサーションにより該共有リソースへのアクセスが重複されないように制御するアクセス制御モデルを生成する共有リソースのアクセス制御モデル生成ステップとを有するハードウェア検証用プログラミング記述生成方法。
  14. 前記共有リソースのアクセス制御モデル生成ステップは、前記アクセス制御モデルとして、サイクル精度レベルで前記ハードウェアの正しい動作が成立する条件をアサーションにより検証可能な動作モデルを汎用プログラミング言語の記述として生成する請求項13に記載のハードウェア検証用プログラミング記述生成方法。
  15. 前記共有リソースのアクセス制御モデル生成ステップにおいて、前記アクセス制御モデルは、前記複数の機能ブロックのうちの少なくとも2つの機能ブロックのアクセスタイミングを示す各信号を前記汎用プログラミング言語によりそれぞれ表現した各変数を加算し、その加算結果をアサーション条件として、前記ハードウェアが正しい条件で動作しているか否かを判断するように制御する請求項14に記載のハードウェア検証用プログラミング記述生成方法。
  16. 前記加算結果が“1”以下であるという条件を前記アサーション条件とする請求項15に記載のハードウェア検証用プログラミング記述生成方法。
  17. 前記加算結果が“1”よりも大きい場合に、前記ハードウェアの正しい動作条件に合致しないものとしてエラー情報を報知手段に出力して、該ハードウェアの動作が正しく実行されていないことを該報知手段によりユーザに報知する請求項15または16に記載のハードウェア検証用プログラミング記述生成方法。
  18. 前記共有リソースのアクセス制御モデル生成ステップにおいて、該共有リソースがマルチポートメモリの場合に、前記アクセス制御モデルは、前記複数の機能ブロックのうちの少なくとも2つの機能ブロックのアクセスタイミングを示す各信号を前記汎用プログラミング言語によりそれぞれ表現した各変数と、該共有リソースにそれぞれアクセスされる各アドレスを比較した結果とをアサーション条件として、前記ハードウェアが正しい条件で動作しているか否かを判断するように制御する請求項14に記載のハードウェア検証用プログラミング記述生成方法。
  19. 前記各変数が全て”1”でかつ前記各アドレスを比較した結果が等しいという条件が全て成り立つ場合を除くという条件をアサーション条件とする請求項18に記載のハードウェア検証用プログラミング記述生成方法。
  20. 前記各変数が全て”1”でかつ前記各アドレスを比較した結果が等しいという条件が全て成り立つ場合に、前記ハードウェアの正しい動作条件に合致しないものとしてエラー情報を報知手段に出力して、該ハードウェアの動作が正しく実行されていないことをユーザに該報知手段により報知する請求項18または19に記載のハードウェア検証用プログラミング記述生成方法。
  21. 前記共有リソースのアクセス制御モデルが生成されないようにアクセス制御モデル生成禁止情報を動作記述中に指定可能とする請求項13に記載のハードウェア検証用プログラミング記述生成方法。
  22. 前記共有リソースのアクセス情報は、該共有リソースにアクセスするブロック名、データ書き込みおよび読み出しのうちの少なくともいずれかのアクセスの方向、および、アクセスに使用する信号として、該ブロック名のブロックと該共有リソース間でアクセス動作を実行するタイミングを示す信号、アクセスするアドレスを示す信号および書き込みデータである請求項13に記載のハードウェア検証用プログラミング記述生成方法。
  23. 前記動作記述から構文および字句を解析処理する構文解析・字句解析ステップをさらに有し、前記ブロック分割・共有リソース抽出・アクセス情報作成ステップは、該動作記述から構文および字句を解析処理して得られたハードウェアの動作情報から該ハードウェアを複数の機能ブロックに分割する請求項13に記載のハードウェア検証用プログラミング記述生成方法。
  24. 前記複数の機能ブロックの各CDFGをそれぞれ作成するCDFG生成ステップと、
    該各CDFGで回路動作を表すノードをスケジューリングおよびステート割り振りするスケジューリング・ステート割り振りステップと、
    該機能ブロックの動作をサイクル精度レベルで検証可能なサイクルク精度モデルを生成する機能ブロックのサイクル精度モデル生成ステップと、
    前記共有リソースの動作をサイクル精度レベルで検証可能なサイクル精度モデルを生成する共有リソースのサイクル精度モデル生成ステップとをさらに有する請求項13または23に記載のハードウェア検証用プログラミング記述生成方法。
  25. 請求項13〜24のいずれかに記載のハードウェア検証用プログラミング記述生成方法の各ステップを計算機システムによって実行可能な処理手順が記述された制御プログラム。
  26. 請求項25に記載の制御プログラムが記録されて前記計算機システムによって該制御プログラムを読み取り可能な可読記録媒体。
JP2007312897A 2007-12-03 2007-12-03 ハードウェア検証用プログラミング記述生成装置、ハードウェア検証用プログラミング記述生成方法、制御プログラムおよび可読記録媒体 Expired - Fee Related JP5001126B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2007312897A JP5001126B2 (ja) 2007-12-03 2007-12-03 ハードウェア検証用プログラミング記述生成装置、ハードウェア検証用プログラミング記述生成方法、制御プログラムおよび可読記録媒体

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2007312897A JP5001126B2 (ja) 2007-12-03 2007-12-03 ハードウェア検証用プログラミング記述生成装置、ハードウェア検証用プログラミング記述生成方法、制御プログラムおよび可読記録媒体

Publications (2)

Publication Number Publication Date
JP2009140028A true JP2009140028A (ja) 2009-06-25
JP5001126B2 JP5001126B2 (ja) 2012-08-15

Family

ID=40870604

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2007312897A Expired - Fee Related JP5001126B2 (ja) 2007-12-03 2007-12-03 ハードウェア検証用プログラミング記述生成装置、ハードウェア検証用プログラミング記述生成方法、制御プログラムおよび可読記録媒体

Country Status (1)

Country Link
JP (1) JP5001126B2 (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009230667A (ja) * 2008-03-25 2009-10-08 Nec Corp プロパティ生成システムおよびプロパティ検証システム
EP3540593A2 (en) 2018-03-15 2019-09-18 OMRON Corporation Program development assist system, program development assist method, and program development assist program

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001142918A (ja) * 1999-11-11 2001-05-25 Fujitsu Ltd ハードウェアについて検証すべきプロパティを生成する装置および方法
JP2004038617A (ja) * 2002-07-04 2004-02-05 Nec Corp 論理検証システム及び方法、論理コーン抽出装置及び方法、論理検証及び論理コーン抽出プログラム
JP2006139729A (ja) * 2004-11-15 2006-06-01 Sharp Corp ハードウェア検証用プログラミング言語モデル生成装置、ハードウェア検証用プログラミング言語モデル生成方法、コンピュータシステム、ハードウェアシミュレーション方法、制御プログラムおよび可読記憶媒体

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001142918A (ja) * 1999-11-11 2001-05-25 Fujitsu Ltd ハードウェアについて検証すべきプロパティを生成する装置および方法
JP2004038617A (ja) * 2002-07-04 2004-02-05 Nec Corp 論理検証システム及び方法、論理コーン抽出装置及び方法、論理検証及び論理コーン抽出プログラム
JP2006139729A (ja) * 2004-11-15 2006-06-01 Sharp Corp ハードウェア検証用プログラミング言語モデル生成装置、ハードウェア検証用プログラミング言語モデル生成方法、コンピュータシステム、ハードウェアシミュレーション方法、制御プログラムおよび可読記憶媒体

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009230667A (ja) * 2008-03-25 2009-10-08 Nec Corp プロパティ生成システムおよびプロパティ検証システム
EP3540593A2 (en) 2018-03-15 2019-09-18 OMRON Corporation Program development assist system, program development assist method, and program development assist program
US10628143B2 (en) 2018-03-15 2020-04-21 Omron Corporation Program development assist system, program development assist method, and non-transitory computer readable recording medium

Also Published As

Publication number Publication date
JP5001126B2 (ja) 2012-08-15

Similar Documents

Publication Publication Date Title
US8417504B2 (en) Conversion of circuit description to a transaction model
CN1885295B (zh) 使用逻辑单元建置集成电路
US7472361B2 (en) System and method for generating a plurality of models at different levels of abstraction from a single master model
US7761272B1 (en) Method and apparatus for processing a dataflow description of a digital processing system
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
JP4806529B2 (ja) 複製されたロジックを使用するデバッグの方法とシステム
US20110083114A1 (en) Method and system for re-using digital assertions in a mixed signal design
US11836641B2 (en) Machine learning-based prediction of metrics at early-stage circuit design
JP4393450B2 (ja) 論理回路モデル変換装置及び論理回路モデル変換プログラム
KR20080055913A (ko) 집적회로 디자인 시뮬레이션을 위한 어써션의 개발 방법 및시스템과 장치
JP4175953B2 (ja) 高位合成装置、ハードウェア検証用モデル生成方法、ハードウェア検証方法、制御プログラムおよび可読記録媒体
JP5034916B2 (ja) 性能評価モデル生成方法、システム性能評価方法、及び性能評価モデル生成装置
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
US7228513B2 (en) Circuit operation verification device and method
JP5001126B2 (ja) ハードウェア検証用プログラミング記述生成装置、ハードウェア検証用プログラミング記述生成方法、制御プログラムおよび可読記録媒体
JP5830955B2 (ja) 検証装置、検証方法及び検証プログラム
US10223077B2 (en) Determination of signals for readback from FPGA
US7454680B2 (en) Method, system and computer program product for improving efficiency in generating high-level coverage data for a circuit-testing scheme
JP2007018313A (ja) 回路設計プログラム、回路設計装置、回路設計方法
JP5071297B2 (ja) 設計支援プログラム、設計支援装置、および設計支援方法
US20240111660A1 (en) Managing high performance simulation representation of an emulation system
US20220300690A1 (en) Incremental compilation for fpga-based systems
KR100928181B1 (ko) 디지털 시스템 설계 방법
JP2011145880A (ja) 半導体集積回路の論理検証にて使用するテストタスクの生成方法
TWI427496B (zh) 製造積體電路的模型的方法和系統

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20100218

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20110915

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110928

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20111125

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

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

R150 Certificate of patent or registration of utility model

Ref document number: 5001126

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

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

Free format text: PAYMENT UNTIL: 20150525

Year of fee payment: 3

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: R3D04

LAPS Cancellation because of no payment of annual fees