JP5825409B2 - Verification support program, verification support apparatus, and verification support method - Google Patents
Verification support program, verification support apparatus, and verification support method Download PDFInfo
- Publication number
- JP5825409B2 JP5825409B2 JP2014149308A JP2014149308A JP5825409B2 JP 5825409 B2 JP5825409 B2 JP 5825409B2 JP 2014149308 A JP2014149308 A JP 2014149308A JP 2014149308 A JP2014149308 A JP 2014149308A JP 5825409 B2 JP5825409 B2 JP 5825409B2
- Authority
- JP
- Japan
- Prior art keywords
- assertion
- register
- clock
- value
- change
- 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.)
- Active
Links
Images
Description
本発明は、回路の検証を支援する検証支援プログラム、検証支援装置、および検証支援方法に関する。 The present invention relates to a verification support program, a verification support apparatus, and a verification support method that support circuit verification.
従来から、検証対象回路についてのアサーションを用いたシミュレーションや、検証対象回路のレジスタを監視するシミュレーションが開示されている。 Conventionally, a simulation using an assertion about a circuit to be verified and a simulation for monitoring a register of the circuit to be verified have been disclosed.
しかしながら、上述した従来技術では、検証対象回路の仕様書に従って好適に振る舞う回路モデルを作成する場合、仕様書が複雑だと、正しい振る舞いをする回路モデルを作成するのに非常に時間がかかるという問題があった。 However, in the above-described conventional technology, when creating a circuit model that behaves favorably according to the specification of the circuit to be verified, if the specification is complicated, it takes a very long time to create a circuit model that behaves correctly. was there.
一方、回路モデルの精度が低くても、検証対象回路についてのアサーション(アサートプロパティ、検証プロパティとも呼ぶ)が仕様書から正しく記述できれば、回路モデルでの検証対象回路の振る舞いに誤りがあることを検出することができる。しかしながら、検証者が検証対象回路についてアサーションを記述する場合、1個のレジスタについて複数の検証シナリオが存在するときは、アサーションの記述が難しくなる。 On the other hand, even if the accuracy of the circuit model is low, if the assertion (also referred to as assert property or verification property) for the circuit to be verified can be correctly described from the specification, it is detected that there is an error in the behavior of the circuit to be verified in the circuit model. can do. However, when the verifier describes the assertion for the circuit to be verified, it is difficult to describe the assertion when there are a plurality of verification scenarios for one register.
したがって、アサーションで定義した検証シナリオ外でレジスタの値が変化した場合は、アサーションでは検出することができないという問題があった。また、検証対象回路が複数のクロックで動作する場合は、回路モデルでの振る舞いもより複雑化するため、アサーションで定義した検証シナリオ外でレジスタの値の変化を検出するのは、より困難であるという問題があった。 Therefore, when the value of the register changes outside the verification scenario defined by the assertion, there is a problem that it cannot be detected by the assertion. In addition, when the verification target circuit operates with multiple clocks, the behavior of the circuit model becomes more complex, so it is more difficult to detect changes in register values outside the verification scenario defined in the assertion. There was a problem.
1つの側面では、本発明は、回路について定義したシナリオ外でのバグの特定の容易化を図ることができる検証支援プログラム、検証支援装置、および検証支援方法を提供することを目的とする。 In one aspect, an object of the present invention is to provide a verification support program, a verification support apparatus, and a verification support method capable of facilitating specification of a bug outside a scenario defined for a circuit.
本発明の一態様として、回路が満たすべきレジスタの値を規定するアサーション群の中から前記回路の模擬中に成立するアサーションを検出し、前記アサーションが検出されたクロックタイミングの次のクロックタイミングで、前記レジスタの期待値を前記アサーションで規定された前記レジスタの値に更新し、前記レジスタの値の変化を検出し、前記レジスタの値の変化が検出された場合、当該変化後の前記レジスタの値と更新後の前記レジスタの期待値とが、一致するか否かを判断し、判断された判断結果に基づいて、前記レジスタの値の変化の正否を決定し、決定された決定結果を出力する検証支援プログラム、検証支援装置、および検証支援方法が提案される。 As one aspect of the present invention, an assertion established during simulation of the circuit is detected from an assertion group that defines a register value to be satisfied by the circuit, and at the clock timing next to the clock timing at which the assertion is detected, Update the expected value of the register to the value of the register specified by the assertion, detect a change in the value of the register, and if a change in the value of the register is detected, the value of the register after the change And whether the expected value of the register after the update matches, determines whether the change in the value of the register is correct based on the determined determination result, and outputs the determined determination result A verification support program, a verification support device, and a verification support method are proposed.
また、回路内の複数のクロックで動作するレジスタについて前記複数のクロックのうちいずれかのクロックのクロックタイミングで満たすべき前記レジスタの値を規定するアサーション群の中から、前記回路の模擬中に成立するアサーションを検出し、前記レジスタの値の変化を検出し、前記複数のクロックの各々のクロックにおいて、前記レジスタの値の変化が検出されたクロックタイミング以降で最初に到来するクロックタイミングごとに、当該クロックタイミングとなるクロックと検出されたアサーションで規定されたクロックとが同一クロックであるか否かを判断し、判断された判断結果に基づいて、前記レジスタの値の変化の正否を決定し、決定された決定結果を出力する検証支援プログラム、検証支援装置、および検証支援方法が提案される。 Further, a register operating with a plurality of clocks in a circuit is established during simulation of the circuit from among an assertion group that defines the value of the register to be satisfied at the clock timing of any one of the plurality of clocks. Detect an assertion, detect a change in the value of the register, and for each clock of the plurality of clocks, for each clock timing that comes first after the clock timing at which the change in the value of the register is detected It is determined whether or not the clock as the timing and the clock specified by the detected assertion are the same clock, and whether or not the change in the register value is correct is determined based on the determined determination result. Support program, verification support device, and verification support method for outputting the determined result It proposed.
本発明の一態様によれば、回路について定義したシナリオ外でのバグの特定の容易化を図ることができるという効果を奏する。 According to one embodiment of the present invention, there is an effect that it is possible to easily identify a bug outside a scenario defined for a circuit.
以下に添付図面を参照して、本発明にかかる検証支援プログラム、検証支援装置、および検証支援方法の実施の形態を詳細に説明する。以降、単一クロックで動作する検証対象回路については実施の形態1で説明し、複数クロックで動作する検証対象回路については実施の形態2で説明する。また、検証対象回路内のレジスタ群のうちアサーションの対象となったレジスタを「レジスタR」とする。 Exemplary embodiments of a verification support program, a verification support apparatus, and a verification support method according to the present invention will be described below in detail with reference to the accompanying drawings. Hereinafter, the verification target circuit operating with a single clock will be described in the first embodiment, and the verification target circuit operating with a plurality of clocks will be described in the second embodiment. Further, the register that is the object of assertion in the register group in the circuit to be verified is referred to as “register R”.
(実施の形態1)
<アサーションによる検証対象回路のチェック例>
図1は、実施の形態1にかかるアサーションによる検証対象回路のチェック例を示す説明図である。アサーションとは、検証対象回路の設計が満たすべき性質を定義したデータである。図1では、アサーションの一例として、アサーションA1,A2が定義されているものとする。アサーションA1は、たとえば、Verilogなどのハードウェア記述言語を用いて記述されている。
(Embodiment 1)
<Example of checking target circuit by assertion>
FIG. 1 is an explanatory diagram of an example of checking a circuit to be verified by assertion according to the first embodiment. Assertion is data that defines the properties that the design of the circuit to be verified should satisfy. In FIG. 1, it is assumed that assertions A1 and A2 are defined as examples of assertions. The assertion A1 is described using a hardware description language such as Verilog, for example.
アサーションA1は、『クロックClkの立ち上がりにおいて、入力Iに「1」が入力されると1サイクル後にレジスタRの値が「3」に変化する』ことをチェックするアサーションである。アサーションA2は、『クロックClkの立ち上がりにおいて、入力Iに「2」が入力されると1サイクル後にレジスタRの値が「4」に変化する』ことをチェックするアサーションである。 The assertion A1 is an assertion for checking that “the value of the register R changes to“ 3 ”after one cycle when“ 1 ”is input to the input I at the rising edge of the clock Clk” ”. The assertion A2 is an assertion for checking that “the value of the register R changes to“ 4 ”after one cycle when“ 2 ”is input to the input I at the rising edge of the clock Clk” ”.
また、アサーションA1,A2には、「updateR_spec」が記述されている。「updateR_spec」のように末尾に挿入された記述は、挿入先のアサーションが成立した場合に呼び出されるサブルーチンである。この場合の挿入記述である「updateR_spec」は、期待値R_specの更新を指示する記述である。したがって、挿入先のアサーションをアサーションA1とし、アサーションA1が成立すると、期待値R_specをアサーションA1でのレジスタRの値「3」に更新することとなる。 In addition, “updateR_spec” is described in the assertions A1 and A2. The description inserted at the end such as “updateR_spec” is a subroutine called when the assertion at the insertion destination is established. The “updateR_spec” that is the insertion description in this case is a description instructing the update of the expected value R_spec. Therefore, when the assertion at the insertion destination is assertion A1 and the assertion A1 is established, the expected value R_spec is updated to the value “3” of the register R in the assertion A1.
また、検証対象回路は、クロックClkで動作し、入力IとレジスタRの振る舞いが規定された回路モデルである。具体的には、入力Iは、クロックClkの立ち上がり時刻t1で「5」から「1」に変化する。また、レジスタRは、クロックClkの立ち上がり時刻t2で「2」から「3」に変化し、時刻t5で「3」から「5」に変化する。 The circuit to be verified is a circuit model that operates with the clock Clk and defines the behavior of the input I and the register R. Specifically, the input I changes from “5” to “1” at the rising time t1 of the clock Clk. The register R changes from “2” to “3” at the rising time t2 of the clock Clk, and changes from “3” to “5” at the time t5.
ここで、時刻t1で入力Iが「5」から「1」に変化した場合、その1サイクル後の立ち上がり時刻t2でレジスタRの値が「2」から「3」に変化しているため、アサーションA1が成立していることがチェックされる。 Here, when the input I changes from “5” to “1” at time t1, the value of the register R changes from “2” to “3” at the rising time t2 after one cycle. It is checked that A1 is established.
このように、アサーションA1が成立することが確認された場合、その1サイクル後の立ち上がり時刻t3において、レジスタRの期待値R_specを「2」から「3」に更新する。これにより、立ち上がり時刻t3以降のレジスタRの期待値R_specは、R_spec=3となり、アサーションA1が成立した回路モデルでのレジスタRの値(R=3)と一致し、整合性を保つことができる。 Thus, when it is confirmed that the assertion A1 is established, the expected value R_spec of the register R is updated from “2” to “3” at the rising time t3 after one cycle. As a result, the expected value R_spec of the register R after the rising time t3 becomes R_spec = 3, which matches the value of the register R (R = 3) in the circuit model in which the assertion A1 is established, and can maintain consistency. .
一方、クロックClkの立ち上がり時刻t5では、レジスタRの値が「3」から「5」に変化しているが、いずれのアサーションA1,A2どおりでもない予期しない変化である。具体的には、その1サイクル後の立ち上がり時刻t6において、レジスタRの値「5」と期待値R_specの「3」が不一致となるため、アサーション外でのレジスタRの値の変化であるとしてエラー検出される。 On the other hand, at the rising time t5 of the clock Clk, the value of the register R changes from “3” to “5”, but this is an unexpected change that is not the same as any of the assertions A1 and A2. Specifically, at the rising time t6 after one cycle, the value “5” of the register R and the expected value R_spec “3” do not coincide with each other, and therefore an error is assumed as a change in the value of the register R outside the assertion. Detected.
このように、本実施の形態では、立ち上がり時刻t1〜t2での振る舞いのように、アサーションA1,A2が成立した場合には、レジスタRの期待値R_specをアサーションA1,A2成立時のレジスタRの値に更新することで、アサーションA1,A2成立以降において、レジスタRの値とその期待値R_specとが一致する。したがって、アサーションA1,A2成立以降、レジスタRにおいて予期しない変化が発生するまで検証対象回路についてアサーションA1,A2外でレジスタRの値が変化しないことを保証することができる。 As described above, in this embodiment, when assertions A1 and A2 are established as in the behavior at the rise times t1 to t2, the expected value R_spec of the register R is changed to the value of the register R when the assertions A1 and A2 are established. By updating to the value, the value of the register R matches the expected value R_spec after the assertions A1 and A2 are established. Therefore, it can be ensured that the value of the register R does not change outside the assertions A1 and A2 for the verification target circuit after the assertions A1 and A2 are established until an unexpected change occurs in the register R.
一方、立ち上がり時刻t5でのレジスタRの予期しない変化のようにアサーションA1,A2外でレジスタRの値が変化した場合は、エラーとして通知することで、アサーションA1,A2で定義されていないにもかかわらず、バグの特定が容易となる。このように、アサーションA1,A2で定義されていないシナリオで発生するバグが検出できるため、アサーションにより検証対象回路の振る舞いを網羅できない場合であっても、バグの検出が可能となる。 On the other hand, when the value of the register R changes outside the assertions A1 and A2, such as an unexpected change of the register R at the rise time t5, an error is notified so that it is not defined in the assertions A1 and A2. Regardless, bugs can be easily identified. As described above, since a bug that occurs in a scenario that is not defined in the assertions A1 and A2 can be detected, the bug can be detected even when the behavior of the circuit to be verified cannot be covered by the assertion.
そして、検証者が、特定されたバグについてデバッグをおこなうことで、検証対象回路についてアサーション外でレジスタRの値が変化しないことを保証することができる。 The verifier can debug the identified bug to ensure that the value of the register R does not change outside the assertion for the circuit to be verified.
<検証支援装置のハードウェア構成例>
図2は、実施の形態1にかかる検証支援装置のハードウェア構成例を示すブロック図である。図2において、検証支援装置は、CPU(Central Processing Unit)201と、ROM(Read Only Memory)202と、RAM(Random Access Memory)203と、磁気ディスクドライブ204と、磁気ディスク205と、光ディスクドライブ206と、光ディスク207と、ディスプレイ208と、I/F(Interface)209と、キーボード210と、マウス211と、スキャナ212と、プリンタ213と、を備えている。また、各構成部はバス200によってそれぞれ接続されている。
<Hardware configuration example of verification support device>
FIG. 2 is a block diagram of a hardware configuration example of the verification support apparatus according to the first embodiment. In FIG. 2, the verification support apparatus includes a CPU (Central Processing Unit) 201, a ROM (Read Only Memory) 202, a RAM (Random Access Memory) 203, a
ここで、CPU201は、検証支援装置の全体の制御を司る。ROM202は、ブートプログラムなどのプログラムを記憶している。RAM203は、CPU201のワークエリアとして使用される。磁気ディスクドライブ204は、CPU201の制御にしたがって磁気ディスク205に対するデータのリード/ライトを制御する。磁気ディスク205は、磁気ディスクドライブ204の制御で書き込まれたデータを記憶する。
Here, the
光ディスクドライブ206は、CPU201の制御にしたがって光ディスク207に対するデータのリード/ライトを制御する。光ディスク207は、光ディスクドライブ206の制御で書き込まれたデータを記憶したり、光ディスク207に記憶されたデータをコンピュータに読み取らせたりする。
The
ディスプレイ208は、カーソル、アイコンあるいはツールボックスをはじめ、文書、画像、機能情報などのデータを表示する。このディスプレイ208は、たとえば、CRT、TFT液晶ディスプレイ、プラズマディスプレイなどを採用することができる。
The
インターフェース(以下、「I/F」と略する。)209は、通信回線を通じてLAN(Local Area Network)、WAN(Wide Area Network)、インターネットなどのネットワーク214に接続され、このネットワーク214を介して他の装置に接続される。そして、I/F209は、ネットワーク214と内部のインターフェースを司り、外部装置からのデータの入出力を制御する。I/F209には、たとえばモデムやLANアダプタなどを採用することができる。
An interface (hereinafter abbreviated as “I / F”) 209 is connected to a network 214 such as a LAN (Local Area Network), a WAN (Wide Area Network), and the Internet through a communication line. Connected to other devices. The I /
キーボード210は、文字、数字、各種指示などの入力のためのキーを備え、データの入力をおこなう。また、タッチパネル式の入力パッドやテンキーなどであってもよい。マウス211は、カーソルの移動や範囲選択、あるいはウィンドウの移動やサイズの変更などをおこなう。ポインティングデバイスとして同様に機能を備えるものであれば、トラックボールやジョイスティックなどであってもよい。
The
スキャナ212は、画像を光学的に読み取り、検証支援装置内に画像データを取り込む。なお、スキャナ212は、OCR(Optical Character Reader)機能を持たせてもよい。また、プリンタ213は、画像データや文書データを印刷する。プリンタ213には、たとえば、レーザプリンタやインクジェットプリンタを採用することができる。
The
<検証支援装置の機能的構成例>
つぎに、実施の形態1にかかる検証支援装置の機能的構成例について説明する。
<Functional configuration example of verification support device>
Next, a functional configuration example of the verification support apparatus according to the first embodiment will be described.
図3は、実施の形態1にかかる検証支援装置の機能的構成例を示すブロック図である。検証支援装置は、編集処理部301とチェッカーモジュール群CMとを有する。編集処理部301は、選択部311と編集部312とを有する。編集処理部301(選択部311および編集部312)およびチェッカーモジュール群CMは、具体的には、たとえば、図2に示したROM202、RAM203、磁気ディスク205、光ディスク207などの記憶装置に記憶されたプログラムをCPU201に実行させることにより、または、I/F209により、その機能を実現する。
FIG. 3 is a block diagram of a functional configuration example of the verification support apparatus according to the first embodiment. The verification support apparatus includes an
アサーション群310,320は、検証対象回路についてのアサーションの集合である。アサーション群310は、編集処理部301による編集前のアサーション群である。アサーション群310内のアサーションとは、たとえば、図1のアサーションA1,A2において、「updateR_spec」が挿入されていないアサーションである。一方、アサーション群320は、編集処理部301によりアサーション群310が編集された編集後のアサーション群である。アサーション群320内のアサーションとは、たとえば、図1のアサーションA1,A2である。
The
選択部311は、アサーション群310の中から未選択のアサーションを選択する。選択部311は、未選択のアサーションがなくなるまで選択をつづける。編集部312は、選択部311によって選択されたアサーション(選択アサーション)に、検証対象回路内のレジスタの期待値の更新を指示する更新指示記述を挿入する。挿入された更新指示記述は期待値の更新サブルーチンを呼び出す記述である。
The
更新指示記述とは、たとえば、図1に示した「updateR_spec」が挙げられる。「updateR_spec」は、挿入先のアサーション内の「R_spec」を更新するサブルーチンである。このように、編集部312では、選択アサーションごとに、更新指示記述を挿入することで、編集後のアサーション群320を生成することができる。編集済みのアサーション群320は、チェッカーモジュール群CMに参照される。
An example of the update instruction description is “updateR_spec” shown in FIG. “UpdateR_spec” is a subroutine for updating “R_spec” in the assertion at the insertion destination. As described above, the editing unit 312 can generate an edited
チェッカーモジュール群CMは、検証対象回路内のレジスタごとに用意されたn個(nはアサーションで定義されたレジスタ数)のチェッカーモジュールCM1,…,CMi,…,CMnである。チェッカーモジュールCMiは、チェック対象のレジスタやアサーション(アサーション群320内のアサーション)が異なるだけで処理内容は同一である。 The checker module group CM includes n checker modules CM1,..., CMi,..., CMn prepared for each register in the circuit to be verified (n is the number of registers defined by the assertion). The checker module CMi has the same processing contents except for the register to be checked and the assertion (assertion in the assertion group 320).
図4は、チェッカーモジュールの機能的構成例を示すブロック図である。チェッカーモジュールCMiは、第1の検出部401と、更新部402と、第2の検出部403と、決定部404と、出力部405とを備えている。第1の検出部401〜出力部405は、具体的には、たとえば、図2に示したROM202、RAM203、磁気ディスク205、光ディスク207などの記憶装置に記憶されたプログラムをCPU201に実行させることにより、または、I/F209により、その機能を実現する。
FIG. 4 is a block diagram illustrating a functional configuration example of the checker module. The checker module CMi includes a first detection unit 401, an
第1の検出部401は、単一のクロックClkで動作する検証対象回路が満たすべきレジスタRの値を規定するアサーション群320の中から検証対象回路の模擬中に成立するアサーションを検出する。単一のクロックClkで動作すれば、検証対象回路全体でもよく、検証対象回路の一部の回路ブロックでもよい。第1の検出部401は、チェッカーモジュールCMiで対象となるレジスタRについて成立するアサーション(アサーション群320内のアサーション)を模擬中に検出する。たとえば、図1のように、第1の検出部401は、単一のクロックClkの時刻t2において、アサーションA1,A2のうちアサーションA1が成立したことを検出する。
The first detection unit 401 detects an assertion that is established during simulation of the verification target circuit from the
更新部402は、第1の検出部401によってアサーションが検出されたクロックタイミングの次のクロックタイミングで、レジスタRの期待値R_specをアサーションで規定されたレジスタRの値に更新する。具体的には、更新部402は、成立したアサーションの更新指示記述「updateR_spec」を実行する期待値R_specの更新サブルーチンである。これにより、期待値R_specが、検出時刻の次の時刻で、模擬中のレジスタRの値(すなわち、成立したアサーションでのレジスタRの値)に更新される。したがって、更新部402による更新以降は、検証対象回路が正しく設計されていれば、アサーションが成立しない限り、レジスタRの値と期待値R_specは同一の値となるはずである。
The
第2の検出部403は、更新部402による更新後におけるレジスタRの期待値R_specとレジスタRの値との不一致を検出する。具体的には、たとえば、第2の検出部403は、チェッカーモジュールCMiで対象となるレジスタRの値の変化をクロックClkの立ち上がり時刻ごとに(立ち下がり時刻ごとでもよい)監視する。これにより、検証対象回路が正しく設計されていれば、アサーション群320内のレジスタRについてのいずれのアサーションも成立しない限り、レジスタRの値と期待値R_specは一致するはずである。一方、不一致となる場合は、レジスタRは、アサーション群320で定義されていない変化をしたこととなる。
The
決定部404は、第2の検出部403によって検出された検出結果に基づいて、レジスタRの値の変化の正否を決定する。具体的には、たとえば、決定部404は、第2の検出部403によって不一致が検出された場合、レジスタRの値の変化が、アサーション群320で規定されていない変化(誤った変化)であると決定する。一方、第2の検出部403によって一致が検出された場合、レジスタRの値の変化が、期待通りの変化(正しい変化)であると決定する。
The
なお、決定部404は、第2の検出部403によって不一致が検出された場合のみ、決定処理を実行することとしてもよい。第2の検出部403は毎時刻検出処理を実行するが、不一致の検出回数は一致の検出回数よりも少ないと考えられるため、不一致の場合のみ決定処理を実行することで検証支援処理の高速化を図ることができる。
Note that the
出力部405は、決定部404によって決定された決定結果を出力する。具体的には、たとえば、出力部405は、決定部404によって誤った変化であると決定された場合、レジスタRの不一致が検出された時刻とレジスタRの識別情報を出力する。識別情報とは、レジスタRを一意に特定する情報であり、たとえば、レジスタ名である。たとえば、図1の例では、出力部405は、{NG,時刻t5,R}を出力する。
The
また、出力部405は、レジスタRの不一致が検出された時刻の次サイクルとなる時刻とレジスタRの識別情報を出力する。たとえば、図1の例では、出力部405は、{NG,時刻t6,R}を出力する。このとき、レジスタRの値も出力してもよい。この場合、出力部405は、{NG,時刻t6,R=5}を出力する。なお、出力部405は、決定部404によって正しい変化であると決定された場合、一致が検出された時刻とレジスタRの識別情報を出力することとしてもよい。たとえば、図1の例では、出力部405は、{OK,時刻t3,R}を出力する。
Further, the
このような出力結果は、ディスプレイ208に表示してもよく、プリンタ213に印刷出力してもよく、通信可能なコンピュータに送信してもよい。また、検証支援装置内の記憶装置(RAM203、磁気ディスク205)に格納してもよい。
Such an output result may be displayed on the
<編集処理手順>
図5は、実施の形態1にかかる検証支援装置によるアサーション群310の編集処理手順を示すフローチャートである。選択部311は、アサーション群310の中から未選択のアサーションがあるか否かを判断する(ステップS501)。
<Editing procedure>
FIG. 5 is a flowchart of an editing process procedure of the
未選択のアサーションがある場合(ステップS501:Yes)、選択部311は、アサーション群310の中から未選択のアサーションを1つ選択する(ステップS502)。そして、編集部312は、選択アサーションに期待値の更新サブルーチンを呼び出す更新指示記述を挿入する(ステップS503)。このあと、編集部312は、挿入後の選択アサーションを検証支援装置内の記憶装置に保持し(ステップS504)、ステップS501に戻る。
When there is an unselected assertion (step S501: Yes), the
ステップS501において、未選択のアサーションがない場合は(ステップS501:No)、編集が完了したとして編集処理を終了する。これにより、未編集のアサーション群310から更新指示記述が挿入されたアサーション群320に編集されるため、チェッカーモジュール群CMでのチェック処理においてアサーション成立時に自動的に期待値R_specを更新することができる。
In step S501, if there is no unselected assertion (step S501: No), the editing process is terminated because the editing is completed. Thus, since the
<チェッカーモジュールCMiによる検証対象回路の模擬中での期待値更新処理手順>
図6は、チェッカーモジュールCMiによる検証対象回路の模擬中での期待値更新処理手順を示すフローチャートである。
<Expected value update processing procedure during simulation of circuit to be verified by checker module CMi>
FIG. 6 is a flowchart illustrating an expected value update processing procedure during simulation of the circuit to be verified by the checker module CMi.
まず、第1の検出部401が、チェッカーモジュールCMiで対象にしているレジスタRについて、検証対象回路の模擬中に成立するアサーションがアサーション群320の中から検出されるまで待ち受ける(ステップS601:No)。検出された場合(ステップS601:Yes)、更新部402は、次のサイクル(次のクロックタイミング)で、検出アサーションのレジスタRの値を期待値R_specに更新する(ステップS602)。そして、ステップS601に戻る。図6のフローチャートは、検証対象回路の模擬が終了することで終了する。
First, the first detection unit 401 waits until an assertion established during simulation of the verification target circuit is detected from the
<チェッカーモジュールCMiによる検証対象回路の模擬中での正否検出処理手順>
図7は、チェッカーモジュールCMiによる検証対象回路の模擬中での正否検出処理手順を示すフローチャートである。図7では、例としてクロックClkの立ち上がり時刻を検出することとするが、立ち下がり時刻でもよい。
<Procedure detection processing procedure during simulation of circuit to be verified by checker module CMi>
FIG. 7 is a flowchart showing a correct / incorrect detection process procedure during simulation of a circuit to be verified by the checker module CMi. In FIG. 7, the rising time of the clock Clk is detected as an example, but the falling time may be used.
まず、第2の検出部403は、クロックClkの立ち上がり時刻になるのを待ち受け(ステップS701:No)、立ち上がり時刻になると(ステップS701:Yes)、レジスタRの値と期待値R_specとが一致するか否かを判断する(ステップS702)。一致する場合(ステップS702:Yes)、ステップS701に戻る。
First, the
一方、不一致である場合(ステップS702:No)、決定部404は、次のサイクル(次のクロックタイミング)で、レジスタRの値の変化はアサーション群320に規定されていない誤った変化であると決定する(ステップS703)。そして、出力部405は、決定結果を出力し(ステップS704)、ステップS701に戻る。図7のフローチャートは、検証対象回路の模擬が終了することで終了する。
On the other hand, when there is a mismatch (step S702: No), the
このように、実施の形態1によれば、アサーションが成立する都度、期待値R_specをレジスタRの値に更新するため、更新後は、設計が正しければレジスタRの値と期待値R_specの値は一致し続ける。このため、レジスタRの値と期待値R_specの値との不一致を検出すれば、アサーション群320のいずれのアサーションも成立していないにもかかわらず、レジスタRの値が変化したこととなる。
Thus, according to the first embodiment, every time an assertion is made, the expected value R_spec is updated to the value of the register R. After the update, if the design is correct, the value of the register R and the expected value R_spec are Keep matching. Therefore, if a mismatch between the value of the register R and the value of the expected value R_spec is detected, the value of the register R has changed even though no assertion of the
したがって、アサーション群320のいずれのアサーションでも規定されていない変化であることが判明するため、アサーション群では検出できないバグを効率的に検出することができる。そして、検証者が、特定されたバグについてデバッグをおこなうことで、検証対象回路についてアサーション外でレジスタRの値が変化しないことを保証することができる。
Therefore, since it is found that the change is not defined in any assertion of the
また、上述した実施の形態1の検証対象回路は単一のクロックClkで動作する回路としたが、検証対象回路が複数のクロックで動作する場合であっても、クロックドメインごとに検証対象とすることで、実施の形態1を適用することもできる。 Further, although the verification target circuit of the first embodiment described above is a circuit that operates with a single clock Clk, even if the verification target circuit operates with a plurality of clocks, the verification target circuit is set as a verification target for each clock domain. Thus, the first embodiment can also be applied.
(実施の形態2)
つぎに、実施の形態2について説明する。実施の形態1では、対象となるレジスタRを動作させるクロックが1つだけである。このため、アサーションに更新指示記述を挿入すし、アサーション成立時に期待値R_specを更新することで、『設計が正しければ、レジスタRの値と期待値R_specとは一致する』という状態にする。これにより、レジスタRの値と期待値R_specとが不一致であれば、期待通りではないレジスタRの値の変化であるとして、アサーション群320のいずれのアサーションでも定義されていない誤った変化であることを検出していた。
(Embodiment 2)
Next, a second embodiment will be described. In the first embodiment, there is only one clock for operating the target register R. For this reason, an update instruction description is inserted into the assertion, and the expected value R_spec is updated when the assertion is established, so that “if the design is correct, the value of the register R and the expected value R_spec match”. As a result, if the value of the register R and the expected value R_spec do not match, it is an erroneous change that is not defined in any assertion of the
これに対し、対象となるレジスタRを動作させるクロックが複数ある場合、虚偽エラーが発生する。具体的には、実施の形態1のようにアサーション成立時刻の次の時刻で期待値R_specを更新しようとすると、当該次の時刻が、アサーション成立時刻のクロックとは異なるクロックの場合、レジスタRの値と期待値R_specとが不一致となる。以下、図8で説明する。 On the other hand, when there are a plurality of clocks for operating the target register R, a false error occurs. Specifically, when the expected value R_spec is updated at a time next to the assertion establishment time as in the first embodiment, if the next time is a clock different from the clock at the assertion establishment time, the register R The value and the expected value R_spec do not match. This will be described below with reference to FIG.
<虚偽エラー発生例>
図8は、複数クロックの場合の虚偽エラー発生例を示す説明図である。図8において、レジスタRについて、アサーションA11,A12が規定されているものとする。アサーションA11は、『クロックClk1の立ち上がりにおいて、入力Iに「1」が入力されると1サイクル後にレジスタRの値が「3」に変化する』ことをチェックするアサーションである。アサーションA12は、『クロックClk2の立ち上がりにおいて、入力Iに「2」が入力されると1サイクル後にレジスタRの値が「4」に変化する』ことをチェックするアサーションである。
<Example of false error occurrence>
FIG. 8 is an explanatory diagram showing an example of occurrence of a false error in the case of a plurality of clocks. In FIG. 8, it is assumed that assertions A11 and A12 are defined for the register R. The assertion A11 is an assertion for checking that “the value of the register R changes to“ 3 ”after one cycle when“ 1 ”is input to the input I at the rising edge of the clock Clk1”. The assertion A12 is an assertion for checking that “the value of the register R changes to“ 4 ”after one cycle when“ 2 ”is input to the input I at the rising edge of the clock Clk2.”
図8において、クロックClk2の立ち上がり時刻t21において入力Iの値が「5」から「1」に変化した場合、クロックClk2の立ち上がり時刻t22においてレジスタRの値が「2」から「3」に変化している。このため、アサーションA11が成立することとなる。そして、実施の形態1のように、レジスタRの期待値R_specを更新する次の時刻は、クロックClk2の立ち上がり時刻t23である。 In FIG. 8, when the value of the input I changes from “5” to “1” at the rising time t21 of the clock Clk2, the value of the register R changes from “2” to “3” at the rising time t22 of the clock Clk2. ing. For this reason, assertion A11 will be materialized. Then, as in the first embodiment, the next time for updating the expected value R_spec of the register R is the rising time t23 of the clock Clk2.
このため、クロックClk2の立ち上がり時刻t22〜t23の間におけるクロックClk1の立ち上がり時刻t14〜t17において、レジスタRの値と期待値R_specとの不一致(「3」≠「2」)が発生することとなる。すなわち、クロックClk2の立ち上がり時刻t22〜t23の間では、アサーションA11どおりに動作しているにもかかわらず、アサーションA11を満たしていないとしてエラーを検出することとなる。 For this reason, at the rising times t14 to t17 of the clock Clk1 between the rising times t22 to t23 of the clock Clk2, a mismatch (“3” ≠ “2”) between the value of the register R and the expected value R_spec occurs. . That is, between the rising times t22 and t23 of the clock Clk2, an error is detected as not asserting A11 even though it operates in the same manner as assertion A11.
このため、実施の形態2では、検証対象回路内のレジスタRが複数のクロックで動作する場合であっても、上述した虚偽エラーを発生させずに、アサーション群320では検出できないバグを効率的に検出する例について説明する。なお、実施の形態2では、一例として、クロックの数を3(Clk1〜Clk3)として説明する。また、図9〜図13では、エラーが発生しない例を説明し、図14〜図18では、エラーが検出できた例について説明する。
For this reason, in the second embodiment, even when the register R in the circuit to be verified operates with a plurality of clocks, a bug that cannot be detected by the
<複数クロックでのエラー検出動作例1>
図9〜図13は、複数クロックでのエラー検出動作例1を示す説明図である。複数クロックでのエラー検出動作例1では、アサーションA20が成立した場合に上述した虚偽エラーを発生させることなく、アサーションA20の成立をチェックする動作例である。
<Error detection operation example 1 with multiple clocks>
9 to 13 are explanatory diagrams showing an error detection operation example 1 with a plurality of clocks. The error detection operation example 1 with a plurality of clocks is an operation example in which the assertion A20 is checked without generating the false error described above when the assertion A20 is established.
図9は、初期状態を示している。図9において、同一のレジスタRについてクロックごとに、相互チェッカーモジュールが用意されている。CoChecker1(R,Clk1)は、レジスタRがクロックClk1で動作するときのアサーション成立を検出する相互チェッカーモジュールCCMi1である。CoChecker2(R,Clk2)は、レジスタRがクロックClk2で動作するときのアサーション成立を検出する相互チェッカーモジュールCCMi2である。 FIG. 9 shows an initial state. In FIG. 9, a mutual checker module is prepared for each clock of the same register R. CoChecker1 (R, Clk1) is a mutual checker module CCMi1 that detects assertion when the register R operates with the clock Clk1. CoChecker2 (R, Clk2) is a mutual checker module CCMi2 that detects the assertion when the register R operates with the clock Clk2.
CoChecker3(R,Clk3)は、レジスタRがクロックClk3で動作するときのアサーション成立を検出する相互チェッカーモジュールCCMi3である。このように、相互チェッカーモジュールは、同一のレジスタRについてクロック数分生成される。 CoChecker3 (R, Clk3) is a mutual checker module CCMi3 that detects assertion when the register R operates with the clock Clk3. In this manner, the mutual checker module is generated for the same register R by the number of clocks.
また、図9〜図13では、例としてアサーションA20が成立するか否かを検出するものとする。アサーションA20は、『クロックClk2の立ち上がりにおいて、入力Iに「1」が入力されると1サイクル後にレジスタRの値が「3」に変化する』ことをチェックするアサーションである。 Also, in FIGS. 9 to 13, as an example, it is detected whether or not the assertion A20 is established. The assertion A20 is an assertion for checking that “the value of the register R changes to“ 3 ”after one cycle when“ 1 ”is input to the input I at the rising edge of the clock Clk2” ”.
なお、アサーションA20に挿入されている「CoChecker2.triggerOK」は、挿入先のアサーションが成立した場合に呼び出されるサブルーチンである。「CoChecker2.triggerOK」は、相互チェッカーモジュールCCMi2に、そのチェックプロセスへアサーションA20の成立通知『OK』を通知させる成立通知サブルーチンである。 Note that “CoChecker2.triggerOK” inserted in the assertion A20 is a subroutine called when the insertion destination assertion is established. “CoChecker2.triggerOK” is an establishment notification subroutine for notifying the mutual checker module CCMi2 of the establishment notification “OK” of the assertion A20 to the check process.
図10は、図9からの遷移状態を示している。図10では、各相互チェッカーモジュールCCMi1〜CCMi3において、チェックプロセスCPi1〜CPi3が始動した状態を示している。チェックプロセスCPi1〜CPi3は、レジスタRの値の変化が検出されると始動する。 FIG. 10 shows the transition state from FIG. FIG. 10 shows a state where the check processes CPi1 to CPi3 are started in the mutual checker modules CCMi1 to CCMi3. The check processes CPi1 to CPi3 are started when a change in the value of the register R is detected.
図10では、クロックClk2の立ち上がり時刻t21において入力Iの値が「5」から「1」に変化したため、クロックClk2の立ち上がり時刻t22においてレジスタRの値が「2」から「3」に変化する。この振る舞いは、アサーションA20を満たしている。クロックClk2の時刻t22でレジスタRの値が「2」から「3」に変化したため、チェックプロセスCPi1〜CPi3は、クロックClk2の時刻t22で始動する。 In FIG. 10, since the value of the input I changes from “5” to “1” at the rising time t21 of the clock Clk2, the value of the register R changes from “2” to “3” at the rising time t22 of the clock Clk2. This behavior satisfies Assertion A20. Since the value of the register R changes from “2” to “3” at time t22 of the clock Clk2, the check processes CPi1 to CPi3 are started at time t22 of the clock Clk2.
チェックプロセスCPi1〜CPi3では、始動するとグローバル変数であるCをインクリメントする。本例では相互チェッカーモジュール数は3であるため、C=3となる。すなわち、グローバル変数であるCは、同一レジスタRを動作させるクロック数となる。なお、Cは順次デクリメントされていく。 In the check processes CPi1 to CPi3, when starting, the global variable C is incremented. In this example, since the number of mutual checker modules is 3, C = 3. That is, the global variable C is the number of clocks for operating the same register R. Note that C is decremented sequentially.
Cがデクリメントされて、C=0となる前に全チェックプロセスCPi1〜CPi3が終了すると、図8に示した虚偽エラーが、アサーションA20の成立時刻であるクロックClk2の立ち上がり時刻t22から次の時刻t23までの間で発生することなく、アサーションA20が成立したことを適性にチェックすることができたこととなる。一方、全チェックプロセスCPi1〜CPi3終了時にC=0になると、アサーション群のいずれのアサーションでも定義されていないレジスタRの値の変化を検出したこととなる。 When C is decremented and all the check processes CPi1 to CPi3 are completed before C = 0, the false error shown in FIG. 8 is changed to the next time t23 from the rising time t22 of the clock Clk2, which is the establishment time of the assertion A20. This means that the fact that the assertion A20 has been established can be properly checked without being generated. On the other hand, when C = 0 at the end of all the check processes CPi1 to CPi3, a change in the value of the register R that is not defined in any assertion of the assertion group is detected.
図11は、図10からの遷移状態を示している。図11において、アサーションA20の成立時刻であるt22の次にレジスタRを動作させる時刻は、クロックClk1の時刻t14である。したがって、クロックClk1での動作を監視している相互チェッカーモジュールCCMi1では、アサーションA20の成立通知『OK』を待ち受けるが、時刻t14では成立していない。このため、相互チェッカーモジュールCCMi1では、時刻t14で成立通知『OK』を受け付けられないため、チェックプロセスCPi1は、Cをデクリメントして、C=2となる。そして、チェックプロセスCPi1は終了する。 FIG. 11 shows the transition state from FIG. In FIG. 11, the time when the register R is operated next to t22, which is the time when the assertion A20 is established, is the time t14 of the clock Clk1. Therefore, the mutual checker module CCMi1 monitoring the operation at the clock Clk1 waits for the assertion notification “OK” of the assertion A20, but does not hold at the time t14. For this reason, since the mutual checker module CCMi1 cannot accept the establishment notification “OK” at time t14, the check process CPi1 decrements C to C = 2. Then, the check process CPi1 ends.
図12は、図11からの遷移状態を示している。図12において、チェックプロセスCPi1の終了時刻となったクロックClk1の立ち上がり時刻t14の次にレジスタRを動作させる時刻は、クロックClk1の立ち上がり時刻t15〜t17であるが、相互チェッカーモジュールCCMi1のチェックプロセスCPi1はすでに終了している。このため、クロックClk1の時刻t17の次にレジスタRを動作させる時刻は、クロックClk2の立ち上がり時刻t23となる。したがって、クロックClk2での動作を監視している相互チェッカーモジュールCCMi2では、アサーションA20の成立通知『OK』を待ち受ける。 FIG. 12 shows the transition state from FIG. In FIG. 12, the time when the register R is operated next to the rising time t14 of the clock Clk1 that is the end time of the check process CPi1 is the rising times t15 to t17 of the clock Clk1, but the check process CPi1 of the mutual checker module CCMi1 Has already ended. Therefore, the time when the register R is operated after the time t17 of the clock Clk1 is the rising time t23 of the clock Clk2. Therefore, the mutual checker module CCMi2 monitoring the operation at the clock Clk2 waits for the assertion notification “OK” of the assertion A20.
時刻t23は、アサーションA20の成立時刻t22の次の時刻であるため、相互チェッカーモジュールCCMi2の成立通知サブルーチン「CoChecker2.triggerOK」が呼び出される。これにより、相互チェッカーモジュールCCMi2は、チェックプロセスCPi2にアサーションA20の成立通知『OK』を発行することで、チェックプロセスCPi2は、アサーションA20の成立通知『OK』を受け付けることができる。成立通知『OK』を受け付けたチェックプロセスCPi2は、Cをデクリメントせず(C=2のまま)終了する。 Since the time t23 is the time after the establishment time t22 of the assertion A20, the establishment notification subroutine “CoChecker2.triggerOK” of the mutual checker module CCMi2 is called. Thus, the mutual checker module CCMi2 issues an assertion notification “OK” of the assertion A20 to the check process CPi2, so that the check process CPi2 can receive the notification “OK” of the assertion A20. The check process CPi2 that has received the establishment notification “OK” ends without decrementing C (with C = 2).
図13は、図12からの遷移状態を示している。図13において、チェックプロセスCPi2の終了時刻となったクロックClk2の時刻t23の次にレジスタRを動作させる時刻は、クロックClk3の立ち上がり時刻t32である。したがって、クロックClk3での動作を監視している相互チェッカーモジュールCCMi3では、アサーションA20の成立通知『OK』を待ち受けるが、立ち上がり時刻t32では成立していない。 FIG. 13 shows the transition state from FIG. In FIG. 13, the time when the register R is operated next to the time t23 of the clock Clk2 which is the end time of the check process CPi2 is the rising time t32 of the clock Clk3. Therefore, the mutual checker module CCMi3 monitoring the operation at the clock Clk3 waits for the assertion notification “OK” of the assertion A20, but does not hold at the rising time t32.
このため、相互チェッカーモジュールCCMi3では、立ち上がり時刻t32で成立通知『OK』を受け付けられないため、チェックプロセスCPi3は、Cをデクリメントして、C=1となる。そして、チェックプロセスCPi3は終了する。したがって、C=0となる前に全チェックプロセスCPi1〜CPi3が終了したこととなる。 For this reason, since the mutual checker module CCMi3 cannot accept the establishment notification “OK” at the rising time t32, the check process CPi3 decrements C to C = 1. Then, the check process CPi3 ends. Therefore, all the check processes CPi1 to CPi3 are completed before C = 0.
このように、実施の形態2では、図8に示した虚偽エラーが、アサーションA20の成立時刻であるクロックClk2の立ち上がり時刻t22〜t23までの間で発生することなく、アサーションA20が成立したことを適性にチェックすることができる。 As described above, in the second embodiment, the false error shown in FIG. 8 does not occur between the rising times t22 and t23 of the clock Clk2, which is the establishment time of the assertion A20, and the assertion A20 is established. Can be checked for suitability.
<複数クロックでのエラー検出動作例2>
図14〜図18は、複数クロックでのエラー検出動作例2を示す説明図である。複数クロックでのエラー検出動作例2では、アサーションA20が不成立である場合に上述した虚偽エラーを発生させることなく、アサーション群のいずれのアサーションでも定義されていないレジスタRの値の変化を検出する動作例である。
<Error detection operation example 2 with multiple clocks>
14 to 18 are explanatory diagrams showing an error detection operation example 2 with a plurality of clocks. In error detection operation example 2 with a plurality of clocks, when assertion A20 is not established, an operation for detecting a change in the value of register R that is not defined in any assertion of the assertion group without generating the false error described above. It is an example.
図14は、初期状態を示している。図14において、同一のレジスタRについてクロックごとに、相互チェッカーモジュールCCMi1〜CCMi3が用意されている。図9の初期状態と図14の初期状態とで異なる箇所は、図9では、クロックClk2の立ち上がり時刻t22でレジスタRの値が「2」から「3」に変化するのに対し、図14では、クロックClk2の立ち上がり時刻t22でレジスタRの値が「2」から「4」に変化する点である。 FIG. 14 shows an initial state. In FIG. 14, mutual checker modules CCMi1 to CCMi3 are prepared for the same register R for each clock. The difference between the initial state of FIG. 9 and the initial state of FIG. 14 is that in FIG. 9, the value of the register R changes from “2” to “3” at the rising time t22 of the clock Clk2, whereas in FIG. The value of the register R changes from “2” to “4” at the rising time t22 of the clock Clk2.
図15は、図14からの遷移状態を示している。図15では、各相互チェッカーモジュールCCMi1〜CCMi3において、チェックプロセスCPi1〜CPi3が始動した状態を示している。チェックプロセスCPi1〜CPi3は、レジスタRの値の変化が検出されると始動する。 FIG. 15 shows the transition state from FIG. FIG. 15 shows a state where the check processes CPi1 to CPi3 are started in the mutual checker modules CCMi1 to CCMi3. The check processes CPi1 to CPi3 are started when a change in the value of the register R is detected.
図15では、クロックClk2の立ち上がり時刻t21において入力Iの値が「5」から「1」に変化したため、クロックClk2の立ち上がり時刻t22においてレジスタRの値が「2」から「4」に変化する。この振る舞いは、アサーションA20を満たしていない。クロックClk2の立ち上がり時刻t22でレジスタRの値が「2」から「4」に変化したため、チェックプロセスCPi1〜CPi3は、クロックClk2の立ち上がり時刻t22で始動する。 In FIG. 15, since the value of the input I changes from “5” to “1” at the rising time t21 of the clock Clk2, the value of the register R changes from “2” to “4” at the rising time t22 of the clock Clk2. This behavior does not satisfy Assertion A20. Since the value of the register R changes from “2” to “4” at the rising time t22 of the clock Clk2, the check processes CPi1 to CPi3 are started at the rising time t22 of the clock Clk2.
チェックプロセスCPi1〜CPi3では、始動するとグローバル変数であるCをインクリメントする。本例では相互チェッカーモジュール数は3であるため、C=3となる。すなわち、グローバル変数であるCは、同一レジスタRを動作させるクロック数となる。なお、Cは順次デクリメントされていく。 In the check processes CPi1 to CPi3, when starting, the global variable C is incremented. In this example, since the number of mutual checker modules is 3, C = 3. That is, the global variable C is the number of clocks for operating the same register R. Note that C is decremented sequentially.
Cがデクリメントされて、C=0となる前に全チェックプロセスCPi1〜CPi3が終了すると、図8に示した虚偽エラーが、アサーションA20の成立時刻であるクロックClk2の立ち上がり時刻t22から次の時刻t23までの間で発生することなく、アサーションA20が成立したことを適性にチェックすることができたこととなる。一方、全チェックプロセスCPi1〜CPi3終了時にC=0になると、アサーション群のいずれのアサーションでも定義されていないレジスタRの値の変化を検出したこととなる。 When C is decremented and all the check processes CPi1 to CPi3 are finished before C = 0, the false error shown in FIG. This means that the fact that the assertion A20 has been established can be properly checked without being generated. On the other hand, when C = 0 at the end of all the check processes CPi1 to CPi3, a change in the value of the register R that is not defined in any assertion of the assertion group is detected.
図16は、図15からの遷移状態を示している。図16において、レジスタRの値が変化した時刻t22の次にレジスタRを動作させる時刻は、クロックClk1の立ち上がり時刻t14である。したがって、クロックClk1での動作を監視している相互チェッカーモジュールCCMi1では、アサーションA20の成立通知『OK』を待ち受けるが、時刻t14では成立していない。このため、相互チェッカーモジュールCCMi1では、時刻t14で成立通知『OK』を受け付けられないため、チェックプロセスCPi1は、Cをデクリメントして、C=2となる。そして、チェックプロセスCPi1は終了する。 FIG. 16 shows the transition state from FIG. In FIG. 16, the time when the register R is operated after the time t22 when the value of the register R changes is the rising time t14 of the clock Clk1. Therefore, the mutual checker module CCMi1 monitoring the operation at the clock Clk1 waits for the assertion notification “OK” of the assertion A20, but does not hold at the time t14. For this reason, since the mutual checker module CCMi1 cannot accept the establishment notification “OK” at time t14, the check process CPi1 decrements C to C = 2. Then, the check process CPi1 ends.
図17は、図16からの遷移状態を示している。図17において、チェックプロセスCPi1の終了時刻となった時刻t14の次にレジスタRを動作させる時刻は、クロックClk1の時刻t15〜t17であるが、相互チェッカーモジュールCCMi1のチェックプロセスCPi1はすでに終了している。このため、クロックClk1の立ち上がり時刻t17の次にレジスタRを動作させる時刻は、クロックClk2の立ち上がり時刻t23となる。したがって、クロックClk2での動作を監視している相互チェッカーモジュールCCMi2では、アサーションA20の成立通知『OK』を待ち受ける。 FIG. 17 shows the transition state from FIG. In FIG. 17, the time when the register R is operated after the time t14 that is the end time of the check process CPi1 is the time t15 to t17 of the clock Clk1, but the check process CPi1 of the mutual checker module CCMi1 has already ended. Yes. For this reason, the time when the register R is operated after the rise time t17 of the clock Clk1 is the rise time t23 of the clock Clk2. Therefore, the mutual checker module CCMi2 monitoring the operation at the clock Clk2 waits for the assertion notification “OK” of the assertion A20.
時刻t23は、クロックClk2でレジスタRが変化した時刻t22の次の時刻であるが、アサーションA20が不成立である。したがって、相互チェッカーモジュールCCMi2では、時刻t23で成立通知『OK』を受け付けられないため、チェックプロセスCPi2は、Cをデクリメントして、C=1となる。そして、チェックプロセスCPi2は終了する。 The time t23 is the time after the time t22 when the register R is changed by the clock Clk2, but the assertion A20 is not established. Accordingly, since the mutual checker module CCMi2 cannot accept the establishment notification “OK” at time t23, the check process CPi2 decrements C to C = 1. Then, the check process CPi2 ends.
図18は、図17からの遷移状態を示している。図18において、チェックプロセスCPi2の終了時刻となった時刻t23の次にレジスタRを動作させる時刻は、クロックClk3の時刻t32である。したがって、クロックClk3での動作を監視している相互チェッカーモジュールCCMi3では、アサーションA20の成立通知『OK』を待ち受けるが、時刻t32では成立していない。このため、相互チェッカーモジュールCCMi3では、時刻t32で成立通知『OK』を受け付けられないため、チェックプロセスCPi3は、Cをデクリメントして、C=0となる。そして、チェックプロセスCPi3は終了する。 FIG. 18 shows the transition state from FIG. In FIG. 18, the time when the register R is operated after the time t23 that is the end time of the check process CPi2 is the time t32 of the clock Clk3. Therefore, the mutual checker module CCMi3 monitoring the operation at the clock Clk3 waits for the assertion notification “OK” of the assertion A20, but does not hold at the time t32. For this reason, since the mutual checker module CCMi3 cannot accept the establishment notification “OK” at time t32, the check process CPi3 decrements C to C = 0. Then, the check process CPi3 ends.
このように、全チェックプロセスCPi1〜CPi3終了時にC=0になったため、クロックClk2の立ち上がり時刻t22において、アサーション群のいずれのアサーションでも定義されていないレジスタRの値の変化を検出したこととなる。これにより、検証対象回路内のレジスタが複数クロックで動作する場合であっても、上述した虚偽エラーを発生させずに、アサーション群では検出できないバグを効率的に検出することができる。 As described above, since C = 0 when all the check processes CPi1 to CPi3 are completed, a change in the value of the register R that is not defined in any assertion of the assertion group is detected at the rising time t22 of the clock Clk2. . As a result, even when the register in the circuit to be verified operates with a plurality of clocks, it is possible to efficiently detect a bug that cannot be detected by the assertion group without generating the false error described above.
<検証支援装置の機能的構成例>
つぎに、実施の形態2にかかる検証支援装置の機能的構成例について説明する。なお、実施の形態1と同一構成には同一符号を付し、その説明を省略する。また、実施の形態2にかかる検証支援装置のハードウェア構成例は、図2と同一構成であるため省略する。
<Functional configuration example of verification support device>
Next, a functional configuration example of the verification support apparatus according to the second embodiment will be described. In addition, the same code | symbol is attached | subjected to the same structure as
図19は、実施の形態2にかかる検証支援装置の機能的構成例を示すブロック図である。検証支援装置は、編集/作成処理部1900と相互チェッカーモジュール群集合CCMとを有する。編集/作成処理部1900は、選択部1901と編集部1902と特定部1903と作成部1904とを有する。
FIG. 19 is a block diagram of a functional configuration example of the verification support apparatus according to the second embodiment. The verification support apparatus includes an editing /
編集/作成処理部1900(選択部1901〜作成部1904)および相互チェッカーモジュール群集合CCMは、具体的には、たとえば、図2に示したROM202、RAM203、磁気ディスク205、光ディスク207などの記憶装置に記憶されたプログラムをCPU201に実行させることにより、または、I/F209により、その機能を実現する。
Specifically, the editing / creation processing unit 1900 (
アサーション群1910は、編集/作成処理部1900による編集前のアサーション群である。アサーション群1910内のアサーションとは、たとえば、図9のアサーションA20において、「CoChecker2.triggerOK」が挿入されていないアサーションである。一方、アサーション群1920は、編集/作成処理部1900によりアサーション群1910が編集された編集後のアサーション群である。アサーション群1920内のアサーションとは、たとえば、図9のアサーションA20である。
An
選択部1901は、アサーション群1910の中から未選択のアサーションを選択する。選択部1901は、未選択のアサーションがなくなるまで選択をつづける。編集部1902は、選択部1901によって選択されたアサーション(選択アサーション)に、アサーション成立を通知する成立通知に関する記述を挿入する。挿入された成立通知に関する記述は、アサーション成立をチェックプロセスに通知させるサブルーチンを呼び出す記述である。
The
成立通知に関する記述とは、たとえば、図9に示した「CoChecker2.triggerOK」が挙げられる。「CoChecker2.triggerOK」は、挿入先のアサーションが成立した場合に、「CoChecker2」に、「CoChecker2」へ「OK」を発行させるサブルーチンである。 The description regarding the establishment notification is, for example, “CoChecker2.triggerOK” shown in FIG. “CoChecker2.triggerOK” is a subroutine that causes “CoChecker2” to issue “OK” to “CoChecker2” when the insertion destination assertion is established.
一般的に、クロックClk#の立ち上がり(または立ち下がり)でのアサーション成立について相互チェッカーモジュールCCMi#に通知させたい場合は、「CoChecker#.triggerOK」とすればよい。このように、編集部1902では、アサーションごとに、成立通知に関する記述を挿入することで、編集後のアサーション群1920を生成することができる。編集済みのアサーション群1920は、相互チェッカーモジュール群集合CCMに参照される。
Generally, if it is desired to notify the mutual checker module CCMi # about the assertion establishment at the rising edge (or falling edge) of the clock Clk #, “CoChecker # .triggerOK” may be used. As described above, the
特定部1903は、サブルーチン挿入後のアサーションから、レジスタの識別情報とクロックの識別情報とを特定する。レジスタの識別情報とは、レジスタを一意に特定する情報であり、たとえば、レジスタ名である。クロックの識別情報とは、クロックを一意に特定する情報であり、たとえば、クロック名である。たとえば、選択アサーションがアサーションA20の場合、レジスタ名として「R」、クロック名として「Clk2」を特定する。
The identifying
作成部1904は、特定部1903によって特定されたレジスタの識別情報とクロックの識別情報に基づいて、相互チェッカーモジュール群を作成する。具体的には、たとえば、クロックの総数は既知(ここでは、Clk1〜Clk3の3個)であるため、クロック名「Clk2」が特定されると、特定されたレジスタRについて、相互チェッカーモジュールCCMi1〜CCMi3を作成する。なお、作成部1904は、あらかじめ相互チェッカーモジュールCCMiの動作記述をテンプレートして保持しているため、レジスタ名とクロック名をテンプレートに与えるだけで作成することができる。
The
相互チェッカーモジュール群集合CCMは、相互チェッカーモジュール群CCM1,…,CCMi,…,CCMnである。nは、アサーションで定義されたレジスタ数である。相互チェッカーモジュール群CCMiは、チェック対象のレジスタやアサーション(アサーション群1920内のアサーション)が異なるだけで処理内容は同一である。 The mutual checker module group set CCM is a mutual checker module group CCM1,..., CCMi,. n is the number of registers defined in the assertion. The mutual checker module group CCMi has the same processing contents except for the register to be checked and the assertion (assertion in the assertion group 1920).
<相互チェッカーモジュールの機能的構成例>
図20は、相互チェッカーモジュール群CCMiの機能的構成例を示すブロック図である。相互チェッカーモジュール群CCMiは、第1の検出部2001と、第2の検出部2002と、判断部2003と、生成部2004と、決定部2005と、出力部2006とを備えている。
<Functional configuration example of mutual checker module>
FIG. 20 is a block diagram illustrating a functional configuration example of the mutual checker module group CCMi. The mutual checker module group CCMi includes a
第1の検出部2001〜出力部2006は、具体的には、たとえば、図2に示したROM202、RAM203、磁気ディスク205、光ディスク207などの記憶装置に記憶されたプログラムをCPU201に実行させることにより、または、I/F209により、その機能を実現する。
Specifically, the
第1の検出部2001は、複数のクロックで動作する回路が回路内のレジスタRについて複数のクロックのうちいずれかのクロックのタイミングで満たすべきレジスタRの値を規定するアサーション群の中から、回路の模擬中に成立するアサーションを検出する。
The
具体的には、たとえば、クロックClk1〜Clk3という3つのクロックにより内部のレジスタRを動作させる検証対象回路についてのアサーション群1920の中から、シミュレーション中に成立するアサーションを検出する。たとえば、図20に示したように、第1の検出部2001は、アサーション群1920の中から、クロックClk2の時刻t22で成立するアサーションA20を検出する。
Specifically, for example, an assertion established during the simulation is detected from the
第2の検出部2002は、レジスタRの値の変化を検出する。ここでいうレジスタRの値の変化は、アサーション成立の場合であるか否かを問わない。たとえば、第2の検出部2002は、図10に示したように、相互チェッカーモジュールCCMi2によりクロックClk2の時刻t22でのレジスタRの値の変化(「2」→「3」)を検出する。同様に、第2の検出部2002は、図15に示したように、相互チェッカーモジュールCCMi2によりクロックClk2の時刻t22でのレジスタRの値の変化(「2」→「4」)を検出する。
The
判断部2003は、複数のクロックの各々のクロックにおいて、第2の検出部2002によってレジスタの値の変化が検出されたクロックタイミング以降で最初に到来するクロックタイミングごとに、当該時刻となるクロックと第1の検出部2001によって検出されたアサーションで規定されたクロックとが同一クロックであるか否かを判断する。具体的には、たとえば、判断部2003は、第1の検出部2001によってアサーションの成立を検出していない場合は、実行されない。すなわち、図14〜図18の例では、判断部2003は実行されない。
For each clock of the plurality of clocks, the
一方、図9〜図13の例では、図10の状態でアサーションA20の成立が検出されている。したがって、判断部2003は、図11に示したように、クロックClk1において、レジスタRの値の変化が検出された時刻t22以降で最初に到来する時刻t14が、成立したアサーションA20で規定されたクロックClk2と同一クロックであるか否かを判断する。時刻t14はクロックClk1に属しているため、成立したアサーションA20で規定されたクロックClk2とは同一クロックではない。
On the other hand, in the example of FIGS. 9 to 13, the assertion of the assertion A20 is detected in the state of FIG. Accordingly, as shown in FIG. 11, the
同様に、判断部2003は、図12に示したように、クロックClk2において、レジスタRの値の変化が検出された時刻t22以降で最初に到来する時刻t23が、成立したアサーションA20で規定されたクロックClk2と同一クロックであるか否かを判断する。時刻t23はクロックClk2に属しているため、成立したアサーションA20で規定されたクロックClk2とは同一クロックとなる。
Similarly, as shown in FIG. 12, in the clock Clk2, the
また、判断部2003は、図13に示したように、クロックClk3において、レジスタRの値の変化が検出された時刻t22以降で最初に到来する時刻t32が、成立したアサーションA20で規定されたクロックClk2と同一クロックであるか否かを判断する。時刻t32はクロックClk3に属しているため、成立したアサーションA20で規定されたクロックClk2とは同一クロックではない。
Further, as shown in FIG. 13, the
生成部2004は、第2の検出部2002によってレジスタRの値の変化が検出された場合、レジスタRについてクロックごとにアサーション成立を通知する成立通知を待ち受けるチェックプロセス群を生成する。具体的には、たとえば、図9〜図18に示したように、相互チェッカーモジュールCCMi1〜CCMi3ごとにチェックプロセスCPi1〜CPi3を生成する。チェックプロセスCPi1〜CPi3が生成されると、それぞれグローバル変数Cをインクリメントする。これにより、クロックClk1〜Clk3の総数m=Cとなる。
When a change in the value of the register R is detected by the
このあと、図9〜図13の場合、判断部2003によって同一クロックであると判断されると、判断されたアサーションに挿入されている成立通知に関する記述で指定されたサブルーチンが呼び出される。そして、相互チェッカーモジュールCCMi1〜CCMi3のうち、同一クロックとなったクロックClk2に関する相互チェッカーモジュールCCMi2は、呼び出された成立通知サブルーチンが実行されることで、成立通知を受け付けることができる。
Thereafter, in the case of FIGS. 9 to 13, when the
なお、図14〜図18の例では、アサーションが成立していないため判断部2003で同一クロックであると判断されることはない。なお、図9〜図13の例および図14〜図18の例のいずれにおいても、同一クロックでないと判断される都度、グローバル変数Cはデクリメントされる。
In the examples of FIGS. 14 to 18, since the assertion is not established, the
決定部2005は、判断部2003によって判断された判断結果に基づいて、レジスタRの値の変化の正否を決定する。具体的には、たとえば、判断部2003による同一クロックの判断で、クロックClk1〜ClkmのうちいずれかのクロックClkjで同一であると判断された場合、グローバル変数Cは、デクリメントされてもC=0にはならないため、レジスタRの値の変化は、期待通りの正しい変化であると決定する。
The determining
たとえば、図9〜図13の例で示したように、クロックClk2の時刻t23で成立したアサーションA20のクロックClk2と同一クロックと判断されるため、クロックClk2の時刻t22でのレジスタRの値の変化は、(アサーションA20に従った)期待通りの正しい変化であると決定する。 For example, as shown in the examples of FIGS. 9 to 13, since it is determined that the clock is the same as the clock Clk2 of the assertion A20 established at the time t23 of the clock Clk2, the change in the value of the register R at the time t22 of the clock Clk2 Determines that it is the correct change as expected (according to assertion A20).
一方、判断部2003による同一クロックの判断で、どのクロックClk1〜Clkmも同一でないと判断された場合、グローバル変数Cは、デクリメントされて最終的にC=0にはなる。したがって、レジスタRの値の変化は、いずれのアサーションでも定義されていない誤った変化であると決定する。
On the other hand, if it is determined by the
たとえば、図14〜図18の例で示したように、クロックClk2の時刻t22でのレジスタRの値の変化ではアサーションA20が成立していないため、アサーションA20に挿入されている成立通知に関する記述から成立通知サブルーチンを呼び出せないこととなる。したがって、Cはその都度、デクリメントされ、最終的にC=0となる。これにより、クロックClk2の時刻t22でのレジスタRの値の変化は、いずれのアサーションでも定義されていない誤った変化であると決定する。 For example, as shown in the examples of FIGS. 14 to 18, since the assertion A20 is not established due to the change in the value of the register R at the time t22 of the clock Clk2, the description regarding the establishment notification inserted in the assertion A20 is used. The establishment notification subroutine cannot be called. Therefore, C is decremented each time, and finally C = 0. Thereby, the change in the value of the register R at time t22 of the clock Clk2 is determined to be an erroneous change that is not defined in any assertion.
出力部2006は、決定部2005によって決定された決定結果を出力する。具体的には、たとえば、出力部2006は、決定部2005によって誤った変化であると決定された場合、レジスタRの値の変化を検出したクロックおよび変化したクロックタイミングとレジスタRの識別情報を出力する。識別情報とは、レジスタRを一意に特定する情報であり、たとえば、レジスタ名である。たとえば、図14〜図18の例では、出力部2006は、{NG,クロックClk2,時刻t22,R}を出力する。このとき、レジスタRの値も出力してもよい。この場合、出力部2006は、{NG,クロックClk2,時刻t22,R=4}を出力する。
The
また、出力部2006は、決定部2005によって正しい変化であると決定された場合、レジスタRの値の変化を検出したクロックおよび変化したクロックタイミングとレジスタRの識別情報とを出力することとしてもよい。たとえば、図9〜図13の例では、出力部2006は、{OK,クロックClk2,時刻t22,R}を出力する。このとき、レジスタRの値も出力してもよい。この場合、出力部2006は、{OK,クロックClk2,時刻t22,R=3}を出力する。
Further, the
また、出力部2006は、決定部2005によって正しい変化であると決定された場合、レジスタRの値の変化を検出したクロック、成立通知『OK』を受け付けた時刻と、レジスタRの識別情報とを出力することとしてもよい。たとえば、図9〜図13の例では、出力部2006は、{OK,クロックClk2,時刻t23,R}を出力する。このとき、レジスタRの値も出力してもよい。この場合、出力部2006は、{OK,クロックClk2,時刻t23,R=3}を出力する。
In addition, when the determining
このような出力結果は、ディスプレイ208に表示してもよく、プリンタ213に印刷出力してもよく、通信可能なコンピュータに送信してもよい。また、検証支援装置内の記憶装置に格納してもよい。
Such an output result may be displayed on the
<編集/作成処理手順>
図21は、実施の形態2にかかる検証支援装置による編集/作成処理手順を示すフローチャートである。選択部1901は、アサーション群1910の中から未選択のアサーションがあるか否かを判断する(ステップS2101)。
<Edit / Create procedure>
FIG. 21 is a flowchart of an editing / creation process procedure performed by the verification support apparatus according to the second embodiment. The
未選択のアサーションがある場合(ステップS2101:Yes)、選択部1901は、アサーション群1910の中から未選択のアサーションを1つ選択する(ステップS1902)。そして、編集部1902は、成立通知を通知させる成立通知サブルーチンを呼び出す成立通知に関する記述を、選択アサーションに挿入する(ステップS2103)。このあと、編集部1902は、挿入後の選択アサーションを検証支援装置内の記憶装置に保持する(ステップS2104)。
When there is an unselected assertion (step S2101: Yes), the
また、特定部1903は、選択アサーションから、選択アサーションで規定されているクロックの識別情報とレジスタの識別情報を特定する(ステップS2105)。そして、作成部1904は、特定されたクロックの識別情報とレジスタの識別情報とについて、チェッカーモジュール群CCMiを作成済みであるか否かを判断する(ステップS2106)。
Further, the identifying
作成済みである場合(ステップS2106:Yes)、ステップS2101に戻る。一方、作成済みでない場合(ステップS2106:No)、作成部1904は、特定されたクロックの識別情報とレジスタの識別情報とについて、チェッカーモジュール群CCMiを作成し、記憶装置に保持する(ステップS2107)。このあと、ステップS2101に移行する。
If it has been created (step S2106: Yes), the process returns to step S2101. On the other hand, if it has not been created (step S2106: No), the
そして、ステップS2101において、未選択のアサーションがない場合(ステップS2101:No)、編集/作成処理を終了する。これにより、未編集のアサーション群1910から成立通知に関する記述が挿入されたアサーション群1920に編集されるため、相互チェッカーモジュール群集合CCMでのチェック処理においてアサーションが成立した場合、虚偽エラーを発生することなく、レジスタRの値の変化の正否を特定することができる。
If there is no unselected assertion in step S2101 (step S2101: No), the editing / creating process ends. As a result, since the
<相互チェッカーモジュールCCMijによる検証対象回路の模擬中での成立通知処理手順>
図22は、相互チェッカーモジュールCCMijによる検証対象回路の模擬中での成立通知処理手順を示すフローチャートである。
<Procedure notification processing procedure during simulation of circuit to be verified by mutual checker module CCMij>
FIG. 22 is a flowchart showing the establishment notification processing procedure during simulation of the circuit to be verified by the mutual checker module CCMij.
まず、第1の検出部2001が、相互チェッカーモジュール群CCMiで対象にしているレジスタRについて、検証対象回路の模擬中に成立するアサーションがアサーション群1920の中から検出されるまで待ち受ける(ステップS2201:No)。検出された場合(ステップS2201:Yes)、成立したアサーションに記述されている成立通知サブルーチンを読み出すことで、相互チェッカーモジュールCCMijは、自身のチェックプロセスCPijに、成立通知『OK』を通知する(ステップS2202)。そして、ステップS2201に戻る。図22のフローチャートは、検証対象回路の模擬が終了することで終了する。
First, the
<相互チェッカーモジュールCCMijによる検証対象回路の模擬中でのチェックプロセスCPijの始動処理手順>
図23は、相互チェッカーモジュールCCMijによる検証対象回路の模擬中でのチェックプロセスCPijの始動処理手順を示すフローチャートである。まず、第2の検出部2002が、相互チェッカーモジュール群CCMiで対象にしているレジスタRの値が変化するまで待ち受ける(ステップS2301:No)。レジスタRの値の変化が検出された場合(ステップS2301:Yes)、相互チェッカーモジュールCCMijはチェックプロセスCPijを始動する(ステップS2302)。
<Starting procedure of check process CPij during simulation of circuit to be verified by mutual checker module CCMij>
FIG. 23 is a flowchart showing a starting process procedure of the check process CPij during simulation of the circuit to be verified by the mutual checker module CCMij. First, the
そして、グローバル変数Cをインクリメントする(ステップS2303)。相互チェッカーモジュールCCMijはクロック総数m個存在するため、各々の相互チェッカーモジュールCCMijでインクリメントされることで、C=mとなる。これにより、チェックプロセスCPijの始動処理が終了する。 Then, the global variable C is incremented (step S2303). Since there are m total clocks of the mutual checker module CCMij, C = m is obtained by incrementing each mutual checker module CCMij. Thereby, the start process of the check process CPij is completed.
<チェックプロセスCPijの実行処理手順>
図24は、図23で始動されたチェックプロセスCPijの実行処理手順を示すフローチャートである。図24では、例としてクロックClkの立ち上がり時刻を検出することとするが、立ち下がり時刻でもよい。
<Execution processing procedure of check process CPij>
FIG. 24 is a flowchart showing an execution processing procedure of the check process CPij started in FIG. In FIG. 24, the rising time of the clock Clk is detected as an example, but it may be the falling time.
まず、第2の検出部2002は、クロックClkの立ち上がり時刻になるのを待ち受け(ステップS2401:No)、立ち上がり時刻になると(ステップS2401:Yes)、相互チェッカーモジュールCCMijから成立通知『OK』が受信されたか否かを判断する(ステップS2402)。受信された場合(ステップS2402:Yes)、グローバル変数Cをデクリメントせずに、チェックプロセスCPijを終了する(ステップS2407)。
First, the
一方、受信されなかった場合(ステップS2402:No)、判断部2003は、グローバル変数Cをデクリメントし(ステップS2403)、デクリメント後のCがC>0であるか否かを判断する(ステップS2404)。C>0である場合(ステップS2404:Yes)、ステップS2407に移行して、チェックプロセスCPijを終了する(ステップS2407)。
On the other hand, if not received (step S2402: No), the
一方、C>0でない場合(ステップS2404:No)、決定部2005は、レジスタRの値の変化は、いずれのアサーションにも定義されていない誤った変化であると決定する(ステップS2405)。そして、出力部2006は、決定部2005によって決定された決定結果を出力して(ステップS2406)、チェックプロセスCPijを終了する(ステップS2407)。
On the other hand, if C> 0 is not satisfied (step S2404: NO), the
このように、実施の形態2によれば、アサーションが成立する都度、相互チェッカーモジュールCCMijごとにチェックプロセスCPijを始動させて、成立通知を待ち受けさせる。そして、1つでも成立通知を受けたチェックプロセスCPijが存在する場合は、レジスタRの値の変化は、アサーションに従った期待通りの変化であることが保証される。一方、成立通知を受けたチェックプロセスCPijが1つも存在しない場合は、レジスタRの値の変化は、いずれのアサーションにも規定されていない誤った変化であることが判明する。 As described above, according to the second embodiment, each time an assertion is established, the check process CPij is started for each mutual checker module CCMij to wait for a notice of establishment. If there is at least one check process CPij that has received a notification of establishment, it is guaranteed that the change in the value of the register R is an expected change according to the assertion. On the other hand, if there is no check process CPij that has received the notification of establishment, it is found that the change in the value of the register R is an erroneous change that is not defined in any assertion.
このように、実施の形態2では、アサーションが成立した場合には、図8に示したような虚偽エラーが発生することなく、アサーションが成立したことを適性にチェックすることができる。また、アサーションが成立せずに、単にレジスタRの値が変化した場合には、アサーション群のいずれのアサーションでも定義されていないレジスタRの値の変化を検出することができる。 As described above, in the second embodiment, when an assertion is established, it is possible to appropriately check that the assertion is established without generating a false error as shown in FIG. Further, when the value of the register R simply changes without the assertion being established, it is possible to detect a change in the value of the register R that is not defined in any assertion in the assertion group.
これにより、検証対象回路内のレジスタRが複数のクロックで動作する場合であっても、上述した虚偽エラーを発生させずに、アサーション群では検出できないバグを効率的に検出することができる。そして、検証者が、特定されたバグについてデバッグをおこなうことで、検証対象回路についてアサーション外でレジスタRの値が変化しないことを保証することができる。 Thereby, even when the register R in the circuit to be verified operates with a plurality of clocks, it is possible to efficiently detect a bug that cannot be detected by the assertion group without generating the above-described false error. The verifier can debug the identified bug to ensure that the value of the register R does not change outside the assertion for the circuit to be verified.
なお、本実施の形態で説明した検証支援方法は、予め用意されたプログラムをパーソナル・コンピュータやワークステーション等のコンピュータで実行することにより実現することができる。本検証支援プログラムは、ハードディスク、フレキシブルディスク、CD−ROM、MO、DVD等のコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行される。 The verification support method described in this embodiment can be realized by executing a program prepared in advance on a computer such as a personal computer or a workstation. The verification support program is recorded on a computer-readable recording medium such as a hard disk, a flexible disk, a CD-ROM, an MO, and a DVD, and is executed by being read from the recording medium by the computer.
上述した実施の形態に関し、さらに以下の付記を開示する。 The following additional notes are disclosed with respect to the embodiment described above.
(付記1)回路が満たすべきレジスタの値を規定するアサーション群の中から前記回路の模擬中に成立するアサーションを検出する第1の検出工程と、
前記第1の検出工程によって前記アサーションが検出されたクロックタイミングの次のクロックタイミングで、前記レジスタの期待値を前記アサーションで規定された前記レジスタの値に更新する更新工程と、
前記更新工程による更新後における前記レジスタの期待値と前記レジスタの値との不一致を検出する第2の検出工程と、
前記第2の検出工程によって検出された検出結果に基づいて、前記レジスタの値の変化の正否を決定する決定工程と、
前記決定工程によって決定された決定結果を出力する出力工程と、
をコンピュータに実行させることを特徴とする検証支援プログラム。
(Supplementary note 1) a first detection step of detecting an assertion that is established during simulation of the circuit from among assertion groups that define a register value that the circuit should satisfy;
An update step of updating the expected value of the register to the value of the register defined by the assertion at a clock timing next to the clock timing at which the assertion is detected by the first detection step;
A second detection step of detecting a mismatch between the expected value of the register and the value of the register after being updated by the updating step;
A determination step for determining whether the change in the value of the register is correct based on the detection result detected by the second detection step;
An output step of outputting the determination result determined by the determination step;
A verification support program characterized by causing a computer to execute.
(付記2)前記決定工程は、
前記第2の検出工程によって、前記更新後における前記レジスタの期待値と前記レジスタの値との不一致が検出された場合、前記レジスタの値の変化が、前記アサーション群で規定されていない変化であると決定することを特徴とする付記1に記載の検証支援プログラム。
(Supplementary note 2)
When a mismatch between the expected value of the register after the update and the value of the register is detected by the second detection step, the change in the register value is a change that is not defined by the assertion group. The verification support program according to
(付記3)前記決定工程は、
前記第2の検出工程によって、前記更新後における前記レジスタの期待値と前記レジスタの値との一致が検出された場合、前記レジスタの値の変化が、期待通りの変化であると決定することを特徴とする付記1または2に記載の検証支援プログラム。
(Supplementary note 3)
When a match between the expected value of the register after the update and the value of the register is detected by the second detection step, it is determined that the change in the value of the register is a change as expected. The verification support program according to
(付記4)前記出力工程は、
前記レジスタの不一致が検出されたクロックタイミングと前記レジスタの識別情報を出力することを特徴とする付記1〜3のいずれか一つに記載の検証支援プログラム。
(Appendix 4) The output step
4. The verification support program according to any one of
(付記5)前記出力工程は、
前記レジスタの不一致が検出されたクロックタイミングの次のクロックタイミングと前記レジスタの識別情報を出力することを特徴とする付記1〜3のいずれか一つに記載の検証支援プログラム。
(Appendix 5) The output step
The verification support program according to any one of
(付記6)前記第1の検出工程、前記更新工程、前記第2の検出工程、および前記決定工程を前記回路内のレジスタごとに前記コンピュータに実行させることを特徴とする付記1〜5のいずれか一つに記載の検証支援プログラム。
(Supplementary note 6) Any one of
(付記7)前記アサーション群の中から未選択のアサーションを順次選択する選択工程と、
前記選択工程によって選択されたアサーションごとに、前記レジスタの期待値の更新を指示する更新指示記述を挿入することにより、前記アサーション群を編集する編集工程と、を前記コンピュータに実行させ、
前記第1の検出工程は、
前記編集工程による編集後のアサーション群の中から前記回路の模擬中に成立するアサーションを検出し、
前記更新工程は、
前記第1の検出工程によって検出されたアサーションに挿入されている前記更新指示記述に従って、前記レジスタの期待値を、前記第1の検出工程によって検出されたアサーションで定義されているレジスタの値に更新することを特徴とする付記1〜6のいずれか一つに記載の検証支援プログラム。
(Supplementary note 7) a selection step of sequentially selecting unselected assertions from the assertion group;
For each assertion selected in the selection step, by causing the computer to execute an editing step for editing the assertion group by inserting an update instruction description for instructing an update of the expected value of the register,
The first detection step includes
Detecting assertions that are established during simulation of the circuit from the assertion group after editing by the editing step,
The update process includes:
According to the update instruction description inserted in the assertion detected by the first detection step, the expected value of the register is updated to the value of the register defined by the assertion detected by the first detection step. The verification support program according to any one of
(付記8)回路内の複数のクロックで動作するレジスタについて前記複数のクロックのうちいずれかのクロックのクロックタイミングで満たすべき前記レジスタの値を規定するアサーション群の中から、前記回路の模擬中に成立するアサーションを検出する第1の検出工程と、
前記レジスタの値の変化を検出する第2の検出工程と、
前記複数のクロックの各々のクロックにおいて、前記第2の検出工程によって前記レジスタの値の変化が検出されたクロックタイミング以降で最初に到来するクロックタイミングごとに、当該クロックタイミングとなるクロックと前記第1の検出工程によって検出されたアサーションで規定されたクロックとが同一クロックであるか否かを判断する判断工程と、
前記判断工程によって判断された判断結果に基づいて、前記レジスタの値の変化の正否を決定する決定工程と、
前記決定工程によって決定された決定結果を出力する出力工程と、
をコンピュータに実行させることを特徴とする検証支援プログラム。
(Supplementary Note 8) For a register operating with a plurality of clocks in a circuit, from among an assertion group that defines a value of the register to be satisfied at a clock timing of any one of the plurality of clocks, during simulation of the circuit A first detection step for detecting the assertion to be established;
A second detection step of detecting a change in the value of the register;
For each clock of the plurality of clocks, for each clock timing that arrives first after the clock timing at which the change in the register value is detected by the second detection step, the clock that becomes the clock timing and the first clock A determination step of determining whether or not the clock defined by the assertion detected by the detection step is the same clock;
A determination step for determining whether the change in the value of the register is correct based on the determination result determined by the determination step;
An output step of outputting the determination result determined by the determination step;
A verification support program characterized by causing a computer to execute.
(付記9)前記決定工程は、
前記判断工程によって、前記複数のクロックのいずれかのクロックにおいて前記アサーションで規定されたクロックと同一クロックであると判断された場合、前記レジスタの値の変化が、期待通りの変化であると決定することを特徴とする付記8に記載の検証支援プログラム。
(Supplementary note 9)
If it is determined by the determination step that the clock of any one of the plurality of clocks is the same clock as the clock specified by the assertion, the change in the value of the register is determined to be an expected change. The verification support program according to appendix 8, characterized in that.
(付記10)前記決定工程は、
前記第1の検出工程によって、前記回路の模擬中に成立するアサーションが検出されておらず、かつ、前記第2の検出工程によって、前記レジスタの値の変化が検出された場合、前記レジスタの値の変化が、前記アサーション群で規定されていない変化であると決定することを特徴とする付記8または9に記載の検証支援プログラム。
(Supplementary Note 10)
If no assertion that is established during simulation of the circuit is detected by the first detection step and a change in the value of the register is detected by the second detection step, the value of the register 10. The verification support program according to appendix 8 or 9, wherein the change is determined to be a change not defined in the assertion group.
(付記11)前記第2の検出工程によって前記レジスタの値の変化が検出された場合、前記レジスタについてクロックごとにアサーション成立を通知する成立通知を待ち受けるチェックプロセス群を生成する生成工程を前記コンピュータに実行させ、
前記判断工程は、
前記生成工程によって生成されたチェックプロセス群のうち、前記アサーションから前記成立通知を受けたチェックプロセスの有無を判断することを特徴とする付記8に記載の検証支援プログラム。
(Additional remark 11) When the change of the value of the said register is detected by the said 2nd detection process, the production | generation process which produces | generates the check process group which waits for the establishment notification which notifies assertion establishment for every clock about the said register is carried out to the said computer Let it run
The determination step includes
9. The verification support program according to appendix 8, wherein, in the check process group generated by the generation step, it is determined whether or not there is a check process that has received the notification of establishment from the assertion.
(付記12)前記決定工程は、
前記判断工程によって、前記アサーションから前記成立通知を受けたチェックプロセスがあると判断された場合、前記レジスタの値の変化が、期待通りの変化であると決定することを特徴とする付記11に記載の検証支援プログラム。
(Supplementary note 12)
The supplementary note 11 is characterized in that, when the determination step determines that there is a check process that has received the notification of establishment from the assertion, the change in the register value is determined to be an expected change. Verification support program.
(付記13)前記決定工程は、
前記判断工程によって、前記アサーションから前記成立通知を受けたチェックプロセスがないと判断された場合、前記レジスタの値の変化が、前記アサーション群で規定されていない変化であると決定することを特徴とする付記11または12に記載の検証支援プログラム。
(Supplementary note 13)
When it is determined by the determination step that there is no check process that has received the notification of establishment from the assertion, it is determined that the change in the value of the register is a change that is not defined in the assertion group. The verification support program according to Supplementary Note 11 or 12.
(付記14)前記アサーション群の中から未選択のアサーションを順次選択する選択工程と、
前記選択工程によって選択されたアサーションごとに、前記成立通知に関する記述を挿入することにより、前記アサーション群を編集する編集工程と、を前記コンピュータに実行させ、
前記第1の検出工程は、
前記編集工程による編集後のアサーション群の中から、前記回路の模擬中に成立するアサーションを検出することを特徴とする付記10〜12のいずれか一つに記載の検証支援プログラム。
(Supplementary Note 14) A selection step of sequentially selecting unselected assertions from the assertion group;
For each assertion selected in the selection step, by causing the computer to execute an editing step of editing the assertion group by inserting a description related to the notification of establishment.
The first detection step includes
The verification support program according to any one of appendices 10 to 12, wherein an assertion that is established during simulation of the circuit is detected from the assertion group that has been edited by the editing step.
(付記15)前記出力工程は、
前記レジスタの値の変化があったクロックタイミングと前記レジスタの識別情報を出力することを特徴とする付記8〜14のいずれか一つに記載の検証支援プログラム。
(Supplementary Note 15) The output step includes
The verification support program according to any one of appendices 8 to 14, wherein a clock timing at which the value of the register has changed and identification information of the register are output.
(付記16)前記出力工程は、
前記レジスタの値の変化があったクロックタイミングの次のクロックタイミングと前記レジスタの識別情報を出力することを特徴とする付記8〜14のいずれか一つに記載の検証支援プログラム。
(Supplementary Note 16) The output step includes
15. The verification support program according to any one of appendices 8 to 14, wherein a clock timing next to a clock timing at which the value of the register has changed and identification information of the register are output.
(付記17)前記第1の検出工程、前記第2の検出工程、前記判断工程、および前記決定工程を前記回路内のレジスタごとに前記コンピュータに実行させることを特徴とする付記8〜16のいずれか一つに記載の検証支援プログラム。 (Supplementary note 17) Any one of Supplementary notes 8 to 16, wherein the computer performs the first detection step, the second detection step, the determination step, and the determination step for each register in the circuit. The verification support program according to any one of the above.
(付記18)回路が満たすべきレジスタの値を規定するアサーション群の中から前記回路の模擬中に成立するアサーションを検出する第1の検出手段と、
前記第1の検出手段によって前記アサーションが検出されたクロックタイミングの次のクロックタイミングで、前記レジスタの期待値を前記アサーションで規定された前記レジスタの値に更新する更新手段と、
前記更新手段による更新後における前記レジスタの期待値と前記レジスタの値との不一致を検出する第2の検出手段と、
前記第2の検出手段によって検出された検出結果に基づいて、前記レジスタの値の変化の正否を決定する決定手段と、
前記決定手段によって決定された決定結果を出力する出力手段と、
を備えることを特徴とする検証支援装置。
(Supplementary Note 18) First detection means for detecting an assertion established during simulation of the circuit from among assertion groups that define a register value to be satisfied by the circuit;
Updating means for updating the expected value of the register to the value of the register defined by the assertion at a clock timing next to the clock timing at which the assertion is detected by the first detecting means;
Second detection means for detecting a mismatch between the expected value of the register and the value of the register after being updated by the update means;
Determining means for determining whether the change in the value of the register is correct based on a detection result detected by the second detecting means;
Output means for outputting the determination result determined by the determination means;
A verification support apparatus comprising:
(付記19)回路内の複数のクロックで動作するレジスタについて前記複数のクロックのうちいずれかのクロックのクロックタイミングで満たすべき前記レジスタの値を規定するアサーション群の中から、前記回路の模擬中に成立するアサーションを検出する第1の検出手段と、
前記レジスタの値の変化を検出する第2の検出手段と、
前記複数のクロックの各々のクロックにおいて、前記第2の検出手段によって前記レジスタの値の変化が検出されたクロックタイミング以降で最初に到来するクロックタイミングごとに、当該クロックタイミングとなるクロックと前記第1の検出手段によって検出されたアサーションで規定されたクロックとが同一クロックであるか否かを判断する判断手段と、
前記判断手段によって判断された判断結果に基づいて、前記レジスタの値の変化の正否を決定する決定手段と、
前記決定手段によって決定された決定結果を出力する出力手段と、
を備えることを特徴とする検証支援装置。
(Supplementary Note 19) A register operating in a plurality of clocks in a circuit, from among an assertion group that defines a value of the register to be satisfied at a clock timing of any one of the plurality of clocks, during simulation of the circuit First detecting means for detecting an assertion that is established;
Second detection means for detecting a change in the value of the register;
For each clock of the plurality of clocks, for each clock timing that arrives first after the clock timing at which a change in the value of the register is detected by the second detection means, the clock that becomes the clock timing and the first clock Determining means for determining whether the clock defined by the assertion detected by the detecting means is the same clock;
Determining means for determining whether the change in the value of the register is correct or not based on the determination result determined by the determining means;
Output means for outputting the determination result determined by the determination means;
A verification support apparatus comprising:
(付記20)コンピュータが、
回路が満たすべきレジスタの値を規定するアサーション群の中から前記回路の模擬中に成立するアサーションを検出する第1の検出工程と、
前記第1の検出工程によって前記アサーションが検出されたクロックタイミングの次のクロックタイミングで、前記レジスタの期待値を前記アサーションで規定された前記レジスタの値に更新する更新工程と、
前記更新工程による更新後における前記レジスタの期待値と前記レジスタの値との不一致を検出する第2の検出工程と、
前記第2の検出工程によって検出された検出結果に基づいて、前記レジスタの値の変化の正否を決定する決定工程と、
前記決定工程によって決定された決定結果を出力する出力工程と、
を実行することを特徴とする検証支援方法。
(Supplementary note 20)
A first detection step of detecting an assertion that is established during simulation of the circuit from among an assertion group that defines a register value to be satisfied by the circuit;
An update step of updating the expected value of the register to the value of the register defined by the assertion at a clock timing next to the clock timing at which the assertion is detected by the first detection step;
A second detection step of detecting a mismatch between the expected value of the register and the value of the register after being updated by the updating step;
A determination step for determining whether the change in the value of the register is correct based on the detection result detected by the second detection step;
An output step of outputting the determination result determined by the determination step;
The verification support method characterized by performing this.
(付記21)コンピュータが、
回路内の複数のクロックで動作するレジスタについて前記複数のクロックのうちいずれかのクロックのクロックタイミングで満たすべき前記レジスタの値を規定するアサーション群の中から、前記回路の模擬中に成立するアサーションを検出する第1の検出工程と、
前記レジスタの値の変化を検出する第2の検出工程と、
前記複数のクロックの各々のクロックにおいて、前記第2の検出工程によって前記レジスタの値の変化が検出されたクロックタイミング以降で最初に到来するクロックタイミングごとに、当該クロックタイミングとなるクロックと前記第1の検出工程によって検出されたアサーションで規定されたクロックとが同一クロックであるか否かを判断する判断工程と、
前記判断工程によって判断された判断結果に基づいて、前記レジスタの値の変化の正否を決定する決定工程と、
前記決定工程によって決定された決定結果を出力する出力工程と、
を実行することを特徴とする検証支援方法。
(Supplementary note 21)
An assertion that is established during simulation of the circuit is selected from among an assertion group that defines a value of the register to be satisfied at a clock timing of any one of the plurality of clocks for a register that operates with a plurality of clocks in the circuit. A first detection step to detect;
A second detection step of detecting a change in the value of the register;
For each clock of the plurality of clocks, for each clock timing that arrives first after the clock timing at which the change in the register value is detected by the second detection step, the clock that becomes the clock timing and the first clock A determination step of determining whether or not the clock defined by the assertion detected by the detection step is the same clock;
A determination step for determining whether the change in the value of the register is correct based on the determination result determined by the determination step;
An output step of outputting the determination result determined by the determination step;
The verification support method characterized by performing this.
301 編集処理部
311 選択部
312 編集部
401 第1の検出部
402 更新部
403 第2の検出部
404 決定部
405 出力部
1900 編集/作成処理部
1901 選択部
1902 編集部
1903 特定部
1904 作成部
2001 第1の検出部
2002 第2の検出部
2003 判断部
2004 生成部
2005 決定部
2006 出力部
301
Claims (10)
前記レジスタの値の変化を検出する第2の検出工程と、
前記複数のクロックの各々のクロックにおいて、前記第2の検出工程によって前記レジスタの値の変化が検出されたクロックタイミング以降で最初に到来するクロックタイミングごとに、当該クロックタイミングとなるクロックと前記第1の検出工程によって検出されたアサーションで規定されたクロックとが同一クロックであるか否かを判断する判断工程と、
前記判断工程によって判断された判断結果に基づいて、前記レジスタの値の変化の正否を決定する決定工程と、
前記決定工程によって決定された決定結果を出力する出力工程と、
をコンピュータに実行させることを特徴とする検証支援プログラム。 An assertion that is established during simulation of the circuit is selected from among an assertion group that defines a value of the register to be satisfied at a clock timing of any one of the plurality of clocks for a register that operates with a plurality of clocks in the circuit. A first detection step to detect;
A second detection step of detecting a change in the value of the register;
For each clock of the plurality of clocks, for each clock timing that arrives first after the clock timing at which the change in the register value is detected by the second detection step, the clock that becomes the clock timing and the first clock A determination step of determining whether or not the clock defined by the assertion detected by the detection step is the same clock;
A determination step for determining whether the change in the value of the register is correct based on the determination result determined by the determination step;
An output step of outputting the determination result determined by the determination step;
A verification support program characterized by causing a computer to execute.
前記判断工程によって、前記複数のクロックのいずれかのクロックにおいて前記アサーションで規定されたクロックと同一クロックであると判断された場合、前記レジスタの値の変化が、期待通りの変化であると決定することを特徴とする請求項1に記載の検証支援プログラム。 The determination step includes
If it is determined by the determination step that the clock of any one of the plurality of clocks is the same clock as the clock specified by the assertion, the change in the value of the register is determined to be an expected change. The verification support program according to claim 1, wherein:
前記第1の検出工程によって、前記回路の模擬中に成立するアサーションが検出されておらず、かつ、前記第2の検出工程によって、前記レジスタの値の変化が検出された場合、前記レジスタの値の変化が、前記アサーション群で規定されていない変化であると決定することを特徴とする請求項1または2に記載の検証支援プログラム。 The determination step includes
If no assertion that is established during simulation of the circuit is detected by the first detection step and a change in the value of the register is detected by the second detection step, the value of the register The verification support program according to claim 1, wherein the change is determined to be a change that is not defined in the assertion group.
前記判断工程は、
前記生成工程によって生成されたチェックプロセス群のうち、前記アサーションから前記成立通知を受けたチェックプロセスの有無を判断することを特徴とする請求項1に記載の検証支援プログラム。 When a change in the value of the register is detected by the second detection step, the computer is caused to execute a generation step of generating a check process group that waits for establishment notification for notifying establishment of assertion for each clock for the register,
The determination step includes
2. The verification support program according to claim 1, wherein, in the check process group generated by the generation step, it is determined whether or not there is a check process that has received the notification of establishment from the assertion.
前記判断工程によって、前記アサーションから前記成立通知を受けたチェックプロセスがあると判断された場合、前記レジスタの値の変化が、期待通りの変化であると決定することを特徴とする請求項4に記載の検証支援プログラム。 The determination step includes
5. The method according to claim 4, wherein when the determination step determines that there is a check process that has received the notification of establishment from the assertion, the change in the value of the register is determined to be an expected change. The verification support program described.
前記判断工程によって、前記アサーションから前記成立通知を受けたチェックプロセスがないと判断された場合、前記レジスタの値の変化が、前記アサーション群で規定されていない変化であると決定することを特徴とする請求項4または5に記載の検証支援プログラム。 The determination step includes
When it is determined by the determination step that there is no check process that has received the notification of establishment from the assertion, it is determined that the change in the value of the register is a change that is not defined in the assertion group. The verification support program according to claim 4 or 5.
前記選択工程によって選択されたアサーションごとに、前記成立通知に関する記述を挿入することにより、前記アサーション群を編集する編集工程と、を前記コンピュータに実行させ、
前記第1の検出工程は、
前記編集工程による編集後のアサーション群の中から、前記回路の模擬中に成立するアサーションを検出することを特徴とする請求項4または5に記載の検証支援プログラム。 A selection step of sequentially selecting unselected assertions from the assertion group;
For each assertion selected in the selection step, by causing the computer to execute an editing step of editing the assertion group by inserting a description related to the notification of establishment.
The first detection step includes
6. The verification support program according to claim 4 or 5, wherein an assertion that is established during simulation of the circuit is detected from the assertion group that has been edited by the editing step.
前記レジスタの値の変化を検出する第2の検出手段と、
前記複数のクロックの各々のクロックにおいて、前記第2の検出手段によって前記レジスタの値の変化が検出されたクロックタイミング以降で最初に到来するクロックタイミングごとに、当該クロックタイミングとなるクロックと前記第1の検出手段によって検出されたアサーションで規定されたクロックとが同一クロックであるか否かを判断する判断手段と、
前記判断手段によって判断された判断結果に基づいて、前記レジスタの値の変化の正否を決定する決定手段と、
前記決定手段によって決定された決定結果を出力する出力手段と、
を備えることを特徴とする検証支援装置。 An assertion that is established during simulation of the circuit is selected from among an assertion group that defines a value of the register to be satisfied at a clock timing of any one of the plurality of clocks for a register that operates with a plurality of clocks in the circuit. First detecting means for detecting;
Second detection means for detecting a change in the value of the register;
For each clock of the plurality of clocks, for each clock timing that arrives first after the clock timing at which a change in the value of the register is detected by the second detection means, the clock that becomes the clock timing and the first clock Determining means for determining whether the clock defined by the assertion detected by the detecting means is the same clock;
Determining means for determining whether the change in the value of the register is correct or not based on the determination result determined by the determining means;
Output means for outputting the determination result determined by the determination means;
A verification support apparatus comprising:
回路内の複数のクロックで動作するレジスタについて前記複数のクロックのうちいずれかのクロックのクロックタイミングで満たすべき前記レジスタの値を規定するアサーション群の中から、前記回路の模擬中に成立するアサーションを検出する第1の検出工程と、
前記レジスタの値の変化を検出する第2の検出工程と、
前記複数のクロックの各々のクロックにおいて、前記第2の検出工程によって前記レジスタの値の変化が検出されたクロックタイミング以降で最初に到来するクロックタイミングごとに、当該クロックタイミングとなるクロックと前記第1の検出工程によって検出されたアサーションで規定されたクロックとが同一クロックであるか否かを判断する判断工程と、
前記判断工程によって判断された判断結果に基づいて、前記レジスタの値の変化の正否を決定する決定工程と、
前記決定工程によって決定された決定結果を出力する出力工程と、
を実行することを特徴とする検証支援方法。 Computer
An assertion that is established during simulation of the circuit is selected from among an assertion group that defines a value of the register to be satisfied at a clock timing of any one of the plurality of clocks for a register that operates with a plurality of clocks in the circuit. A first detection step to detect;
A second detection step of detecting a change in the value of the register;
For each clock of the plurality of clocks, for each clock timing that arrives first after the clock timing at which the change in the register value is detected by the second detection step, the clock that becomes the clock timing and the first clock A determination step of determining whether or not the clock defined by the assertion detected by the detection step is the same clock;
A determination step for determining whether the change in the value of the register is correct based on the determination result determined by the determination step;
An output step of outputting the determination result determined by the determination step;
The verification support method characterized by performing this.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2014149308A JP5825409B2 (en) | 2014-07-22 | 2014-07-22 | Verification support program, verification support apparatus, and verification support method |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2014149308A JP5825409B2 (en) | 2014-07-22 | 2014-07-22 | Verification support program, verification support apparatus, and verification support method |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2011027949A Division JP5640790B2 (en) | 2011-02-10 | 2011-02-10 | Verification support program, verification support apparatus, and verification support method |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2014197432A JP2014197432A (en) | 2014-10-16 |
JP5825409B2 true JP5825409B2 (en) | 2015-12-02 |
Family
ID=52358101
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2014149308A Active JP5825409B2 (en) | 2014-07-22 | 2014-07-22 | Verification support program, verification support apparatus, and verification support method |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP5825409B2 (en) |
-
2014
- 2014-07-22 JP JP2014149308A patent/JP5825409B2/en active Active
Also Published As
Publication number | Publication date |
---|---|
JP2014197432A (en) | 2014-10-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP5471432B2 (en) | Verification support program and verification support device | |
JP5071373B2 (en) | Language processing apparatus, language processing method, and language processing program | |
JP2002073719A (en) | Generating method for circuit operation model description and logical design verifying device | |
JP5267434B2 (en) | Verification support program, verification support apparatus, and verification support method | |
JP4759392B2 (en) | Verification support program, recording medium storing the program, verification support apparatus, and verification support method | |
US7681157B2 (en) | Variable threshold system and method for multi-corner static timing analysis | |
US11714742B2 (en) | Synthesizing printf and scanf statements for generating debug messages in high-level synthesis (HLS) code | |
JP5640790B2 (en) | Verification support program, verification support apparatus, and verification support method | |
JP5040758B2 (en) | Simulation apparatus, simulation method, and program | |
CN114595657A (en) | Chip layout method and device and electronic equipment | |
US8661384B2 (en) | Verification support apparatus, verifying apparatus, computer product, verification support method, and verifying method | |
US8321825B2 (en) | Method and system for synthesizing relative timing constraints on an integrated circuit design to facilitate timing verification | |
US7797657B2 (en) | Parameter ordering for multi-corner static timing analysis | |
JP5825409B2 (en) | Verification support program, verification support apparatus, and verification support method | |
JP6451417B2 (en) | Debug support device, debug support system, debug support method, and debug support program | |
JP2010267209A (en) | Program, apparatus, and method for supporting verification | |
JP2010120341A (en) | Ledger sheet outputting method, its implementation device, and program | |
JP2010009384A (en) | Verification support program, verification support apparatus and verification support method | |
JP6318976B2 (en) | DEBUG CIRCUIT, DEBUGGER DEVICE, SEMICONDUCTOR DEVICE, AND DEBUG METHOD | |
JP2017041085A (en) | Program specification estimation device, estimation method and estimation program | |
JP5392862B2 (en) | Software simulation apparatus and simulation method | |
JP2007241836A (en) | Multi-cycle path verification method | |
JP6331400B2 (en) | Verification method, verification apparatus, and verification program | |
JP2020170483A (en) | Timing chart generation device and program | |
US8560986B2 (en) | Computer product, apparatus, and method for correcting assertion |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20140722 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20150625 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20150915 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20150928 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 5825409 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |