JPWO2006003702A1 - 検証支援装置、検証支援方法、および検証支援プログラム - Google Patents

検証支援装置、検証支援方法、および検証支援プログラム Download PDF

Info

Publication number
JPWO2006003702A1
JPWO2006003702A1 JP2006527616A JP2006527616A JPWO2006003702A1 JP WO2006003702 A1 JPWO2006003702 A1 JP WO2006003702A1 JP 2006527616 A JP2006527616 A JP 2006527616A JP 2006527616 A JP2006527616 A JP 2006527616A JP WO2006003702 A1 JPWO2006003702 A1 JP WO2006003702A1
Authority
JP
Japan
Prior art keywords
model
verification
generated
design
software
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.)
Pending
Application number
JP2006527616A
Other languages
English (en)
Inventor
強 朱
強 朱
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
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
Publication of JPWO2006003702A1 publication Critical patent/JPWO2006003702A1/ja
Pending legal-status Critical Current

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

Landscapes

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

Abstract

検証支援装置(400)は、概念モデル生成部(402)による、顧客の要求仕様に着目した概念モデルを生成することにより、設計の初期段階で仕様のミスや誤解を解消する。また、機能モデル検証部(404)による、並列、並行な機能モデルの検証によって、機能モジュール分割の妥当性、並列、並行性の正しさを検証する。また、動作モデル検証部(408)による動作モデルの検証によってアーキテクチャの設計の妥当性、性能要件に満足しているかどうかを検証する。また、ICAモデル検証部(410)によってインターフェース設計の正しさを検証する。このように、段階的に検証を導入することによって、これまで、RTLを生成しないと発見できなかった問題を、設計の早期段階に摘出してそのリスクを回避することができる。

Description

本発明は、LSIの検証を支援する検証支援装置、検証支援方法、検証支援プログラムおよび記録媒体に関する。
LSI設計では、LSIが正常に動作するか否かを検証する検証作業が必要不可欠であり、特に、大規模化、高機能化、高速化および低消費電力化が要求されているLSIについては、高品質を維持するためにもこの検証作業は重要である一方、従来から設計期間の短縮による作業効率化が要求されている。
特に、近年は、ソフトウェアとハードウェアが混在しており、従来型のASICによる単機能のハードウェアだけではなく、ソフトウェアも含めたシステム・オン・チップ(SoC)が主流となっている。また、MPEGやJPEGなど、本来アプリケーションソフトウェアで実現される機能がハードウェアで実現するようになっているため、LSIの機能が複雑化している。
ここで、従来のLSIの開発処理について説明する。図38は、従来のLSIの開発処理手順を示すフローチャートである。図38において、ステップS3801〜ステップS3805が、LSIの設計をおこなう設計フローであり、ステップS3806〜ステップS3809が、設計されたLSIの検証をおこなう検証フローである。
まず、設計フローでは、ステップS3801において、概念設計をおこなう。概念設計では、顧客からの設計要求に基づいて設計者が要求仕様書3810を自然言語によって作成する。または、顧客から自然言語で記述された要求仕様書3810を受け取る。
つぎに、ステップS3802において、機能設計をおこなう。機能設計では、要求仕様書3810に記述された内容から、設計対象となるLSIを機能ブロックごとに分けて、各機能ブロックの内容を記述した機能仕様書3820を作成する。
つぎに、ステップS3803において、構造設計をおこなう。構造設計では、機能仕様書3820からハードウェア設計をおこなって構造仕様書3830を作成する。具体的には、どのようなアーキテクチャを導入すれば機能仕様書3820に記述された機能を実現できるか、という設計をおこなうことである。
たとえば、各機能ブロックのうち、ある機能ブロックのアーキテクチャについてはソフトウェアによって実現し、ある機能ブロックのアーキテクチャについてはIP(Intellectual Property)を購入して実現し、ある機能ブロックのアーキテクチャについては設計者が作成し、ある機能ブロックのアーキテクチャについては、アンダーバスによって実現するということである。
つぎに、ステップS3804において、ユニット設計をおこなう。ユニット設計では、構造仕様書3830に記述された各ハードウェアモジュールを複数のモジュールに分割して詳細に設計することによってユニット仕様書3840を作成する。
つぎに、ステップS3805において、実装をおこなう。実装では、インターフェースのタイミングチャートを用い、また、内部ロジックを考慮することにより、最終的な設計対象となるRTL(Register Transfer Level)3850のHDL(Hardware Description Language)を用いて実装をおこなう。
つぎに、ステップS3806において、ユニット検証をおこなう。ユニット検証では、ユニット検証項目3860にしたがって、ユニット設計によって設計されたユニットごとのユニット仕様書3840の検証、すなわち、デバッグをおこなう。
つぎに、ステップS3807において、結合検証をおこなう。結合検証では、結合検証項目3870にしたがって、ユニット検証によって検証された各ユニットのインターフェースを結合して、正常に動作するかを検証する。
つぎに、ステップS3808において、機能検証をおこなう。機能検証では、機能検証項目3880にしたがって、設計対象となるシステムの機能要求を満たすかどうかを検証する。
最後に、ステップS3809において、実機検証をおこなう。実機検証では、RTL3850を用いて実際にチップ上にLSIを実装して、実際に動作するかどうかを検証する。顧客からの要求仕様書3810が、要求検証項目3890を満足しているかどうかを判断する。
しかしながら、上述した設計処理では、実装(ステップS3805)しなければ、LSIの検証(ステップS3806〜S3809)をおこなうことができなかった。
これにより、設計フローの上流のいずれかのステップにおいて仕様書の誤り、記述の曖昧さ、設計者の誤解釈のためにミスが生じると、そのステップ以降のステップにおいてミスが累積されてしまうという問題があった。
また、構造設計においては、机上でアーキテクチャを決定しており、その妥当性を確かめる手法が存在していなかった。したがって、開発リスクの増大によって開発プロジェクトの破綻も生じ、開発時間および開発労力が無駄になるという問題があった。
また、RTL3850のHDLに対してシミュレーションをおこなうために特別なシミュレータ(VCS、NC−SimなどのEDAベンダーのツール)が必要であるが、シミュレーションスピードが遅いために検証効率が低下し、設計期間の長期化を招くという問題があった。特に、設計対象が大規模な場合、シミュレーションスピードがネックとなって、所定の期間内に検証作業を収束させることができない場合があった。
一方、シミュレータより何千倍のスピードで動くエミュレータを導入してシミュレーションの速度の向上を図ることも考えられるが、エミュレータが非常に高価であり、検証費用が増大するとともに、環境の構築が困難な上に問題発生時にデバッグが難しいために結果的に検証期間が増加して、設計期間の長期化を招くという問題があった。
本発明は、上記問題点に鑑みてなされたものであって、LSIの設計精度の向上および検証期間の短縮化を、容易かつ効率的に実現することができる検証支援装置、検証支援方法、検証支援プログラムおよび該プログラムを記録した記録媒体を提供することを目的とする。
上述した課題を解決し、目的を達成するため、本発明の検証支援装置、検証支援方法、検証支援プログラムおよび該プログラムを記録した記録媒体は、LSIの設計対象に関する要求仕様の分析結果を示す分析情報を入力し、入力された分析情報に基づいて、前記設計対象の基本機能がモデル化され、かつ、前記設計対象の物理的なアーキテクチャおよび時間の概念が抽象化された概念モデルを生成し、入力された分析情報に基づいて、前記設計対象を構成するモジュールの分割、および分割されたモジュールの並行または並列性を抽出することによってモデル化された機能モデルを生成し、生成された機能モデルについて、前記設計対象を構成するモジュールの分割、および分割されたモジュールの並行または並列性が正当であるかどうかを、生成された概念モデルに基づいて検証することを特徴とする。
また、上記発明は、前記機能モデルが正当であることが検証された場合、複数種類の物理的なアーキテクチャに関する情報から任意のアーキテクチャに関する情報を抽出し、抽出されたアーキテクチャに関する情報を、正当であることが検証された機能モデルにマッピングすることにより、前記設計対象の動作をモデル化した動作モデルを生成し、生成された動作モデルによりモデル化された設計対象を構成するモジュールの動作タイミングが、正当であるかどうかを検証することを特徴とする。
さらに、上記発明は、前記動作モデルが正当であることが検証された場合、前記機能モデルによってモデル化された設計対象を構成するモジュール間の抽象度が異なる箇所に、当該モジュール間に所定のクロックサイクル精度のインターフェースを挿入することによりICAモデルを生成し、生成されたICAモデルに挿入されたインターフェースのクロックサイクル精度が正当であるかどうかを、生成された概念モデルに基づいて検証することを特徴とする。
また、前記動作モデルが正当であることが検証された場合、前記機能モデルによってモデル化された設計対象に基づいて、ソフトウェアによって実行可能なタスクを含むようにモデル化されたソフトウェアモデルを生成し、生成されたソフトウェアモデルに含まれているタスクが正当であるかどうかを、生成された概念モデルに基づいて検証することを特徴とする。
この発明の検証支援装置、検証支援方法、検証支援プログラムおよび記録媒体によれば、段階的に検証を導入することによって、これまで、RTLを生成しないと発見できなかった問題を、設計の早期段階に摘出してそのリスクを回避することができる。したがって、LSIの設計精度の向上および検証期間の短縮化を、容易かつ効率的に実現することができるという効果を奏する。
この発明の実施の形態にかかる検証支援の概念図である。 図1に示した各モデルの抽象度をあらわすグラフである。 この発明の実施の形態にかかる検証支援装置のハードウェア構成を示すブロック図である。 この発明の実施の形態にかかる検証支援装置の機能的構成を示すブロック図である。 この発明の実施の形態にかかる検証支援装置の検証支援処理手順を示すフローチャートである。 この発明の実施の形態にかかる設計対象を含むシステムLSIのハードウェア構成を示すブロック図である。 外部装置のインターフェースであるバスの仕様(ライト時のタイミングチャート)を示す説明図である。 外部装置のインターフェースであるバスの仕様(リード時のタイミングチャート)を示す説明図である。 外部装置のインターフェースである送信器の仕様を示す説明図である。 外部装置のインターフェースである受信器の仕様を示す説明図である。 CPUで送受信されるパケットの構成を示す説明図である。 送信パケットの構成を示す説明図である。 要求定義であるシステムLSIの要求項目リストを示す説明図である。 要求定義であるシステムLSIのユースケース図である。 要求定義された結果物であるシステムLSIの分析クラス図である。 要求定義された結果物であるシステムLSIのシーケンス図である。 シリアル送受信システムを含むシステムLSIの設計クラス図である。 概念モデルの実装コードを示す説明図である。 シリアル送受信システムを含むシステムLSIの検証項目を示す説明図である。 シリアル送受信システムを含むシステムLSIの検証シナリオを示す説明図である。 シリアル送受信システムを含むシステムLSIの機能モデルの実装コード生成処理手順を示すフローチャートである。 図17に示した設計クラス図を分割することによって得られた分割設計クラス図を示す説明図である。 分割設計クラス図によってあらわされるモジュール間を接続する通信路を示す説明図である。 シリアル送受信システムを含むシステムLSIの機能モデルの実装コードの生成例を示す説明図である。 シリアル送受信システムを含むシステムLSIのアーキテクチャモデルのクラス図の一例を示す説明図である。 機能モデルとアーキテクチャモデルとのマッピングを示す説明図である。 シリアル送受信システムを含むシステムLSIの動作モデルの実装コード生成処理手順を示すフローチャートである。 属性内の記述がバスモデルの記述に置き換えられた分割設計クラス図を示す説明図である。 各モジュールの見積もり処理時間の実装コードへの追加例を示す説明図である。 シリアル送受信システムを含むシステムLSIのICAモデルの実装コード生成処理手順を示すフローチャートである。 シリアル送受信システムを含むシステムLSIの通信路が決定された機能モデルを示す構造図である。 図31に示した構造図内の通信路にインターフェースラッパを挿入した構造図である。 ICAモデルのエンコーダモジュールの内部構造の一例を示す説明図である。 ICAモデルのエンコーダモジュールの実装コードの一例を示す説明図である。 シリアル送受信システムを含むシステムLSIのソフトウェアモデルの実装コード生成処理手順を示すフローチャートである。 アーキテクチャモデルに機能モデルの一部をソフトウェアによりマッピングをおこなった例を示す説明図である。 ソフトウェアモデルにおける設計クラス図を示す説明図である。 従来のLSIの開発処理手順を示すフローチャートである。
符号の説明
100 要求仕様
101 概念モデル
102 機能モデル
103 アーキテクチャモデル
104 動作モデル
105 ICAモデル
106 ソフトウェアモデル
401 分析情報入力部
402 概念モデル生成部
403 機能モデル生成部
404 機能モデル検証部
405 アーキテクチャ情報記憶部
406 アーキテクチャ情報抽出部
407 動作モデル生成部
408 動作モデル検証部
409 ICAモデル生成部
410 ICAモデル検証部
411 ソフトウェアモデル生成部
412 ソフトウェアモデル検証部
(実施の形態)
以下に、本発明の実施の形態にかかる検証支援装置、検証支援方法、検証支援プログラムおよび該プログラムを記録した記録媒体について図面を参照しつつ詳細に説明する。
(検証支援の概念)
まず、この発明の実施の形態にかかる検証支援の概念について説明する。図1は、この発明の実施の形態にかかる検証支援の概念図である。
図1において、設計者は、設計対象を含むシステムLSIの顧客からの要求仕様100について、UML(Unified Modeling Language)を用いてオブジェクト指向分析をおこない、その分析結果を概念モデル101としてモデリングする。概念モデル101とは、設計対象の概念的な分析結果をあらわすモデルである。概念モデル101は、完全に実装依存しないモデルであり、具体的には、物理的なアーキテクチャや時間の概念が抽象化され、設計対象の基本機能を中心にモデリングされたものである。
概念モデル101は、具体的には、システムLSIの要求仕様の分析結果を、UMLやC++でモデリングした結果物であり、UMLモデル、C++モデル、および検証シナリオのすべてを含めた総称である。この概念モデル101では、要求仕様100の誤解やミス、またはアルゴリズムの検証をおこなうことができる。
また、機能モデル102は、概念モデル101から、設計対象であるシステムLSIを構成するモジュールの分割、分割されたモジュールの並行または並列性を抽出することによって構築されたモデルである。機能モデル102は、時間の概念が存在しない。この機能モデルでは、モジュール分割の正当性や、並列、並行性の正確さを検証することができる。
また、アーキテクチャモデル103は、バスやIP(Intellectual Property)などの既存設計の物理的なハードウェア部品をあらわすモデルである。アーキテクチャモデル103は、具体的には、処理リソースと、通信リソースとに大別される。処理リソースは、機能モデル102のモジュールをマッピングするためのモデルである。たとえば、ハードウェア処理モジュール、プロセッサ、RTOS、DSPなどが挙げられる。
一方、通信リソースは、機能モデルのモジュール間の通信を実現するためのチャンネルをモデリングしたモデルである。たとえば、バス、メモリ、ハードウェアモジュール間の信号線などが挙げられる。このアーキテクチャモデル103では、既存設計の物理的なハードウェア部品を用いているため、検証をおこなう必要はない。
また、動作モデル104は、概念的に、機能モデル102をアーキテクチャモデル103にマッピングした結果物である。具体的には、機能モデル102のプロセスをアーキテクチャモデル103の処理リソースにマッピングし、機能の通信チャンネルは、通信リソースを用いて組み立てる。この動作モデル104では、顧客が要求した動作(性能)を満足するかどうかの検証をおこなうことができる。
つぎに、動作モデル104についてHW/SW分割をおこない、ハードウェア実装をあらわすICA(Interface Cycle Accurate)モデル105とソフトウェア実装をあらわすソフトウェアモデル106とを生成する。
ICAモデル105は、モジュール外のインターフェースについてはサイクル精度によって、モジュール内部は動作レベルによって構築したモデルである。このICAモデル105を高位合成することによってRTL記述107を生成する。このICAモデル105では、インターフェースの正確さの検証をおこなうことができる。
また、ソフトウェアモデル106は、設計対象を含むシステムLSIを構成するソフトウェアのタスク分割をおこない、仮想OS上に実行するモデルである。このソフトウェアモデル106についてコード生成処理をおこなうことによって、実装コード108を生成する。このソフトウェアモデル106では、ソフトウェアの機能を検証することができる。
(各モデルの抽象度)
つぎに、図1に示した各モデルの抽象度について説明する。図2は、図1に示した各モデル101〜106の抽象度をあらわすグラフである。図2のグラフは、原点を中心とした3軸によって構成されている。各軸は、それぞれ「機能」の抽象度、「構造」の抽象度、「時間」の抽象度をあらわしており、原点から離れるにしたがって抽象度が高くなる。
(検証支援装置のハードウェア構成)
つぎに、この発明の実施の形態にかかる検証支援装置のハードウェア構成について説明する。図3は、この発明の実施の形態にかかる検証支援装置のハードウェア構成を示すブロック図である。
図3において、検証支援装置は、CPU301と、ROM302と、RAM303と、HDD(ハードディスクドライブ)304と、HD(ハードディスク)305と、FDD(フレキシブルディスクドライブ)306と、着脱可能な記録媒体の一例としてのFD(フレキシブルディスク)307と、ディスプレイ308と、I/F(インターフェース)309と、キーボード310と、マウス311と、スキャナ312と、プリンタ313と、を備えている。また、各構成部はバス300によってそれぞれ接続されている。
ここで、CPU301は、検証支援装置の全体の制御を司る。ROM302は、ブートプログラムなどのプログラムを記憶している。RAM303は、CPU301のワークエリアとして使用される。HDD304は、CPU301の制御にしたがってHD305に対するデータのリード/ライトを制御する。HD305は、HDD304の制御で書き込まれたデータを記憶する。
FDD306は、CPU301の制御にしたがってFD307に対するデータのリード/ライトを制御する。FD307は、FDD306の制御で書き込まれたデータを記憶したり、FD307に記憶されたデータを検証支援装置に読み取らせたりする。
着脱可能な記録媒体として、FD307のほか、CD−ROM(CD−R、CD−RW)、MO、DVD(Digital Versatile Disk)、メモリーカードなどであってもよい。ディスプレイ308は、カーソル、アイコンあるいはツールボックスをはじめ、文書、画像、機能情報などのデータを表示する。このディスプレイ308は、たとえば、CRT、TFT液晶ディスプレイ、プラズマディスプレイなどを採用することができる。
I/F309は、通信回線を通じてインターネットなどのネットワークに接続され、このネットワークを介して他の装置に接続される。そして、I/F309は、ネットワークと内部のインターフェースを司り、外部装置からのデータの入出力を制御する。I/F309には、たとえばモデムやLANアダプタなどを採用することができる。
キーボード310は、文字、数字、各種指示などの入力のためのキーを備え、データの入力をおこなう。また、タッチパネル式の入力パッドやテンキーなどであってもよい。マウス311は、カーソルの移動や範囲選択、あるいはウィンドウの移動やサイズの変更などをおこなう。ポインティングデバイスとして同様に機能を備えるものであれば、トラックボールやジョイスティックなどであってもよい。
スキャナ312は、画像を光学的に読み取り、検証支援装置内に画像データを取り込む。なお、スキャナ312は、OCR機能を持たせてもよい。また、プリンタ313は、画像データや文書データを印刷する。プリンタ313には、たとえば、レーザプリンタやインクジェットプリンタを採用することができる。
(検証支援装置の機能的構成)
つぎに、この発明の実施の形態にかかる検証支援装置の機能的構成について説明する。図4は、この発明の実施の形態にかかる検証支援装置の機能的構成を示すブロック図である。
図4において、検証支援装置400は、分析情報入力部401と、概念モデル生成部402と、機能モデル生成部403と、機能モデル検証部404と、アーキテクチャ情報記憶部405と、アーキテクチャ抽出部406と、動作モデル生成部407と、動作モデル検証部408と、ICAモデル生成部409と、ICAモデル検証部410と、ソフトウェアモデル生成部411と、ソフトウェアモデル検証部412と、から構成されている。
分析情報入力部401は、設計対象を含むシステムLSIの顧客からの要求仕様の分析結果を示す情報(分析情報)の入力を受け付ける。ここで、分析情報とは、たとえば、UMLによって記述された設計対象のユースケース図、シーケンス図、クラス図や、設計対象に要求される基本機能項目など、コンピュータによって読取り可能な情報が挙げられる。
また、概念モデル生成部402は、分析情報入力部401によって入力された分析情報に基づいて、設計対象の基本機能がモデル化され、かつ、設計対象の物理的なアーキテクチャおよび時間の概念が抽象化された概念モデル、すなわち、図1に示した概念モデル101を生成する。
具体的には、概念モデル生成部402は、ユースケース図などの分析情報を解析して、設計対象の実装コードや、設計対象について検証すべき項目(検証項目)、回路シミュレーションによる検証処理手順を示す検証シナリオを生成する。この生成された実装コード、検証項目および検証シナリオが、図1に示した概念モデル101となる。
また、機能モデル生成部403は、分析情報入力部401によって入力された分析情報に基づいて、設計対象を構成するモジュールの分割、および分割されたモジュールの並行または並列性を抽出することによってモデル化された機能モデルを生成する。たとえば、分析情報であるクラス図に基づいて、設計対象の機能をあらわす機能モデルを生成する。
具体的には、概念モデル生成部402に入力されたクラス図を機能ごとに複数に分割し、分割されたクラス図(分割クラス図)ごとに、実装コードを生成する。この生成された分割クラス図ごとの実装コードが、図1に示した機能モデル102となる。
機能モデル検証部404は、機能モデル生成部403によって生成された機能モデルについて、設計対象を構成するモジュールの分割、および分割されたモジュールの並行または並列性が正当であるかどうかを、概念モデル生成部402によって生成された概念モデルに基づいて検証する。
具体的には、分割クラス図ごとの実装コードのシミュレーション結果が、概念モデルの実装コードを概念モデルの検証シナリオでシミュレーションしたシミュレーション結果と一致するかどうかを判定することによって、機能モデルの正当性を検証する。ここで、シミュレーション結果とは、ある入力データに対してどのような出力データが得られるか、ということである。
より具体的には、分割クラス図ごとの実装コードのシミュレーション結果が一致する場合は、機能モデルが正当となる。一方、不一致の場合は、機能モデルの分割、並行、並列性が正しくないため、機能モデル生成部403は、機能モデルの実装コードを修正する。
また、アーキテクチャ情報記憶部405は、バスやIP(Intellectual Property)などの既存設計の物理的なハードウェア部品に関する情報を記憶する。アーキテクチャ情報記憶部405は、具体的には、たとえば、図3に示したROM302、RAM303、HD305、FD307などによってその機能を実現する。
アーキテクチャ情報抽出部406は、アーキテクチャ情報記憶部405に記憶されているアーキテクチャ情報を抽出する。処理リソースに関しては、たとえば、ハードウェア処理モジュール、プロセッサ、RTOS、DSPなどを抽出する。一方、通信リソースに関しては、バス、メモリ、ハードウェアモジュール間の信号線などを抽出する。このアーキテクチャ情報抽出部406によって抽出されたアーキテクチャ情報が、図1に示したアーキテクチャモデル103に相当する。
動作モデル生成部407は、アーキテクチャ情報抽出部406によって抽出されたアーキテクチャに関する情報を、機能モデル検証部404によって正当であることが検証された機能モデルにマッピングすることにより、設計対象の動作をモデル化した動作モデルを生成する。
具体的には、機能モデル102をアーキテクチャモデル103にマッピングすることによって、設計対象の動作モデル104を生成する。具体的には、機能モデル102のプロセスをアーキテクチャモデル103の処理リソースにマッピングし、機能の通信チャンネルは、通信リソースを用いて組み立てる。この組み立てにより、マッピングによって得られたモジュールの処理時間を考慮した実装コードを生成する。この生成された実装コードが、図1に示した動作モデル104に相当する。
動作モデル検証部408は、動作モデル生成部407によって生成された動作モデルによりモデル化された設計対象を構成するモジュールの動作タイミングが、正当であるかどうかを検証する。
具体的には、動作モデル生成部407によって生成された実装コードのシミュレーション結果が、概念モデルの実装コードを概念モデルの検証シナリオでシミュレーションしたシミュレーション結果と一致するかどうかを判定することによって、動作モデルの正当性を検証する。ここで、シミュレーション結果とは、ある入力データに対してどのような出力データが得られるか、ということである。
そして、一致する場合は、動作モデルが正当となり、顧客が要求した動作(性能)を満足していることとなる。一方、不一致の場合は、動作モデルが、顧客が要求した動作(性能)を満足していないこととなる。この場合、動作モデル生成部407は、動作モデルの実装コードを修正する。
ICAモデル生成部409は、動作モデル検証部408によって正当であることが検証された場合、機能モデルによってモデル化された設計対象を構成するモジュール間の抽象度が異なる箇所に、当該モジュール間に所定のクロックサイクル精度のインターフェースを挿入することによりICAモデルを生成する。
具体的には、動作モデル104についてHW/SW分割をおこない、ハードウェア実装をあらわすICAモデル105を生成する。たとえば、モジュール間の抽象度が異なる場合に、当該モジュール間の抽象度が同等となるように、クラス図に示された、モジュール間の通信路をインターフェースラッパに置換する。
そして、インターフェースラッパに置換されたクラス図の実装コードを生成する。この生成された実装コードが、図1に示したICAモデル105となる。そして、このICAモデル105の実装コードを高位合成することにより、RTL記述107を生成することができる。
ICAモデル検証部410は、ICAモデル生成部409によって生成されたICAモデル105に挿入されたインターフェースのクロックサイクル精度が正当であるかどうかを、概念モデル生成部402によって生成された概念モデル101に基づいて検証する。
具体的には、ICAモデル生成部409によって生成された実装コードのシミュレーション結果が、概念モデルの実装コードを概念モデルの検証シナリオでシミュレーションしたシミュレーション結果と一致するかどうかを判定することによって、機能モデルの正当性を検証する。ここで、シミュレーション結果とは、ある入力データに対してどのような出力データが得られるか、ということである。
そして、一致する場合は、ICAモデルが正当となる。具体的には、置換されたインターフェースラッパによってあらわされるインターフェースが正確であることとなる。一方、不一致の場合は、置換されたインターフェースラッパが不正確となる。この場合、ICAモデル生成部409は、ICAモデルの実装コードを修正する。
ソフトウェアモデル生成部411は、動作モデル検証部408によって正当であることが検証された場合、機能モデルによってモデル化された設計対象に基づいて、ソフトウェアによって実行可能なタスクを含むようにモデル化されたソフトウェアモデルを生成する。
具体的には、動作モデル104についてHW/SW分割をおこない、ソフトウェア実装をあらわすソフトウェアモデル106(図1を参照。)を生成する。たとえば、設計対象を含むシステムLSIを構成するソフトウェアのタスク分割をおこない、仮想OS上に実行可能な実装コードを生成する。
ソフトウェアモデル検証部412は、ソフトウェアモデル生成部411によって生成されたソフトウェアモデルに含まれているタスクが、正当であるかどうかを、概念モデル生成部402によって生成された概念モデルに基づいて検証する。
具体的には、ソフトウェアモデル生成部411によって生成された実装コードのシミュレーション結果が、概念モデルの実装コードを概念モデルの検証シナリオでシミュレーションしたシミュレーション結果と一致するかどうかを判定することによって、ソフトウェアモデル106の正当性を検証する。ここで、シミュレーション結果とは、ある入力データに対してどのような出力データが得られるか、ということである。
そして、一致する場合は、ソフトウェアモデル106の実装コードによってあらわされる機能が正当となる。そして、このソフトウェアモデル106の実装コードを取り込んだ、設計対象全体の実装コード108(図1を参照。)を生成する。一方、不一致の場合は、ソフトウェアモデル106の実装コードによってあらわされる機能が不正確となる。この場合、ソフトウェアモデル生成部411は、ソフトウェアモデルの実装コードを修正する。
なお、上述した分析情報入力部401、概念モデル生成部402、機能モデル生成部403、機能モデル検証部404、アーキテクチャ情報抽出部406、動作モデル生成部407、動作モデル検証部408、ICAモデル生成部409、ICAモデル検証部410、ソフトウェアモデル生成部411およびソフトウェアモデル検証部412は、具体的には、たとえば、図3に示したROM302、RAM303、HD305、FD307などに記録されたプログラムをCPU301が実行することによって、またはI/F309によって、その機能を実現する。
(検証支援装置の検証支援処理手順)
つぎに、この発明の実施の形態にかかる検証支援装置の検証支援処理手順について説明する。図5は、この発明の実施の形態にかかる検証支援装置の検証支援処理手順を示すフローチャートである。
図5において、まず、設計者は、設計対象を含むシステムLSIの顧客からの要求仕様100を分析して、分析結果をあらわす分析情報を入力する(ステップS501)。
つぎに、入力された分析情報に基づいて、設計対象の実装コードや、設計対象について検証すべき項目(検証項目)、回路シミュレーションによる検証処理手順を示す検証シナリオなどの概念モデル101を生成する(ステップS502)。生成された概念モデル101の正当性については、設計者が検証する。
つぎに、設計対象の機能デモル102を生成する(ステップS503)。具体的には、概念モデル生成部402に入力されたクラス図を機能ごとに複数に分割し、分割されたクラス図(分割クラス図)ごとに、機能モデル102の実装コードを生成する。
そして、概念モデル101の実装コードと機能モデル102の実装コードのシミュレーションをおこなう(ステップS504)。つぎに、概念モデル101の実装コードのシミュレーション結果と、機能モデル102の実装コードのシミュレーション結果とが、一致するかどうかの判定、すなわち、機能モデル検証をおこなう(ステップS505)。
不一致の場合(ステップS505:No)、機能モデル102を修正する(ステップS506)。具体的には、たとえば、概念モデル101のクラス図を再度、分割しなおして、分割クラス図を生成し、その分割クラス図ごとに実装コードを生成する。そして、ステップS504に移行する。
一方、一致する場合(ステップS505:Yes)、機能モデル102が正当であると判断される。そして、正当性が検証された検証済みの機能モデル102に、アーキテクチャモデル103をマッピングして、動作モデル104を生成する(ステップS507)。そして、動作モデル104の実装コードのシミュレーションをおこなう(ステップS508)。
つぎに、概念モデル101の実装コードのシミュレーション結果と、動作モデル104の実装コードのシミュレーション結果とが、一致するかどうかの判定、すなわち、動作モデル検証をおこなう(ステップS509)。
不一致の場合(ステップS509:No)、動作モデル104を修正する(ステップS510)。具体的には、たとえば、アーキテクチャ情報記憶部405から再度アーキテクチャ情報を抽出して、正当性が検証された検証済の機能モデル102に、あらたなアーキテクチャモデル103をマッピングして、動作モデル104を生成する。そして、ステップS508に移行する。
一方、一致する場合(ステップS509:Yes)、動作モデル104が正当であると判断される。そして、正当性が検証された検証済の動作モデル104に対しHW/SW分割をおこない、ICAモデル105とソフトウェアモデル106を生成する(ステップS511、ステップS516)。
そして、生成されたICAモデル105の実装コードのシミュレーションをおこなう(ステップS512)。つぎに、概念モデル101の実装コードのシミュレーション結果と、ICAモデル105の実装コードのシミュレーション結果とが、一致するかどうかの判定、すなわち、ICAモデル検証をおこなう(ステップS513)。
不一致の場合(ステップS513:No)、ICAモデル105を修正する(ステップS514)。具体的には、たとえば、インターフェースラッパの内容を変更することによって、ICAモデル105を修正する。そして、ステップS512に移行する。
一方、一致する場合(ステップS513:Yes)、ICAモデル105が正当であると判断される。そして、高位合成をおこなって(ステップS515)、RTL記述を生成する。
また、生成されたソフトウェアモデル106の実装コードのシミュレーションをおこなう(ステップS517)。つぎに、概念モデル101の実装コードのシミュレーション結果と、ソフトウェアモデル106の実装コードのシミュレーション結果とが、一致するかどうかの判定、すなわち、ソフトウェアモデル検証をおこなう(ステップS518)。
不一致の場合(ステップS518:No)、ソフトウェアモデル106を修正する(ステップS519)。具体的には、たとえば、設計対象を含むシステムLSIを構成するソフトウェアのタスク分割を再度おこない、仮想OS上に実行可能な実装コードを生成する。
一方、一致する場合(ステップS518:Yes)、ソフトウェアモデル106が正当であると判断される。そして、正当であることが検証された検証済のソフトウェアモデル106の実装コードを取り込んだ、設計対象全体の実装コード108を生成する(ステップS520)。
この検証処理手順によれば、モデルごとに、段階的に検証をおこなうため、直前までに検証されたモデルについては、検証のやり直しをおこなうことなく、有効なモデルとして活用することができるため、検証処理において手戻りが発生せず、検証処理の効率化を図ることができる。
なお、上述した図5のフローチャートでは、ステップS511〜515までの処理手順と、ステップS516〜520までの処理手順とを並列に実行することとしているが、ステップS511〜515までの処理手順のあとに、ステップS516〜520までの処理手順を実行することとしてもよく、また、ステップS516〜520までの処理手順のあとに、ステップS511〜515までの処理手順を実行することとしてもよい。
(検証処理の具体例)
つぎに、上述した検証処理の具体例について説明する。
(システムLSIのハードウェア構成)
まず、設計対象を含むシステムLSIのハードウェア構成について説明する。図6は、この発明の実施の形態にかかる設計対象を含むシステムLSIのハードウェア構成を示すブロック図である。この設計対象は、たとえば、顧客から設計業務を引き受けた情報であり、ここでは、その設計対象を、シリアル送受信システムとして説明する。
図6において、システムLSI600は、設計対象の一例として挙げられたシリアル送受信システム601と、受信器602と、送信器603と、CPU604と、その他デバイス605と、これらを接続するバス606と、によって構成されている。
ここで、受信器602は、受信パケット611を受信し、シリアル送受信システム601に供給する。送信器603は、シリアル送受信システム601から供給された情報を送信パケット612として図示しない外部機器に送信する。シリアル送受信システム601は、たとえば、BCH(62,48)で符号化および復号化をおこなう。
そして、受信器602からの受信パケット611を復号し、この復号したパケット613をCPU604に供給する。また、CPU604からのパケット614を符号化する。CPU604は、シリアル送受信システム601からのパケット613を用いて、その他デバイス605とともにシステムLSI600の機能を実行する。
(外部装置のインターフェース仕様)
つぎに、外部装置(受信器602、送信器603、CPU604、その他デバイス605)のインターフェース仕様について説明する。図7および図8は、外部装置のインターフェースであるバスの仕様を示す説明図である。特に、図7は、ライト時のタイミングチャートであり、図8は、リード時のタイミングチャートである。
図7および図8において、「PCLK」は、ビット幅1の入力クロック信号である。「PADDR」は、ビット幅32のアドレス出力信号である。「PWRITE」は、ビット幅1のリード/ライト制御出力信号である。「PSEL」は、ビット幅1のチップセレクト出力信号である。「PENABLE」は、ビット幅1の出力イネーブル信号である。「PRDATA」は、ビット幅32のデータ入出力信号である。CPU604に対するバスの仕様は、バス標準プロトコルに準拠しており、CPU604について組み込みプロセッサコアを採用することとしている。
図9は、外部装置のインターフェースである送信器603の仕様を示す説明図である。図9において、「clk」は、ビット幅1の入力クロック信号である。「ISTART」は、ビット幅1のスタートパルス入力信号である。「IDATA」は、ビット幅1のデータ入力信号である。シリアル送受信システム601から送信器603への入力仕様は、スタートパルス入力信号のiクロックのパルスを検出すると同時に、送信器603がクロックのポジティブエッジごとに1ビットずつデータを取り込むという仕様である。また、入力クロック周波数は、100MHzとしている。
図10は、外部装置のインターフェースである受信器602の仕様を示す説明図である。図10において、「clk」は、ビット幅1の出力クロック信号である。「OSTART」は、ビット幅1のスタートパルス出力信号である。「ODATA」は、ビット幅1のデータ出力信号である。
(シリアル送受信システムに要求される基本機能)
つぎに、設計対象であるシリアル送受信システム601に要求される基本機能について説明する。シリアル送受信システム601に要求される基本機能は、(1)パケットの送信機能と、(2)パケットの受信機能と、(3)初期化機能である。
(1)パケットの送信機能は、以下のとおりである。
(i)CPU604が作成したパケット614をBCH(62,48)で符号化して送信器603に転送する転送機能。
(ii)CPU604が作成したパケット614の不正を検出してCPU604にエラーを知らせる不正検出機能。
(iii)CPU604から連続的に大量なパケット614が送信されてきた際に処理が間に合わないとき、CPU604にエラーを知らせ、送信パケット612を破棄するパケット破棄機能。
(vi)送信器603への出力スループット:0〜1Mbps
また、(2)パケットの受信機能は、以下の通りである。
(vii)BCH(62,48)で受信器602から連続して符号化された受信パケット611を受信し、受信パケット611を復号してCPU604に通知し、復号したパケット613をCPU604に受信させる復号機能。
(viii)受信器602から大量の受信パケット611を送ってきた際に処理が間に合わない場合は受信パケット611の廃棄を許容するパケット廃棄許容機能。
(ix)受信パケット611の中に誤り訂正ができないパケットが存在する場合、CPU604にエラーを知らせ、受信パケット611を破棄するパケット破棄機能。
(x)受信パケット611に対して2ビットまで訂正可能、4ビットまでエラーの検出可能とする訂正・検出機能。
(xi)受信器602からの入力スループット:0〜1Mbps
さらに、(3)初期化機能は、以下の通りである。
(xii)CPU604から初期化指示するソフトリセット機能。
(xiii)リセット信号からも初期化指示するハードリセット機能。
(パケットの構成)
つぎに、CPU604で送受信されるパケット613,614の構成について説明する。図11は、CPU604で送受信されるパケット613,614の構成を示す説明図であり、図12は、送信パケット612の構成を示す説明図である。図11において、パケット613,614は、16ビットのヘッダ部1101と、32ビットのデータ部1102から構成されている。ヘッダ部1101はパケット識別番号(1010101010101010)2とされている。
また、図12において、送信パケット612は、図11に示した16ビットのヘッダ部1101および32ビットのデータ部1102に、BCH(62,48)で符号化された14ビットの冗長符号部1201が付加された構成である。また、受信パケット611は、図示はしないが、送信パケット612との構成にさらに通信路によるエラービットが付加された構成である。この図6から図12までの情報の内容が、顧客が要求する要求仕様100となる。
(要求定義の内容)
つぎに、図6から図12までに示した要求仕様の内容を定義した要求定義について説明する。図13は、要求定義であるシステムLSI600の要求項目リストを示す説明図であり、図14は、要求定義であるシステムLSI600のユースケース図である。
図13に示した要求項目リスト1300において、このシステムLSI600には、「受信パケットを最大2重誤り訂正できる」(項目1301)、「受信パケットの4重誤りまで検出できる」(項目1302)、「受信パケットを受信器経由で受信できる」(項目1303)、「受信パケットをBCH(60,48)で復号化できる」(項目1304)、「CPUから初期化できる」(項目1305)、「リセット信号から初期化できる」(項目1306)、「送信パケットを送信器経由で送信できる」(項目1307)、「送信パケットをBCH(62,48)で符号化できる」(項目1308)の機能が要求される。
また、図14に示したユースケース図1400は、図13に示した要求項目リスト1300によって要求されている機能を図表化したものであり、UMLにしたがって記述された図表である。図14において、図6に示したシリアル送受信システム601は、ユースケース1401〜1403によってあらわされる機能「パケットを受信する」、「初期化する」および「パケットを送信する」を備えている。また、ユースケース図1400には、シリアル送受信システム601に関連するアクターとして、CPU1411、リセット信号1412、受信器1413および送信器1414が図表化されている。
図14に示したユースケース図1400において、ユースケース1401は、アクター1413からパケットを受信する。そして、受信したパケットをアクター1411に送信する。また、ユースケース1402は、アクター1411およびアクター1412から初期化する。さらに、ユースケース1403は、アクター1411からパケットを受信して、アクター1414に送信する。
(分析情報の内容)
つぎに、図13および図14に示した要求定義(要求項目リスト1300、ユースケース図1400)の分析結果を示す分析情報について説明する。図15は、要求定義された結果物であるシステムLSI600の分析クラス図であり、図16は、要求定義された結果物であるシステムLSI600のシーケンス図である。
図15に示した分析クラス図1500には、シリアル送受信システム601に必要なデータや手順などを管理する《control》クラス1501と、シリアル送受信システム601内部で当該システム特有の処理を担当する<Entity>クラス1502〜1508が記述されている。《control》クラス1501は、シリアス送受信システム601をあらわしている。《entity》クラス1502〜1508は、送信パケット612、受信パケット611、パケット613,614、冗長符号部1201、エラービット、ヘッダ部1101、データ部1102をあらわしている。
図15に示した分析クラス図1500において、《control》クラス1501(シリアル送受信システム601)は、アクター1414(送信器603)からパケットを送信する。また、アクター1411(CPU604)との間で送受信/初期化をおこなう。さらに、《entity》クラス1502(送信パケット612)の送信、《entity》クラス1503(受信パケット611)の受信、アクター1412(リセット信号)からの初期化をおこなう。また、《entity》クラス1503(受信パケット611)を受信したアクター1413(受信器602)からパケットを受信する。
また、図15に示した分析クラス図1500において、《entity》クラス1502(送信パケット612)は、《entity》クラス1504(パケット613,614)および《entity》クラス1505(冗長符号部1201)を集約している。また、《entity》クラス1503(受信パケット611)は、《entity》クラス1505(冗長符号部1201)および《entity》クラス1506(エラービット)を集約している。さらに、《entity》クラス1504(パケット613、614)は、《entity》クラス1507(ヘッダ部1101)および《entity》クラス1508(データ部1102)を集約している。これにより、アクター1411(CPU604)は、《entity》クラス1504(パケット613、614)の作成/受信をおこなっていることがわかる。
また、図16に示したシーケンス図1600は、パケットを正常に送信する場合の動作を示している。このシーケンス図1600では、シーケンス番号順、すなわち、シーケンス番号1.0(「パケットを作成する()」)→シーケンス番号1.1(「パケットを受信する()」)、→シーケンス番号1.2(「パケットを符号化する()」)、→シーケンス番号1.3(「送信パケットを作成する()」)、シーケンス番号1.4(「送信パケットを送信する()」)の順に送信処理がおこなわれることを示している。
つぎに、このシリアル送受信システムを含むシステムLSIの設計クラス図について説明する。図17は、シリアル送受信システムを含むシステムLSIの設計クラス図である。
この設計クラス図1700において、クラス1701は、シリアル送受信システムを示す名称「ECC_SIO」が記述されているクラス名1702と、クラス1701が持つ静的な性質を示す属性1703(メンバ変数)と、クラス1701が持つ動的な性質を示す操作1704(メンバ関数)と、を含んでいる。操作1704は、CPUを示すクラス1705と符号化を示すクラス1706に働きかけている。この図17に示した設計クラス図1700を元にして、概念モデル101の実装コードが生成される。図17に概念モデル101の実装コードの一記述例を示す。図18は、概念モデル101の実装コード1800を示す説明図である。この実装コード1800は、C++言語によってモデル化されているコードである。
(検証項目の内容)
つぎに、シリアル送受信システムを含むシステムLSIの検証項目について説明する。図19は、シリアル送受信システムを含むシステムLSIの検証項目を示す説明図である。
図19では、対象ユースケースを、図14で示したユースケース1401に着目している。この検証項目1900において、項目『シーケンス』の「基本パス」とは、パケットの正常な送信処理、すなわち、図16に示したシーケンス番号1.0〜1.1までの処理を示している。
(検証シナリオの内容)
つぎに、シリアル送受信システムを含むシステムLSIの検証シナリオについて説明する。図20は、シリアル送受信システムを含むシステムLSIの検証シナリオを示す説明図である。この検証シナリオ2000は、図15に示したシーケンス図1500と図19に示した検証項目1900を用いて生成される。
この検証シナリオ2000を用いたシミュレーションによって検出された仕様上のミスについて、例を挙げて説明する。CPUに常にエラーの通知を行っているという検証結果が得られた場合、パケット受信エラーが発生したときにシリアル送受信システムをエラー状態にしたが、次のパケットを正常に受信してもシステムがエラー状態のままとなる仕様上のミスが検出される。このため、修正処理として、CPUがエラー受信した後にシリアル送受信システムのエラー状態をクリアすることとする。これにより、仕様ミスを解消することができる。
(機能モデルの実装コード生成処理手順)
つぎに、シリアル送受信システムを含むシステムLSIの機能モデルの検証処理手順について説明する。図21は、シリアル送受信システムを含むシステムLSIの機能モデルの実装コード生成処理手順を示すフローチャートである。図21に示す処理手順は、図5のステップS503に示した処理ステップの詳細な処理手順を示している。
まず、ステップS502において生成された概念モデルの設計クラス図(図17を参照。)を、並行、並列なモジュールに分割する(ステップS2101)。図22は、図17に示した設計クラス図を分割することによって得られた分割設計クラス図を示す説明図である。
図17に示した設計クラス図は、図22において、トップモジュールに関する分割設計クラス図2210と、コントローラモジュールに関する分割設計クラス図2220と、エンコーダモジュールに関する分割設計クラス図2230と、デコーダモジュールに関する分割設計クラス図2240と、に分割されている。
そして、この分割設計クラス図2210〜2240によってあらわされるモジュール間を接続する通信路を決定する(ステップS2102)。図23は、分割設計クラス図によってあらわされるモジュール間を接続する通信路を示す説明図である。
トップモジュール2301は、ポート2311〜2315を有している。このポート2311〜2315は、トップモジュールに関する分割設計クラス図2210の属性2211に記述されている。具体的には、ポート2311は「packet_i:sc_fifo_in<Packet>」を示しており、CPUからのパケット<Packet>を入力する入力ポートである。ポート2312は「packet_o:sc_fifo_out<Packet>」を示しており、パケット<Packet>をCPUに出力する出力ポートである。ポート2313は「error_o:sc_fifo_out<ERR_TYPE>」を示しており、エラータイプ情報<ERR_TYPE>をCPUに出力する出力ポートである。
また、ポート2314は「encoded_packet_o:sc_fifo_out<EncodedPacket>」を示しており、符号化されたパケット<EncodedPacket>を出力する出力ポートである。ポート2315は「received_packet_i:sc_fifo_in<ReceivedPacket>」を示しており、外部から受信されたパケット<ReceivedPacket>を入力する入力ポートである。
コントローラモジュール2302は、ポート2321〜2327を有している。このポート2321〜2327は、コントローラモジュール2302に関する分割設計クラス図2220の属性2221に記述されている。具体的には、ポート2321は「cpu_packet_i:sc_fifo_in<Packet>」を示しており、CPUからのパケット<Packet>を入力する入力ポートである。ポート2322は「cpu_packet_o:sc_fifo_out<Packet>」を示しており、パケット<Packet>をCPUに出力する出力ポートである。ポート2323は「error_o:sc_fifo_out<ERR_TYPE>」を示しており、エラータイプ情報<ERR_TYPE>をCPUに出力する出力ポートである。
また、ポート2324は「encoder_packet_o:sc_fifo_out<Packet>」を示しており、パケット<Packet>をエンコーダモジュールに出力する出力ポートである。ポート2325は「encoder_status_i:sc_fifo_in<bool>」を示しており、エンコーダモジュール2303のステータス情報<bool>を入力する入力ポートである。ポート2326は「decoder_packet_i:sc_fifo_in<Packet>」を示しており、デコーダモジュールからパケット<Packet>を入力する入力ポートである。ポート2327は「decoder_error_i:sc_fifo_in<ERR_TYPE>」を示しており、デコーダモジュールからエラータイプ情報<ERR_TYPE>を入力する入力ポートである。
エンコーダモジュール2303は、ポート2331〜2333を有している。このポート2331〜2333は、エンコーダモジュール2303に関する分割設計クラス図2230の属性2231に記述されている。具体的には、ポート2331は「packet_i:sc_fifo_in_if<Packet>」を示しており、パケット<Packet>を入力する入力ポートである。ポート2332は「status_o:sc_fifo_out<bool>」を示しており、エンコーダモジュール2303のステータス情報<bool>を出力する出力ポートである。ポート2333は「packet_o:sc_fifo_out_if<EncodedPacket>」を示しており、エンコーダモジュール2303によって符号化されたパケット<EncodedPacket>を出力する出力ポートである。
デコーダモジュール2304は、ポート2341〜2343を有している。このポート2341〜2343は、デコーダモジュール2304に関する分割設計クラス図2240の属性2241に記述されている。具体的には、ポート2341は「packet_o:sc_fifo_out<Packet>」を示しており、パケット<Packet>を出力する出力ポートである。ポート2342は「error_o:sc_fifo_out<ERR_TYPE>」を示しており、エラータイプ情報<ERR_TYPE>を出力する出力ポートである。ポート2343は「packet_i:sc_fifo_in<ReceivedPacket>」を示しており、受信されたパケット<ReceivedPacket>を入力する入力ポートである。
このように、分割設計クラス図2210〜2240の属性を用いて、ポート2311〜2315、ポート2321〜2327、ポート2331〜2333、ポート2341〜2343どうしを接続して、通信路2351〜2359を決定する。この通信路2351〜2359は、具体的にはFIFO方式で通信をおこなう通信路である。
また、図21において、通信路を決定した後、機能モデルの実装コードを生成する(ステップS2103)。ここで、シリアル送受信システムを含むシステムLSIの機能モデルの実装コードの生成例について説明する。図24は、シリアル送受信システムを含むシステムLSIの機能モデルの実装コードの生成例を示す説明図である。
図24では、エンコーダモジュール2303に関する分割設計クラス図2230から生成した、エンコーダモジュール2303の実装コード2400を示している。なお、図示はしないが、トップモジュールに関する分割設計クラス図2210、コントローラモジュール2302に関する分割設計クラス図2220、およびデコーダモジュール2304に関する分割設計クラス図2240についても、それぞれ実装コードを生成する。そして、図5のステップS504では、各分割設計クラス図2210〜2240の実装コードのシミュレーションを実行することとなる。
このあと、図5のステップS505において、このシミュレーション結果と、概念モデルの実装コードのシミュレーション結果との一致判定をおこない、一致する場合(ステップS505:Yes)、図22に示したモジュール分割が正当であり、また、モジュール分割の並列、並行性が正確であることとなる。
一方、一致しない場合(ステップS505:No)、図22に示したモジュール分割が正当でなく、また、モジュール分割の並列、並行性が不正確であるとして、図5のステップS506において、図21のステップS2103で生成された実装コードの修正処理をおこなう。この機能モデル検証により、概念モデルと同一の検証結果になることを確認することができる。
(シリアル送受信システムを含むシステムLSIのアーキテクチャモデル)
つぎに、シリアル送受信システムを含むシステムLSIのアーキテクチャモデルについて説明する。図25は、シリアル送受信システムを含むシステムLSIのアーキテクチャモデルのクラス図の一例を示す説明図である。アーキテクチャモデルは、バスやIPなどの既存設計の物理的なハードウェア部品をあらわすモデルであり、ここでは、バスモデルをあらわしている。
アーキテクチャモデルは、基本的に事前に用意され、検証済みのライブラリとして提供され、図25では、検証済みのバスモデルが記述されている。このように、このアーキテクチャモデルでは、既存設計の物理的なハードウェア部品を用いているため、検証をおこなう必要はない。
(シリアル送受信システムを含むシステムLSIの動作モデル)
つぎに、シリアル送受信システムを含むシステムLSIの動作モデルについて説明する。動作モデルは、上述したように、概念的に、機能モデルをアーキテクチャモデルにマッピングした結果物である。図26は、機能モデルとアーキテクチャモデルとのマッピングを示す説明図である。
図26において、機能モデル2600は、図23に示したように、外部から受信したパケットをデコーダ2602が入力して復号し、コントローラ2603に供給する。コントローラ2603は復号されたパケットをエンコーダ2604に出力し、エンコーダ2604はパケットを符号化する。
アーキテクチャモデル2610は、バスやIPなどの既存設計の物理的なハードウェア部品をあらわすモデルであり、ここでは、プロセッサ2611、メモリ2612、外部入力I/F2613、外部出力I/F2614、ハードウェア2615、ハードウェア2616、ハードウェア2617、およびこれらを接続するバス2618から構成されている。
そして、このアーキテクチャモデル2610に、機能モデル2600をマッピングする。具体的には、デコーダ2602をハードウェア2615に、コントローラ2603をハードウェア2616に、エンコーダ2604をハードウェア2617にマッピングする。この図25および図26を用いて説明した内容は、図5のステップS507に示した処理ステップに相当する内容である。
(シリアル送受信システムを含むシステムLSIの動作モデルの実装コード生成処理手順)
つぎに、シリアル送受信システムを含むシステムLSIの動作モデルの実装コード生成処理手順について説明する。図27は、シリアル送受信システムを含むシステムLSIの動作モデルの実装コード生成処理手順を示すフローチャートである。この図27に示す処理手順は、図5のステップS507に示した処理ステップの詳細な処理手順を示している。
まず、図26に示したマッピングを実現するため、図22に示した分割設計クラス図2210〜2240の属性2211〜2241内の記述を、図25に示したバスモデルの記述に置き換える(ステップS2701)。図28は、属性2211内の記述がバスモデルの記述に置き換えられた分割設計クラス図2210を示す説明図である。図28中、アンダーラインの記述箇所において、通信路が、FIFO方式の記述からバスモデルの記述に置き換えられている。
つぎに、バスモデルの記述に置き換えられた分割設計クラス図2210〜2240から、機能モデルの実装コードを生成する(ステップS2702)。そして、生成された機能モデルの実装コードに、各モジュールの見積もり処理時間を追加する(ステップS2703)。
図29は、各モジュールの見積もり処理時間の実装コードへの追加例を示す説明図である。たとえば、図29に示した図表2900により、デコーダ2602およびエンコーダ2604の見積もり処理時間を、それぞれ600[ns]とすると、機能モデルの実装コード(たとえば、図24に示した実装コード2400)に、図表2900に示した処理時間に関する記述2901を追加する。これにより、動作モデルの実装コード2902が生成される。そして、図5のステップS508では、動作モデルの実装コード2902のシミュレーションを実行することとなる。
このあと、図5のステップS508において、このシミュレーション結果と、概念モデルの実装コードのシミュレーション結果との一致判定をおこない、一致する場合(ステップS509:Yes)、動作モデルの実装コード2902のシミュレーション結果が、図13に示した要求項目リスト1300のすべての要求項目1301〜1308を満足することとなり、機能モデルとアーキテクチャモデルとのマッピングが正当であることとなる。
一方、一致しない場合(ステップS509:No)、動作モデルの実装コード2902のシミュレーション結果が、図13に示した要求項目リスト1300のすべての要求項目1301〜1308を満足しておらず、機能モデルとアーキテクチャモデルとのマッピングが正当でないこととなる。この場合、図5のステップS510において、動作モデルの実装コード2902の修正処理をおこなうこととなる。これにより、顧客が要求した動作(性能)を満足するかどうかの検証をおこなうことができる。
(シリアル送受信システムを含むシステムLSIのICAモデルの実装コード生成処理手順)
つぎに、シリアル送受信システムを含むシステムLSIのICAモデルの実装コード生成処理手順について説明する。図30は、シリアル送受信システムを含むシステムLSIのICAモデルの実装コード生成処理手順を示すフローチャートである。この図30に示す処理手順は、図5のステップS511に示した処理ステップの詳細な処理手順を示している。
ICAモデルは、上述したように、モジュール外のインターフェースについてはサイクル精度によって、モジュール内部は動作レベルによって構築したモデルである。このICAモデルを高位合成することによってRTL記述を生成する。このICAモデルでは、インターフェースの正確さの検証をおこなうことができる。
まず、通信路が決定された機能モデルの構造図から、抽象度の異なるモジュール間を通信する通信路を検出する(ステップS3001)。図31は、シリアル送受信システムを含むシステムLSIの通信路が決定された機能モデルを示す構造図である。
図31において、シリアル送受信システムは、図17に示した設計クラス図を、並行、並列なモジュールに分割された結果(図21のステップS2101を参照。)、トップモジュール2301と、CPUモジュール3101と、送信器モジュール3102と、受信器モジュール3103とが、FIFO方式の通信路3111〜3115によって接続されたシステムである。また、トップモジュール2301の内部は、図23に示した構造図と同一内容である。これらのモジュールの接続関係から、抽象度の異なるモジュール間を通信する通信路を検出する。
つぎに、検出された通信路を、インターフェースラッパに置換する(ステップS3002)。図32は、図31に示した構造図内の通信路にインターフェースラッパを挿入した構造図である。図32では、図31において、エンコーダモジュール2302の抽象度と送信器モジュール3102の抽象度が異なっているため、このモジュール2302、3102間の通信路3114をインターフェースラッパ3201に挿入し、トップモジュール2301の抽象度を変換する。
インターフェースラッパ3201は、送信器モジュール3102のトランザクションレベルのポート3102aと接続されるトランザクションレベルインターフェース3202と、トップモジュール2301に接続される2つの信号レベルポート3203,3204を備えている。このため、トランザクションレベルのポート2314を、送信レベルポート3210、3211に置き換える。
また、トップモジュール2301内部のエンコーダモジュール2303のトランザクションレベルのポート2331〜2333も、信号レベルのポート3212〜3216に置き換える。このポート変換により、コントローラモジュール2302のトランザクションレベルのポート2324、2325も、信号レベルのポート3217〜3219に変換される。
このように、エンコーダモジュール2303のポート数が変更されるため、図31に示したエンコーダモジュール2303をICAモデルのエンコーダモジュールに変換し(ステップS3003)、エンコーダモジュール2303自体の抽象度を変換する。図33は、ICAモデルのエンコーダモジュールの内部構造の一例を示す説明図である。
図33において、ICAモデルのエンコーダモジュール3300は、図31に示したエンコーダモジュール2303およびポート2331〜2333を備えている。そして、ポート2331、2332と、ポート3212〜3214との間の通信を可能とするため、各種ラッパやポートが挿入されている。同様に、ポート2333と、ポート3215、3216との間の通信も可能とするため、各種ラッパやポートが挿入されている。
このあと、ICAモデルのエンコーダモジュール3300の実装コードを生成する(ステップS3004)。図34は、ICAモデルのエンコーダモジュール3300の実装コードの一例を示す説明図である。そして、図5のステップS512では、ICAモデルの実装コード3400のシミュレーションを実行することとなる。
このあと、図5のステップS513において、ICAモデルの実装コード3400のシミュレーション結果と、概念モデルの実装コードのシミュレーション結果との一致判定をおこない、一致する場合(ステップS513:Yes)、ICAモデルの実装コード3400のシミュレーション結果が、図13に示した要求項目リスト1300のすべての要求項目1301〜1308を満足することとなり、インターフェースラッパの挿入が正当であることとなる。
一方、一致しない場合(ステップS513:No)、ICAモデルの実装コード3400のシミュレーション結果が、図13に示した要求項目リスト1300のすべての要求項目1301〜1308を満足しておらず、インターフェースラッパの挿入が正当でないこととなる。
そして、図5に示したステップS514において、ICAモデルの実装コード3400の修正処理をおこなうこととなる。これにより、インターフェースの正確さの検証をおこなうことができる。
(シリアル送受信システムを含むシステムLSIのソフトウェアモデルの実装コード生成処理手順)
つぎに、シリアル送受信システムを含むシステムLSIのソフトウェアモデルの実装コード生成処理手順について説明する。図35は、シリアル送受信システムを含むシステムLSIのソフトウェアモデルの実装コード生成処理手順を示すフローチャートである。この図35に示す処理手順は、図5のステップS516に示した処理ステップの詳細な処理手順を示している。
ソフトウェアモデルは、上述したように、シリアル送受信システムを含むシステムLSIを構成するソフトウェアのタスク分割をおこない、仮想OS上に実行するモデルである。図35において、まず、アーキテクチャモデルに機能モデルの一部をソフトウェアによりマッピングする(ステップS3501)。
図36は、アーキテクチャモデルに機能モデルの一部をソフトウェアによりマッピングをおこなった例を示す説明図である。具体的には、図26に示したように、デコーダ2602はハードウェア2615にマッピングし、エンコーダ2604はハードウェア2617にマッピングする。一方、CPU2601およびコントローラ2603は、プロセッサ2611にマッピングする。
つぎに、このマッピングにより、ソフトウェアモデルにおける設計クラス図を生成する(ステップS3502)。図37は、ソフトウェアモデルにおける設計クラス図を示す説明図である。図37において、ソフトウェアモデルにおける設計クラス図3700は、図22に示した分割設計クラス図2210〜2240を元にして生成される。
ソフトウェアモデルにおける設計クラス図3700は、トップモジュールに関する分割設計クラス図3701と、デコーダモジュールに関する分割設計クラス図3702と、エンコーダモジュールに関する分割設計クラス図3703のほかに、仮想OSモデルに関する分割設計クラス図3704を含んでいる。そして、設計クラス図3701〜3704ごとに、ソフトウェアモデルの実装コードを生成する(ステップS3503)。
このあと、図5のステップS517において、ソフトウェアモデルの実装コードのシミュレーションを実行することとなる。そして、図5のステップS518において、ソフトウェアモデルの実装コードのシミュレーション結果と、概念モデルの実装コードのシミュレーション結果との一致判定をおこなう。そして、一致する場合(ステップS518:Yes)、ソフトウェアモデルの実装コードのシミュレーション結果が、図13に示した要求項目リスト1300のすべての要求項目1301〜1308を満足することとなり、ソフトウェアのタスク分割が正当であることとなる。
一方、一致しない場合(ステップS518:No)、ソフトウェアモデルの実装コードのシミュレーション結果が、図13に示した要求項目リスト1300のすべての要求項目1301〜1308を満足しておらず、ソフトウェアのタスク分割が正当でないこととなる。
そして、図5に示したステップS519において、ソフトウェアモデルの実装コードの修正処理をおこなうこととなる。これにより、ソフトウェアのタスク分割の正確さの検証をおこなうことができる。
この発明の実施の形態にかかる検証支援装置および検証支援方法によれば、仕様リスクの早期回避を図ることができる。具体的には、顧客要求をUMLで分析した上で、実行可能なモデルを用いて顧客の機能要求に満足するかどうかを検証することができ、仕様の誤解やミスを早期に発見することができ、誤った仕様に基づくシステムLSIの設計を防止することができる。
また、この発明の実施の形態にかかる検証支援装置および検証支援方法によれば、シミュレーションスピードネックの解決を図ることができる。具体的には、従来の検証手法ではRTLのシミュレータを用いてシミュレーションおこなうため、シミュレーション速度が非常に遅いという問題があったが、この実施の形態では、より抽象度の高いモデルを用いてシミュレーションを実行するため、RTLのシミュレータに比べて数百倍の速度でシミュレーションを実行することができる。したがって、このシミュレーション速度の向上により、検証作業を含めた設計期間の短縮化を図ることができる。
さらに、この発明の実施の形態にかかる検証支援装置および検証支援方法によれば、コストの削減を図ることができる。具体的には、従来の検証手法では大規模なLSIの場合に高価なエミュレータを導入する必要があったが、この発明の実施の形態では、抽象度の高いモデルの検証によりエミュレータの利用頻度を大幅に減少することができ、コストの削減を図ることができる。また、エミュレータの利用は基本的に時間単位でお金に換算されるケースが多いため、検証時間の短縮化によって費用の低減を図ることができる。
また、この発明の実施の形態にかかる検証支援装置および検証支援方法によれば、早期仕様のミスをなくすことによって検証工程の短縮化を図ることができる。
また、従来手法に対するより効果的な改善点として、従来手法ではRTLが完成されていないと検証工程をおこなうことができなかったが、この発明の実施の形態では、設計の初期の段階から検証を開始することができる。また、設計の詳細度に応じて各モデルに対してその正当性を検証することができる。これにより、従来における設計終了⇒検証スタートという手法に対して、大幅の設計工程の短縮化を図ることができる。
さらに、この発明の実施の形態にかかる検証支援装置および検証支援方法によれば、定量的なアーキテクチャ評価をおこなうことができる。具体的には、従来手法ではRTLのHDLを完成しない限り、性能評価できないという問題点があったが、RTLのHDLを完成してから性能に満足しないという理由で設計変更をおこなうと、非常に高いコストがかかることとなる。
これに対し、この発明の実施の形態では、早期の段階でRTLによる抽象度の高い動作モデルに対してラフな性能(動作)を見積ることができ、性能(動作)に満足しないというリスクの低減を図ることができる。
また、上述した具体例では、シリアル送受信システムを含むシステムLSIを例に挙げて説明したが、このシステムLSIには限定されることはなく、各種システムLSIに適用することができる。
なお、この実施の形態で説明した検証支援方法は、予め用意されたプログラムをパーソナル・コンピュータやワークステーション、CAD等のコンピュータで実行することにより実現することができる。このプログラムは、ハードディスク、フレキシブルディスク、CD−ROM、MO、DVD等のコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行される。またこのプログラムは、インターネット等のネットワークを介して配布することが可能な伝送媒体であってもよい。
以上のように本発明は、たとえば、LSIの設計データの検証をおこなうシステムやツールを提供することに適している。

本発明は、LSIの検証を支援する検証支援装置、検証支援方法、検証支援プログラムおよび記録媒体に関する。
LSI設計では、LSIが正常に動作するか否かを検証する検証作業が必要不可欠であり、特に、大規模化、高機能化、高速化および低消費電力化が要求されているLSIについては、高品質を維持するためにもこの検証作業は重要である一方、従来から設計期間の短縮による作業効率化が要求されている。
特に、近年は、ソフトウェアとハードウェアが混在しており、従来型のASICによる単機能のハードウェアだけではなく、ソフトウェアも含めたシステム・オン・チップ(SoC)が主流となっている。また、MPEGやJPEGなど、本来アプリケーションソフトウェアで実現される機能がハードウェアで実現するようになっているため、LSIの機能が複雑化している。
ここで、従来のLSIの開発処理について説明する。図38は、従来のLSIの開発処理手順を示すフローチャートである。図38において、ステップS3801〜ステップS3805が、LSIの設計をおこなう設計フローであり、ステップS3806〜ステップS3809が、設計されたLSIの検証をおこなう検証フローである。
まず、設計フローでは、ステップS3801において、概念設計をおこなう。概念設計では、顧客からの設計要求に基づいて設計者が要求仕様書3810を自然言語によって作成する。または、顧客から自然言語で記述された要求仕様書3810を受け取る。
つぎに、ステップS3802において、機能設計をおこなう。機能設計では、要求仕様書3810に記述された内容から、設計対象となるLSIを機能ブロックごとに分けて、各機能ブロックの内容を記述した機能仕様書3820を作成する。
つぎに、ステップS3803において、構造設計をおこなう。構造設計では、機能仕様書3820からハードウェア設計をおこなって構造仕様書3830を作成する。具体的には、どのようなアーキテクチャを導入すれば機能仕様書3820に記述された機能を実現できるか、という設計をおこなうことである。
たとえば、各機能ブロックのうち、ある機能ブロックのアーキテクチャについてはソフトウェアによって実現し、ある機能ブロックのアーキテクチャについてはIP(Intellectual Property)を購入して実現し、ある機能ブロックのアーキテクチャについては設計者が作成し、ある機能ブロックのアーキテクチャについては、アンダーバスによって実現するということである。
つぎに、ステップS3804において、ユニット設計をおこなう。ユニット設計では、構造仕様書3830に記述された各ハードウェアモジュールを複数のモジュールに分割して詳細に設計することによってユニット仕様書3840を作成する。
つぎに、ステップS3805において、実装をおこなう。実装では、インターフェースのタイミングチャートを用い、また、内部ロジックを考慮することにより、最終的な設計対象となるRTL(Register Transfer Level)3850のHDL(Hardware Description Language)を用いて実装をおこなう。
つぎに、ステップS3806において、ユニット検証をおこなう。ユニット検証では、ユニット検証項目3860にしたがって、ユニット設計によって設計されたユニットごとのユニット仕様書3840の検証、すなわち、デバッグをおこなう。
つぎに、ステップS3807において、結合検証をおこなう。結合検証では、結合検証項目3870にしたがって、ユニット検証によって検証された各ユニットのインターフェースを結合して、正常に動作するかを検証する。
つぎに、ステップS3808において、機能検証をおこなう。機能検証では、機能検証項目3880にしたがって、設計対象となるシステムの機能要求を満たすかどうかを検証する。
最後に、ステップS3809において、実機検証をおこなう。実機検証では、RTL3850を用いて実際にチップ上にLSIを実装して、実際に動作するかどうかを検証する。顧客からの要求仕様書3810が、要求検証項目3890を満足しているかどうかを判断する。
しかしながら、上述した設計処理では、実装(ステップS3805)しなければ、LSIの検証(ステップS3806〜S3809)をおこなうことができなかった。
これにより、設計フローの上流のいずれかのステップにおいて仕様書の誤り、記述の曖昧さ、設計者の誤解釈のためにミスが生じると、そのステップ以降のステップにおいてミスが累積されてしまうという問題があった。
また、構造設計においては、机上でアーキテクチャを決定しており、その妥当性を確かめる手法が存在していなかった。したがって、開発リスクの増大によって開発プロジェクトの破綻も生じ、開発時間および開発労力が無駄になるという問題があった。
また、RTL3850のHDLに対してシミュレーションをおこなうために特別なシミュレータ(VCS、NC−SimなどのEDAベンダーのツール)が必要であるが、シミュレーションスピードが遅いために検証効率が低下し、設計期間の長期化を招くという問題があった。特に、設計対象が大規模な場合、シミュレーションスピードがネックとなって、所定の期間内に検証作業を収束させることができない場合があった。
一方、シミュレータより何千倍のスピードで動くエミュレータを導入してシミュレーションの速度の向上を図ることも考えられるが、エミュレータが非常に高価であり、検証費用が増大するとともに、環境の構築が困難な上に問題発生時にデバッグが難しいために結果的に検証期間が増加して、設計期間の長期化を招くという問題があった。
本発明は、上記問題点に鑑みてなされたものであって、LSIの設計精度の向上および検証期間の短縮化を、容易かつ効率的に実現することができる検証支援装置、検証支援方法、検証支援プログラムおよび該プログラムを記録した記録媒体を提供することを目的とする。
上述した課題を解決し、目的を達成するため、本発明の検証支援装置、検証支援方法、および検証支援プログラムは、LSIの設計対象に関する要求仕様の分析結果を示す分析情報を入力し、入力された分析情報に基づいて、前記設計対象の基本機能がモデル化され、かつ、前記設計対象の物理的なアーキテクチャおよび時間の概念が抽象化された概念モデルを生成し、入力された分析情報に基づいて、前記設計対象を構成するモジュールの分割、および分割されたモジュールの並行または並列性を抽出することによってモデル化された機能モデルを生成し、生成された機能モデルについて、前記設計対象を構成するモジュールの分割、および分割されたモジュールの並行または並列性が正当であるかどうかを、生成された概念モデルに基づいて検証することを特徴とする。
また、上記発明は、前記機能モデルが正当であることが検証された場合、複数種類の物理的なアーキテクチャに関する情報から任意のアーキテクチャに関する情報を抽出し、抽出されたアーキテクチャに関する情報を、正当であることが検証された機能モデルにマッピングすることにより、前記設計対象の動作をモデル化した動作モデルを生成し、生成された動作モデルによりモデル化された設計対象を構成するモジュールの動作タイミングが、正当であるかどうかを検証することを特徴とする。
さらに、上記発明は、前記動作モデルが正当であることが検証された場合、前記機能モデルによってモデル化された設計対象を構成するモジュール間の抽象度が異なる箇所に、当該モジュール間に所定のクロックサイクル精度のインターフェースを挿入することによりICAモデルを生成し、生成されたICAモデルに挿入されたインターフェースのクロックサイクル精度が正当であるかどうかを、生成された概念モデルに基づいて検証することを特徴とする。
また、前記動作モデルが正当であることが検証された場合、前記機能モデルによってモデル化された設計対象に基づいて、ソフトウェアによって実行可能なタスクを含むようにモデル化されたソフトウェアモデルを生成し、生成されたソフトウェアモデルに含まれているタスクが正当であるかどうかを、生成された概念モデルに基づいて検証することを特徴とする。
この発明の検証支援装置、検証支援方法、および検証支援プログラムによれば、段階的に検証を導入することによって、これまで、RTLを生成しないと発見できなかった問題を、設計の早期段階に摘出してそのリスクを回避することができる。したがって、LSIの設計精度の向上および検証期間の短縮化を、容易かつ効率的に実現することができるという効果を奏する。
(実施の形態)
以下に、本発明の実施の形態にかかる検証支援装置、検証支援方法、検証支援プログラムおよび該プログラムを記録した記録媒体について図面を参照しつつ詳細に説明する。
(検証支援の概念)
まず、この発明の実施の形態にかかる検証支援の概念について説明する。図1は、この発明の実施の形態にかかる検証支援の概念図である。
図1において、設計者は、設計対象を含むシステムLSIの顧客からの要求仕様100について、UML(Unified Modeling Language)を用いてオブジェクト指向分析をおこない、その分析結果を概念モデル101としてモデリングする。概念モデル101とは、設計対象の概念的な分析結果をあらわすモデルである。概念モデル101は、完全に実装依存しないモデルであり、具体的には、物理的なアーキテクチャや時間の概念が抽象化され、設計対象の基本機能を中心にモデリングされたものである。
概念モデル101は、具体的には、システムLSIの要求仕様の分析結果を、UMLやC++でモデリングした結果物であり、UMLモデル、C++モデル、および検証シナリオのすべてを含めた総称である。この概念モデル101では、要求仕様100の誤解やミス、またはアルゴリズムの検証をおこなうことができる。
また、機能モデル102は、概念モデル101から、設計対象であるシステムLSIを構成するモジュールの分割、分割されたモジュールの並行または並列性を抽出することによって構築されたモデルである。機能モデル102は、時間の概念が存在しない。この機能モデルでは、モジュール分割の正当性や、並列、並行性の正確さを検証することができる。
また、アーキテクチャモデル103は、バスやIP(Intellectual Property)などの既存設計の物理的なハードウェア部品をあらわすモデルである。アーキテクチャモデル103は、具体的には、処理リソースと、通信リソースとに大別される。処理リソースは、機能モデル102のモジュールをマッピングするためのモデルである。たとえば、ハードウェア処理モジュール、プロセッサ、RTOS、DSPなどが挙げられる。
一方、通信リソースは、機能モデルのモジュール間の通信を実現するためのチャンネルをモデリングしたモデルである。たとえば、バス、メモリ、ハードウェアモジュール間の信号線などが挙げられる。このアーキテクチャモデル103では、既存設計の物理的なハードウェア部品を用いているため、検証をおこなう必要はない。
また、動作モデル104は、概念的に、機能モデル102をアーキテクチャモデル103にマッピングした結果物である。具体的には、機能モデル102のプロセスをアーキテクチャモデル103の処理リソースにマッピングし、機能の通信チャンネルは、通信リソースを用いて組み立てる。この動作モデル104では、顧客が要求した動作(性能)を満足するかどうかの検証をおこなうことができる。
つぎに、動作モデル104についてHW/SW分割をおこない、ハードウェア実装をあらわすICA(Interface Cycle Accurate)モデル105とソフトウェア実装をあらわすソフトウェアモデル106とを生成する。
ICAモデル105は、モジュール外のインターフェースについてはサイクル精度によって、モジュール内部は動作レベルによって構築したモデルである。このICAモデル105を高位合成することによってRTL記述107を生成する。このICAモデル105では、インターフェースの正確さの検証をおこなうことができる。
また、ソフトウェアモデル106は、設計対象を含むシステムLSIを構成するソフトウェアのタスク分割をおこない、仮想OS上に実行するモデルである。このソフトウェアモデル106についてコード生成処理をおこなうことによって、実装コード108を生成する。このソフトウェアモデル106では、ソフトウェアの機能を検証することができる。
(各モデルの抽象度)
つぎに、図1に示した各モデルの抽象度について説明する。図2は、図1に示した各モデル101〜106の抽象度をあらわすグラフである。図2のグラフは、原点を中心とした3軸によって構成されている。各軸は、それぞれ「機能」の抽象度、「構造」の抽象度、「時間」の抽象度をあらわしており、原点から離れるにしたがって抽象度が高くなる。
(検証支援装置のハードウェア構成)
つぎに、この発明の実施の形態にかかる検証支援装置のハードウェア構成について説明する。図3は、この発明の実施の形態にかかる検証支援装置のハードウェア構成を示すブロック図である。
図3において、検証支援装置は、CPU301と、ROM302と、RAM303と、HDD(ハードディスクドライブ)304と、HD(ハードディスク)305と、FDD(フレキシブルディスクドライブ)306と、着脱可能な記録媒体の一例としてのFD(フレキシブルディスク)307と、ディスプレイ308と、I/F(インターフェース)309と、キーボード310と、マウス311と、スキャナ312と、プリンタ313と、を備えている。また、各構成部はバス300によってそれぞれ接続されている。
ここで、CPU301は、検証支援装置の全体の制御を司る。ROM302は、ブートプログラムなどのプログラムを記憶している。RAM303は、CPU301のワークエリアとして使用される。HDD304は、CPU301の制御にしたがってHD305に対するデータのリード/ライトを制御する。HD305は、HDD304の制御で書き込まれたデータを記憶する。
FDD306は、CPU301の制御にしたがってFD307に対するデータのリード/ライトを制御する。FD307は、FDD306の制御で書き込まれたデータを記憶したり、FD307に記憶されたデータを検証支援装置に読み取らせたりする。
着脱可能な記録媒体として、FD307のほか、CD−ROM(CD−R、CD−RW)、MO、DVD(Digital Versatile Disk)、メモリーカードなどであってもよい。ディスプレイ308は、カーソル、アイコンあるいはツールボックスをはじめ、文書、画像、機能情報などのデータを表示する。このディスプレイ308は、たとえば、CRT、TFT液晶ディスプレイ、プラズマディスプレイなどを採用することができる。
I/F309は、通信回線を通じてインターネットなどのネットワークに接続され、このネットワークを介して他の装置に接続される。そして、I/F309は、ネットワークと内部のインターフェースを司り、外部装置からのデータの入出力を制御する。I/F309には、たとえばモデムやLANアダプタなどを採用することができる。
キーボード310は、文字、数字、各種指示などの入力のためのキーを備え、データの入力をおこなう。また、タッチパネル式の入力パッドやテンキーなどであってもよい。マウス311は、カーソルの移動や範囲選択、あるいはウィンドウの移動やサイズの変更などをおこなう。ポインティングデバイスとして同様に機能を備えるものであれば、トラックボールやジョイスティックなどであってもよい。
スキャナ312は、画像を光学的に読み取り、検証支援装置内に画像データを取り込む。なお、スキャナ312は、OCR機能を持たせてもよい。また、プリンタ313は、画像データや文書データを印刷する。プリンタ313には、たとえば、レーザプリンタやインクジェットプリンタを採用することができる。
(検証支援装置の機能的構成)
つぎに、この発明の実施の形態にかかる検証支援装置の機能的構成について説明する。図4は、この発明の実施の形態にかかる検証支援装置の機能的構成を示すブロック図である。
図4において、検証支援装置400は、分析情報入力部401と、概念モデル生成部402と、機能モデル生成部403と、機能モデル検証部404と、アーキテクチャ情報記憶部405と、アーキテクチャ抽出部406と、動作モデル生成部407と、動作モデル検証部408と、ICAモデル生成部409と、ICAモデル検証部410と、ソフトウェアモデル生成部411と、ソフトウェアモデル検証部412と、から構成されている。
分析情報入力部401は、設計対象を含むシステムLSIの顧客からの要求仕様の分析結果を示す情報(分析情報)の入力を受け付ける。ここで、分析情報とは、たとえば、UMLによって記述された設計対象のユースケース図、シーケンス図、クラス図や、設計対象に要求される基本機能項目など、コンピュータによって読取り可能な情報が挙げられる。
また、概念モデル生成部402は、分析情報入力部401によって入力された分析情報に基づいて、設計対象の基本機能がモデル化され、かつ、設計対象の物理的なアーキテクチャおよび時間の概念が抽象化された概念モデル、すなわち、図1に示した概念モデル101を生成する。
具体的には、概念モデル生成部402は、ユースケース図などの分析情報を解析して、設計対象の実装コードや、設計対象について検証すべき項目(検証項目)、回路シミュレーションによる検証処理手順を示す検証シナリオを生成する。この生成された実装コード、検証項目および検証シナリオが、図1に示した概念モデル101となる。
また、機能モデル生成部403は、分析情報入力部401によって入力された分析情報に基づいて、設計対象を構成するモジュールの分割、および分割されたモジュールの並行または並列性を抽出することによってモデル化された機能モデルを生成する。たとえば、分析情報であるクラス図に基づいて、設計対象の機能をあらわす機能モデルを生成する。
具体的には、概念モデル生成部402に入力されたクラス図を機能ごとに複数に分割し、分割されたクラス図(分割クラス図)ごとに、実装コードを生成する。この生成された分割クラス図ごとの実装コードが、図1に示した機能モデル102となる。
機能モデル検証部404は、機能モデル生成部403によって生成された機能モデルについて、設計対象を構成するモジュールの分割、および分割されたモジュールの並行または並列性が正当であるかどうかを、概念モデル生成部402によって生成された概念モデルに基づいて検証する。
具体的には、分割クラス図ごとの実装コードのシミュレーション結果が、概念モデルの実装コードを概念モデルの検証シナリオでシミュレーションしたシミュレーション結果と一致するかどうかを判定することによって、機能モデルの正当性を検証する。ここで、シミュレーション結果とは、ある入力データに対してどのような出力データが得られるか、ということである。
より具体的には、分割クラス図ごとの実装コードのシミュレーション結果が一致する場合は、機能モデルが正当となる。一方、不一致の場合は、機能モデルの分割、並行、並列性が正しくないため、機能モデル生成部403は、機能モデルの実装コードを修正する。
また、アーキテクチャ情報記憶部405は、バスやIP(Intellectual Property)などの既存設計の物理的なハードウェア部品に関する情報を記憶する。アーキテクチャ情報記憶部405は、具体的には、たとえば、図3に示したROM302、RAM303、HD305、FD307などによってその機能を実現する。
アーキテクチャ情報抽出部406は、アーキテクチャ情報記憶部405に記憶されているアーキテクチャ情報を抽出する。処理リソースに関しては、たとえば、ハードウェア処理モジュール、プロセッサ、RTOS、DSPなどを抽出する。一方、通信リソースに関しては、バス、メモリ、ハードウェアモジュール間の信号線などを抽出する。このアーキテクチャ情報抽出部406によって抽出されたアーキテクチャ情報が、図1に示したアーキテクチャモデル103に相当する。
動作モデル生成部407は、アーキテクチャ情報抽出部406によって抽出されたアーキテクチャに関する情報を、機能モデル検証部404によって正当であることが検証された機能モデルにマッピングすることにより、設計対象の動作をモデル化した動作モデルを生成する。
具体的には、機能モデル102をアーキテクチャモデル103にマッピングすることによって、設計対象の動作モデル104を生成する。具体的には、機能モデル102のプロセスをアーキテクチャモデル103の処理リソースにマッピングし、機能の通信チャンネルは、通信リソースを用いて組み立てる。この組み立てにより、マッピングによって得られたモジュールの処理時間を考慮した実装コードを生成する。この生成された実装コードが、図1に示した動作モデル104に相当する。
動作モデル検証部408は、動作モデル生成部407によって生成された動作モデルによりモデル化された設計対象を構成するモジュールの動作タイミングが、正当であるかどうかを検証する。
具体的には、動作モデル生成部407によって生成された実装コードのシミュレーション結果が、概念モデルの実装コードを概念モデルの検証シナリオでシミュレーションしたシミュレーション結果と一致するかどうかを判定することによって、動作モデルの正当性を検証する。ここで、シミュレーション結果とは、ある入力データに対してどのような出力データが得られるか、ということである。
そして、一致する場合は、動作モデルが正当となり、顧客が要求した動作(性能)を満足していることとなる。一方、不一致の場合は、動作モデルが、顧客が要求した動作(性能)を満足していないこととなる。この場合、動作モデル生成部407は、動作モデルの実装コードを修正する。
ICAモデル生成部409は、動作モデル検証部408によって正当であることが検証された場合、機能モデルによってモデル化された設計対象を構成するモジュール間の抽象度が異なる箇所に、当該モジュール間に所定のクロックサイクル精度のインターフェースを挿入することによりICAモデルを生成する。
具体的には、動作モデル104についてHW/SW分割をおこない、ハードウェア実装をあらわすICAモデル105を生成する。たとえば、モジュール間の抽象度が異なる場合に、当該モジュール間の抽象度が同等となるように、クラス図に示された、モジュール間の通信路をインターフェースラッパに置換する。
そして、インターフェースラッパに置換されたクラス図の実装コードを生成する。この生成された実装コードが、図1に示したICAモデル105となる。そして、このICAモデル105の実装コードを高位合成することにより、RTL記述107を生成することができる。
ICAモデル検証部410は、ICAモデル生成部409によって生成されたICAモデル105に挿入されたインターフェースのクロックサイクル精度が正当であるかどうかを、概念モデル生成部402によって生成された概念モデル101に基づいて検証する。
具体的には、ICAモデル生成部409によって生成された実装コードのシミュレーション結果が、概念モデルの実装コードを概念モデルの検証シナリオでシミュレーションしたシミュレーション結果と一致するかどうかを判定することによって、機能モデルの正当性を検証する。ここで、シミュレーション結果とは、ある入力データに対してどのような出力データが得られるか、ということである。
そして、一致する場合は、ICAモデルが正当となる。具体的には、置換されたインターフェースラッパによってあらわされるインターフェースが正確であることとなる。一方、不一致の場合は、置換されたインターフェースラッパが不正確となる。この場合、ICAモデル生成部409は、ICAモデルの実装コードを修正する。
ソフトウェアモデル生成部411は、動作モデル検証部408によって正当であることが検証された場合、機能モデルによってモデル化された設計対象に基づいて、ソフトウェアによって実行可能なタスクを含むようにモデル化されたソフトウェアモデルを生成する。
具体的には、動作モデル104についてHW/SW分割をおこない、ソフトウェア実装をあらわすソフトウェアモデル106(図1を参照。)を生成する。たとえば、設計対象を含むシステムLSIを構成するソフトウェアのタスク分割をおこない、仮想OS上に実行可能な実装コードを生成する。
ソフトウェアモデル検証部412は、ソフトウェアモデル生成部411によって生成されたソフトウェアモデルに含まれているタスクが、正当であるかどうかを、概念モデル生成部402によって生成された概念モデルに基づいて検証する。
具体的には、ソフトウェアモデル生成部411によって生成された実装コードのシミュレーション結果が、概念モデルの実装コードを概念モデルの検証シナリオでシミュレーションしたシミュレーション結果と一致するかどうかを判定することによって、ソフトウェアモデル106の正当性を検証する。ここで、シミュレーション結果とは、ある入力データに対してどのような出力データが得られるか、ということである。
そして、一致する場合は、ソフトウェアモデル106の実装コードによってあらわされる機能が正当となる。そして、このソフトウェアモデル106の実装コードを取り込んだ、設計対象全体の実装コード108(図1を参照。)を生成する。一方、不一致の場合は、ソフトウェアモデル106の実装コードによってあらわされる機能が不正確となる。この場合、ソフトウェアモデル生成部411は、ソフトウェアモデルの実装コードを修正する。
なお、上述した分析情報入力部401、概念モデル生成部402、機能モデル生成部403、機能モデル検証部404、アーキテクチャ情報抽出部406、動作モデル生成部407、動作モデル検証部408、ICAモデル生成部409、ICAモデル検証部410、ソフトウェアモデル生成部411およびソフトウェアモデル検証部412は、具体的には、たとえば、図3に示したROM302、RAM303、HD305、FD307などに記録されたプログラムをCPU301が実行することによって、またはI/F309によって、その機能を実現する。
(検証支援装置の検証支援処理手順)
つぎに、この発明の実施の形態にかかる検証支援装置の検証支援処理手順について説明する。図5は、この発明の実施の形態にかかる検証支援装置の検証支援処理手順を示すフローチャートである。
図5において、まず、設計者は、設計対象を含むシステムLSIの顧客からの要求仕様100を分析して、分析結果をあらわす分析情報を入力する(ステップS501)。
つぎに、入力された分析情報に基づいて、設計対象の実装コードや、設計対象について検証すべき項目(検証項目)、回路シミュレーションによる検証処理手順を示す検証シナリオなどの概念モデル101を生成する(ステップS502)。生成された概念モデル101の正当性については、設計者が検証する。
つぎに、設計対象の機能デモル102を生成する(ステップS503)。具体的には、概念モデル生成部402に入力されたクラス図を機能ごとに複数に分割し、分割されたクラス図(分割クラス図)ごとに、機能モデル102の実装コードを生成する。
そして、概念モデル101の実装コードと機能モデル102の実装コードのシミュレーションをおこなう(ステップS504)。つぎに、概念モデル101の実装コードのシミュレーション結果と、機能モデル102の実装コードのシミュレーション結果とが、一致するかどうかの判定、すなわち、機能モデル検証をおこなう(ステップS505)。
不一致の場合(ステップS505:No)、機能モデル102を修正する(ステップS506)。具体的には、たとえば、概念モデル101のクラス図を再度、分割しなおして、分割クラス図を生成し、その分割クラス図ごとに実装コードを生成する。そして、ステップS504に移行する。
一方、一致する場合(ステップS505:Yes)、機能モデル102が正当であると判断される。そして、正当性が検証された検証済みの機能モデル102に、アーキテクチャモデル103をマッピングして、動作モデル104を生成する(ステップS507)。そして、動作モデル104の実装コードのシミュレーションをおこなう(ステップS508)。
つぎに、概念モデル101の実装コードのシミュレーション結果と、動作モデル104の実装コードのシミュレーション結果とが、一致するかどうかの判定、すなわち、動作モデル検証をおこなう(ステップS509)。
不一致の場合(ステップS509:No)、動作モデル104を修正する(ステップS510)。具体的には、たとえば、アーキテクチャ情報記憶部405から再度アーキテクチャ情報を抽出して、正当性が検証された検証済の機能モデル102に、あらたなアーキテクチャモデル103をマッピングして、動作モデル104を生成する。そして、ステップS508に移行する。
一方、一致する場合(ステップS509:Yes)、動作モデル104が正当であると判断される。そして、正当性が検証された検証済の動作モデル104に対しHW/SW分割をおこない、ICAモデル105とソフトウェアモデル106を生成する(ステップS511、ステップS516)。
そして、生成されたICAモデル105の実装コードのシミュレーションをおこなう(ステップS512)。つぎに、概念モデル101の実装コードのシミュレーション結果と、ICAモデル105の実装コードのシミュレーション結果とが、一致するかどうかの判定、すなわち、ICAモデル検証をおこなう(ステップS513)。
不一致の場合(ステップS513:No)、ICAモデル105を修正する(ステップS514)。具体的には、たとえば、インターフェースラッパの内容を変更することによって、ICAモデル105を修正する。そして、ステップS512に移行する。
一方、一致する場合(ステップS513:Yes)、ICAモデル105が正当であると判断される。そして、高位合成をおこなって(ステップS515)、RTL記述を生成する。
また、生成されたソフトウェアモデル106の実装コードのシミュレーションをおこなう(ステップS517)。つぎに、概念モデル101の実装コードのシミュレーション結果と、ソフトウェアモデル106の実装コードのシミュレーション結果とが、一致するかどうかの判定、すなわち、ソフトウェアモデル検証をおこなう(ステップS518)。
不一致の場合(ステップS518:No)、ソフトウェアモデル106を修正する(ステップS519)。具体的には、たとえば、設計対象を含むシステムLSIを構成するソフトウェアのタスク分割を再度おこない、仮想OS上に実行可能な実装コードを生成する。
一方、一致する場合(ステップS518:Yes)、ソフトウェアモデル106が正当であると判断される。そして、正当であることが検証された検証済のソフトウェアモデル106の実装コードを取り込んだ、設計対象全体の実装コード108を生成する(ステップS520)。
この検証処理手順によれば、モデルごとに、段階的に検証をおこなうため、直前までに検証されたモデルについては、検証のやり直しをおこなうことなく、有効なモデルとして活用することができるため、検証処理において手戻りが発生せず、検証処理の効率化を図ることができる。
なお、上述した図5のフローチャートでは、ステップS511〜515までの処理手順と、ステップS516〜520までの処理手順とを並列に実行することとしているが、ステップS511〜515までの処理手順のあとに、ステップS516〜520までの処理手順を実行することとしてもよく、また、ステップS516〜520までの処理手順のあとに、ステップS511〜515までの処理手順を実行することとしてもよい。
(検証処理の具体例)
つぎに、上述した検証処理の具体例について説明する。
(システムLSIのハードウェア構成)
まず、設計対象を含むシステムLSIのハードウェア構成について説明する。図6は、この発明の実施の形態にかかる設計対象を含むシステムLSIのハードウェア構成を示すブロック図である。この設計対象は、たとえば、顧客から設計業務を引き受けた情報であり、ここでは、その設計対象を、シリアル送受信システムとして説明する。
図6において、システムLSI600は、設計対象の一例として挙げられたシリアル送受信システム601と、受信器602と、送信器603と、CPU604と、その他デバイス605と、これらを接続するバス606と、によって構成されている。
ここで、受信器602は、受信パケット611を受信し、シリアル送受信システム601に供給する。送信器603は、シリアル送受信システム601から供給された情報を送信パケット612として図示しない外部機器に送信する。シリアル送受信システム601は、たとえば、BCH(62,48)で符号化および復号化をおこなう。
そして、受信器602からの受信パケット611を復号し、この復号したパケット613をCPU604に供給する。また、CPU604からのパケット614を符号化する。CPU604は、シリアル送受信システム601からのパケット613を用いて、その他デバイス605とともにシステムLSI600の機能を実行する。
(外部装置のインターフェース仕様)
つぎに、外部装置(受信器602、送信器603、CPU604、その他デバイス605)のインターフェース仕様について説明する。図7および図8は、外部装置のインターフェースであるバスの仕様を示す説明図である。特に、図7は、ライト時のタイミングチャートであり、図8は、リード時のタイミングチャートである。
図7および図8において、「PCLK」は、ビット幅1の入力クロック信号である。「PADDR」は、ビット幅32のアドレス出力信号である。「PWRITE」は、ビット幅1のリード/ライト制御出力信号である。「PSEL」は、ビット幅1のチップセレクト出力信号である。「PENABLE」は、ビット幅1の出力イネーブル信号である。「PRDATA」は、ビット幅32のデータ入出力信号である。CPU604に対するバスの仕様は、バス標準プロトコルに準拠しており、CPU604について組み込みプロセッサコアを採用することとしている。
図9は、外部装置のインターフェースである送信器603の仕様を示す説明図である。図9において、「clk」は、ビット幅1の入力クロック信号である。「ISTART」は、ビット幅1のスタートパルス入力信号である。「IDATA」は、ビット幅1のデータ入力信号である。シリアル送受信システム601から送信器603への入力仕様は、スタートパルス入力信号のiクロックのパルスを検出すると同時に、送信器603がクロックのポジティブエッジごとに1ビットずつデータを取り込むという仕様である。また、入力クロック周波数は、100MHzとしている。
図10は、外部装置のインターフェースである受信器602の仕様を示す説明図である。図10において、「clk」は、ビット幅1の出力クロック信号である。「OSTART」は、ビット幅1のスタートパルス出力信号である。「ODATA」は、ビット幅1のデータ出力信号である。
(シリアル送受信システムに要求される基本機能)
つぎに、設計対象であるシリアル送受信システム601に要求される基本機能について説明する。シリアル送受信システム601に要求される基本機能は、(1)パケットの送信機能と、(2)パケットの受信機能と、(3)初期化機能である。
(1)パケットの送信機能は、以下のとおりである。
(i)CPU604が作成したパケット614をBCH(62,48)で符号化して送信器603に転送する転送機能。
(ii)CPU604が作成したパケット614の不正を検出してCPU604にエラーを知らせる不正検出機能。
(iii)CPU604から連続的に大量なパケット614が送信されてきた際に処理が間に合わないとき、CPU604にエラーを知らせ、送信パケット612を破棄するパケット破棄機能。
(vi)送信器603への出力スループット:0〜1Mbps
また、(2)パケットの受信機能は、以下の通りである。
(vii)BCH(62,48)で受信器602から連続して符号化された受信パケット611を受信し、受信パケット611を復号してCPU604に通知し、復号したパケット613をCPU604に受信させる復号機能。
(viii)受信器602から大量の受信パケット611を送ってきた際に処理が間に合わない場合は受信パケット611の廃棄を許容するパケット廃棄許容機能。
(ix)受信パケット611の中に誤り訂正ができないパケットが存在する場合、CPU604にエラーを知らせ、受信パケット611を破棄するパケット破棄機能。
(x)受信パケット611に対して2ビットまで訂正可能、4ビットまでエラーの検出可能とする訂正・検出機能。
(xi)受信器602からの入力スループット:0〜1Mbps
さらに、(3)初期化機能は、以下の通りである。
(xii)CPU604から初期化指示するソフトリセット機能。
(xiii)リセット信号からも初期化指示するハードリセット機能。
(パケットの構成)
つぎに、CPU604で送受信されるパケット613,614の構成について説明する。図11は、CPU604で送受信されるパケット613,614の構成を示す説明図であり、図12は、送信パケット612の構成を示す説明図である。図11において、パケット613,614は、16ビットのヘッダ部1101と、32ビットのデータ部1102から構成されている。ヘッダ部1101はパケット識別番号(1010101010101010)2とされている。
また、図12において、送信パケット612は、図11に示した16ビットのヘッダ部1101および32ビットのデータ部1102に、BCH(62,48)で符号化された14ビットの冗長符号部1201が付加された構成である。また、受信パケット611は、図示はしないが、送信パケット612との構成にさらに通信路によるエラービットが付加された構成である。この図6から図12までの情報の内容が、顧客が要求する要求仕様100となる。
(要求定義の内容)
つぎに、図6から図12までに示した要求仕様の内容を定義した要求定義について説明する。図13は、要求定義であるシステムLSI600の要求項目リストを示す説明図であり、図14は、要求定義であるシステムLSI600のユースケース図である。
図13に示した要求項目リスト1300において、このシステムLSI600には、「受信パケットを最大2重誤り訂正できる」(項目1301)、「受信パケットの4重誤りまで検出できる」(項目1302)、「受信パケットを受信器経由で受信できる」(項目1303)、「受信パケットをBCH(60,48)で復号化できる」(項目1304)、「CPUから初期化できる」(項目1305)、「リセット信号から初期化できる」(項目1306)、「送信パケットを送信器経由で送信できる」(項目1307)、「送信パケットをBCH(62,48)で符号化できる」(項目1308)の機能が要求される。
また、図14に示したユースケース図1400は、図13に示した要求項目リスト1300によって要求されている機能を図表化したものであり、UMLにしたがって記述された図表である。図14において、図6に示したシリアル送受信システム601は、ユースケース1401〜1403によってあらわされる機能「パケットを受信する」、「初期化する」および「パケットを送信する」を備えている。また、ユースケース図1400には、シリアル送受信システム601に関連するアクターとして、CPU1411、リセット信号1412、受信器1413および送信器1414が図表化されている。
図14に示したユースケース図1400において、ユースケース1401は、アクター1413からパケットを受信する。そして、受信したパケットをアクター1411に送信する。また、ユースケース1402は、アクター1411およびアクター1412から初期化する。さらに、ユースケース1403は、アクター1411からパケットを受信して、アクター1414に送信する。
(分析情報の内容)
つぎに、図13および図14に示した要求定義(要求項目リスト1300、ユースケース図1400)の分析結果を示す分析情報について説明する。図15は、要求定義された結果物であるシステムLSI600の分析クラス図であり、図16は、要求定義された結果物であるシステムLSI600のシーケンス図である。
図15に示した分析クラス図1500には、シリアル送受信システム601に必要なデータや手順などを管理する《control》クラス1501と、シリアル送受信システム601内部で当該システム特有の処理を担当する<Entity>クラス1502〜1508が記述されている。《control》クラス1501は、シリアス送受信システム601をあらわしている。《entity》クラス1502〜1508は、送信パケット612、受信パケット611、パケット613,614、冗長符号部1201、エラービット、ヘッダ部1101、データ部1102をあらわしている。
図15に示した分析クラス図1500において、《control》クラス1501(シリアル送受信システム601)は、アクター1414(送信器603)からパケットを送信する。また、アクター1411(CPU604)との間で送受信/初期化をおこなう。さらに、《entity》クラス1502(送信パケット612)の送信、《entity》クラス1503(受信パケット611)の受信、アクター1412(リセット信号)からの初期化をおこなう。また、《entity》クラス1503(受信パケット611)を受信したアクター1413(受信器602)からパケットを受信する。
また、図15に示した分析クラス図1500において、《entity》クラス1502(送信パケット612)は、《entity》クラス1504(パケット613,614)および《entity》クラス1505(冗長符号部1201)を集約している。また、《entity》クラス1503(受信パケット611)は、《entity》クラス1505(冗長符号部1201)および《entity》クラス1506(エラービット)を集約している。さらに、《entity》クラス1504(パケット613、614)は、《entity》クラス1507(ヘッダ部1101)および《entity》クラス1508(データ部1102)を集約している。これにより、アクター1411(CPU604)は、《entity》クラス1504(パケット613、614)の作成/受信をおこなっていることがわかる。
また、図16に示したシーケンス図1600は、パケットを正常に送信する場合の動作を示している。このシーケンス図1600では、シーケンス番号順、すなわち、シーケンス番号1.0(「パケットを作成する()」)→シーケンス番号1.1(「パケットを受信する()」)、→シーケンス番号1.2(「パケットを符号化する()」)、→シーケンス番号1.3(「送信パケットを作成する()」)、シーケンス番号1.4(「送信パケットを送信する()」)の順に送信処理がおこなわれることを示している。
つぎに、このシリアル送受信システムを含むシステムLSIの設計クラス図について説明する。図17は、シリアル送受信システムを含むシステムLSIの設計クラス図である。
この設計クラス図1700において、クラス1701は、シリアル送受信システムを示す名称「ECC_SIO」が記述されているクラス名1702と、クラス1701が持つ静的な性質を示す属性1703(メンバ変数)と、クラス1701が持つ動的な性質を示す操作1704(メンバ関数)と、を含んでいる。操作1704は、CPUを示すクラス1705と符号化を示すクラス1706に働きかけている。この図17に示した設計クラス図1700を元にして、概念モデル101の実装コードが生成される。図17に概念モデル101の実装コードの一記述例を示す。図18は、概念モデル101の実装コード1800を示す説明図である。この実装コード1800は、C++言語によってモデル化されているコードである。
(検証項目の内容)
つぎに、シリアル送受信システムを含むシステムLSIの検証項目について説明する。図19は、シリアル送受信システムを含むシステムLSIの検証項目を示す説明図である。
図19では、対象ユースケースを、図14で示したユースケース1401に着目している。この検証項目1900において、項目『シーケンス』の「基本パス」とは、パケットの正常な送信処理、すなわち、図16に示したシーケンス番号1.0〜1.1までの処理を示している。
(検証シナリオの内容)
つぎに、シリアル送受信システムを含むシステムLSIの検証シナリオについて説明する。図20は、シリアル送受信システムを含むシステムLSIの検証シナリオを示す説明図である。この検証シナリオ2000は、図15に示したシーケンス図1500と図19に示した検証項目1900を用いて生成される。
この検証シナリオ2000を用いたシミュレーションによって検出された仕様上のミスについて、例を挙げて説明する。CPUに常にエラーの通知を行っているという検証結果が得られた場合、パケット受信エラーが発生したときにシリアル送受信システムをエラー状態にしたが、次のパケットを正常に受信してもシステムがエラー状態のままとなる仕様上のミスが検出される。このため、修正処理として、CPUがエラー受信した後にシリアル送受信システムのエラー状態をクリアすることとする。これにより、仕様ミスを解消することができる。
(機能モデルの実装コード生成処理手順)
つぎに、シリアル送受信システムを含むシステムLSIの機能モデルの検証処理手順について説明する。図21は、シリアル送受信システムを含むシステムLSIの機能モデルの実装コード生成処理手順を示すフローチャートである。図21に示す処理手順は、図5のステップS503に示した処理ステップの詳細な処理手順を示している。
まず、ステップS502において生成された概念モデルの設計クラス図(図17を参照。)を、並行、並列なモジュールに分割する(ステップS2101)。図22は、図17に示した設計クラス図を分割することによって得られた分割設計クラス図を示す説明図で
ある。
図17に示した設計クラス図は、図22において、トップモジュールに関する分割設計クラス図2210と、コントローラモジュールに関する分割設計クラス図2220と、エンコーダモジュールに関する分割設計クラス図2230と、デコーダモジュールに関する分割設計クラス図2240と、に分割されている。
そして、この分割設計クラス図2210〜2240によってあらわされるモジュール間を接続する通信路を決定する(ステップS2102)。図23は、分割設計クラス図によってあらわされるモジュール間を接続する通信路を示す説明図である。
トップモジュール2301は、ポート2311〜2315を有している。このポート2311〜2315は、トップモジュールに関する分割設計クラス図2210の属性2211に記述されている。具体的には、ポート2311は「packet_i:sc_fifo_in<Packet>」を示しており、CPUからのパケット<Packet>を入力する入力ポートである。ポート2312は「packet_o:sc_fifo_out<Packet>」を示しており、パケット<Packet>をCPUに出力する出力ポートである。ポート2313は「error_o:sc_fifo_out<ERR_TYPE>」を示しており、エラータイプ情報<ERR_TYPE>をCPUに出力する出力ポートである。
また、ポート2314は「encoded_packet_o:sc_fifo_out<EncodedPacket>」を示しており、符号化されたパケット<EncodedPacket>を出力する出力ポートである。ポート2315は「received_packet_i:sc_fifo_in<ReceivedPacket>」を示しており、外部から受信されたパケット<ReceivedPacket>を入力する入力ポートである。
コントローラモジュール2302は、ポート2321〜2327を有している。このポート2321〜2327は、コントローラモジュール2302に関する分割設計クラス図2220の属性2221に記述されている。具体的には、ポート2321は「cpu_packet_i:sc_fifo_in<Packet>」を示しており、CPUからのパケット<Packet>を入力する入力ポートである。ポート2322は「cpu_packet_o:sc_fifo_out<Packet>」を示しており、パケット<Packet>をCPUに出力する出力ポートである。ポート2323は「error_o:sc_fifo_out<ERR_TYPE>」を示しており、エラータイプ情報<ERR_TYPE>をCPUに出力する出力ポートである。
また、ポート2324は「encoder_packet_o:sc_fifo_out<Packet>」を示しており、パケット<Packet>をエンコーダモジュールに出力する出力ポートである。ポート2325は「encoder_status_i:sc_fifo_in<bool>」を示しており、エンコーダモジュール2303
のステータス情報<bool>を入力する入力ポートである。ポート2326は「decoder_packet_i:sc_fifo_in<Packet>」を示しており、デコーダモジュールからパケット<Packet>を入力する入力ポートである。ポート2327は「decoder_error_i:sc_fifo_in<ERR_TYPE>」を示しており、デコーダモジュールからエラータイプ情報<ERR_TYPE>を入力する入力ポートである。
エンコーダモジュール2303は、ポート2331〜2333を有している。このポート2331〜2333は、エンコーダモジュール2303に関する分割設計クラス図2230の属性2231に記述されている。具体的には、ポート2331は「packet_i:sc_fifo_in_if<Packet>」を示しており、パケット<Packet>を入力する入力ポートである。ポート2332は「status_o:sc_fifo_out<bool>」を示しており、エンコーダモジュール2303のステータス情報<bool>を出力する出力ポートである。ポート2333は「packet_o:sc_fifo_out_if<EncodedPacket>」を示しており、エンコーダモジュール2303によって符号化されたパケット<EncodedPacket>を出力する出力ポートである。
デコーダモジュール2304は、ポート2341〜2343を有している。このポート2341〜2343は、デコーダモジュール2304に関する分割設計クラス図2240の属性2241に記述されている。具体的には、ポート2341は「packet_o:sc_fifo_out<Packet>」を示しており、パケット<Packet>を出力する出力ポートである。ポート2342は「error_o:sc_fifo_out<ERR_TYPE>」を示しており、エラータイプ情報<ERR_TYPE>を出力する出力ポートである。ポート2343は「packet_i:sc_fifo_in<ReceivedPacket>」を示しており、受信されたパケット<ReceivedPacket>を入力する入力ポートである。
このように、分割設計クラス図2210〜2240の属性を用いて、ポート2311〜2315、ポート2321〜2327、ポート2331〜2333、ポート2341〜2343どうしを接続して、通信路2351〜2359を決定する。この通信路2351〜2359は、具体的にはFIFO方式で通信をおこなう通信路である。
また、図21において、通信路を決定した後、機能モデルの実装コードを生成する(ステップS2103)。ここで、シリアル送受信システムを含むシステムLSIの機能モデルの実装コードの生成例について説明する。図24は、シリアル送受信システムを含むシステムLSIの機能モデルの実装コードの生成例を示す説明図である。
図24では、エンコーダモジュール2303に関する分割設計クラス図2230から生成した、エンコーダモジュール2303の実装コード2400を示している。なお、図示はしないが、トップモジュールに関する分割設計クラス図2210、コントローラモジュール2302に関する分割設計クラス図2220、およびデコーダモジュール2304に関する分割設計クラス図2240についても、それぞれ実装コードを生成する。そして、図5のステップS504では、各分割設計クラス図2210〜2240の実装コードのシミュレーションを実行することとなる。
このあと、図5のステップS505において、このシミュレーション結果と、概念モデルの実装コードのシミュレーション結果との一致判定をおこない、一致する場合(ステップS505:Yes)、図22に示したモジュール分割が正当であり、また、モジュール分割の並列、並行性が正確であることとなる。
一方、一致しない場合(ステップS505:No)、図22に示したモジュール分割が正当でなく、また、モジュール分割の並列、並行性が不正確であるとして、図5のステップS506において、図21のステップS2103で生成された実装コードの修正処理をおこなう。この機能モデル検証により、概念モデルと同一の検証結果になることを確認することができる。
(シリアル送受信システムを含むシステムLSIのアーキテクチャモデル)
つぎに、シリアル送受信システムを含むシステムLSIのアーキテクチャモデルについて説明する。図25は、シリアル送受信システムを含むシステムLSIのアーキテクチャモデルのクラス図の一例を示す説明図である。アーキテクチャモデルは、バスやIPなどの既存設計の物理的なハードウェア部品をあらわすモデルであり、ここでは、バスモデルをあらわしている。
アーキテクチャモデルは、基本的に事前に用意され、検証済みのライブラリとして提供され、図25では、検証済みのバスモデルが記述されている。このように、このアーキテクチャモデルでは、既存設計の物理的なハードウェア部品を用いているため、検証をおこなう必要はない。
(シリアル送受信システムを含むシステムLSIの動作モデル)
つぎに、シリアル送受信システムを含むシステムLSIの動作モデルについて説明する。動作モデルは、上述したように、概念的に、機能モデルをアーキテクチャモデルにマッピングした結果物である。図26は、機能モデルとアーキテクチャモデルとのマッピングを示す説明図である。
図26において、機能モデル2600は、図23に示したように、外部から受信したパケットをデコーダ2602が入力して復号し、コントローラ2603に供給する。コントローラ2603は復号されたパケットをエンコーダ2604に出力し、エンコーダ2604はパケットを符号化する。
アーキテクチャモデル2610は、バスやIPなどの既存設計の物理的なハードウェア部品をあらわすモデルであり、ここでは、プロセッサ2611、メモリ2612、外部入力I/F2613、外部出力I/F2614、ハードウェア2615、ハードウェア2616、ハードウェア2617、およびこれらを接続するバス2618から構成されている。
そして、このアーキテクチャモデル2610に、機能モデル2600をマッピングする。具体的には、デコーダ2602をハードウェア2615に、コントローラ2603をハードウェア2616に、エンコーダ2604をハードウェア2617にマッピングする。この図25および図26を用いて説明した内容は、図5のステップS507に示した処理ステップに相当する内容である。
(シリアル送受信システムを含むシステムLSIの動作モデルの実装コード生成処理手順)
つぎに、シリアル送受信システムを含むシステムLSIの動作モデルの実装コード生成処理手順について説明する。図27は、シリアル送受信システムを含むシステムLSIの動作モデルの実装コード生成処理手順を示すフローチャートである。この図27に示す処理手順は、図5のステップS507に示した処理ステップの詳細な処理手順を示している。
まず、図26に示したマッピングを実現するため、図22に示した分割設計クラス図2210〜2240の属性2211〜2241内の記述を、図25に示したバスモデルの記述に置き換える(ステップS2701)。図28は、属性2211内の記述がバスモデルの記述に置き換えられた分割設計クラス図2210を示す説明図である。図28中、アンダーラインの記述箇所において、通信路が、FIFO方式の記述からバスモデルの記述に置き換えられている。
つぎに、バスモデルの記述に置き換えられた分割設計クラス図2210〜2240から、機能モデルの実装コードを生成する(ステップS2702)。そして、生成された機能モデルの実装コードに、各モジュールの見積もり処理時間を追加する(ステップS2703)。
図29は、各モジュールの見積もり処理時間の実装コードへの追加例を示す説明図である。たとえば、図29に示した図表2900により、デコーダ2602およびエンコーダ2604の見積もり処理時間を、それぞれ600[ns]とすると、機能モデルの実装コード(たとえば、図24に示した実装コード2400)に、図表2900に示した処理時間に関する記述2901を追加する。これにより、動作モデルの実装コード2902が生成される。そして、図5のステップS508では、動作モデルの実装コード2902のシミュレーションを実行することとなる。
このあと、図5のステップS508において、このシミュレーション結果と、概念モデルの実装コードのシミュレーション結果との一致判定をおこない、一致する場合(ステップS509:Yes)、動作モデルの実装コード2902のシミュレーション結果が、図13に示した要求項目リスト1300のすべての要求項目1301〜1308を満足することとなり、機能モデルとアーキテクチャモデルとのマッピングが正当であることとなる。
一方、一致しない場合(ステップS509:No)、動作モデルの実装コード2902のシミュレーション結果が、図13に示した要求項目リスト1300のすべての要求項目1301〜1308を満足しておらず、機能モデルとアーキテクチャモデルとのマッピングが正当でないこととなる。この場合、図5のステップS510において、動作モデルの実装コード2902の修正処理をおこなうこととなる。これにより、顧客が要求した動作(性能)を満足するかどうかの検証をおこなうことができる。
(シリアル送受信システムを含むシステムLSIのICAモデルの実装コード生成処理手順)
つぎに、シリアル送受信システムを含むシステムLSIのICAモデルの実装コード生成処理手順について説明する。図30は、シリアル送受信システムを含むシステムLSIのICAモデルの実装コード生成処理手順を示すフローチャートである。この図30に示す処理手順は、図5のステップS511に示した処理ステップの詳細な処理手順を示している。
ICAモデルは、上述したように、モジュール外のインターフェースについてはサイクル精度によって、モジュール内部は動作レベルによって構築したモデルである。このICAモデルを高位合成することによってRTL記述を生成する。このICAモデルでは、インターフェースの正確さの検証をおこなうことができる。
まず、通信路が決定された機能モデルの構造図から、抽象度の異なるモジュール間を通信する通信路を検出する(ステップS3001)。図31は、シリアル送受信システムを含むシステムLSIの通信路が決定された機能モデルを示す構造図である。
図31において、シリアル送受信システムは、図17に示した設計クラス図を、並行、並列なモジュールに分割された結果(図21のステップS2101を参照。)、トップモジュール2301と、CPUモジュール3101と、送信器モジュール3102と、受信器モジュール3103とが、FIFO方式の通信路3111〜3115によって接続されたシステムである。また、トップモジュール2301の内部は、図23に示した構造図と同一内容である。これらのモジュールの接続関係から、抽象度の異なるモジュール間を通信する通信路を検出する。
つぎに、検出された通信路を、インターフェースラッパに置換する(ステップS3002)。図32は、図31に示した構造図内の通信路にインターフェースラッパを挿入した構造図である。図32では、図31において、エンコーダモジュール2302の抽象度と送信器モジュール3102の抽象度が異なっているため、このモジュール2302、3102間の通信路3114をインターフェースラッパ3201に挿入し、トップモジュール2301の抽象度を変換する。
インターフェースラッパ3201は、送信器モジュール3102のトランザクションレベルのポート3102aと接続されるトランザクションレベルインターフェース3202と、トップモジュール2301に接続される2つの信号レベルポート3203,3204を備えている。このため、トランザクションレベルのポート2314を、送信レベルポート3210、3211に置き換える。
また、トップモジュール2301内部のエンコーダモジュール2303のトランザクションレベルのポート2331〜2333も、信号レベルのポート3212〜3216に置き換える。このポート変換により、コントローラモジュール2302のトランザクションレベルのポート2324、2325も、信号レベルのポート3217〜3219に変換される。
このように、エンコーダモジュール2303のポート数が変更されるため、図31に示したエンコーダモジュール2303をICAモデルのエンコーダモジュールに変換し(ステップS3003)、エンコーダモジュール2303自体の抽象度を変換する。図33は、ICAモデルのエンコーダモジュールの内部構造の一例を示す説明図である。
図33において、ICAモデルのエンコーダモジュール3300は、図31に示したエンコーダモジュール2303およびポート2331〜2333を備えている。そして、ポート2331、2332と、ポート3212〜3214との間の通信を可能とするため、各種ラッパやポートが挿入されている。同様に、ポート2333と、ポート3215、3216との間の通信も可能とするため、各種ラッパやポートが挿入されている。
このあと、ICAモデルのエンコーダモジュール3300の実装コードを生成する(ステップS3004)。図34は、ICAモデルのエンコーダモジュール3300の実装コードの一例を示す説明図である。そして、図5のステップS512では、ICAモデルの実装コード3400のシミュレーションを実行することとなる。
このあと、図5のステップS513において、ICAモデルの実装コード3400のシミュレーション結果と、概念モデルの実装コードのシミュレーション結果との一致判定をおこない、一致する場合(ステップS513:Yes)、ICAモデルの実装コード3400のシミュレーション結果が、図13に示した要求項目リスト1300のすべての要求項目1301〜1308を満足することとなり、インターフェースラッパの挿入が正当であることとなる。
一方、一致しない場合(ステップS513:No)、ICAモデルの実装コード3400のシミュレーション結果が、図13に示した要求項目リスト1300のすべての要求項目1301〜1308を満足しておらず、インターフェースラッパの挿入が正当でないこととなる。
そして、図5に示したステップS514において、ICAモデルの実装コード3400の修正処理をおこなうこととなる。これにより、インターフェースの正確さの検証をおこなうことができる。
(シリアル送受信システムを含むシステムLSIのソフトウェアモデルの実装コード生成処理手順)
つぎに、シリアル送受信システムを含むシステムLSIのソフトウェアモデルの実装コード生成処理手順について説明する。図35は、シリアル送受信システムを含むシステムLSIのソフトウェアモデルの実装コード生成処理手順を示すフローチャートである。この図35に示す処理手順は、図5のステップS516に示した処理ステップの詳細な処理手順を示している。
ソフトウェアモデルは、上述したように、シリアル送受信システムを含むシステムLSIを構成するソフトウェアのタスク分割をおこない、仮想OS上に実行するモデルである。図35において、まず、アーキテクチャモデルに機能モデルの一部をソフトウェアによりマッピングする(ステップS3501)。
図36は、アーキテクチャモデルに機能モデルの一部をソフトウェアによりマッピングをおこなった例を示す説明図である。具体的には、図26に示したように、デコーダ2602はハードウェア2615にマッピングし、エンコーダ2604はハードウェア2617にマッピングする。一方、CPU2601およびコントローラ2603は、プロセッサ2611にマッピングする。
つぎに、このマッピングにより、ソフトウェアモデルにおける設計クラス図を生成する(ステップS3502)。図37は、ソフトウェアモデルにおける設計クラス図を示す説明図である。図37において、ソフトウェアモデルにおける設計クラス図3700は、図22に示した分割設計クラス図2210〜2240を元にして生成される。
ソフトウェアモデルにおける設計クラス図3700は、トップモジュールに関する分割設計クラス図3701と、デコーダモジュールに関する分割設計クラス図3702と、エンコーダモジュールに関する分割設計クラス図3703のほかに、仮想OSモデルに関する分割設計クラス図3704を含んでいる。そして、設計クラス図3701〜3704ごとに、ソフトウェアモデルの実装コードを生成する(ステップS3503)。
このあと、図5のステップS517において、ソフトウェアモデルの実装コードのシミュレーションを実行することとなる。そして、図5のステップS518において、ソフトウェアモデルの実装コードのシミュレーション結果と、概念モデルの実装コードのシミュレーション結果との一致判定をおこなう。そして、一致する場合(ステップS518:Yes)、ソフトウェアモデルの実装コードのシミュレーション結果が、図13に示した要求項目リスト1300のすべての要求項目1301〜1308を満足することとなり、ソフトウェアのタスク分割が正当であることとなる。
一方、一致しない場合(ステップS518:No)、ソフトウェアモデルの実装コードのシミュレーション結果が、図13に示した要求項目リスト1300のすべての要求項目1301〜1308を満足しておらず、ソフトウェアのタスク分割が正当でないこととなる。
そして、図5に示したステップS519において、ソフトウェアモデルの実装コードの修正処理をおこなうこととなる。これにより、ソフトウェアのタスク分割の正確さの検証をおこなうことができる。
この発明の実施の形態にかかる検証支援装置および検証支援方法によれば、仕様リスクの早期回避を図ることができる。具体的には、顧客要求をUMLで分析した上で、実行可能なモデルを用いて顧客の機能要求に満足するかどうかを検証することができ、仕様の誤解やミスを早期に発見することができ、誤った仕様に基づくシステムLSIの設計を防止することができる。
また、この発明の実施の形態にかかる検証支援装置および検証支援方法によれば、シミュレーションスピードネックの解決を図ることができる。具体的には、従来の検証手法ではRTLのシミュレータを用いてシミュレーションおこなうため、シミュレーション速度が非常に遅いという問題があったが、この実施の形態では、より抽象度の高いモデルを用いてシミュレーションを実行するため、RTLのシミュレータに比べて数百倍の速度でシミュレーションを実行することができる。したがって、このシミュレーション速度の向上により、検証作業を含めた設計期間の短縮化を図ることができる。
さらに、この発明の実施の形態にかかる検証支援装置および検証支援方法によれば、コストの削減を図ることができる。具体的には、従来の検証手法では大規模なLSIの場合に高価なエミュレータを導入する必要があったが、この発明の実施の形態では、抽象度の高いモデルの検証によりエミュレータの利用頻度を大幅に減少することができ、コストの削減を図ることができる。また、エミュレータの利用は基本的に時間単位でお金に換算されるケースが多いため、検証時間の短縮化によって費用の低減を図ることができる。
また、この発明の実施の形態にかかる検証支援装置および検証支援方法によれば、早期仕様のミスをなくすことによって検証工程の短縮化を図ることができる。
また、従来手法に対するより効果的な改善点として、従来手法ではRTLが完成されていないと検証工程をおこなうことができなかったが、この発明の実施の形態では、設計の初期の段階から検証を開始することができる。また、設計の詳細度に応じて各モデルに対してその正当性を検証することができる。これにより、従来における設計終了⇒検証スタートという手法に対して、大幅の設計工程の短縮化を図ることができる。
さらに、この発明の実施の形態にかかる検証支援装置および検証支援方法によれば、定量的なアーキテクチャ評価をおこなうことができる。具体的には、従来手法ではRTLのHDLを完成しない限り、性能評価できないという問題点があったが、RTLのHDLを完成してから性能に満足しないという理由で設計変更をおこなうと、非常に高いコストがかかることとなる。
これに対し、この発明の実施の形態では、早期の段階でRTLによる抽象度の高い動作モデルに対してラフな性能(動作)を見積ることができ、性能(動作)に満足しないというリスクの低減を図ることができる。
また、上述した具体例では、シリアル送受信システムを含むシステムLSIを例に挙げて説明したが、このシステムLSIには限定されることはなく、各種システムLSIに適用することができる。
なお、この実施の形態で説明した検証支援方法は、予め用意されたプログラムをパーソナル・コンピュータやワークステーション、CAD等のコンピュータで実行することにより実現することができる。このプログラムは、ハードディスク、フレキシブルディスク、CD−ROM、MO、DVD等のコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行される。またこのプログラムは、インターネット等のネットワークを介して配布することが可能な伝送媒体であってもよい。
以上のように本発明は、たとえば、LSIの設計データの検証をおこなうシステムやツールを提供することに適している。
この発明の実施の形態にかかる検証支援の概念図である。 図1に示した各モデルの抽象度をあらわすグラフである。 この発明の実施の形態にかかる検証支援装置のハードウェア構成を示すブロック図である。 この発明の実施の形態にかかる検証支援装置の機能的構成を示すブロック図である。 この発明の実施の形態にかかる検証支援装置の検証支援処理手順を示すフローチャートである。 この発明の実施の形態にかかる設計対象を含むシステムLSIのハードウェア構成を示すブロック図である。 外部装置のインターフェースであるバスの仕様(ライト時のタイミングチャート)を示す説明図である。 外部装置のインターフェースであるバスの仕様(リード時のタイミングチャート)を示す説明図である。 外部装置のインターフェースである送信器の仕様を示す説明図である。 外部装置のインターフェースである受信器の仕様を示す説明図である。 CPUで送受信されるパケットの構成を示す説明図である。 送信パケットの構成を示す説明図である。 要求定義であるシステムLSIの要求項目リストを示す説明図である。 要求定義であるシステムLSIのユースケース図である。 要求定義された結果物であるシステムLSIの分析クラス図である。 要求定義された結果物であるシステムLSIのシーケンス図である。 シリアル送受信システムを含むシステムLSIの設計クラス図である。 概念モデルの実装コードを示す説明図である。 シリアル送受信システムを含むシステムLSIの検証項目を示す説明図である。 シリアル送受信システムを含むシステムLSIの検証シナリオを示す説明図である。 シリアル送受信システムを含むシステムLSIの機能モデルの実装コード生成処理手順を示すフローチャートである。 図17に示した設計クラス図を分割することによって得られた分割設計クラス図を示す説明図である。 分割設計クラス図によってあらわされるモジュール間を接続する通信路を示す説明図である。 シリアル送受信システムを含むシステムLSIの機能モデルの実装コードの生成例を示す説明図である。 シリアル送受信システムを含むシステムLSIのアーキテクチャモデルのクラス図の一例を示す説明図である。 機能モデルとアーキテクチャモデルとのマッピングを示す説明図である。 シリアル送受信システムを含むシステムLSIの動作モデルの実装コード生成処理手順を示すフローチャートである。 属性内の記述がバスモデルの記述に置き換えられた分割設計クラス図を示す説明図である。 各モジュールの見積もり処理時間の実装コードへの追加例を示す説明図である。 シリアル送受信システムを含むシステムLSIのICAモデルの実装コード生成処理手順を示すフローチャートである。 シリアル送受信システムを含むシステムLSIの通信路が決定された機能モデルを示す構造図である。 図31に示した構造図内の通信路にインターフェースラッパを挿入した構造図である。 ICAモデルのエンコーダモジュールの内部構造の一例を示す説明図である。 ICAモデルのエンコーダモジュールの実装コードの一例を示す説明図である。 シリアル送受信システムを含むシステムLSIのソフトウェアモデルの実装コード生成処理手順を示すフローチャートである。 アーキテクチャモデルに機能モデルの一部をソフトウェアによりマッピングをおこなった例を示す説明図である。 ソフトウェアモデルにおける設計クラス図を示す説明図である。 従来のLSIの開発処理手順を示すフローチャートである。
符号の説明
100 要求仕様
101 概念モデル
102 機能モデル
103 アーキテクチャモデル
104 動作モデル
105 ICAモデル
106 ソフトウェアモデル
401 分析情報入力部
402 概念モデル生成部
403 機能モデル生成部
404 機能モデル検証部
405 アーキテクチャ情報記憶部
406 アーキテクチャ情報抽出部
407 動作モデル生成部
408 動作モデル検証部
409 ICAモデル生成部
410 ICAモデル検証部
411 ソフトウェアモデル生成部
412 ソフトウェアモデル検証部

Claims (13)

  1. LSIの設計対象に関する要求仕様の分析結果を示す分析情報の入力を受け付ける分析情報入力手段と、
    前記分析情報入力手段によって入力された分析情報に基づいて、前記設計対象の基本機能がモデル化され、かつ、前記設計対象の物理的なアーキテクチャおよび時間の概念が抽象化された概念モデルを生成する概念モデル生成手段と、
    前記分析情報入力手段によって入力された分析情報に基づいて、前記設計対象を構成するモジュールの分割、および分割されたモジュールの並行または並列性を抽出することによってモデル化された機能モデルを生成する機能モデル生成手段と、
    前記機能モデル生成手段によって生成された機能モデルについて、前記設計対象を構成するモジュールの分割、および分割されたモジュールの並行または並列性が正当であるかどうかを、前記概念モデル生成手段によって生成された概念モデルに基づいて検証する機能モデル検証手段と、
    を備えることを特徴とする検証支援装置。
  2. 複数種類の物理的なアーキテクチャに関する情報を記憶する記憶手段と、
    前記機能モデル検証手段によって正当であることが検証された場合、前記記憶手段から任意のアーキテクチャに関する情報を抽出する抽出手段と、
    前記抽出手段によって抽出されたアーキテクチャに関する情報を、前記機能モデル検証手段によって正当であることが検証された機能モデルにマッピングすることにより、前記設計対象の動作をモデル化した動作モデルを生成する動作モデル生成手段と、
    前記動作モデル生成手段によって生成された動作モデルによりモデル化された設計対象を構成するモジュールの動作タイミングが、正当であるかどうかを検証する動作モデル検証手段と、
    を備えることを特徴とする請求項1に記載の検証支援装置。
  3. 前記動作モデル検証手段によって正当であることが検証された場合、前記機能モデルによってモデル化された設計対象を構成するモジュール間の抽象度が異なる箇所に、当該モジュール間に所定のクロックサイクル精度のインターフェースを挿入することによりICAモデルを生成するICAモデル生成手段と、
    前記ICAモデル生成手段によって生成されたICAモデルに挿入されたインターフェースのクロックサイクル精度が正当であるかどうかを、前記概念モデル生成手段によって生成された概念モデルに基づいて検証するICAモデル検証手段と、
    を備えることを特徴とする請求項2に記載の検証支援装置。
  4. 前記動作モデル検証手段によって正当であることが検証された場合、前記機能モデルによってモデル化された設計対象に基づいて、ソフトウェアによって実行可能なタスクを含むようにモデル化されたソフトウェアモデルを生成するソフトウェアモデル生成手段と、
    前記ソフトウェアモデル生成手段によって生成されたソフトウェアモデルに含まれているタスクが正当であるかどうかを、前記概念モデル生成手段によって生成された概念モデルに基づいて検証するソフトウェアモデル検証手段と、
    を備えることを特徴とする請求項2または3に記載の検証支援装置。
  5. LSIの設計対象に関する要求仕様の分析結果を示す分析情報を入力する分析情報入力工程と、
    前記分析情報入力工程によって入力された分析情報に基づいて、前記設計対象の基本機能がモデル化され、かつ、前記設計対象の物理的なアーキテクチャおよび時間の概念が抽象化された概念モデルを生成する概念モデル生成工程と、
    前記分析情報入力工程によって入力された分析情報に基づいて、前記設計対象を構成するモジュールの分割、および分割されたモジュールの並行または並列性を抽出することによってモデル化された機能モデルを生成する機能モデル生成工程と、
    前記機能モデル生成工程によって生成された機能モデルについて、前記設計対象を構成するモジュールの分割、および分割されたモジュールの並行または並列性が正当であるかどうかを、前記概念モデル生成工程によって生成された概念モデルに基づいて検証する機能モデル検証工程と、
    を含んだことを特徴とする検証支援方法。
  6. 前記機能モデル検証工程によって正当であることが検証された場合、複数種類の物理的なアーキテクチャに関する情報の中から、任意のアーキテクチャに関する情報を抽出する抽出工程と、
    前記抽出工程によって抽出されたアーキテクチャに関する情報を、前記機能モデル検証工程によって正当であることが検証された機能モデルにマッピングすることにより、前記設計対象の動作をモデル化した動作モデルを生成する動作モデル生成工程と、
    前記動作モデル生成工程によって生成された動作モデルによりモデル化された設計対象を構成するモジュールの動作タイミングが、正当であるかどうかを検証する動作モデル検証工程と、
    を含んだことを特徴とする請求項5に記載の検証支援方法。
  7. 前記動作モデル検証工程によって正当であることが検証された場合、前記機能モデルによってモデル化された設計対象を構成するモジュール間の抽象度が異なる箇所に、当該モジュール間に所定のクロックサイクル精度のインターフェースを挿入することによりICAモデルを生成するICAモデル生成工程と、
    前記ICAモデル生成工程によって生成されたICAモデルに挿入されたインターフェースのクロックサイクル精度が正当であるかどうかを、前記概念モデル生成工程によって生成された概念モデルに基づいて検証するICAモデル検証工程と、
    を含んだことを特徴とする請求項6に記載の検証支援方法。
  8. 前記動作モデル検証工程によって正当であることが検証された場合、前記機能モデルによってモデル化された設計対象に基づいて、ソフトウェアによって実行可能なタスクを含むようにモデル化されたソフトウェアモデルを生成するソフトウェアモデル生成工程と、
    前記ソフトウェアモデル生成工程によって生成されたソフトウェアモデルに含まれているタスクが正当であるかどうかを、前記概念モデル生成工程によって生成された概念モデルに基づいて検証するソフトウェアモデル検証工程と、
    を含んだことを特徴とする請求項6または7に記載の検証支援方法。
  9. LSIの設計対象に関する要求仕様の分析結果を示す分析情報を入力させる分析情報入力工程と、
    前記分析情報入力工程によって入力された分析情報に基づいて、前記設計対象の基本機能がモデル化され、かつ、前記設計対象の物理的なアーキテクチャおよび時間の概念が抽象化された概念モデルを生成させる概念モデル生成工程と、
    前記分析情報入力工程によって入力された分析情報に基づいて、前記設計対象を構成するモジュールの分割、および分割されたモジュールの並行または並列性を抽出することによってモデル化された機能モデルを生成させる機能モデル生成工程と、
    前記機能モデル生成工程によって生成された機能モデルについて、前記設計対象を構成するモジュールの分割、および分割されたモジュールの並行または並列性が正当であるかどうかを、前記概念モデル生成工程によって生成された概念モデルに基づいて検証させる機能モデル検証工程と、
    をコンピュータに実行させることを特徴とする検証支援プログラム。
  10. 前記機能モデル検証工程によって正当であることが検証された場合、複数種類の物理的なアーキテクチャに関する情報の中から、任意のアーキテクチャに関する情報を抽出させる抽出工程と、
    前記抽出工程によって抽出されたアーキテクチャに関する情報を、前記機能モデル検証工程によって正当であることが検証された機能モデルにマッピングすることにより、前記設計対象の動作をモデル化した動作モデルを生成させる動作モデル生成工程と、
    前記動作モデル生成工程によって生成された動作モデルによりモデル化された設計対象を構成するモジュールの動作タイミングが、正当であるかどうかを検証させる動作モデル検証工程と、
    を含んだことを特徴とする請求項9に記載の検証支援プログラム。
  11. 前記動作モデル検証工程によって正当であることが検証された場合、前記機能モデルによってモデル化された設計対象を構成するモジュール間の抽象度が異なる箇所に、当該モジュール間に所定のクロックサイクル精度のインターフェースを挿入することによりICAモデルを生成させるICAモデル生成工程と、
    前記ICAモデル生成工程によって生成されたICAモデルに挿入されたインターフェースのクロックサイクル精度が正当であるかどうかを、前記概念モデル生成工程によって生成された概念モデルに基づいて検証させるICAモデル検証工程と、
    を含んだことを特徴とする請求項10に記載の検証支援プログラム。
  12. 前記動作モデル検証工程によって正当であることが検証された場合、前記機能モデルによってモデル化された設計対象に基づいて、ソフトウェアによって実行可能なタスクを含むようにモデル化されたソフトウェアモデルを生成させるソフトウェアモデル生成工程と、
    前記ソフトウェアモデル生成工程によって生成されたソフトウェアモデルに含まれているタスクが正当であるかどうかを、前記概念モデル生成工程によって生成された概念モデルに基づいて検証させるソフトウェアモデル検証工程と、
    を含んだことを特徴とする請求項10または11に記載の検証支援プログラム。
  13. 請求項9〜12のいずれか一つに記載の検証支援プログラムを記録したコンピュータ読取り可能な記録媒体。
