JP2008117136A - 検証支援プログラム、記録媒体、検証支援装置および検証支援方法 - Google Patents

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

Info

Publication number
JP2008117136A
JP2008117136A JP2006299196A JP2006299196A JP2008117136A JP 2008117136 A JP2008117136 A JP 2008117136A JP 2006299196 A JP2006299196 A JP 2006299196A JP 2006299196 A JP2006299196 A JP 2006299196A JP 2008117136 A JP2008117136 A JP 2008117136A
Authority
JP
Japan
Prior art keywords
data
module
input
design
divided data
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.)
Withdrawn
Application number
JP2006299196A
Other languages
English (en)
Inventor
Takashi Matsuura
隆 松浦
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 JP2006299196A priority Critical patent/JP2008117136A/ja
Publication of JP2008117136A publication Critical patent/JP2008117136A/ja
Withdrawn legal-status Critical Current

Links

Images

Abstract

【課題】論理意図を類推不能でかつ、不具合を再現可能なHDLデータを自動的に生成する。
【解決手段】HDLファイル一覧のうち、論理を特定するための名称を類推不能に変更するとともに、コメントを削除する。そして、変更後におけるHDLファイル一覧から、不具合の再現に最低限必要となるモジュールを特定する。つぎに、特定されたモジュール内の論理のうち、不具合の再現に必要のない論理を削除し、不具合を再現可能なHDLデータを自動的に生成する。
【選択図】図1

Description

