(57)【要約】【課題】  テスト検証者の負荷の低減や、テスト検証時間の短縮を実現する。【解決手段】  乱数発生手段、乱数発生手段の発生した乱数の値によってウエイトする時間を変化させる手段、少なくとも２種類のクロックを出力するクロック出力手段、クロック出力手段の出力するクロックで動作する動作モジュールを有する。【選択図】  図１
2005165747.tif 000002
【特許請求の範囲】
【請求項１】
乱数発生手段、
該乱数発生手段の発生した乱数の値によって、ウエイトする時間を変化させるウエイト時間処理手段、
リセット信号生成手段、
少なくとも２種類のクロックを出力するクロック出力手段、
該、クロック出力手段の出力するクロックで動作する動作モジュール、
テスト信号出力手段、
を持つことを特徴とする検証システム。
【請求項２】
該テスト信号出力手段は、該ウエイト時間処理手段によって、テスト信号の出力を開始するタイミングを変化させることを特徴とする、特許請求の範囲第一項に記載の検証システム。
【請求項３】
該クロック出力手段が出力するクロックのうち、少なくとも一つはスペクトラム拡散処理が施されていることを特徴とする、特許請求の範囲第一項に記載の検証システム。
【請求項４】
特許請求の範囲第一項に記載の検証システムにおいて、該検証システムはＡＳＩＣのシミュレーションを目的とすることを特徴とするもの。
【請求項５】
該乱数発生手段は、Ｖｅｒｉｌｏｇの＄ｒａｍｄｏｍシステムタスクを用いて発生させることを特徴とする、特許請求の範囲第４項に記載の検証システム。
【請求項６】
該乱数発生手段は、C言語を用いて発生させることを特徴とする、特許請求の範囲第４項に記載の検証システム。
【請求項７】
該検証システムは、Ｖｅｒｉｌｏｇ言語を用いて構築されていることを特徴とする特許請求の範囲第４項に記載の検証システム。
【請求項８】
該検証システムは、ＶＨＤＬ言語を用いて構築されていることを特徴とする特許請求の範囲第４項に記載の検証システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はＳＳＣＧを使用したＡＳＩＣのシミュレーション方法に関するものである。
【背景技術】
【０００２】
電子機器から放射される電磁波を抑制する技術として、スペクトラム拡散という技術がある。その動作は、基本となる周波数から、一定の周期で決められた値だけ周波数を変化させるというものである。上記、スペクトラム拡散を実現するシグナルジェネレータにＳＳＣＧというものがある。そして、ＥＭＩ対策の為に、ＳＳＣＧモジュールの使用を前提とした、もしくは、ＳＳＣＧを内蔵したＡＳＩＣ設計が必要となるケースが増えている。ただし、ＳＳＣＧの使用を前提としたＡＳＩＣ設計を行う際に、ＳＳＣＧが出力するクロックを使用すると、性能を発揮できない機能モジュールがあるので、その機能モジュールに対しては、ＳＳＣＧ処理を施していないクロックを与えることになる。
【０００３】
このＳＳＣＧ処理が施してあるクロックで動作している機能モジュールと、通常のクロックで動作している機能モジュールの間のデータ通信は、非同期式のデータ通信となる。非同期式のデータ通信を行う際に、気を付けなければいけないことは、非同期通信部分に配置されたフリップフロップが引き起こすメタステーブルに起因する誤動作である。それ故に、非同期通信部分について行うＡＳＩＣのシミュレーションは、なるべくメタステーブルを発生させて、誤動作がないことが確認できるとことが理想である。
【０００４】
従来のＳＳＣＧを使用したシミュレーションは、ＳＳＣＧの動作を実現するシミュレーションモデルを使用して行っている。シミュレーションモデルの動作には、アナログ的な要素は含まれないので、リセット解除後、決めたれた周期と順番で周波数を変化させていく。そのシミュレーション環境で、いくつかの異なるテストベンチを流すことによって、複数パターンのメタステーブルを発生させて、誤動作なきことを確認できていた。
【特許文献１】特開２００３−１１４７３３号公報
【特許文献２】特開２０００−１３７０６１号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
しかしながら、上記従来例では、ＳＳＣＧのシミュレーションモデルの性格上、一つのテストベンチがメタステーブルを起こす箇所と時間、頻度は何回シミュレーションを流しても同じである。したがって、非同期設計部分の誤動作がないかどうかを確認するためには、たくさんのテストベンチを作成しなければならない。一方、ＡＳＩＣの多機能化で、テストベンチの本数は増加する傾向にあり、ＡＳＩＣ検証者の負荷がより増加するという問題がある。
【０００６】
本出願に係わる発明の目的は、ＳＳＣＧの使用と前提としたＡＳＩＣのシミュレーションにおいて、メタステーブル発生による影響を確認するシミュレーションを出来るだけ少ない本数のテストベンチで実現することにある。
【課題を解決するための手段】
【０００７】
上記課題を解決する為に、本発明においては、リセット解除後ＳＳＣＧが動作を初めてから、テストベンチによる波形が入力されるまでの時間をランダムに変化させる仕組みを設ける。そうすることによって、シミュレーションを流す度に異なるＳＳＣＧパターンでシミュレーションを行うことが可能となり、一つのテストベンチで非同期通信部分のメタステーブルをあらゆる箇所、時間、頻度で発生させられるという効果がある。
【発明の効果】
【０００８】
以上のように、ＳＳＣＧ処理を施したクロックと、通常のクロックを使用するＡＳＩＣをシミュレーションする際に、リセットが解除されてから、テストベンチを開始するまでの時間をランダムに変化させる仕組みを設けることによって、一つのテストベンチで、メタステーブル発生に関するシミュレーションを複数パターン行うことが可能となり、テスト検証者の負荷の低減や、テスト検証時間の短縮という効果がある。
【発明を実施するための最良の形態】
【０００９】
（実施例１）
図１は、本実施例の特徴を最もよく表す図であり、同図において、１はＡＳＩＣであり、２のＳＳＣＧによって生成される、７のＳＳＣＧ処理を施したクロック（以下、ＳＳＣＧクロック）と、３の通常のクロックジェネレータ（以下、CG）によって生成される８のＳＳＣＧ処理が施されていないノーマルクロック（以下、ノーマルクロック）の２つクロックによって動作する。４は、テストベンチブロックであり９のテストベンチブロック４によって生成されるテスト信号（以下、テスト信号）を出力する。
【００１０】
５は、テストベンチブロック４内にあるウエイト関数でありテストベンチ内で使用する関数である。ウエイト関数５は、６の乱数発生モジュールによって生成された１０の乱数を受け取って、乱数１０の値によって、テストベンチ内でウエイトする時間を変えるという動作をする。１１は、リセットジェネレータであり、１２のリセット信号をＡＳＩＣ１、ＳＳＣＧ２、ＣＧ３に対して出力する。１３は、ＡＳＩＣ１内にあるノーマルクロック８で動作するフリップフロップ（以下、Ｆ／Ｆ）であり、１４はＳＳＣＧクロック７で動作するフリップフロップ（以下、ＳＳＣＧ  Ｆ／Ｆ）である。１５は、Ｆ／Ｆ１３から出力されＳＳＣＧ  Ｆ／Ｆ１４に入力される信号線（以下、信号１５）であり、信号１５の変化タイミングとＳＳＣＧクロック７との関係によって、１６のＳＳＣＧ  Ｆ／Ｆ１４から出力される信号（以下、信号１６）にメタステーブルが発生する。
【００１１】
図３はメタステーブル発生を示すタイミングチャートである。同図を用いてメタステーブルが発生する状況について説明する。ノーマルクロック８、ＳＳＣＧクロック７が発振を開始して、リセット信号１２が解除されると、テストベンチブロック４から出力されたテスト信号９によって、ＡＳＩＣ１が動作を始める。図３に示す信号１５と信号１６の動きは、上記テスト信号９によって引き起こされる動作の一部分を示している。
【００１２】
図３には、信号１５と信号１６の動きについて、１９、２０に示す二つのパターンを記している。（以下、それぞれ、状態１９、状態２０）まず、状態１９の方から説明する。リセット信号１２の解除後、ウエイト関数５によって、１７に示す時間（以下、時間１７）のウエイト処理が入った後にテスト信号９が入力される。それによって、ノーマルクロック８に同期している信号１５は、２１の時刻（以下、時刻２１）で変化すると仮定する。
【００１３】
そうすると、ＳＳＣＧクロック７で動作しているＳＳＣＧ  Ｆ／Ｆ１６は、２２の時刻（以下、時刻２２）で信号１５を取り込むという動作をする。その時、３０のセットアップ時間が、ＳＳＣＧ  Ｆ／Ｆ１６が要求するセットアップ時間より短い場合、１８のメタステーブルが発生する。
【００１４】
また、２４の時刻（以下、時刻２４）で信号１５が再び変化すると、この時刻２４では、ノーマルクロック８と、ＳＳＣＧクロック７は同期していて、通常通り２５の時刻（以下、時刻２５）で信号１６は変化する。一方、状態２０の方を見ると、リセット信号１２が解除後、ウエイト関数５によるウエイト処理によって、今度は２６の時刻（以下、時刻２６）まで、テスト信号９が入力されない。すると、時刻２６においては、ノーマルクロック８とＳＳＣＧクロック７は同期しているので、時刻２６で変化する信号１５を受信したＳＳＣＧ  Ｆ／Ｆ１４は、２４の時刻（以下、時刻２４）で信号１６を変化させるのでメタステーブルは発生しない。
【００１５】
しかし、２７の時刻（以下、時刻２７）で、信号１５が再び変化すると、ＳＳＣＧ  Ｆ／Ｆは２８の時刻（以下、時刻２８）で信号１５を受信することになり、３１のセットアップ時間がＳＳＣＧ  Ｆ／Ｆ１４の許容するセットアップ時間より短ければ、１８のメタステーブルが発生する。このように、テスト信号９が入力されるタイミングによって、メタステーブルが発生する箇所や時間、頻度に変化が出てくる。
【００１６】
そこで、本実施例では、乱数発生モジュール６が発生した値によって、時間１７を変化させる。具体的に、図２に示す。図２は、テストベンチ記述部分のイメージ図であり、３２はテストベンチ記述開始ポイント、３３がテストベンチ記述である。そして、矢印の方向に向かって、テストベンチが処理されていく。本実施例では、テストベンチ記述の一番先頭に、ウエイト関数５を置く。そして、乱数発生モジュール６によって出力される乱数１０を受信したウエイト関数５は、乱数１０の値によって、ウエイトする時間を変化させるのである。
【００１７】
図４に処理の流れを示すフローチャートを示す。以下、同図を用いて処理の流れを説明する。ステップ１において、ＳＳＣＧ２とＣＧ３がＳＳＣＧクロック７とノーマルクロック８を出力し、ステップ２に移行する。ステップ２において、乱数発生モジュール６が乱数１０をウエイト関数５に対して出力してステップ３に移行する。ステップ３において、リセットジェネレータ１１はリセット信号１２を解除して、ステップ４に移行する。ステップ４において、ウエイト関数５は、乱数１０の値だけウエイト処理を行い、乱数１０で示される時間のウエイト処理が完了したら、ステップ５に移行し、テストベンチをスタートさせる。乱数発生モジュール６からウエイト関数５に乱数１０を渡す方法は、Ｖｅｒｉｌｏｇで構築されたシミュレーション環境であれば、ｆｏｒｃｅ文を使用してもいいし、Ｃ言語等を利用するのであれば、変数を介して代入をする形で、ウエイト関数５に値を渡すのも構わないものとする。
【００１８】
また、シミュレータ付属のｆｏｒｃｅ機能を使用する方法もある。また、乱数発生の方法に関しては、Ｖｅｒｉｌｏｇで構築されたシミュレーション環境であれば、＄randomシステムタスクを使用しても良いし、Ｃ言語等で乱数発生モジュールを生成しても構わないものとする。
【００１９】
以上のように、本実施例によれば、乱数発生モジュール６とウエイト関数５を設け、乱数発生モジュール６の出力する乱数１０の値によって、ウエイト関数５がウエイト処理を行う時間を変化させることによって、同じテストベンチでも、シミュレーションを行う度に、テスト信号９が出力されるタイミングが変化し、一つのテストベンチ複数のメタステーブル発生のシミュレーションを行うことが可能となる。
【図面の簡単な説明】
【００２０】
【図１】本特許の特徴を最もよく表す図。
【図２】テストベンチ記述部分のイメージ図。
【図３】本特許の動作と、メタステーブルの発生を示すタイミングチャート。
【図４】本特許の動作を示すフローチャート。
【符号の説明】
【００２１】
１  ＡＳＩＣ
２  ＳＳＣＧ
３  クロックジェネレータ（ＣＧ）
４  テストベンチブロック
５  ウエイト関数
６  乱数発生モジュール
７  ＳＳＣＧクロック
８  ノーマルクロック
９  テスト信号
１０  乱数
１１  リセットジェネレータ
１２  リセット信号
１３  ノーマルクロック８によって動作するフリップフロップ（Ｆ／Ｆ）
１４  ＳＳＣＧクロック７によって動作するフリップフロップ（ＳＳＣＧ  Ｆ／Ｆ）
１５  Ｆ／Ｆ１３から出力される信号（信号１５）
１６  ＳＳＣＧ  Ｆ／Ｆ１４から出力される信号（信号１６）
１７  リセット解除時刻からテスト信号９が出力されるまでの時間（時間１７）
１８  メタステーブル
１９  時間１７が短い時の信号１５と信号１６の動作を示すタイミングチャート（状態１９）
２０  時間１７が長い時の信号１５と信号１６の動作を示すタイミングチャート（状態２０）
２１  時刻２１
２２  時刻２２
２３  時刻２３
２４  時刻２４
２５  時刻２５
２６  時刻２６
２７  時刻２７
２８  時刻２８
２９  時刻２９
３０  セットアップ時間
３１  セットアップ時間
３２  テストベンチ記述開始ポイント
３３  テストベンチ記述
【図１】
2005165747.tif 000003
【図２】
2005165747.tif 000004
【図３】
2005165747.tif 000005
【図４】
2005165747.tif 000006