JP2006527616A 2004-07-01 2004-07-01 検証支援装置、検証支援方法、および検証支援プログラム Pending JPWO2006003702A1 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2004/009340 WO2006003702A1 (ja) 2004-07-01 2004-07-01 検証支援装置、検証支援方法、検証支援プログラムおよび記録媒体

Publications (1)

Publication Number Publication Date
JPWO2006003702A1 true JPWO2006003702A1 (ja) 2008-04-17

Family

ID=35782519

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2006527616A Pending JPWO2006003702A1 (ja) 2004-07-01 2004-07-01 検証支援装置、検証支援方法、および検証支援プログラム

Country Status (5)

Country Link
US (1) US7640521B2 (ja)
EP (1) EP1770562A4 (ja)
JP (1) JPWO2006003702A1 (ja)
CN (1) CN1981288A (ja)
WO (1) WO2006003702A1 (ja)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8296739B2 (en) * 2008-03-31 2012-10-23 International Business Machines Corporation Testing soft error rate of an application program
JP5262909B2 (ja) * 2009-03-27 2013-08-14 富士通株式会社 検証支援プログラム、検証支援装置および検証支援方法
JP5434261B2 (ja) * 2009-05-21 2014-03-05 富士通株式会社 クラス図分割支援装置
FR2964224A1 (fr) * 2010-08-24 2012-03-02 Thales Sa Procede et dispositif de deploiement et d'aide au deploiement de composants formant un systeme temps reel embarque
US8972928B2 (en) * 2011-08-30 2015-03-03 Uniquesoft, Llc System and method for generating application code
CN104516992B (zh) * 2013-09-27 2017-12-01 华为技术有限公司 一种验证方法及装置
US10853536B1 (en) * 2014-12-11 2020-12-01 Imagars Llc Automatic requirement verification engine and analytics
US10387788B2 (en) * 2016-02-18 2019-08-20 Linkedin Corporation Graph based techniques for predicting results
CN112949234A (zh) * 2021-04-14 2021-06-11 山东高云半导体科技有限公司 Fpga物理模型的软件建模方法及装置

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2003288378A (ja) * 2002-03-28 2003-10-10 Cats Kk システムlsi設計支援プログラム、システムlsi制御回路およびpc用集積回路

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6789054B1 (en) * 1999-04-25 2004-09-07 Mahmoud A. Makhlouf Geometric display tools and methods for the visual specification, design automation, and control of adaptive real systems
US7085688B1 (en) * 1999-10-22 2006-08-01 Shizuo Sumida Non-linear characteristic reproducing apparatus and non-linear characteristic reproducing program storage medium
US7356786B2 (en) * 1999-11-30 2008-04-08 Synplicity, Inc. Method and user interface for debugging an electronic system
KR20000023961A (ko) * 1999-12-22 2000-05-06 김정태 정보 모델링방법 및 데이터베이스 검색시스템
JP3897948B2 (ja) * 2000-02-14 2007-03-28 富士通株式会社 支援システムおよび支援プログラムを記録したコンピュータ読み取り可能な記録媒体
JP2003526152A (ja) * 2000-03-09 2003-09-02 コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ 複雑システムを開発する方法
US7389208B1 (en) * 2000-06-30 2008-06-17 Accord Solutions, Inc. System and method for dynamic knowledge construction
US7234126B2 (en) * 2000-08-23 2007-06-19 Interuniversitair Microelektronica Centrum Task concurrency management design method
JP4743944B2 (ja) * 2000-08-25 2011-08-10 鎮男 角田 シミュレーションモデル作成方法及びそのシステムと記憶媒体
JP4088439B2 (ja) * 2000-12-28 2008-05-21 富士通株式会社 論理装置の動作シミュレーション方法並びに論理装置の動作シミュレーションプログラム及び同プログラムを記録したコンピュータ読み取り可能な記録媒体
US20020124085A1 (en) * 2000-12-28 2002-09-05 Fujitsu Limited Method of simulating operation of logical unit, and computer-readable recording medium retaining program for simulating operation of logical unit
EP1679626A4 (en) * 2003-10-31 2006-12-13 Fujitsu Ltd DEVICE, METHOD AND PROGRAM FOR DESIGN SUPPORT AND RECORDING MEDIUM
JP4001584B2 (ja) * 2004-02-26 2007-10-31 松下電器産業株式会社 シミュレーション装置
US7469201B2 (en) * 2005-06-17 2008-12-23 Dspace Digital Signal Processing And Control Engineering Gmbh Process and means for block-based modeling
JP4445480B2 (ja) * 2006-03-23 2010-04-07 富士通株式会社 シナリオ生成方法、シナリオ生成プログラム、シナリオ生成装置

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2003288378A (ja) * 2002-03-28 2003-10-10 Cats Kk システムlsi設計支援プログラム、システムlsi制御回路およびpc用集積回路

