テストと検証の違いは何ですか?


15

私が見たすべての教科書は、テスト検証が2つの異なる概念であるという事実を大きく作ります。しかし、それらのどれも明確な(または、最後に私にとって十分に明確な)区別を提供しません。

コンテキストを提供するために、ハードウェア設計言語(HDL)を使用したデジタルハードウェア設計の検証に興味があります。

「物理的」または「有形」の違いに頼る説明を見てきました。製造されたデバイスに関するものであれば、それはテストです。これが全体の話ですか?そうだとすれば、なぜ「テスト」という言葉が検証で頻繁に出てくるのか(特に機能検証では、テストケース、テストベンチ、DUT(テスト対象デバイス)、ディレクテッドテスト、ランダムテストなどについて話します)

回答:


21

QualcommのASIC設計検証エンジニアでした。最も簡単な方法で説明できます。

テスト:製品を作成した後、製品が機能することを確認します(QAを考えてください)。

検証:作成する前に製品が機能することを確認します。

どちらもテストです。製品が存在する前に製品をテストする方法を考え出す必要があり、設計どおりに動作することを確認し、実際に製品がリリースされたときに仕様を確認する必要があるため、検証はより複雑です。

たとえば、Intelは次のプロセッサを設計しており、仕様があり、回路図とシミュレーションがあります。製造と製造を行うために10億ドルを費やします。その後、チップが戻ってきて、彼らはそれをテストし、動作しないことを発見します。彼らは窓からたくさんのお金を投げた。

検証を投入します。検証エンジニアは、チップの動作をシミュレートするモデルを作成し、それらの特定のモデルをテストするテストベンチを作成します。これらのモデルの結果を取得し、RTL(ハードウェア設計言語で記述された回路のモデル)の結果と比較します。それらが一致する場合、物事は(通常)OKです。

検証プロセスにはさまざまな方法論がありますが、一般的なものはUniversal Verification Methodology(UVM)です。

この分野には多くの深みがあり、人々はそこですべてのキャリアを過ごすことができます。

別のランダムな情報:通常、1人の設計エンジニアに対して3人の検証エンジニアが必要です。とにかくそれはフィールドの誰もが言うことです。

編集:多くの人が検証をテストの役割と考えていますが、そうではありません。設計者のようにICのすべての複雑さを理解する必要があるため、それ自体が設計の役割です。そして、ICのすべての機能をカバーするモデル、テストベンチ、およびすべてのテストケースを設計する方法を知る必要があります。 、すべての可能なビットの組み合わせについてRTLコードのすべての単一行をヒットしようとしています。製造プロセスがますます小さくなる(現在14nm)ため、現在のプロセッサには数十億個のトランジスタがあることに注意してください。

また、Intel、AMD、Qualcommなどの大企業では、設計者が実際にチップを設計することはありません。通常、アーキテクトはすべての仕様を定義し、特定の要件(速度、解像度など)を持つ特定の機能を得るために連携する必要があるピースのタイプをレイアウトし、デザイナーはそれをRTLにコーディングします。決して簡単な仕事ではありません。学校を出た多くのエンジニアが考えているほど多くの設計をしているわけではありません。誰もが望んでいるのは建築家ですが、そのためには多くの教育と経験が必要です。多くの建築家は博士号を取得しており、デザイナーとしての分野で15〜20年の経験があります。これらは、自分がやっていることをやっているに値する優秀な人(そして時には狂った人)であり、彼らはそれが得意です。私が取り組んだ最初のチップのアーキテクトは少し厄介で、実際にはいくつかの社会的規範に従っていませんでしたが、彼はあなたがチップに関して固執していることを解決できました、そして時々彼は彼の頭の中でそれを解決して教えてくれました1つの信号を見ると、「一体どうやって彼はそれをしたの?」それからあなたは彼に説明するように頼みます、そして、彼はそうします、そして、それはあなたの頭の上に行きます。すでに卒業していても、実際に教科書を読むようになりました。


最後の発言のための+1のおかげで、私たちは(ほとんどのエンジニアにとってより魅力RTLと設計エンジニアリング音が、私は思うが)フィールドは確かに重要であることを確認できます
VHDLアディクト

完全を期すために、テストケースとは何かを追加していただけますか?
VHDLアディクト14年

設計の役割がより魅力的であるという最初のコメントのために、実際に検証が何であるかについて少し説明しました。両方とも良い役割であり、ただあなたが好きなものに依存します。テストケースについては、SnapdragonのようなSoCには数百から数十万のテストケースがあり、ランダムテストでは数百万になります。簡単に言うと、一連の入力ビットを適用し、それが多くのモジュールを通過して変更されると、モデルの結果と比較する結果としていくつかの出力ビットが得られます。お使いの携帯電話上に表示画像をテストするような単純な何かだろう...
PGT

多数のテストケース。モバイル画面に単一のピクセルを表示するとします。フィールド外の人が考えるのは、白に1ビット、黒に0を適用することです。実際のモバイルの世界では、そのピクセルはサイズ、強度、回転、色形式(YUV ###、RGB ###など)によって異なる場合があります。そして、あなたはおそらく入力に一緒に適用されるビットのセット内の1ビットをテストしています。他のビットは黒であるため0であるか、伝送モード、CLK、有効化/無効化、トリガー、そのような派手なものの処理方法などの他の情報を処理しているため1である可能性があります。
PGT 14年

6

私の本では、ベリフィケーションはあなたがデザインしたものが「仕事をする」ことを保証します-すなわち、「デバイス」が実行する必要があるもののセットを持ち、検証はそれらをリストから消します。

ただし、テストでは、「デバイス」が行うことを正しく行うことを確認しています。関数のセットがあり、各関数をテストして、その関数が適切に実行されることを確認します。

簡単に言うと、検証では設計をチェックし、テストでは製品をチェックします。


私は理解し始めていると思います...それぞれの例をいくつか提供していただけますか?
VHDLアディクト14年

それはどのように適合しますか これは、実装するものと、機能が正しいことを知る方法を指定検証計画にどのますか?機能しない場合、機能を実装したり、無効にしたりするのはほとんど役に立ちません。
VHDLアディクト14年

@ Majenko-検証に関する本を書いていますか?それについてもう少し詳しく教えてください。
マイケルKaras 14年

4

ASIC(ハードウェア)設計のバックグラウンドから来た3つの重要な用語があります:検証検証、およびテスト。以前の回答では、一般にこれらの用語の1つまたは2つについて説明していますが、3つすべてを明確に対比してはいけません。私がそれらを理解する方法は次のとおりです。

  • 検証:仕様(多くの場合Cモデル)は市場または顧客の要件を満たしていますか
  • 検証:実装(RTL、ネットリスト、またはGDS2)が仕様と一致しているか
  • テスト:製造されたデバイスは実装と一致していますか

ネットリストとGDS2シミュレーションで異なる結果が得られますか?
Ciro Santilli新疆改造中心法轮功六四事件

1
@CiroSantilli巴拿馬文件六四事件法轮功、あなたはゲート対トランジスタの振る舞いについて尋ねていると思います。通常のデジタル電圧と波形の場合、同じ結果が得られると思います。しかし、理想的なゲートでは考慮されない「アナログ」効果が存在する可能性があります。たとえば、電源/グランドの変動や信号電荷の共有などです。これらの効果が存在する場合、理想的なデジタル動作が当てはまらない可能性があります。
ウィンストンスミス

1

テストは、仕様が満たされているかどうかを確認するように設計されています。検証は、デバイスが設計入力、つまりすべての仕様を満たしているかどうかを確認することです。もっと多くの解釈があると思いますが、これは私がFIAのガイダンス文書で見たものです。


私は、両方のプロセスであることを明確にするために、言葉遣いを(テストからテストに)少し変更しました。私は、個々のテストのためのワードことをあなたに同意テストが :)(...私はこれらの用語の質問で明らかに修正再表示てるよう時々私が感じる)が適切である
VHDLアディクト

1

検証テストと検証テストを区別します。一部の機器を冷却するファンを設計しているとしましょう。検証テストは、ファンがすべての設計要件を満たしていることを確認するために行われます。そのため、エアフロー、熱サイクル、振動などをテストできます。

検証テストは、設計要件が正しいものであることを確認します。ファンについての設計入力は、実際に必要なファンを提供しましたか?たとえば、意図したとおりにファンが実際に機器を冷却していることを確認します。


これは、私が読んだソフトウェアエンジニアリングに関する本で用語がどのように理解されるかです。検証=要件が正しいことを確認します(顧客、規制などで要件を確認します)。検証=製品が正しいことを確認します(仕様に対してテストします)
Wouter van Ooijen 14年

1

ISO9000は検証と検証について話します。ISO9000の検証では、プロトタイプ設計をテストして、機能およびパフォーマンスの期待値を満たしていることを証明します。検証とは、最初の実稼働をテストすることも、設計上の期待を満たすことです。最初に検証し、後で検証することが、物事の順序を記憶する私の小さな方法です。

いくつかのソフトウェア標準では、検証と検証の順序が逆になっています。これにより、実際に混乱が生じる可能性があるため、注意してください。

結論は...なぜあなたは何かをテストするのですか-それはプロトタイプ設計ですか-そうである場合、品質基準はこの検証を呼び出す傾向があります。プロダクションランを初めてテストする場合は、ハードウェア担当者がこの検証を呼び出します。

私の個人的な経験だけです。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.