JP2009110076A - ソフトウェア検証支援プログラム、該プログラムを記録した記録媒体、ソフトウェア検証支援装置、およびソフトウェア検証支援方法 - Google Patents

ソフトウェア検証支援プログラム、該プログラムを記録した記録媒体、ソフトウェア検証支援装置、およびソフトウェア検証支援方法 Download PDF

Info

Publication number
JP2009110076A
JP2009110076A JP2007278997A JP2007278997A JP2009110076A JP 2009110076 A JP2009110076 A JP 2009110076A JP 2007278997 A JP2007278997 A JP 2007278997A JP 2007278997 A JP2007278997 A JP 2007278997A JP 2009110076 A JP2009110076 A JP 2009110076A
Authority
JP
Japan
Prior art keywords
register
software
hardware
check code
verification support
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
JP2007278997A
Other languages
English (en)
Other versions
JP5034867B2 (ja
Inventor
Hiroaki Fujimoto
博昭 藤本
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.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
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 Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2007278997A priority Critical patent/JP5034867B2/ja
Publication of JP2009110076A publication Critical patent/JP2009110076A/ja
Application granted granted Critical
Publication of JP5034867B2 publication Critical patent/JP5034867B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Debugging And Monitoring (AREA)
  • Test And Diagnosis Of Digital Computers (AREA)

Abstract

【課題】CPU上で動作するソフトウェアを検証するためのアサーションが挿入されたハードウェアモデルの自動生成を実現する。
【解決手段】ハードウェアモデルの設計元となるレジスタ仕様情報に、アサーションに必要な情報を追加することにより、ソフトウェアの詳細を理解していないハードウェアモデル開発者によるアサーションの記述を可能とする。これにより、ソフトウェア開発と並行したハードウェアモデル開発の実行を可能とし、ハードウェア/ソフトウェア混在システム全体の開発期間の短縮化を図る。
【選択図】図1

Description

この発明は、ハードウェアとソフトウェアとからなるシステムのソフトウェアの検証を支援するソフトウェア検証支援プログラム、該プログラムを記録した記録媒体、ソフトウェア検証支援装置、およびソフトウェア検証支援方法に関する。
一般に、CPUコアやDSPコアを集積したSoC(System on a Chip)のようなハードウェアとソフトウェアとが混在するシステムを開発する場合、ハードウェアとソフトウェアとを同時に取り扱って、システム全体の動作検証をおこなう必要がある。このため、ハードウェアの論理設計が完了しシステム全体の動作検証を開始するまでに、ファームウェアやミドルウェアなどのソフトウェア開発をある程度進めておく必要がある。
しかし一方で、SoCの大規模化、複雑化により、その上で動作するファームウェアも大規模化、複雑化してきている。このため、ファームウェアの検証が困難となってきている。具体的には、ソフトウェアが扱うレジスタ数が増大しており、それらレジスタ間の依存関係も複雑になってきている。このため、従来に比べてソフトウェアも大幅に複雑化しており、デバックが困難となっている。
従来より、ソフトウェアのデバック手法としては、ファームウェアにアサーションを埋め込む手法が用いられている。これは、実行時に埋め込まれたアサーションコードを実行し、変数の値などのチェックをおこなう。C/C++言語では、ライブラリとしてassert関数が用意されているため、組み込み系のソフトウェアでも使用することができる。また、アサーションを使うと、printfによるログ出力に比べて効果的にデバックをおこなうことができる。
また、ハードウェアの仕様情報からハードウェアモデルを自動生成し、ファームウェアからのレジスタアクセス時にレジスタ設定値や依存関係などのチェックをおこなう手法が開示されている(たとえば、下記特許文献1参照。)。
これによれば、ISS側のタイミングに影響を与えることなくアサーションコードを実行することができる。また、ISS・ハードウェアモデルが動作するソフトウェア開発環境は、PC/WSなどで実行されるためメモリサイズを考慮する必要がない。
特開2004−220223号公報
しかしながら、上述した従来技術のファームウェアにアサーションを埋め込む手法によれば、時間制約の厳しいリアルタイムソフトウェアでは、アサーションを使うことにより、タイミングのズレが発生し動作が変わってしまう場合があるという問題があった。また、組み込み系のソフトウェアでは、メモリサイズが限られているためアサーションを使うとコード量が増加してメモリに収まらなくなる場合があるという問題があった。さらに、組み込み系のソフトウェア開発環境では、そのシステム専用のライブラリを作成しなければassert関数が使えないという問題があった。
また、ハードウェアモデル内にアサーションを埋め込むことが考えられる。しかし、ハードウェアモデル開発者は、ハードウェアモデルにチェッカを組み込む際に、ファームウェアの詳細を理解していないために、当該ファームウェアの動作を検証するためのチェッカを作成することが困難となっていた。このため、ソフトウェア開発者が実装のあとにチェッカを作成し、ハードウェアモデル開発者に提供するという手順が取られており、開発期間の長期化を招いてしまうという問題があった。
また、組み込み系のソフトウェアの場合、チェック対象となるハードウェアレジスタが大量に存在するため、チェック用コードを人手で入力する場合、作業負担が増大化するだけでなく、チェック用コードの入力漏れが発生する場合があり、検証の手戻り作業が多発し、検証作業の長期化、ひいては開発期間の長期化を招いてしまうという問題があった。
この発明は、上述した従来技術による問題点を解消するため、ソフトウェア検証のチェッカが挿入されたハードウェアモデルの自動生成を実現することにより、ソフトウェア開発と並行したハードウェアモデル開発の実行を可能とし、開発期間の短縮化を図ることができるソフトウェア検証支援プログラム、該プログラムを記録した記録媒体、ソフトウェア検証支援装置、およびソフトウェア検証支援方法を提供することを目的とする。
上述した課題を解決し、目的を達成するため、この発明にかかるソフトウェア検証支援プログラム、該プログラムを記録した記録媒体、ソフトウェア検証支援装置、およびソフトウェア検証支援方法は、ハードウェアとソフトウェアとからなるシステムのうち前記ソフトウェアの検証を支援するソフトウェア検証支援プログラム、該プログラムを記録した記録媒体、ソフトウェア検証支援装置、およびソフトウェア検証支援方法において、前記ハードウェアのレジスタ仕様を定義するレジスタ仕様情報を取得し、そのレジスタ仕様情報に基づいて、前記ソフトウェアからの前記レジスタへのアクセスを検証するためのチェックコードを生成し、そのチェックコードを出力することを特徴とする。
この発明によれば、レジスタ仕様情報にアサーションに必要な情報を追加することにより、ソフトウェアのレジスタへのアクセスを検証するためのチェックコードを自動生成することができる。
また、上記発明において、前記レジスタ仕様情報の中から、前記レジスタごとに、前記レジスタへの書き込み時に当該レジスタとは異なる他のレジスタが満たすべき条件を抽出し、その条件に基づいて、前記レジスタへの書き込み時に前記他のレジスタが前記条件を満たしているか否かを判定するためのチェックコードを生成することとしてもよい。
この発明によれば、レジスタ仕様情報に事前条件に関する情報を追加することにより、レジスタへの書き込み時に他のレジスタが事前条件を満たしているか否かを判定するためのチェックコードを自動生成することができる。
また、上記発明において、前記レジスタ仕様情報の中から、前記レジスタごとに、当該レジスタを構成するビット列のうち書き込み可能なビット位置を指定するビットフィールドの値の有効範囲を抽出し、その有効範囲に基づいて、前記レジスタへの書き込み時に前記ビットフィールドの値が前記有効範囲内となっているか否かを判定するためのチェックコードを生成することとしてもよい。
この発明によれば、レジスタ仕様情報にビットフィールドの値の有効範囲に関する情報を追加することにより、レジスタへの書き込み時にビットフィールドの値が有効範囲内となっているか否かを判定するためのチェックコードを自動生成することができる。
また、上記発明において、前記レジスタ仕様情報の中から、前記レジスタごとに、当該レジスタを構成する各ビットへの読み出しまたは/および書き込みの可否を特定するビットタイプを抽出し、そのビットタイプに基づいて、読み出し専用レジスタへの書き込みを判定するためのチェックコードを生成することとしてもよい。
この発明によれば、レジスタ仕様情報に含まれている各ビットへの読み出しまたは/および書き込みの可否を特定するビットタイプに関する情報を用いて、読み出し専用レジスタへの書き込みを判定するためのチェックコードを自動生成することができる。
また、上記発明において、前記ビットタイプに基づいて、書き込み専用レジスタへの読み出しを判定するためのチェックコードを生成することとしてもよい。
この発明によれば、書き込み専用レジスタへの読み出しを判定するためのチェックコードを自動生成することができる。
また、上記発明において、前記ビットタイプに基づいて、ビットフィールドが定義されていない未定義ビットまたは読み出し専用ビットフィールドへの書き込みを判定するためのチェックコードを生成することとしてもよい。
この発明によれば、未定義ビットまたは読み出し専用ビットフィールドへの書き込みを判定するためのチェックコードを自動生成することができる。
また、上記発明において、前記レジスタ仕様情報の中から、前記ソフトウェアモデルのすべてのレジスタのレジスタアドレスを抽出し、そのレジスタアドレスに基づいて、前記レジスタ仕様情報に定義されていない未定義レジスタへのアクセスを判定するためのチェックコードを生成することとしてもよい。
この発明によれば、レジスタ仕様情報に含まれている各レジスタのレジスタアドレスに関する情報を用いて、未定義レジスタへのアクセスを判定するためのチェックコードを自動生成することができる。
本発明にかかるソフトウェア検証支援プログラム、該プログラムを記録した記録媒体、ソフトウェア検証支援装置、およびソフトウェア検証支援方法によれば、ソフトウェア検証のチェッカが挿入されたハードウェアモデルの自動生成を実現することにより、ソフトウェア開発と並行したハードウェアモデル開発の実行を可能とし、開発期間の短縮化を図ることができるという効果を奏する。
以下に添付図面を参照して、この発明にかかるソフトウェア検証支援プログラム、該プログラムを記録した記録媒体、ソフトウェア検証支援装置、およびソフトウェア検証支援方法の好適な実施の形態を詳細に説明する。
(この発明の概要)
まず、この発明の概要について説明する。図1は、ハードウェア/ソフトウェア混在システムの開発工程を示す説明図である。ハードウェア/ソフトウェア混在システムでは、ハードウェアとソフトウェアとを実装し各種の機能を実現する。このとき、ハードウェア/ソフトウェア混在システム開発においては、ハードウェア開発者によるハードウェア開発とソフトウェア開発者によるソフトウェア開発とがおこなわれる。このとき、開発期間の短縮化のために、ハードウェア開発とソフトウェア開発とを並行しておこなうことが望ましい。
一方で、開発したソフトウェアを検証するためには、ハードウェアとソフトウェアとのインターフェースに関するハードウェアモデルが必要となる。したがって、ソフトウェアの検証は、ハードウェアの外部仕様が決定し、その外部仕様に基づくハードウェアモデル設計が完了したあとにおこなわれる。ここで、ハードウェア/ソフトウェア混在システムの開発工程を説明する。
図1において、まず、ハードウェア開発において、ハードウェア開発者は、Verilog−HDLやVHDLなどのハードウェア記述言語を用いて、論理回路などの仕様を設計するハードウェア仕様設計をおこなう(101)。そして、ハードウェア仕様設計が完了すると、ハードウェアを実装し(102)、そのハードウェアの仕様を検証するハードウェア検証をおこなう(103)。
また、このハードウェア開発と並行して、ソフトウェア開発において、ソフトウェア開発者は、C言語などのプログラム言語を用いて、ファームウェアやミドルウェアなどのプログラムを作成するソフトウェア仕様設計をおこなう(104)。そして、ソフトウェア仕様設計が完了すると、ソフトウェアの実装をおこなう(105)。
また、ハードウェアモデル開発において、ハードウェアモデル開発者は、ハードウェア開発でハードウェアの外部仕様が決定されると、その外部仕様に基づいて、ソフトウェア検証で利用するためのハードウェアモデルを設計するハードウェアモデル設計をおこなう(106)。
このあと、ハードウェアモデル設計が完了すると、ソフトウェア開発者は、ハードウェアモデルを利用してソフトウェアの検証をおこなう(107)。そして、ハードウェア検証およびソフトウェア検証が完了すると、ハードウェア開発者およびソフトウェア開発者は、ハードウェアとソフトウェアとを組み合わせたハードウェア/ソフトウェア協調検証をおこなう(108)。
本発明では、ハードウェアモデル設計(106)において、ファームウェアからのレジスタへのアクセスをチェックするためのアサーションをハードウェアモデル内に埋め込むことにより、ソフトウェアのデバックを実現する。このとき、ハードウェアモデルの設計元となる仕様書に、アサーションに必要な情報を追加することにより、ソフトウェアの詳細を理解していないハードウェアモデル開発者によるアサーションの記述を可能とする。
これにより、ソフトウェア開発と並行して、アサーションが挿入されたハードウェアモデルの開発をおこなうことを可能とし、ハードウェア/ソフトウェア混在システム全体の開発期間の短縮化を図る。
(ソフトウェア検証装置のハードウェア構成)
つぎに、この発明の実施の形態にかかるソフトウェア検証装置のハードウェア構成について説明する。図2は、この発明の実施の形態にかかるソフトウェア検証装置のハードウェア構成を示す説明図である。
図2において、ソフトウェア検証装置200は、コンピュータ本体210と、入力装置220と、出力装置230と、から構成されており、不図示のルータやモデムを介してLAN,WANやインターネットなどのネットワーク240に接続可能である。
コンピュータ本体210は、CPU,メモリ,インターフェースを有する。CPUは、ソフトウェア検証装置200の全体の制御を司る。メモリは、ROM,RAM,HD,光ディスク211,フラッシュメモリから構成される。メモリはCPUのワークエリアとして使用される。
また、メモリには各種プログラムが格納されており、CPUからの命令に応じてロードされる。HDおよび光ディスク211はディスクドライブによりデータのリード/ライトが制御される。また、光ディスク211およびフラッシュメモリはコンピュータ本体210に対し着脱自在である。インターフェースは、入力装置220からの入力、出力装置230への出力、ネットワーク240に対する送受信の制御をおこなう。
また、入力装置220としては、キーボード221、マウス222、スキャナ223などがある。キーボード221は、文字、数字、各種指示などの入力のためのキーを備え、データの入力をおこなう。また、タッチパネル式であってもよい。マウス222は、カーソルの移動や範囲選択、あるいはウィンドウの移動やサイズの変更などをおこなう。スキャナ223は、画像を光学的に読み取る。読み取られた画像は画像データとして取り込まれ、コンピュータ本体210内のメモリに格納される。なお、スキャナ223にOCR機能を持たせてもよい。
また、出力装置230としては、ディスプレイ231、スピーカ232、プリンタ233などがある。ディスプレイ231は、カーソル、アイコンあるいはツールボックスをはじめ、文書、画像、機能情報などのデータを表示する。また、スピーカ232は、効果音や読み上げ音などの音声を出力する。また、プリンタ233は、画像データや文書データを印刷する。
(検証対象の一例)
つぎに、この発明の実施の形態にかかる検証対象の一例について説明する。図3は、検証対象の一例を示す説明図である。図3において、検証対象であるSoC300は、CPU301と、HW(ハードウェア)ブロックA302と、HWブロックB303と、HWブロックC304と、メモリ305と、から構成されている。また、各構成部301〜305は、バス310によってそれぞれ接続されている。
CPU301は、ROMやRAMなどの記憶領域に保持されているファームウェア306を実行することにより、バス310を介して接続されたHWブロックA302〜HWブロックC304の制御をおこなう。なお、図1で示したハードウェア/ソフトウェア混在システム開発において、ハードウェア開発者は上記HWブロックA302〜HWブロックC304を開発し、ソフトウェア開発者はファームウェア306を開発する。
(ソフトウェア検証環境)
つぎに、ソフトウェア検証環境について説明する。図4は、ソフトウェア検証環境の一例を示す説明図である。図4において、ソフトウェア検証環境400は、ISS(Instruction Set Simulator)401と、HWモデルA402と、HWモデルB403と、HWモデルC404と、メモリモデル405と、から構成されている。また、各構成部401〜405は、バスモデル410によってそれぞれ接続されている。
ISS401は、CPUのすべての命令の実行をシミュレーションすることができるシミュレーターである。HWモデルA402〜HWモデルC404は、図3に示したHWブロックA302〜HWブロックC304の機能を実現するモデルである。また、各HWモデルA402〜HWモデルC404には、ファームウェア306の動作を検証するためのアサーション406〜408がそれぞれ埋め込まれている。
メモリモデル405は、ISS401と各HWモデルA402〜HWモデルC404との間で使用する共有メモリである。なお、各HWモデルA402〜HWモデルC404は、ハードウェアモデル開発者により、後述するレジスタ仕様情報Rを用いて設計される。
(ソフトウェア検証支援装置の機能的構成)
つぎに、この発明の実施の形態にかかるソフトウェア検証支援装置200の機能的構成について説明する。図5は、この発明の実施の形態にかかるソフトウェア検証支援装置の機能的構成を示すブロック図である。図5において、ソフトウェア検証支援装置200は、取得部501と、生成部502と、抽出部503と、作成部504と、出力部505と、から構成されている。
これら各機能501〜505は、記憶領域に格納された当該機能に関するプログラムをCPUに実行させることにより、当該機能を実現することができる。また、各機能501〜505からの出力データは記憶領域に保持される。また、図5中矢印で示した接続先の機能的構成は、接続元の機能からの出力データを記憶領域から読み込んで、当該機能に関するプログラムをCPUに実行させる。
まず、取得部501は、ハードウェアのレジスタ仕様を定義するレジスタ仕様情報Rを取得する機能を有する。具体的には、ソフトウェア検証支援装置200にレジスタ仕様情報Rを直接入力することとしてもよく、また、ネットワーク240を介して外部のコンピュータ装置から取得することとしてもよい。
ここで、レジスタ仕様情報Rについて説明する。図6〜図8は、レジスタ仕様情報Rの一例を示す説明図である。図6〜図8において、レジスタ仕様情報R1,R2,R3は、レジスタごとに、レジスタ名、レジスタアドレス、事前条件、ビット番号、ビットフィールド名、R/W、初期値および有効範囲をあらわす情報を有している。
レジスタ名は、レジスタの名称である。レジスタアドレスは、各レジスタに割り振られたメモリ上のアドレスである。事前条件は、各レジスタへの書き込み時に当該レジスタとは異なる他のレジスタが満たすべき条件である。ビット番号は、レジスタを構成する各ビットの位置を指定する番号である。ビットフィールド名は、ビットフィールドの名称である。
R/Wは、各ビットへの読み出しまたは/および書き込みの可否を特定するビットタイプである。ここでは、「R」は読み出し可能なビットを、「W」は書き込み可能なビットを、「R/W」は読み出しおよび書き込み可能なビットをあらわしている。初期値は、各ビットに予め保持されている値である。有効範囲は、書き込み可能なビット位置を指定するビットフィールドの値の有効範囲をあらわしている。
ここで、レジスタ仕様情報R1を例に挙げると、レジスタ名が「COMMAND_REQ」のレジスタの仕様が定義されている。レジスタアドレスは「020」である。事前条件は「COM_STATUS==0」および「DEC_MODE<=3」が定義されている。これは、レジスタ「COMMAND_REQ」への書き込み時に、レジスタ「COM_STATUS」が「0」、レジスタ「DEC_MODE」が「3以下」となる条件をあらわしている。
また、ビット番号0〜2および8〜11にビットフィールド「COMMAND」および「COM_PARAM」がそれぞれ指定されている。ビットフィールド「COMMAND」は、書き込み可能なビットフィールドである。また、ビットフィールド「COM_PARAM」は、読み出しおよび書き込み可能なビットフィールドであり、その有効範囲は「(−5)〜6」である。なお、初期値はすべてが「0」となっている。
図5の説明に戻り、生成部502は、取得部501によって取得されたレジスタ仕様情報Rに基づいて、CPU上で動作するソフトウェアからのレジスタへのアクセスを検証するためのチェックコードを生成する機能を有する。具体的には、たとえば、HWブロックA302〜HWブロックC304(図3参照)の機能を実現するHWモデルA402〜HWモデルC404(図4参照)の制御をおこなうファームウェア306からのレジスタへの読み出し/書き込みを検証するためのチェックコードを生成する。
以下、生成部502による生成処理の処理内容について説明する。抽出部503は、取得部501によって取得されたレジスタ仕様情報Rの中から、レジスタごとに、レジスタへの書き込み時に当該レジスタとは異なる他のレジスタが満たすべき条件を抽出する。条件とは、たとえば、図6に示したレジスタ仕様情報R1に含まれている事前条件『COM_STATUS==0,DEC_MODE<=3』である。
この場合、生成部502は、抽出部503によって抽出された条件に基づいて、レジスタへの書き込み時に他のレジスタが条件を満たしているか否かを判定するためのチェックコードを生成する。具体的には、たとえば、図6に示したレジスタ「COMMAND_REQ」への書き込み時に、チェック対象となるレジスタ『COM_STATUS』に保持されている値を読み出して、その値が事前条件『COM_STATUS==0』を満たしているか否かを判定するためのチェックコードを生成する。
ここで、事前条件に関するチェックコードを生成する生成処理の具体例を説明する。以下において、C言語を用いてチェックコードを記述する場合を例に挙げて説明する。図9は、事前条件に関するチェックコードの一例を示す説明図である。図9において、まず、チェック対象となるレジスタの値を代入するための変数を宣言するコードを生成する(コードC1)。
チェック対象とは、事前条件として定義されているレジスタである。このあと、チェック対象のレジスタから値を読み出すコードを生成する(コードC2)。そして、読み出した値が事前条件を満たしているか否かをチェックするコードを生成し(コードC3)、満たしていない場合にエラーメッセージを出力するコードを生成する(コードC4)。
なお、レジスタ仕様情報Rに定義されている事前条件が複数存在する場合には、各事前条件について上記コードC1〜C4同様のコードを生成することとなる。たとえば、図6に示したレジスタ仕様情報R1では、事前条件が2つ存在するため、事前条件『COM_STATUS==0』および事前条件『DEC_MODE<=3』について各種を生成する。
また、抽出部503は、レジスタ仕様情報Rの中から、レジスタごとに、当該レジスタを構成するビット列のうち書き込み可能なビット位置を指定するビットフィールドの値の有効範囲を抽出する。具体的には、たとえば、図6に示したレジスタ仕様情報R1の中から、ビットフィールド『COM_PARAM』の値の有効範囲『(−5)〜6』を抽出する。
この場合、生成部502は、抽出部503によって抽出された有効範囲に基づいて、レジスタへの書き込み時にビットフィールドの値が有効範囲内となっているか否かを判定するためのチェックコードを生成する。具体的には、たとえば、図6に示したレジスタ『COMMAND_REQ』のビットフィールド『COM_PARAM』に書き込まれた値を読み出して、その値が有効範囲『(−5)〜6』内となっているか否かを判定するためのチェックコードを生成する。
ここで、ビットフィールドに書き込まれた値をチェックするためのチェックコードを生成する生成処理の具体例を説明する。図10は、ビットフィールドの有効範囲に関するチェックコードの一例を示す説明図である。図10において、まず、チェック対象となるビットフィールドの値を代入するための変数を宣言するコードを生成する(コードC5)。
このとき、有効範囲の符号の有無に応じて、変数を宣言するコードを生成する。ここでは、符号付きのため、変数を宣言するコードを「signed」として生成する。なお、チェック対象とは、有効範囲が定義されているビットフィールドである。このあと、チェック対象のビットフィールドに書き込まれた値を読み出すコードを生成し(コードC6)、読み出した値を符号拡張するコードを生成する(コードC7)。
コードC6において、整数値8は、チェック対象のビットフィールドの最下位ビットを示している。この整数値は、ビットフィールドの位置を特定するための情報に基づいて決定される。また、コードC7において、関数「sign_extend to short()」は、第2引数で指定したビット幅の値を16ビット幅(short)に符号拡張するための関数である。
そして、if文を用いて読み出した値がビットフィールドの有効範囲内となっているか否かをチェックするコードを生成し(コードC8)、最後に、有効範囲外となっている場合にエラーメッセージを出力するコードを生成する(コードC9)。ここでは、符号付きの有効範囲について説明したが、符号なしの有効範囲の場合には上記コードC5を「unsigned」として生成し、上記コードC7は不要となる。
また、抽出部503は、レジスタ仕様情報Rの中から、レジスタごとに、当該レジスタを構成する各ビットへの読み出しまたは/および書き込みの可否を特定するビットタイプを抽出する。具体的には、たとえば、図6に示したレジスタ仕様情報R1の中から、各ビットの読み出し/書き込みの可否を特定するためのR/W情報を抽出する。
この場合、生成部502は、抽出部503によって抽出されたビットタイプに基づいて、読み出し専用レジスタへの書き込みを判定するためのチェックコードを生成する。具体的には、たとえば、図7に示したレジスタ『COM_STATUS』のような読み出し専用レジスタへの書き込みを判定するためのチェックコードを生成する。
ここで、読み出し専用レジスタへの書き込みをチェックするためのチェックコードを生成する生成処理の具体例を説明する。図11は、読み出し専用レジスタへの書き込みに関するチェックコードの一例を示す説明図である。まず、各レジスタのレジスタマスク値を用いて、チェック対象となる読み出し専用レジスタを特定する。
具体的には、レジスタ仕様情報Rに含まれるR/W情報に基づいて、各レジスタのレジスタマスク値を算出する。このあと、そのレジスタマスク値から当該レジスタが読み出し専用レジスタであるか否かを判断する。この結果、レジスタが読み出し専用レジスタであった場合、読み出し専用レジスタへの書き込みが発生した場合にエラーメッセージを出力するコードを生成する(コードC10)。
たとえば、図7に示したレジスタ『COM_STATUS』について、レジスタ仕様情報R2からR/W情報を抽出し、Wを“1”としたマスク値を算出する。この結果、マスク値は「0x0000」となるため、レジスタ『COM_STATUS』は読み出し専用レジスタであると判断し、上記コードC10を生成する。
また、生成部502は、抽出部503によって抽出されたビットタイプに基づいて、書き込み専用レジスタへの読み出しを判定するためのチェックコードを生成する。具体的には、たとえば、レジスタ仕様情報Rに含まれる各ビットのR/W情報がすべてWとなっているレジスタ(以下、「レジスタ『RESET_REG』」という)のような書き込み専用レジスタへの読み出しを判定するためのチェックコードを生成する。
ここで、書き込み専用レジスタへの読み出しをチェックするためのチェックコードを生成する生成処理の具体例を説明する。図12は、書き込み専用レジスタへの書き込みに関するチェックコードの一例を示す説明図である。まず、各レジスタのレジスタマスク値を用いて、チェック対象となる書き込み専用レジスタを特定する。
具体的には、レジスタ仕様情報Rに含まれるR/W情報に基づいて、各レジスタのレジスタマスク値を算出する。このあと、そのレジスタマスク値から書き込み専用レジスタであるか否かを判断する。この結果、書き込み専用レジスタであった場合、書き込み専用レジスタからの読み出しが発生した場合にエラーメッセージを出力するコードを生成する(コードC11)。
たとえば、レジスタ『RESET_REG』について、レジスタ仕様情報RからR/W情報を抽出し、Rを“1”としたマスク値を算出する。この結果、マスク値は「0x0000」となるため、レジスタ『RESET_REG』は書き込み専用レジスタであると判断し、上記コードC11を生成する。
また、生成部502は、抽出部503によって抽出されたビットタイプに基づいて、ビットフィールドが定義されていない未定義ビットまたは読み出し専用ビットフィールドへの書き込みを判定するためのチェックコードを生成する。これは、レジスタを構成するビット列のうちレジスタ仕様情報Rに定義されていない未定義ビットまたは読み出し専用ビットフィールドへの“1”の書き込みが発生したか否かをチェックするためのチェックコードである。
具体的には、たとえば、図6に示したレジスタ『COMMAND_REQ』の場合、このレジスタへの書き込み時に、ビット列のうちビットフィールドが定義されていない未定義ビット「3〜7」、「12〜15」に“1”の書き込みが発生したか否かを判定するためのチェックコードを生成する。
ここで、未定義ビットまたは読み出し専用ビットフィールドへの書き込みをチェックするためのチェックコードを生成する生成処理の具体例を説明する。図13は、未定義ビットまたは読み出し専用ビットフィールドへの書き込みに関するチェックコードの一例を示す説明図である。まず、各レジスタのレジスタマスク値を用いて、書き込み専用レジスタであるか否かを特定する。
具体的には、レジスタ仕様情報Rに含まれるR/W情報に基づいて、各レジスタのレジスタマスク値を算出する。このあと、そのレジスタマスク値から書き込み専用レジスタであるか否かを判断する。この結果、書き込み専用レジスタではなかった場合、未定義または読み出し専用ビットフィールドへの書き込みをチェックするコード(コードC12)を生成する。
具体的には、if文を用いて書き込み値とレジスタマスク値のビット反転値との論理積をとり、「0」になっているか否かで未定義または読み出し専用ビットフィールドへの“1”の書き込みがあるか否かを判断するコードを生成する。このあと、未定義または読み出し専用ビットフィールドへの書き込みが発生した場合にエラーメッセージを出力するコードを生成する(コードC13)。
ここでは図示は省略するが、コードC13のあとに、シミュレーション実行停止用のコードを追加することとしてもよい。これにより、未定義または読み出し専用ビットフィールドへの書き込みが発生した場合に、エラーメッセージを出力するとともに、ソフトウェア検証のシミュレーションを停止させることができる。
また、抽出部503は、レジスタ仕様情報Rの中から、ハードウェアのすべてのレジスタのレジスタアドレスを抽出する。たとえば、ハードウェア(各ハードウェアブロック)のレジスタが『COMMAND_REQ』、『COMMAND_STATUS』および『COM_RESET』であった場合、図6〜図8に示したレジスタ仕様情報R1,R2およびR3の中から、それぞれのレジスタアドレス『020』、『040』および『500』を抽出する。
この場合、生成部502は、抽出部503によって抽出されたレジスタアドレスに基づいて、レジスタ仕様情報Rに定義されていない未定義レジスタへのアクセスの有無を判定するためのチェックコードを生成する。具体的には、たとえば、アクセス先のレジスタのレジスタアドレスがレジスタ仕様情報Rに定義されているか否かを判定するためのチェックコードを生成する。
作成部504は、ハードウェアの機能を実現するハードウェアモデルの動作が表現されたハードウェア記述情報Dを作成する機能を有する。ここで、ハードウェアモデルとは、CPU上で動作するファームウェア(たとえば、ファームウェア306)からの読み出し/書き込みなどのアクセスへの応答、割り込み信号の発生、ブロック内部の処理など、ハードウェアの機能を擬似的に実現するソフトウェアによるモデルである。
このハードウェアモデルは、C/C++言語またはSystemCなどのシステムレベル記述言語によって記述され、ハードウェアの機能のうち少なくともファームウェアからのレジスタまたはメモリへの読み出し/書き込み機能を実現するモデルである。また、ソフトウェアモデルとハードウェアモデルとのインターフェースは特に規定しない。
ここで、ハードウェア記述情報Dについて説明する。図14は、ハードウェア記述情報Dの一例を示す説明図である。図14において、ハードウェア記述情報D1には、レジスタモデル(Readモデル)が記述されており、生成部502によって生成されたチェックコードを挿入するための挿入位置1401〜1405が定義されている。
また、ハードウェア記述情報D1において、コードC14は、未定義アドレスからの読み出しが発生した場合にエラーメッセージを出力するためのチェックコードである。具体的には、たとえば、if文を用いて未定義アドレスからの読み出しがあるか否かを判断し、未定義アドレスからの読み出しが発生した場合にエラーメッセージを出力する。さらに、コードC15は、レジスタデータを読み出すための読み出し関数である。
ここで、出力されたハードウェア記述情報D1を用いたソフトウェア検証環境上でファームウェアを実行した場合の検証処理の具体例を説明する。まず、事前条件に関するチェックについて、たとえば、図6に示したレジスタ「COMMAND_REQ」への書き込み時に、レジスタ「COM_STATUS」の値が「0」、レジスタ「DEC_MODE」の値が「2」となっている場合はチェック合格となる。
一方で、レジスタ「COMMAND_REQ」への書き込み時に、レジスタ「COM_STATUS」の値が「2」、レジスタ「DEC_MODE」の値が「4」となっている場合はチェック不合格となり、コードC4(図9参照)に示したエラーメッセージが出力される。
つぎに、ビットフィールドの有効範囲に関するチェックについて、たとえば、図6に示したレジスタ「COMMAND_REQ」への書き込み時に、ビットフィールド「COM_PARAM」の値が「5」となっている場合はチェック合格となる。なお、ビットフィールド「COMMAND」の値を「1」とすると、レジスタ「COMMAND_REQ」全体での書き込み値は16進数で「0501」となる。また、ビットフィールド「COM_PARAM」は、符号付きのため2の補数表現を用いる。
一方で、レジスタ「COMMAND_REQ」への書き込み時に、ビットフィールド「COM_PARAM」の値が「7」となっている場合はチェック不合格となり、コードC9(図10参照)に示したエラーメッセージが出力される。なお、ビットフィールド「COMMAND」の値を「1」とすると、レジスタ「COMMAND_REQ」全体での書き込み値は16進数で「0701」となる。
つぎに、読み出し専用レジスタへの書き込みに関するチェックについて、たとえば、図7に示したレジスタ「COM_STATUS」に対して読み出しが発生した場合はチェック合格となる。一方で、レジスタ「COM_STATUS」に対して書き込みが発生した場合はチェック不合格となり、コードC10(図11参照)に示したエラーメッセージが出力される。
つぎに、書き込み専用レジスタへの読み出しに関するチェックについて、たとえば、図8に示したレジスタ「COM_RESET」に対して書き込みが発生した場合はチェック合格となる。一方で、レジスタ「COM_RESET」に対して読み出しが発生した場合はチェック不合格となり、コードC11(図12参照)に示したエラーメッセージが出力される。
つぎに、未定義ビットへの書き込みに関するチェックについて、たとえば、図6に示したレジスタ「COMMAND_REQ」への書き込み時に、未定義のビットフィールド部分のすべてのビットが「0」となっている場合はチェック合格となる。
具体的には、ビットフィールド「COM_PARAM」の値が「5」(2進数:0101、16進数:5)で、ビットフィールド「COMMAND」の値を「1」(2進数:001、16進数:1)とすると、レジスタ「COMMAND_REQ」の値は、2進数で「0000 0101 0000 0001」、16進数で「0501」となる。
この「0501」をwriteDataとして、図13に示したコードC12のif文の条件式部分の演算をおこなうと、「0x0501 & 0xF0F8 = 0x0000」となり、結果が「0」となるため、if文の条件式が偽(チェック合格を意味する)となる。なお、コードC12中のマスク値(0xF0F8)は、レジスタの書き込み可能なビットを「0」、それ以外のビットを「1」として求める。
レジスタ「COMMAND_REQ」の場合は、2進数で「1111 0000 1111 1000」、16進数で「F0F8」となる。この値と書き込みデータのビットごとの論理積をとることで、書き込み可能なビットの値が「0」、それ以外のビットの値は元のまま、という結果が得られる。そのため、この論理積の値が「0」のときは書き込み可能ビット以外のビットはすべて「0」(エラーなし)、「0」でない場合は、書き込み可能ビット以外のビットのいずれかが「1」となっている(エラーあり)ことがわかる。
一方で、レジスタ「COMMAND_REQ」への書き込み時に、未定義のビットフィールド部分のいずれかのビットが「1」となっている場合はチェック不合格となり、コードC13(図13参照)に示したエラーメッセージが出力される。
具体的には、ビットフィールド「COM_PARAM」の値が「5」(2進数:0101、16進数:5)、ビットフィールド「COMMAND」の値が「1」(2進数:001、16進数:1)で、未定義部分のビット14とビット4が「1」となっていた場合、レジスタ「COMMAND_REQ」の値は2進数で「0100 0101 0001 0001」、16進数で「4511」となる。
この「4511」をwriteDataとして図13に示したコードC12のif文の条件式部分の演算をおこなうと、「0x4511 & 0xF0F8 = 0x4010」となり、結果が「0」ではないため、if文の条件式が真(エラーを意味する)となり、コードC13に示したエラーメッセージが出力される。
つぎに、未定義アドレスへの書き込みに関するチェックについて、たとえば、図6に示したレジスタ「COMMAND_REQ」に対する書き込みが発生した場合はチェック合格となる。一方で、レジスタ仕様情報Rに定義されていないアドレスに対する書き込みが発生した場合はチェック不合格となり、その旨を示すエラーメッセージ(不図示)が出力される。
たとえば、レジスタ仕様情報Rに「0x0000〜0x1FFF」までのアドレスのレジスタが定義されている場合に、アドレス「0x3000」に対する書き込みが発生した場合、チェック不合格となり、その旨を示すエラーメッセージが出力される。
つぎに、未定義アドレスへの読み出しに関するチェックについて、たとえば、図6に示したレジスタ「COMMAND_REQ」に対する読み出しが発生した場合はチェック合格となる。一方で、レジスタ仕様情報Rに定義されていないアドレスに対する読み出しが発生した場合はチェック不合格となり、コードC14に示した(図14参照)エラーメッセージが出力される。
たとえば、レジスタ仕様情報Rに「0x0000〜0x1FFF」までのアドレスのレジスタが定義されている場合に、アドレス「0x3000」からの読み出しが発生した場合、チェック不合格となり、コードC14に示したエラーメッセージが出力される。
出力部505は、生成部502によって生成されたチェックコードを出力する機能を有する。さらに、作成部504によって作成されたハードウェア記述情報Dを出力することとしてもよい。なお、出力部505による出力形式は、ディスプレイ231での画面表示、プリンタ233での印刷出力、メモリへのデータ出力(保存)、外部のコンピュータ装置への送信のいずれであってもよい。
(ソフトウェア検証支援装置のソフトウェア検証支援処理手順)
つぎに、この発明の実施の形態にかかるソフトウェア検証支援装置200のソフトウェア検証支援処理手順について説明する。図15は、この発明の実施の形態にかかるソフトウェア検証支援装置のソフトウェア検証支援処理手順を示すフローチャートである。
図15のフローチャートにおいて、まず、取得部501により、ハードウェアのレジスタ仕様を定義するレジスタ仕様情報Rを取得したか否かを判断する(ステップS1501)。ここで、レジスタ仕様情報Rを取得するのを待って(ステップS1501:No)、取得した場合(ステップS1501:Yes)、作成部504により、レジスタ仕様情報Rに定義されているレジスタごとにレジスタモデルを作成する(ステップS1502)。
このあと、レジスタ仕様情報Rに定義されている任意のレジスタについて、事前条件に関するチェックの要否を判断する(ステップS1503)。具体的には、レジスタ仕様情報Rに事前条件が記載されている場合に、事前条件に関するチェックが必要であると判断する。ここで、事前条件に関するチェックが必要な場合(ステップS1503:Yes)、生成部502により、事前条件に関するチェックコードの生成処理を実行して(ステップS1504)、ステップS1505に移行する。
また、ステップ1503において、事前条件に関するチェックが不要な場合(ステップS1503:No)、ビットフィールドの有効範囲に関するチェックの要否を判断する(ステップS1505)。具体的には、レジスタ仕様情報Rにビットフィールドの有効範囲が記載されている場合に、事前条件に関するチェックが必要であると判断する。
ここで、ビットフィールドの有効範囲に関するチェックが必要な場合(ステップS1505:Yes)、生成部502により、ビットフィールドの有効範囲に関するチェックコードの生成処理を実行して(ステップS1506)、ステップS1507に移行する。
また、ステップS1505において、ビットフィールドの有効範囲に関するチェックが不要な場合(ステップS1505:No)、生成部502により、読み出しまたは書き込み専用のレジスタへのアクセスに関するチェックコードの生成処理を実行し(ステップS1507)さらに、未定義ビットへの書き込みに関するチェックコードの生成処理を実行する(ステップS1508)。
このあと、ステップS1501において取得されたレジスタ仕様情報Rに定義されているすべてのレジスタを網羅したか否かを判断し(ステップS1509)、網羅していない場合は(ステップS1509:No)、ステップS1502に戻り、一連の処理を繰り返す。一方で、すべてのレジスタを網羅した場合は(ステップS1509:Yes)、出力部506により、各種チェックコードが埋め込まれたハードウェア記述情報Dを出力して(ステップS1510)、本フローチャートによる一連の処理を終了する。
つぎに、図15に示したステップS1504における事前条件に関するチェックコード生成処理の処理手順について説明する。図16は、事前条件に関するチェックコード生成処理の処理手順を示すフローチャートである。
図16のフローチャートにおいて、まず、抽出部503により、図15に示したステップS1501において取得されたレジスタ仕様情報Rの中から、レジスタへの書き込み時に当該レジスタとは異なる他のレジスタが満たすべき事前条件を抽出する(ステップS1601)。
このあと、生成部502により、チェック対象となるレジスタの値を代入するための変数宣言コードを生成する(ステップS1602)。つぎに、チェック対象のレジスタから値を読み出すための読み出しコードを生成する(ステップS1603)。そして、レジスタへの書き込み時に読み出した値が事前条件を満たしているか否かをチェックするためのチェックコードを生成する(ステップS1604)。
さらに、事前条件を満たしていない場合にエラーメッセージを出力するためのエラーコードを生成する(ステップS1605)。このあと、すべての事前条件を網羅したか否かを判断し(ステップS1606)、網羅していない場合は(ステップS1606:No)、ステップS1601に戻り、一連の処理を繰り返す。一方、すべての事前条件を網羅した場合は(ステップS1606:Yes)、図15に示したステップ1505に移行する。
これにより、レジスタ仕様情報Rに定義されている各レジスタへの書き込み時に他のレジスタが事前条件を満たしているか否かを判定するためのチェックコード(図9参照)をレジスタごとに自動生成することができる。
つぎに、図15に示したステップS1506におけるビットフィールドの有効範囲に関するチェックコード生成処理の処理手順について説明する。図17は、ビットフィールドの有効範囲に関するチェックコード生成処理の処理手順を示すフローチャートである。
図17のフローチャートにおいて、まず、レジスタ仕様情報Rを参照することにより、ビットフィールドの位置を特定する(ステップS1701)。そして、抽出部503により、レジスタ仕様情報Rの中から、レジスタを構成するビット列のうち書き込み可能なビット位置を指定するビットフィールドにおける値の有効範囲を抽出する(ステップS1702)。
このあと、抽出された有効範囲が符号付きか否かを判断する(ステップS1703)。ここで、有効範囲が符号付きの場合(ステップS1703:Yes)、生成部502により、チェック対象となるビットフィールドの値を代入するための符号付き用の変数宣言コードを生成する(ステップS1704)。
そして、ステップS1701において特定されたビットフィールドの位置に基づいて、チェック対象のビットフィールドに書き込まれた値を読み出すための読み出しコードを生成する(ステップS1705)。さらに、読み出した値を符号拡張するための符号拡張コードを生成する(ステップS1706)。
このあと、読み出した値がビットフィールドの有効範囲内となっているか否かをチェックするためのチェックコードを生成する(ステップS1707)。一方、ステップS1703において、有効範囲が符号付きではない場合(ステップS1703:No)、生成部502により、チェック対象となるビットフィールドの値を代入するための符号なし用の変数宣言コードを生成する(ステップS1708)。
そして、ステップS1701において特定されたビットフィールドの位置に基づいて、チェック対象のビットフィールドに書き込まれた値を読み出すための読み出しコードを生成して(ステップS1709)、ステップS1707に移行する。
ステップS1707においてチェックコードを生成したあと、読み出した値が有効範囲外となっている場合にエラーメッセージを出力するためのエラーコードを生成する(ステップS1710)。このあと、すべてのビットフィールドを網羅したか否かを判断し(ステップS1711)、網羅していない場合は(ステップS1711:No)、ステップS1701に戻り、一連の処理を繰り返す。一方、すべてのビットフィールドを網羅した場合は(ステップS1711:Yes)、図15に示したステップ1507に移行する。
これにより、レジスタ仕様情報Rに定義されている各レジスタへの書き込み時に、ビットフィールドの値が有効範囲内となっているか否かを判定するためのチェックコード(図10参照)をレジスタごとに自動生成することができる。
つぎに、図15に示したステップS1507におけるレジスタアクセスに関するチェックコード生成処理の処理手順について説明する。図18は、レジスタアクセスに関するチェックコード生成処理の処理手順を示すフローチャートである。
図18のフローチャートにおいて、まず、抽出部503により、レジスタ仕様情報Rの中から、レジスタを構成する各ビットへの読み出しまたは/および書き込みの可否を特定するビットタイプ(R/W情報)を抽出する(ステップS1801)。このあと、抽出されたビットタイプに基づいて、チェック対象となるレジスタのレジスタマスク値を算出する(ステップS1802)。
このとき、読み出し専用レジスタへの書き込みチェックをおこなう場合、書き込み可能なビットを“1”としたレジスタマスク値を算出する。また、書き込み専用レジスタへの読み出しチェックをおこなう場合、読み出し可能なビットを“1”としたレジスタマスク値を算出する。
ステップS1802においてレジスタマスク値を算出したあと、そのレジスタマスク値が「レジスタマスク値==0」となっているか否かを判断する(ステップS1803)。ここで、「レジスタマスク値==0」となっている場合(ステップS1803:Yes)、チェック対象のレジスタへのアクセス違反が発生した場合のエラーメッセージを出力するためのエラーコードを生成して(ステップS1804)、図15に示したステップS1508に移行する。
具体的には、読み出し専用レジスタへの書き込み、または、書き込み専用レジスタへの読み出しが発生した場合のエラーメッセージを出力するためのエラーコードを生成する。一方、ステップS1803において、「レジスタマスク値==0」となっていない場合(ステップS1803:No)、図15に示したステップS1508に移行する。
これにより、読み出し専用レジスタへの書き込み、または、書き込み専用レジスタへの読み出しの有無を判定するためのチェックコード(図11および図12参照)をレジスタごとに自動生成することができる。
つぎに、図15に示したステップS1508における未定義ビットに関するチェックコード生成処理の処理手順について説明する。図19は、未定義ビットに関するチェックコード生成処理の処理手順を示すフローチャートである。
図19のフローチャートにおいて、まず、図18に示したステップS1801において抽出されたビットタイプ(R/W情報)に基づいて、チェック対象となるレジスタのレジスタマスク値を算出する(ステップS1901)。このとき、書き込み可能なビットを“1”としたレジスタマスク値を算出する。
このあと、レジスタマスク値が「レジスタマスク値!==0xFFFF」となっているか否かを判断する(ステップS1902)。ここで、「レジスタマスク値!==0xFFFF」となっている場合(ステップS1902:Yes)、生成部502により、未定義ビットへの書き込みを判定するためのチェックコードを生成する(ステップS1903)。
さらに、未定義ビットへの書き込みが発生した場合のエラーメッセージを出力するためのエラーコードを生成して(ステップS1904)、図15に示したステップS1509に移行する。また、ステップS1902において、「レジスタマスク値!==0xFFFF」となっていない場合(ステップS1902:No)、図15に示したステップS1509に移行する。これにより、未定義ビットへの書き込みを判定するためのチェックコードをレジスタごとに自動生成することができる。
この発明の実施の形態によれば、レジスタ仕様情報Rにアサーションに関する記載を追加することにより、レジスタへのアクセスを検証するためのチェックコードが挿入されたハードウェア記述情報Dを自動生成することができる。
具体的には、レジスタ仕様情報Rに事前条件に関する記載を追加することにより、レジスタへの書き込み時に他のレジスタが事前条件を満たしているか否かを判定するためのチェックコードを自動生成することができる。また、レジスタ仕様情報Rにビットフィールドの値の有効範囲に関する記載を追加することにより、レジスタへの書き込み時にビットフィールドの値が有効範囲内となっているか否かを判定するためのチェックコードを自動生成することができる。
また、レジスタ仕様情報の各ビットへの読み出しまたは/および書き込みの可否を特定するビットタイプに関する記載から、読み出しまたは書き込み専用レジスタへの書き込みまたは読み出しを判定するためのチェックコードを自動生成することができる。さらに、上記ビットタイプに基づいて、未定義ビットまたは読み出し専用ビットフィールドへの書き込みを判定するためのチェックコードを自動生成することができる。
また、レジスタ仕様情報Rの各レジスタのレジスタアドレスに関する記載から、未定義レジスタへのアクセスを判定するためのチェックコードを自動生成することができる。これにより、ソフトウェアの詳細を理解していないハードウェアモデル開発者によるアサーションの記述を可能とし、さらに、大量のレジスタを持つSoC向けのファームウェアのチェックコードを生成する際の作業負担を軽減することができる。
また、アサーションが挿入されたハードウェア記述情報Dを用いて、ハードウェアモデル上で動作するソフトウェアモデルの検証をおこなうことができる。この結果、各種チェックに不合格となった場合には、その旨を示すエラーメッセージが出力されるため、バグの発生箇所を容易に特定することができる。
以上説明したように、ソフトウェア検証支援プログラム、該プログラムを記録した記録媒体、ソフトウェア検証支援装置、およびソフトウェア検証支援方法によれば、ソフトウェア検証のチェッカが挿入されたハードウェアモデルの自動生成を実現することにより、ソフトウェア開発と並行したハードウェアモデル開発の実行を可能とし、開発期間の短縮化を図ることができる。
なお、本実施の形態で説明したソフトウェア検証支援方法は、予め用意されたプログラムをパーソナル・コンピュータやワークステーションなどのコンピュータで実行することにより実現することができる。このプログラムは、ハードディスク、フレキシブルディスク、CD−ROM、MO、DVDなどのコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行される。またこのプログラムは、インターネットなどのネットワークを介して配布することが可能な伝送媒体であってもよい。
また、本実施の形態で説明したソフトウェア検証支援装置200は、スタンダードセルやストラクチャードASIC(Application Specific Integrated Circuit)などの特定用途向けIC(以下、単に「ASIC」と称す。)やFPGAなどのPLD(Programmable Logic Device)によっても実現することができる。具体的には、たとえば、上述したソフトウェア検証支援装置200の機能的構成501〜506をHDL記述によって機能定義し、そのHDL記述を論理合成してASICやPLDに与えることにより、ソフトウェア検証支援装置200を製造することができる。
(付記1)ハードウェアとソフトウェアとからなるシステムのうち前記ソフトウェアの検証をコンピュータに支援させるソフトウェア検証支援プログラムにおいて、
前記ハードウェアのレジスタ仕様を定義するレジスタ仕様情報を取得させる取得工程と、
前記取得工程によって取得されたレジスタ仕様情報に基づいて、前記ソフトウェアからの前記レジスタへのアクセスを検証するためのチェックコードを生成させる生成工程と、
前記生成工程によって生成されたチェックコードを出力させる出力工程と、
を前記コンピュータに実行させることを特徴とするソフトウェア検証支援プログラム。
(付記2)前記取得工程によって取得されたレジスタ仕様情報の中から、前記レジスタごとに、前記レジスタへの書き込み時に当該レジスタとは異なる他のレジスタが満たすべき条件を抽出させる抽出工程を前記コンピュータに実行させ、
前記生成工程は、
前記抽出工程によって抽出された条件に基づいて、前記レジスタへの書き込み時に前記他のレジスタが前記条件を満たしているか否かを判定するためのチェックコードを生成させることを特徴とする付記1に記載のソフトウェア検証支援プログラム。
(付記3)前記抽出工程は、
前記レジスタ仕様情報の中から、前記レジスタごとに、当該レジスタを構成するビット列のうち書き込み可能なビット位置を指定するビットフィールドの値の有効範囲を抽出させ、
前記生成工程は、
前記抽出工程によって抽出された有効範囲に基づいて、前記レジスタへの書き込み時に前記ビットフィールドの値が前記有効範囲内となっているか否かを判定するためのチェックコードを生成させることを特徴とする付記1または2に記載のソフトウェア検証支援プログラム。
(付記4)前記抽出工程は、
前記レジスタ仕様情報の中から、前記レジスタごとに、当該レジスタを構成する各ビットへの読み出しまたは/および書き込みの可否を特定するビットタイプを抽出させ、
前記生成工程は、
前記抽出工程によって抽出されたビットタイプに基づいて、読み出し専用レジスタへの書き込みを判定するためのチェックコードを生成させることを特徴とする付記1〜3のいずれか一つに記載のソフトウェア検証支援プログラム。
(付記5)前記生成工程は、
前記抽出工程によって抽出されたビットタイプに基づいて、書き込み専用レジスタへの読み出しを判定するためのチェックコードを生成させることを特徴とする付記4に記載のソフトウェア検証支援プログラム。
(付記6)前記生成工程は、
前記抽出工程によって抽出されたビットタイプに基づいて、ビットフィールドが定義されていない未定義ビットまたは読み出し専用ビットフィールドへの書き込みを判定するためのチェックコードを生成させることを特徴とする付記4または5に記載のソフトウェア検証支援プログラム。
(付記7)前記抽出工程は、
前記レジスタ仕様情報の中から、前記ハードウェアのすべてのレジスタのレジスタアドレスを抽出させ、
前記生成工程は、
前記抽出工程によって抽出されたレジスタアドレスに基づいて、前記レジスタ仕様情報に定義されていない未定義レジスタへのアクセスを判定するためのチェックコードを生成させることを特徴とする付記1〜6のいずれか一つに記載のソフトウェア検証支援プログラム。
(付記8)前記ハードウェアの機能を実現するハードウェアモデルの動作が表現されたハードウェア記述情報を作成させる作成工程を前記コンピュータに実行させ、
前記出力工程は、
前記作成工程によって作成されたハードウェア記述情報を出力させることを特徴とする付記1〜7のいずれか一つに記載のソフトウェア検証支援プログラム。
(付記9)付記1〜8のいずれか一つに記載のソフトウェア検証支援プログラムを記録したコンピュータに読み取り可能な記録媒体。
(付記10)ハードウェアとソフトウェアとからなるシステムのうち前記ソフトウェアの検証を支援するソフトウェア検証支援装置において、
前記ハードウェアのレジスタ仕様を定義するレジスタ仕様情報を取得する取得手段と、
前記取得手段によって取得されたレジスタ仕様情報に基づいて、前記ソフトウェアからの前記レジスタへのアクセスを検証するためのチェックコードを生成する生成手段と、
前記生成手段によって生成されたチェックコードを出力する出力手段と、
を備えることを特徴とするソフトウェア検証支援装置。
(付記11)ハードウェアとソフトウェアとからなるシステムのうち前記ソフトウェアの検証を支援するソフトウェア検証支援方法において、
前記ハードウェアのレジスタ仕様を定義するレジスタ仕様情報を取得する取得工程と、
前記取得工程によって取得されたレジスタ仕様情報に基づいて、前記ソフトウェアからの前記レジスタへのアクセスを検証するためのチェックコードを生成する生成工程と、
前記生成工程によって生成されたチェックコードを出力する出力工程と、
を含んだことを特徴とするソフトウェア検証支援方法。
以上のように、本発明にかかるソフトウェア検証支援プログラム、該プログラムを記録した記録媒体、ソフトウェア検証支援装置、およびソフトウェア検証支援方法は、ハードウェアとソフトウェアとが混在するシステムのソフトウェア検証に有用である。
ハードウェア/ソフトウェア混在システムの開発工程を示す説明図である。 この発明の実施の形態にかかるソフトウェア検証装置のハードウェア構成を示す説明図である。 検証対象の一例を示す説明図である。 ソフトウェア検証環境の一例を示す説明図である。 この発明の実施の形態にかかるソフトウェア検証支援装置の機能的構成を示すブロック図である。 レジスタ仕様情報の一例を示す説明図(その1)である。 レジスタ仕様情報の一例を示す説明図(その2)である。 レジスタ仕様情報の一例を示す説明図(その3)である。 事前条件に関するチェックコードの一例を示す説明図である。 ビットフィールドの有効範囲に関するチェックコードの一例を示す説明図である。 読み出し専用レジスタへの書き込みに関するチェックコードの一例を示す説明図である。 書き込み専用レジスタへの書き込みに関するチェックコードの一例を示す説明図である。 未定義ビットまたは読み出し専用ビットフィールドへの書き込みに関するチェックコードの一例を示す説明図である。 ハードウェア記述情報Dの一例を示す説明図である。 この発明の実施の形態にかかるソフトウェア検証支援装置のソフトウェア検証支援処理手順を示すフローチャートである。 事前条件に関するチェックコード生成処理の処理手順を示すフローチャートである。 ビットフィールドの有効範囲に関するチェックコード生成処理の処理手順を示すフローチャートである。 レジスタアクセスに関するチェックコード生成処理の処理手順を示すフローチャートである。 未定義ビットに関するチェックコード生成処理の処理手順を示すフローチャートである。
符号の説明
200 ソフトウェア検証支援装置
301 CPU
302 HWブロックA
303 HWブロックB
304 HWブロックC
305 メモリ
306 ファームウェア
310 バス
401 ISS
402 HWモデルA
403 HWモデルB
404 HWモデルC
405 メモリモデル
406,407,408 アサーション
501 取得部
502 生成部
503 抽出部
504 作成部
505 出力部
R,R1,R2,R3 レジスタ仕様情報
D,D1 ハードウェア記述情報

Claims (8)

  1. ハードウェアとソフトウェアとからなるシステムのうち前記ソフトウェアの検証をコンピュータに支援させるソフトウェア検証支援プログラムにおいて、
    前記ハードウェアのレジスタ仕様を定義するレジスタ仕様情報を取得させる取得工程と、
    前記取得工程によって取得されたレジスタ仕様情報に基づいて、前記ソフトウェアからの前記レジスタへのアクセスを検証するためのチェックコードを生成させる生成工程と、
    前記生成工程によって生成されたチェックコードを出力させる出力工程と、
    を前記コンピュータに実行させることを特徴とするソフトウェア検証支援プログラム。
  2. 前記取得工程によって取得されたレジスタ仕様情報の中から、前記レジスタごとに、前記レジスタへの書き込み時に当該レジスタとは異なる他のレジスタが満たすべき条件を抽出させる抽出工程を前記コンピュータに実行させ、
    前記生成工程は、
    前記抽出工程によって抽出された条件に基づいて、前記レジスタへの書き込み時に前記他のレジスタが前記条件を満たしているか否かを判定するためのチェックコードを生成させることを特徴とする請求項1に記載のソフトウェア検証支援プログラム。
  3. 前記抽出工程は、
    前記レジスタ仕様情報の中から、前記レジスタごとに、当該レジスタを構成するビット列のうち書き込み可能なビット位置を指定するビットフィールドの値の有効範囲を抽出させ、
    前記生成工程は、
    前記抽出工程によって抽出された有効範囲に基づいて、前記レジスタへの書き込み時に前記ビットフィールドの値が前記有効範囲内となっているか否かを判定するためのチェックコードを生成させることを特徴とする請求項1または2に記載のソフトウェア検証支援プログラム。
  4. 前記抽出工程は、
    前記レジスタ仕様情報の中から、前記レジスタごとに、当該レジスタを構成する各ビットへの読み出しまたは/および書き込みの可否を特定するビットタイプを抽出させ、
    前記生成工程は、
    前記抽出工程によって抽出されたビットタイプに基づいて、読み出し専用レジスタへの書き込みを判定するためのチェックコードを生成させることを特徴とする請求項1〜3のいずれか一つに記載のソフトウェア検証支援プログラム。
  5. 前記生成工程は、
    前記抽出工程によって抽出されたビットタイプに基づいて、書き込み専用レジスタへの読み出しを判定するためのチェックコードを生成させることを特徴とする請求項4に記載のソフトウェア検証支援プログラム。
  6. 請求項1〜5のいずれか一つに記載のソフトウェア検証支援プログラムを記録したコンピュータに読み取り可能な記録媒体。
  7. ハードウェアとソフトウェアとからなるシステムの前記ソフトウェアの検証を支援するソフトウェア検証支援装置において、
    前記ハードウェアのレジスタ仕様を定義するレジスタ仕様情報を取得する取得手段と、
    前記取得手段によって取得されたレジスタ仕様情報に基づいて、前記ソフトウェアからの前記レジスタへのアクセスを検証するためのチェックコードを生成する生成手段と、
    前記生成手段によって生成されたチェックコードを出力する出力手段と、
    を備えることを特徴とするソフトウェア検証支援装置。
  8. ハードウェアとソフトウェアとからなるシステムの前記ソフトウェアの検証を支援するソフトウェア検証支援方法において、
    前記ハードウェアのレジスタ仕様を定義するレジスタ仕様情報を取得する取得工程と、
    前記取得工程によって取得されたレジスタ仕様情報に基づいて、前記ソフトウェアからの前記レジスタへのアクセスを検証するためのチェックコードを生成する生成工程と、
    前記生成工程によって生成されたチェックコードを出力する出力工程と、
    を含んだことを特徴とするソフトウェア検証支援方法。
JP2007278997A 2007-10-26 2007-10-26 ソフトウェア検証支援プログラム、該プログラムを記録した記録媒体、ソフトウェア検証支援装置、およびソフトウェア検証支援方法 Expired - Fee Related JP5034867B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2007278997A JP5034867B2 (ja) 2007-10-26 2007-10-26 ソフトウェア検証支援プログラム、該プログラムを記録した記録媒体、ソフトウェア検証支援装置、およびソフトウェア検証支援方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2007278997A JP5034867B2 (ja) 2007-10-26 2007-10-26 ソフトウェア検証支援プログラム、該プログラムを記録した記録媒体、ソフトウェア検証支援装置、およびソフトウェア検証支援方法

Publications (2)

Publication Number Publication Date
JP2009110076A true JP2009110076A (ja) 2009-05-21
JP5034867B2 JP5034867B2 (ja) 2012-09-26

Family

ID=40778538

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2007278997A Expired - Fee Related JP5034867B2 (ja) 2007-10-26 2007-10-26 ソフトウェア検証支援プログラム、該プログラムを記録した記録媒体、ソフトウェア検証支援装置、およびソフトウェア検証支援方法

Country Status (1)

Country Link
JP (1) JP5034867B2 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2013109673A (ja) * 2011-11-22 2013-06-06 Fujitsu Semiconductor Ltd シミュレーション装置、シミュレーション方法、およびシミュレーションプログラム

Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0765046A (ja) * 1993-08-24 1995-03-10 Hitachi Ltd 論理装置の検証方法
JP2004220223A (ja) * 2003-01-14 2004-08-05 Sony Corp 情報処理装置および方法、並びにプログラム
JP2005108007A (ja) * 2003-09-30 2005-04-21 Matsushita Electric Ind Co Ltd Lsi設計検証装置及びlsi設計検証方法
JP2005321848A (ja) * 2004-05-06 2005-11-17 Matsushita Electric Ind Co Ltd システムシミュレーション実行プログラムおよびハードウェア記述変換プログラム
JP2005327192A (ja) * 2004-05-17 2005-11-24 Ricoh Co Ltd ハードウエア設計システムおよびその方法
JP2006133969A (ja) * 2004-11-04 2006-05-25 Canon Inc 情報処理装置、起動エラー検出方法、及びプログラム
JP2006285333A (ja) * 2005-03-31 2006-10-19 Nec Corp 動作合成装置及び方法
JP2007011467A (ja) * 2005-06-28 2007-01-18 Matsushita Electric Ind Co Ltd アサーション記述自動生成方法および装置
JP2007094591A (ja) * 2005-09-27 2007-04-12 Toshiba Corp シミュレーション装置及びシミュレーション方法

Patent Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0765046A (ja) * 1993-08-24 1995-03-10 Hitachi Ltd 論理装置の検証方法
JP2004220223A (ja) * 2003-01-14 2004-08-05 Sony Corp 情報処理装置および方法、並びにプログラム
JP2005108007A (ja) * 2003-09-30 2005-04-21 Matsushita Electric Ind Co Ltd Lsi設計検証装置及びlsi設計検証方法
JP2005321848A (ja) * 2004-05-06 2005-11-17 Matsushita Electric Ind Co Ltd システムシミュレーション実行プログラムおよびハードウェア記述変換プログラム
JP2005327192A (ja) * 2004-05-17 2005-11-24 Ricoh Co Ltd ハードウエア設計システムおよびその方法
JP2006133969A (ja) * 2004-11-04 2006-05-25 Canon Inc 情報処理装置、起動エラー検出方法、及びプログラム
JP2006285333A (ja) * 2005-03-31 2006-10-19 Nec Corp 動作合成装置及び方法
JP2007011467A (ja) * 2005-06-28 2007-01-18 Matsushita Electric Ind Co Ltd アサーション記述自動生成方法および装置
JP2007094591A (ja) * 2005-09-27 2007-04-12 Toshiba Corp シミュレーション装置及びシミュレーション方法

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2013109673A (ja) * 2011-11-22 2013-06-06 Fujitsu Semiconductor Ltd シミュレーション装置、シミュレーション方法、およびシミュレーションプログラム

Also Published As

Publication number Publication date
JP5034867B2 (ja) 2012-09-26

Similar Documents

Publication Publication Date Title
JP2795244B2 (ja) プログラムデバッグシステム
US6587995B1 (en) Enhanced programmable core model with integrated graphical debugging functionality
US7472361B2 (en) System and method for generating a plurality of models at different levels of abstraction from a single master model
US9501269B2 (en) Automatic source code generation for accelerated function calls
US8326592B2 (en) Method and system for verifying electronic designs having software components
US10019337B2 (en) Class object handle tracking
JPH11513512A (ja) ディジタル信号プロセッサの製造方法
JP2002099584A (ja) 設計検証システム、設計検証方法および設計検証プログラムを格納したコンピュータ読取り可能な記録媒体
JP5109143B2 (ja) 検証装置および検証方法
JP2004038617A (ja) 論理検証システム及び方法、論理コーン抽出装置及び方法、論理検証及び論理コーン抽出プログラム
JP5034916B2 (ja) 性能評価モデル生成方法、システム性能評価方法、及び性能評価モデル生成装置
JP5233355B2 (ja) プロパティ生成システムおよびプロパティ検証システム
CN117422026A (zh) 一种基于risc-v架构的处理器验证系统
JP5034867B2 (ja) ソフトウェア検証支援プログラム、該プログラムを記録した記録媒体、ソフトウェア検証支援装置、およびソフトウェア検証支援方法
US10816600B1 (en) Protocol analysis and visualization during simulation
JP4881769B2 (ja) 半導体集積回路設計支援装置、半導体集積回路設計支援方法、半導体集積回路設計支援プログラム
JP5056493B2 (ja) 仮想ソフトウェア生成装置
JP2007018313A (ja) 回路設計プログラム、回路設計装置、回路設計方法
JP5799589B2 (ja) 検証方法及び検証プログラム
JP2004145670A (ja) テストベンチ生成方法、テストベンチ生成装置、及びコンピュータプログラム
JP2011145880A (ja) 半導体集積回路の論理検証にて使用するテストタスクの生成方法
JP5233354B2 (ja) プロパティ検証システム、プロパティ検証方法、及びプログラム
JP3745968B2 (ja) 試験システム及び試験方法及び試験プログラム及び試験プログラムを記録した計算機で読み取り可能な記録媒体
JP2009217720A (ja) プログラム生成装置およびプログラム生成方法
US8881096B2 (en) Computer product, IP model generating apparatus, and IP model generating method

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20100616

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20111213

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20111220

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120220

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

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

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

Free format text: PAYMENT UNTIL: 20150713

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees