IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ 北京百度網訊科技有限公司の特許一覧 ▶ クンルンシン テクノロジー (ベイジン) カンパニー リミテッドの特許一覧

特開2022-36889チップを検証する方法、装置、電子デバイス、コンピュータ可読記憶媒体及びコンピュータプログラム
<>
  • 特開-チップを検証する方法、装置、電子デバイス、コンピュータ可読記憶媒体及びコンピュータプログラム 図1
  • 特開-チップを検証する方法、装置、電子デバイス、コンピュータ可読記憶媒体及びコンピュータプログラム 図2
  • 特開-チップを検証する方法、装置、電子デバイス、コンピュータ可読記憶媒体及びコンピュータプログラム 図3
  • 特開-チップを検証する方法、装置、電子デバイス、コンピュータ可読記憶媒体及びコンピュータプログラム 図4
  • 特開-チップを検証する方法、装置、電子デバイス、コンピュータ可読記憶媒体及びコンピュータプログラム 図5
  • 特開-チップを検証する方法、装置、電子デバイス、コンピュータ可読記憶媒体及びコンピュータプログラム 図6
  • 特開-チップを検証する方法、装置、電子デバイス、コンピュータ可読記憶媒体及びコンピュータプログラム 図7
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2022036889
(43)【公開日】2022-03-08
(54)【発明の名称】チップを検証する方法、装置、電子デバイス、コンピュータ可読記憶媒体及びコンピュータプログラム
(51)【国際特許分類】
   G06F 30/3308 20200101AFI20220301BHJP
   G06F 11/36 20060101ALI20220301BHJP