Also Published As

Publication number Publication date
CN1981288A (zh) 2007-06-13
WO2006003702A1 (ja) 2006-01-12
EP1770562A4 (en) 2009-08-26
EP1770562A1 (en) 2007-04-04
US20070106490A1 (en) 2007-05-10
US7640521B2 (en) 2009-12-29

Similar Documents

Publication Publication Date Title
US7640521B2 (en) Model verification support method, apparatus, and computer-readable recording medium storing program
US8326592B2 (en) Method and system for verifying electronic designs having software components
US8539405B2 (en) Method and system for implementing top down design and verification of an electronic design
US20060190860A1 (en) Method and system for debugging using replicated logic and trigger logic
CN101842789A (zh) 用于存储器抽象和使用该存储器抽象来验证的方法和装置
EP1913410B1 (en) Method and system for debug and test using replicated logic
US8560983B2 (en) Incorporating synthesized netlists as subcomponents in a hierarchical custom design
KR101770292B1 (ko) 컴퓨터 수행 가능한 모델 역공학 방법 및 장치
JP4759392B2 (ja) 検証支援プログラム、該プログラムを記録した記録媒体、検証支援装置、および検証支援方法
JP4481762B2 (ja) 論理検証装置、論理検証方法、論理検証プログラムおよび記録媒体
US8312400B2 (en) Verification supporting system
JP7036814B2 (ja) デバッギングシステム及び方法
Bunker et al. Formal hardware specification languages for protocol compliance verification
JP5262909B2 (ja) 検証支援プログラム、検証支援装置および検証支援方法
US7207015B1 (en) Translation of an electronic integrated circuit design into hardware
US20120209583A1 (en) Computer product, verification support apparatus, and verification support method
US6668359B1 (en) Verilog to vital translator
JP2000259445A (ja) ソフトウェア/ハードウェア協調シミュレーション方法
Kebaili et al. Enabler-based synchronizer model for clock domain crossing static verification
US20090319983A1 (en) Intellectual property model creating apparatus, intellectual property model creating method, and computer product
Madisetti et al. On upgrading legacy electronics systems: methodology, enabling technologies and tools
Grimm et al. Semiformal verification of software-controlled connections
Hokkinen Rapid high-level behavioral modeling of soc communication interfaces
Kaja et al. Modelling Peripheral Designs using FSM-like Notation for Complete Property Set Generation
Ussery et al. Verification of large systems in silicon

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20100316

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20100914