この発明は、設計ツールの実行時における不具合を特定する検証支援プログラム、記録媒体、検証支援装置および検証支援方法に関する。
近年、LSIの大規模化、高機能化および高速化にともない、LSI設計では、EDA(Electronic Design Automation)ツールを利用したトップダウン設計がおこなわれている。EDAツールとは、LSIの設計を支援するソフトウェアの総称であり、たとえば、記述スタイルチェック、論理検証ツール、等価検証ツール、回路シミュレータ、論理合成ツールおよびレイアウトツールなどがある。
EDAツールを実行するときには、インターナルエラー、セグメンテーションフォルトおよびメモリオーバーフローなどによる異常終了や、処理結果が誤っているなどの障害による不具合の発生によって所望の実行結果を得られない場合がある。このような場合、ツール作成者(たとえば、EDAベンダ)に対して、不具合が発生するEDAツールの修正を依頼する必要がある。
通常、EDAツールの修正には、不具合を再現することができる再現データ(HDLを含む再現環境)が必要となる。しかしながら、ツール実行に使用されるHDLが実データである場合には、機密保持の関係上そのままのHDLをEDAベンダなどに送付することができない。
このため、実データのうち、不具合を再現することができる記述部分を抽出し、論理回路の意図が判別できないようにHDLを改変する必要がある。HDLの改変作業は、実データ内の細部の論理関係を明らかにしながら設計者の手作業によっておこなわれている。
また、実データを、アルゴリズム記述およびRTレベル記述の中間レベルの言語に変換することにより、実データの記述内容を抽象化する技術が提供されている(たとえば、下記特許文献1参照。)。設計者は、記述内容が抽象化された実データを再現データとしてEDAベンダに、EDAツールの修正を依頼する。
特開2001−109788号公報
しかしながら、上述した従来技術では、設計者の手作業による試行錯誤を繰り返すことによって、不具合を再現可能な再現データへの改変作業がおこなわれていた。このため、改変作業に多大な作業時間を費やすこととなり、設計期間の長期化および作業労力の増大につながるという問題があった。
また、実データを、アルゴリズム記述とRTレベル記述の中間レベルの言語に変換することによって記述内容を抽象化した場合であっても、実データ内の論理構造がそのままの状態で維持されているため、第三者に論理意図を類推される可能性があるという問題があった。
この発明は、上述した従来技術による問題点を解消するため、不具合を再現可能でかつ、第三者によって論理意図が類推不能な再現データへの改変作業にかかる作業時間の短縮および作業労力の軽減を図ることにより、設計期間の短縮化を実現することができる検証支援プログラム、記録媒体、検証支援装置および検証支援方法を提供することを目的とする。
上述した課題を解決し、目的を達成するため、この発明にかかる検証支援プログラム、記録媒体、検証支援装置および検証支援方法は、ハードウェア記述言語によって記述された設計データの入力を受け付け、入力された設計データを、当該設計データを構成するモジュールごとに分割することによって、複数の分割データを生成し、生成された複数の分割データを設計ツールに与えた結果、当該複数の分割データのうち不具合が発生する分割データを特定し、特定された分割データを出力することを特徴とする。
この発明によれば、設計データを設計ツールに与えた際に発生する不具合の再現に最低限必要となるモジュールを自動的に特定することができる。
また、上記発明において、特定された分割データ内の入出力信号によって接続される複数の論理ブロックのうち、一部の論理ブロックが欠落した回路データを生成し、生成された回路データを前記設計ツールに与えた結果、前記欠落した論理ブロックを前記不具合が発生しない論理ブロックに決定し、前記欠落した論理ブロックが前記不具合が発生しない論理ブロックに決定された場合、前記回路データを出力することとしてもよい。
この発明によれば、設計データを設計ツールに与えた際に発生する不具合の再現に最低限必要となる論理ブロックを自動的に特定することができる。
また、上記発明において、特定された複数の分割データを、当該分割データ同士で結合させることによって、結合データを生成し、生成された結合データ内の入出力信号によって接続される複数の論理ブロックのうち、一部の論理ブロックが欠落した回路データを生成することとしてもよい。
この発明によれば、不具合の再現に最低限必要となる論理ブロックを特定する際の処理を簡略化することができる。
また、上記発明において、入力された設計データ内の論理を特定するための名称を、類推不能な名称に変更し、名称が変更された設計データを、当該設計データを構成するモジュールごとに分割することによって、複数の分割データを生成することとしてもよい。
この発明によれば、設計データ内に表現されている論理意図を類推困難にすることができる。
また、上記発明において、入力された設計データ内のコメントを削除し、コメントが削除された設計データを、当該設計データを構成するモジュールごとに分割することによって、複数の分割データを生成することとしてもよい。
この発明によれば、設計データ内に表現されている論理意図を類推困難にすることができる。
また、この発明にかかる、検証支援プログラム、記録媒体、検証支援装置および検証支援方法は、ハードウェア記述言語によって記述された設計データの入力を受け付け、入力された設計データを構成する階層モジュールのうち、最上位のモジュールを除く他のモジュールの中から任意のモジュールを選択し、前記最上位のモジュールと、前記他のモジュールのうち選択されたモジュール(以下、「選択モジュール」という)を除く残余のモジュールと、前記選択モジュール内の入出力信号に関する記述からなる記述データと、からなる合成データを生成し、生成された合成データを設計ツールに与えた結果、前記選択モジュールを不具合が発生するモジュールに決定し、前記選択モジュールが前記不具合が発生するモジュールに決定された場合、前記合成データを出力することを特徴とする。
この発明によれば、設計データを設計ツールに与えた際に発生する不具合の再現に最低限必要となるモジュールを自動的に特定することができる。
また、上記発明において、前記合成データ内の入出力信号によって接続される複数の論理ブロックのうち、一部の論理ブロックが欠落した回路データを生成し、生成された回路データを前記設計ツールに与えた結果、前記欠落した論理ブロックを前記不具合が発生しない論理ブロックに決定し、前記欠落した論理ブロックが前記不具合が発生しない論理ブロックに決定された場合、前記回路データを出力することとしてもよい。
この発明によれば、設計データを設計ツールに与えた際に発生する不具合の再現に最低限必要となる論理ブロックを自動的に特定することができる。
また、上記発明において、入力された設計データ内の論理を特定するための名称を、類推不能な名称に変更し、名称が変更された設計データを構成する階層モジュールのうち、最上位のモジュールを除く他のモジュールの中から任意のモジュールを選択することとしてもよい。
この発明によれば、設計データ内に表現されている論理意図を類推困難にすることができる。
また、上記発明において、入力された設計データ内のコメントを削除し、コメントが削除された設計データを構成する階層モジュールのうち、最上位のモジュールを除く他のモジュールの中から任意のモジュールを選択することとしてもよい。
この発明によれば、設計データ内に表現されている論理意図を類推困難にすることができる。
本発明にかかる検証支援プログラム、記録媒体、検証支援装置および検証支援方法によれば、不具合を再現可能でかつ、第三者によって論理意図が類推不能な再現データへの改変作業にかかる作業時間の短縮および作業労力の軽減を図ることにより、設計期間の短縮化を実現することができるという効果を奏する。
以下に添付図面を参照して、この発明にかかる検証支援プログラム、記録媒体、検証支援装置および検証支援方法の好適な実施の形態を詳細に説明する。
(実施の形態1)
(検証支援システムの概要)
まず、この発明の実施の形態1にかかる検証支援システムの概要について説明する。図1は、この発明の実施の形態1にかかる検証支援システムの概要を示す説明図である。図1に示す検証支援システムにおいて、まず、HDLファイル一覧を後述する検証支援装置に入力する。
HDLファイルとは、HDL(VHDL、Verilogなど)により記述されたデータである。具体的には、HDLファイルは、RTL(Register Transfer Level)やネットリストなどの論理回路データである。
LSI設計においては、EDAツールを利用したトップダウン設計をおこなうことによって設計作業の効率化が図られている。具体的には、各種HDLファイルに対してEDAツールを実行することにより、LSI設計の各工程における設計作業を自動的におこなっている。ここで、EDAツール(以下「ツール」という)とは、LSI設計を支援するソフトウェアの総称であり、論理検証ツール、等価検証ツール、回路シミュレータおよび論理合成ツールなどの設計ツールのことである。
LSI設計において利用されるツールは、EDAベンダなどの第三者から購入したものであることが多い。このため、HDLファイルに対してツールを実行したときに、何らかの原因によって不具合が発生した場合には、EDAベンダにツールの修正依頼をおこなう必要がある。
通常、ツールの修正には、不具合を再現することができる再現データが必要となる。しかしながら、ツール実行に使用されるHDLが実データの場合には、機密保持の関係上そのままのHDLをEDAベンダに送付することができない。そこで、不具合を再現するために最低限必要なデータに改変し、そのデータを再現データとしてEDAベンダに送付する。
まず、HDLファイル一覧のうち、モジュール名、インスタンス名およびレジスタ名などの名称を一律(たとえば、固定名_追番)に変更するとともに、コメントを削除する。なぜなら、名前やコメントなどからHDLファイルに記述された論理回路の機能を、EDAベンダなどの第三者に類推されることを防ぐためである。
そして、記述内容が変更されたHDLファイル一覧から、不具合の原因となるモジュールを特定する。具体的には、HDLファイル一覧から、不具合の再現に最低限必要となるモジュールを特定する。つぎに、特定されたモジュールに記述されている論理のうち、不具合の再現に必要のない論理を削除することにより、第三者によって論理意図を判別することができないようなデータに自動的に改変する。
このように、不具合を再現可能でかつ、第三者によって論理意図が類推不能な再現データへの改変作業を自動的におこなうことにより、改変作業にかかる作業時間の短縮および作業労力の軽減を図ることができる
(検証支援装置のハードウェア構成)
つぎに、検証支援装置のハードウェア構成について説明する。図2は、この発明の実施の形態1にかかる検証支援装置のハードウェア構成を示すブロック図である。図2において、検証支援装置は、CPU201と、ROM202と、RAM203と、HDD(ハードディスクドライブ)204と、HD(ハードディスク)205と、FDD(フレキシブルディスクドライブ)206と、着脱可能な記録媒体の一例としてのFD(フレキシブルディスク)207と、ディスプレイ208と、I/F(インターフェース)209と、キーボード210と、マウス211と、スキャナ212と、プリンタ213とを備えている。また、各構成部は、バス200によってそれぞれ接続されている。
ここで、CPU201は、検証支援装置の全体の制御を司る。ROM202は、ブートプログラムなどのプログラムを記録している。RAM203は、CPU201のワークウェアとして使用される。HDD204は、CPU201の制御にしたがってHD205に対するデータのリード/ライトを制御する。HD205は、HDD204の制御で書き込まれたデータを記憶する。
FDD206は、CPU201の制御にしたがってFD207に対するデータのリード/ライトを制御する。FD207は、FDD206の制御で書き込まれたデータを記憶したり、FD207に記憶されたデータを検証支援装置に読み取らせたりする。
また、着脱可能な記録媒体として、FD207のほか、CD−ROM(CD−R、CD−RW)、MO、DVD(Digital Versatile Disk)、メモリカードなどであってもよい。ディスプレイ208は、カーソル、アイコンあるいはツールボックスをはじめ、文書、画像、機能情報などのデータを表示する。このディスプレイ208には、たとえば、CRT、TFT液晶ディスプレイ、プラズマディスプレイなどを採用することができる。
I/F209は、通信回線を通じてインターネットなどのネットワーク214に接続され、このネットワーク214を介して他の装置に接続される。そして、I/F209は、ネットワーク214と内部のインターフェースを司り、外部装置からのデータの入出力を制御する。I/F209には、たとえばモデムやLANアダプタなどを採用することができる。
キーボード210は、文字、数字、各種指示などの入力のためのキーを備え、データの入力をおこなう。また、タッチパネル式の入力パッドやテンキーなどであってもよい。マウス211は、カーソルの移動や範囲選択、あるいはウインドウの移動やサイズの変更などをおこなう。ポインティングデバイスとして同様の機能を備えるものであれば、トラックボールやジョイスティックなどであってもよい。
スキャナ212は、画像を光学的に読み取り、装置内に画像データを読み込む。なお、スキャナ212は、OCR機能を持たせてもよい。また、プリンタ213は、画像データや文書データを印刷する。プリンタ213には、たとえば、レーザプリンタやインクジェットプリンタなどを採用することができる。
(検証支援装置の機能的構成)
つぎに、この発明の実施の形態1にかかる検証支援装置の機能的構成について説明する。図3は、この発明の実施の形態1にかかる検証支援装置の機能的構成を示すブロック図である。図3において、検証支援装置は、入力部301と、分割データ生成部302と、特定部303と、出力部304と、回路データ生成部305と、決定部306と、結合データ生成部307と、変更部308と、削除部309と、から構成されている。
入力部301は、ハードウェア記述言語によって記述された設計データの入力を受け付ける。設計データは、HDL(VHDL、Verilogなど)によって記述された設計対象回路に関する論理回路データである。具体的には、設計データとして、RTL(Register Transfer Level)やネットリストなどがある。
分割データ生成部302は、入力部301によって入力された設計データを、当該設計データを構成するモジュールごとに分割することによって、複数の分割データを生成する。具体的には、分割データ生成部302は、設計データをモジュールごとに分割した結果、一つのモジュールに対して一つの分割ファイルを生成する。すなわち、分割データ生成部302によって、設計データを構成するモジュール数と同数の分割データが生成される。
より具体的には、分割データ生成部302は、入力された設計データにおけるタブ、スペースおよび改行などを検出することによってモジュール間の境界を判断し、各モジュールに対応する分割データを生成するようにしてもよい。また、ユーザの指定入力により、設計データにおける各モジュール領域を判断し、各モジュールに対応する分割データを生成するようにしてもよい。
ここで、モジュールとは、設計データを構成する基本構造であり、一つの処理を表現した記述である。具体的には、たとえば、Verilogにおいては、モジュールは、予約語の「module」と「endmodule」で囲まれ、回路表現からシミュレーション用の入力まで、すべてがこの中に記述されている。
より具体的には、一つのモジュール内には、モジュール名、コメント、入出力信号に関する定義および論理を特定する定義などが記述されている。なお、設計データが一つのモジュールによって構成されている場合には、入力された設計データをそのまま分割データとしてもよい。
特定部303は、分割データ生成部302によって生成された複数の分割データを設計ツールに与えた結果、当該複数の分割データのうち不具合が発生する分割データを特定する。具体的には、各分割データごとに必要な引数を与えて設計ツールを実行し、不具合が発生したか否かの結果に応じて、不具合が発生する分割データを特定する。ここで、設計ツールとは、LSIのトップダウン設計において利用される各種ツールであり、論理検証ツール、等価検証ツール、回路シミュレータおよび論理合成ツールなどである。
なお、設計ツールを実行する際の引数は、予め検証支援装置のHD205やFD207などの記録媒体に記録されおり、ツール実行時に自動的に読み出すようにしてもよい。あるいは、ツール実行時において、ユーザの操作入力により各分割データに必要な引数を与えるようにしてもよい。
また、ツール実行時における不具合発生の判定は、実行結果を示すステータスコードから判定する。たとえば、予め設定されているステータスコードが出力された場合に、不具合が発生したと判定する。
出力部304は、特定部303によって特定された分割データを出力する。具体的には、たとえば、出力部304は、特定部303によって特定された分割データを外部装置に出力するようにしてもよいし、HD205やFD207などの記録媒体に書き込むようにしてもよい。
回路データ生成部305は、特定部303によって特定された分割データ内の入出力信号によって接続される複数の論理ブロックのうち、一部の論理ブロックが欠落した回路データを生成する。論理ブロックとは、分割データ内の内部信号および外部出力信号の接続によって表現される論理データである。すなわち、分割データ内に定義されている複数の論理を、各論理ごとの記述で表現したものである。
具体的には、回路データ生成部305は、分割データ内の論理ブロックの組み合わせとして取り得るパターンすべてについての回路データを生成するようにしてもよい。この場合、分割データ内の論理ブロックの組み合わせとして取り得るパターンの数と同数の回路データが生成される。
また、特定部303によって特定された分割データが複数ある場合には、回路データ生成部305は、各分割データから任意の論理ブロックを選択し、選択された論理ブロックからなる回路データを生成するようにしてもよい。なお、回路データの生成は、分割データから一部の論理ブロックを削除することによって生成するようにしてもよい。
さらに、分割データ内の論理ブロックと入出力信号との接続を表現した後述する論理ブロックDBをディスプレイ208に表示し、論理ブロックに関するユーザからの指定入力を受け付けるようにしてもよい。この場合、ユーザからの指定入力に従って、分割データ内の論理ブロックを削除し、残余の論理ブロックからなる回路データを生成するようにしてもよい。
決定部306は、回路データ生成部305によって生成された回路データを設計ツールに与えた結果、欠落した論理ブロックを不具合が発生しない論理ブロックに決定する。具体的には、決定部306は、回路データを設計ツールに与えた結果、不具合が再現された場合には、欠落した論理ブロックが不具合の再現に不要なものであると判断し、不具合が発生しない論理ブロックに決定する。
また、決定部306は、回路データを設計ツールに与えた結果、不具合が再現されなかった場合には、欠落した論理ブロックが不具合の再現に必要なものであると判断し、不具合が発生しない論理ブロックに決定しない。
出力部304は、決定部306によって欠落した論理ブロックが不具合が発生しない論理ブロックに決定された場合、回路データを出力する。すなわち、欠落した論理ブロックが不具合が発生しない論理ブロックであるため、不具合の再現に不要となる論理ブロックが削除された回路データを出力する。
出力部304から出力される回路データは、不具合の再現に最低限必要となるモジュールに関するデータであるとともに、不具合の再現に不要となる論理ブロックが削除されたデータである。
結合データ生成部307は、特定部303によって特定された複数の分割データを、当該分割データ同士で結合させることによって、結合データを生成する。具体的には、特定部303によって特定された分割データが複数存在する場合、すべての分割データを結合させることにより、一つのモジュールに関する結合データを生成する。
より具体的には、各分割データ内のモジュール名、入出力信号名および論理などを結合させることによって結合データを生成する。このとき、モジュール名および入出力信号名などが重複しないようにそれぞれ変更する。
また、回路データ生成部305は、結合データ生成部307によって生成された結合データ内の入出力信号によって接続される複数のブロックのうち、一部の論理ブロックが欠落した回路データを生成するようにしてもよい。
変更部308は、入力部301によって入力された設計データ内の論理を特定するための名称を、類推不能な名称に変更する。具体的には、変更部308は、入力された設計データから、モジュール名、インスタンス名およびレジスタ名などの名称を検出し、それらの名称を一律に変更する。なお、変更される名称は、予め設定されている名称(たとえば、「固定名_追番」)に従って一律に変更するようにしてもよいし、ユーザが任意に設定するようにしてもよい。
変更部308によって論理を特定するための名称が変更された場合、分割データ生成部302は、変更部308によって名称が変更された設計データを、当該設計データを構成するモジュールごとに分割することによって、複数の分割データを生成するようにしてもよい。
削除部309は、入力部301によって入力された設計データ内のコメントを削除する。具体的には、変更部308は、入力された設計データからコメント部分を検出し、その部分を削除する。より具体的には、たとえば、削除部309は、Verilogにおいては設計データ内の//を検出した場合には、//から行末まで、及び/*と*/で囲まれた部分をコメントとして判断し、その部分を削除する。
削除部309によってコメントが削除された場合、分割データ生成部302は、削除部309によってコメントが削除された設計データを、当該設計データを構成するモジュールごとに分割することによって、複数の分割データを生成するようにしてもよい。
なお、入力部301、分割データ生成部302、特定部303、出力部304、回路データ生成部305、決定部306、結合データ生成部307、変更部308および削除部309は、具体的には、たとえば、図2に示したROM202、RAM203、HD205などの記録媒体に記録されているプログラムをCPU201に実行させることによって、またはI/F209によって、その機能を実現する。
(検証支援装置の検証支援処理手順)
つぎに、この発明の実施の形態1にかかる検証支援装置において実行される検証支援処理について説明する。図4は、この発明の実施の形態1にかかる検証支援装置において実行される検証支援処理手順を示すフローチャートである。
図4のフローチャートにおいて、検証支援装置の入力部301は、ハードウェア記述言語によって記述された設計データの入力を受け付ける(ステップS401)。つぎに、分割データ生成部302は、入力部301によって入力された設計データを、当該設計データを構成するモジュールごとに分割することによって、複数の分割データを生成する(ステップS402)。
また、変更部308により、入力部301によって入力された設計データ内の論理を特定するための名称が、類推不能な名称に変更された場合、分割データ生成部302は、変更部308によって名称が変更された設計データを、当該設計データを構成するモジュールごとに分割することによって、複数の分割データを生成するようにしてもよい。
さらに、削除部309により、入力部301によって入力された設計データ内のコメントが削除された場合、分割データ生成部302は、削除部309によってコメントが削除された設計データを、当該設計データを構成するモジュールごとに分割することによって、複数の分割データを生成するようにしてもよい。
そして、特定部303は、分割データ生成部302によって生成された複数の分割データを設計ツールに与えた結果、当該複数の分割データのうち不具合が発生する分割データを特定する(ステップS403)。このとき、出力部304は、特定部303によって特定された分割データを出力するようにしてもよい。
つぎに、回路データ生成部305は、特定部303によって特定された分割データ内の入出力信号によって接続される複数の論理ブロックのうち、一部の論理ブロックが欠落した回路データを生成する(ステップS404)。
また、結合データ生成部307により、特定部303によって特定された複数の分割データを、当該分割データ同士で結合させることによって、結合データを生成した場合、回路データ生成部305は、結合データ生成部307によって生成された結合データ内の入出力信号によって接続される複数のブロックのうち、一部の論理ブロックが欠落した回路データを生成するようにしてもよい。
そして、決定部306は、回路データ生成部305によって生成された回路データを設計ツールに与えた結果、欠落した論理ブロックを不具合が発生しない論理ブロックに決定する(ステップS405)。
最後に、出力部304は、決定部306によって欠落した論理ブロックが不具合が発生しない論理ブロックに決定された場合、回路データを出力し(ステップS406)、本フローチャートによる一連の処理を終了する。
以上、説明したように実施の形態1にかかる検証支援装置によれば、設計データを設計ツールに与えた際に発生する不具合の再現に最低限必要となるモジュールを自動的に特定することができる。さらに、特定されたモジュールのうち、不具合の再現に最低限必要となる論理ブロックを自動的に特定することができる。
また、設計データ内の論理を特定するための名称を変更するとともに、設計データ内のコメントを削除することにより、設計データ内に表現されている論理意図を類推困難にすることができる。
これにより、検証支援装置によれば、不具合を再現可能でかつ、第三者によって論理意図が類推不能な再現データへの改変作業にかかる作業時間の短縮および作業労力の軽減を図ることにより、設計期間の短縮化を実現することができる。
(実施の形態2)
つぎに、この発明の実施の形態2にかかる検証支援装置について説明する。なお、検証支援装置のハードウェア構成については、実施の形態1と同様のため説明を省略する。また、検証支援装置の機能的構成において、実施の形態1と同一構成については、同一符号を付し、その説明を省略する。
図5は、この発明の実施の形態2にかかる検証支援装置の機能的構成を示すブロック図である。図5において、検証支援装置は、入力部301と、選択部501と、合成データ生成部502と、モジュール決定部503と、出力部304と、回路データ生成部305と、論理ブロック決定部504と、変更部308と、削除部309と、から構成されている。
入力部301は、ハードウェア記述言語によって記述された設計データの入力を受け付ける。選択部501は、入力部301によって入力された設計データを構成する階層モジュールのうち、最上位のモジュールを除く他のモジュールの中から任意のモジュールを選択する。通常、設計データにおいて、複数の機能について、一つのモジュール内にすべてを記述するのではなく、複数の階層に分類されて記述される。
ここでは、複数の機能が階層的に記述された階層モジュールのうち、階層内で最も上位のモジュールを最上位のモジュール(トップモジュール)といい、最上位のモジュールより下位のモジュールを他のモジュールという。
また、任意のモジュールの選択は、他のモジュールのうち、最も上位に記述されているモジュールから順に一つずつ選択するようにしてもよいし、少なくとも一つ以上のモジュールをランダムに選択するようにしてもよい。なお、ユーザの指定入力に従って、他のモジュールの中から任意のモジュールを選択するようにしてもよい。
合成データ生成部502は、最上位のモジュールと、他のモジュールのうち選択部501によって選択されたモジュール(以下、「選択モジュール」という)を除く残余のモジュールと、選択モジュール内の入出力宣言に関する記述からなる記述データと、からなる合成データを生成する。
選択モジュールを除く残余のモジュールとは、たとえば、他のモジュールがモジュールA、モジュールBおよびモジュールCによって構成されており、選択モジュールがモジュールAとする。この場合、残余のモジュールは、他のモジュールのうち、モジュールAを除く残りのモジュール、すなわち、モジュールBおよびモジュールCとなる。
また、記述データとは、選択モジュール内の記述のうち、入出力宣言に関する記述以外の記述を削除したものである。具体的には、記述データとは、選択モジュールのうち、論理記述を削除したポート宣言のみの記述である。この記述データは、予め最上位のモジュール以外のすべてのモジュールについて用意しておいてもよいし、他のモジュールのうち任意のモジュールが選択された際に、その都度、選択モジュールに対応する記述データを生成するようにしてもよい。
合成データとは、設計データにおける最上位のモジュールと、選択モジュールについての記述データと、残余のモジュールによって階層モジュールが形成されたものである。
モジュール決定部503は、合成データ生成部502によって生成された合成データを設計ツールに与えた結果、選択モジュールを不具合が発生するモジュールに決定する。具体的には、モジュール決定部503は、生成された合成データを設計ツールに与えた結果、不具合が再現されなかった場合に、選択モジュールを不具合が発生するモジュールに決定する。
出力部304は、モジュール決定部503によって選択モジュールが不具合が発生するモジュールに決定された場合、合成データを出力する。このとき、最上位のモジュールと、選択モジュールについての記述データと、残余のモジュールと、によって階層モジュールが形成されている合成データを、階層展開することによって一つのモジュールのデータとして出力するようにしてもよい。
回路データ生成部305は、合成データ内の入出力信号によって接続される複数の論理ブロックのうち、一部の論理ブロックが欠落した回路データを生成する。具体的には、たとえば、回路データ生成部305は、合成データ内の複数の論理ブロックから、任意の論理ブロックを抽出することによって回路データを生成する。また、回路データ生成部305は、合成データ内の複数の論理ブロックのうち、任意の論理ブロックを削除することによって回路データを生成するようにしてもよい。
論理ブロック決定部504は、回路データ生成部305によって生成された回路データを設計ツールに与えた結果、欠落した論理ブロックを不具合が発生しない論理ブロックに決定する。上述した決定部306(図3参照)と同様のため説明を省略する。
また、出力部304は、論理ブロック決定部504によって欠落した論理ブロックが不具合が発生しない論理ブロックに決定された場合、回路データを出力するようにしてもよい。
変更部308は、入力部301によって入力された設計データ内の論理を特定するための名称を、類推不能な名称に変更する。変更部308によって論理を特定するための名称が変更された場合、選択部501は、変更部308によって名称が変更された設計データを構成する階層モジュールのうち、最上位のモジュールを除く他のモジュールの中から任意のモジュールを選択するようにしてもよい。
削除部309は、入力部301によって入力された設計データ内のコメントを削除する。削除部309によってコメントが削除された場合、選択部501は、削除部309によってコメントが削除された設計データを構成する階層モジュールのうち、最上位のモジュールを除く他のモジュールの中から任意のモジュールを選択するようにしてもよい。
なお、入力部301、選択部501、合成データ生成部502、モジュール決定部503、出力部304、回路データ生成部305、論理ブロック決定部504、変更部308および削除部309は、具体的には、たとえば、図2に示したROM202、RAM203、HD205などの記録媒体に記録されているプログラムをCPU201に実行させることによって、またはI/F209によって、その機能を実現する。
(検証支援装置の検証支援処理手順)
つぎに、この発明の実施の形態2にかかる検証支援装置において実行される検証支援処理について説明する。図6は、この発明の実施の形態2にかかる検証支援装置において実行される検証支援処理手順を示すフローチャートである。
図6のフローチャートにおいて、検証支援装置の入力部301は、ハードウェア記述言語によって記述された設計データの入力を受け付ける(ステップS601)。つぎに、選択部501は、入力部301によって入力された設計データを構成する階層モジュールのうち、最上位のモジュールを除く他のモジュールの中から任意のモジュールを選択する(ステップS602)。
また、変更部308により、入力部301によって入力された設計データ内の論理を特定するための名称が、類推不能な名称に変更された場合、選択部501は、変更部308によって名称が変更された設計データを構成する階層モジュールのうち、最上位のモジュールを除く他のモジュールの中から任意のモジュールを選択するようにしてもよい。
さらに、削除部309により、入力部301によって入力された設計データ内のコメントが削除された場合、選択部501は、削除部309によってコメントが削除された設計データを構成する階層モジュールのうち、最上位のモジュールを除く他のモジュールの中から任意のモジュールを選択するようにしてもよい。
そして、合成データ生成部502は、最上位のモジュールと、他のモジュールのうち選択部501によって選択されたモジュール(以下、「選択モジュール」という)を除く残余のモジュールと、選択モジュール内の入出力信号に関する記述からなる記述データと、からなる合成データを生成する(ステップS603)。
つぎに、モジュール決定部503は、合成データ生成部502によって生成された合成データを設計ツールに与えた結果、選択モジュールを不具合が発生するモジュールに決定する(ステップS604)。このとき、出力部304は、モジュール決定部503によって選択モジュールが不具合が発生するモジュールに決定された場合、合成データを出力するようにしてもよい。
回路データ生成部305は、合成データ内の入出力信号によって接続される複数の論理ブロックのうち、一部の論理ブロックが欠落した回路データを生成する(ステップS605)。そして、論理ブロック決定部504は、回路データ生成部305によって生成された回路データを設計ツールに与えた結果、欠落した論理ブロックを不具合が発生しない論理ブロックに決定する(ステップS606)。
最後に、出力部304は、論理ブロック決定部504によって欠落した論理ブロックが不具合が発生しない論理ブロックに決定された場合、回路データを出力し(ステップS607)、本フローチャートによる一連の処理を終了する。
以上、説明したように実施の形態2にかかる検証支援装置によれば、設計データを設計ツールに与えた際に発生する不具合の再現に最低限必要となるモジュールを自動的に特定することができる。さらに、特定されたモジュールのうち、不具合の再現に最低限必要となる論理ブロックを自動的に特定することができる。
また、設計データ内の論理を特定するための名称を変更するとともに、設計データ内のコメントを削除することにより、設計データ内に表現されている論理意図を類推困難にすることができる。
これにより、検証支援装置によれば、不具合を再現可能でかつ、第三者によって論理意図が類推不能な再現データへの改変作業にかかる作業時間の短縮および作業労力の軽減を図ることにより、設計期間の短縮化を実現することができる。
つぎに、検証支援装置の実施例について説明する。なお、実施例における検証支援装置は、上記実施の形態1および実施の形態2にかかる検証支援装置の機能を備えたものである。
(HDLファイル一覧の具体例)
まず、検証支援装置に入力されるHDLファイル一覧の具体例について説明する。ここで入力されるHDLファイル一覧は、上述した設計データに相当する。図7は、HDLファイル一覧の具体例を示す説明図である。
図7に示すHDLファイル一覧700とは、複数のHDLファイルの集合であり、ここでは、HDLファイル710(file1.v)およびHDLファイル720(file2.v)から構成されている。
HDLファイル710は、モジュール711(top_mod)およびモジュール712(fifo_read_write)から構成されている。また、HDLファイル720は、モジュール721(buf_mod)およびモジュール722(not_mod)から構成されている。
各HDLファイルには、モジュールの宣言、入出力信号の宣言およびコメントなどが記述されている。なお、HDLファイル710のうち、//で始まる1行が行末までコメント扱いとなる。
検証支援装置は、入力されたHDLファイル一覧700を読み込み後、モジュール名・インスタンス名・レジスタ名などすべての名称を「prefix+追番」に変更するとともに、コメントを削除する。これらの処理は、上記変更部308および削除部309(図3、5参照)によっておこなわれる処理に相当する。
また、入力されたHDLファイル一覧700から、“モジュール名.拡張子”とした1モジュール1ファイル形式のHDLファイルを出力する。具体的には、たとえば、HDLファイル710を構成する2つのモジュール711およびモジュール712を分割して、各モジュールに対応するHDLファイルをそれぞれ生成する。ここでの処理は、上記分割データ生成部302(図3参照)によっておこなわれる処理に相当する。
さらに、HDLファイル一覧700から、トップモジュール(ここでは、モジュール711)を除く他のモジュールについて、“モジュール名_dummy.拡張子”とした1モジュール1ファイル形式のHDLファイルを出力する。具体的には、他のモジュールについて、論理を削除したポート宣言のみのHDLファイルをそれぞれ生成する。このポート宣言のみのHDLファイルは、上記記述データに相当する。
ここで、“モジュール名.拡張子”とした1モジュール1ファイル形式のHDLファイルについて説明する。図8は、1モジュール1ファイル形式のHDLファイルの一例を示す説明図である。図8には、図7中のHDLファイル710、720を構成するモジュール711、712、721および722について、それぞれ1モジュール1ファイル形式で生成されたHDLファイル801〜804が示されている。
HDLファイル801〜804を生成するために、まず、HDLファイル一覧700を構成する各モジュール内に記述されているモジュール名、インスタンス名および入出力のリスト(変数)の名称を一律に変更する。さらに、モジュール711内の//で始まるコメントを削除する。
たとえば、モジュール名「top_mod、fifo_read_write、buf_mod、not_mod」を、順に「mod_1、mod_2、mod_3、mod_4」に変更する。そして、変更後のHDLファイル一覧700を構成する各モジュールごとに分割して、1モジュール1ファイル形式のHDLファイルを生成する。
つぎに、“モジュール名_dummy.拡張子”とした1モジュール1ファイル形式のHDLファイルについて説明する。図9は、1モジュール1ファイル形式のHDLファイルの他の一例を示す説明図である。
図9に示すHDLファイル901〜903は、図8中のHDLファイル802〜804から論理に関する記述を削除したポート宣言のみのデータである。具体的には、たとえば、HDLファイル802のうち、「reg〜pin_14<=pin_13」の論理記述を削除して、入出力宣言に関する記述のみに変更する。
(検証支援装置の検証支援処理手順)
つぎに、この発明の実施例の検証支援装置において実行される検証支援処理手順について説明する。図10は、実施例の検証支援装置において実行される検証支援処理手順を示すフローチャートである。
図10に示すフローチャートにおいて、検証支援装置は、HDLファイル一覧の入力を受け付けたか否かを判断する(ステップS1001)。ここで、HDLファイル一覧が入力されるのを待って、入力された場合(ステップS1001:Yes)、検証支援処理に関する処理単位の指定入力を受け付けたか否かを判断する(ステップS1002)。
検証支援処理に関する処理単位とは、検証支援装置において設計ツールを実行する際の処理単位のことである。ここでは、HDLファイルを構成する個々のモジュール単位、または、階層構造を有する階層モジュール単位のいずれか一方を指定することができる。
処理単位の指定入力は、HDLファイル一覧の入力を受け付けた後、ユーザからの操作入力を受け付けるように構成してもよい。具体的には、HDLファイル一覧の入力後、「処理単位を指定してください。」などのコメントをディスプレイ208に表示することによって、ユーザに指定入力を促すようにしてもよい。また、予め設定されている処理単位を自動的に指定するようにしてもよい。
ステップS1002において、処理単位の指定入力を受け付けるのを待って、受け付けた場合(ステップS1002:Yes)、指定された処理単位に従って、原本HDLファイル生成処理を実行する(ステップS1003)。原本HDLファイル生成処理の具体的処理については後述する。
つぎに、生成された原本HDLファイルから不要な論理ブロックを削除する論理ブロック削除処理を実行する(ステップS1004)。論理ブロック削除処理の具体的処理については後述する。
最後に、不具合を再現可能な再現データを出力して(ステップS1005)、本フローチャートによる一連の処理を終了する。
ここで、ステップS1003で示した原本HDLファイル生成処理手順について具体的に説明する。まず、ステップS1002において、検証支援処理に関する処理単位としてモジュール単位の指定入力を受け付けた場合について説明する。図11は、ステップS1003で示した原本HDLファイル生成処理手順を示すフローチャート(その1)である。
図11のフローチャートにおいて、検証支援装置は、モジュール単位の指定入力を受け付けたか否かを判断する(ステップS1101)。ここで、処理単位の指定入力を待って、モジュール単位の指定入力を受け付けた場合(ステップS1101:Yes)、ステップS1001において入力されたHDLファイル一覧内のモジュールごとに出力された1モジュール1ファイル形式の複数のHDLファイルの中から、任意のHDLファイルを選択する(ステップS1102)。
具体的には、ステップS1001において、図7に示すHDLファイル一覧700が入力された場合、1モジュール1ファイル形式で出力された図8に示すHDLファイル801〜804の中から、任意のHDLファイルを選択する。このとき、HDLファイル801→HDLファイル802→HDLファイル803→HDLファイル804の順に選択してもよいし、ランダムに選択してもよいが、選択するHDLファイルが重複しないように選択する。
つぎに、ステップS1102において選択されたHDLファイルに対して設計ツールを実行する(ステップS1103)。このとき実行される設計ツールは、ステップS1001において入力されたHDLファイル一覧に対して実行された設計ツールと同様のものである。すなわち、HDLファイル一覧に対して実行した場合に、不具合が発生した設計ツールである。
また、ツール実行時に必要となる引数は、予めHD205やFD207などの記録媒体に記録されている。設計ツールを実行する際に、選択されたHDLファイルに必要となる引数をその都度読み出して使用する。
そして、HDLファイルを設計ツールに与えた結果、不具合が再現されたか否かを判断する(ステップS1104)。不具合が再現されたか否かの判断は、実行結果を示すステータスコードに基づいておこなわれる。具体的には、たとえば、セグメンテーションフォルトによる異常終了の不具合が発生した場合のステータスコード(たとえば、ツール終了ステータス!=0)を予め設定しておく。
そして、HDLファイルを設計ツールに与えた結果、ステータスコードとして「ツール終了ステータス!=0」が出力された場合に、不具合が発生したと判定し、不具合が再現されたと判断する。また、ツール実行時に出力されるエラーメッセージから、不具合が再現されたか否かを判断するようにしてもよい。
ここで、不具合が再現した場合(ステップS1104:Yes)、ステップS1102において選択されたHDLファイル内のモジュールを再現モジュールとして決定する(ステップS1105)。再現モジュールとは、設計ツールを実行した場合における不具合の原因となるモジュールのことである。
つぎに、HDLファイル一覧内のモジュールごとに出力された1モジュール1ファイル形式のHDLファイルのうち、すべてのHDLファイルを選択したか否かを判断する(ステップS1106)。また、ステップS1104において、不具合が再現しなかった場合(ステップS1104:No)、ステップS1106に移行する。
ここで、すべてのHDLファイルが選択されている場合(ステップS1106:Yes)、原本HDLファイルを生成して(ステップS1107)、図10に示すステップS1004に移行する。具体的には、ステップS1105において決定された再現モジュールに関するHDLファイルを用いて原本HDLファイルとする。
このとき、再現モジュールが複数存在する場合には、すべての再現モジュールをマージして1モジュールの原本HDLファイルとして生成する。また、ステップS1106において、すべてのHDLファイルが選択されていない場合(ステップS1106:No)、ステップS1102に戻り、一連の処理を繰り返す。
ここで、ステップS1107において生成される原本HDLファイルについて説明する。図12は、原本HDLファイルの一例を示す説明図(その1)である。原本HDLファイルとは、不具合の再現に最低限必要なモジュールを含むデータであり、ステップS1105において決定されたすべての再現モジュールが含まれている。
ここでは、図8に示すHDLファイル801〜804のうち、HDLファイル803およびHDLファイル804において不具合が発生した場合について説明する。具体的には、HDLファイル801〜804に対して必要な引数を与えて設計ツールを実行した結果、HDLファイル803およびHDLファイル804について不具合が発生している。このため、HDLファイル803およびHDLファイル804内の各モジュールが再現モジュールとして決定されている。
すなわち、再現モジュールとして決定されたモジュールが複数存在するため、各再現モジュールに関するHDLファイル803およびHDLファイル804をマージさせて1モジュールの原本HDLファイルとする。
具体的には、原本HDLファイル1200内のポートリストは、HDLファイル803内のポートリスト(pin_21,pin_22)およびHDLファイル804内のポートリスト(pin_31,pin_32)がマージされたものであり、それぞれの名称が(pin_1,pin_2,pin_3,pin_4)に変更されている。
より具体的には、pin_21がpin_1に、pin_22がpin_2に、pin_31がpin_3に、pin_32がpin_4に変更され、マージされている。さらに、入出力信号や論理についても同様にマージされている。また、モジュール名は、「est_mod」に変更されている。すなわち、HDLファイル803およびHDLファイル804内の記述内容をそれぞれ重複しないように変更し、各項目ごとにマージして一つのHDLファイルにする。
つぎに、ステップS1002において、検証支援処理に関する処理単位としてモジュール階層単位の指定入力を受け付けた場合について説明する。図13は、ステップS1003で示した原本HDLファイル生成処理手順を示すフローチャート(その2)である。
図13のフローチャートにおいて、検証支援装置は、モジュール階層単位の指定入力を受け付けたか否かを判断する(ステップS1301)。ここで、処理単位の指定入力を待って、モジュール階層単位の指定入力を受け付けた場合(ステップS1301:Yes)、ステップS1001において入力されたHDLファイル一覧内のモジュールごとに出力されたポート宣言のみの複数のHDLファイルの中から、任意のHDLファイルを選択する(ステップS1302)。
具体的には、ステップS1001において、図7に示すHDLファイル一覧700が入力された場合、1モジュール1ファイル形式で出力された図8に示すHDLファイル802〜804の中から、任意のHDLファイルを選択する。
このとき、HDLファイル802→HDLファイル803→HDLファイル804の順に選択してもよいし、ランダムに選択してもよいが、選択するHDLファイルが重複しないように選択する。
つぎに、ステップS1001において入力されたHDLファイル一覧について1モジュール1ファイル形式で出力されたHDLファイルのうち、ステップS1302において選択されたポート宣言のみのHDLファイルを、それに対応するHDLファイルと置き換えたHDLファイル群に対して設計ツールを実行する(ステップS1303)。
具体的には、1モジュール1ファイル形式によって出力されたHDLファイル801〜804のうち、HDLファイル801(トップモジュール)を除く他のHDLファイル802〜804を、それぞれポート宣言のみのHDLファイル901〜903に1ファイルごとに置き換えて設計ツールを実行する。このとき置き換えられるHDLファイルが、ステップS1302において選択されたポート宣言のみのHDLファイルに対応するものである。
このとき実行される設計ツールは、ステップS1001において入力されたHDLファイル一覧に対して実行された設計ツールと同様のものである。すなわち、HDLファイル一覧に対して実行した場合に、不具合が発生した設計ツールである。
そして、HDLファイル群を設計ツールに与えた結果、不具合が再現されたか否かを判断する(ステップS1304)。
ここで、不具合が再現した場合(ステップS1304:Yes)、HDLファイル一覧を更新する(ステップS1305)。具体的には、ステップS1302において選択されたポート宣言のみのHDLファイルを含むHDLファイル群を、新たなHDLファイル一覧として置き換える。また、不具合が再現しなかった場合(ステップS1304:No)、ステップS1306に移行する。
具体的には、たとえば、HDLファイル801、HDLファイル901(ステップS1302において選択されたポート宣言のみのHDLファイル)、HDLファイル803およびHDLファイル804を、HDLファイル群として必要な引数を与えて設計ツールを実行する。このとき、不具合が再現された場合、HDLファイル802をHDLファイル701に置き換えられているHDLファイル群を新たなHDLファイル一覧とする。
また、HDLファイル801、HDLファイル901、HDLファイル902およびHDLファイル804を、HDLファイル群として必要な引数を与えて設計ツールを実行する。このとき、不具合が再現されなかった場合、HDLファイル902をもとのHDLファイル803に戻す。すなわち、HDLファイル一覧の更新はおこなわれないこととなる。
つぎに、HDLファイル一覧内のモジュールごとに出力されたポート宣言のみの複数のHDLファイルのうち、すべてのHDLファイルを選択したか否かを判断する(ステップS1306)。
ここで、すべてのHDLファイルが選択されている場合(ステップS1306:Yes)、原本HDLファイルを生成して(ステップS1307)、図10に示すステップS1004に移行する。具体的には、ステップS1305において更新されたHDLファイル一覧を構成するすべてのHDLファイルに対して階層展開をおこない、1モジュールの原本HDLファイルを生成する。
また、ステップS1306において、すべてのHDLファイルが選択されていない場合(ステップS1306:No)、ステップS1302に戻り、一連の処理を繰り返す。
ここで、ステップS1307において生成される原本HDLファイルについて説明する。図14は、原本HDLファイルの一例を示す説明図(その2)である。図13に示すステップS1302〜S1306の処理を繰り返しおこなわれることによって、不具合が発生しないモジュールについてのHDLファイルが、ポート宣言のみのHDLファイルに変更される。そして、最終的なHDLファイル一覧を構成するすべてのHDLファイルについて階層展開をおこなうことにより、図14に示す原本HDLファイル1400が生成される。
ここでは、図8に示すHDLファイル802〜804のうち、HDLファイル802をポート宣言のみのHDLファイル901に置き換えて設計ツールを実行した場合にのみ、不具合が再現されたとする。
すなわち、最終的なHDLファイル一覧は、HDLファイル801、HDLファイル901、HDLファイル803およびHDLファイル804から構成されている。これら複数のHDLファイルを階層展開することにより、原本HDLファイルを生成する。具体的には、図12において説明した複数のHDLファイルをマージする場合と同様のため説明を省略する。
(論理ブロック削除処理手順)
つぎに、ステップS1004で示した論理ブロック削除処理手順について具体的に説明する。ここで、論理ブロック削除処理の概要を説明する。論理ブロック削除処理では、ステップS1003において生成された原本HDLファイルから不具合の再現に無関係な論理を削除する。
図15は、原本HDLファイルの一例を示す説明図(その3)である。まず、図15に示す原本HDLファイル1500を用いて論理ブロックDBを生成する。論理ブロックDBとは、原本HDLファイル内の論理を生成する変数ごとに元の記述を保持した復元容易なDBである。
HDL(VHDL/Verilog)には、記述順序に関係なくシミュレーションサイクルで同時に評価されるコンカレント文、記述順序にしたがって上から下に評価されるシーケンス文がある。コンカレント文としては、たとえば、コンカレント代入文、always/process文およびインスタンス文などがある。また、シーケンス文としては、always/process文内のif文、case文およびシーケンス代入文などがある。
ここでは、論理ブロックDB作成時において、検証支援装置は、まず、原本HDLファイル1500からコンカレント文を抽出してその入力・出力となる変数で接続した論理ブロックを生成する。具体的には、原本HDLファイル1500においては、xに対する代入文とalways文の2論理ブロックで構成される第一段階のDBが生成される。
つぎに、always/process文から作成した論理ブロックについて、1出力ごとに論理ブロックを分離して論理記述から当該出力に対する代入文以外の代入文を削除し、再度論理ブロックの入力・出力となる変数で接続しなおす。ここでは、always文より生成された論理ブロックからの出力がcntおよびqの2つであるため、cntのみを出力する論理ブロック(入力はclk、rstおよびd)に分離する。
図16は、論理ブロックDBの一例を示す説明図である。図16に示す論理ブロックDB1600は、原本HDLファイル1500内の論理を生成する変数ごとに元の記述を保持したものである。論理ブロックDB1600から1つずつ論理を削除し、その都度、評価HDLファイルを生成する。
そして、作成した評価HDLファイルに対して必要な引数を与えて設計ツールを実行する。その結果、不具合が再現した場合に、その評価HDLファイルを原本HDLファイルに置き換える。この処理をすべての論理についての削除が終了するまで繰り返しおこない最終的な再現データを生成する。また、論理ブロックDB1600を生成する場合、原本HDLファイル1500内の論理を外部出力変数から辿っていくようにしてもよい。
このように原本HDLファイル1500内の論理を生成する変数ごとに元の記述を保持した論理ブロックDB1600を用いて論理の削除をおこなうことにより、論理削除処理を効率的におこなうことができる。
なぜなら、初期合成された回路構造を用いて論理削除をおこなった場合、削除後の論理の復元に面倒な作業が必要となるからである。具体的には、alwaysなどの単位を保持したオリジナルの記述へ復元するためにRTL記述の行番号リンクから辿るしかなく非常に不便となってしまう。
また、等価検証ツールのように不等価となった変数ポイントから外部入力へのトレース内に存在する記述のみを論理抽出することにより、不具合の再現が可能な設計ツールにおいては、FF推定記述におけるカウンタなどでのフィードバックループが発生してしまう。論理ブロックDB1600の場合は、このフィードバックループが発生しないため、フィードバックループをカットする処理が不要となり作業時間を短縮することができる。
図17は、ステップS1004で示した論理ブロック削除処理手順を示すフローチャートである。図17のフローチャートにおいて、検証支援装置は、ステップS1003において生成された原本HDLファイルを用いて、論理ブロックDBを生成する(ステップS1701)。ここで生成される論理ブロックDBは、たとえば、図16に示す論理ブロックDB1600である。
つぎに、ステップS1003において生成された原本HDLファイル内の論理を生成する変数の中から、任意の変数を選択する(ステップS1702)。任意の変数の選択は、ユーザの指定入力に従って選択するようにしてもよいし、ランダムに選択するようにしてもよいが、選択される変数が重複しないようにする。
そして、選択された変数に対応する論理ブロックを論理ブロックDBから削除する(ステップS1703)。つぎに、削除後における論理ブロックDBに基づいて、評価HDLファイルを生成する(ステップS1704)。
具体的には、たとえば、内部変数と外部出力変数の一覧から1変数ごとに選択した変数を起点として外部入力へのバックトレース内に存在する論理を生成する部分を削除したモジュールを評価HDLファイルとして生成するようにしてもよい。
つぎに、ステップS1704において生成された評価HDLファイルに対して設計ツールを実行する(ステップS1705)。このとき実行される設計ツールは、ステップS1001において入力されたHDLファイル一覧に対して実行された設計ツールと同様のものである。すなわち、HDLファイル一覧に対して実行した場合に、不具合が発生した設計ツールである。
そして、HDLファイル群を設計ツールに与えた結果、不具合が再現されたか否かを判断する(ステップS1706)。具体的には、HDLファイル群に必要となる引数を記録媒体から読み出して設計ツールを実行し、出力されるステータスコードから不具合が再現されたか否かを判断する。
ここで、不具合が再現した場合(ステップS1706:Yes)、評価HDLファイルを原本HDLファイルに置き換える(ステップS1707)。また、不具合が再現しなかった場合(ステップS1706:No)、ステップS1708に移行する。
具体的には、評価HDLファイルとして必要な引数を与えて設計ツールを実行する。このとき、不具合が再現された場合、評価HDLファイルを原本HDLファイルに置き換える。
つぎに、原本HDLファイル内の論理を生成する変数のうち、すべての変数を選択したか否かを判断する(ステップS1708)。ここで、すべての変数が選択されている場合(ステップS1708:Yes)、原本HDLファイルを再現データとして決定し(ステップS1709)、図10に示すステップS1005に移行する。
また、ステップS1708において、すべての変数が選択されていない場合(ステップS1708:No)、ステップS1702に戻り、一連の処理を繰り返す。
以上説明したように、この発明の実施例の検証支援装置によれば、HDLファイル一覧を設計ツールに与えた際に発生する不具合の再現に最低限必要となるモジュールを自動的に特定することができる。さらに、特定されたモジュールのうち、不具合の再現に最低限必要となる論理ブロックを自動的に特定することができる。
また、HDLファイル内の論理を特定するための名称を変更するとともに、HDLファイル内のコメントを削除することにより、設計データ内に表現されている論理意図を類推不能にすることができる。
さらに、論理ブロックを特定する際に、論理を生成する変数ごとに元の記述を保持した論理ブロックDBを用いることにより、FF推定記述におけるカウンタなどでのフィードバックループをカットする処理が不要となり、不要な論理の削除を効率的におこなうことができる。
これにより、検証支援装置によれば、不具合を再現可能でかつ、第三者によって論理意図が類推不能な再現データへの改変作業にかかる作業時間の短縮および作業労力の軽減を図ることにより、設計期間の短縮化を実現することができる。
以上説明したように、検証支援プログラム、記録媒体、検証支援装置および検証支援方法によれば、不具合を再現可能でかつ、第三者によって論理意図が類推不能な再現データへの改変作業にかかる作業時間の短縮および作業労力の軽減を図ることにより、設計期間の短縮化を実現することができる。
なお、本実施の形態で説明した検証支援方法は、予め用意されたプログラムをパーソナル・コンピュータやワークステーションなどのコンピュータで実行することにより実現することができる。このプログラムは、ハードディスク、フレキシブルディスク、CD−ROM、MO、DVDなどのコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行される。またこのプログラムは、インターネットなどのネットワークを介して配布することが可能な伝送媒体であってもよい。
(付記1)ハードウェア記述言語によって記述された設計データの入力を受け付けさせる入力工程と、
前記入力工程によって入力された設計データを、当該設計データを構成するモジュールごとに分割することによって、複数の分割データを生成させる分割データ生成工程と、
前記分割データ生成工程によって生成された複数の分割データを設計ツールに与えた結果、当該複数の分割データのうち不具合が発生する分割データを特定させる特定工程と、
前記特定工程によって特定された分割データを出力させる出力工程と、
をコンピュータに実行させることを特徴とする検証支援プログラム。
(付記2)前記特定工程によって特定された分割データ内の入出力信号によって接続される複数の論理ブロックのうち、一部の論理ブロックが欠落した回路データを生成させる回路データ生成工程と、
前記回路データ生成工程によって生成された回路データを前記設計ツールに与えた結果、前記欠落した論理ブロックを前記不具合が発生しない論理ブロックに決定させる決定工程と、を前記コンピュータに実行させ、
前記出力工程は、
前記決定工程によって前記欠落した論理ブロックが前記不具合が発生しない論理ブロックに決定された場合、前記回路データを出力させることを特徴とする付記1に記載の検証支援プログラム。
(付記3)前記特定工程によって特定された複数の分割データを、当該分割データ同士で結合させることによって、結合データを生成させる結合データ生成工程を前記コンピュータに実行させ、
前記回路データ生成工程は、
前記結合データ生成工程によって生成された結合データ内の入出力信号によって接続される複数の論理ブロックのうち、一部の論理ブロックが欠落した回路データを生成させることを特徴とする付記1または2に記載の検証支援プログラム。
(付記4)前記入力工程によって入力された設計データ内の論理を特定するための名称を、類推不能な名称に変更させる変更工程を前記コンピュータに実行させ、
前記分割データ生成工程は、
前記変更工程によって名称が変更された設計データを、当該設計データを構成するモジュールごとに分割することによって、複数の分割データを生成させることを特徴とする付記1〜3のいずれか一つに記載の検証支援プログラム。
(付記5)前記入力工程によって入力された設計データ内のコメントを削除させる削除工程を前記コンピュータに実行させ、
前記分割データ生成工程は、
前記削除工程によってコメントが削除された設計データを、当該設計データを構成するモジュールごとに分割することによって、複数の分割データを生成させることを特徴とする付記1〜4のいずれか一つに記載の検証支援プログラム。
(付記6)ハードウェア記述言語によって記述された設計データの入力を受け付けさせる入力工程と、
前記入力工程によって入力された設計データを構成する階層モジュールのうち、最上位のモジュールを除く他のモジュールの中から任意のモジュールを選択させる選択工程と、
前記最上位のモジュールと、前記他のモジュールのうち前記選択工程によって選択されたモジュール(以下、「選択モジュール」という)を除く残余のモジュールと、前記選択モジュール内の入出力信号に関する記述からなる記述データと、からなる合成データを生成させる合成データ生成工程と、
前記合成データ生成工程によって生成された合成データを設計ツールに与えた結果、前記選択モジュールを不具合が発生するモジュールに決定させるモジュール決定工程と、
前記モジュール決定工程によって前記選択モジュールが前記不具合が発生するモジュールに決定された場合、前記合成データを出力させる出力工程と、
をコンピュータに実行させることを特徴とする検証支援プログラム。
(付記7)前記合成データ内の入出力信号によって接続される複数の論理ブロックのうち、一部の論理ブロックが欠落した回路データを生成させる回路データ生成工程と、
前記回路データ生成工程によって生成された回路データを前記設計ツールに与えた結果、前記欠落した論理ブロックを前記不具合が発生しない論理ブロックに決定させる論理ブロック決定工程と、を前記コンピュータに実行させ、
前記出力工程は、
前記論理ブロック決定工程によって前記欠落した論理ブロックが前記不具合が発生しない論理ブロックに決定された場合、前記回路データを出力させることを特徴とする付記6に記載の検証支援プログラム。
(付記8)前記入力工程によって入力された設計データ内の論理を特定するための名称を、類推不能な名称に変更させる変更工程を前記コンピュータに実行させ、
前記選択工程は、
前記変更工程によって名称が変更された設計データを構成する階層モジュールのうち、最上位のモジュールを除く他のモジュールの中から任意のモジュールを選択させることを特徴とする付記6または7に記載の検証支援プログラム。
(付記9)前記入力工程によって入力された設計データ内のコメントを削除させる削除工程を前記コンピュータに実行させ、
前記選択工程は、
前記削除工程によってコメントが削除された設計データを構成する階層モジュールのうち、最上位のモジュールを除く他のモジュールの中から任意のモジュールを選択させることを特徴とする付記6〜8のいずれか一つに記載の検証支援プログラム。
(付記10)付記1〜9のいずれか一つに記載の検証支援プログラムを記録した前記コンピュータに読み取り可能な記録媒体。
(付記11)ハードウェア記述言語によって記述された設計データの入力を受け付ける入力手段と、
前記入力手段によって入力された設計データを、当該設計データを構成するモジュールごとに分割することによって、複数の分割データを生成する分割データ生成手段と、
前記分割データ生成手段によって生成された複数の分割データを設計ツールに与えた結果、当該複数の分割データのうち不具合が発生する分割データを特定する特定手段と、
前記特定手段によって特定された分割データを出力する出力手段と、
を備えることを特徴とする検証支援装置。
(付記12)前記特定手段によって特定された分割データ内の入出力信号によって接続される複数の論理ブロックのうち、一部の論理ブロックが欠落した回路データを生成する回路データ生成手段と、
前記回路データ生成手段によって生成された回路データを前記設計ツールに与えた結果、前記欠落した論理ブロックを前記不具合が発生しない論理ブロックに決定する決定手段と、を備え、
前記出力手段は、
前記決定手段によって前記欠落した論理ブロックが前記不具合が発生しない論理ブロックに決定された場合、前記回路データを出力することを特徴とする付記11に記載の検証支援装置。
(付記13)ハードウェア記述言語によって記述された設計データの入力を受け付ける入力工程と、
前記入力工程によって入力された設計データを、当該設計データを構成するモジュールごとに分割することによって、複数の分割データを生成する分割データ生成工程と、
前記分割データ生成工程によって生成された複数の分割データを設計ツールに与えた結果、当該複数の分割データのうち不具合が発生する分割データを特定する特定工程と、
前記特定工程によって特定された分割データを出力する出力工程と、
を含むことを特徴とする検証支援方法。
(付記14)前記特定工程によって特定された分割データ内の入出力信号によって接続される複数の論理ブロックのうち、一部の論理ブロックが欠落した回路データを生成する回路データ生成工程と、
前記回路データ生成工程によって生成された回路データを前記設計ツールに与えた結果、前記欠落した論理ブロックを前記不具合が発生しない論理ブロックに決定する決定工程と、を含み、
前記出力工程は、
前記決定工程によって前記欠落した論理ブロックが前記不具合が発生しない論理ブロックに決定された場合、前記回路データを出力することを特徴とする付記13に記載の検証支援方法。
以上のように、本発明にかかる検証支援プログラム、記録媒体、検証支援装置および検証支援方法は、設計データ内における不具合の発生原因となる記述部分の特定に有用であり、特に、HDLによって記述された設計データに適している。
この発明の実施の形態1にかかる検証支援システムの概要を示す説明図である。 この発明の実施の形態1にかかる検証支援装置のハードウェア構成を示すブロック図である。 この発明の実施の形態1にかかる検証支援装置の機能的構成を示すブロック図である。 この発明の実施の形態1にかかる検証支援装置において実行される検証支援処理手順を示すフローチャートである。 この発明の実施の形態2にかかる検証支援装置の機能的構成を示すブロック図である。 この発明の実施の形態2にかかる検証支援装置において実行される検証支援処理手順を示すフローチャートである。 HDLファイル一覧の具体例を示す説明図である。 1モジュール1ファイル形式のHDLファイルの一例を示す説明図である。 1モジュール1ファイル形式のHDLファイルの他の一例を示す説明図である。 実施例の検証支援装置において実行される検証支援処理手順を示すフローチャートである。 ステップS1003で示した原本HDLファイル生成処理手順を示すフローチャート(その1)である。 原本HDLファイルの一例を示す説明図(その1)である。 ステップS1003で示した原本HDLファイル生成処理手順を示すフローチャート(その2)である。 原本HDLファイルの一例を示す説明図(その2)である。 原本HDLファイルの一例を示す説明図(その3)である。 論理ブロックDBの一例を示す説明図である。 ステップS1004で示した論理ブロック削除処理手順を示すフローチャートである。
符号の説明
301 入力部
302 分割データ生成部
303 特定部
304 出力部
305 回路データ生成部
306 決定部
307 結合データ生成部
308 変更部
309 削除部
501 選択部
502 合成データ生成部
503 モジュール決定部
504 論理ブロック決定部

