(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024155773
(43)【公開日】2024-10-31
(54)【発明の名称】GPUシェーダコードのコードカバレッジを判定するためのシステム及び方法
(51)【国際特許分類】
G06F 11/36 20060101AFI20241024BHJP
G06F 11/30 20060101ALI20241024BHJP
【FI】
G06F11/36 176
G06F11/30 140D
【審査請求】未請求
【請求項の数】3
【出願形態】OL
【外国語出願】
(21)【出願番号】P 2024063415
(22)【出願日】2024-04-10
(31)【優先権主張番号】202311029082
(32)【優先日】2023-04-21
(33)【優先権主張国・地域又は機関】IN
(31)【優先権主張番号】18/334,246
(32)【優先日】2023-06-13
(33)【優先権主張国・地域又は機関】US
(71)【出願人】
【識別番号】500575824
【氏名又は名称】ハネウェル・インターナショナル・インコーポレーテッド
【氏名又は名称原語表記】Honeywell International Inc.
(74)【代理人】
【識別番号】100118902
【弁理士】
【氏名又は名称】山本 修
(74)【代理人】
【識別番号】100106208
【弁理士】
【氏名又は名称】宮前 徹
(74)【代理人】
【識別番号】100196508
【弁理士】
【氏名又は名称】松尾 淳一
(74)【代理人】
【識別番号】100138759
【弁理士】
【氏名又は名称】大房 直樹
(72)【発明者】
【氏名】プレム クマール
(72)【発明者】
【氏名】シャンカール クディミ
(72)【発明者】
【氏名】ヴェンカット ゴリパルティ
(72)【発明者】
【氏名】パヴァン クマール デサイ
(72)【発明者】
【氏名】アララクッペ ラメゴウダ ヨゲシャ
【テーマコード(参考)】
5B042
【Fターム(参考)】
5B042HH10
5B042HH18
5B042NN09
(57)【要約】 (修正有)
【課題】GPUシェーダコードカバレッジを判定するシステム及び方法を提供する。
【解決手段】方法は、ユーザからシステムに提供されるGPUシェーダコードを受信することと、ドロップダウンメニューやリストなどから選択することでユーザから提供される必要とされる構造コードカバレッジのレベルの選択する入力を受信することと、インストルメントされたGPUシェーダコードを生成することと、表示されたグラフィックオブジェクトとGPUシェーダコードのラインとの間の相関を含むマッピング情報を記憶することと、実行可能なインストルメントされたGPUシェーダコードを生成することと、要件ベースのテスト中にGPUシェーダコードの実行を追跡するために使用する表示デバイスのグラフィックオブジェクトの属性のステータスを含むヒットファイルを受信することと、GPUシェーダコードのための構造コードカバレッジレポートを生成することと、を含む。
【選択図】
図2
【特許請求の範囲】
【請求項1】
方法であって、
グラフィックス処理ユニット(GPU)によって実行されるべきシェーダコードの各ラインについて、フラグを追加することと、
前記GPUによって実行されるべきシェーダコードの各ラインについて、表示デバイス上に表示されるべき少なくとも1つのグラフィックオブジェクトを作成することと、
要件ベースのテストの実行後に前記表示デバイス上に表示されたグラフィックオブジェクトの1つ以上の属性のステータスを含む1つ以上のヒットファイルを受信することと、
前記1つ以上のヒットファイルと、前記シェーダコードと前記表示されたグラフィックオブジェクトとの間のマッピングとに基づいて、前記シェーダコードのための構造コードカバレッジレポートを生成することと、を含む、方法。
【請求項2】
システム(100、600、650)であって、
1つ以上のプロセッサ(102)と、
前記1つ以上のプロセッサ(102)に通信可能に結合された非一時的コンピュータ可読媒体(104)と、を備え、前記非一時的コンピュータ可読媒体(104)は、1つ以上の命令(106、109)を記憶しており、前記命令は、前記1つ以上のプロセッサ(102)によって実行されると、1つ以上のプロセッサ(102)に、
グラフィックス処理ユニット(GPU)によって実行されるべきシェーダコード(105)の各ラインについて、フラグを追加させ、
前記GPUによって実行されるべきシェーダコード(105)の各ラインについて、表示デバイス(620、656)上に表示されるべき少なくとも1つのグラフィックオブジェクトを作成させ、
要件ベースのテストの実行後に前記表示デバイス(620、656)上に表示されたグラフィックオブジェクトの1つ以上の属性のステータスを含む1つ以上のヒットファイル(110)を受信させ、
前記1つ以上のヒットファイル(110)と、前記シェーダコード(105)と前記表示されたグラフィックオブジェクトとの間のマッピングとに基づいて、前記シェーダコード(105、602)のための構造コードカバレッジレポート(111、610)を生成させる、システム(100、600、650)。
【請求項3】
方法であって、
グラフィックス処理ユニット(GPU)によって実行されるべきインストルメントされたシェーダコードと、要件ベースのテストのスクリプトとを受信することであって、前記インストルメントされたシェーダコードは、前記インストルメントされたシェーダコードの各ラインについて、1つ以上のフラグを含む、受信することと、
前記要件ベースのテストの前記スクリプトを実行することと、
前記インストルメントされたシェーダコードの各ラインについて、それぞれのグラフィックオブジェクトを表示デバイス上に表示することと、
前記インストルメントされたシェーダコードの各それぞれのラインが前記要件ベースのテストの前記スクリプトの前記実行中に実行されることに応答して、前記インストルメントされたシェーダコードの前記各それぞれのラインについて、それぞれの表示されたグラフィックオブジェクトの属性を変更することと、
前記要件ベースのテストの前記スクリプトの前記実行の完了に応答して、1つ以上のヒットファイルを出力することと、を含み、前記1つ以上のヒットファイルが、前記インストルメントされたシェーダコードの各それぞれのラインについて、各それぞれの表示されたグラフィックオブジェクトの前記属性のステータスを含む、方法。
【発明の詳細な説明】
【技術分野】
【0001】
(関連出願の相互参照)
本出願は、2023年6月13日に出願された米国特許出願第18/334246号(本願と同じ名称)に対する優先権を主張し、これは、2023年4月21日に出願されたインド仮出願第202311029082号(本願と同じ名称)に対する優先権を主張するものであり、その内容は、その全体が参照により本明細書に組み込まれる。
【背景技術】
【0002】
航空機搭載システムに実装されるソフトウェアの場合、ソフトウェア認証ガイドライン(例えば、RTCA DO-178B/C)は、コードが要件ベースのテストによってカバーされていることを実証する証拠を必要とする。典型的には、ソフトウェアがターゲットシステムにロードされ、ソフトウェアが全ての要件を満たしているかどうかを判定するために、要件ベースのテストが行われる。ソフトウェアが全ての要件を満たすことを示すことに加えて、意図しない機能、無関係なコード、又はデッドコードをアプリケーションが含まないことを実証するために、構造コードカバレッジデータも必要である。DO-178C準拠を適用するときに期待されることは、コードの100パーセントが要件ベースのテスト中に実行されたことである。これが可能でない場合(例えば、通常の条件下で実行することができない防御的コードの場合)、コードがテストされない理由を正当化する必要がある。
【0003】
ソフトウェアの重要度が高いほど、構造コードカバレッジデータに対する要件が大きくなる。ソフトウェアの重要度は、多くの場合、航空機搭載システムの設計保証レベル(Design Assurance Level、DAL)に対応する安全レベルに対応する。DAL Cの場合、提供される構造コードカバレッジデータは、ステートメントカバレッジを示さなければならず、これは、コード内の全てのステートメントが要件ベースのテスト中に少なくとも1回呼び出されていることを必要とする。DAL Bの場合、提供される構造コードカバレッジデータは、決定カバレッジを示さなければならず、これは、プログラム内の入口及び出口の全てのポイントが少なくとも1回呼び出され、プログラム内の全ての制御ステートメント(分岐点)が少なくとも1回全ての可能な結果(分岐)を取り、プログラム内の全ての非定数ブール式が真及び偽の両方の結果に評価されていることを必要とする。DAL Aの場合、提供される構造カバレッジデータは、修正条件/決定カバレッジ(Modified Condition/Decision Coverage、MC/DC)を示さなければならず、これは、決定カバレッジを必要とし、プログラム内のブール式における全ての非定数条件が真及び偽の両方の結果に評価され、プログラム内のブール式における全ての非定数条件がその式の結果に独立して影響を及ぼすことが示されていることも必要とする。
【0004】
典型的な自動構造コードカバレッジツールは、中央処理ユニット(Central Processing Unit、CPU)上で実行されるソースコードの構造コードカバレッジデータを生み出すために使用される。生み出された構造コードカバレッジデータは、テストコンピュータに送り返されなければならず、これは通常、カバレッジヒットポイントがテストコンピュータにストリームバックされることを伴う。
【0005】
自動構造コードカバレッジ分析ツールは、概して、要件ベースのテスト中に構造コードカバレッジデータを生成するために使用される。構造コードカバレッジ分析ツールは、実行されるコードのラインを追跡するための命令のライン(ヒットポイント)であるプローブをソースコードに追加することによってソースコードをインストルメントする。構造コードカバレッジツールコードがソースコードに追加され、最終的な実行可能なファイルが出力され、ターゲットシステム上で要件ベースのテストが実行される。要件ベースのテストが起動されているとき、構造コードカバレッジデータに使用されるカバレッジポイントが生成される。
【0006】
構造コードカバレッジは、各タイプのテストが要件ベースのテストを表す限り、システムテスト、統合テスト、及びより低いレベル(コンポーネント)のテストから収集することができる。より高いレベルのテスト(システムテストなど)は、概して、より低いレベルのテスト(コンポーネントテストなど)よりも、テストごとにより多くの構造コードカバレッジを生み出す。したがって、まだカバーされていないコードのセクションをカバーするために、より低いレベルのテストを起動する前に、より高いレベルのテストを通じて可能な限り多くのカバレッジを生成することが一般的な慣行である。
【発明の概要】
【0007】
いくつかの態様では、方法は、グラフィックス処理ユニット(graphics processing unit、GPU)によって実行されるべきシェーダコードの各ラインについて、フラグを追加することを含む。方法は、GPUによって実行されるべきシェーダコードの各ラインについて、表示デバイス上に表示されるべき少なくとも1つのグラフィックオブジェクトを作成することを更に含む。方法は、要件ベースのテストの実行後に表示デバイス上に表示されたグラフィックオブジェクトの1つ以上の属性のステータスを含む1つ以上のヒットファイルを受信することを更に含む。方法は、1つ以上のヒットファイルと、シェーダコードと表示されたグラフィックオブジェクトとの間のマッピングとに基づいて、シェーダコードのための構造コードカバレッジレポートを生成することを更に含む。
【0008】
いくつかの態様では、システムは、1つ以上のプロセッサと、1つ以上のプロセッサに通信可能に結合された非一時的コンピュータ可読媒体とを含む。非一時的コンピュータ可読媒体は、1つ以上の命令を記憶しており、命令は、1つ以上のプロセッサによって実行されると、1つ以上のプロセッサに、グラフィックス処理ユニット(GPU)によって実行されるべきシェーダコードの各ラインについて、フラグを追加させ、GPUによって実行されるべきシェーダコードの各ラインについて、表示デバイス上に表示されるべき少なくとも1つのグラフィックオブジェクトを作成させ、要件ベースのテストの実行後に表示デバイス上に表示されたグラフィックオブジェクトの1つ以上の属性のステータスを含む1つ以上のヒットファイルを受信させ、1つ以上のヒットファイルと、シェーダコードと表示されたグラフィックオブジェクトとの間のマッピングとに基づいて、シェーダコードのための構造コードカバレッジレポートを生成させる。
【0009】
いくつかの態様では、方法は、グラフィックス処理ユニット(GPU)によって実行されるべきインストルメントされたシェーダコードと、要件ベースのテストのスクリプトとを受信することを含む。インストルメントされたシェーダコードは、インストルメントされたシェーダコードの各ラインについて、1つ以上のフラグを含む。方法は、要件ベースのテストのスクリプトを実行することを更に含む。方法は、インストルメントされたシェーダコードの各ラインについて、それぞれのグラフィックオブジェクトを表示デバイス上に表示することを更に含む。方法は、インストルメントされたシェーダコードの各それぞれのラインが要件ベースのテストのスクリプトの実行中に実行されることに応答して、インストルメントされたシェーダコードの各それぞれのラインについて、それぞれの表示されたグラフィックオブジェクトの属性を変更することを更に含む。方法は、要件ベースのテストのスクリプトの実行の完了に応答して、1つ以上のヒットファイルを出力することを更に含み、1つ以上のヒットファイルは、インストルメントされたシェーダコードの各それぞれのラインについて、各それぞれの表示されたグラフィックオブジェクトの属性のステータスを含む。
【図面の簡単な説明】
【0010】
図面は例示的な実施形態のみを示し、したがって範囲を限定するものとみなされるべきではないことを理解した上で、例示的な実施形態を添付の図面を使用して更なる特殊性及び詳細とともに説明する。
【
図2】グラフィックス処理ユニット(GPU)シェーダコードのための構造コードカバレッジを判定する例示的な方法のフロー図を例解する。
【
図3】インストルメントされたGPUシェーダコードを生成する例示的な方法のフロー図を例解する。
【
図4】GPUシェーダコードのための構造コードカバレッジデータを生成する例示的な方法のフロー図を例解する。
【
図5A】GPUシェーダコードのための構造コードカバレッジを示す例示的なインストルメントされたコード及びグラフィックオブジェクトを例解する。
【
図5B】GPUシェーダコードのための構造コードカバレッジを示す例示的なインストルメントされたコード及びグラフィックオブジェクトを示す図である。
【
図6A】要件ベースのテストを行い、GPUシェーダコードのための構造コードカバレッジを判定するための例示的なターゲット環境及びシミュレーション環境を例解する。
【
図6B】要件ベースのテストを行い、GPUシェーダコードのための構造コードカバレッジを判定するための例示的なターゲット環境及びシミュレーション環境を例解する。
【0011】
一般的方法に従って、記載された様々な特徴は一定の縮尺で描かれているのではなく、例示的な実施形態に関連する特定の特徴を強調するように描かれている。
【発明を実施するための形態】
【0012】
以下の詳細な説明では、本明細書の一部を形成する添付の図面を参照し、図面には特定の例解的な実施形態を例解として示す。しかしながら、他の実施形態を利用してもよく、論理的、機械的、及び電気的な変更をしてもよいことを理解すべきである。更に、図面及び明細書に提示された方法は、個々の工程が実施され得る順序を限定するものとして解釈されるべきではない。したがって、以下の詳細な説明は、限定的な意味で解釈されるべきではない。
【0013】
ビデオゲーム及び他のグラフィックアプリケーションは、他のプログラムよりもはるかに多くの処理能力を必要とし、多数のピクセルごとの演算を行わなければならない。画面上の全ての単一ピクセルが計算される必要があり、この計算は、計算がGPUなしで起動される場合、複数の並列CPUを必要とする。GPU上で起動中のコードが、グラフィックス生成アプリケーションによって指定されたプリミティブをレンダリングするために使用され、GPUは、プリミティブ描画オブジェクト(線、点、三角形)のシーケンスを、画面又は表示デバイス上に表示するためにフレームバッファ内のレンダリングされたピクセルに変換するように構成される。GPUは、高計算コードにも同様に使用することができる。
【0014】
最新のコックピットもまた、実行されるべき多くのグラフィック集約型機能を必要とし、CPUに加えてGPUがより頻繁に利用されている。次世代アビオニクスで使用される高度グラフィックスドライバ(例えば、Vulkan)は、シェーダコードを使用する。シェーダコードは、画像が画面に描画される前に画像を操作するために、通常グラフィックスカード上に見られる、GPU上で実行されるコードの一部分である。シェーダコードは、より従来的なプログラミング言語ではなく、GPU固有のプログラミング言語(例えば、ハイレベルシェーダ言語(High-Level Shader Language、HLSL))で記述される。GPU上で実行されるオブジェクトレンダリングコードは、上記で説明したのと同様に要件ベースのテストを受ける必要があり、構造コードカバレッジデータは、要件ベースのテスト中にオブジェクトレンダリングコードについても生成される必要がある。
【0015】
GPUシェーダコードのための構造コードカバレッジデータは、GPUのためのソースコードを手動で実行し、要件ベースのテストのある部分がパスされるときにシェーダコードの一部がカバーされると仮定することによって生み出され得る。しかしながら、このアプローチには多くの問題がある。このアプローチは、労働集約的であり、ヒューマンエラーを起こしやすく、コストを増加させ、開発のためのサイクル時間を増加させる。また、多くの認証エンティティは、手動分析手法を受け入れたがらず、要件ベースのテスト中にGPUシェーダコードのための構造コードカバレッジデータを自動的に生成する適格なツールが使用されることを主張するであろう。
【0016】
いくつかのシステムでは、システムのCPU及びGPUは双方向に通信し、GPUは、CPUによって処理され得る共有場所にデータを記憶するために使用されることができる。他のシステムでは、システムのCPUとGPUとの間の通信は単方向であり、CPUはGPUによってレンダリングされるデータを送信するが、GPUからCPUへの通信はない。いずれのタイプのシステムについても、GPUシェーダコードをインストルメントするための、又はGPUシェーダコードのための構造コードカバレッジデータを自動的に生成するための現在利用可能なツールは存在しない。更に、GPUは通常、構造コードカバレッジデータを記憶するのに十分なメモリを有さない。
【0017】
本明細書で説明する技法は、要件ベースのテストの実行からのGPUシェーダコードのための構造コードカバレッジデータの自動生成を可能にする。本システム及び方法は、要件ベースのテスト中に実行されるべきGPUシェーダコードの各ラインについて、GPUシェーダコードにフラグを追加し、表示デバイス上に少なくとも1つのグラフィックオブジェクトを作成する。要件ベースのテストの実行中に、表示されたグラフィックオブジェクトの属性は、GPUシェーダコードの関連する部分が実行されるとき、異なるフラグに基づいて変更される。本システム及び方法は、表示されたグラフィックオブジェクトの属性のステータスと、GPUシェーダコードと表示されたグラフィックオブジェクトとの間の記憶された対応関係とを含む受信されたヒットファイルに基づいて、GPUシェーダコードのための構造コードカバレッジレポートを生成することを含む。
【0018】
図1に、本明細書で説明するGPUシェーダコードのための構造コードカバレッジレポートを生成するための技法が実装され得る例示的なシステム100のブロック図を例解する。システム100は、1つ以上のプロセッサ102及び少なくとも1つのメモリ104を含む。
図1に示す例では、メモリ104は、シェーダコード構造コードカバレッジツール命令106を含む。1つ以上のプロセッサ102は、シェーダコード構造コードカバレッジレポート111を生成するために、シェーダコード構造コードカバレッジツール命令106を実行するように構成される。
【0019】
システム100は、シェーダコード構造コードカバレッジツール命令106を実行することによって評価されるべきGPUシェーダコード105を受信するように構成される。いくつかの例では、GPUシェーダコード105は、ユーザによってシステム100にロードされる。いくつかの例では、GPUシェーダコード105は、インターフェース(例えば、ウェブインターフェース)を介してユーザによって提供される。
【0020】
いくつかの例では、システム100は、GPUシェーダコードのための構造コードカバレッジレポート111のための構造コードカバレッジの必要なレベルの指示をユーザから受信するように構成される。いくつかの例では、構造コードカバレッジのレベルは、様々な設計保証レベル(DAL)に対応する。上記で説明したように、DAL Aは最高レベルであり、MC/DCが示されることを必要とし、DAL Bは中間レベルであり、決定カバレッジが示されることを必要とし、DAL Cは最低レベルであり、ステートメントカバレッジが示されることを必要とする。いくつかの例では、1つ以上のプロセッサ102は、構造コードカバレッジレポートに必要とされるDALレベルを示す入力をユーザから受信するように構成される。いくつかの例では、ユーザは、ドロップダウンメニュー又はリストから構造コードカバレッジの必要なレベル(例えば、DALレベル)を選択する。他の例では、ユーザは、DALレベルをプロンプトに入力することによって、構造コードカバレッジの必要なレベルを示すことができる。構造コードカバレッジの必要なレベルを提供するための他の技法も使用できることを理解されたい。
【0021】
他の例では、シェーダコード構造コードカバレッジツール命令106の複数のバージョンがシステム100のメモリ104に記憶され、シェーダコード構造コードカバレッジツール命令106の各それぞれのバージョンは、構造コードカバレッジレポート特定のレベルを生成するように構成される。例えば、シェーダコード構造コードカバレッジツール命令106の第1のバージョンは、DAL A構造コードカバレッジレポートを生成するように構成され、シェーダコード構造コードカバレッジツール命令106の第2のバージョンは、DAL Bコードカバレッジレポートを生成するように構成される。いくつかの例では、ユーザは、所望のレベルを有する、使用すべきシェーダコード構造コードカバレッジツール命令106の特定のバージョンを選択する。例えば、ユーザは、構造コードカバレッジの必要なレベルに向けられた構造コードカバレッジツールのバージョンを選択する。
【0022】
シェーダコード構造コードカバレッジツール命令106を実行するとき、1つ以上のプロセッサ102は、システム100に提供されたGPUシェーダコード105から実行可能なインストルメントされたGPUシェーダコード107を生成するように構成される。実行可能なインストルメントされたGPUシェーダコード107は、段階的に生成される。いくつかの例では、インストルメントされたGPUシェーダコードは、最初に、GPUシェーダコード105に1つ以上のフラグを追加し、GPUシェーダコード105の各ラインについて、表示デバイス上に表示されるべき少なくとも1つのグラフィックオブジェクトを作成することによって生成される。いくつかの例では、決定カバレッジ又はMC/DCが構造コードカバレッジレポート111に必要とされるとき、GPUシェーダコード105の少なくとも1つのラインについて複数のグラフィックオブジェクトが作成される。構造コードカバレッジのレベルが選択可能である例では、1つ以上のプロセッサは、GPUシェーダコード105にフラグを追加し、選択されたレベルと一致する様式で表示デバイス上に表示されるべきグラフィックオブジェクトを作成又は割り当てるように構成される。例えば、DAL Cが選択された場合、1つ以上のプロセッサ102は、ステートメントカバレッジ情報を示す構造コードカバレッジレポート111を生み出すために必要なフラグを追加するように構成される。GPUシェーダコード105をインストルメントするためのプロセスは、
図2~
図3に関して以下で更に説明される。
【0023】
インストルメンテーション中に、GPUシェーダコード105のラインと表示デバイス上に表示されるべきグラフィックオブジェクトとの間の対応関係を示すマッピング情報108も生成される。いくつかの例では、マッピング情報108は、GPUシェーダコード105の各ラインについてのステートメント又は決定分岐と、表示デバイス上に表示されるべきグラフィックオブジェクトとの間の対応関係を示す。いくつかの例では、マッピング情報108の範囲は、構造コードカバレッジの必要なレベルに依存する。例えば、DAL Cレベルが必要とされる場合、マッピング情報108は、GPUシェーダコード105のステートメントと、表示デバイス上に表示されるべき作成されたグラフィックオブジェクトとの間の対応関係を示す。
【0024】
インストルメントされたGPUシェーダコードから、1つ以上のプロセッサ102は、インストルメントされたGPUシェーダコードをコンパイル及びリンクすることによって、実行可能なインストルメントされたGPUシェーダコード107を生成するように構成される。いくつかの例では、コンパイル及びリンクは別々の段階で実施される。他の例では、コンパイル及びリンクは単一の段階で実施される。
【0025】
図1に示される例では、システム100は、実行可能なインストルメントされたGPUシェーダコード107を出力するように構成される。いくつかの例では、実行可能なインストルメントされたGPUシェーダコード107は、要件ベースのテストのスクリプトを用いた実行のために、別個のターゲットハードウェア(例えば、CPU及びGPUを有する別個のシステム)に出力される。他の例では、実行可能なインストルメントされたGPUシェーダコード107は、要件ベースのテストのスクリプトを用いた実行のために、シミュレートされたハードウェアに出力される。そのような例では、ターゲットハードウェアは、ハードウェアシミュレーションツール109を使用してシステム100によってシミュレートされる。
【0026】
実行可能なインストルメントされたGPUシェーダコード107は、要件ベースのテスト中にターゲットハードウェア又はシミュレートされたターゲットハードウェアによって実行されると、ターゲットシステム又はシミュレートされたターゲットハードウェアの表示デバイスに、GPUシェーダコードの各ラインについて、グラフィックオブジェクトを表示させる。いくつかの例では、表示デバイス上に表示される各グラフィックオブジェクトは、要件ベースのテストのスクリプトの実行前にデフォルト状態にある1つ以上の属性を含む。1つ以上の属性は、色、形状、サイズ、及び/又はパターンを含むことができる。例えば、表示デバイス上に表示される各グラフィックオブジェクトは、最初に表示されるとき、赤色のデフォルト色を有することができる。
【0027】
GPUシェーダコードのそれぞれのラインが要件ベースのテスト中に実行されることに応答して、GPUのそれぞれのラインについてグラフィックオブジェクトの少なくとも1つの属性が変更される。例えば、GPUシェーダコードのそれぞれのラインが要件ベースのテスト中に実行される場合、GPUシェーダコードのそのラインについてそれぞれのグラフィックオブジェクトの色は、ターゲットハードウェア又はシミュレートされたターゲットハードウェアの表示デバイス上で赤色から緑色に変更される。
【0028】
いくつかの実施例では、グラフィックオブジェクトは、要件ベースのテストのスクリプトの全ての実行を完了する前に、表示デバイス上に表示される。例えば、グラフィックオブジェクトは、要件ベースのテストのスクリプトの全ての実行の前に、1つ以上のデフォルト属性とともに表示デバイス上に最初に表示することができる。そのような例では、グラフィックオブジェクトに対応するGPUシェーダコードのラインが要件ベースのテスト中に実行されるとき、デフォルト属性のうちの少なくとも1つが、表示デバイス上に表示されたグラフィックオブジェクトについて変更される。このようにして、グラフィックオブジェクトの属性変更は、GPUシェーダコードの特定のラインについて構造コードカバレッジデータを提供するために使用され得る。
【0029】
要件ベースのテストのスクリプトの実行を完了した後、表示デバイス上の画像は、デフォルト属性又は変更された属性のいずれかを有するグラフィックオブジェクトの全てを含む。いくつかの例では、ターゲットハードウェア又はシミュレートされたターゲットハードウェアは、表示デバイス上に表示されるグラフィックオブジェクトの属性のステータスを含む1つ以上のヒットファイル110を出力するように構成される。いくつかの例では、ターゲットハードウェア又はシミュレートされたターゲットハードウェアによって出力される1つ以上のヒットファイル110は、グラフィックオブジェクトを含む表示デバイスのピクセルを示す画像ファイルを含む。
【0030】
システム100は、1つ以上のヒットファイル110を受信し、1つ以上のヒットファイル110及びマッピング情報108に基づいてシェーダコード構造コードカバレッジレポート111を生成するように構成される。いくつかの例では、1つ以上のプロセッサ102は、1つ以上のヒットファイル110から構造コードカバレッジデータを抽出し、メモリ104に記憶されたマッピング情報108を使用して構造コードカバレッジデータをGPUシェーダコードにマッピングするように構成される。
【0031】
いくつかの例では、1つ以上のプロセッサ102は、1つ以上のヒットファイル内の各グラフィックオブジェクトの属性のステータスを判定することによって、1つ以上のヒットファイル110から構造コードカバレッジデータを抽出するように構成される。それぞれのグラフィックオブジェクトの属性のステータスは、そのグラフィックオブジェクトに関連付けられたGPUシェーダコードのそれぞれのラインが要件ベースのテスト中に実行されたかどうかを示す。例えば、緑色は、GPUシェーダコードのそれぞれのラインが要件ベースのテスト中に実行された(カバーされた)ことを示すことができ、黄色は、GPUシェーダコードのそれぞれのラインが要件ベースのテスト中に部分的に実行された(部分的にカバーされた)ことを示すことができ、赤色は、GPUシェーダコードのそれぞれのラインが要件ベースのテスト中に実行されなかった(カバーされなかった)ことを示すことができる。このプロセスは、カバレッジヒットマップを抽出することとも呼ばれ得、ここで、ヒットマップは、GPUシェーダコードの1つ以上のラインについて構造コードカバレッジデータを含む。
【0032】
上記で説明したように、マッピング情報108は、GPUシェーダコード105のラインと、表示デバイス上に表示されるべきグラフィックオブジェクトとの間の対応関係を含む。1つ以上のプロセッサ102は、各グラフィックオブジェクトの属性のステータスをGPUシェーダコード105の対応するラインにマッピングし、シェーダコード構造コードカバレッジレポート111を生成するように構成される。
【0033】
シェーダコード構造コードカバレッジレポート111のための構造コードカバレッジのレベルは、上記で説明したように、ユーザによって選択されたレベルに依存する。シェーダコード構造コードカバレッジレポート111のフォーマットは、要件に応じて変わり得る。例えば、シェーダコード構造コードカバレッジレポート111は、HTML又はTXTファイルとして生成され得る。しかしながら、任意のフォーマットにおいても、シェーダコード構造コードカバレッジレポート111は、要件ベースのテスト実行中にGPUシェーダコード(又はステートメント及び決定分岐)のラインが実行されたか否かを示す。
【0034】
図2は、GPUシェーダコードのための構造コードカバレッジデータを判定する例示的な方法200のフロー図を例解する。
図1の例示的なシステムに関して上記で説明した共通の特徴は、方法200に関して説明した特徴と同様の特性を含むことができ逆もまた同様。いくつかの例では、方法200のブロックは、シェーダコード構造コードカバレッジツール命令106を実行するとき、システム100の1つ以上のプロセッサ102によって実施される。
【0035】
図2のフロー図のブロックは、説明を容易にするために概して順次的に配置されている。しかしながら、この配置は単に例示的なものであり、方法200(及び
図2に示されているブロック)に関連付けられた処理は、異なる順序で起こり得る(例えば、ブロックに関連付けられた処理のうちの少なくとも一部は、イベント駆動方式で並行に実施される)ことが理解されるべきである。
【0036】
方法200は、GPUシェーダコードを受信すること(ブロック202)を含む。いくつかの例では、GPUシェーダコードは、1つ以上の入力を介してユーザによってシステム100に提供される。いくつかの例では、1つ以上の入力は、ウェブインターフェースなどを含む。
【0037】
方法200は、必要とされる構造コードカバレッジのレベルを選択する入力を受信すること(ブロック204)を更に含む。いくつかの例では、必要とされる構造コードカバレッジのレベルを選択する入力は、ユーザによって提供される。いくつかのそのような例では、ユーザは、ドロップダウンメニュー、リストなどから構造コードカバレッジの特定のレベルを選択することによって入力を提供する。他の例では、必要とされる構造コードカバレッジのレベルを選択する入力は、構造コードカバレッジの各レベルについて特に構成されるシェーダコード構造コードカバレッジツールの特定のバージョンの選択を含む。いくつかの例では、選択され得る構造コードカバレッジのレベルは、異なる設計保証レベル(DAL)を含む。例えば、ドロップダウンメニュー又はリストは、選択のためのオプションDAL A、DAL B、及びDAL Cを含むことができる。いくつかの例では、選択され得る構造コードカバレッジのレベルは、ステートメントカバレッジ、決定カバレッジ、及びMC/DCを含む。構造コードカバレッジのレベルについての他のオプションも含まれ得る。
【0038】
方法200は、インストルメントされたGPUシェーダコードを生成すること(ブロック206)を更に含む。いくつかの例では、インストルメントされたGPUシェーダコードを生成することは、各ラインGPUシェーダコードにいついてGPUシェーダコードにフラグを追加することを含む。フラグは、GPUシェーダコードの対応するラインが要件ベースのテスト中に実行されたときに実行されるコードの一部分である。いくつかの例では、インストルメントされたGPUシェーダコードを生成することは、GPUシェーダコードの各ラインについて、表示デバイス上に表示されるべき少なくとも1つのグラフィックオブジェクトを作成することを更に含む。いくつかの例では、複数のグラフィックオブジェクトが、GPUシェーダコードの決定分岐のためのGPUシェーダコードの特定のラインのために作成される。いくつかの例では、インストルメントされたGPUシェーダコードを生成することは、ブロック204に関して上記で説明した構造コードカバレッジの選択されたレベルに基づく。例えば、DAL C(ステートメントカバレッジ)が選択された場合、インストルメントされたGPUシェーダコードは、ステートメントカバレッジ要件を満たす構造コードカバレッジを提供するために、フラグを追加し、グラフィックオブジェクトを作成する。インストルメントされたGPUシェーダコードを生成するためのプロセスは、以下の
図3に関して更に説明される。
【0039】
方法200は、マッピング情報を記憶すること(ブロック208)を更に含む。いくつかの例では、マッピング情報は、表示されたグラフィックオブジェクトとGPUシェーダコードのラインとの間の相関を含む。いくつかの例では、マッピング情報は、表示されたグラフィックオブジェクトと、GPUシェーダコード中のステートメント及び決定分岐との間の相関を含む。いくつかの例では、マッピング情報は、(例えば、ブロック206及び
図3に関して説明したように)インストルメントされたGPUシェーダコードを生成するプロセス中に生成される。マッピング情報は、GPUシェーダコードのための構造コードカバレッジレポートを生成するときにマッピング情報がシステムによってアクセス可能である限り、システム(例えば、ホストコンピュータ)のメモリ又は他の場所に記憶され得る。
【0040】
方法200は、実行可能なインストルメントされたGPUシェーダコードを生成すること(ブロック210)を更に含む。いくつかの例では、実行可能なインストルメントされたGPUシェーダコードを生成することは、インストルメントされたGPUシェーダコードをコンパイル及びリンクすることを含む。実行可能なインストルメントされたGPUシェーダコードは、要件ベースのテストのための実行のために、ターゲットハードウェア又はシミュレートされたターゲットハードウェアに出力され得る。
【0041】
方法200は、ヒットファイルを受信すること(ブロック212)を更に含む。ヒットファイルは、要件ベースのテスト中にGPUシェーダコードの実行を追跡するために使用される表示デバイスのグラフィックオブジェクトの属性のステータスを含む。いくつかの例では、ヒットファイルは、表示デバイス上に表示されたグラフィックオブジェクトを示す画像ファイルであり、これは、GPUシェーダコードの各ラインについて、カバレッジヒットマップを抽出するためにホストコンピュータによって分析され得る。
【0042】
方法200は、GPUシェーダコードのための構造コードカバレッジレポートを生成することを更に含む(ブロック214)。いくつかの例では、GPUシェーダコードのための構造コードカバレッジレポートは、抽出されたカバレッジヒットマップと、メモリに記憶されたマッピング情報とに基づいて生成される。上記で説明したように、いくつかの例では、グラフィックオブジェクトの各々は、GPUシェーダコードのラインに対応する。いくつかの例では、グラフィックオブジェクトの各々は、GPUシェーダコードからのステートメント又は決定分岐に対応する。抽出されたヒットマップからのグラフィックオブジェクトの属性は、特定のステートメント又は決定分岐が、要件ベースのテスト中に完全にカバーされたか、部分的にカバーされたか、又はカバーされなかったかを判定するために使用される。
【0043】
いくつかの例では、構造コードカバレッジレポートは、HTML又はTXTフォーマットで出力される。いくつかの例では、構造コードカバレッジレポートは、ブロック204において選択されたレベルへのGPUシェーダコードの各ラインについて、の構造コードカバレッジデータを含む。いくつかの例では、各ステートメント及び各決定分岐は、それが完全にカバーされたか、部分的にカバーされたか、又はカバーされなかったかに応じた色で表示される。他の例では、カバレッジの指示は、色ではなくテキストで提供される。他の技法を使用して、GPUシェーダコードのライン、ステートメント、又は決定分岐が要件ベースのテスト中に実行されたかどうかを示すこともできる。いくつかの例では、構造コードカバレッジレポートは、構造コードカバレッジの必要なレベルに対する構造コードカバレッジのパーセンテージを含むことができる。例えば、構造コードカバレッジレポートは、ステートメントカバレッジ、決定カバレッジ、又はMC/DCに関連付けられたパーセンテージを含むことができる。
【0044】
図3は、インストルメントされたGPUシェーダコードを生成する例示的な方法300のフロー図を例解する。
図1~
図2の例示的なシステム及び方法に関して上述した共通の特徴は、方法300に関して説明した特性と同様の特性を含むことができ逆もまた同様。いくつかの例では、方法300のブロックは、シェーダコード構造コードカバレッジツール命令106を実行するシステム100によって実施される。
【0045】
図3のフロー図のブロックは、説明を容易にするために概して順次的に配置されている。しかしながら、この配置は単に例示的なものであり、方法300(及び
図3に示されているブロック)に関連付けられた処理は、異なる順序で起こり得る(例えば、ブロックに関連付けられた処理のうちの少なくとも一部は、イベント駆動方式で並行に実施される)ことが理解されるべきである。
【0046】
方法300は、要件ベースのテスト中に実行されるべきステートメント及び決定分岐の数を判定することを含む(ブロック302)。いくつかの例では、実行されるべきステートメント及び決定分岐の数は、必要とされる構造コードカバレッジの選択されたレベルに基づいて判定される(例えば、ブロック204に関して説明したように)。
【0047】
方法300は、GPUシェーダコードにフラグを追加すること(ブロック304)を更に含む。いくつかの例では、GPUシェーダコードにフラグを追加することは、要件ベースのテスト中に実行されるべきステートメント及び決定分岐の判定された数に基づいて、GPUシェーダコードにフラグを追加することを含む。いくつかの例では、要件ベースのテスト中に実行されるべき各それぞれのステートメント及び各それぞれの決定分岐について、それぞれのフラグがGPUシェーダコードに追加される。フラグは、GPUシェーダコード内のそれぞれのステートメント又はそれぞれの決定分岐が要件ベースのテスト中に実行されるときに実行される、インストルメントされたGPUシェーダコードの部分である。
【0048】
方法300は、表示デバイス上に表示されるグラフィックオブジェクトを作成すること(ブロック306)を更に含む。いくつかの例では、グラフィックオブジェクトを作成することは、要件ベースのテスト中に実行されるべきステートメント及び決定分岐の判定された数に基づく。いくつかの例では、要件ベースのテスト中に実行されるべきそれぞれのステートメント及びそれぞれの決定分岐について、それぞれのグラフィックオブジェクトが作成される。いくつかの例では、それぞれのグラフィックオブジェクトは、表示デバイスのそれぞれのピクセルを使用して表示される。グラフィックオブジェクトは、色、形状、サイズ、及び/又はパターンを含むがこれらに限定されない特定の属性を有する。
【0049】
いくつかの例では、方法300は、グラフィックオブジェクトをGPUシェーダコード内のステートメント及び決定分岐と相関させることを更に含む(ブロック308)。いくつかの例では、グラフィックオブジェクトと、GPUシェーダコード内のステートメント及び決定分岐との間の相関は(例えば、各それぞれのグラフィックオブジェクトがそれぞれのピクセルを使用して表示されるとき)、ピクセル情報も含む。相関は、ブロック208に関して上述したように、マッピング情報としてメモリに記憶することができる。
【0050】
図4は、GPUシェーダコードのための構造コードカバレッジデータを生成する例示的な方法400のフロー図を例解する。
図1~
図3の例示的なシステム及び方法に関して上述した共通の特徴は、方法400に関して説明した特性と同様の特性を含むことができ逆もまた同様。いくつかの例では、方法400のブロックは、ホストコンピュータに通信可能に結合されたターゲットハードウェア、又はホストコンピュータ上のシミュレートされたターゲットハードウェアによって実施される。
【0051】
図4のフロー図のブロックは、説明を容易にするために概して順次的に配置されている。しかしながら、この配置は単に例示的なものであり、方法400(及び
図4に示されているブロック)に関連付けられた処理は、異なる順序で起こり得る(例えば、ブロックに関連付けられた処理のうちの少なくとも一部は、イベント駆動方式で並行に実施される)ことが理解されるべきである。
【0052】
方法400は、実行可能なインストルメントされたGPUシェーダコード及び要件ベースのテストのスクリプトを受信すること(ブロック402)を含む。いくつかの例では、実行可能なインストルメントされたGPUシェーダコードは、シェーダコード構造コードカバレッジツールを実行するホストコンピュータから受信される。いくつかの例では、要件ベースのテストのスクリプトもホストコンピュータから受信される。他の例では、要件ベースのテストのスクリプトは、ホストコンピュータとは別個のデバイスから受信される。
【0053】
方法400は、要件ベースのテストのスクリプトを実行すること(ブロック404)を更に含む。いくつかの例では、要件ベースのテストのスクリプトを実行することは、CPU及びGPUを使用して実施される。
【0054】
方法400は、対応するステートメント又は決定分岐が要件ベースのテスト中に実行されることに応答して、グラフィックオブジェクトの属性を変更すること(ブロック406)を更に含む。いくつかの例では、グラフィックオブジェクトの属性は、デフォルト状態から修正された状態に変更される。
図5A~
図5Bは、パターンを有するGPUシェーダコードのための構造コードカバレッジを示すための例示的なインストルメントされたコード及びグラフィックオブジェクトを例解する。
図5Aに示される例では、GPUシェーダコードのステートメント又は決定分岐に関連付けられたグラフィックオブジェクトのパターンは、GPUシェーダコードのステートメント又は決定分岐が要件ベースのテスト中に実行されたことを示す第1のパターンに設定されている。
図5Bに示される例では、GPUシェーダコードのステートメント又は決定分岐に関連付けられたグラフィックオブジェクトのパターンは、GPUシェーダコードのステートメント又は決定分岐が要件ベースのテスト中に実行されなかったことを示す代替のパターンに設定されている(又は代替のパターンのままである)。グラフィックオブジェクトの他の属性も、指示を提供するために使用することができる。例えば、GPUシェーダコードのそれぞれのステートメント又は決定分岐が実行されたことを示すために、グラフィックオブジェクトの色、グラフィックオブジェクトの形状、グラフィックオブジェクトのサイズ、及び/又はグラフィックオブジェクトのパターンをデフォルト状態から別の状態に変更することができる。
【0055】
方法400は、GPUシェーダコードの各ステートメント及び決定分岐について、表示デバイス上にグラフィックオブジェクトを表示すること(ブロック408)を更に含む。いくつかの例では、各グラフィックオブジェクトは、表示デバイスのそれぞれのピクセルを使用して表示される。いくつかの例では、グラフィックオブジェクトを表示するために使用されるピクセルは、他の点では、要件ベースのテストのスクリプトの実行中に表示デバイス上で使用されない。
【0056】
方法400は、ヒットファイルを出力すること(ブロック410)を更に含む。いくつかの例では、ヒットファイルは、シェーダコード構造コードカバレッジツールを実行しているホストコンピュータに出力される。いくつかの例では、ヒットファイルは、関連付けられたステートメント又は決定分岐が要件ベースのテスト中に実行されることに応答してグラフィックオブジェクトについて変更される属性のステータスを含む。ヒットファイルは、1つ以上のヒットファイルをGPUのメモリに記憶することなく、要件ベースのテストのスクリプトの実行の完了に応答して出力される。いくつかの例では、ヒットファイルは、要件ベースのテストの完了後に表示デバイス上に表示されたグラフィックオブジェクトの画像である。
【0057】
図6Aは、要件ベースのテストを行い、GPUシェーダコードのための構造コードカバレッジを判定するための例示的なターゲット環境を例解する。
【0058】
図6Aに示す例では、ホストPC600(例えば、システム100)は、
図1に関して上記で説明したシェーダコード構造コードカバレッジツール命令を実行するように構成される。
図6Aに示される例では、アプリケーションコード602は、表示デバイス上に画像をレンダリングするために使用されるGPUシェーダコードであり、以下ではGPUシェーダコードと呼ばれる。ホストPC600は、
図1~
図3に関して上述したように、インストルメントされたGPUシェーダコード604及びインストルメントされた実行可能なオブジェクティブコード608(「インストルメントされた実行可能なGPUシェーダコード608」とも呼ばれる)を生成するように構成される。
【0059】
図6Aに示す例では、実行可能なインストルメントされたGPUシェーダコード608は、ターゲットハードウェア612のCPUメモリ614上にロードされる。ターゲットハードウェア612のCPUは、プリミティブ頂点属性622をターゲットハードウェア612のGPUレンダリングエンジン616上にプッシュするように構成される。ターゲットハードウェア612のGPUレンダリングエンジン616は、1つ以上の頂点及びピクセルシェーダステージ626を使用して座標を頂点及びピクセルに変換するために、GPUメモリ618に記憶されたシェーダコード624を使用するように構成される。ターゲットハードウェア612のGPUレンダリングエンジン616は、フラグメントステージ628において頂点及びピクセルシェーダステージ626の出力をフラグメント化し、その出力をフレームバッファ630にプッシュするように更に構成され、これはターゲットハードウェア612の表示デバイス620に進む。
【0060】
図6Aに示される例では、ターゲットハードウェア612の表示デバイス620上のピクセルは、シェーダコードのための構造コードカバレッジデータを表示するために割り振られる。いくつかの例では、ターゲットハードウェア612の表示デバイス620上に割り振られた各それぞれのピクセルは、シェーダコードのステートメント又は決定分岐に対応する。要件ベースのテストがターゲットハードウェア612によって実行されるとき、それぞれのピクセルの少なくとも1つの属性は、シェーダコードの対応するステートメント又は決定分岐が実行されることに応答して変更される。例えば、シェーダコードの対応するステートメント又は決定分岐が実行されるとき、ピクセルの色は赤から緑に変更される。
【0061】
要件ベースのテストのスクリプトの実行後、ターゲットハードウェア612は、1つ以上のヒットマップをホストPC600に出力して戻すように構成される。1つ以上のヒットマップは、インストルメントされたシェーダコードの各それぞれのラインについて各それぞれのピクセルの属性のステータスを含む。いくつかの例では、1つ以上のヒットマップは画像ファイルを含む。そのような例では、ホストPC600は、画像を処理してピクセルの各々のステータスを判定するように構成される。
【0062】
図6Aに示される例では、ホストPC600は、各ピクセルの1つ以上の属性のステータスと、シェーダコードとピクセルとの間のマッピングとに基づいて、シェーダコードのための構造コードカバレッジレポート610を生成するように構成される。いくつかの例では、GPUシェーダコードは、必要とされるコードカバレッジのレベルに基づいてインストルメントされ、ホストPC600は、必要とされるコードカバレッジのレベルを示すことを含む構造コードカバレッジレポート610を生成するように構成される。例えば、コードカバレッジのDAL Cレベルの場合、ホストPC600は、GPUシェーダコード内の各ステートメントについてフラグを追加することによってGPUシェーダコードをインストルメントし、ステートメントカバレッジを示す構造コードカバレッジレポート610を生成するように構成される。
【0063】
図6Bは、要件ベースのテストを行い、GPUシェーダコードのための構造コードカバレッジを判定するための例示的なシミュレーション環境を例解する。
図6Aに関して上述したように実行可能なインストルメントされたGPUシェーダコードを出力するのではなく、ホストPC650は、ターゲットハードウェア(CPUメモリ652、GPUメモリ654、及び表示デバイス656)をシミュレートするように構成される。ホストPC650及びホストPC650上でシミュレートされたターゲットハードウェアは、他の点では、
図6Aに関して上述したものと同様に動作するように構成される。
【0064】
本明細書で説明する技法を使用することによって、GPUシェーダコードをインストルメントすることができ、構造コードカバレッジデータをGPUシェーダコードのために自動的に生成することができる。グラフィックオブジェクトを使用して表示デバイス上に構造コードカバレッジデータを表示することによって、本明細書で説明される技法を使用して、GPUメモリ利用率に対する影響が最小化される。本明細書で説明されるシステム及び方法は、手動分析ではなく自動ツールを使用することによって、コスト、サイクル時間、及びエラーの可能性を大幅に低減する。更に、本明細書で説明されるシステム及び方法は、単一のツールを使用して、様々なDALレベルの要件に準拠する構造コードカバレッジレポートの生成を可能にする。
【0065】
様々な態様では、本開示全体にわたって説明されるシステム要素、方法のステップ、又は例(例えば、システム又はその構成要素など)は、中央処理ユニット(CPU)、ググラフィックス処理ユニット(GPU)、フィールドプログラマブルゲートアレイ(Field Programmable Gate Array、FPGA)、特定用途向け集積回路(Application Specific Integrated Circuit、ASIC)、及び/又はそれらの要素、プロセス、若しくは例を実現するためのコードを実行するハードウェアを備える同様のデバイスを含む、1つ以上のコンピュータシステム上に実装されてもよく、当該コードは非一時的データ記憶デバイスに記憶される。これらのデバイスは、様々な方法、プロセスタスク、計算、及び制御機能を実行するためのソフトウェアプログラム、ファームウェア、又は他のコンピュータ可読命令を含む、又はこれらと機能する。
【0066】
これらの命令は、典型的には、コンピュータ可読命令又はデータ構造の格納に使用される任意の適切なコンピュータ可読媒体に格納される。コンピュータ可読媒体は、汎用の又は特殊なコンピュータ又はプロセッサ、又は任意のプログラマブル論理デバイスによってアクセスすることができる、任意の利用可能な媒体として実装することができる。好適なプロセッサ可読媒体としては、磁気又は光学媒体等の記憶媒体又はメモリ媒体を挙げることができる。例えば、記憶媒体又はメモリ媒体は、従来のハードディスク、コンパクトディスク読み出し専用メモリ(Compact Disk - Read Only Memory、CD-ROM)、ランダムアクセスメモリ(Random Access Memory、RAM)(シンクロナスダイナミックランダムアクセスメモリ(Synchronous Dynamic Random Access Memory、SDRAM)、ダブルデータレート(Double Data Rate、DDR)RAM、RAMBUSダイナミックRAM(RAMBUS Dynamic RAM、RDRAM)、スタティックRAM(SRAM)などを含むがこれらに限定されない)、読み出し専用メモリ(Read Only Memory、ROM)、電気的消去可能プログラマブルROM(Electrically Erasable Programmable ROM、EEPROM)、及びフラッシュメモリなどの揮発性又は不揮発性媒体を含んでもよい。適切なプロセッサ可読媒体は、ネットワーク及び/又は無線リンクなどの通信媒体を介して伝達される電気信号、電磁信号、又はデジタル信号などの伝送媒体も含むことができる。
【0067】
本明細書で説明される方法及び技法は、デジタル電子回路において、又はプログラマブルプロセッサ(例えば、専用プロセッサ若しくはコンピュータなどの汎用プロセッサ)、ファームウェア、ソフトウェア、若しくはそれらの組み合わせを用いて実装され得る。これらの技法を具現化する装置は、適切な入力及び出力デバイスと、プログラマブルプロセッサと、プログラマブルプロセッサによる実行のためのプログラム命令を有形に具現化する記憶媒体とを含み得る。これらの技法を具現化するプロセスは、入力データに対して動作し、適切な出力を生成することによって所望の機能を実施するための命令のプログラムを実行するプログラマブルプロセッサによって実施され得る。本技法は、データ記憶システム、少なくとも1つの入力デバイス、及び少なくとも1つの出力デバイスからデータ及び命令を受信し、それらにデータ及び命令を送信するように結合された少なくとも1つのプログラム可能プロセッサを含むプログラム可能システム上で実行可能な1つ以上のプログラムにおいて有利に実装され得る。概して、プロセッサは、読み出し専用メモリ及び/又はランダムアクセスメモリから命令及びデータを受信する。コンピュータプログラム命令及びデータを有形に実施するのに好適な記憶デバイスには、例えば半導体メモリデバイス(EPROM、EEPROM、及びフラッシュメモリデバイス)を含む全ての形態の非揮発性メモリ、磁気ディスク(内部ハードディスク又は取り外し可能なディスク)、光磁気ディスク、及びDVDディスクが含まれる。前述のいずれも、特別に設計された特定用途向け集積回路(ASIC)によって補完されてもよく、又はそれに組み込まれてもよい。
【0068】
例示的な実施形態
例1は方法を含み、方法は、グラフィックス処理ユニット(GPU)によって実行されるべきシェーダコードの各ラインについて、フラグを追加することと、GPUによって実行されるべきシェーダコードの各ラインについて、表示デバイス上に表示されるべき少なくとも1つのグラフィックオブジェクトを作成することと、要件ベースのテストの実行後に表示デバイス上に表示されたグラフィックオブジェクトの1つ以上の属性のステータスを含む1つ以上のヒットファイルを受信することと、1つ以上のヒットファイルと、シェーダコードと表示されたグラフィックオブジェクトとの間のマッピングとに基づいて、シェーダコードのための構造コードカバレッジレポートを生成することと、を含む。
【0069】
例2は、例1の方法を含み、シェーダコードのための構造コードカバレッジレポートを生成することは、設計保証レベル(DAL)A、DAL B、及び/又はDAL Cに関する要件に基づく。
【0070】
例3は、例1~2のいずれかの方法を含み、シェーダコードの第1のラインについて表示デバイス上に表示されるべき少なくとも1つのグラフィックオブジェクトは、第1のグラフィックオブジェクト及び第2のグラフィックオブジェクトを含み、第1のグラフィックオブジェクトは、シェーダコードの第1のラインについて第1の決定分岐に対応し、第2のグラフィックオブジェクトは、シェーダコードの第1のラインについて第2の決定分岐に対応する。
【0071】
例4は、例1~3のいずれかの方法を含み、1つ以上の属性は、色、形状、サイズ、及び/又はパターンを含む。
【0072】
例5は、例1~4のいずれかの方法を含み、表示デバイスのそれぞれのピクセルを使用して各グラフィックオブジェクトを表示することを更に含む。
【0073】
例6は、例1~5のいずれかの方法を含み、GPUによって実行されるべきシェーダコードの各ラインについてフラグを追加することは、GPUによって実行されるべきシェーダコードの各ステートメント及び決定分岐についてフラグを追加することを含む。
【0074】
例7は、例1~6のいずれかの方法を含み、シェーダコードのそれぞれのラインが要件ベースのテスト中に実行されることに応答して、シェーダコードのそれぞれのラインについて、表示デバイス上に表示されたそれぞれのグラフィックオブジェクトの属性を変更することを更に含む。
【0075】
例8は、例1~7のいずれかの方法を含み、構造コードカバレッジレポートに必要とされる構造コードカバレッジのレベルを示す入力をユーザから受信することを更に含む。
【0076】
例9は、例8の方法を含み、GPUによって実行されるべきシェーダコードの各ラインについてフラグを追加すること、及びGPUによって実行されるべきシェーダコードの各ラインについて表示デバイス上に表示された少なくとも1つのグラフィックオブジェクトを作成することは、ユーザからの入力によって示される構造コードカバレッジレポートに必要とされる構造コードカバレッジのレベルに基づく。
【0077】
例10はシステムを含み、システムは、1つ以上のプロセッサと、1つ以上のプロセッサに通信可能に結合された非一時的コンピュータ可読媒体とを含み、非一時的コンピュータ可読媒体は、1つ以上の命令を記憶し、命令は、1つ以上のプロセッサによって実行されると、1つ以上のプロセッサに、グラフィックス処理ユニット(GPU)によって実行されるべきシェーダコードの各ラインについて、フラグを追加させ、GPUによって実行されるべきシェーダコードの各ラインについて、表示デバイス上に表示されるべき少なくとも1つのグラフィックオブジェクトを作成させ、要件ベースのテストの実行後に表示デバイス上に表示されたグラフィックオブジェクトの1つ以上の属性のステータスを含む1つ以上のヒットファイルを受信させ、1つ以上のヒットファイルと、シェーダコードと表示されたグラフィックオブジェクトとの間のマッピングとに基づいて、シェーダコードのための構造コードカバレッジレポートを生成させる。
【0078】
例11は、例10のシステムを含み、システムは、実行可能なインストルメントされたシェーダコードを、実行のためにターゲットシステムに出力するように構成されており、システムは、ターゲットシステムから1つ以上のヒットファイルを受信するように構成されている。
【0079】
例12は、例10のシステムを含み、1つ以上の命令は、1つ以上のプロセッサによって実行されると、1つ以上のプロセッサに更に、ターゲットシステムのハードウェアをシミュレートさせ、実行可能なインストルメントされたシェーダコードを、実行のためにターゲットシステムのシミュレートされたハードウェアに出力させ、システムは、ターゲットシステムのシミュレートされたハードウェアから1つ以上のヒットファイルを受信するように構成されている。
【0080】
例13は、例10~12のいずれかのシステムを含み、1つ以上の命令は、1つ以上のプロセッサによって実行されると、1つ以上のプロセッサに更に、GPUによって実行されるべきシェーダコードの各ラインに関連付けられた各ステートメント及び決定分岐についてフラグを追加させ、GPUによって実行されるべきシェーダコードの各ラインについて表示デバイス上に表示されるべき少なくとも1つのグラフィックオブジェクトは、GPUによって実行されるべきシェーダコードの各ラインに関連付けられた各ステートメント及び決定分岐についてそれぞれのグラフィックオブジェクトを含む。
【0081】
例14は、例10~13のいずれかのシステムを含み、システムは、構造コードカバレッジレポートに必要とされる構造コードカバレッジのレベルを示す入力をユーザから受信するように構成されている。
【0082】
例15は、例10~14のいずれかのシステムを含み、1つ以上の命令は、1つ以上のプロセッサによって実行されると、1つ以上のプロセッサに、設計保証レベル(DAL)A、DAL B、及び/又はDAL Cに関する要件に基づいて、シェーダコードのための構造コードカバレッジレポートを生成させる。
【0083】
例16は方法を含み、方法は、ググラフィックス処理ユニット(GPU)によって実行されるべきインストルメントされたシェーダコードと、要件ベースのテストのスクリプトとを受信することであって、インストルメントされたシェーダコードは、インストルメントされたシェーダコードの各ラインについて、1つ以上のフラグを含む、受信することと、要件ベースのテストのスクリプトを実行することと、インストルメントされたシェーダコードの各ラインについて、それぞれのグラフィックオブジェクトを表示デバイス上に表示することと、インストルメントされたシェーダコードの各それぞれのラインが要件ベースのテストのスクリプトの実行中に実行されることに応答して、インストルメントされたシェーダコードの各それぞれのラインについて、それぞれの表示されたグラフィックオブジェクトの属性を変更することと、要件ベースのテストのスクリプトの実行の完了に応答して、1つ以上のヒットファイルを出力することであって、1つ以上のヒットファイルが、インストルメントされたシェーダコードの各それぞれのラインについて、各それぞれの表示されたグラフィックオブジェクトの属性のステータスを含む、出力することと、を含む。
【0084】
例17は、例16の方法を含み、属性は、色、形状、サイズ、及び/又はパターンを含む。
【0085】
例18は、例16~17のいずれかの方法を含み、インストルメントされたシェーダコードの各ラインについて、それぞれのグラフィックオブジェクトを表示デバイス上に表示することは、表示デバイスのそれぞれのピクセルを使用してそれぞれのグラフィックオブジェクトを表示することを含む。
【0086】
例19は、例16~18のいずれかの方法を含み、方法は、1つ以上のヒットファイルをGPUのメモリに記憶することなく、要件ベースのテストのスクリプトの実行の完了に応答して、1つ以上のヒットファイルを出力することを含む。
【0087】
例20は、例16~19のいずれかの方法を含み、インストルメントされたシェーダコードの各それぞれのラインが要件ベースのテストのスクリプトの実行中に実行されることに応答して、インストルメントされたシェーダコードの各それぞれのラインについて、それぞれの表示されたグラフィックオブジェクトの属性を変更することは、属性をデフォルト状態から第2の状態に変更することを含む。
【0088】
本明細書では特定の実施形態が図示され、説明されているが、当業者には、示される特定の実施形態の代わりに、同一の目的を達成することが予測される任意の構成が用いられ得ることが理解されよう。したがって、本発明は、特許請求の範囲及びその均等物によってのみ限定されることが明らかに意図されている。
【外国語明細書】