【FI】
G06F30/3308
G06F11/36 164
【審査請求】有
【請求項の数】15
【出願形態】OL
【外国語出願】
【公開請求】
(21)【出願番号】P 2021060825
(22)【出願日】2021-03-31
(31)【優先権主張番号】202010899094.6
(32)【優先日】2020-08-31
(33)【優先権主張国・地域又は機関】CN
(31)【優先権主張番号】202010915536.1
(32)【優先日】2020-09-03
(33)【優先権主張国・地域又は機関】CN
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
1.SMALLTALK
(71)【出願人】
【識別番号】516262169
【氏名又は名称】北京百度網訊科技有限公司
【氏名又は名称原語表記】Beijing Baidu Netcom Science Technology Co., Ltd.
【住所又は居所原語表記】2/F Baidu Campus,No.10, Shangdi 10th Street, Haidian District, Beijing 100085, China
(71)【出願人】
【識別番号】521457387
【氏名又は名称】クンルンシン テクノロジー (ベイジン) カンパニー リミテッド
(74)【代理人】
【識別番号】100112656
【弁理士】
【氏名又は名称】宮田 英毅
(74)【代理人】
【識別番号】100089118
【弁理士】
【氏名又は名称】酒井 宏明
(72)【発明者】
【氏名】趙保付
(72)【発明者】
【氏名】杜学亮
(72)【発明者】
【氏名】柳嘉強
(72)【発明者】
【氏名】黄子騰
【テーマコード(参考)】
5B042
5B146
【Fターム(参考)】
5B042HH07
5B146AA22
5B146GG23
5B146GJ05
5B146GQ01
5B146GQ02
(57)【要約】      (修正有)
【課題】人工知能チップ設計、シミュレータ開発及び機能検証に用いるチップを検証する方法、装置、電子デバイス、記憶媒体及びコンピュータプログラムを提供する。
【解決手段】チップを検証する方法は、チップに基づいて作成されチップに関連付けられたソフトウェア環境ハードウェア環境を、複数の指令及び複数の指令の実行に必要なデータを含むプロファイルを介して配置することと、複数の指令をソフトウェア環境とハードウェア環境のそれぞれで実行させることと、ソフトウェア環境で複数の指令が実行されて生成された第1の情報及びハードウェア環境で複数の指令が実行されて生成された第2の情報をそれぞれ取得することと、生成された第1の情報及び第2の情報に基づいて、チップを検証することと、を含む。第1の情報及び第2の情報は、実行された複数の指令と、実行された複数の指令のアドレス及び複数の指令が実行されて生成されたデータを含む。
【選択図】図2
【特許請求の範囲】
【請求項1】
チップに基づいて作成され前記チップに関連付けられたソフトウェア環境及びハードウェア環境を、複数の指令及び前記複数の指令の実行に必要なデータを含むプロファイルを介して配置することと、
前記複数の指令を前記ソフトウェア環境と前記ハードウェア環境のそれぞれで実行させることと、
前記ソフトウェア環境で前記複数の指令が実行されて生成された第1の情報及び前記ハードウェア環境で前記複数の指令が実行されて生成された第2の情報であって、実行された前記複数の指令と、実行された前記複数の指令のアドレスと、前記複数の指令が実行されて生成されたデータとを含む、前記第1の情報及び前記第2の情報をそれぞれ取得することと、
生成された前記第1の情報及び前記第2の情報に基づいて、前記チップを検証することと、
を含む、チップを検証する方法。
【請求項2】
前記ソフトウェア環境及び前記ハードウェア環境には、指令メモリ、レジスタ及びデータメモリが使用されており、
前記チップに関連付けられたソフトウェア環境及びハードウェア環境を、プロファイルを介して配置することは、
前記プロファイルの前記複数の指令を前記指令メモリに記憶することと、
前記複数の指令の実行に必要な前記複数のデータを、前記レジスタ及び前記データメモリに記憶することと、
を含む、請求項1に記載の方法。
【請求項3】
生成された前記データには、レジスタデータ及びメモリデータが含まれており、
前記方法は、
前記第1の情報のうち、指令タイプ、メモリデータタイプ及びレジスタデータタイプのいずれか1つを含む所定のタイプの情報を第1のファイルに記憶することと、
前記第2の情報のうち同一の前記所定のタイプの情報を、第2のファイルに記憶することと、
をさらに含む、請求項1に記載の方法。
【請求項4】
生成された前記第1の情報及び前記第2の情報に基づいて、前記チップを検証することは、
前記第1のファイルと前記第2のファイルとを比較することにより、前記第1のファイルと前記第2のファイルとが一致しない部分を特定することと、
前記一致しない部分に基づいて、正しく実行されなかった指令を特定することと、
前記正しく実行されなかった指令に基づいて、前記ソフトウェア環境及び/または前記ハードウェア環境における不正確な部分を特定することと、
を含む、請求項3に記載の方法。
【請求項5】
前記第1の情報は、実行された前記複数の指令の記述情報をさらに含み、
前記正しく実行されなかった指令に基づいて、前記ソフトウェア環境及び/または前記ハードウェア環境における不正確な部分を特定することは、
前記正しく実行されなかった指令のターゲット記述情報を特定することと、
前記ターゲット記述情報に基づいて、前記不正確な部分を特定することと、
を含む、請求項4に記載の方法。
【請求項6】
実行された前記複数の指令の記述情報は、指令の意味、機能、ソースオペランド及び実行結果のうち、少なくとも一つを含む、
請求項5に記載の方法。
【請求項7】
チップに基づいて作成され前記チップに関連付けられたソフトウェア環境及びハードウェア環境を、複数の指令及び前記複数の指令の実行に必要なデータを含むプロファイルを介して配置するように構成される配置モジュールと、
前記複数の指令を前記ソフトウェア環境と前記ハードウェア環境のそれぞれで実行させるように構成される実行モジュールと、
前記ソフトウェア環境で前記複数の指令が実行されて生成された第1の情報及び前記ハードウェア環境で前記複数の指令が実行されて生成された第2の情報であって、実行された前記複数の指令と、実行された前記複数の指令のアドレスと、前記複数の指令が実行されて生成されたデータとを含む、前記第1の情報及び前記第2の情報を、それぞれ取得するように構成される情報取得モジュールと、
生成された前記第1の情報及び前記第2の情報に基づいて、前記チップを検証するように構成される検証モジュールと、
備える、チップを検証する装置。
【請求項8】
前記ソフトウェア環境及び前記ハードウェア環境には、指令メモリ、レジスタ及びデータメモリが使用されており、
前記配置モジュールは、
前記プロファイルの前記複数の指令を前記指令メモリに記憶するように構成される指令記憶モジュールと、
前記複数の指令の実行に必要な前記複数のデータを、前記レジスタ及び前記データメモリに記憶するように構成されるデータ記憶モジュールと、
をさらに備える、請求項7に記載の装置。
【請求項9】
生成された前記データには、レジスタデータ及びメモリデータが含まれており、
前記装置は、
前記第1の情報のうち、指令タイプ、メモリデータタイプ及びレジスタデータタイプのいずれか1つを含む所定のタイプの情報を第1のファイルに記憶するように構成される第1の情報記憶モジュールと、
前記第2の情報のうち同一の前記所定のタイプの情報を、第2のファイルに記憶するように構成される第2の情報記憶モジュールと、
をさらに備える、請求項7に記載の装置。
【請求項10】
前記検証モジュールは、
前記第1のファイルと前記第2のファイルとを比較することにより、前記第1のファイルと前記第2のファイルとが一致しない部分を特定するように構成される比較モジュールと、
前記一致しない部分に基づいて、正しく実行されなかった指令を特定するように構成される第1のエラー特定モジュールと、
前記正しく実行されなかった指令に基づいて、前記ソフトウェア環境及び/または前記ハードウェア環境における不正確な部分を特定するように構成される第2のエラー特定モジュールと、
をさらに備える、請求項9に記載の装置。
【請求項11】
前記第1の情報は、実行された前記複数の指令の記述情報をさらに含み、
前記第2のエラー特定モジュールは、
前記正しく実行されなかった指令のターゲット記述情報を特定するように構成されるターゲット記述情報特定モジュールと、
前記ターゲット記述情報に基づいて、前記不正確な部分を特定するように構成される第3のエラー特定モジュールと、
をさらに備える請求項10に記載の装置。
【請求項12】
実行された前記複数の指令の記述情報は、指令の意味、機能、ソースオペランド及び実行結果のうち、少なくとも一つを含む、
請求項11に記載の装置。
【請求項13】
一つまたは複数のプロセッサと、
前記一つまたは複数のプロセッサによって実行されることにより、前記一つまたは複数のプロセッサが請求項1~6のいずれか一項に記載の方法を実現する一つまたは複数のプログラムを記憶するための記憶装置と、
を備える、電子デバイス。
【請求項14】
プロセッサによって実行されると、請求項1~6のいずれか一項に記載の方法を実現するコンピュータプログラムが記憶されている、
コンピュータ可読記憶媒体。
【請求項15】
プロセッサによって実行されると、請求項1~6のいずれか一項に記載の方法を実現する、
コンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本開示の実施形態は、チップ設計の分野に関し、より詳細には、チップを検証する方法、装置、電子デバイス、コンピュータ可読記憶媒体及びコンピュータプログラムに関する。
【背景技術】
【0002】
人工知能チップ設計のような現代のチップ設計において、実際のハードウェアを構築する前に、シミュレーションの方式によって構築しようとするチップのアーキテクチャを実現する必要があり、チップの機能を迅速にシミュレーションすることができ、且つチップ設計が機能的に正しいか否かを検証するシミュレータが必要である。チップ設計者にとって、シミュレーションの方式によってアーキテクチャを実現するのは、ハードウェア実現のオーバーヘッドを節約するとともに、技術案の修正にも便利である。
【発明の概要】
【発明が解決しようとする課題】
【0003】
チップ開発における機能シミュレータの重要な役割に鑑みると、機能シミュレータの機能を正確かつ完全に保証する開発方法が必要である。
【0004】
本開示の実施形態によれば、チップを検証するためのソリューションを提供する。
【課題を解決するための手段】
【0005】
本開示の第1の態様において、チップに基づいて作成されチップに関連付けられたソフトウェア環境及びハードウェア環境を、複数の指令及び複数の指令の実行に必要なデータを含むプロファイルを介して配置することと、複数の指令をソフトウェア環境とハードウェア環境のそれぞれで実行させることと、ソフトウェア環境で複数の指令が実行されて生成された第1の情報と、ハードウェア環境で複数の指令が実行されて生成された第2の情報であって、実行された複数の指令と、実行された複数の指令のアドレスと、複数の指令が実行されて生成されたデータとを含む、第1の情報及び第2の情報をそれぞれ取得することと、生成された第1の情報及び第2の情報に基づいて、チップを検証することと、を含む、チップを検証する方法を提供する。
【0006】
本開示の第2の態様において、チップに基づいて作成されチップに関連付けられたソフトウェア環境及びハードウェア環境を、複数の指令及び複数の指令の実行に必要なデータを含むプロファイルを介して配置するように構成される配置モジュールと、複数の指令をソフトウェア環境とハードウェア環境のそれぞれで実行させるように構成される実行モジュールと、ソフトウェア環境で複数の指令が実行されて生成された第1の情報及び前記ハードウェア環境で複数の指令が実行されて生成された第2の情報であって、実行された複数の指令と、実行された複数の指令のアドレスと、複数の指令が実行されて生成されたデータとを含む、第1の情報及び前記第2の情報を、それぞれ取得するように構成される情報取得モジュールと、生成された第1の情報及び第2の情報に基づいて、チップを検証するように構成される検証モジュールと、を備える、チップを検証する装置を提供する。
【0007】
本開示の第3の態様において、一つまたは複数のプロセッサと、一つまたは複数のプロセッサによって実行されることにより、一つまたは複数のプロセッサが請求項1~6のいずれか一項に記載の方法を実現する一つまたは複数のプログラムを記憶するための記憶装置と、を備える、電子デバイスを提供する。
【0008】
本開示の第4の態様において、プロセッサによって実行されると、本開示の第1の態様の方法を実現するコンピュータプログラムが記憶されている、コンピュータ可読記憶媒体を提供する。
【0009】
本開示の第5の態様において、プロセッサによって実行されると、本開示の第1の態様の方法を実現する、コンピュータプログラムを提供する。
【0010】
理解されるように、特許請求の範囲に記載の内容は本開示の実施例の重要な特徴または重要な特徴を限定するものではなく、また本開示の範囲を限定するものではない。本開示の他の特徴は、以下の説明から容易に理解される。
【図面の簡単な説明】
【0011】
図面と合わせて、以下の詳細な説明を参照すれば、本開示の各実施形態の上記と他の特徴、利点及び態様はより顕著になる。図面において、同一または同様な符号は、同一または同様な素子を示す。
【0012】
図1】本発明の複数の実施形態が実現可能な環境の一例を示す模式図である。
図2】本発明のいくつかの実施形態による、チップを検証するプロセスを示すフローチャートである。
図3】本発明のいくつかの実施形態による、情報を記憶するプロセスを示すフローチャートである。
図4】本発明のいくつかの実施形態による、チップを検証するプロセスを示すフローチャートである。
図5】本発明のいくつかの実施形態による、チップを検証するプロセスを示すフローチャートである。
図6】本発明のいくつかの実施形態による、チップの検証する装置の模式ブロック図である。
図7】本開示の複数の実施形態を実行することができるコンピューティングデバイスのブロック図である。
【発明を実施するための形態】
【0013】
以下に、添付図面を参照しながら,本発明の好適な実施形態についてより詳細に説明する。本開示の好ましい実施形態が図面に示されているが、本開示は、ここで記載された実施形態に限定されることなく、様々な形態で実施され得ることを理解されたい。逆に、これらの実施形態は、本開示をより徹底的かつ完全にし、本開示の範囲を当業者に完全に伝えることを可能にするために提供される。
【0014】
本明細書で使用される用語「含む」及びその変形は、開放性を示すものであるが、「含むが、これに限定されない」ことを意味する。特に明記しない限り、用語「または」は「及び/または」を意味する。「に基づく」という用語は、「少なくとも部分的に基づく」ことを意味する。用語「1つの例示的な実施形態」及び「1つの実施形態」は、「少なくとも1つの例示的な実施形態」を意味する。用語「別の実施形態」は、「少なくとも1つの別の実施形態」を意味する。用語「第1の」、「第2の」等は、異なるまたは同一の対象を指すことができる。以下の説明は、その他の明確または暗黙的な定義も含みうる。
【0015】
上述したように、チップの機能及びアーキテクチャを検証するためにシミュレータが必要である。しかし、従来の機能シミュレータの開発は一般的にソフトウェア開発者によって完成され、開発が完成された後の正確性及び完全性も、ソフトウェア開発者に書かれたコマンドテストプログラムによってテストされ、且つ該テストはソフトウェア環境でのみ行われる。このようにして、機能シミュレータの機能とターゲットチップアーキテクチャが完全に一致することを保証することは困難であり、全てのターゲットチップアーキテクチャを実現できる機能を保証することもできない。また、機能シミュレータの開発の反復に伴い、機能シミュレータはより複雑になり、完全性のテストを保証することがより困難である。したがって、機能シミュレータの機能が正確かつ完全であることを保証する開発方法が必要である。
【0016】
本開示の実施形態によれば、チップを検証する方法が提供される。該方法は、プロファイルを利用してソフトウェア及びハードウェアシミュレーション環境を配置し、続いて結果を比較してチップの機能を検証するものである。この方式では、まず、チップ(例えば、機能と構造)に基づいて作成されるソフトウェア環境及びハードウェア環境を、指令及びデータを含むプロファイルを介して配置する。次に、指令を、ソフトウェア環境及びハードウェア環境で実行させる。次に、ソフトウェア環境で指令が実行されて生成された第1の情報及びハードウェア環境で指令が実行されて生成された第2の情報、をそれぞれ取得する。第1の情報と第2の情報は、実行された指令と、指令のアドレス及び生成されたデータを含む。最後に、生成された第1の情報及び第2の情報により、チップを検証する。
【0017】
ファイルによってソフトウェア及びハードウェアのシミュレーション環境を初期化し、大量のランダムコマンド及びデータテストを行いやすくする。ソフトウェアシミュレータとハードウェアシミュレータをそれぞれ利用して同じ指令を実行し結果を比較することにより、シミュレータの機能エラーの位置をタイムリーに発見し、修正して改善し、機能シミュレータの機能正確性を確保することができる。多数のランダム指令のテスト及び検証環境の継続的なストレステストにより、全ての指令の組み合わせをカバーし、シミュレータの機能完全性を確保することができる。
【0018】
以下に、図面を参照して、本開示の基本原理及びいくつかの実施形態を説明する。
【0019】
図1は、本開示の複数の実施形態が実現可能な例示的な環境100の模式図を示す。図1に示された環境100は、単なる例示であって、本開示に記載された実施形態の機能及び範囲の限定を構成するものではないことを理解されたい。図1に示すように、環境100は、プロファイル110、指令120-1、指令120-2(以下で複数の指令120と総称する)、データ130、コンピューティングデバイス140、ソフトウェア環境150、ハードウェア環境160、第1の情報170、第2の情報180及び検証結果190を含む。
【0020】
プロファイル110は、複数の指令120を含んでもよく、図1には、複数の指令のうちの2つの指令120-1、120-2のみが示されているが、これは例示に過ぎず、より多くの指令及び指令セットが存在することもできる。複数の指令120は、同じタイプの指令であってもよく、異なるタイプの指令であってもよく、データ転送指令、算術演算指令、ビット演算指令、プログラムフロー制御指令、ストリング操作指令、プロセッサ制御指令等を含むが、これらに限定されない。プロファイル110は、データ130をさらに含むことができ、このデータ130は、上記指令を実行するために必要なデータであってもよく、上記指令と関係ない他のデータであってもよく、データのタイプは線形テーブル、スタック及びキュー、配列、ツリー、図、広義テーブル、スパース行列等を含むが、これらに限定されない。プロファイル110は、後の動作のために大量のデータ及び指令をランダムに生成することができる。指令及びデータは、2進法、8進法、10進法または16進法であってもよく、本開示はここで限定されない。
【0021】
コンピューティングデバイス140は、構造、機能、論理などのようなチップの特性に基づいて、ソフトウェア環境150及びハードウェア環境160を作成することができる。このソフトウェア環境150は、チップの機能を検証する機能シミュレータとすることができ、C、C++言語で作成することができる。該ハードウェア環境160は、ハードウェアRTL(Register Transfer Level)システムであってもよく、該ハードウェアRTLシステムは回路動作の抽象レベルを記述するために用いられ、ハードウェア環境160はハードウェア記述言語(例えばVerilogs、system Verilogs、VHDL)等により作成される。一例では、コンピューティングデバイス140は、指令、データ、レジスタ、及びメモリを介して、ソフトウェア環境150及びハードウェア環境160でチップの機能のシミュレーションを実行する。
【0022】
コンピューティングデバイス140は、プロファイル110内の複数の指令120またはデータ130を介してソフトウェア環境150及びハードウェア環境160を配置することができ、例えば、プロファイル110によってソフトウェア環境150及びハードウェア環境160のメモリ、レジスタを初期化することができる。コンピューティングデバイス140は、第1の情報170及び第2の情報180をそれぞれ生成するように、配置されたソフトウェア環境150及びハードウェア環境160を介して指令及びデータを実行することができる。第1の情報170及び第2の情報180は、指令及び指令のPC値、生成されたデータ、指令の詳細、例えば指令の意味、機能、ソースオペランド、結果等であってもよい。
【0023】
コンピューティングデバイス140は、ソフトウェア環境150及びハードウェア環境160を含むものとして示されているが、コンピューティングデバイス140は、ソフトウェア環境150及びハードウェア環境160以外のエンティティであってもよい。コンピューティングデバイス140は、コンピューティング機能を有する任意の装置とすることができる。非限定的な例として、コンピューティングデバイス140は、デスクトップコンピュータ、ラップトップコンピュータ、ノートブックコンピュータ、ネットブックコンピュータ、タブレットコンピュータ、マルチメディアコンピュータ、携帯電話などを含むが、これらに限定されない任意のタイプの固定コンピューティングデバイス、モバイルコンピューティングデバイス、または携帯コンピューティングデバイスであってもよい。コンピューティングデバイス140のすべてまたは一部のコンポーネントは、クラウド側に分散されてもよい。コンピューティングデバイス140は、計算、記憶、通信、制御などの機能を実現するように、少なくともプロセッサ、メモリ、及び一般に汎用コンピュータ内に存在する他のコンポーネントを含む。
【0024】
コンピューティングデバイス140は、さらに、第1の情報170と第2の情報180とを比較することにより検証結果190を生成し、その後、検証結果によってソフトウェア環境150及びハードウェア環境160内のエラーが発生した場所を特定して改善することができる。
【0025】
以下、図2図5を参照して、詳細な検証処理についてさらに説明する。図2は、本開示の実施形態による道路情報データの方法200のフローチャートを示す。方法200は、図1のコンピューティングデバイス140によって実行されることができる。説明の便宜上、図1を参照しながら、方法200について説明する。
【0026】
ブロック210において、コンピューティングデバイス140は、チップに基づいて作成され前記チップに関連付けられたソフトウェア環境150及びハードウェア環境を、複数の指令120及び複数の指令の実行に必要なデータ130を含むプロファイル140を介して配置する。例えば、コンピューティングデバイス140は、プロファイル110を介して、ソフトウェア環境150及びハードウェア環境160をテストするために使用される多数のランダム指令及びデータを生成することで、ソフトウェア環境150及びハードウェア環境160を配置することができる。コンピューティングデバイス140は、作成されるチップの機能、論理、及び具体的な回路構造に基づいて、異なるプログラミング言語でチップをテストするためのソフトウェア環境150及びハードウェア環境160を作成する。
【0027】
一実施例において、ハードウェア環境160を構築するために、コンピューティングデバイス140はチップの最上層機能及び構造における設計方法に基づき、チップシステムをいくつかの基本ユニットに分割し、続いて各基本ユニットを次の階層の基本ユニットに分割し、このように類推して、ゲートまたは接続線を直接に使用できるまでハードウェア環境160を段階的に構築する。ハードウェア環境はハードウェアRTLシステムであってもよく、一例において、コンピューティングデバイス140は、機能定義及びモジュール分割を行うこと、全てのモジュールのインタフェースを定義すること、クロックドメインを設計すること、設計のクリティカルパスを考慮すること、最上層設計、FSM設計、タイミングロジック設計、組み合わせロジック設計、というようなステップによってハードウェアRTLシステムを構築することができる。
【0028】
ファイルによって初期化を行うことで、大量のランダムコマンド及びデータテストが容易になり、その後のテストのコマンドカバー率を向上させることができ、チップの検証及びチップのシミュレータの機能完全性を確保することができる。
【0029】
一実施形態では、コンピュータ装置140は、時間シードによって、プロファイルが毎回生成する指令及びデータが異なることを保証することができ、すなわち、毎回取得される時間シードが異なることを確保することによって、それに対応する生成された指令及びデータが異なることを確保することができる。
【0030】
一実施形態では、ソフトウェア環境150及び前記ハードウェア環境160は、指令メモリ、レジスタ、及びデータメモリを使用する。この指令メモリは、複数の指令メモリであってもよく、レジスタは、複数のレジスタまたはレジスタ群であってもよく、このデータメモリは、複数のデータメモリであってもよい。ソフトウェア環境150を例として、コンピューティングデバイス140は、以下のステップ(1)、(2)、(3)によりソフトウェア環境150を配置することができる。
【0031】
(1)コンピューティングデバイス140は、プロファイル110がランダムに生成した複数の指令120を指令メモリに記憶し、ここで、各行は実行すべき指令を表し、且つ該複数の指令はPC値の昇順でソートされる。
02003000
……
7ff1111b
【0032】
(2)コンピューティングデバイス140は、プロファイル110がランダムに生成した複数のデータにおけるレジスタデータをレジスタに記憶し、各行は一つのレジスタに記憶されたデータを表し、レジスタ番号の昇順でソートされる。
f323bad1
……
23dc0ab8
【0033】
(3)コンピューティングデバイス140は、プロファイル110がランダムに生成した複数のデータにおけるメモリデータをメモリに記憶し、各行は一つのメモリに記憶されたデータを表し、メモリアドレスの昇順でソートされる。
1030f0bc
……
049a0dc1
【0034】
この例では、上記データを16進数で記載しているが、これは本開示を限定するものではなく、他の進数のデータを用いてもよい。ハードウェア環境160を配置するプロセスは上記プロセスと類似し、ここで説明を省略する。
【0035】
ブロック220において、コンピューティングデバイス140は、複数の指令120を、ソフトウェア環境及びハードウェア環境のそれぞれで実行させる。例えば、コンピューティングデバイスは、ソフトウェア環境150(例えば、機能シミュレータ)及びハードウェア環境160(例えば、ハードウェアRTLシステム)を介して上記の配置の複数の指令120を実行しながら、ハードウェアコードに基づいて環境を検証することができる。
【0036】
ブロック230において、コンピューティングデバイス140は、ソフトウェア環境150で複数の指令120が実行されて生成された第1の情報170及びハードウェア環境160で複数の指令120が実行されて生成された第2の情報180をそれぞれ取得する。第1の情報170及び第2の情報180は、実行された複数の指令と、実行された複数の指令のアドレスと、複数の指令が実行されて生成されたデータとを含む。
【0037】
一実施例において、ソフトウェア環境150及びコンピューティングデバイス140を介して生成された第1の情報170を例として、上記ステップ(1)、(2)、(3)を継続し、コンピューティングデバイス140は複数の指令を指令メモリに記憶した後、指令メモリから、ステップ(1)で記憶された指令をPC値順に取得し、続いて指令をデコードし、レジスタから、ステップ(2)で記憶されたレジスタデータ(例えばソースオペランド)を取得する。次いで、コンピューティングデバイス140は、指令に関連するコンピューティングを実行し、指令の複雑さに応じて、指令の実行中に、ステップ(3)で記憶されたメモリデータをデータメモリから読み出し、実行中に生成されたデータをデータメモリに書き込むことができる。最後に、コンピューティングデバイス140は、指令の最終的な実行結果をレジスタに書き込み、テストのための全ての指令が実行されるまで、上記のプロセスを繰り返す。コンピューティングデバイス140は、実行された指令、そのアドレス、及び生成されたデータを第1の情報170として取得する。
【0038】
一例では、以下のステップ(4)、(5)、(6)によってソフトウェア環境150を配置する。
【0039】
(4)コンピューティングデバイス140は、実行中のPC値及び指令を取得して第1の情報170とし、各行は一つのPC値及び対応する一つの指令を表し、指令の実行順にソートされる。
00000000:02003000
……
000007fc:7ff1111b
【0040】
(5)コンピューティングデバイス140は、指令の実行が終了した後、ソフトウェア環境150におけるレジスタの結果データを取得して第1の情報170とし、各行は1つのレジスタのデータを表し、レジスタ番号の昇順でソートされる。
4f3eba17
……
19efdc80
【0041】
(6)コンピューティングデバイス140は、指令の実行が終了した後、ソフトウェア環境150におけるデータメモリの結果データを取得して第1の情報170とし、各行はデータメモリの一つの結果データを表し、メモリアドレスの昇順でソートされる。
429a13fc
……
b92a8d12
【0042】
コンピューティングデバイス140がハードウェア環境160における第2の情報180を取得するプロセスは上記プロセスと類似し、ここで説明を省略する。
【0043】
一実施形態では、コンピューティングデバイス140は、取得された上述の情報を記憶する。図3を参照して説明する。図3は、本開示のいくつかの実施形態による、情報を記憶するプロセスのフローチャートを示す。ブロック310において、コンピューティングデバイス140は、第1の情報170における、指令タイプ、メモリデータタイプ、及びレジスタデータタイプのうちの1つを含む所定のタイプの情報を第1のファイルに記憶する。例えば、コンピューティングデバイス140は、上記ステップ(4)で取得された第1の情報170における指令タイプのデータ(すなわち、実行された指令、そのPC値及びその実行順序)を第1のファイルのAファイルに記憶し、上記ステップ(5)で取得された第1の情報170におけるレジスタデータタイプのデータを第1のファイルのBファイルに記憶し、上記ステップ(6)で取得された第1の情報170におけるメモリデータタイプのデータを第1のファイルのCに記憶する。
【0044】
ブロック320において、コンピューティングデバイス140は、第2の情報180における同じ所定のタイプの情報を第2のファイルに記憶する。例えば、コンピューティングデバイス140は、第2の情報180における指令タイプのデータを第2のファイルのA’ファイルに記憶し、第2の情報180におけるレジスタデータタイプのデータを第2のファイルのB’ファイルに記憶し、第2の情報180におけるメモリデータタイプのデータを第2のファイルのC’ファイルに記憶する。
【0045】
指令実行結果データをファイルに記憶することにより、後続の自動化比較を行って結果が正しいか否かを検証することが容易である。
【0046】
ブロック240において、コンピューティングデバイス140は、生成された第1の情報170及び第2の情報180に基づいてチップを検証する。これについて、図4及び図5を参照してさらに説明する。
【0047】
図4に移行して説明する。図4は、本開示のいくつかの実施例による、チップを検証するプロセスのフローチャートを示す。ブロック410において、コンピューティングデバイス140は、第1のファイルと第2のファイルとを比較することにより、第1のファイルと第2のファイルとが一致しない部分を特定する。一例では、コンピューティングデバイス140は、第1のファイル及び第2のファイルにおける同じタイプのデータをそれぞれ比較する。例えば、コンピューティングデバイス140は第1のファイルのAファイルにおける指令と第2のファイルのA’ファイルにおける指令を行ごとに比較し、第1のファイルのBファイルにおけるデータと第2のファイルのB’ファイルにおけるデータを行ごとに比較し、第1のファイルのCファイルにおけるデータと第2のファイルのC’ファイルにおけるデータを行ごとに比較することで、その一致しない部分を特定する。
【0048】
ブロック420において、コンピューティングデバイス140は、一致しない部分に基づいて、正しく実行されなかった指令を特定する。一実施形態では、コンピューティングデバイス140は、Aファイルにおける1行の指令がA’ファイルにおける1行の指令と一致しないと判定した場合、その指令が正しく実行されなかったと直接に判定することができる。
【0049】
別の実施形態では、コンピューティングデバイス140は、BまたはCファイルにおける1行のデータがB’またはC’ファイルにおける1行のデータと一致しないと判断した場合、コンピューティングデバイスは、このデータによって該データに関連する指令を見つけることができ、それにより、正しく実行されなかった指令を特定する。
【0050】
ブロック430において、コンピューティングデバイス140は、正しく実行されなかった指令に基づいて、ソフトウェア環境150及び/またはハードウェア環境160における不正確な部分を特定する。例えば、コンピューティングデバイスは、この正しく実行されなかった指令に基づいて、ソフトウェア環境150及び/またはハードウェア環境160における機能エラーを特定して、機能シミュレータまたはハードウェアRTLシステムを完全化することができる。図5を参照してさらに説明する。
【0051】
図5に移行して説明する。図5は、本開示のいくつかの実施例による、チップを検証するプロセスのフローチャートを示す。
【0052】
ブロック510において、コンピューティングデバイス140は、正しく実行されなかった指令のターゲット記述情報を特定する。例えば、コンピューティングデバイス140は、ソフトウェア環境150に対して上記のステップ(1)~(6)を実行する時に、全ての実行された指令のターゲット記述情報を取得し、該情報を第3のファイルに記憶することができ、正しく実行されなかった指令を特定した後に、該ファイルによって正しく実行されなかった指令のターゲット記述情報を特定することができる。
【0053】
一実施形態では、記述情報は、指令の意味、機能、ソースオペランド、及び実行結果のうちの少なくとも1つを含む。
【0054】
ブロック520において、コンピューティングデバイス140は、ターゲット記述情報に基づいて、不正確な部分を特定する。例えば、コンピューティングデバイス140は、この正しく実行されなかった指令の意味、機能、ソースオペランド、及び実行結果に基づいて、ソフトウェア環境150及び/またはハードウェア環境160においてエラーが発生した機能及びエラーが発生した場所をより容易に特定することができる。
【0055】
別の実施形態では、コンピューティングデバイスは、ソフトウェア環境150及び/またはハードウェア環境160によって実行されるプロセス及び結果を、それらの間で比較することなく、それぞれ閾値と比較することによって、チップを検証することもできる。
【0056】
本開示は、ファイルによりソフトウェア及びハードウェアシミュレーション環境を初期化することで、大量のランダムコマンド及びデータテストが容易になり、実行結果データをファイルに記憶することにより、自動化比較を行って結果が正しいか否かを検証することが容易である。ソフトウェアシミュレータとハードウェアシミュレータをそれぞれ利用して同じ指令を実行し、結果を比較することにより、シミュレータの機能エラーの位置をタイムリーに発見して完全に修正し、機能シミュレータの機能正確性を確保することができる。多数のランダム指令のテスト及び検証環境の継続的なストレステストにより、全ての指令の組み合わせをカバーし、シミュレータの機能完全性を確保することができる。
【0057】
図6は、本開示のいくつかの実施形態による、チップを検証するための装置の模式ブロック図である。デバイス600は、図1のコンピューティングデバイス140に含まれてもよいし、コンピューティングデバイス140として実現されてもよい。
【0058】
図6に示すように、装置600は、チップに基づいて作成されチップに関連付けられたソフトウェア環境及びハードウェア環境を、複数の指令及び複数の指令の実行に必要なデータを含むプロファイルを介して配置するように構成される配置モジュール610と、複数の指令をソフトウェア環境とハードウェア環境のそれぞれで実行させるように構成される実行モジュール620と、ソフトウェア環境で複数の指令が実行されて生成された第1の情報及び前記ハードウェア環境で複数の指令が実行されて生成された第2の情報であって、実行された複数の指令と、実行された複数の指令のアドレスと、複数の指令が実行されて生成されたデータと含む、第1の情報及び第2の情報をそれぞれ取得するように構成される情報取得モジュール630と、生成された第1の情報及び第2の情報に基づいて、チップを検証するように構成される検証モジュール640と、を備える。
【0059】
いくつかの実施形態では、ソフトウェア環境及びハードウェア環境には、指令メモリ、レジスタ及びデータメモリが使用されており、配置モジュール610は、プロファイルの複数の指令を指令メモリに記憶するように構成される指令記憶モジュールと、複数の指令の実行に必要な複数のデータを、レジスタ及びデータメモリに記憶するように構成されるデータ記憶モジュールと、を備えてもよい。
【0060】
いくつかの実施形態では、生成されたデータには、レジスタデータ及びメモリデータが含まれており、装置600は、第1の情報のうち、指令タイプ、メモリデータタイプ及びレジスタデータタイプのいずれか1つを含む所定のタイプの情報を第1のファイルに記憶するように構成される第1の情報記憶モジュールと、第2の情報のうち同一の所定のタイプの情報を、第2のファイルに記憶するように構成される第2の情報記憶モジュールと、をさらに備えてもよい。
【0061】
いくつかの実施形態では、検証モジュール640は、第1のファイルと第2のファイルとを比較することにより、第1のファイルと第2のファイルとが一致しない部分を特定するように構成される比較モジュールと、一致しない部分に基づいて、正しく実行されなかった指令を特定するように構成される第1のエラー特定モジュールと、正しく実行されなかった指令に基づいて、ソフトウェア環境及び/またはハードウェア環境における不正確な部分を特定するように構成される第2のエラー特定モジュールと、をさらに備えてもよい。
【0062】
いくつかの実施形態では、第1の情報は、実行された複数の指令の記述情報をさらに含み、第2のエラー特定モジュールは、正しく実行されなかった指令のターゲット記述情報を特定するように構成されるターゲット記述情報特定モジュールと、ターゲット記述情報に基づいて、不正確な部分を特定するように構成される第3のエラー特定モジュールと、をさらに備えてもよい。
【0063】
いくつかの実施形態では、実行された複数の指令の記述情報は、指令の意味、機能、ソースオペランド及び実行結果の少なくとも一つを含む。
【0064】
図7は、本開示の実施形態を実施するために使用され得る例示的な装置700の模式ブロック図を示す。例えば、図1に示す例示的な環境100内のコンピューティングデバイス140は、デバイス700によって実施されてもよい。同図に示すように、装置700は、ROM(Read Only Memory)702に記憶されているコンピュータプログラム指令、または記憶部708からRAM(Random Access Memory)703にロードされたコンピュータプログラム指令に従って各種の適切な動作及び処理を実行するCPU(Central Processing Unit)701を含む。RAM703には、さらに、デバイス700の動作に必要な各種プログラムやデータが記憶される。CPU701、ROM702、及びRAM703は、バス704を介して相互に接続されている。入出力(I/O)インタフェース705も、バス704に接続されている。
【0065】
I/Oインタフェース705には、キーボード、マウスなどのような入力部706、各種のディスプレイ、スピーカなどのような出力部707、磁気ディスク、光ディスクなどのような記憶部708、ネットワークカード、モデム、無線通信用のトランシーバなどのような通信部709を含むデバイス700の複数の部材が接続されている。通信ユニット709は、装置700がインターネットのようなコンピュータネットワーク及び/または様々な通信ネットワークを介して他の装置と情報/データを交換することを許可する。
【0066】
上述した方法200、300、400、及び500などの様々なプロセス及び処理は、処理ユニット701によって実行されることができる。例えば、いくつかの実施形態では、方法200、300、400、及び500は、例えば記憶装置708のような機械可読媒体に有形に含まれるコンピュータソフトウェアプログラムとして実現することができる。いくつかの実施形態では、コンピュータプログラムの一部または全部を、ROM702及び/または通信ユニット709を介して装置700にロード及び/またはインストールすることができる。コンピュータプログラムがRAM703にロードされ、CPU701によって実行されると、上述の方法200、300、400、及び500のうちの1つまたは複数の動作を実行することができる。
【0067】
本開示は、方法、装置、システム、及び/またはコンピュータプログラム製品であってもよい。コンピュータプログラム製品は、本開示の様々な態様を実行するためのコンピュータ可読プログラム指令が記録されたコンピュータ可読記憶媒体を含むことができる。
【0068】
コンピュータ可読記憶媒体は、指令実行装置によって使用される指令を保持及び記憶することができる有形の装置であってもよい。コンピュータ可読記憶媒体は、例えば、電気記憶装置、磁気記憶装置、光記憶装置、電磁記憶装置、半導体記憶装置、またはこれらの任意の適切な組み合わせであってもよいが、これらに限定されない。コンピュータ可読記憶媒体のより具体的な例(非網羅的なリスト)は、ポータブルコンピュータディスク、ハードディスク、ランダムアクセスメモリ(RAM)、読み出し専用メモリ(ROM)、消去可能なプログラマブル読み出し専用メモリ(EPROMまたはフラッシュメモリ)、スタティックランダムアクセスメモリ(SRAM)、ポータブルコンパクトディスク読み出し専用メモリ(CD-ROM)、デジタル多用途ディスク(DVD)、メモリスティック、フロッピーディスク、機械的符号化装置、例えばコマンドを記憶したパンチカードまたは溝内の凸構造、及び上記のいずれかの適切な組み合わせを含む。ここで使用されるコンピュータ可読記憶媒体は、電波または他の自由に伝搬する電磁波、導波路または他の伝送媒体を介して伝搬する電磁波(例えば、光ファイバケーブルを介して伝搬する光パルス)、または電気ワイヤを介して伝搬する電気信号などのような瞬時信号自体として解釈されない。
【0069】
ここで説明されるコンピュータ可読プログラム指令は、コンピュータ可読記憶媒体から各種の計算/処理装置にダウンロードすることができ、またはインターネット、ローカルエリアネットワーク、ワイドエリアネットワーク、及び/または無線ネットワークなどのネットワークを介して外部コンピュータまたは外部記憶装置にダウンロードすることができる。ネットワークは、銅伝送ケーブル、光ファイバ伝送、無線伝送、ルータ、ファイアウォール、スイッチ、ゲートウェイコンピュータ、及び/またはエッジサーバを含むことができる。各計算/処理装置内のネットワークアダプタまたはネットワークインタフェースは、ネットワークからコンピュータ可読プログラム指令を受信し、各計算/処理装置内のコンピュータ可読記憶媒体に記憶するためにコンピュータ可読プログラム指令を転送する。
【0070】
本開示の動作を実行するためのコンピュータプログラム指令は、アセンブラ指令、指令セットアーキテクチャ(ISA)指令、機械指令、機械関連指令、マイクロコード、ファームウェア指令、状態設定データ、またはオブジェクト指向プログラミング言語(Smalltalk、C++など)を含む1つまたは複数のプログラミング言語の任意の組み合わせで書かれたソースコードまたはオブジェクトコード、ならびに通常のプログラムプログラミング言語(「C」言語または類似のプログラミング言語など)であってもよい。コンピュータ可読プログラム指令は、完全にユーザコンピュータ上で実行されてもよく、部分的にユーザコンピュータ上で実行されてもよく、独立したソフトウェアパッケージとして実行されてもよく、部分的にユーザコンピュータ上で部分的にリモートコンピュータ上で実行されてもよく、または完全にリモートコンピュータまたはサーバ上で実行されてもよい。リモートコンピュータに関連する場合、リモートコンピュータは、ローカルエリアネットワーク(LAN)またはワイドエリアネットワーク(WAN)を含む任意の種類のネットワークを介してユーザコンピュータに接続されてもよいし、(例えば、インターネットサービスプロバイダを使用してインターネットを介して)外部コンピュータに接続されてもよい。いくつかの実施形態では、コンピュータ可読プログラム指令の状態情報を利用することにより、例えばプログラマブル論理回路、フィールドプログラマブルゲートアレイ(FPGA)またはプログラマブル論理アレイ(PLA)のような電子回路をカスタマイズし、該電子回路はコンピュータ可読プログラム指令を実行することで、本開示の様々な態様を実現することができる。
【0071】
ここでは、本開示の様々な態様を、本開示の実施形態による方法、装置(システム)、及びコンピュータプログラム製品のフローチャート及び/またはブロック図を参照して説明した。フローチャート及び/またはブロック図の各ブロック、ならびにフローチャート及び/またはブロック図のブロックの組み合わせは、コンピュータ可読プログラム指令によって実現されてもよいことを理解されたい。
【0072】
これらのコンピュータ可読プログラム指令は、汎用コンピュータ、専用コンピュータ、または他のプログラム可能なデータ処理装置の処理ユニットに提供することができ、これにより一種の機器が作出され、これらの指令がコンピュータまたは他のプログラム可能なデータ処理装置の処理ユニットによって実行されると、フローチャート及び/またはブロック図の1つまたは複数のブロックに規定された機能/動作を実現する装置となる。これらのコンピュータ可読プログラム指令をコンピュータ可読記憶媒体に記憶することもでき、これらの指令はコンピュータ、プログラマブルデータ処理装置及び/または他の装置を特定の方式で動作させる。したがって、指令を記憶したコンピュータ可読媒体は製造品を含み、それはフローチャート及び/またはブロック図における1つまたは複数のブロックに規定された機能/動作の様々な態様を実現する指令を含む。
【0073】
コンピュータ可読プログラム指令は、コンピュータが実現するプロセスを生成するように、コンピュータ、他のプログラム可能データ処理装置、または他の装置にロードされて、コンピュータ、他のプログラム可能データ処理装置、または他の装置上で一連の動作ステップを実行し、これにより、コンピュータ、他のプログラム可能データ処理装置、または他の装置上で実行される指令がフローチャート及び/またはブロック図の1つまたは複数のブロックに規定された機能/動作を実現するようにしもよい。
【0074】
図面のフローチャート及びブロック図は、本開示の様々な実施形態によるシステム、方法、及びコンピュータプログラム製品の実現可能なアーキテクチャ、機能、及び動作を示す。これに関して、フローチャートまたはブロック図の各ブロックは、所定の論理機能を実現するための1つまたは複数の実行可能指令を含むモジュール、プログラムセグメントまたは指令の一部を表すことができる。代替的な実現方法として、ブロックに示された機能は、図面に示された順序とは異なる順序で発生してもよい。例えば、2つの連続するブロックは、実際には実質的に並行して実行されてもよく、関連する機能に応じて逆の順序で実行されることもある。ブロック図及び/またはフローチャートにおける各ブロック、並びにブロック図及び/またはフローチャートにおけるブロックの組み合わせは、特定の機能または動作を実行する専用のハードウェアベースのシステムによって実現されてもよく、または専用のハードウェアとコンピュータ指令との組み合わせによって実現されてもよいことにも留意されたい。
【0075】
以上、本開示の実施形態について説明したが、上記の説明は例示であって、網羅的なものではなく、これらに限定されるものではない。説明した各実施形態の範囲と精神から逸脱しない場合、多くの修正と変更は当業者にとって自明である。本明細書で使用された用語は、本明細書で開示される実施形態を当業者が理解できるように、実施形態の原理、実際の適用、または市場における技術の改良を最もよく解釈することを目的として選択されたものである。
図1
図2
図3
図4
図5
図6
図7
【外国語明細書】