Claims (8)

  1. ハードウェア記述言語によって記述された設計データの入力を受け付けさせる入力工程と、
    前記入力工程によって入力された設計データを、当該設計データを構成するモジュールごとに分割することによって、複数の分割データを生成させる分割データ生成工程と、
    前記分割データ生成工程によって生成された複数の分割データを設計ツールに与えた結果、当該複数の分割データのうち不具合が発生する分割データを特定させる特定工程と、
    前記特定工程によって特定された分割データを出力させる出力工程と、
    をコンピュータに実行させることを特徴とする検証支援プログラム。
  2. 前記特定工程によって特定された分割データ内の入出力信号によって接続される複数の論理ブロックのうち、一部の論理ブロックが欠落した回路データを生成させる回路データ生成工程と、
    前記回路データ生成工程によって生成された回路データを前記設計ツールに与えた結果、前記欠落した論理ブロックを前記不具合が発生しない論理ブロックに決定させる決定工程と、を前記コンピュータに実行させ、
    前記出力工程は、
    前記決定工程によって前記欠落した論理ブロックが前記不具合が発生しない論理ブロックに決定された場合、前記回路データを出力させることを特徴とする請求項1に記載の検証支援プログラム。
  3. 前記特定工程によって特定された複数の分割データを、当該分割データ同士で結合させることによって、結合データを生成させる結合データ生成工程を前記コンピュータに実行させ、
    前記回路データ生成工程は、
    前記結合データ生成工程によって生成された結合データ内の入出力信号によって接続される複数の論理ブロックのうち、一部の論理ブロックが欠落した回路データを生成させることを特徴とする請求項1または2に記載の検証支援プログラム。
  4. ハードウェア記述言語によって記述された設計データの入力を受け付けさせる入力工程と、
    前記入力工程によって入力された設計データを構成する階層モジュールのうち、最上位のモジュールを除く他のモジュールの中から任意のモジュールを選択させる選択工程と、
    前記最上位のモジュールと、前記他のモジュールのうち前記選択工程によって選択されたモジュール(以下、「選択モジュール」という)を除く残余のモジュールと、前記選択モジュール内の入出力信号に関する記述からなる記述データと、からなる合成データを生成させる合成データ生成工程と、
    前記合成データ生成工程によって生成された合成データを設計ツールに与えた結果、前記選択モジュールを不具合が発生するモジュールに決定させるモジュール決定工程と、
    前記モジュール決定工程によって前記選択モジュールが前記不具合が発生するモジュールに決定された場合、前記合成データを出力させる出力工程と、
    をコンピュータに実行させることを特徴とする検証支援プログラム。
  5. 前記合成データ内の入出力信号によって接続される複数の論理ブロックのうち、一部の論理ブロックが欠落した回路データを生成させる回路データ生成工程と、
    前記回路データ生成工程によって生成された回路データを前記設計ツールに与えた結果、前記欠落した論理ブロックを前記不具合が発生しない論理ブロックに決定させる論理ブロック決定工程と、を前記コンピュータに実行させ、
    前記出力工程は、
    前記論理ブロック決定工程によって前記欠落した論理ブロックが前記不具合が発生しない論理ブロックに決定された場合、前記回路データを出力させることを特徴とする請求項4に記載の検証支援プログラム。
  6. 請求項1〜5のいずれか一つに記載の検証支援プログラムを記録した前記コンピュータに読み取り可能な記録媒体。
  7. ハードウェア記述言語によって記述された設計データの入力を受け付ける入力手段と、
    前記入力手段によって入力された設計データを、当該設計データを構成するモジュールごとに分割することによって、複数の分割データを生成する分割データ生成手段と、
    前記分割データ生成手段によって生成された複数の分割データを設計ツールに与えた結果、当該複数の分割データのうち不具合が発生する分割データを特定する特定手段と、
    前記特定手段によって特定された分割データを出力する出力手段と、
    を備えることを特徴とする検証支援装置。
  8. ハードウェア記述言語によって記述された設計データの入力を受け付ける入力工程と、
    前記入力工程によって入力された設計データを、当該設計データを構成するモジュールごとに分割することによって、複数の分割データを生成する分割データ生成工程と、
    前記分割データ生成工程によって生成された複数の分割データを設計ツールに与えた結果、当該複数の分割データのうち不具合が発生する分割データを特定する特定工程と、
    前記特定工程によって特定された分割データを出力する出力工程と、
    を含むことを特徴とする検証支援方法。
