(57)【特許請求の範囲】
【請求項１】
複数の機能コアが集積された埋込コア型システムオンチップの設計を検証する方法において、
設計の検証対象であるシステムオンチップに集積される各機能コアと同一の機能と構成を有する複数のシリコンＩＣを製造するステップと、
そのシリコンＩＣを複数の検証ユニットに搭載するステップであり、各検証ユニットはハードウェアによるテスターであり、各シリコンＩＣは、コンパレータとドライバーを有するピンエレクトロニクスを介して対応する検証ユニットに接続されるステップと、
そのシリコンＩＣにコア固有のテストパターン信号を上記ドライバーを介して印加してその結果シリコンＩＣから得られる出力を上記コンパレータにより比較することにより、システムオンチップに集積される各コアに対応するシリコンＩＣの検証を行うステップであり、上記コア固有のテストパターン信号は、そのコアの設計段階で形成されたシミュレーション・テストベンチを使用して発生するステップと、
各コア間のインタフェース、コア、オンチップバス、およびグルーロジックをその間にインタフェーステスト信号を印加して検証するステップであり、そのインタフェーステスト信号はシステムオンチップの設計において形成されたテストベンチとグルーロジックのＦＰＧＡまたはエミュレーションを用いて検証するステップと、
各コアに対応するシリコンＩＣのタイミング動作を検証することにより、コアとコア間のタイミングおよびシステムオンチップレベルのタイミングを検証するステップと、
複数のシリコンＩＣに全体動作テストパターン信号を印加してその結果としてのシリコンＩＣからの出力を検証することにより、複数のシリコンＩＣの全体動作を検証し、これによりシステム全体としての設計を検証するステップであり、その全体動作テストパターン信号は、システムオンチップ全体のシミュレーション・テストベンチを使用し、かつアプリケーションを実行することにより発生するステップと、
により構成されるシステムオンチップの設計検証方法。
【請求項２】
上記検証するステップは、複数の検証ユニットを各コアと同一の機能と構成を有するシリコンＩＣに割り当て、かつそのシリコンＩＣを割り当てた検証ユニットに搭載した後に実施する請求項１に記載のシステムオンチップの設計検証方法。
【請求項３】
上記検証するステップは、複数の検証ユニットを各コアと同一の機能と構成を有するシリコンＩＣに割り当て、かつそのシリコンＩＣを割り当てた検証ユニットに搭載した後に実施し、その検証ユニットのテストピンは試験対象であるシリコンＩＣの入力・出力ピンに基づいて構成する請求項１に記載のシステムオンチップの設計検証方法。
【請求項４】
上記検証するステップは、複数の検証ユニットを各コアと同一の機能と構成を有するシリコンＩＣに割り当て、かつそのシリコンＩＣを割り当てた検証ユニットに搭載した後に実施し、それぞれの検証ユニットはイベント型テスタで構成され、上記シミュレーション・テストベンチから抽出したテストパターンの信号値の変化とその変化点のタイミングをあらわしたイベントデータに基づいてテストパターンを発生する請求項１に記載のシステムオンチップの設計検証方法。
【請求項５】
上記各コアのシミュレーション・テストベンチは、イベント型のフォーマットを有しており、これにより検証ユニットによりテストパターン信号を発生してシステムオンチップのコアの不良の発見とその修復のプロセスを容易に行う請求項１に記載のシステムオンチップの設計検証方法。
【請求項６】
複数の機能コアが集積された埋込コア型システムオンチップの設計を検証する方法において、
システムオンチップに集積される対応するコアと同一の機能と回路構成を有する複数のシリコンＩＣを製造するステップと、
複数の検証ユニットを備え、その検証ユニットを試験対象コアに相当する上記製造したシリコンＩＣに割り当てるステップと、
そのシリコンＩＣを複数の検証ユニットに搭載するステップであり、各検証ユニットはハードウェアによるテスターであり、各シリコンＩＣは、コンパレータとドライバーを有するピンエレクトロニクスを介して対応する検証ユニットに接続されるステップと、
その各コアをシステムオンチップ内で結合するためのオンチップバスをモデルとした相互接続バスにより上記シリコンＩＣを接続するステップと、
そのシリコンＩＣにテストパターンを上記ドライバーを介して印加してそのシリコンＩＣの応答出力を上記コンパレータにより比較しその結果を上記検証ユニットにより評価することによりシステムオンチップに集積される上記コアの検証を行うステップと、
により構成され、上記テストパターンは、上記各コアの設計段階で形成されたテストベンチデータから抽出したイベントデータを用いて直接的に形成されるシステムオンチップの設計検証方法。
【請求項７】
エミュレータによりインタフェースとグルーロジックをエミュレーションすることにより、システムオンチップに集積するコアと同一の機能と回路構成を有するシリコンＩＣ間のインターファイスやグルーロジックの設計の検証を行うステップをさらに有する請求項６に記載のシステムオンチップの設計検証方法。
【請求項８】
フィールド・プログラマブル・ゲートアレー（ＦＰＧＡ）によりインタフェース機能とグルーロジックを実行することにより、システムオンチップに集積するコアと同一の機能と回路構成を有するシリコンＩＣ間のインターファイスやグルーロジックの設計の検証を行うステップをさらに有する請求項６に記載のシステムオンチップの設計検証方法。
【請求項９】
システムオンチップレベルでのテストベンチデータに基づいて形成したテスト信号を各コアと同一の機能と回路構成を有するシリコンＩＣに与えることにより、コアとコア間のタイミングおよびシステムオンチップレベルでのタイミング・クリティカル信号路のタイミングの設計の検証を行うステップをさらに有する請求項６に記載のシステムオンチップの設計検証方法。
【請求項１０】
複数のシリコンＩＣに全体動作テストパターン信号を印加してその結果としてのシリコンＩＣからの出力を検証することにより、複数のシリコンＩＣの全体動作を検証し、これによりシステム全体としての設計を検証するステップをさらに有し、その全体動作テストパターン信号は、システムオンチップ全体のシミュレーション・テストベンチを使用し、かつアプリケーションを実行することにより発生する、請求項６に記載のシステムオンチップの設計検証方法。
【請求項１１】
上記検証するステップは、複数の検証ユニットを各コアと同一の機能と回路構成を有するシリコンＩＣに割り当て、かつそのシリコンＩＣを割り当てた検証ユニットに搭載した後に実施する請求項６に記載のシステムオンチップの設計検証方法。
【請求項１２】
上記検証するステップは、複数の検証ユニットを各コアと同一の機能と回路構成を有するシリコンＩＣに割り当て、かつそのシリコンＩＣを割り当てた検証ユニットに搭載した後に実施し、それぞれの検証ユニットはイベント型テスタで構成され、テストパターンの信号値の変化とその変化点のタイミングをあらわしたイベントデータに基づいてテストパターンを発生する請求項６に記載のシステムオンチップの設計検証方法。
【請求項１３】
上記各コアのシミュレーション・テストベンチは、イベント型のフォーマットを有しており、これにより検証ユニットによりテストパターン信号を発生してシステムオンチップのコアの不良の発見とその修復のプロセスを容易に行う請求項６に記載のシステムオンチップの設計検証方法。
【請求項１４】
上記検証するステップは、複数の検証ユニットを各コアと同一の機能と回路構成を有するシリコンＩＣに割り当て、かつそのシリコンＩＣを割り当てた検証ユニットに搭載した後に実施し、その検証ユニットのテストピンは試験対象であるシリコンＩＣの入力・出力ピンに基づいて構成する請求項６に記載のシステムオンチップの設計検証方法。
【請求項１５】
複数の機能コアが集積された埋込コア型システムオンチップの設計を検証する設計検証装置において、
使用者とのインタフェースを行うとともに設計検証のための全体動作を制御するためのメイン・システム・コンピュータと、
そのメイン・システム・コンピュータから受けたテストベンチ・データを用いてシステムオンチップに集積される複数の機能コアをテストするためのテストパターンを発生し、そのテストパターンを上記機能コアとは別に製造された複数のシリコンＩＣに印加してその応答結果を検証する、各検証ユニットがハードウェアによるテスターである複数の検証ユニットと、
その複数の検証ユニットとメイン・システム・コンピュータをインタフェースするシステムバスと、
を有し、上記各検証ユニットは上記メイン・システム・コンピュータからテストベンチデータを受け取る制御コンピュータを有しており、上記複数のシリコンＩＣはコンパレータとドライバーを有するピンエレクトロニクスを介して対応する検証ユニットに接続されて、そのドライバーを介して検証ユニットからテストパターンを受け、そのテストパターンに対する応答出力を発生し、その応答出力をコンパレータと検証ユニットとメイン・システム・コンピュータにより評価し、その各シリコンＩＣは、システムオンチップに集積される対応する機能コアと同一の内部構造と機能を有する、
ように構成されたシステムオンチップの設計検証装置。
【請求項１６】
上記各検証ユニットにおける上記制御コンピュータは、割り当てられた上記シリコンＩＣに、メイン・システム・コンピュータからシステムバスを通して送られたテストベンチデータに基づいて形成したテストパターンを印加しかつそのシリコンＩＣからの応答出力を評価し、上記テストベンチデータは上記各機能コアの設計段階で形成される請求項１５に記載のシステムオンチップの設計検証装置。
【請求項１７】
上記各検証ユニットは、対応する上記各機能コアと同一の機能と構造を有する上記各シリコンＩＣに割り当てられる請求項１５に記載のシステムオンチップの設計検証装置。
【請求項１８】
上記各検証ユニットは、設計検証するシステムオンチップに集積する上記各機能コアと同一の機能と構造を有する上記各シリコンＩＣに割り当てられ、その検証ユニットのテストピンは被試験シリコンＩＣの入力・出力ピンに基づいて構成される請求項１５に記載のシステムオンチップの設計検証装置。
【請求項１９】
上記各検証ユニットは複数のテストピンによるグループを構成しており、テストピンの構成は試験対象であるシリコンＩＣのピン構成に対応して自由に構成の変更ができる請求項１５に記載のシステムオンチップの設計検証装置。
【請求項２０】
上記各検証ユニットは複数のテストピンによるグループを構成しており、テストピンの構成は試験対象であるシリコンＩＣのピン構成に対応して自由に構成の変更ができ、そのグループのサイズは試験対象であるシリコンＩＣの入力・出力ピンの数に基づいてメイン・システム・コンピュータにより決定される請求項１５に記載のシステムオンチップの設計検証装置。
【請求項２１】
上記各検証ユニットは制御コンピュータを有し、その制御コンピュータは上記メイン・システム・コンピュータからシステムバスを通して送られたテストベンチデータを受け、そのテストベンチデータからイベントデータを抽出してテストパターン形成し、そのテストパターンを割り当てられたシリコンＩＣに印加してそのシリコンＩＣからの応答出力を評価し、その制御コンピュータは上記検証ユニットの１のテストピン毎に設けられ、上記テストベンチデータは上記各機能コアの設計段階で形成される請求項１５に記載のシステムオンチップの設計検証装置。
【請求項２２】
上記検証ユニットは、割り当てられたシリコンＩＣを評価することにより対応する機能コアを検証し、さらに検証ユニットは、搭載したエミュレータによりインタフェースとグルーロジックをエミュレーションすることにより、システムオンチップに集積する機能コア間のインターファイスやグルーロジックを検証する請求項１５に記載のシステムオンチップの設計検証装置。
【請求項２３】
上記検証ユニットは、割り当てられたシリコンＩＣを評価することにより対応する機能コアを検証し、さらに検証ユニットは、搭載したフィールド・プログラマブル・ゲートアレー（ＦＰＧＡ）によりインタフェース機能とグルーロジックを実行することにより、システムオンチップに集積する機能コア間のインターファイスやグルーロジックの検証を行う請求項１５に記載のシステムオンチップの設計検証装置。
【請求項２４】
上記メイン・システム・コンピュータと制御ユニットは、システムオンチップレベルでのテストベンチデータに基づいて形成したテスト信号を各コアに対応するシリコンＩＣに与えることにより、コアとコア間のタイミングおよびシステムオンチップレベルでのタイミング・クリティカル信号路のタイミングの設計の検証を行う請求項１５に記載のシステムオンチップの設計検証装置。
【請求項２５】
上記メイン・システム・コンピュータと制御ユニットは、システムオンチップ全体のシミュレーション・テストベンチとアプリケーション・ソフトウェアを用いて上記複数のシリコンＩＣの全体動作を検証することにより、システムオンチップ全体の検証を行う請求項１５に記載のシステムオンチップの設計検証装置。
【請求項２６】
上記メイン・システム・コンピュータと制御ユニットは、システムオンチップ全体のシミュレーション・テストベンチとアプリケーション・ソフトウェアを用いて上記複数のシリコンＩＣの全体動作を検証することにより、システムオンチップ全体の検証を行い、さらにメイン・システム・コンピュータは、システムオンチップのアプリケーション・ソフトウェアの実行のための計算を複数のサブタスクに分離して検証ユニットに分配し、その分配したサブタスクを複数の検証ユニットに割り当てる請求項１５に記載のシステムオンチップの設計検証装置。
【請求項２７】
上記メイン・システム・コンピュータと制御ユニットは、システムオンチップ全体のシミュレーション・テストベンチとアプリケーション・ソフトウェアを用いて上記複数のシリコンＩＣの全体動作を検証することにより、システムオンチップ全体の検証を行い、さらにメイン・システム・コンピュータは、システムオンチップのアプリケーション・ソフトウェアの実行のための計算を複数のサブタスクに分離して検証ユニットに分配し、その分配したサブタスクを複数の検証ユニットに割り当て、さらにメイン・システム・コンピュータは、その検証ユニットからの上記シリコンＩＣの応答出力を合成してシステムオンチップレベルでの応答出力を形成し、その良否を決定する請求項１５に記載のシステムオンチップの設計検証装置。
【請求項２８】
上記各検証ユニットは、対応するシリコンＩＣを搭載するためのパフォーマンスボードをさらに有する請求項１５に記載のシステムオンチップの設計検証装置。
【請求項２９】
上記各検証ユニットは、被試験グルーロジックと全てのシリコンＩＣを搭載するためのパフォーマンスボードをさらに有する請求項１５に記載のシステムオンチップの設計検証装置。
【請求項３０】
上記各検証ユニットはイベント型テスタで構成され、その検証ユニットは、テストパターンの信号値の変化とその変化点のタイミングをあらわしたイベントデータに基づいてテストパターンを発生する請求項１５に記載のシステムオンチップの設計検証装置。
【請求項３１】
上記各コアのシミュレーション・テストベンチは、イベント型のフォーマットを有しており、これにより検証ユニットによりテストパターン信号を発生してシステムオンチップのコアの不良の発見とその修復のプロセスを容易に行う請求項１５に記載のシステムオンチップの設計検証装置。
【請求項３２】
上記各検証ユニットはイベント型テスタとして構成され、そのイベント型テスタは、
基準クロック周期の整数倍データと基準クロック周期の端数データとで形成されるタイミングデータを格納するイベントメモリを有し、そのタイミングデータは予め定めた基準時点と現在のイベントとの間の時間差であり、
上記タイミングデータを読み出すために、上記イベントメモリをアクセスするためのアドレスデータを発生するアドレスシーケンサと、
上記基準クロックの上記整数倍だけ遅延したイベントスタート信号を発生するためのタイミング・カウント・ロジック部と、
そのタイミング・カウント・ロジック部からのイベントスタート信号と上記イベントメモリからの基準クロック周期の整数倍データと基準クロック周期の端数データを基にして、各イベントを形成し、これにより上記テスト信号やストローブ信号を発生するためのイベント発生ユニットと、
上記シリコンＩＣに上記検証ユニットを割り当てるために検証ユニットのアドレスを検出する検証ユニット書き込みデコーダと、
により構成される請求項１５に記載のシステムオンチップの設計検証装置。
【請求項３３】
複数の機能コアが集積された埋込コア型システムオンチップの設計を検証する設計検証装置において、
使用者とのインタフェースを行うとともに設計検証のための全体動作を制御するためのメイン・システム・コンピュータと、そのメイン・システム・コンピュータから受けたテストベンチ・データを用いてシステムオンチップに集積される複数の機能コアをテストするためのテストパターンを発生して、そのテストパターンを上記機能コアとは別に製造された複数のシリコンＩＣに印加してその応答結果を検証する、各検証ユニットがハードウェアによるテスターである複数の検証ユニットと、
その複数の検証ユニットとメイン・システム・コンピュータをインタフェースするシステムバスと
により構成され、上記各検証ユニットは上記メイン・システム・コンピュータからテストベンチデータを受け取る制御コンピュータを有しており、上記複数のシリコンＩＣはコンパレータとドライバーを有するピンエレクトロニクスを介して対応する検証ユニットに接続されて、そのドライバーを介してその検証ユニットからテストパターンを受け、そのテストパターンに対する応答出力を発生し、その応答出力を上記コンパレータと検証ユニットとメイン・システム・コンピュータにより評価し、その各シリコンＩＣは、システムオンチップに集積される対応する各機能コアと同一の内部構造と機能を有しており、
さらに上記メイン・システム・コンピュータは、上記シリコンＩＣに印加するテストパターンの発生、そのシリコンＩＣからの応答出力の評価、システムオンチップのタイミングやインタフェースの評価、およびシステムオンチップ全体の設計検証の全てのタスクを行うシステムオンチップの設計検証装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
この発明は、複数の機能コアを有するシステムオンチップ（ＳｏＣ）集積回路の設計の完全性を試験するための方法および装置に関し、特に各コアの意図した機能、各コアのタイミング、各コア間のインタフェース、およびシステムオンチップのシステム全体としての動作のそれぞれについて正しい設計がされているかを確認するようにしたシステムオンチップの設計検証方法および装置に関する。
【０００２】
【従来の技術】
最近数年間において、ＡＳＩＣ（Application Specific IC）の技術は、チップ組み合わせ思考から埋込みコアをベースとしたシステムオンチップの思考に発展している。これらのシステムオンチップは、「コア」（ＩＰまたは知的財産とも称される）として知られる設計済みの複雑で各種のアプリケーションに寄与する機能ブロックを用いて構成されている。これらの機能コアは、一般にＶｅｒｉｌｏｇ／ＶＨＤＬのような高級記述言語（ＨＤＬ）の形態として（ソフトコアとも称される）、あるいはＧＤＳＩＩのようなトランジスタレベルのレイアウトの形態として（ハードコアとも称される）入手することができる。システムオンチップは、オンチップによる機能を形成するために、ハードコアとソフトコアの組み合わせとして構成されている。そのようなオンチップ機能の例は、マイクロプロセッサ、大規模メモリアレー、オーディオ・ビデオコントローラ、モデム、インターネット・チューナ、二次元・三次元グラフィック・コントローラ、DSP等である。
【０００３】
多くの場合、このようなコア（以後「機能コア」ともいう）は、コア提供会社より購入することができ、これを集積回路化してシステムオンチップを形成する。機能コアを外部より購入する場合、コア提供会社は、そのコアのシミュレーションテストベンチとともに、その設計ネットリストを購入者に提供する。したがって、そのコアがシステムオンチップに集積する場合、そのコアのテストベンチを、直接的に何らの変更も加えずに、集積されたシステムオンチップの設計の動作検証に用いることが望ましい。
【０００４】
現在においては、コアの設計は、Ｖｅｒｉｌｏｇ／ＶＨＤＬのような高級記述言語を用いて、ブロックあるいはサブブロックについて記述され、ビヘイビオラルおよびゲートレベルのＶｅｒｉｌｏｇ／ＶＨＤＬシミュレータによりシミュレートされている。このシミュレーションは、コア設計がシリコンＩＣに組み込まれる前に、その機能をチェックすることを目的としている。
【０００５】
システムオンチップの設計において、その設計の有効性を検証することが最も重要でかつ難しい仕事の１つである。それは、完全な機能の検証を経なくては、設計上の問題を発見することも取り除くこともできないからである。シミュレーション速度が遅いこと、システムオンチップのサイズが大規模であることの理由により、今日の装置や方法によっては、システムオンチップの全体レベルでの設計有効性の確認はほとんど不可能な仕事である。
【０００６】
検証とは受付けた対象のチェックを意味し、それはシステム設計について言えば、仕様との対比における設計をチェックすることを意味する。システム設計においてその検証は、ある抽象レベルから他の抽象レベルへの翻訳が正しいかを証明することにより実行される。この目的は、実用的な限度においてこの設計を実施し、チップを製造する際に、意図したようにシステムが動作するかを判断することである。システムオンチップは、複数の埋込コアによる単一のハードウェア素子である。したがって、システムオンチップの設計検証は、コアの検証、コア間の相互接続についての検証、およびコアを組み合わせたシステム全体としての検証により構成される。
【０００７】
現在のシステムオンチップの設計手法において、システムオンチップの仕様の開発とともに、ビヘイビオラル・モデル（行動モデル）が開発され、それにより設計の有効確認あるいはシステム動作の検証のためのシミュレーション用テストベンチが形成される。
【０００８】
システムレベルでの検証は、設計のハイアラキ（階級）に基づいて実施される。最初にブロックレベル（通常それはコアレベル）において、スタンドアロン（単一状態）での正当性がチェックされる。次に、これらのコア間のインタフェースが、処理タイプとデータ内容についての正当性がチェックされる。次のステップにおいては、完全にアセンブリされたチップ上で、アプリケーション・ソフトウェアあるいはそれに等価のテストベンチを走らせる。これはハードウェアとソフトウェアの共同検証を伴う(M. Keating and P. Bricaud, "Reuse methodology manual",Kluwer Academic Press, 1998; J. Stcunstrub and W. Wolf, "hardware-software co-design" KluwerAcademic Press, 1997)。ソフトウェアはそのソフトウェアコードをその動作時間で実行することにより始めて検証することができるのであり、このためソフトウェアとハードウェアの共同シミュレーションを行う必要がある。
【０００９】
ＡＳＩＣ（アプリケーション・スペシフィックＩＣ）あるいはＦＰＧＡ（フィールド・プログラマブル・ゲートアレー）によるハードウェア試作品（プロトタイプ）を形成し、それをシステム全体としての動作を検証するために用いることも頻繁に行われる。
【００１０】
（機能の検証）
第１図は、コア設計における異なる抽象化レベルとその各レベルにおいて現在用いられている検証方法例をあらわしている。第１図では抽象化の最上位レベルから最下位レベルに向かって、ビヘイビオラル（行動）ＨＤＬレベル２１、ＲＴＬ（レジスタ・トランスファ・ランゲージ）レベル２３、ゲートレベル２５および物理的設計レベル２７がそれぞれ示されている。そのような異なる抽象化レベルに対応する検証方法例が、第１図のブロック２８に示されている。このような検証方法における各種の試験種類には、以下のようなものがある。
【００１１】
（１）設計仕様に追従しているか確認するための追従テスト。
（２）電圧、温度あるいはプロセスの各条件における最大値と最小値のような両極端な状態でのテストであるコーナテスト。
（３）基本的に特定の対象を有せず、まれにバグを検出できるのみのランダムテスト。
（４）設計を現実に適用して、意図した機能の誤記を修正することができる実コードテスト。
（５）設計の修正後に集合的に行う回帰テスト。一般的にバグを修正する毎にテスト条件を付加した新たなテストが必要となる。
【００１２】
テストベンチの開発については、目標とするシステムオンチップやコアの機能により異なる。例えばプロセッサのテストベンチは、インストラクションに基づいたテストプログラムを実行するが、バスコントローラ・インタフェースコアの場合は、バス機能モデルとバスモニタを用いてテスト信号を与え、そのシミュレーション出力結果をチェックする。このようなアプローチにおける問題は、ビヘイビオラル・テストベンチは非常に速度が遅いことである。
【００１３】
テスト信号あるいはテストパターンを発生した後、その応答出力が正しいかどうかをチェックする必要がある。現在において、そのようなチェックは、出力波形を観察することにより手動的に行っているが、設計に変更があった場合には、このような手動によるチェックは不可能になる。応答出力を検証する他の方法としては、実際のアプリケーション・ソフトウェアを実行することであり、これは基本的にハードウェアとソフトウェアの共同シミュレーションをすることである。しかしこの方法は、現在のコンピュータを用いた場合には、非常に非効率的である。さらにそのようなテストベンチにおいて、アプリケーションソフトウェアと機能コア間のやりとり（トランザクション）は、シミュレーションの全体のサイクルにおけるわずか一部に相当するにすぎない。したがって、わずか一部の機能が検証されるにすぎない。
【００１４】
（インタフェースの検証）
システムオンチップの設計において、コアとコアとの間のインタフェースを検証する必要がある。通常、インタフェースは、コアとコア間バス、あるいはチップ全体用のバスにより、コア間を接続するためのアドレスとデータによる一定の構造を有している。またインタフェースは何らかの形式による制御機構、リクエストや許可のような信号、及びバスコントローラを有している。このようなインタフェースにおける一定構造は、所定シーケンス数のデータや制御信号を処理することにより規定することができる。
【００１５】
インタフェースの検証には、各インタフェースにおける全ての可能な処理の一覧が必要となるが、そのような全てのテスト信号を形成することは実際にはできないので、そのような検証は不可能である。したがって限られた範囲での検証が行われる。この限られた検証の後、次のタスクは、各コアが受領する全てのデータの値および全てのデータのシーケンスについて、そのコアが正しく行動するかを検証することである。全ての異なるデータ値を処理することは、必要データ量が大きすぎるので、そのような検証は不可能である。したがって、今日においては、非常に不完全な検証しかされていない。
【００１６】
（タイミングの検証）
タイミングの検証は、機能の検証よりもさらに困難なタスクである。静的タイミング分析が、現在最も広く用いられている方法である。静的タイミング分析は、各種の技術ライブラリにより合成されたコアの代表的なネットリストについて実行される。静的タイミング分析は、不良信号路が適切に抽出されないため、信頼を置くことはできない。不良信号路を除去することは、手動のプロセスによることになり、過誤が起こる可能性がある。ゲートレベルでのシミュレーションは、そのような過誤について現実的なチェックを行うことができるが、テスト信号を形成するため、さらにゲートレベルにおけるあらゆるタイミング信号路をシミュレーションするために、多大な時間を要するので、完全な解決策とはならない。さらに、このゲートレベルによるシミュレーションは、設計技術者が適切に検出するにはあまりにも複雑で大量であるために、最悪条件下でのタイミングの検証をすることは不可能である。
【００１７】
（システムオンチップ全体の検証）
システムオンチップの設計検証の主な目標は、最終ユーザにより使用されるような形態での、システム全体としての動作を検証することである。このためには、全ての機能コア（ハードウェア・モデル）の完全な機能モデルが必要であり、かつ実際のシステムのアプリケーションが適切な量的範囲内で実行できることが必要である。新たなシステムの場合には、そのようなアプリケーションは存在しないこともある。ここでの主な問題はシミュレーション速度である。例えばＲＴＬ（レジスタ・トランスファ・ランゲージ）レベルであっても、プロセッサにオペレーティング・システムを起動させるために何時間も要する。このシミュレーション速度を向上させるためには、シミュレーションをより高速に実行するためにより高い抽象レベルを用いるか、ハードウェアによるプロトタイプ化、またはエミュレーションのいずれかの方法を用いる。
【００１８】
より高い抽象モデルとしては、ＲＴＬモデルが機能コアについて用いられ、ビヘイビオラル（行動）モデルやＩＳＡ（インストラクション・セット・アーキテクチャ）モデルが、メモリやプロセッサコアについて用いられ、バス機能モデルやバスモニタが、通信コアをチェックするために用いられる。メディア・プロセッサのようなシステムオンチップにおいては、シミュレーション環境上で実行するためのアプリケーションコードが発生される。ソフトウェア・アプリケーションを用いる場合には、設計検証としてできることはほとんどなく、そのシリコンチップが機能しているかあるいは完全に死んでいるかの判定と、基本的なバグを見つける程度に限られる。現在は、バスモニタあるいはシーケンスチェッカを通信インタフェースに用いて、手動で不良を検出している。しかし、そのシミュレーション速度は非常に遅く、１秒間に１０サイクル程度しかできないので、現実的なシステム規模に用いるにはあまりにも時間がかかりすぎる。
【００１９】
ソフトウェアとハードウェアが同時にシミュレーションされることをコシミュレーション（共同シミュレーション）と呼んでいる。ハードウェアはＣ言語によりモデル化することができ、全体のシステムが単一のＣ言語プログラムによって実行される。しかしこれはシステムの実施レベルで行われるのではなく、むしろビヘイビオラル（行動的）検証、あるいは実行可能性の検討ともいうべきものであるので、システム設計の検証とはならない。ハードウェア素子の実現状態をあらわすＨＤＬ／ＲＴＬが、システム全体の検証のために必要である。共同シミュレーションには、１または２以上のＨＤＬシミュレータとＣ・Ｃ＋＋プログラム間の通信が必要である。したがって、現在における共同シミュレーションのさらに別の問題は、異なるシミュレータ間の通信である。
【００２０】
（ハードウェア・プロトタイプ）
全ての設計者は、最初の半導体チップを作成する際に、全ての機能が完全であることを目指す。しかし、実際にシステムを形成した場合には、１回目の製作では５０％以上が失敗する。これはシステムレベルでの検証、すなわちシステムオンチップレベルでのデザインの有効性の確認が不足しているからである。１回目の試作で信頼性ある結果を得るためには、さらにより現実のアプリケーションをシミュレーションすることが必要である。このためシミュレーションの時間が非常に長くなる。したがって現在可能なより現実的な手段は、非常にコスト高にはなるが、シリコンプロトタイプ（半導体試作品）を用いることである。このような技術としてＦＰＧＡ／ＬＰＧＡおよびエミュレーションがある。
【００２１】
小規模な設計の場合は、ＦＰＧＡ（フィールド・プログラマブル・ゲートアレー）やＬＰＧＡ（レーザ・プログラマブル・ゲートアレー）によるプロトタイプを作成することができる。ＦＰＧＡやＬＰＧＡはＡＳＩＣ（アプリケーション・スペシフィックＩＣ）ほどのゲート数容量や動作速度は得られないが、小さな機能ブロックやコアには好都合である。しかしシステムオンチップの全体として用いるには不都合である。複数のＦＰＧＡを回路基板上で相互に接続し、全体としてのシステムオンチップのプロトタイプを構成することは可能である。しかしこの場合、もしバグを修正することによりシステムオンチップの再分離が必要となる場合には、ＦＰＧＡ間の接続も変更する必要が生じ、したがって新たな回路基板が必要となる。すなわち、設計の変更があると非常に大きな費用と時間が必要となる。
【００２２】
このように大規模なチップ用設計の評価のために複数のＦＰＧＡを組み合わせる方法の代わりに、エミュレーション技術を用いることができる。エミュレーション技術では、機能ブロック相互間の接続がプログラム可能であり、ボード設計を固定でき、比較的大きなゲート容量を実現でき、かつメモリとプロセッサによるサポートが得られる。もしシステム全体の設計をエミュレータに搭載できるのであれば、エミュレーションは、シミュレーションより高速な動作が得られる。しかし、実際のシリコンによるシステムと比較すると、その実行速度はまだ非常に低速である。システムオンチップ・データあるいはテストベンチ・データのかなりの部分が、ホストコンピュータにロードされた場合には、エミュレーションの性能はさらに劣化する。この方法のさらに別の欠点は費用である。現在商業的に入手可能なエミュレーション・システムは、１００万ドルを超過している。
【００２３】
設計規模が数１００万トランジスタのように非常に大きい場合、シリコンによるプロトタイプを作成して最終システムとしての不備を修正することが、現在可能な唯一の方法である。この場合において、同じプロトタイプが最初のいくつかの不備を修正するために使用できる。不備の修正の全行程を行うためには、シリコンによるプロトタイプの作成を２ー３回行うことが必要であるが、１回の作成毎に大きな費用を伴うので、生産までの総合費用は膨大になる。
【００２４】
上述したように、現在用いられている技術では、システムオンチップの設計を性能、コスト、速度の観点から有効にテストすることができない。したがって、半導体工業分野において、システムオンチップの設計の完全な検証を、高速にかつ低コストで実施することができる新たな方法と装置が望まれている。
【００２５】
【発明が解決しようとする課題】
したがって、本発明の目的は、各コアの機能、各コア間の相互接続の正当性、およびシステム全体の性能について、完全な設計検証をすることができるシステムオンチップの設計検証方法とその装置を提供することにある。
【００２６】
また、本発明の他の目的は、高速でかつ低コストにより、完全な設計検証をすることができるシステムオンチップの設計検証方法とその装置を提供することにある。
【００２７】
本発明のさらに他の目的は、システムオンチップ全体としての機能を検証するためのテストを実行することができる設計検証ステーションを提供することにある。
【００２８】
また、本発明のさらに他の目的は、現在のシステムで得られるよりはるかに容易に、システムオンチップのコアの欠陥を修正することができる方法と装置を提供することにある。
【００２９】
本発明は埋込コアによるシステムオンチップの設計検証についての現在の困難性を解決し、設計の検証あるいは完全な機能検証を行うための新規な方法と装置をもたらすものである。本発明のシステムはシステムオンチップの全体の機能を検証するために用いることができるので、発明者らはこれを設計検証ステーションと称している。本出願において開示するシステム構成は非常に効率的であり、より低コストであり、上述した従来技術とは基本的に異なるものである。
【００３０】
【課題を解決するための手段】
本発明の１の態様は、複数の機能コアが集積された埋込コアによるシステムオンチップの設計を検証する方法である。本発明の方法は、システムオンチップに集積される各コアの検証を行うステップと、各コアに相当するシリコンＩＣとコア提供者からのシミュレーション・テストベンチを使用するステップと、各コア間のインタフェース、コア、オンチップバス、およびグルーロジックをシステムオンチップの設計において形成されたテストベンチとグルーロジックのＦＰＧＡまたはエミュレーションを用いて検証するステップと、コアとコア間のタイミングおよびシステムオンチップレベルのタイミングを検証するステップと、システムオンチップ全体のシミュレーション・テストベンチを使用しかつアプリケーションを実行することによりシステム全体としての設計の検証するステップと、により構成される。
【００３１】
本発明の他の態様は、システムオンチップの設計検証を行うための装置である。本発明の装置は、使用者とのインタフェースを行うとともに設計検証のための全体動作を制御するためのメイン・システム・コンピュータと、そのメイン・システム・コンピュータから受けたテストベンチ・データを用いてシステムオンチップに集積された複数の機能コアをテストするためのテストパターンを発生する複数の検証ユニットと、その複数の検証ユニットとメイン・システム・コンピュータをインタフェースするシステムバスとにより構成される。本発明の装置では、複数のシリコンＩＣが検証ユニットに接続されて、その検証ユニットからテストパターンを受け、それに対する応答出力を発生してそれを検証ユニットとメイン・システム・コンピュータにより評価する。そのシリコンＩＣは、システムオンチップに集積される機能コアと同一の内部構造と機能を有する。
【００３２】
【発明の実施の形態】
本発明のシステムオンチップ設計検証方法の全体的なフローを第２図に示す。この検証方法は、個々のコアの検証、オンチップバスおよびグルーロジックにおける各コア間の接続状態の検証、タイミングの検証、およびシステム全体としての動作の検証の４ステップによるプロセスにより構成されている。
【００３３】
より具体的には、ステップＳ３１において、検証プロセスは最初に、試験対象としてのコアと同一構成を有するシリコンＩＣとそのコアのテストベンチを用いて、各コアの検証を実行する。次にこのプロセスは次のステップＳ３２に移行して、コア相互間のインタフェース、オンチップバスの機能やグルーロジック機能を検証する。次のステップＳ３３では、コアとコアとの間の通信やシステムオンチップレベルでのクリティカルパスについてのシミュレーション・テストベンチを用いてコアにおけるタイミングを検証する。最後のステップＳ３４では、全機能シミュレーション・テストベンチを用い、かつアプリケーション・ソフトウェアを実行して、システムオンチップ全体の設計検証を行う。
【００３４】
本発明の方法は、第３図に示す装置で実施することができる。第３図は本発明のシステムオンチップ設計検証の全体的コンセプト、さらに電子自動設計（ＥＤＡ）環境とこの設計検証ステーションとの関係をあらわしている。第３図の左上部はＥＤＡ環境を示しており、システムオンチップ４３のような半導体素子が、ＣＡＤ（コンピュータ支援設計）を用いて設計される。第３図の右下部において、本発明は設計検証ステーション５０として実施されている。設計検証ステーション５０は、テストの対象であるシステムオンチップ４３の設計段階で形成された設計データとテストデータを用い、さらにシステムオンチップに集積される各コアと同一構成のシリコンＩＣを用いて、システムオンチップ４３の設計検証を実施する。
【００３５】
この例において、システムオンチップ４３は、機能コアＡ、ＢおよびＣを有しており、そのより詳細な構成は第４図（Ａ）に示されている。ＥＤＡ環境４１のもとでシステムオンチップが設計されると、設計データファイル４５とテストデータファイル５３が得られる。各種のデータ変換プロセスを経て、設計データファイル４５は、設計した半導体集積回路としてのシステムオンチップを構成する各ゲートをあらわした物理レベルデータに変換される。この物理レベルデータに基づいて、現実のシステムオンチップ４９が、半導体集積回路製造工程（シリコンプロセス）により製造される。本発明においては、このように現実に製造されたシステムオンチップを直接に試験するのではなく、システムオンチップ４３の各機能コアＡ、Ｂ、Ｃ等をあらわす個別のＩＣを設計検証ステーション５０において検証する。
【００３６】
システムオンチップの設計段階で得られたテストデータファイル５３を用いて、テストベンチ５４によりロジックシミュレーションを実行することにより、Ｖｅｒｉｌｏｇ／ＶＣＤのようなＶＣＤデータファイル５５が得られる。ＶＣＤデータファイル５５のデータは、各機能コアおよびシステムオンチップ全体としての入力出力間の関係をあらわしている。後で説明するが、ＶＣＤファイル５５のデータは、イベントフォーマットになっている。ＶＣＤファイル５５のデータは、設計検証ステーション５０のイベントファイル５８に転送される。設計検証ステーション５０は、第２図に示したプロセスによるテストを実施するために、イベントテスタ５９を複数備えている。
【００３７】
設計検証ステーション５０の基本構成例は、第４図（Ｂ）に示されており、これはソフトウェアとハードウェアの共同開発および検証を行う。設計検証ステーション５０は、複数の検証ユニット（ＶＵ）６６1ー６６Nを有しており、この検証ユニットは被試験デバイスのピン構成に基づいて構成変更できる。検証ユニット６６1ー６６NはシリコンＩＣ６８1−６８Nに割り当てられる。シリコンＩＣ６８1−６８Nは、試験対象であるシステムオンチップに集積される機能コアＡ−Ｎに相当する機能と構成を有している。
【００３８】
メイン・システム・コンピュータ６２は、検証プロセスの全体の動作を制御する。メイン・システム・コンピュータ６２と検証ユニット６６1ー６６N間は、システムバス６４により接続されている。検証プロセスの開始に先立ち、メイン・システム・コンピュータ６２には、各機能コアＡ−Ｎの設計段階で得られた設計データ６１とテストベンチデータ６３が与えられる。
【００３９】
設計検証ステーションのより詳細は第５図に示されており、ここでは設計検証ステーションは、説明の便宜のために６個の設計検証ステーションＤＶＳ1ーＤＶＳ6により構成された状態を示している。この例では、機能コアＡ−Ｅとグルーロジックとを有するシステムオンチップ設計の正当性を評価する場合を想定している。この例において、設計検証ステーションＤＶＳ1は、「バス・マスタ・コア」（機能コアＡ）をテストするために構成されており、設計検証ステーションＤＶＳ2は、「プロセッサ・コア」（機能コアＢ）をテストするために構成されており、設計検証ステーションＤＶＳ3およびＤＶＳ4は、「機能固有コア」（機能コアＣおよびＤ）をテストするために構成されており、設計検証ステーションＤＶＳ5は、「メモリ・コア」（機能コアＥ）をテストするために構成されている。同様に、設計検証ステーションＤＶＳ6は、システムオンチップ内の「グルーロジック」をテストするために構成されている。本発明においては、上記の機能コアＡ−Ｅの設計検証のために、別のシリコンＩＣ６８1−６８Nを形成して用いる。
【００４０】
第４図（Ｂ）および第５図に示すように、本発明のシステムは、バスを基本とする構造を取っている。システムバス６４は、メイン・システム・コンピュータ６２から検証ユニット６６1ー６６5の入力ピンへデータを転送するためのバスであり、業界の標準的なバスであるＶＭＥバス、ＶＸＩバス、あるいはＰＣＩバスでもよい。このシステムのピン割り当ては、再構成（割り当ての変更）することができるので、使用者は、各機能コアＡ−Ｅに対応する各シリコンＩＣ６８1−６８5の入出力ピンに応じて、検証ユニットのテストピンを、適宜グループ分けすることができる。シリコンＩＣ６８1−６８5は、ピンエレクトロニクス・デバイス搭載ボード（以後「ピンエレクトロニクス」）６９1ー６９5に搭載され、相互接続バス７１を通して相互に接続されている。
【００４１】
第５図に示すように、各ピングループ（割り当てられた検証ユニット）は、制御コンピュータ６７を有しており、この制御コンピュータ６７は、データフローの制御、シミュレーション・データのシリコンＩＣ６８1−６８5への供給とその応答出力の比較、さらに各コアの各種のタスクのスケジュール管理、各コアやシステムオンチップの状態の観察等を行う。制御コンピュータ６７1ー６７6は相互に接続されている。また制御コンピュータ６７1ー６７6は、メイン・システム・コンピュータ６２に、システムバス６４を経由して接続されている。グルーロジックの検証のための設計検証ステーションＤＶＳ6には、同期ユニット７５と調停ユニット７６が設けられており、メイン・システム・コンピュータ６２と、設計検証ステーションＤＶＳ1ーＤＶＳ6の制御コンピュータ６７1ー６７6との相互のデータ転送を促進する機能を果たす。
【００４２】
検証プロセスの開始に先だって、メイン・システム・コンピュータ６２は、個別のテストベンチデータ７８を搭載し、このテストベンチデータを検証ユニット６６1ー６６5に分配する。メイン・システム・コンピュータ６２は、ユーザインタフェース、ソフトウェア・アプリケーションの実行、複数の検証ユニットへの分配制御等を含む、設計検証の全体プロセスを制御する。各設計検証ステーションＤＶＳにおいて、検証ユニット６６は、テストベンチデータに基づいて形成したテストパターンを、機能コアに対応するシリコンＩＣ６８に供給する。後で説明するが、各検証ユニット６６は、イベントテスタとして構成されていることが好ましい。
【００４３】
テストパターン（イベント）は、第５図のピンエレクトロニクス６９を経由して、被試験デバイス（シリコンＩＣ６８）に供給される。ピンエレクトロニクス６９は、テストピンを割り当てられた被試験デバイス（シリコンＩＣ６８）のデバイスピンに物理的に接続する。ピンエレクトロニクス６９は、基本的に、試験対象であるシリコンＩＣ６８と検証ユニット６６間を接続するためのインタフェース回路により構成されている。例えば各インタフェース回路は、１または２以上のドライバとコンパレータ（図示せず）およびパフォーマンスボードで構成されている。ドライバは、テストパターンを被試験デバイスの入力ピンに与えるものであり、コンパレータは、被試験デバイスの応答出力を期待値と比較するものである。パフォーマンスボードは、被試験デバイスを機械的に搭載するためのものである。
【００４４】
（各機能コアの検証）
本発明において、機能コアＡ−Ｅの設計検証を実施するために、個別のシリコンＩＣ６８1−６８Nを用いる。一般にこのようなシリコンＩＣ６８は、その機能コアの提供会社あるいはその提供会社のパートナーとして半導体を製造する会社から入手が可能である。本発明のシステム全体を、目的に応じて構成の割り当てを行う。例えば第４図（Ｂ）や第５図に示すように、１の検証ユニットを１の機能コア（シリコンＩＣ６８）に割り当てる。検証の実施のために、各機能コアのテストベンチを、各コアの入出力情報とともに、メイン・システム・コンピュータ６２に搭載する。
【００４５】
メイン・システム・コンピュータ６２は、システムピンを１の検証ユニットについて１の機能コアの関係となるように割り当てるとともに、制御コンピュータ６７を割り当てる。システム性能を強化するためには、１の制御コンピュータ６７を１の検証ユニットに割り当てる代わりに、１のピンについて１の制御コンピュータを割り当てることもできる。そのような実施方法は、第４図（Ｂ）および第５図に示すシステムの直接的な延長であるので、ここではその内容の記述はしない。
【００４６】
機能コアの入出力情報に基づいて、検証ユニット６６のピン数は、例えば６４ピンから２５６ピンの間の値であり「２のべき乗」であるピン数で構成される。このピンは基本的にイベントテスタ・チャンネルであり、これを通してテストパターンの供給動作と応答信号の比較動作が行なわれる。第４図（Ｂ）や第５図に示す本発明のシステムは、各コアに対するこのようなピンの再構成や再分配が可能である。したがって、基本的に全体のシステムを複数の検証ユニット６６として構成することができ、その検証ユニットが、第５図に示すように各コアに割り当てられる。したがって、各個別のコアについて、割り当てられた検証ユニット６６は、専用のイベント型テストシステムのようになる。イベントテスタの例については、米国特許出願番号０９／４０６３００「イベント型半導体試験システム」に詳述されており、後でも簡単に説明する。検証ユニット６６により、イベント型のシミュレーション・テストベクタ（コアの機能および構造テストのため）がコア（シリコンＩＣ６８）に与えられて、その応答出力がシミュレーションデータ（期待値データ）と比較される。
【００４７】
機能コアの意図機能とタイミングを検証するために、メイン・システム・コンピュータ６２は、該当するコアのシミュレーション・テストベンチデータを、対応する検証ユニット６６の制御コンピュータ６７に供給する。このデータは、対象とするコアの設計シミュレーション・テストベンチである。このテストベンチは、信号値とその信号値が０から１または１から０に変化したときのタイミング情報、すなわちイベント型のテストパターンを有している。したがって、何らのデータ翻訳は必要なく、そのデータを直接にコア（シリコンＩＣ６８）に印加することができる。
【００４８】
このデータ（テストパターン）は設計シミュレーションデータなので、コアに欠陥がなければ、このシミュレーションで予定した通りの動作をすることになる。このテストパターンの印加の結果としてのコアの応答出力は、検証ユニット６６の制御コンピュータ６７によりシミュレーションデータ（期待値）と比較される。このシミュレーションデータとの相違があるときは、それが制御コンピュータ６７により検出される。これにより被試験コア（シリコンＩＣ６８）に不良があることが、検証ユニット６６により検出される。このステップにより、システムオンチップの総合レベルでの設計検証を行う前に、各検証ユニットに対応した被試験コア（シリコンＩＣ６８）に欠陥がない状態を確立することが可能となる。
【００４９】
本発明の方法と装置はさらに、コアの有する欠陥を使用者により修正する作業が、現在のテストシステムを用いるよりもはるかに容易にできる。これは、本発明の検証システムの環境が、被試験デバイスの元の設計環境、すなわちＥＤＡ環境と同じであるからであり、イベント型データを用いることができるからである。
【００５０】
（検証ユニット（イベントテスタ））
上記のように、各検証ユニットは、イベントテスタとして構成されている。そのようなイベントテスタの例を第６図を参照して簡単に説明する。イベントテスタのより詳細については、本発明の出願人と同一の出願人による上記の米国特許出願番号０９／４０６３００「イベント型半導体試験システム」に開示されている。イベントテスタにおいては、テストパターンは、信号値の０から１または１から０への変化が、基準時間点からの時間長として記述されている。これに対して、伝統的なサイクル型のテストデータにおいては、テストパターンは、各テストサイクルについて、タイミングデータと波形データとベクタデータとの組み合わせにより記述されている。現在の設計自動化システムは、設計された半導体デバイスの論理シミュレーションを実行することにより、イベント形式のテストデータを形成する。したがって、イベント型のテストシステムは、その半導体デバイスの設計段階で形成された論理シミュレーションデータを直接的に使用することができる利点がある。
【００５１】
第６図の例において、検証ユニット６６は、検証ユニット書き込みデコーダ８３、システムバス６４に接続された制御コンピュータ６７、内部バス８５、アドレスシーケンサ８８、フェイルメモリ８７、イベントメモリ９０、伸張復元ユニット９２、タイミング・カウント・スケーリング・ロジック９３、およびイベント発生器９４により構成されている。検証ユニット６６は、ピンエレクトロニクスを通して、試験対象であるコアの機能を有したシリコンＩＣ６８にテストパターンを供給する。
【００５２】
検証ユニット書き込みデコーダ８３は、検証ユニットの身元確認を行うもので、それによりメイン・システム・コンピュータ６２が、システムバス６４を通してグループ選択アドレスを送付することにより、検証ユニット６６の構成を設定することができる。内部バス８５は、ハードウェアとしてのイベントテスタ用のバスであり、アドレスシーケンサ８８、フェイルメモリ８７、イベントメモリ９０、伸張復元ユニット９２、タイミング・カウント・スケーリング・ロジック９３、およびイベント発生器９４のようなテスタ内の大部分の構成ブロックに共通に接続されている。
【００５３】
上記のように、制御コンピュータ６７は、メイン・システム・コンピュータ６２から送られた試験対象コアのテストベンチデータに基づいて、検証ユニット６６内の他の機能ブロックにインストラクションを供給する。フェイルメモリ８７は、試験結果を格納するものであり、例えばコンパレータ（図示せず）からのシリコンＩＣ６８（被試験コア）についての不良情報を、アドレスシーケンサ８８からのアドレス情報ともに格納する。フェイルメモリ８７に保存した情報は、被試験コアとシステムオンチップの不良解析の段階で利用される。
【００５４】
アドレスシーケンサ８８は、イベントメモリ９０にアドレスデータを供給する。イベントメモリ９０は、各イベントのタイミングデータを格納している。例えば、イベントメモリ９０は、イベントデータを２つに分けて保存する。１つはマスタ（基準）クロックの１周期時間の整数倍の値を示すタイミングデータを格納し、他の１つは、基準クロックの１周期の端数分のタイミングデータを格納する。
【００５５】
イベントメモリのタイミングデータを圧縮された状態で保存することにより、イベントメモリの必要な容量を減少させることが好ましい。伸張復元（デコンプレッション）ユニット９２は、イベントメモリ９０から圧縮されたデータを受け、それを伸張プロセスにより復元する。復元されたタイミングデータは、タイミング・カウント・スケーリング・ロジック９３に供給される。
【００５６】
タイミング・カウント・スケーリング・ロジック９３は、イベントメモリからのタイミングデータに基づき、現イベントのタイミングを決定する。現イベントのタイミングデータとそれ以前のイベントのタイミングデータを加算して、総合的なタイミングデータを形成する。タイミング・カウント・スケーリング・ロジック９３は、タイミングデータをスケーリングファクタに比例した値に変更する（スケーリング）機能もはたす。そのようなタイミングデータのスケーリング動作は、タイミングデータ（絶対的時間あるいは相対的時間）にスケーリングファクタを乗算する動作により構成される。イベント発生ユニット９４は、タイミング・カウント・スケーリング・ロジック９３からの総合的なタイミングデータに基づいて、イベント信号を実際に発生する。イベント発生ユニット９４は、そのイベント信号（テストパターン）をピンエレクトロニクス６９に供給する。
【００５７】
（インタフェース、オンチップバスおよびグルーロジックの検証）
システムオンチップの大部分は、予め設計された機能コアにより構成されているが、システムオンチップには常に、その設計者（各種コアをシステムに集積する設計者）により設計された特殊な機能や各コアを接続する機能を果たすためのロジックが存在する。そのようなロジックを「グルーロジック」と呼んでいる。伝統的には、このグルーロジックは、カスタムデザインとして実現されてきたが、最近は埋込のＦＰＧＡ（フィールド・プログラマブル・ゲートアレー）により、そのようなグルーロジックを実施することが提案されている。上述したように、現在の技術においては、このグルーロジックの検証は、極めて不完全にしかされていない。
【００５８】
本発明の方法では、グルーロジックの検証は、第５図に示すような専用の設計検証ステーションＤＶＳ6のようなサブシステムにより行う。その基本的な方法は以下である。
（１）第５図に示すように、各種のシリコンＩＣ６８を接続する相互接続バス７１を、システムオンチップのオンチップバスの模型（モデル）として使用する。これは各機能コアＡ−Ｅを接続するシステムバスであり、オンチップバスの行動を模擬するものである。この相互接続バスにより、インストラクションとデータのフローを、システムオンチップのレベル（１のコアから他のコアへ）から設計検証ステーションのレベル（１の検証ユニットから他の検証ユニットへ）のインストラクションとデータのフローに模擬する。したがってこのバスは、システムオンチップのオンチップバスにおける全てのリクエスト・許可プロトコルや各コアのインタフェースにおける処置を捉えることができる。
【００５９】
（２）グルーロジックを実現するためのＦＰＧＡ（フィールド・プログラマブル・ゲートアレー）を、専用サブシステムにおいて利用する。さらにその代替え方法として、専用サブシステムにおいて、グルーロジックをエミュレートする。これらの方法は、それぞれ第７図と第８図に示されている。
【００６０】
第７図はエミュレータによるサブシステムを示している。この方法では、商業的に得られるどんなエミュレータでも使用可能である。第７図において、エミュレータ７２は、グルーロジック・テストベンチ・ファイル７７からのグルーロジックの合成可能ＲＴＬデータとテストベンチをロードする。同期ユニット７５と調停ユニット７６は、市販のエミュレータと検証ユニットとのインタフェースを行うために使用する。制御コンピュータ６７は、メイン・システム・コンピュータ６２との同期と通信のタスクを行う。
【００６１】
第８図はＦＰＧＡによる方法を示している。この方法では、グルーロジックはＦＰＧＡ７３により実現され、このＦＰＧＡ７３をシリコンＩＰ（知的財産）、すなわちコアとして取り扱う。もしグルーロジックが、システムオンチップにおいて、埋込ＦＰＧＡとして実現される場合には、このＦＰＧＡ７３は、埋込ＦＰＧＡ（グルーロジック）の単独の複製となる。このＦＰＧＡ７３は、独立したＩＰとして用いられ、専用の検証ユニットに割り当てられる。
【００６２】
もしグルーロジックがカスタムデザインとしてシステムオンチップに実現される場合には、グルーロジックのＲＴＬが、独立のＦＰＧＡとして専用検証ユニットに用いられる。この状態では大部分の場合において、ＦＰＧＡのスピードは、システムオンチップ内のカスタム・グルーロジックより低速となる。したがって、この専用検証ユニットは、追加の同期ユニット７５やバスの調停ユニット７６が必要となる。この低速動作スピード以外は、この専用検証ユニットは、他の検証ユニットと構成や動作が類似している。
【００６３】
（タイミングの検証）
各機能コアとそのコア間のインタフェース、およびグルーロジックの各機能が検証されると、システムオンチップレベルにおけるクリティカル信号路のタイミング検証が行われる。第２図のステップ３２と３３が完了すると、本発明の設計検証ステーションにおいて、システムオンチップを構成する各機能ブロック（コアとグルーロジック）およびその相互接続関係が利用可能になっている。各コアの機能とグルーロジックは検証されており、各コアのタイミングも検証されている。したがって、システムオンチップレベルのテストベンチと全てのアプリケーションをシステム全体に起動することができ、不良があった場合には、その不良は（個別のコアではなく）コアの集積したシステムにあると結論づけることができる。
【００６４】
本発明の方法では、少数のシステムオンチップレベルのシミュレーションベクタ（テストベンチ）を実行することが好ましい。これによりコアとコア間のタイミングの正当性とシステムオンチップレベルのタイミングのクリティカルな信号路の正当性が検証される。このために、システムオンチップレベルのシミュレーション・テストベンチをメイン・システム・コンピュータにロードする。システムオンチップの設計段階において、そのようなシミュレーション・テストベンチが、タイミングについてクリティカルな信号路を実行するために開発される。このテストベンチのデータは、イベント形式になっており、現在の技術では一般にＶｅｒｉｌｏｇ／ＶＨＤＬにより得られるＶＣＤ（バリュー・チェンジ・ダンプ）フォーマットで入手できる。
【００６５】
テストベンチデータのベクタは、システムオンチップの各種の異なる部分を接続するタイミングのクリティカルな通路について実行する。上述したように、本発明の設計検証ステーションは、システムオンチップの全ての構成素子を有しており、従ってタイミング検証のためのシミュレーション・テストベンチを実行することにより、設計段階でのシミュレーションと同一の結果が得られることが期待できる。シミュレーション結果と異なる結果が得られた場合には、それは不良を意味し、本発明のイベント型の環境（設計シミュレーション環境と同等）において、容易に修復できる。
【００６６】
（システムオンチップの検証および全体設計の検証）
システムオンチップをシステム全体として機能を検証するためには、設計段階でのシミュレーションにより形成したシステムオンチップレベルの機能ベクタを設計検証ステーション上で実行する。これらのベクタもイベント形式になっている。多くの場合、これらのベクタは、システムオンチップの設計データ（Ｖｅｒｉｌｏｇ／ＶＨＤＬのＲＴＬモデルあるいはビヘイビオラルモデル）にソフトウェア・アプリケーションを実行して発生する。これらのベクタは、システムオンチップの異なる部分について同時にあるいは異なる時間で実行され、これによりシステムオンチップの全体としての動作（ビヘイビア）がこれらを結合した応答から決定される。
【００６７】
アプリケーション・プログラムが、Ｃ／Ｃ＋＋のような高級レベル言語あるいはバイナリ形式であるときは、第９図に示すように、ＡＰＩ（アプリケーション・プログラム・インタフェース）やＰＬＩ（プログラム・ランゲージ・インタフェース）のようなインタフェースが、これらのプログラムをメイン・システム・コンピュータにロードするため、あるいはメイン・システム・コンピュータと外部世界との通信のために必要となる。
【００６８】
これを実現するために、メイン・システム・コンピュータ６２は、複数バスプロトコルを有した複数分配コントロール機能（第５図や第９図）備えている。これはアプリケーションタスク（ソフトウェアアプリケーション）を複数のサブタスクに分解（フォーク）して、それらのスケジュールを決定し、そのサブタスクを異なる検証ユニット６６に割り当てることにより対応するコアに割り当てる。この複数サブタスクに分解する動作（フォーク動作）は、Ｖｅｒｉｌｏｇ／ＶＨＤＬやＣ／Ｃ＋＋のような高級レベル言語によるアプリケーション・ソフトウェア上で行われる。したがって、複数分配コントロールによるシステムコンパイラは、アプリケーションタスクについてフォーク動作を実施することができ、複数の検証ユニット６６により構成される分散コンピュータ環境でそのフォーク動作を実行する。
【００６９】
このフォーク動作の後、そのサブタスクはシステムバスを通して、個々の検証ユニットに分配される。制御コンピュータ６７、調停ユニット７６および同期ユニット７５は、メイン・システム・コンピュータ６２から各検証ユニット６６の制御コンピュータへの通信とエラーのないデータ転送を可能にする。このような調停ユニット７６、同期ユニット７５、およびメイン・システム・コンピュータ６２による構成は第９図に示されている。
【００７０】
このサブタスクの割り当てに基づいて、制御コンピュータ６７は、イベント型ベクタを各機能コアに与え、その機能コアからの応答信号を収集する。この応答信号は、調停ユニット７６や同期ユニット７５を用いたエラー無しのデータ転送により、メイン・システム・コンピュータ６２に伝送される。メイン・システム・コンピュータ６２は、「ジョイン」動作を実施し、各応答信号を合流させてシステムレベルでの応答信号を形成する。このシステムレベルの応答信号が、シミュレーションされた応答信号と比較され、システムオンチップが、正しい動作をしているかが決定される。これがアプリケーションの実行の場合には、この応答信号はアプリケーションの期待結果と比較される。例えば映像アプリケーションが実行されている場合には、ピクチャフレームの表示が現れることが必要である。応答出力が、シミュレーションデータあるいはアプリケーションの期待値出力と異なる場合には、メイン・システム・コンピュータ６２により、その不一致が検出される。本発明の設計検証ステーションの環境が、元のシステムオンチップ設計の環境と同じなので、そのような設計上の問題点は、設計技術者により容易に修正できる。
【００７１】
（フィクスチャまたはパフェーマンスボード）
本発明の設計検証ステーションは、シリコンＩＣ（コア）やグルーロジックとのインタフェースのために、パフォーマンスボードを必要とする。第５図から第９図の例では、デバイス搭載ボード、すなわちパフォーマンスボード６９は、各コア毎（各設計検証ステーション毎）に装備されている。第１０図のブロック図では、パフォーマンスボードについての他の構成を示している。この例では、パフォーマンスボード９０は、全てのコアとグルーロジックを搭載している。コネクタ９５がパフォーマンスボード９０上に設けられ、検証ユニット６６とシリコンＩＣ（コア）６８間を接続する。
【００７２】
このパフォーマンスボード９０は、従来技術におけるテスタのパフォーマンスボードによく類似しており、例えば多層回路基板により構成されている。テスタのパフォーマンスボードとこのパフォーマンスボード９０の基本的な相違は、テスタのパフォーマンスボードは、単一の被試験デバイスを搭載するにすぎないが、本発明の設計検証ステーションにおけるパフォーマンスボード９０は、全てのコアに対応するシリコンＩＣ６８とグルーロジック（ＦＰＧＡ等）を搭載する。
【００７３】
第１１図は本発明の設計検証ステーションの別の例を示しており、複数の検証ユニットがメイン・システム・コンピュータにより直接的に制御されている。この例では、先の例と異なり、各設計検証ステーションは、制御コンピュータを有しなく、システムバス６４を通して、メイン・システム・コンピュータ６２により直接的に制御される。したがって、全てのタスク、例えば同期、コアの応答信号の評価、タイミング評価、システムオンチップ全体としての評価等が、メイン・システム・コンピュータ６２により実施される。
好ましい実施例しか明記していないが、上述した開示に基づき、添付した請求の範囲で、本発明の精神と範囲を離れることなく、本発明の様々な形態や変形が可能である。
【００７４】
【発明の効果】
本発明は、上述の説明内容からして、下記に記載される効果を奏する。
各コアの機能、各コア間の相互接続の正当性、およびシステム全体の性能について、完全な設計検証をすることができるシステムオンチップの設計検証方法とその装置を提供することができた。
【図面の簡単な説明】
【図１】機能コアの設計における抽象化レベルとその設計の検証のためにその抽象化レベルに対応した検証方法を示す概念図である。
【図２】本発明におけるシステムオンチップ設計検証の全体的コンセプトと設計検証のプロセスを示すフローチャートである。
【図３】本発明におけるシステムオンチップ設計検証の全体的コンセプトであり、電子自動設計（ＥＤＡ）環境と設計検証ステーションとの関係を含む概念図である。
【図４】（Ａ）は第３図のＥＤＡ環境で設計されたシステムオンチップの例を示すブロック図であり、（Ｂ）は第３図の設計検証ステーションの基本構成の例を示すブロック図である。
【図５】本発明における設計検証ステーションのより詳細な構成例を示すブロック図であり、複数の検証ユニットを有している。
【図６】第５図の検証ユニットの構成例を示すブロック図であり、検証ユニットはイベントテスタの構成を有している。
【図７】システムオンチップ内のグルーロジックを評価するための検証ユニットの構成例を示すブロック図である。
【図８】システムオンチップ内のグルーロジックを評価するための検証ユニットの他の構成例を示すブロック図である。
【図９】本発明における設計検証ステーションの他の構成例を示すブロック図であり、高級アプリケーション言語をサポートする。
【図１０】本発明における設計検証ステーションのさらに他の構成例を示すブロック図であり、試験対象としての機能コアを搭載するパフォーマンスボードとの構造的関係を示している。
【図１１】本発明における設計検証ステーションのさらに他の構成例を示すブロック図であり、複数の検証ユニットがメイン・システム・コンピュータにより直接的に制御される。
【符号の説明】
６２          メイン・システム・コンピュータ
６４          バス
６６          検証ユニット
６７          制御コンピュータ
６８          シリコンＩＣ
６９          ピンエレクトロニクス・デバイス搭載ボード
７１          相互接続バス
７２          エミュレータ
７３          フィールド・プログラマブル・ゲートアレー（ＦＰＧＡ）
７５          同期ユニット
７６          調停ユニット
７７          グルーロジックＲＴＬデータ
７８          個別コアのテストベンチデータ
ＤＶＳ        設計検証ステーション
【図１】
0004804620.tif 000002
【図２】
0004804620.tif 000003
【図３】
0004804620.tif 000004
【図４】
0004804620.tif 000005
【図５】
0004804620.tif 000006
【図６】
0004804620.tif 000007
【図７】
0004804620.tif 000008
【図８】
0004804620.tif 000009
【図９】
0004804620.tif 000010
【図１０】
0004804620.tif 000011
【図１１】
0004804620.tif 000012