(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-04-04
(45)【発行日】2024-04-12
(54)【発明の名称】フォーマル検証装置及びフォーマル検証方法
(51)【国際特許分類】
G06F 30/3323 20200101AFI20240405BHJP
【FI】
G06F30/3323
(21)【出願番号】P 2022201687
(22)【出願日】2022-12-19
【審査請求日】2023-01-31
(31)【優先権主張番号】P 2022062203
(32)【優先日】2022-04-04
(33)【優先権主張国・地域又は機関】JP
(73)【特許権者】
【識別番号】591036457
【氏名又は名称】三菱電機エンジニアリング株式会社
(74)【代理人】
【識別番号】110003166
【氏名又は名称】弁理士法人山王内外特許事務所
(72)【発明者】
【氏名】伊東 正義
(72)【発明者】
【氏名】坂本 徹
【審査官】松浦 功
(56)【参考文献】
【文献】特開2011-002903(JP,A)
【文献】特開平11-219378(JP,A)
【文献】米国特許出願公開第2020/0019652(US,A1)
【文献】松島広直 外1名,分割統治法による形式的機能検証のためのインタフェイスプロトコルに対するアサーションの分割,電子情報通信学会技術研究報告,社団法人電子情報通信学会,2005年01月18日,Vol. 104, No. 589,pp. 39-44
(58)【調査した分野】(Int.Cl.,DB名)
G06F 30/30 -30/398
(57)【特許請求の範囲】
【請求項1】
繰り返し処理を行う回路に相当する論理回路、及び、当該回路における繰り返し処理の繰り返し回数に基づいて複数に分割されたアサーションに基づいて、当該回路に対して複数の検証を行う第1のフォーマル検証部と、
前記第1のフォーマル検証部による複数の検証が全て合格であるかを判定する第1の合格判定部と、
前記第1の合格判定部により複数の検証が全て合格であると判定された場合、前記回路における繰り返し処理の繰り返し回数が所望の回数であることを検証する第2のフォーマル検証部と、
前記第2のフォーマル検証部による検証が合格であるかを判定する第2の合格判定部と、
前記第1の合格判定部により複数の検証が全ては合格ではないと判定された場合、又は、前記第2の合格判定部により検証が合格ではないと判定された場合、その旨を外部に通知する通知部と
を備えたフォーマル検証装置。
【請求項2】
前記回路は、DMAコントローラであり、
前記回路における繰り返し処理は、前記DMAコントローラにおけるリード処理及びライト処理である
ことを特徴とする請求項1記載のフォーマル検証装置。
【請求項3】
前記第1のフォーマル検証部は、リード処理及びライト処理の繰り返し回数が所望の回数に達する前の動作に関わる検証、リード処理及びライト処理の繰り返し回数が所望の回数に達した後の動作に関わる検証、及び、リード処理及びライト処理の繰り返し回数が所望の回数に達した際の動作に関わる検証をそれぞれ行う
ことを特徴とする請求項2記載のフォーマル検証装置。
【請求項4】
前記回路は、積和演算回路であり、
前記回路における繰り返し処理は、前記積和演算回路における乗算処理及び加算処理である
ことを特徴とする請求項1記載のフォーマル検証装置。
【請求項5】
前記第1のフォーマル検証部は、乗算処理及び加算処理の繰り返し回数が所望の回数に達する前の動作に関わる検証、乗算処理及び加算処理の繰り返し回数が所望の回数に達した後の動作に関わる検証、及び、乗算処理及び加算処理の繰り返し回数が所望の回数に達した際の動作に関わる検証をそれぞれ行う
ことを特徴とする請求項4記載のフォーマル検証装置。
【請求項6】
第1のフォーマル検証部が、繰り返し処理を行う回路に相当する論理回路、及び、当該回路における繰り返し処理の繰り返し回数に基づいて複数に分割されたアサーションに基づいて、当該回路に対して複数の検証を行うステップと、
第1の合格判定部が、前記第1のフォーマル検証部による複数の検証が全て合格であるかを判定するステップと、
第2のフォーマル検証部が、前記第1の合格判定部により複数の検証が全て合格であると判定された場合、前記回路における繰り返し処理の繰り返し回数が所望の回数であることを検証するステップと、
第2の合格判定部が、前記第2のフォーマル検証部による検証が合格であるかを判定するステップと、
通知部が、前記第1の合格判定部により複数の検証が全ては合格ではないと判定された場合、又は、前記第2の合格判定部により検証が合格ではないと判定された場合、その旨を外部に通知するステップと
を有するフォーマル検証方法。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、繰り返し処理を行う回路に対して検証を行うフォーマル検証装置及びフォーマル検証方法に関する。
【背景技術】
【0002】
開発対象である回路の大規模化及び複雑化に伴い、当該回路に対する開発工程に占める検証工程の割合は、決して小さくない。すなわち、検証工程における検証効率が低いことは、開発工程の遅延に繋がる。
【0003】
この検証工程では、動的検証又は静的検証が用いられる。
ここで、静的検証では、回路の正しさを確認するために、一般にフォーマル検証が用いられる。フォーマル検証は、回路を数理論理学的に解析し、網羅的に検証を行う手法である。
【0004】
このフォーマル検証の問題点としては、回路の数理論理学的な複雑度が高い場合、状態爆発が起こり、検証結果を得るまでに非現実的な実行時間がかかることが挙げられる。この問題は、検証効率を著しく低下させる。
【0005】
これに対し、フォーマル検証の際に生じる疑似エラーの発生を抑制するフォーマル検証装置が知られている(例えば特許文献1参照)。なお、疑似エラーは、異常動作又は前提条件の不足に起因したエラーである。
このフォーマル検証装置では、事前に動的検証の結果を用意し、その結果の中から検証対象に対する入力及び出力の条件を抽出し、フォーマル検証における制約として適用している。これにより、このフォーマル検証装置では、疑似エラーが抑制され、フォーマル検証において解析すべきエラーを効率良く検出できるようになり、検証工程の短縮化が図れる。
【先行技術文献】
【特許文献】
【0006】
【発明の概要】
【発明が解決しようとする課題】
【0007】
上記のように、従来のフォーマル検証装置では、疑似エラーの抑制による検証工程の短縮化は可能である。しかしながら、このフォーマル検証装置では、繰り返し処理を行う回路のように数理論理学的な複雑度が高い回路に対しては、検証実行時間を抑制することができない。すなわち、繰り返し処理を行う回路に対し、フォーマル検証を用いて検証を行う場合、状態爆発を防ぐことが課題となる。なお、上記繰り返し処理を行う回路としては、例えばDMA(Direct Memory Access)コントローラが挙げられる。
【0008】
本開示は、上記のような課題を解決するためになされたもので、従来に対し、繰り返し処理を行う回路に対する検証の効率化が可能となるフォーマル検証装置を提供することを目的としている。
【課題を解決するための手段】
【0009】
本開示に係るフォーマル検証装置は、繰り返し処理を行う回路に相当する論理回路、及び、当該回路における繰り返し処理の繰り返し回数に基づいて複数に分割されたアサーションに基づいて、当該回路に対して複数の検証を行う第1のフォーマル検証部と、第1のフォーマル検証部による複数の検証が全て合格であるかを判定する第1の合格判定部と、第1の合格判定部により複数の検証が全て合格であると判定された場合、回路における繰り返し処理の繰り返し回数が所望の回数であることを検証する第2のフォーマル検証部と、第2のフォーマル検証部による検証が合格であるかを判定する第2の合格判定部と、第1の合格判定部により複数の検証が全ては合格ではないと判定された場合、又は、第2の合格判定部により検証が合格ではないと判定された場合、その旨を外部に通知する通知部とを備えたことを特徴とする。
【発明の効果】
【0010】
本開示によれば、上記のように構成したので、従来に対し、繰り返し処理を行う回路に対する検証の効率化が可能となる。
【図面の簡単な説明】
【0011】
【
図1】実施の形態1に係るフォーマル検証装置の構成例を示す図である。
【
図2】実施の形態1に係るフォーマル検証装置の動作例を示すフローチャートである。
【
図3】実施の形態1に係るフォーマル検証装置の動作例を示すフローチャートであって、検証対象である回路がDMAコントローラである場合での動作例を示すフローチャートである。
【
図4】
図4A、
図4Bは、実施の形態1に係るフォーマル検証装置のハードウェア構成例を示す図である。
【発明を実施するための形態】
【0012】
以下、実施の形態について図面を参照しながら詳細に説明する。
実施の形態1.
図1は実施の形態1に係るフォーマル検証装置1の構成例を示す図である。
フォーマル検証装置1は、検証対象である回路に対してフォーマル検証を行う装置である。このフォーマル検証装置1は、例えばLSI(Large Scale Integration)開発の検証の場面で支援装置として用いることができる。
なお、実施の形態1に係るフォーマル検証装置1が検証対象とする回路は、繰り返し処理を行う回路である。繰り返し処理を行う回路としては、例えばDMAコントローラ及び積和演算回路が挙げられる。DMAコントローラは、基本動作として、リード処理及びライト処理を繰り返す回路である。積和演算回路は、基本動作として、乗算処理及び加算処理を繰り返す回路である。
【0013】
このフォーマル検証装置1は、
図1に示すように、記録部101、第1のフォーマル検証部102、第1の合格判定部103、第2のフォーマル検証部104、第2の合格判定部105、通知部106、及び、修正完了受付部107を備えている。また、記録部101は、
図1に示すように、論理回路記録部1011、アサーション記録部1012、及び、検証結果記録部1013を有している。
【0014】
記録部101は、フォーマル検証装置1で扱われる各種の情報を記録する。
なお、記録部101としては、例えば、RAM(Random Access Memory)、ROM(Read Only Memory)、フラッシュメモリ、EPROM(Erasable Programmable ROM)、EEPROM(Electrically EPROM)等の不揮発性又は揮発性の半導体メモリ、磁気ディスク、フレキシブルディスク、光ディスク、コンパクトディスク、ミニディスク、又はDVD(Digital Versatile Disc)等が該当する。
【0015】
論理回路記録部1011は、論理回路を示す情報を記録する。この論理回路は、検証対象である回路(繰り返し処理を行う回路)に相当する回路である。なお、論理回路記録部1011に記録されている論理回路を示す情報は、ユーザにより適宜修正可能である。
【0016】
アサーション記録部1012は、上記論理回路に対する複数のアサーションを示す情報を記録する。アサーションは、検証対象である回路に対する検証を可能とするためのものである。なお、実施の形態1に係るフォーマル検証装置1で用いられるアサーションは、検証対象である回路における繰り返し処理の繰り返し回数に基づいて複数に分割されたアサーション(分割後アサーション)、及び、検証対象である回路における繰り返し処理の繰り返し回数が所望の回数であることを検証するためのアサーション(分割前アサーション)である。なお、アサーション記録部1012に記録されている複数のアサーションを示す情報は、それぞれ、ユーザにより適宜修正可能である。
【0017】
ここで、例えば、検証対象である回路がDMAコントローラである場合、複数に分割されたアサーションは、リード処理及びライト処理の繰り返し回数が所望の回数に達する前の動作に関わる検証(第1の検証)を可能とするアサーション、リード処理及びライト処理の繰り返し回数が所望の回数に達した後の動作に関わる検証(第2の検証)を可能とするアサーション、及び、リード処理及びライト処理の繰り返し回数が所望の回数に達した際の動作に関わる検証(第3の検証)を可能とするアサーションである。
【0018】
また、例えば、検証対象である回路が積和演算回路である場合、複数に分割されたアサーションは、乗算処理及び加算処理の繰り返し回数が所望の回数に達する前の動作に関わる検証(第1の検証)を可能とするアサーション、乗算処理及び加算処理の繰り返し回数が所望の回数に達した後の動作に関わる検証(第2の検証)を可能とするアサーション、及び、乗算処理及び加算処理の繰り返し回数が所望の回数に達した際の動作に関わる検証(第3の検証)を可能とするアサーションである。
【0019】
検証結果記録部1013は、第1のフォーマル検証部102による検証結果を示す情報を記録する。
【0020】
また、
図1では、論理回路記録部1011、アサーション記録部1012、及び、検証結果記録部1013が、フォーマル検証装置1の内部に設けられた場合を示した。しかしながら、これに限らず、論理回路記録部1011、アサーション記録部1012、及び、検証結果記録部1013のうちの一部又は全部は、フォーマル検証装置1の外部に設けられていてもよい。
【0021】
第1のフォーマル検証部102は、論理回路記録部1011に記録されている情報が示す論理回路、及び、アサーション記録部1012に記録されている情報が示す複数のアサーション(分割後アサーション)に基づいて、検証対象である回路に対して複数の検証を行う。すなわち、第1のフォーマル検証部102は、複数のアサーションを論理回路にそれぞれ入力することで、検証対象である回路における繰り返し処理の繰り返し回数に基づいて複数に分割された検証をそれぞれ行う。
この第1のフォーマル検証部102による検証結果を示す情報は、検証結果記録部1013に記録される。
【0022】
また、第1のフォーマル検証部102は、修正完了受付部107によりアサーションの修正が完了した旨の通知である修正完了通知、又は、論理回路の修正が完了した旨の通知である修正完了通知が受付けられた場合、上記複数の検証を再度行う。
【0023】
ここで、例えば、検証対象である回路がDMAコントローラである場合、第1のフォーマル検証部102は、このDMAコントローラにおけるリード処理及びライト処理の繰り返し回数に基づいて複数に分割された検証をそれぞれ行う。
より具体的には、第1のフォーマル検証部102は、リード処理及びライト処理の繰り返し回数が所望の回数に達する前の動作に関わる検証(第1の検証)、リード処理及びライト処理の繰り返し回数が所望の回数に達した後の動作に関わる検証(第2の検証)、及び、リード処理及びライト処理の繰り返し回数が所望の回数に達した際の動作に関わる検証(第3の検証)をそれぞれ行う。
【0024】
また、例えば、検証対象である回路が積和演算回路である場合、第1のフォーマル検証部102は、この積和演算回路における乗算処理及び加算処理の繰り返し回数に基づいて複数に分割された検証をそれぞれ行う。
より具体的には、第1のフォーマル検証部102は、乗算処理及び加算処理の繰り返し回数が所望の回数に達する前の動作に関わる検証(第1の検証)、乗算処理及び加算処理の繰り返し回数が所望の回数に達した後の動作に関わる検証(第2の検証)、及び、乗算処理及び加算処理の繰り返し回数が所望の回数に達した際の動作に関わる検証(第3の検証)をそれぞれ行う。
【0025】
この場合、第1のフォーマル検証部102は、第1の検証として、繰り返し回数が所望の回数に達する前について、リード処理とライト処理の一連の処理が連続していることを検証する。
また、第1のフォーマル検証部102は、第2の検証として、繰り返し回数が所望の回数に達した後について、リード処理とライト処理の一連の処理が発生しないことを検証する。
また、第1のフォーマル検証部102は、第3の検証として、繰り返し回数が所望の回数に達した際((所望の繰り返し回数-1)分のリード処理及びライト処理の繰り返しが発生したことを前提条件とし、その次にリード処理及びライト処理が発生した際)について、その最後のリード処理及びライト処理のみを抽出して正当性を検証する。
【0026】
第1の合格判定部103は、第1のフォーマル検証部102による複数の検証が全て合格であるかを判定する。
【0027】
第2のフォーマル検証部104は、第1の合格判定部103により複数の検証が全て合格であると判定された場合、検証対象である回路における繰り返し処理の繰り返し回数が所望の回数であることを検証(第4の検証)する。この際、第2のフォーマル検証部104は、アサーション記録部1012に記録されている情報が示すアサーション(分割前アサーション)に基づいて、検証結果記録部1013に記録されている検証結果を示す情報を読み出すことで、上記検証を行う。
【0028】
ここで、例えば、検証対象である回路がDMAコントローラである場合、第2のフォーマル検証部104は、第4の検証として、このDMAコントローラにおけるリード処理及びライト処理の繰り返し回数が所望の回数であることを検証する。
【0029】
また、例えば、検証対象である回路が積和演算回路である場合、第2のフォーマル検証部104は、第4の検証として、この積和演算回路における乗算処理及び加算処理の繰り返し回数が所望の回数であることを検証する。
【0030】
第2の合格判定部105は、第2のフォーマル検証部104による検証が合格であるかを判定する。
【0031】
通知部106は、第1の合格判定部103により複数の検証が全ては合格ではないと判定された場合、又は、第2の合格判定部105により検証が合格ではないと判定された場合、その旨を外部に通知する。
【0032】
その後、通知部106による通知を受付けたユーザは、アサーション記録部1012に記録されている情報が示すアサーションに不具合が生じているかを判定する。
ここで、ユーザは、アサーションに不具合が生じていると判定した場合には、当該アサーションを修正する。そして、アサーション記録部1012は、記録しているアサーションを示す情報を修正後のアサーションを示す情報に更新する。
一方、ユーザは、アサーションに不具合が生じていないと判定した場合には、論理回路を修正する。そして、論理回路記録部1011は、記録している論理回路を示す情報を修正後の論理回路を示す情報に更新する。
【0033】
修正完了受付部107は、ユーザから、アサーションの修正完了を示す通知である修正完了通知、又は、論理回路の修正完了を示す通知である修正完了通知を受付ける。
【0034】
次に、
図1に示す実施の形態1に係るフォーマル検証装置1の動作例について、
図2を参照しながら説明する。
なお、論理回路記録部1011は、検証対象である回路に相当する論理回路を示す情報を記録している。また、アサーション記録部1012は、上記論理回路に対する複数のアサーションを記録している。アサーション記録部1012に記録されている情報が示す複数のアサーションは、上記検証対象である回路における繰り返し処理の繰り返し回数に基づいて複数に分割されたアサーション(分割後アサーション)、及び、検証対象である回路における繰り返し処理の繰り返し回数が所望の回数であることを検証するためのアサーション(分割前アサーション)である。
【0035】
図1に示す実施の形態1に係るフォーマル検証装置1の動作例では、
図2に示すように、まず、第1のフォーマル検証部102は、論理回路記録部1011に記録されている情報が示す論理回路、及び、アサーション記録部1012に記録されている情報が示す複数のアサーション(分割後アサーション)に基づいて、検証対象である回路に対して複数の検証を行う(ステップST201)。すなわち、第1のフォーマル検証部102は、複数のアサーションを論理回路にそれぞれ入力することで、検証対象である回路における繰り返し処理の繰り返し回数に基づいて複数に分割された検証をそれぞれ行う。
【0036】
なお、第1のフォーマル検証部102における各検証の順序は問われず、順不同でよい。また、第1のフォーマル検証部102における各検証は、それぞれ単独で行われてもよいし並列で行われてもよい。
【0037】
なお、この第1のフォーマル検証部102による検証結果を示す情報は、検証結果記録部1013に記録される。すなわち、検証結果記録部1013には、分割された複数の検証の結果を示す情報がそれぞれ記録される。
【0038】
次いで、第1の合格判定部103は、第1のフォーマル検証部102による複数の検証が全て合格であるかを判定する(ステップST202)。
【0039】
このステップST202において、第1の合格判定部103が複数の検証が全て合格であると判定した場合、第2のフォーマル検証部104は、検証対象である回路における繰り返し処理の繰り返し回数が所望の回数であることを検証する(ステップST203)。この際、第2のフォーマル検証部104は、アサーション記録部1012に記録されている情報が示すアサーション(分割前アサーション)に基づいて、検証結果記録部1013に記録されている検証結果を示す情報を読み出すことで、上記検証を行う。
【0040】
このように、第2のフォーマル検証部104は、検証結果記録部1013に記録されている検証結果を示す情報を読み出して上記検証を行うことで、その分の数理論理学的な複雑度を低減可能となる。
【0041】
次いで、第2の合格判定部105は、第2のフォーマル検証部104による検証が合格であるかを判定する(ステップST204)。
【0042】
このステップST204において、第2の合格判定部105が検証が合格であると判定した場合、シーケンスは終了する。
【0043】
一方、ステップST202において、第1の合格判定部103が複数の検証が全ては合格ではないと判定した場合、又は、ステップST204において、第2の合格判定部105が検証が合格ではないと判定した場合、通知部106は、その旨を外部に通知する(ステップST205)。
【0044】
その後、通知部106による通知を受付けたユーザは、アサーション記録部1012に記録されている情報が示すアサーションに不具合が生じているかを判定する。
ここで、ユーザは、アサーションに不具合が生じていると判定した場合には、当該アサーションを修正する。そして、アサーション記録部1012は、記録しているアサーションを示す情報を修正後のアサーションを示す情報に更新する。
一方、ユーザは、アサーションに不具合が生じていないと判定した場合には、論理回路を修正する。そして、論理回路記録部1011は、記録している論理回路を示す情報を修正後の論理回路を示す情報に更新する。
【0045】
次いで、修正完了受付部107は、ユーザから、アサーションの修正完了を示す通知である修正完了通知、又は、論理回路の修正完了を示す通知である修正完了通知を受付ける(ステップST206)。
その後、シーケンスはステップST201に戻る。そして、第1のフォーマル検証部102は、上記複数の検証を再度行う。
【0046】
このように、実施の形態1に係るフォーマル検証装置1では、検証対象である回路に対するフォーマル検証において、当該回路における繰り返し処理の繰り返し回数に基づいて分割された複数の検証を行い、その後、当該繰り返し回数が所望の回数になることを検証する。
これにより、実施の形態1に係るフォーマル検証装置1では、従来に対し、検証対象である回路が有する要素を分解且つ簡略化することができ、数理論理学的な複雑度を低減可能となる。その結果、実施の形態1に係るフォーマル検証装置1では、従来に対し、フォーマル検証における状態爆発を抑制でき、検証実行時間を抑制可能となる。
【0047】
次に、検証対象とする回路がDMAコントローラである場合での、
図1に示す実施の形態1に係るフォーマル検証装置1の動作例について、
図3を参照しながら説明する。
なお、論理回路記録部1011は、DMAコントローラに相当する論理回路を示す情報を記録している。また、アサーション記録部1012は、複数のアサーションを示す情報を記録している。アサーション記録部1012に記録されている情報が示す複数のアサーションは、DMAコントローラにおけるリード処理及びライト処理の繰り返し回数に基づいて3つに分割されたアサーション(分割後アサーション)、及び、検証対象である回路における繰り返し処理の繰り返し回数が所望の回数であることを検証するためのアサーション(分割前アサーション)である。
【0048】
検証対象とする回路がDMAコントローラである場合での、
図1に示す実施の形態1に係るフォーマル検証装置1の動作例では、
図3に示すように、まず、第1のフォーマル検証部102は、論理回路記録部1011に記録されている情報が示す論理回路、及び、アサーション記録部1012に記録されている情報が示す複数のアサーション(分割後アサーション)に基づいて、DMAコントローラに対して複数の検証(第1の検証、第2の検証及び第3の検証)を行う(ステップST301)。すなわち、第1のフォーマル検証部102は、3つのアサーションを論理回路にそれぞれ入力することで、DMAコントローラにおけるリード処理及びライト処理の繰り返し回数に基づいて3つに分割された検証をそれぞれ行う。
【0049】
すなわち、第1のフォーマル検証部102は、第1の検証として、繰り返し回数が所望の回数に達する前について、リード処理とライト処理の一連の処理が連続していることを検証する。
また、第1のフォーマル検証部102は、第2の検証として、繰り返し回数が所望の回数に達した後について、リード処理とライト処理の一連の処理が発生しないことを検証する。
また、第1のフォーマル検証部102は、第3の検証として、繰り返し回数が所望の回数に達した際((所望の繰り返し回数-1)分のリード処理及びライト処理の繰り返しが発生したことを前提条件とし、その次にリード処理及びライト処理が発生した際)について、その最後のリード処理及びライト処理のみを抽出して正当性を検証する。
【0050】
なお、第1のフォーマル検証部102における各検証の順序は問われず、順不同でよい。また、第1のフォーマル検証部102における各検証は、それぞれ単独で行われてもよいし並列で行われてもよい。
【0051】
そして、この第1のフォーマル検証部102による検証結果を示す情報は、検証結果記録部1013に記録される。すなわち、検証結果記録部1013には、繰り返し回数が所望の回数に達する前の動作に関わる検証の結果を示す情報、繰り返し回数が所望の回数に達した後の動作に関わる検証の結果を示す情報、及び、繰り返し回数が所望の回数に達した際の動作に関わる検証の結果を示す情報が、それぞれ記録される。
【0052】
次いで、第1の合格判定部103は、第1のフォーマル検証部102による複数の検証が全て合格であるかを判定する(ステップST302)。
【0053】
このステップST302において、第1の合格判定部103が複数の検証が全て合格であると判定した場合、第2のフォーマル検証部104は、DMAコントローラにおけるリード処理及びライト処理の繰り返し回数が所望の回数であることを検証(第4の検証)する(ステップST303)。この際、第2のフォーマル検証部104は、アサーション記録部1012に記録されている情報が示すアサーション(分割前アサーション)に基づいて、検証結果記録部1013に記録されている検証結果を示す情報を読み出すことで、上記検証を行う。
【0054】
このように、第2のフォーマル検証部104は、検証結果記録部1013に記録されている検証結果を示す情報を読み出して上記検証を行うことで、その分の数理論理学的な複雑度を低減可能となる。
【0055】
次いで、第2の合格判定部105は、第2のフォーマル検証部104による検証が合格であるかを判定する(ステップST304)。
【0056】
このステップST304において、第2の合格判定部105が検証が合格であると判定した場合、シーケンスは終了する。
【0057】
一方、ステップST302において、第1の合格判定部103が複数の検証が全ては合格ではないと判定した場合、又は、ステップST304において、第2の合格判定部105が検証が合格ではないと判定した場合、通知部106は、その旨を外部に通知する(ステップST305)。
【0058】
その後、通知部106による通知を受付けたユーザは、アサーション記録部1012に記録されている情報が示すアサーションに不具合が生じているかを判定する。
ここで、ユーザは、アサーションに不具合が生じていると判定した場合には、当該アサーションを修正する。そして、アサーション記録部1012は、記録しているアサーションを示す情報を修正後のアサーションを示す情報に更新する。
一方、ユーザは、アサーションに不具合が生じていないと判定した場合には、論理回路を修正する。そして、論理回路記録部1011は、記録している論理回路を示す情報を修正後の論理回路を示す情報に更新する。
【0059】
次いで、修正完了受付部107は、ユーザから、アサーションの修正完了を示す通知である修正完了通知、又は、論理回路の修正完了を示す通知である修正完了通知を受付ける(ステップST306)。
その後、シーケンスはステップST301に戻る。そして、第1のフォーマル検証部102は、上記複数の検証を再度行う。
【0060】
このように、実施の形態1に係るフォーマル検証装置1では、DMAコントローラに対するフォーマル検証において、当該DMAコントローラにおけるリード処理及びライト処理の繰り返し回数に基づいて分割された複数の検証(第1の検証、第2の検証及び第3の検証)を行い、その後、当該繰り返し回数が所望の回数になることを検証(第4の検証)する。
これにより、実施の形態1に係るフォーマル検証装置1では、従来に対し、DMAコントローラが有する要素を分解且つ簡略化することができ、数理論理学的な複雑度を低減可能となる。その結果、実施の形態1に係るフォーマル検証装置1では、従来に対し、DMAコントローラに対するフォーマル検証における状態爆発を抑制でき、検証実行時間を抑制可能となる。
【0061】
次に、検証対象とする回路が積和演算回路である場合での、
図1に示す実施の形態1に係るフォーマル検証装置1の動作例について、
図3を参照しながら説明する。
なお、論理回路記録部1011は、積和演算回路に相当する論理回路を示す情報を記録している。また、アサーション記録部1012は、複数のアサーションを示す情報を記録している。アサーション記録部1012に記録されている情報が示す複数のアサーションは、積和演算回路における乗算処理及び加算処理の繰り返し回数に基づいて3つに分割されたアサーション(分割後アサーション)、及び、検証対象である回路における繰り返し処理の繰り返し回数が所望の回数であることを検証するためのアサーション(分割前アサーション)である。
【0062】
検証対象とする回路が積和演算回路である場合での、
図1に示す実施の形態1に係るフォーマル検証装置1の動作例では、
図3に示すように、まず、第1のフォーマル検証部102は、論理回路記録部1011に記録されている情報が示す論理回路、及び、アサーション記録部1012に記録されている情報が示す複数のアサーション(分割後アサーション)に基づいて、積和演算回路に対して複数の検証(第1の検証、第2の検証及び第3の検証)を行う(ステップST301)。すなわち、第1のフォーマル検証部102は、3つのアサーションを論理回路にそれぞれ入力することで、積和演算回路における乗算処理及び加算処理の繰り返し回数に基づいて3つに分割された検証をそれぞれ行う。
【0063】
すなわち、第1のフォーマル検証部102は、第1の検証として、繰り返し回数が所望の回数に達する前について、乗算処理と加算処理の一連の処理が連続していることを検証する。
また、第1のフォーマル検証部102は、第2の検証として、繰り返し回数が所望の回数に達した後について、乗算処理と加算処理の一連の処理が発生しないことを検証する。
また、第1のフォーマル検証部102は、第3の検証として、繰り返し回数が所望の回数に達した際((所望の繰り返し回数-1)分の乗算処理及び加算処理の繰り返しが発生したことを前提条件とし、その次に乗算処理及び加算処理が発生した際)について、その最後の乗算処理及び加算処理のみを抽出して正当性を検証する。
【0064】
なお、第1のフォーマル検証部102における各検証の順序は問われず、順不同でよい。また、第1のフォーマル検証部102における各検証は、それぞれ単独で行われてもよいし並列で行われてもよい。
【0065】
そして、この第1のフォーマル検証部102による検証結果を示す情報は、検証結果記録部1013に記録される。すなわち、検証結果記録部1013には、繰り返し回数が所望の回数に達する前の動作に関わる検証の結果を示す情報、繰り返し回数が所望の回数に達した後の動作に関わる検証の結果を示す情報、及び、繰り返し回数が所望の回数に達した際の動作に関わる検証の結果を示す情報が、それぞれ記録される。
【0066】
次いで、第1の合格判定部103は、第1のフォーマル検証部102による複数の検証が全て合格であるかを判定する(ステップST302)。
【0067】
このステップST302において、第1の合格判定部103が複数の検証が全て合格であると判定した場合、第2のフォーマル検証部104は、積和演算回路における乗算処理及び加算処理の繰り返し回数が所望の回数であることを検証(第4の検証)する(ステップST303)。この際、第2のフォーマル検証部104は、アサーション記録部1012に記録されている情報が示すアサーション(分割前アサーション)に基づいて、検証結果記録部1013に記録されている検証結果を示す情報を読み出すことで、上記検証を行う。
【0068】
このように、第2のフォーマル検証部104は、検証結果記録部1013に記録されている検証結果を示す情報を読み出して上記検証を行うことで、その分の数理論理学的な複雑度を低減可能となる。
【0069】
次いで、第2の合格判定部105は、第2のフォーマル検証部104による検証が合格であるかを判定する(ステップST304)。
【0070】
このステップST304において、第2の合格判定部105が検証が合格であると判定した場合、シーケンスは終了する。
【0071】
一方、ステップST302において、第1の合格判定部103が複数の検証が全ては合格ではないと判定した場合、又は、ステップST304において、第2の合格判定部105が検証が合格ではないと判定した場合、通知部106は、その旨を外部に通知する(ステップST305)。
【0072】
その後、通知部106による通知を受付けたユーザは、アサーション記録部1012に記録されている情報が示すアサーションに不具合が生じているかを判定する。
ここで、ユーザは、アサーションに不具合が生じていると判定した場合には、当該アサーションを修正する。そして、アサーション記録部1012は、記録しているアサーションを示す情報を修正後のアサーションを示す情報に更新する。
一方、ユーザは、アサーションに不具合が生じていないと判定した場合には、論理回路を修正する。そして、論理回路記録部1011は、記録している論理回路を示す情報を修正後の論理回路を示す情報に更新する。
【0073】
次いで、修正完了受付部107は、ユーザから、アサーションの修正完了を示す通知である修正完了通知、又は、論理回路の修正完了を示す通知である修正完了通知を受付ける(ステップST306)。
その後、シーケンスはステップST301に戻る。そして、第1のフォーマル検証部102は、上記複数の検証を再度行う。
【0074】
このように、実施の形態1に係るフォーマル検証装置1では、積和演算回路に対するフォーマル検証において、当該積和演算回路における乗算処理及び加算処理の繰り返し回数に基づいて分割された複数の検証(第1の検証、第2の検証及び第3の検証)を行い、その後、当該繰り返し回数が所望の回数になることを検証(第4の検証)する。
これにより、実施の形態1に係るフォーマル検証装置1では、従来に対し、積和演算回路が有する要素を分解且つ簡略化することができ、数理論理学的な複雑度を低減可能となる。その結果、実施の形態1に係るフォーマル検証装置1では、従来に対し、積和演算回路に対するフォーマル検証における状態爆発を抑制でき、検証実行時間を抑制可能となる。
【0075】
以上のように、この実施の形態1によれば、フォーマル検証装置1は、繰り返し処理を行う回路に相当する論理回路、及び、当該回路における繰り返し処理の繰り返し回数に基づいて複数に分割されたアサーションに基づいて、当該回路に対して複数の検証を行う第1のフォーマル検証部102と、第1のフォーマル検証部102による複数の検証が全て合格であるかを判定する第1の合格判定部103と、第1の合格判定部103により複数の検証が全て合格であると判定された場合、回路における繰り返し処理の繰り返し回数が所望の回数であることを検証する第2のフォーマル検証部104と、第2のフォーマル検証部104による検証が合格であるかを判定する第2の合格判定部105と、第1の合格判定部103により複数の検証が全ては合格ではないと判定された場合、又は、第2の合格判定部105により検証が合格ではないと判定された場合、その旨を外部に通知する通知部106とを備えた。これにより、実施の形態1に係るフォーマル検証装置1は、従来に対し、繰り返し処理を行う回路に対する検証の効率化が可能となる。その結果、実施の形態1に係るフォーマル検証装置1は、従来に対し、検証対象である回路に対する検証工程の短縮化が可能となる。
【0076】
最後に、
図4を参照して、実施の形態1に係るフォーマル検証装置1のハードウェア構成例を説明する。
フォーマル検証装置1における第1のフォーマル検証部102、第1の合格判定部103、第2のフォーマル検証部104、第2の合格判定部105、通知部106、及び、修正完了受付部107の各機能は、処理回路501により実現される。処理回路501は、
図4Aに示すように、専用のハードウェアであってもよいし、
図4Bに示すように、メモリ503に格納されるプログラムを実行するCPU(Central Processing Unit、中央処理装置、処理装置、演算装置、マイクロプロセッサ、マイクロコンピュータ、プロセッサ、又はDSP(Digital Signal Processor)ともいう)502であってもよい。
【0077】
処理回路501が専用のハードウェアである場合、処理回路501は、例えば、単一回路、複合回路、プログラム化したプロセッサ、並列プログラム化したプロセッサ、ASIC(Application Specific Integrated Circuit)、FPGA(Field Programmable Gate Array)、又はこれらを組み合わせたものが該当する。第1のフォーマル検証部102、第1の合格判定部103、第2のフォーマル検証部104、第2の合格判定部105、通知部106、及び、修正完了受付部107の各部の機能それぞれを処理回路501で実現してもよいし、各部の機能をまとめて処理回路501で実現してもよい。
【0078】
処理回路501がCPU502の場合、第1のフォーマル検証部102、第1の合格判定部103、第2のフォーマル検証部104、第2の合格判定部105、通知部106、及び、修正完了受付部107の機能は、ソフトウェア、ファームウェア、又はソフトウェアとファームウェアとの組み合わせにより実現される。ソフトウェア及びファームウェアはプログラムとして記述され、メモリ503に格納される。処理回路501は、メモリ503に記憶されたプログラムを読み出して実行することにより、各部の機能を実現する。すなわち、フォーマル検証装置1は、処理回路501により実行されるときに、例えば
図2及び
図3に示した各ステップが結果的に実行されることになるプログラムを格納するためのメモリ503を備える。また、これらのプログラムは、第1のフォーマル検証部102、第1の合格判定部103、第2のフォーマル検証部104、第2の合格判定部105、通知部106、及び、修正完了受付部107の手順及び方法をコンピュータに実行させるものであるともいえる。ここで、メモリ503としては、例えば、RAM(Random Access Memory)、ROM(Read Only Memory)、フラッシュメモリ、EPROM(Erasable Programmable ROM)、EEPROM(Electrically EPROM)等の不揮発性又は揮発性の半導体メモリ、磁気ディスク、フレキシブルディスク、光ディスク、コンパクトディスク、ミニディスク、又はDVD(Digital Versatile Disc)等が該当する。
【0079】
なお、第1のフォーマル検証部102、第1の合格判定部103、第2のフォーマル検証部104、第2の合格判定部105、通知部106、及び、修正完了受付部107の各機能について、一部を専用のハードウェアで実現し、一部をソフトウェア又はファームウェアで実現するようにしてもよい。例えば、第1のフォーマル検証部102については専用のハードウェアとしての処理回路501でその機能を実現し、第1の合格判定部103、第2のフォーマル検証部104、第2の合格判定部105、通知部106、及び、修正完了受付部107については処理回路501がメモリ503に格納されたプログラムを読み出して実行することによってその機能を実現することが可能である。
【0080】
このように、処理回路501は、ハードウェア、ソフトウェア、ファームウェア、又はこれらの組み合わせによって、上述の各機能を実現することができる。
【0081】
なお、実施の形態の任意の構成要素の変形、若しくは実施の形態の任意の構成要素の省略が可能である。
【符号の説明】
【0082】
1 フォーマル検証装置、101 記録部、102 第1のフォーマル検証部、103 第1の合格判定部、104 第2のフォーマル検証部、105 第2の合格判定部、106 通知部、107 修正完了受付部、501 処理回路、502 CPU、503 メモリ、1011 論理回路記録部、1012 アサーション記録部、1013 検証結果記録部。