JP2006299196A 2006-11-02 2006-11-02 検証支援プログラム、記録媒体、検証支援装置および検証支援方法 Withdrawn JP2008117136A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2006299196A JP2008117136A (ja) 2006-11-02 2006-11-02 検証支援プログラム、記録媒体、検証支援装置および検証支援方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2006299196A JP2008117136A (ja) 2006-11-02 2006-11-02 検証支援プログラム、記録媒体、検証支援装置および検証支援方法

Publications (1)

Publication Number Publication Date
JP2008117136A true JP2008117136A (ja) 2008-05-22

Family

ID=39503002

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2006299196A Withdrawn JP2008117136A (ja) 2006-11-02 2006-11-02 検証支援プログラム、記録媒体、検証支援装置および検証支援方法

Country Status (1)

Country Link
JP (1) JP2008117136A (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010146277A (ja) * 2008-12-18 2010-07-01 Fujitsu Microelectronics Ltd 検証支援プログラム、検証支援装置、および検証支援方法

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010146277A (ja) * 2008-12-18 2010-07-01 Fujitsu Microelectronics Ltd 検証支援プログラム、検証支援装置、および検証支援方法

Similar Documents

Publication Publication Date Title
JP3027009B2 (ja) 設計取り込みシステム
JP4255079B2 (ja) アサーション生成システムと回路検証システムおよびプログラムならびにアサーション生成方法
JP3571526B2 (ja) システム設計/評価cadシステムおよびそのプログラム記憶媒体
JP4783658B2 (ja) 検証支援装置、検証支援方法、検証支援プログラム、および記録媒体
JP2007087215A (ja) ハードウェアモデルの変換処理に用いられるデータ構造、コンピュータプログラム、方法、及びシステム
US8527254B2 (en) Simulator engine development system and simulator engine development method
US20080216035A1 (en) Method and computer program for configuring an integrated circuit design for static timing analysis
JP2008165747A (ja) 回路設計支援装置、回路設計支援方法、回路設計支援プログラムおよびプリント基板の製造方法
JP4480737B2 (ja) 論理検証支援プログラム、該プログラムを記録した記録媒体、論理検証支援装置、および論理検証支援方法
JP4747034B2 (ja) 検証シナリオ作成プログラム、記録媒体、検証シナリオ作成装置および検証シナリオ作成方法
JP4716964B2 (ja) タイミングダイアグラム編集プログラム、タイミングダイアグラム編集装置およびタイミングダイアグラム編集方法
JP4370335B2 (ja) Lsi解析プログラム、該プログラムを記録した記録媒体、lsi解析装置、およびlsi解析方法
JP2008117136A (ja) 検証支援プログラム、記録媒体、検証支援装置および検証支援方法
US20080127026A1 (en) Logic synthesis method and device
US7275223B2 (en) Facilitating high-level validation of integrated circuits in parallel with development of blocks in a hierarchical design approach
JPWO2006025412A1 (ja) 論理検証方法、論理モジュールデータ、デバイスデータおよび論理検証装置
JP2008090695A (ja) 集積回路設計方法、集積回路設計装置及び集積回路設計プログラム
JP2006268165A (ja) 集積回路のタイミング解析装置、集積回路のタイミング最適化装置、集積回路のタイミング解析方法、集積回路のタイミング最適化方法、集積回路基板の製造方法、制御プログラムおよび可読記録媒体
JP4231837B2 (ja) クロックツリー生成装置、クロックツリー生成方法、クロックツリー生成プログラムおよび記録媒体
JP2005275858A (ja) 図面入力装置、図面入力プログラム
US7634750B2 (en) Logic diagram display method, program, and apparatus
JP4448048B2 (ja) 構造解析プログラム
JP7351189B2 (ja) タイミング制約抽出装置、タイミング制約抽出方法およびタイミング制約抽出プログラム
JP2005043931A (ja) プログラム自動生成システム及びプログラム自動生成方法
JP4275639B2 (ja) レイアウト設計装置、およびレイアウト設計プログラム

Legal Events

Date Code Title Description
A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A712

Effective date: 20080730

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20090727

A761 Written withdrawal of application

Free format text: JAPANESE INTERMEDIATE CODE: A761

Effective date: 20101201