(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-02-13
(45)【発行日】2024-02-21
(54)【発明の名称】集積回路チップ検証のための浮動小数点数生成方法、装置、電子デバイス、記憶媒体及びコンピュータプログラム
(51)【国際特許分類】
G06F 7/58 20060101AFI20240214BHJP
G06F 7/483 20060101ALI20240214BHJP
【FI】
G06F7/58 620
G06F7/483
(21)【出願番号】P 2022130796
(22)【出願日】2022-08-18
【審査請求日】2022-08-18
(31)【優先権主張番号】202111571211.7
(32)【優先日】2021-12-21
(33)【優先権主張国・地域又は機関】CN
(73)【特許権者】
【識別番号】514322098
【氏名又は名称】ベイジン バイドゥ ネットコム サイエンス テクノロジー カンパニー リミテッド
【氏名又は名称原語表記】Beijing Baidu Netcom Science Technology Co., Ltd.
【住所又は居所原語表記】2/F Baidu Campus, No.10, Shangdi 10th Street, Haidian District, Beijing 100085, China
(74)【代理人】
【識別番号】110000877
【氏名又は名称】弁理士法人RYUKA国際特許事務所
(72)【発明者】
【氏名】リ、ヤン
【審査官】征矢 崇
(56)【参考文献】
【文献】特開昭63-047827(JP,A)
【文献】特開平05-120052(JP,A)
【文献】国際公開第2007/017962(WO,A1)
【文献】特開2017-224060(JP,A)
【文献】特開2019-185301(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F7/38-7/537;7/57-7/575;7/58;7/74-7/78
G06F9/30-9/355
G06F11/22
(57)【特許請求の範囲】
【請求項1】
コンピュータにより実行される、集積回路チップ検証のための浮動小数点数生成方法であって、
要求された浮動小数点数の上限値である第1パラメータと、要求された浮動小数点数の下限値である第2パラメータとを取得することと、
前記第1パラメータ及び前記第2パラメータに基づいて、ランダム化の浮動小数点数の第1符号ビット、第1指数ビット、及び第1小数ビットをそれぞれ生成することと、
前記第1符号ビット、前記第1指数ビット、及び前記第1小数ビットに基づいて前記浮動小数点数を生成することと、
前記浮動小数点数を用いて集積回路チップ検証を行うことと、を含
み、
前記第1パラメータ及び前記第2パラメータに基づいてランダム化の浮動小数点数の第1符号ビット、第1指数ビット、及び第1小数ビットをそれぞれ生成することは、
前記第1パラメータの第2符号ビット、第2指数ビット及び第2小数ビットをそれぞれ取得し、前記第2パラメータの第3符号ビット、第3指数ビット及び第3小数ビットをそれぞれ取得することと、
取得された前記第2符号ビット、前記第2指数ビット、前記第2小数ビット、前記第3符号ビット、前記第3指数ビット、及び前記第3小数ビットに基づいて、前記浮動小数点数の前記第1符号ビット、前記第1指数ビット、及び前記第1小数ビットを生成することと、を含む、
集積回路チップ検証のための浮動小数点数生成方法。
【請求項2】
前記浮動小数点数の前記第1符号ビット、前記第1指数ビット、及び前記第1小数ビットを生成することは、
前記第2符号ビット及び前記第3符号ビットが何れも0に等しい場合に、第1生成方法に従って前記第1符号ビット、前記第1指数ビット、及び前記第1小数ビットを生成することと、
前記第2符号ビットが0に等しく、前記第3符号ビットが1に等しい場合に、第2生成方法に従って前記第1符号ビット、前記第1指数ビット、及び前記第1小数ビットを生成することと、
前記第2符号ビットが1に等しく、前記第3符号ビットが1に等しい場合に、第3生成方法に従って前記第1符号ビット、前記第1指数ビット、及び前記第1小数ビットを生成することと、を含む、
請求項
1に記載の
集積回路チップ検証のための浮動小数点数生成方法。
【請求項3】
前記第1生成方法に従って前記第1符号ビット、前記第1指数ビット、及び前記第1小数ビットを生成することは、
前記第2指数ビットが前記第3指数ビットに等しく、且つ前記第2小数ビットが前記第3小数ビット以上である場合、0を前記第1符号ビットとし、
前記第2指数ビット又は前記第3指数ビットを前記第1指数ビットとし、
[前記第3小数ビット:前記第2小数ビット]の範囲内にあるランダム値を前記第1小数ビットとすることを含む、
請求項
2に記載の
集積回路チップ検証のための浮動小数点数生成方法。
【請求項4】
前記第1生成方法に従って前記第1符号ビット、前記第1指数ビット、及び前記第1小数ビットを生成することは、さらに、
前記第2指数ビットが前記第3指数ビットよりも大きい場合、[前記第3指数ビット:前記第2指数ビット]の範囲内にあるランダム値を第1中間変数として生成することと、
前記第1中間変数が前記第3指数ビットに等しい場合、0を前記第1符号ビットとし、前記第3指数ビットを前記第1指数ビットとし、[前記第3小数ビット:第1所定値]の範囲内にあるランダム値を前記第1小数ビットとすることと、
前記第1中間変数が前記第2指数ビットに等しい場合、0を前記第1符号ビットとし、前記第2指数ビットを前記第1指数ビットとし、[第2所定値:前記第2小数ビット]の範囲内にあるランダム値を前記第1小数ビットとすることと、
前記第1中間変数が前記第3指数ビット及び前記第2指数ビットのいずれにも等しくない場合、0を前記第1符号ビットとし、前記第1中間変数を前記第1指数ビットとし、[前記第2所定値:前記第1所定値]の範囲内にあるランダム値を前記第1小数ビットとすることと、を含む、
請求項
3に記載の
集積回路チップ検証のための浮動小数点数生成方法。
【請求項5】
前記第2生成方法に従って前記第1符号ビット、前記第1指数ビット、及び前記第1小数ビットを生成することは、
第2中間変数として[0:1]の範囲にあるランダム値を生成することと、
前記第2中間変数が0に等しい場合、第3中間変数として[0:前記第2指数ビット]の範囲内にあるランダム値を生成することと、
前記第3中間変数が前記第2指数ビットに等しい場合、0を前記第1符号ビットとし、前記第2指数ビットを前記第1指数ビットとし、[第2所定値:前記第2小数ビット]の範囲内にあるランダム値を前記第1小数ビットとすることと、
前記第3中間変数が前記第2指数ビットに等しくない場合、0を前記第1符号ビットとし、前記第3中間変数を前記第1指数ビットとし、[前記第2所定値:第1所定値]の範囲内にあるランダム値を前記第1小数ビットとすることと、を含む、
請求項
2に記載の
集積回路チップ検証のための浮動小数点数生成方法。
【請求項6】
前記第2生成方法に従って前記第1符号ビット、前記第1指数ビット、及び前記第1小数ビットを生成することは、さらに、
前記第2中間変数が0に等しくない場合、第4中間変数として[0:前記第3指数ビット]の範囲内にあるランダム値を生成することと、
前記第4中間変数が前記第3指数ビットに等しい場合、1を前記第1符号ビットとし、前記第3指数ビットを前記第1指数ビットとし、[第2所定値:前記第3小数ビット]の範囲内にあるランダム値を前記第1小数ビットとすることと、
前記第4中間変数が前記第3指数ビットに等しくない場合、1を前記第1符号ビットとし、前記第4中間変数を前記第1指数ビットとし、[前記第2所定値:前記第1所定値]の範囲内にあるランダム値を前記第1小数ビットとすることと、を含む、
請求項
5に記載の
集積回路チップ検証のための浮動小数点数生成方法。
【請求項7】
前記第3生成方法に従って前記第1符号ビット、前記第1指数ビット、及び前記第1小数ビットを生成することは、
前記第2指数ビットが前記第3指数ビットに等しく、且つ前記第2小数ビットが前記第3小数ビット以下である場合、1を前記第1符号ビットとし、
前記第2指数ビット又は前記第3指数ビットを前記第1指数ビットとし、
[前記第2小数ビット:前記第3小数ビット]の範囲内にあるランダム値を前記第1小数ビットとすることを含む、
請求項
2に記載の
集積回路チップ検証のための浮動小数点数生成方法。
【請求項8】
前記第3生成方法に従って前記第1符号ビット、前記第1指数ビット、及び前記第1小数ビットを生成することは、さらに、
前記第2指数ビットが前記第3指数ビットよりも大きい場合、第5中間変数として[前記第2指数ビット:前記第3指数ビット]の範囲内にあるランダム値を生成することと、
前記第5中間変数が前記第3指数ビットに等しい場合、1を前記第1符号ビットとし、前記第3指数ビットを前記第1指数ビットとし、[第2所定値:前記第3小数ビット]の範囲内にあるランダム値を前記第1小数ビットとすることと、
前記第5中間変数が前記第2指数ビットに等しい場合、1を前記第1符号ビットとし、前記第2指数ビットを前記第1指数ビットとし、[前記第2小数ビット:第1所定値]の範囲内にあるランダム値を前記第1小数ビットとすることと、
前記第5中間変数が前記第3指数ビット及び前記第2指数ビットのいずれにも等しくない場合、1を前記第1符号ビットとし、前記第5中間変数を前記第1指数ビットとし、[前記第2所定値:前記第1所定値]の範囲内にあるランダム値を前記第1小数ビットとすることと、を含む、
請求項
7に記載の
集積回路チップ検証のための浮動小数点数生成方法。
【請求項9】
前記浮動小数点数に基づいて指定サイズのランダム化の浮動小数点数ベクトルを生成し、前記浮動小数点数ベクトルを用いて集積回路チップ検証を行うことをさらに含む、
請求項1から
8のいずれか一項に記載の
集積回路チップ検証のための浮動小数点数生成方法。
【請求項10】
前記浮動小数点数に基づいて指定サイズのランダム化の浮動小数点数ベクトルを生成することは、
前記第1指数ビットが0に等しい場合、前記浮動小数点数と所定の第1係数との積を取得して第6中間変数を得ることと、
ランダム化の整数データの第1配列であって、サイズが前記指定サイズに等しく、且つ所定の線形演算が行われた結果が前記第6中間変数である第1配列を取得することと、
前記第1係数を前記第1配列内の各要素に均等に割り当て、前記線形演算の種類と合わせて前記浮動小数点数ベクトルを決定することと、を含む、
請求項9に記載の
集積回路チップ検証のための浮動小数点数生成方法。
【請求項11】
前記線形演算の種類と合わせて前記浮動小数点数ベクトルを決定することは、
前記線形演算が加算演算である場合、前記第1配列内の各要素をそれぞれ前記第1係数で除算して前記浮動小数点数ベクトルを得ることと、
前記線形演算が乗算演算である場合、前記第1配列からランダムにM個の要素を選択し、選択された各要素をそれぞれ2で除算し、2で除算されたM個の要素を用いて第2配列を構成し、前記第2配列内の各要素をそれぞれ2のN乗で除算して前記浮動小数点数ベクトルを得ることと、を含み、
前記Nは第3所定値を前記指定サイズで除算した商であり、前記Mは前記第3所定値を前記指定サイズで除算した剰余である、
請求項
10に記載の
集積回路チップ検証のための浮動小数点数生成方法。
【請求項12】
前記第1係数は、2の149乗であり、
前記第3所定値は149である、
請求項
11に記載の
集積回路チップ検証のための浮動小数点数生成方法。
【請求項13】
前記浮動小数点数に基づいて指定サイズのランダム化の浮動小数点数ベクトルを生成することは、さらに、
前記第1指数ビットが0に等しくない場合、前記第1指数ビットに基づいて第2係数を決定し、前記浮動小数点数と前記第2係数との積を取得して第7中間変数を得ることと、
ランダム化の整数データの第3配列であって、サイズが前記指定サイズに等しく、且つ所定の線形演算が行われた結果が前記第7中間変数である第3配列を取得することと、
前記第2係数を前記第3配列内の各要素に均等に割り当て、前記線形演算の種類と合わせて前記浮動小数点数ベクトルを決定することと、を含む、
請求項
10に記載の
集積回路チップ検証のための浮動小数点数生成方法。
【請求項14】
前記線形演算の種類と合わせて前記浮動小数点数ベクトルを決定することは、
前記線形演算が加算演算である場合、前記第3配列内の各要素をそれぞれ前記第2係数で除算して前記浮動小数点数ベクトルを得ることと、
前記線形演算が乗算演算である場合、前記第3配列からランダムにM'個の要素を選択し、選択された各要素をそれぞれ2で除算し、2で除算されたM'個の要素を用いて第4配列を構成し、前記第4配列内の各要素をそれぞれ2のN'乗で除算して前記浮動小数点数ベクトルを得ることと、を含み、
前記N'は、第4所定値を前記指定サイズで除算した商であり、
前記M'は、前記第4所定値を前記指定サイズで除算した剰余である、
請求項
13に記載の
集積回路チップ検証のための浮動小数点数生成方法。
【請求項15】
前記第2係数は2のP乗であり、Pは前記第4所定値であり、且つ149と前記第1指数ビットとの差である、
請求項
14に記載の
集積回路チップ検証のための浮動小数点数生成方法。
【請求項16】
パラメータ取得モジュールと、第1生成モジュールと、第2生成モジュールと、検証モジュールとを備える
集積回路チップ検証のための浮動小数点数生成装置であって、
前記パラメータ取得モジュールは、要求された浮動小数点数の上限値である第1パラメータと、要求された浮動小数点数の下限値である第2パラメータとを取得し、
前記第1生成モジュールは、前記第1パラメータ及び前記第2パラメータに基づいて、ランダム化の浮動小数点数の第1符号ビット、第1指数ビット及び第1小数ビットをそれぞれ生成し、
前記第2生成モジュールは、前記第1符号ビット、前記第1指数ビット及び前記第1小数ビットに基づいて前記浮動小数点数を生成し、
前記検証モジュールは、前記浮動小数点数を利用して集積回路チップ検証を行い、
前記第1生成モジュールは、前記第1パラメータの第2符号ビット、第2指数ビット、及び第2小数ビットをそれぞれ取得し、
前記第2パラメータの第3符号ビット、第3指数ビット、及び第3小数ビットをそれぞれ取得し、
取得された前記第2符号ビット、前記第2指数ビット、前記第2小数ビット、前記第3符号ビット、前記第3指数ビット、及び前記第3小数ビットに基づいて、前記浮動小数点数の前記第1符号ビット、前記第1指数ビット、及び前記第1小数ビットを生成する、
集積回路チップ検証のための浮動小数点数生成装置。
【請求項17】
前記第1生成モジュールは、
前記第2符号ビット及び前記第3符号ビットが何れも0に等しい場合に、第1生成方法に従って前記第1符号ビット、前記第1指数ビット、及び前記第1小数ビットを生成し、
前記第2符号ビットが0に等しく、且つ前記第3符号ビットが1に等しい場合に、第2生成方法に従って前記第1符号ビット、前記第1指数ビット、及び前記第1小数ビットを生成し、
前記第2符号ビットが1に等しく、且つ第3符号ビットが1に等しい場合に、第3生成方法に従って前記第1符号ビット、前記第1指数ビット、及び前記第1小数ビットを生成する、
請求項
16に記載の
集積回路チップ検証のための浮動小数点数生成装置。
【請求項18】
前記第1生成モジュールは、第1生成方法に従って前記第1符号ビット、前記第1指数ビット、及び前記第1小数ビットを生成することは、
前記第2指数ビットが第3指数ビットに等しく、且つ前記第2小数ビットが前記第3小数ビット以上である場合、0を前記第1符号ビットとし、
前記第2指数ビット又は前記第3指数ビットを前記第1指数ビットとし、
[前記第3小数ビット:前記第2小数ビット]の範囲内にあるランダム値を前記第1小数ビットとすること、を含む、
請求項
17に記載の
集積回路チップ検証のための浮動小数点数生成装置。
【請求項19】
前記第1生成モジュールは、第1生成方法に従って前記第1符号ビット、前記第1指数ビット、及び前記第1小数ビットを生成することは、さらに、
前記第2指数ビットが前記第3指数ビットよりも大きい場合、[前記第3指数ビット:前記第2指数ビット]の範囲内にあるランダム値を第1中間変数として生成し、
前記第1中間変数が前記第3指数ビットに等しい場合、0を前記第1符号ビットとし、前記第3指数ビットを前記第1指数ビットとし、[前記第3小数ビット:第1所定値]の範囲内にあるランダム値を前記第1小数ビットとし、
前記第1中間変数が前記第2指数ビットに等しい場合、0を前記第1符号ビットとし、前記第2指数ビットを前記第1指数ビットとし、[第2所定値:前記第2小数ビット]の範囲内にあるランダム値を前記第1小数ビットとし、
前記第1中間変数が前記第3指数ビット及び前記第2指数ビットのいずれにも等しくない場合、0を前記第1符号ビットとし、前記第1中間変数を前記第1指数ビットとし、[前記第2所定値:前記第1所定値]の範囲内にあるランダム値を前記第1小数ビットとすることを含む、
請求項
18に記載の
集積回路チップ検証のための浮動小数点数生成装置。
【請求項20】
前記第1生成モジュールは、第2生成方法に従って前記第1符号ビット、前記第1指数ビット、及び前記第1小数ビットを生成することは、
第2中間変数として[0:1]の範囲内にあるランダム値を生成し、
前記第2中間変数が0に等しい場合、第3中間変数として[0:前記第2指数ビット]の範囲内にあるランダム値を生成し、
前記第3中間変数が前記第2指数ビットに等しい場合、0を前記第1符号ビットとし、前記第2指数ビットを前記第1指数ビットとし、[第2所定値:前記第2小数ビット]の範囲内にあるランダム値を前記第1小数ビットとし、
前記第3中間変数が前記第2指数ビットに等しくない場合、0を前記第1符号ビットとし、前記第3中間変数を前記第1指数ビットとし、[前記第2所定値:第1所定値]の範囲内にあるランダム値を前記第1小数ビットとすることを含む、
請求項
17に記載の
集積回路チップ検証のための浮動小数点数生成装置。
【請求項21】
前記第1生成モジュールは、第2生成方法に従って前記第1符号ビット、前記第1指数ビット、及び前記第1小数ビットを生成することは、さらに、
前記第2中間変数が0に等しくない場合、第4中間変数として[0:前記第3指数ビット]の範囲内にあるランダム値を生成し、
前記第4中間変数が前記第3指数ビットに等しい場合、1を前記第1符号ビットとし、前記第3指数ビットを前記第1指数ビットとし、[第2所定値:前記第3小数ビット]の範囲内にあるランダム値を前記第1小数ビットとし、
前記第4中間変数が前記第3指数ビットに等しくない場合、1を前記第1符号ビットとし、前記第4中間変数を前記第1指数ビットとし、[前記第2所定値:前記第1所定値]の範囲内にあるランダム値を前記第1小数ビットとすることを含む、
請求項
20に記載の
集積回路チップ検証のための浮動小数点数生成装置。
【請求項22】
前記第1生成モジュールは、第3生成方法に従って前記第1符号ビット、前記第1指数ビット、及び前記第1小数ビットを生成することは、
前記第2指数ビットが前記第3指数ビットに等しく、前記第2小数ビットが前記第3小数ビット以下である場合、1を前記第1符号ビットとし、
前記第2指数ビット又は前記第3指数ビットを前記第1指数ビットとし、
[前記第2小数ビット:前記第3小数ビット]の範囲内にあるランダム値を前記第1小数ビットとすることを含む、
請求項
17に記載の
集積回路チップ検証のための浮動小数点数生成装置。
【請求項23】
前記第1生成モジュールは、第3生成方法に従って前記第1符号ビット、前記第1指数ビット、及び前記第1小数ビットを生成することは、さらに、
前記第2指数ビットが前記第3指数ビットよりも大きい場合、[前記第2指数ビット:前記第3指数ビット]の範囲内にあるランダム値を第5中間変数として生成し、
前記第5中間変数が前記第3指数ビットに等しい場合、1を前記第1符号ビットとし、前記第3指数ビットを前記第1指数ビットとし、[第2所定値:前記第3小数ビット]の範囲内にあるランダム値を前記第1小数ビットとし、
前記第5中間変数が前記第2指数ビットに等しい場合、1を前記第1符号ビットとし、前記第2指数ビットを前記第1指数ビットとし、[前記第2小数ビット:第1所定値]の範囲内にあるランダム値を前記第1小数ビットとし、
前記第5中間変数が前記第3指数ビット及び前記第2指数ビットのいずれにも等しくない場合、1を前記第1符号ビットとし、前記第5中間変数を前記第1指数ビットとし、[前記第2所定値:前記第1所定値]の範囲内にあるランダム値を前記第1小数ビットとすることを含む、
請求項
22に記載の
集積回路チップ検証のための浮動小数点数生成装置。
【請求項24】
前記浮動小数点数に基づいて指定サイズのランダム化の浮動小数点数ベクトルを生成する第3生成モジュールを更に備え、
前記検証モジュールはさらに、前記浮動小数点数ベクトルを用いて集積回路チップ検証を行う、
請求項
16から
23のいずれか1項に記載の
集積回路チップ検証のための浮動小数点数生成装置。
【請求項25】
前記第3生成モジュールは、前記第1指数ビットが0に等しい場合、前記浮動小数点数と所定の第1係数との積を取得して第6中間変数を得、
ランダム化の整数データの第1配列であって、サイズが前記指定サイズに等しく、且つ所定の線形演算が行われた結果が前記第6中間変数である第1配列を取得し、
前記第1係数を前記第1配列内の各要素に均等に割り当て、
前記線形演算の種類と合わせて前記浮動小数点数ベクトルを決定する、
請求項
24に記載の集
積回路チップ検証のための浮動小数点数生成装置。
【請求項26】
前記第3生成モジュールは、
前記線形演算が加算演算である場合、前記第1配列内の各要素を前記第1係数でそれぞれ除算して浮動小数点ベクトルを得、
前記線形演算が乗算演算である場合、前記第1配列からM個の要素をランダムに選択し、選択された各要素を2で除算し、2で除算されたM個の要素を用いて第2配列を構成し、前記第2配列内の各要素をそれぞれ2のN乗で除算して前記浮動小数点数ベクトルを得、前記Nは第3所定値を前記指定サイズで除算した商であり、前記Mは前記第3所定値を前記指定サイズで除算した剰余である、
請求項
25に記載の
集積回路チップ検証のための浮動小数点数生成装置。
【請求項27】
前記第1係数は、2の149乗であり、
前記第3所定値は149である、
請求項
26に記載の
集積回路チップ検証のための浮動小数点数生成装置。
【請求項28】
前記第3生成モジュールは、前記第1指数ビットが0に等しくない場合に、前記第1指数ビットに基づいて第2係数を決定し、
前記浮動小数点数と前記第2係数との積を取得して第7中間変数を得、
ランダム化の整数データの第3配列であって、サイズが前記指定サイズに等しく、且つ所定の線形演算が行われた結果が前記第7中間変数である第3配列を取得し、
前記第2係数を前記第3配列内の各要素に均等に割り当て、
前記線形演算の種類と合わせて前記浮動小数点数ベクトルを決定する、
請求項
25に記載の
集積回路チップ検証のための浮動小数点数生成装置。
【請求項29】
前記第3生成モジュールは、
前記線形演算が加算演算である場合、前記第3配列内の各要素をそれぞれ前記第2係数で除算して前記浮動小数点数ベクトルを得、
前記線形演算が乗算演算である場合、前記第3配列からM'個の要素をランダムに選択し、選択された各要素をそれぞれ2で除算し、2で除算されたM'個の要素を用いて第4配列を構成し、前記第4配列内の各要素をそれぞれ2のN'乗で除算して前記浮動小数点数ベクトルを得、
前記N'は第4所定値を前記指定サイズで除算した商であり、
前記M'は前記第4所定値を前記指定サイズで除算した剰余である、
請求項
28に記載の
集積回路チップ検証のための浮動小数点数生成装置。
【請求項30】
前記第2係数は2のP乗であり、Pは前記第4所定値であり、149と前記第1指数ビットとの差である、
請求項
29に記載の
集積回路チップ検証のための浮動小数点数生成装置。
【請求項31】
少なくとも1つのプロセッサと、
前記少なくとも1つのプロセッサと通信可能に接続されたメモリとを備え、
前記メモリに前記少なくとも1つのプロセッサにより実行可能なコマンドが記憶されており、前記コマンドが前記少なくとも1つのプロセッサにより実行されると、前記少なくとも1つのプロセッサに請求項1から
8のいずれか1項に記載の
集積回路チップ検証のための浮動小数点数生成方法を実行させる電子デバイス。
【請求項32】
コンピュータに請求項1から
8のいずれか1項に記載の
集積回路チップ検証のための浮動小数点数生成方法を実行させるためのコンピュータコマンドを記憶する非一時的なコンピュータ可読記憶媒体。
【請求項33】
プロセッサにより実行されると、請求項1から
8のいずれか1項に記載の
集積回路チップ検証のための浮動小数点数生成方法を実現するコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、人工知能技術の分野に関し、特に人工知能チップ及びクラウドコンピューティングの分野における集積回路チップ検証方法、装置、電子デバイス、及び記憶媒体に関する。
【背景技術】
【0002】
ランダム化データインセンティブは、集積回路チップ(IC、Integrated Circuit)の検証に非常に重要である。前記チップは音声チップなどであってもよい
【0003】
現在、主流のIC検証プラットフォームは一般的にsystem verilogに基づいて構築される。system verilogはSV言語を指し、ハードウェア記述と検証言語の1種である。一方、system verilogプラットフォームは定点(整数)データのランダム化方法のみを提供し、浮動小数点データのランダム化方法を提供していない。
【発明の概要】
【発明が解決しようとする課題】
【0004】
本開示は、集積回路チップ検証方法、装置、電子デバイス及び記憶媒体を提供する。
【課題を解決するための手段】
【0005】
要求された浮動小数点数の上限値である第1パラメータと、要求された浮動小数点数の下限値である第2パラメータとを取得し、前記第1パラメータ及び前記第2パラメータに基づいて、ランダム化された浮動小数点数の第1符号ビット、第1指数ビット、及び第1小数ビットをそれぞれ生成し、前記第1符号ビット、前記第1指数ビット、及び前記第1小数点数ビットに基づいて前記浮動小数点数を生成し、前記浮動小数点数を用いて集積回路チップ検証を行うことを含む集積回路チップ検証方法が提供される。
【0006】
パラメータ取得モジュールと、第1生成モジュールと、第2生成モジュールと、検証モジュールとを備える集積回路チップ検証装置であって、前記パラメータ取得モジュールは、要求された浮動小数点数の上限値である第1パラメータと、要求された浮動小数点数の下限値である第2パラメータとを取得し、前記第1生成モジュールは、前記第1パラメータ及び前記第2パラメータに基づいて、ランダム化された浮動小数点数の第1符号ビット、第1指数ビット及び第1小数ビットをそれぞれ生成し、前記第2生成モジュールは、前記第1符号ビット、前記第1指数ビット及び前記第1小数ビットに基づいて前記浮動小数点数を生成し、前記検証モジュールは、前記浮動小数点数を用いて集積回路チップ検証を行う集積回路チップ検証装置が提供される。
【0007】
少なくとも1つのプロセッサと、前記少なくとも1つのプロセッサと通信可能に接続されたメモリとを備え、前記メモリに前記少なくとも1つのプロセッサにより実行可能なコマンドが記憶されており、前記コマンドが前記少なくとも1つのプロセッサにより実行されると、前記少なくとも1つのプロセッサに上記のような方法を実行させる電子デバイスが提供される。
【0008】
コンピュータに上記のような方法を実行させるためのコンピュータコマンドを記憶した非一時的なコンピュータ可読記憶媒体が提供される。
【0009】
プロセッサにより実行されると、上記のような方法を実現するコンピュータプログラム/コマンドを含むコンピュータプログラム製品が提供される。
【0010】
前記開示の1つの実施形態は、浮動小数点データのランダム化を実現することができるため、集積回路チップの検証における関連演算ユニットの検証に必要な浮動小数点データのインセンティブを提供し、ひいては検証効果等を向上させる利点又は有益な効果を有する。
【0011】
理解すべきなのは、本セクションで説明される内容は、本開示の実施形態の重要な又は肝心な特徴を標識することでもなく、本開示の範囲を制限することでもない。本開示の他の特徴は、以下の明細書により容易に理解されるであろう。
【図面の簡単な説明】
【0012】
図面は、本技術案をより良く理解するためのものであり、本願に制限されない。図面において、
【
図1】本開示に記載された集積回路チップ検証方法の実施形態のフローチャートである。
【
図2】本開示に記載された、第1生成方法に従って第1符号ビット、第1指数ビット、及び第1小数ビットを生成するプロセスの概略図である。
【
図3】本開示に記載された、第2生成方法に従って第1符号ビット、第1指数ビット、及び第1小数ビットを生成するプロセスの概略図である。
【
図4】本開示に記載された、第3生成方法に従って第1符号ビット、第1指数ビット、及び第1小数ビットを生成するプロセスの概略図である。
【
図5】本開示に記載された集積回路チップ検証装置の第1実施形態500の構成図である。
【
図6】本開示に記載された集積回路チップ検証装置の第2実施形態600の構成図である。
【
図7】本開示の実施形態を実施可能な電子デバイス700の概略的なブロック図である。
【発明を実施するための形態】
【0013】
以下、図面に基づいて、本開示の例示的な実施例を説明する。理解を容易にするために、本開示の実施例の様々な詳細が含まれており、それらは単なる例示と見なされるべきである。従って、当業者は、本開示の範囲及び精神から逸脱することなく、本明細書に記載の実施形態に対して様々な変更及び修正を行うことができることを認識するはずである。同様に、簡明のために、以下の説明では、よく知られた機能と構造の説明は省略される。
【0014】
さらに、本明細書における用語「及び/又は」は、単に関連オブジェクトを記述する関連関係であり、3つの関係が存在し得ると意味する。例えば、A及び/又はBは、Aが単独で存在し、AとBが同時に存在し、Bが単独で存在するという三つの状況を意味することができる。また、本明細書における文字「/」は、一般的に前後の関連オブジェクトが「又は」の関係にあることを意味する。
【0015】
図1は、本開示に記載された集積回路チップ検証方法の実施形態のフローチャートである。
図1に示すように、以下の具体的な実現ステップを含むことができる。
【0016】
ステップ101では、要求された浮動小数点数の上限値である第1パラメータと、要求された浮動小数点数の下限値である第2パラメータとを取得する。
【0017】
ステップ102では、第1パラメータ及び第2パラメータに基づいて、ランダム化された浮動小数点数の第1符号ビット、第1指数ビット及び第1小数ビットをそれぞれ生成する。
【0018】
ステップ103において、第1符号ビット、第1指数ビット、及び第1小数ビットに基づいて前記浮動小数点数を生成する。
【0019】
ステップ104では、前記浮動小数点数を用いて集積回路チップ検証を行う。
【0020】
以上の内容からわかるように、前記方法の実施形態に記載された方案を採用することにより、浮動小数点データのランダム化を実現することができるため、集積回路チップ検証における関連演算ユニットの検証に必要な浮動小数点データのインセンティブを提供し、さらに検証効果等を向上させることができる。
【0021】
浮動小数点データは、浮動小数点数及び浮動小数点ベクトルを含んで良い。浮動小数点数は、符号ビット(sign)、指数ビット(exponent)、及び小数ビット(fraction)から構成され得る。
【0022】
後に記載される他の符号ビット、指数ビット及び小数ビットと区別するために、ランダム化された浮動小数点数の符号ビット、指数ビット及び小数ビットをそれぞれ第1符号ビット、第1指数ビット及び第1小数ビットと呼ぶ。後続の同様の状況については詳しく説明しない。
【0023】
本開示に記載された方案では、得られる浮動小数点数は、制約されたデータ範囲内にある必要がある。すなわち、ユーザは、ランダム化により生成された浮動小数点数を制約する必要がある値の範囲を設定し、制約条件に適合する浮動小数点数を最終的に返すことができる。
【0024】
それに応じて、第1パラメータと第2パラメータを設定することができる。ここで、第1パラメータは要求される浮動小数点数の上限値であり、第2パラメータは要求される浮動小数点数の下限値である。
【0025】
本開示に記載された方法では、第1パラメータ及び第2パラメータに基づいてランダム化された浮動小数点数の第1符号ビット、第1指数ビット、及び第1小数ビットをそれぞれ生成することができる。本開示の一実施形態では、第1パラメータの第2符号ビット、第2指数ビット、及び第2小数ビットをそれぞれ取得し、第2パラメータの第3符号ビット、第3指数ビット、及び第3小数ビットをそれぞれ取得して良く、さらに、取得された第2符号ビット、第2指数ビット、第2小数ビット、第3符号ビット、第3指数ビット、及び第3小数ビットに基づいて、前記浮動小数点数の第1符号ビット、第1指数ビット、及び第1小数ビットを生成して良い。
【0026】
ここで、第1パラメータの第2符号ビット、第2指数ビット、及び第2小数ビットは、それぞれsign_max、exp_max、及びfrac_maxで表され、第2パラメータの第3符号ビット、第3指数ビット、及び第3小数ビットは、それぞれsign_min、exp_min、及びfrac_minで表され、前記浮動小数点数の第1符号ビット、第1指数ビット、及び第1小数ビットは、sign_result、exp_result、及びfrac_resultで表されて良い。
【0027】
本開示の一実施形態では、第2符号ビットと第3符号ビットはいずれも0に等しい場合、第1生成方法に従って第1符号ビット、第1指数ビット、及び第1小数ビットを生成することができ、第2符号ビットが0に等しく、第3符号ビットが1に等しい場合、第2生成方法に従って第1符号ビット、第1指数ビット、及び第1小数ビットを生成することができ、第2符号ビットが1に等しく、第3符号ビットが1に等しい場合、第3生成方法に従って第1符号ビット、第1指数ビット、及び第1小数ビットを生成することができる。
【0028】
すなわち、第2符号ビットと第3符号ビットとを比較し、比較結果に応じて、対応する生成方法をそれぞれ用いて第1符号ビット、第1指数ビット、及び第1小数ビットを生成することができるため、前記生成がより適合性があり、ひいては生成結果の正確性等を向上させる。
【0029】
sign_max==1でsign_min==0の場合、第1パラメータの符号が負、第2パラメータの符号が正であることを示す。この場合、制約条件を満たす浮動小数点数は得られない。それに応じて、エラーを報告して中止して良い。sign_max==0及びsign_min==0の場合、第1生成方法に従って第1符号ビット、第1指数ビット、及び第1小数ビットを生成し、sign_max==0及びsign_min==1の場合、第2生成方法に従って第1符号ビット、第1指数ビット、及び第1小数ビットを生成し、sign_max==1及びsign_min==1の場合、第3生成方法に従って第1符号ビット、第1指数ビット、及び第1小数ビットを生成することができる。
【0030】
以下、上述した第1生成方法、第2生成方法及び第3生成方法の具体的な実現についてそれぞれ説明する。
【0031】
1)第1生成方法
本開示の一実施形態では、第1生成方法に従って第1符号ビット、第1指数ビット、及び第1小数ビットを生成する方法は、第2指数ビットが第3指数ビットに等しく、第2小数ビットが第3小数ビット以上である場合に、0を第1符号ビットとし、第2指数ビット又は第3指数ビットを第1指数ビットとし、[第3小数ビット:第2小数ビット]の範囲内にあるランダム値を第1小数ビットとすることを含むことができる。
【0032】
さらに、本開示の一実施形態では、第1生成方法に従って第1符号ビット、第1指数ビット、及び第1小数ビットを生成する方法は、更に、第2指数ビットが第3指数ビットよりも大きい場合に、第1中間変数として[第3指数ビット:第2指数ビット]の範囲内にあるランダム値を生成し、第1中間変数が第3指数ビットに等しい場合に、0を第1符号ビットとし、第3指数ビットを第1指数ビットとし、[第3小数ビット:第1所定値]の範囲内にあるランダム値を第1小数ビットとし、第1中間変数が第2指数ビットに等しい場合に、0を第1符号ビットとし、第2指数ビットを第1指数ビットとし、[第2所定値:第2小数ビット]の範囲内にあるランダム値を第1小数ビットとし、第1中間変数が第3指数ビット及び第2指数ビットのいずれにも等しくない場合に、0を第1符号ビットとし、第1中間変数を第1指数ビットとし、[第2所定値:第1所定値]の範囲内にあるランダム値を第1小数ビットとすることを含んで良い。
【0033】
上記の説明に基づいて、
図2は、本開示に記載された第1生成方法に従って第1符号ビット、第1指数ビット、及び第1小数ビットを生成するプロセスの概略図である。
図2に示すように、以下の具体的な実現ステップを含むことができる。
【0034】
ステップ201では、exp_maxとexp_minとを比較し、exp_max<exp_minであればステップ202、exp_max==exp_minであればステップ203、exp_max>exp_minであればステップ205に進む。
【0035】
ステップ202において、エラーを報告して中止した後にプロセスを終了する。
【0036】
現在sign_max==0及びsign_min==0の場合に、第1パラメータ及び第2パラメータの符号は何れも正であることを示すため、exp_max<exp_minであれば、第1パラメータの指数部が第2パラメータの指数部よりも小さいことを表す。この場合、制約条件を満たす浮動小数点数は得られない。それに応じて、エラーを報告して中止させることができる。
【0037】
ステップ203では、frac_max<frac_minであるか否かを判定し、肯定の場合にステップ202に進み、否定の場合にステップ204に進む。
【0038】
現在sign_max==0、sign_min==0、且つexp_max==exp_minであるため、frac_max<frac_minであれば、第1パラメータ及び第2パラメータの符号が何れも正であり、第1パラメータ及び第2パラメータの指数部が等しいが、第1パラメータの小数部が第2パラメータの小数部よりも小さいことを表す。この場合、制約条件を満たす浮動小数点数は得られない。それに応じて、エラーを報告して中止させることができる。
【0039】
ステップ204では、0をsign_resultとし、exp_max又はexp_minをexp_resultとし、[frac_min:frac_max]の範囲内にあるランダム値をfrac_resultとして処理を終了する。
【0040】
すなわち、sign_result=0;
exp_result=exp_max又はexp_min;
frac_result=random([frac_min:frac_max])。
【0041】
ここで、system verilogプラットフォームにより提供されるランダム化方法を使用して、[frac_min:frac_max]の範囲内にあるランダム値をfrac_resultとして生成して良い。
【0042】
ステップ205では、第1中間変数TMP1として、[exp_min:exp_max]の範囲内にあるランダム値を生成する。
【0043】
system verilogプラットフォームにより提供されるランダム化方法を使用して、第1中間変数tmp1として[exp_min:exp_max]の範囲内にあるランダム値を生成して良い。即ちtmp1=random([exp_min:exp_max])。
【0044】
ステップ206では、tmp1をexp_min及びexp_maxと比較し、tmp1==exp_minであればステップ207に進み、tmp1==exp_maxであればステップ208に進み、そうでなければステップ209に進む。
【0045】
ステップ207では、0をsign_result、exp_minをexp_resultとし、[frac_min:第1所定値]の範囲内にあるランダム値をfrac_resultとして処理を終了する。
【0046】
第1所定値の具体的な値は、実際の必要に応じて設定することができる。例えば、'h7F_FFFFとすることができる。
【0047】
即ち、sign_result=0;
exp_result=exp_min;
frac_result=random([frac_min:'h7F_FFFF])。
【0048】
ここで、system verilogプラットフォームにより提供されるランダム化方法を使用して、[frac_min:'h7F_FFFF]の範囲内にあるランダム値をfrac_resultとして生成することができる。
【0049】
ステップ208では、0をsign_result、exp_maxをexp_resultとし、[第2所定値:frac_max]の範囲内にあるランダム値をfrac_resultとして処理を終了する。
【0050】
第2所定値の具体的な値は、実際の必要に応じて設定して良い。例えば、'h0であってよい。
【0051】
即ち、sign_result=0;
exp_result=exp_max;
frac_result=random(['h0:frac_max])。
【0052】
ここで、system verilogプラットフォームにより提供されるランダム化方法を使用して、frac_resultとして['h0:frac_max]の範囲内にあるランダム値を生成することができる。
【0053】
ステップ209では、0をsign_resultとし、tmp1をexp_resultとし、[第2所定値:第1所定値]の範囲内にあるランダム値をfrac_resultとして処理を終了する。
【0054】
即ち、sign_result=0;
exp_result=tmp 1;
frac_result=random(['h0:'h7F_FFFF」))。
【0055】
ここで、system verilogプラットフォームにより提供されるランダム化方法を使用して、frac_resultとして、['h0:'h7F_FFFF]の範囲内にあるランダム値を生成することができる。
【0056】
第1符号ビット、第1指数ビット、及び第1小数ビットを取得した後、これらの情報から所望の浮動小数点数を生成することができ、即ち取得されたsign_result、exp_result、及びfrac_resultから、制約条件を満たすランダム化の浮動小数点数を生成することができる。どのように生成するかは従来技術である。
【0057】
2)第二生成方法
本開示の一実施形態では、第2生成方法に従って第1符号ビット、第1指数ビット、及び第1小数ビットを生成する方法は、第2中間変数として[0:1]の範囲内にあるランダム値を生成し、第2中間変数が0に等しい場合に、第3中間変数として[0:第2指数ビット]の範囲内にあるランダム値を生成し、第3中間変数が第2指数ビットに等しい場合に、0を第1符号ビットとし、第2指数ビットを第1指数ビットとし、[第2所定値:第2小数ビット]の範囲内にあるランダム値を第1小数ビットとし、第3中間変数が第2指数ビットに等しくない場合に、0を第1符号ビットとし、第3中間変数を第1指数ビットとし、[第2所定値:第1所定値]の範囲内にあるランダム値を第1小数ビットとすることを含んでよい。
【0058】
さらに、本開示の一実施形態では、第2生成方法に従って第1符号ビット、第1指数ビット、及び第1小数ビットを生成する方法は、更に、第2中間変数が0に等しくない場合に、第4中間変数として[0:第3指数ビット]の範囲内にあるランダム値を生成し、第4中間変数が第3指数ビットに等しい場合に、1を第1符号ビットとし、第3指数ビットを第1指数ビットとし、[第2所定値:第3小数ビット]の範囲内にあるランダム値を第1小数ビットとし、第4中間変数が第3指数ビットに等しくない場合に、1を第1符号ビットとし、第4中間変数を第1指数ビットとし、[第2所定値:第1所定値]の範囲内にあるランダム値を第1小数ビットとすることを含んでよい。
【0059】
上記の説明に基づいて、
図3は、本開示に記載された第2生成方法に従って第1符号ビット、第1指数ビット、及び第1小数ビットを生成するプロセスの概略図である。
図3に示されるように、以下の具体的な実現ステップを含むことができる。
【0060】
ステップ301では、[0:1]の範囲にあるランダム値を第2中間変数TMP2として生成する。
【0061】
現在sign_max==0及びsign_min==1の場合に、第1パラメータの符号が正、第2パラメータの符号が負であることを示す。最初に、system verilogプラットフォームにより提供されるランダム化方法を利用して、第2中間変数tmp2として、[0:1]の範囲にあるランダム値を生成することができる。すなわち、tmp2=random([0:1])。
【0062】
ステップ302では、tmp2==0であるか否かを判定し、肯定の場合にステップ303に進み、否定の場合にステップ307に進む。
【0063】
ステップ303では、第3中間変数TMP3として、[0:exp_max]の範囲にあるランダム値を生成する。
【0064】
すなわち、tmp3=random([0:exp_max])。
ここで、system verilogプラットフォームにより提供されるランダム化方法を使用して[0:exp_max]の範囲内にあるランダム値を生成して良い。
【0065】
ステップ304では、TMP3==exp_maxであるか否かを判定し、肯定の場合にステップ305に進み、否定の場合にステップ306に進む。
【0066】
ステップ305では、0をsign_resultとし、exp_maxをexp_resultとし、[第2所定値:frac_max]の範囲内にあるランダム値をfrac_resultとして処理を終了する。
【0067】
すなわち、sign_result=0;
exp_result=exp_max;
frac_result=random(['h0:frac_max])。
【0068】
ここで、system verilogプラットフォームにより提供されるランダム化方法を使用して['h0:frac_max]の範囲内にあるランダム値を生成して良い。
【0069】
ステップ306では、0をsign_resultとし、tmp3をexp_result、[第2所定値:第1所定値]の範囲内にあるランダム値をfrac_resultとして処理を終了する。
【0070】
すなわち、sign_result=0;
exp_result=tmp3;
frac_result=random(['h0:'h7F_FFFF」))。
【0071】
ここで、system verilogプラットフォームにより提供されるランダム化方法を使用して ['h0:'h7F_FFFF]の範囲内にあるランダム値を生成してよい。
【0072】
ステップ307では、第4中間変数tmp4として、[0:exp_min]の範囲にあるランダム値を生成する。
【0073】
system verilogプラットフォームにより提供されるランダム化方法を使用して、[0:exp_min]の範囲内にあるランダム値を生成して良い。即ち、exp_tmp=random([0:exp_min])。
【0074】
ステップ308では、tMP4==exp_minであるか否かを判定し、肯定の場合にステップ309に進み、否定の場合にステップ310に進む。
【0075】
ステップ309では、1をsign_resultとし、exp_minをexp_resultとし、[第2所定値:frac_min]の範囲内にあるランダム値をfrac_resultとして処理を終了する。
【0076】
すなわち、sign_result=1;
exp_result=exp_min;
frac_result=random(['h0:frac_min])。
【0077】
ここで、system verilogプラットフォームにより提供されるランダム化方法を使用して['h0:frac_min]の範囲内にあるランダム値を生成して良い。
【0078】
ステップ310では、1をsign_resultとし、tmp4をexp_resultとし、[第2所定値:第1所定値]の範囲内にあるランダム値をfrac_resultとして処理を終了する。
【0079】
すなわち、sign_result=1;
exp_result=tmp4;
frac_result=random(['h0:'h7F_FFFF」))。
【0080】
ここで、system verilogプラットフォームにより提供されるランダム化方法を使用して['h0:'h7F_FFFF]の範囲内にあるランダム値を生成してよい。
【0081】
第1符号ビット、第1指数ビット、及び第1小数ビットを取得した後、これらの情報から必要な浮動小数点数を生成することができる。即ち、取得されたsign_result、exp_result、及びfrac_resultに基づいて、制約条件を満たすランダム化の浮動小数点数を生成することができる。
【0082】
3)第3生成方法
本開示の一実施形態では、第3生成方法に従って第1符号ビット、第1指数ビット、及び第1小数ビットを生成する方法は、第2指数ビットが第3指数ビットに等しく、且つ第2小数ビットが第3小数ビット以下である場合に、1を第1符号ビットとし、第2指数ビット又は第3指数ビットを第1指数ビットとし、[第2小数ビット:第3小数ビット]の範囲内にあるランダム値を第1小数ビットとすることを含んでよい。
【0083】
さらに、本開示の一実施形態において、第3生成方法に従って第1符号ビット、第1指数ビット、及び第1小数ビットを生成する方法は、更に、第2指数ビットが第3指数ビットよりも大きい場合に、第5中間変数として[第2指数ビット:第3指数ビット]の範囲内にあるランダム値を生成し、第5中間変数が第3指数ビットに等しい場合に、1を第1符号ビットとし、第3指数ビットを第1指数ビットとし、[第2所定値:第3小数ビット]の範囲内にあるランダム値を第1小数ビットとし、第5中間変数が第2指数ビットに等しい場合に、1を第1符号ビットとし、第2指数ビットを第1指数ビットとし、[第2小数ビット:第1所定値]の範囲内にあるランダム値を第1小数ビットとし、第5中間変数が第3指数ビットと第2指数ビットのいずれにも等しくない場合に、1を第1符号ビットとし、第5中間変数を第1指数ビットとし、[第2所定値:第1所定値]の範囲内にあるランダム値を第1小数ビットとすることを含んでよい。
【0084】
上記の説明に基づいて、
図4は、本開示に記載された第3生成方法に従って第1符号ビット、第1指数ビット、及び第1小数ビットを生成するプロセスの概略図である。
図4に示されるように、以下の具体的な実現ステップを含むことができる。
【0085】
ステップ401では、exp_maxとexp_minとを比較し、exp_max>exp_minであればステップ402に進み、exp_max==exp_minであればステップ403に進み、exp_max<exp_minであればステップ405に進む。
【0086】
ステップ402では、エラーを報告して中止した後、処理を終了する。
【0087】
現在sign_max==1及びsign_min==1の場合に、第1パラメータ及び第2パラメータの符号は何れも負であることを示すため、exp_max>exp_minであれば、第1パラメータの指数部が第2パラメータの指数部よりも大きいことを表す。この場合、制約条件を満たす浮動小数点数は得られない。それに応じて、エラーを報告して中止して良い。
【0088】
ステップ403において、frac_max>frac_minであるか否かを判定し、肯定の場合にステップ402に進み、否定の場合にステップ404に進む。
【0089】
現在sign_max==1且つsign_min==1且つexp_max==exp_minの場合に、frac_max>frac_minであれば、第1パラメータ及び第2パラメータの符号は何れも負であり、且つ第1パラメータ及び第2パラメータの指数部は等しいが、第1パラメータの小数部は第2パラメータの小数部よりも大きいことを表す。この場合、制約条件を満たす浮動小数点数は得らない。それに応じて、エラーを報告して中止して良い。
【0090】
ステップ404では、1をsign_resultとし、exp_max又はexp_minをexp_resultとし、[frac_max:frac_min]の範囲内にあるランダム値をfrac_resultとして処理を終了する。
【0091】
即ち、sign_result=1;
exp_result=exp_max又はexp_min;
frac_result=random([frac_max:frac_min])。
【0092】
ここで、system verilogプラットフォームにより提供されるランダム化方法を使用して[frac_max:frac_min]の範囲内にあるランダム値を生成して良い。
【0093】
ステップ405では、第5中間変数TMP5として、[exp_max:exp_min]の範囲にあるランダム値を生成する。
【0094】
system verilogプラットフォームにより提供されるランダム化方法を使用して第5中間変数tmp5として[exp_max:exp_min]の範囲内にあるランダム値を生成して良い。すなわち、tmp5=random([exp_max:exp_min])。
【0095】
ステップ406では、tmp5をexp_min及びexp_maxと比較し、tmp5==exp_minであればステップ407に進み、tmp5==exp_maxであればステップ408に進み、そうでなければステップ409に進む。
【0096】
ステップ407では、1をsign_resultとし、exp_minをexp_resultとし、[第2所定値:frac_min]の範囲内にあるランダム値をfrac_resultとして処理を終了する。
【0097】
即ち、sign_result=1;
exp_result=exp_min;
frac_result=random(['h0:frac_min])。
【0098】
ここで、system verilogプラットフォームにより提供されるランダム化方法を利用して、['h0:frac_min]の範囲内にあるランダム値を生成して良い。
【0099】
ステップ408では、1をsign_resultとし、exp_maxをexp_resultとし、[frac_max:第1所定値]の範囲内にあるランダム値をfrac_resultとして処理を終了する。
【0100】
すなわち、sign_result=1;
exp_result=exp_max;
frac_result=random([frac_max:'h7F_FFFF」)。
【0101】
ここで、system verilogプラットフォームにより提供されるランダム化方法を利用して、[frac_max:'h7F_FFFF]の範囲内にあるランダム値を生成して良い。
【0102】
ステップ409では、1をsign_resultとし、tmp5をexp_resultとし、[第2所定値:第1所定値]の範囲内にあるランダム値をfrac_resultとして処理を終了する。
【0103】
すなわち、sign_result=1;
exp_result=tmp5;
frac_result=random(['h0:'h7F_FFFF」))。
【0104】
ここで、system verilogプラットフォームにより提供されるランダム化方法を使用して、frac_resultとして、['h0:'h7F_FFFF]の範囲内にあるランダム値を生成して良い。
【0105】
第1符号ビット、第1指数ビット、及び第1小数ビットを取得した後、これらの情報から所望の浮動小数点数を生成することができる。即ち、取得されたsign_result、exp_result、及びfrac_resultに基づいて、制約条件を満たすランダム化された浮動小数点数を生成することができる。
【0106】
これらのいずれの方法でも、浮動小数点データのランダム化を実現することができ、関連演算ユニットの検証に必要な浮動小数点データのインセンティブを提供し、更に検証効果等を向上させることができる。
【0107】
本開示に記載された方案では、浮動小数点数に加えて浮動小数点ベクトルを生成することができる。それに応じて、浮動小数点ベクトルを集積回路チップ検証のために利用することもできる。本開示の一実施形態では、前記浮動小数点数に基づいて指定サイズのランダム化の浮動小数点ベクトルを生成することにより、生成される浮動小数点データ型が豊富になり、検証効果等をさらに向上することができる。
【0108】
ユーザは、ランダム化により生成される浮動小数点数ベクトルを制約するサイズを設定できる。また、ランダム化により制約される線形演算タイプを指定することもできる。前記線形演算は、system verilogプラットフォームでサポートされる配列要素に対する演算操作である必要がある。また、浮動小数点数ベクトル中のデータユニットに前記線形演算を行った後、演算結果が指定されたデータ範囲内にある必要があり、すなわち、演算結果が指定された上限と下限の間にある必要がある。最終的に制約条件を満たす浮動小数点数ベクトルが返される。ここで、データユニットの数がlenであり、lenは前記指定サイズを示す。
【0109】
最初に、本開示に記載された方法に従ってランダム化の浮動小数点数を生成して良い。ここで、符号ビット、指数ビット、及び小数ビットは、それぞれ、第1符号ビット、第1指数ビット、及び第1小数ビットと呼ばれる。次に、前記浮動小数点数に基づいてランダム化の浮動小数点数ベクトルを生成してよい。
【0110】
本開示の一実施形態では、前記浮動小数点数に基づいてランダム化の浮動小数点数ベクトルを生成する方法は、第1指数ビットが0に等しい場合に、前記浮動小数点数と所定の第1係数との積を取得して第6中間変数を取得し、ランダム化の整数データの第1配列であって、サイズが前記指定サイズに等しく、且つ所定の線形演算が行われた結果が第6中間変数である第1配列を取得し、第1係数を第1配列内の各要素に均等に割り当て、線形演算の種類と合わせて浮動小数点数ベクトルを決定することを含んで良い。
【0111】
本開示の一実施形態では、線形演算が加算演算であれば、第1配列内の各要素をそれぞれ第1係数で除算して浮動小数点ベクトルを取得し、線形演算が乗算演算であれば、第1配列からM個の要素をランダムに選択し、選択された各要素をそれぞれ2で除算し、2で除算されたM個の要素を用いて第2配列を構成し、さらに、第2配列内の各要素をそれぞれ2のN乗で除算して浮動小数点数ベクトルを取得することができる。ここで、Nは、第3所定値を前記指定サイズで除算した商であり、Mは第3所定値を前記指定サイズで除算した剰余である。
【0112】
本開示の一実施形態では、第1係数は2の149乗であって良く、第3所定値は149であって良い。
【0113】
すなわち、第1係数factor 1=(2^126)*(2^23)=2^149;
tmp6=F_tmp*factor1。
【0114】
ここで、F_tmpは前記浮動小数点数を示し、tmp6は第6中間変数を示す。
【0115】
この場合、-(2^23)<tmp6<(2^23)であり、且つtmp6データの小数ビットは完全に0である。
【0116】
その後、randomize(Int_V)with{Length(Int_V)==len;F(Int_V)==tmp6}を得るように、system verilog配列ランダム化方法を用いて整数データの第1配列Int_Vを得てよい。すなわち、第1配列のサイズが指定サイズlenに等しく、且つ第1配列に対して所定の線形演算F()を行った結果が第6中間変数tmp6となる。
【0117】
さらに、線形演算の具体的な操作手順に応じて、factor1を第1配列内の各要素に均等に割り当て、線形演算が加算演算であれば、第1配列内の各要素をそれぞれfactor 1で除算して所望の浮動小数点数ベクトルを取得し、線形演算が乗算演算であれば、第1配列からランダムにM個の要素を選択し、選択された各要素をそれぞれ2で除算し、2で除算されたM個の要素を用いて第2配列を構成し、さらに第2配列内の各要素をそれぞれ2のN乗で除算して所望の浮動小数点数ベクトルを取得することができる。
【0118】
前記線形演算は、一般に、加算演算又は乗算演算であり、乗算演算は、一般に、指数乗算である。
【0119】
線形演算が加算演算であれば、F_V=Int_V/factor1であって良い。
【0120】
ここで、F_Vは得られた浮動小数点数ベクトルを示す。
【0121】
線形演算が乗算演算である場合、まず149をlenで除算して商Nと剰余Mを得、すなわち149=(len*N)+Mを得ることができる。その後、system verilogプラットフォームにより提供されるランダム化方法を利用して、第1配列からランダムにM個の要素を選択し、各要素をそれぞれ2で除算して第2配列F_V_preを取得し、その後、F_V_pre内の各要素をそれぞれ2^Nで除算して所望の浮動小数点数ベクトルを取得して良い。即ちF_V=F_V_pre/2^Nである。
【0122】
本開示の一実施形態では、前記浮動小数点数に基づいてランダム化の浮動小数点数ベクトルを生成する方法は、更に、第1指数ビットが0に等しくない場合、第1指数ビットから第2係数を決定し、前記浮動小数点数と第2係数との積を取得して第7中間変数を取得し、ランダム化の整数データの第3配列であって、サイズが前記指定サイズに等しく、所定の線形演算が行われた結果が第7中間変数である第3配列を取得し、第2係数を第3配列内の各要素に均等に割り当て、線形演算の種類と合わせて浮動小数点数ベクトルを決定することを含んで良い。
【0123】
本開示の一実施形態では、線形演算が加算演算であれば、第3配列内の要素をそれぞれ第2係数で除算して浮動小数点ベクトルを取得し、線形演算が乗算演算であれば、第3配列からM'個の要素をランダムに選択し、選択された各要素をそれぞれ2で除算し、2で除算されたM'個の要素を用いて第4配列を構成し、さらに第4配列内の各要素をそれぞれ2のN'乗で除算して浮動小数点数ベクトルを取得することができる。ここで、N'は第4所定値を指定サイズで除算した商であり、M'は第4所定値を指定サイズで除算した剰余である。
【0124】
本開示の一実施形態では、第2係数は2のP乗であって良い。Pは第4所定値であり、且つ149と第1指数ビットとの差である。
【0125】
即ち、第2係数factor 2=(2^(127-exp_tmp))*(2^23)=2^(149-exp_tmp);
tmp7=F_tmp*factor2。
【0126】
ここで、F_tmpは前記浮動小数点数を示し、tmp7は第7中間変数を示す。
【0127】
この場合、-(2^24)<Int_tmp<(2^24)であり、tmp7のデータの小数ビットは完全に0である。
【0128】
その後、randomize(Int_V')with{Length(Int_V')==len;F(Int_V')==tmp7}を得るように、system verilog配列ランダム化方法を利用して整数データの第3配列Int_V'を取得して良い。すなわち、第3配列のサイズは指定サイズlenに等しく、第3配列に対して所定の線形演算F()を行った結果は第7中間変数tmp7となる。
【0129】
さらに、線形演算の具体的な操作手順に応じて、factor 2を第3配列内の要素に均等に割り当て、線形演算が加算演算であれば、第3配列内の要素をそれぞれfactor 2で除算して所望の浮動小数点ベクトルを取得し、線形演算が乗算演算であれば、第3配列からランダムにM'個の要素を選択し、選択された各要素をそれぞれ2で除算し、2で除算されたM'個の要素を用いて第4配列を構成し、さらに第4配列内の各要素をそれぞれ2のN'乗で除算して所望の浮動小数点ベクトルを取得することができる。
【0130】
線形演算が加算演算の場合、F_V=Int_V'/factor2であって良い。
【0131】
ここで、F_Vは得られた浮動小数点数ベクトルを示す。
【0132】
線形演算が乗算演算の場合、最初に(149-第1指数ビット)をlenで除算して商N'及び剰余M'、即ち(149-第1指数ビット)=(len*N')+M'を得、その後に、system verilogプラットフォームにより提供されるランダム化方法を利用して、第3配列からM'個の要素をランダムに選択し、各要素をそれぞれ2で除算して、第4配列F_V_pre'を取得し、その後にF_V_pre'における各要素をそれぞれ2^N'で除算して所望の浮動小数点数ベクトルを得ることができる。すなわち、F_V=F_V_pre'/2^N'。
【0133】
なお、前述の方法の実施形態について、説明の簡素化のため、実施例を一連の動作の組み合わせとして表現したが、当業者であればわかるように、本開示による幾らかのステップは他の順序に従って又は同時に実行することができるため、本開示は記述された動作の順序に制限されない。次に、当業者は、明細書に記述された実施例はいずれも好ましい実施例に該当し、関連する動作及びモジュールは必ずしも本開示によって必要とされないことを理解すべきである。
【0134】
要約すると、本開示の方法の実施形態で説明された方法によれば、ランダム化された浮動小数点数と浮動小数点ベクトルを得ることにより、特定のデータに対するランダム化しか提供していない現在のシステムverilogプラットフォームの欠点を補うことができる。そして、ユーザにとっていくつかの制約条件の設定のような簡単な設定をすれば良く、他の処理はすべて自動的に完了することができるため、ユーザ操作が簡単になる。また、得られた浮動小数点数及び浮動小数点ベクトルを利用して、浮動小数点演算ユニット及び浮動小数点ベクトル演算ユニットの検証を行うなど、集積回路チップ検証における相関演算ユニットの検証を行うことができ、前記相関演算ユニットの検証収束過程を高速化することができる。
【0135】
以上は、方法の実施形態についての説明であり、以下では、装置の実施形態を介して、本開示に記載された態様についてさらに説明する。
【0136】
図5は本開示に記載された集積回路チップ検証装置の第1実施形態500の構成図であり、パラメータ取得モジュール501と、第1生成モジュール502と、第2生成モジュール503と、検証モジュール504とを備える。
【0137】
パラメータ取得モジュール501は、要求される浮動小数点数の上限値である第1パラメータと、要求される浮動小数点数の下限値である第2パラメータとを取得する。
【0138】
第1生成モジュール502は、第1パラメータ及び第2パラメータに基づいて、ランダム化の浮動小数点数の第1符号ビット、第1指数ビット及び第1小数ビットをそれぞれ生成する。
【0139】
第2生成モジュール503は、第1符号ビット、第1指数ビット、及び第1小数ビットに基づいて前記浮動小数点数を生成する。
【0140】
検証モジュール504は、前記浮動小数点数を利用して集積回路チップ検証を行う。
【0141】
上述した装置の実施形態に記載された方案を用いて、浮動小数点データのランダム化を実現することができるため、集積回路チップ検証における関連演算ユニットの検証に必要な浮動小数点データのインセンティブを提供し、検証効果等を向上させることができる。
【0142】
浮動小数点データは、浮動小数点数及び浮動小数点ベクトルを含んで良い。浮動小数点数は、符号ビット、指数ビット、小数ビットで構成できる。
【0143】
本開示の一実施形態では、第1生成モジュール502は、第1パラメータの第2符号ビット、第2指数ビット、及び第2小数ビットをそれぞれ取得し、第2パラメータの第3符号ビット、第3指数ビット、及び第3小数ビットをそれぞれ取得し、さらに、取得された第2符号ビット、第2指数ビット、第2小数ビット、第3符号ビット、第3指数ビット、及び第3小数ビットに基づいて、前記浮動小数点数の第1符号ビット、第1指数ビット、及び第1小数ビットを生成することができる。
【0144】
本開示の一実施形態では、第1生成モジュール502は、第2符号ビット及び第3符号ビットの両方が0に等しい場合に、第1生成方法に従って第1符号ビット、第1指数ビット、及び第1小数ビットを生成し、第2符号ビットが0に等しく、第3符号ビットが1に等しい場合、第2生成方法に従って第1符号ビット、第1指数ビット、及び第1小数ビットを生成し、第2符号ビットが1に等しく、第3符号ビットが1に等しい場合、第3生成方法に従って第1符号ビット、第1指数ビット、及び第1小数ビットを生成することができる。
【0145】
本開示の一実施形態では、第1生成モジュール502が第1生成方法に従って第1符号ビット、第1指数ビット、及び第1小数ビットを生成する方法は、第2指数ビットが第3指数ビットに等しく、第2小数ビットが第3小数ビット以上である場合に、0を第1符号ビットとし、第2指数ビット又は第3指数ビットを第1指数ビットとし、[第3小数ビット:第2小数ビット]の範囲内にあるランダム値を第1小数ビットとすることを含んで良い。
【0146】
本開示の一実施形態において、第1生成モジュール502が第1生成方法に従って第1符号ビット、第1指数ビット、及び第1小数ビットを生成する方法は、更に、第2指数ビットが第3指数ビットよりも大きい場合、[第3指数ビット:第2指数ビット]の範囲内にあるランダム値を第1中間変数として生成し、第1中間変数が第3指数ビットに等しい場合、0を第1符号ビットとし、第3指数ビットを第1指数ビットとし、[第3小数ビット:第1所定値]の範囲内にあるランダム値を第1小数ビットとし、第1中間変数が第2指数ビットに等しい場合、0を第1符号ビットとし、第2指数ビットを第1指数ビットとし、[第2所定値:第2小数ビット]の範囲内にあるランダム値を第1小数ビットとし、第1中間変数が第3指数ビット及び第2指数ビットのいずれにも等しくない場合に、0を第1符号ビットとし、第1中間変数を第1指数ビットとし、[第2所定値:第1所定値]の範囲内にあるランダム値を第1小数ビットとすることを含んで良い。
【0147】
本開示の一実施形態では、第1生成モジュール502が第2生成方法に従って第1符号ビット、第1指数ビット、及び第1小数ビットを生成する方法は、第2中間変数として[0:1]の範囲内にあるランダム値を生成し、第2中間変数が0に等しい場合、第3中間変数として[0:第2指数ビット]の範囲内にあるランダム値を生成し、第3中間変数が第2指数ビットに等しい場合、0を第1符号ビットとし、第2指数ビットを第1指数ビットとし、[第2所定値:第2小数ビット]の範囲内にあるランダム値を第1小数ビットとし、第3中間変数が第2指数ビットに等しくない場合、0を第1符号ビットとし、第3中間変数を第1指数ビットとし、[第2所定値:第1所定値]の範囲内にあるランダム値を第1小数ビットとすることを含んで良い。
【0148】
本開示の一実施形態では、第1生成モジュール502が第2生成方法に従って第1符号ビット、第1指数ビット、及び第1小数ビットを生成する方法は、更に、第2中間変数が0に等しくない場合、第4中間変数として[0:第3指数ビット]の範囲内にあるランダム値を生成し、第4中間変数が第3指数ビットに等しい場合、1を第1符号ビットとし、第3指数ビットを第1指数ビットとし、[第2所定値:第3小数ビット]の範囲内にあるランダム値を第1小数ビットとし、第4中間変数が第3指数ビットに等しくない場合に、1を第1符号ビットとし、第4中間変数を第1指数ビットとし、[第2所定値:第1所定値]の範囲内にあるランダム値を第1小数ビットとすることを含んで良い。
【0149】
本開示の一実施形態では、第1生成モジュール502が第3生成方法に従って第1符号ビット、第1指数ビット、及び第1小数ビットを生成する方法は、第2指数ビットが第3指数ビットに等しく、第2小数ビットが第3小数ビット以下である場合、1を第1符号ビットとし、第2指数ビット又は第3指数ビットを第1指数ビットとし、[第2小数点:第3小数点]の範囲内にあるランダム値を第1小数ビットとすることを含んで良い。
【0150】
本開示の一実施形態では、第1生成モジュール502が第3生成方法に従って第1符号ビット、第1指数ビット、及び第1小数ビットを生成する方法は、更に、第2指数ビットが第3指数ビットよりも大きい場合、第5中間変数として[第2指数ビット:第3指数ビット]の範囲内にあるランダム値を生成し、第5中間変数が第3指数ビットに等しい場合、1を前記第1符号ビットとし、第3指数ビットを第1指数ビットとし、[第2所定値:第3小数ビット]の範囲内にあるランダム値を第1小数ビットとし、第5中間変数が第2指数ビットに等しい場合、1を第1符号ビットとし、第2指数ビットを第1指数ビットとし、[第2小数ビットの桁:第1所定値]の範囲内にあるランダム値を第1小数ビットとし、第5中間変数が第3指数ビットと第2指数ビットのいずれにも等しくない場合に、1を第1符号ビットとし、第5中間変数を第1指数ビットとし、[第2所定値:第1所定値]の範囲内にあるランダム値を第1小数ビットとすることを含んで良い。
【0151】
図6は、本開示に記載された集積回路チップ検証装置の第2実施形態600の構成図である。
図6に示すように、パラメータ取得モジュール501と、第1生成モジュール502と、第2生成モジュール503と、検証モジュール504と、第3生成モジュール505とを備える。
【0152】
なお、パラメータ取得モジュール501、第1生成モジュール502及び第2生成モジュール503は、
図5に示す実施形態と同様であるので、詳しく説明しない。
【0153】
第3生成モジュール505は、前記浮動小数点数に基づいて指定サイズのランダム化の浮動小数点数ベクトルを生成する。それに応じて、検証モジュール504は、更に前記浮動小数点数ベクトルを利用して集積回路チップ検証を行って良い。
【0154】
本開示の一実施形態では、第3生成モジュール505は、第1指数ビットが0に等しい場合に、浮動小数点数と所定の第1係数との積を取得して第6中間変数を得、ランダム化の整数データの第1配列であって、サイズが指定サイズに等しく、所定の線形演算が行われた結果が第6中間変数である第1配列を取得し、第1係数を第1配列内の各要素に均等に割り当て、線形演算の種類と合わせて浮動小数点数ベクトルを決定することができる。
【0155】
本開示の一実施形態では、第3生成モジュール505は、線形演算が加算演算である場合に、第1配列内の各要素をそれぞれ第1係数で除算して浮動小数点ベクトルを得、線形演算が乗算演算である場合、第1配列からM個の要素をランダムに選択し、選択された各要素をそれぞれ2で除算し、2で除算されたM個の要素を用いて第2配列を構成し、第2配列内の各要素をそれぞれ2のN乗で除算して浮動小数点数ベクトルを得ることができる。ここで、Nは第3所定値を指定サイズで除算した商であり、Mは第3所定値を指定サイズで除算した剰余である。
【0156】
本開示の一実施形態では、第1係数は2の149乗であって良く、第3所定値は149であって良い。
【0157】
本開示の一実施形態では、第3生成モジュール505は、第1指数ビットが0に等しくない場合に、第1指数ビットに基づいて第2係数を決定し、浮動小数点数と第2係数の積を取得して第7中間変数を得、ランダム化の整数データの第3配列であって、サイズが指定サイズに等しく、所定の線形演算が行われた結果が第7中間変数である第3配列を取得し、第2係数を第3配列内の各要素に均等に割り当て、線形演算の種類と合わせて浮動小数点数ベクトルを決定することができる。
【0158】
本開示の一実施形態では、第3生成モジュール505は、線形演算が加算演算である場合に、第3配列内の各要素を第2係数で除算して浮動小数点ベクトルを得、線形演算が乗算演算である場合、第3配列からランダムにM'個の要素を選択し、選択された各要素をそれぞれ2で除算し、2で除算されたM'個の要素を用いて第4配列を構成し、第4配列内の各要素をそれぞれ2のN'乗で除算して浮動小数点数ベクトルを得ることができる。ここで、N'は第4所定値を指定サイズで除算した商であり、M'は第4所定値を指定サイズで除算した剰余である。
【0159】
本開示の一実施形態では、第2係数は2のP乗であってよく、Pは第4所定値であり、149と第1指数ビットとの差である。
【0160】
図5及び
図6に示す装置の実施形態の具体的なワークフローは、上述した方法の実施形態における関連説明を参照することができる。
【0161】
要約すると、本開示の装置の実施形態で説明された方案によれば、ランダム化の浮動小数点数と浮動小数点ベクトルが得られるため、特定データに対するランダム化しか提供していない現在のsystem verilogプラットフォームの欠点を補うことができる。そして、ユーザにとっていくつかの制約条件の設定のような簡単な設定をすればよく、他の処理がすべて自動的に完了することができるため、ユーザ操作が簡単になる。また、得られた浮動小数点数及び浮動小数点ベクトルを利用して、浮動小数点演算ユニット及び浮動小数点ベクトル演算ユニットの検証を行うなど、集積回路チップ検証における関連演算ユニットの検証を行うことができ、前記関連演算ユニットの検証収束過程等を高速化することができる。
【0162】
本開示に記載された技術案は、人工知能の分野に適用することができ、特に人工知能チップ及びクラウドコンピューティング等の分野に関する。人工知能は、コンピュータが人間の思考過程と知能行為(例えば学習、推理、思考、計画など)をシミュレートすることを研究する学科であり、ハードウェアレベルの技術とソフトウェアレベルの技術の両方がある。人工知能のハードウェア技術には、一般的に、例えばセンサ、専用人工知能チップ、クラウドコンピューティング、分散ストレージ、ビッグデータ処理等の技術が含まれる。人工知能のソフトウェア技術は、主にコンピュータビジョン技術、音声認識技術、自然言語処理技術及び機械学習/ディープラーニング、ビッグデータ処理技術、知識マップ技術等のいくつかの方向を含む。
【0163】
本開示の技術案において、関わるユーザの個人情報の取得、記憶、応用、加工、伝送、提供及び配信等は、いずれも関連法律法規の規定に適合しており、公序良俗に反するものではない。
【0164】
本開示の実施形態によれば、本開示は更に電子デバイス、可読記憶媒体、及びコンピュータプログラム製品を提供する。
【0165】
図7は、本開示の実施形態を実施するために使用され得る電子デバイス700の模式的なブロック図である。電子デバイスは、ラップトップ、デスクトップコンピュータ、ワークベンチ、サーバ、ブレードサーバ、大型コンピュータ、及び他の適切なコンピュータのような、様々な形態のデジタルコンピュータを表す。電子デバイスは更に、PDA、携帯電話、スマートフォン、ウェアラブルデバイス、及び他の同様のコンピューティングデバイスなどの様々な形態のモバイルデバイスを表すことができる。本明細書に示す構成要素、それらの接続及び関係、ならびにそれらの機能は、単なる一例であり、本明細書に記載及び/又は要求された本開示の実現を制限することではない。
【0166】
図7に示すように、デバイス700は、読み取り専用メモリ(ROM)702に記憶されたコンピュータプログラム、又は記憶手段708からランダムアクセスメモリ(RAM)703にロードされたコンピュータプログラムに従って、様々な適切な動作及び処理を実行することができる演算手段701を含む。RAM703には、デバイス700の動作に必要な各種のプログラムやデータが記憶されてもよい。演算手段701、ROM702及びRAM703は、バス704を介して接続されている。入出力(I/O)インターフェース705もバス704に接続されている。
【0167】
例えばキーボード、マウス等の入力手段706と、例えば様々なタイプのディスプレイ、スピーカ等の出力手段707と、例えば磁気ディスク、光ディスク等の記憶手段708と、例えばネットワークカード、モデム、無線通信トランシーバなどの通信手段709を含むデバイス700の複数の構成要素は、I/Oインターフェース705に接続される。通信手段709は、デバイス700が例えばインターネットのコンピュータネットワーク及び/又は様々な電気通信ネットワークを介して他のデバイスと情報/データを交換することを可能にする。
【0168】
演算手段701は、処理能力及び演算能力を有する様々な汎用及び/又は専用の処理コンポーネントであってよい。演算手段701のいくつかの例は、中央処理ユニット(CPU)、グラフィック処理ユニット(GPU)、様々な専用の人工知能(AI)演算チップ、機械学習モデルアルゴリズムを実行する様々な演算ユニット、デジタル信号プロセッサ(DSP)、及び任意の適切なプロセッサ、コントローラ、マイクロコントローラなどを含むが、これらに限定されない。演算手段701は、上述した様々な方法及び処理、例えば本開示に記載の方法を実行する。例えば、幾つかの実施形態では、本開示に記載の方法は、例えば記憶手段708のような機械可読媒体に物理的に組み込まれたコンピュータソフトウェアプログラムとして実装されてもよい。幾つかの実施形態では、コンピュータプログラムの一部又は全部は、ROM702及び/又は通信手段709を介してデバイス700にロード及び/又はインストールすることができる。コンピュータプログラムがRAM703にロードされ、演算手段701により実行されると、本開示に記載の方法の1つ又は複数のステップを実行することができる。代替的に、他の実施形態では、演算手段701は、本開示に記載の方法を実行するように、他の任意の適切な方法で(例えば、ファームウェアを介する)構成されてもよい。
【0169】
本明細書で前述したシステム及び技術の様々な実施形態は、デジタル電子回路システム、集積回路システム、フィールドプログラマブルゲートアレイ(FPGA)、専用集積回路(ASIC)、専用標準製品(ASSP)、システムオンチップシステム(SOC)、ロードプログラマブル論理デバイス(CPLD)、コンピュータハードウェア、ファームウェア、ソフトウェア、及び/又はこれらの組み合わせにおいて実装されてもよい。これらの様々な実施形態は、1つ又は複数のコンピュータプログラムで実施されることを含んで良い。当該1つ又は複数のコンピュータプログラムは、少なくとも1つのプログラマブルプロセッサを含むプログラマブルシステム上で実行及び/又は解釈することができる。当該プログラマブルプロセッサは、専用又は汎用のプログラマブルプロセッサであって、記憶システム、少なくとも1つの入力装置、及び少なくとも1つの出力装置からデータ及び命令を受信し、当該記憶システム、当該少なくとも1つの入力装置、及び当該少なくとも1つの出力装置にデータ及び命令を転送することができる。
【0170】
本開示の方法を実施するためのプログラムコードは、1つ又は複数のプログラミング言語の任意の組み合わせを用いて記述することができる。これらのプログラムコードは、汎用コンピュータ、専用コンピュータ、又は他のプログラマブルデータ処理装置のプロセッサ又はコントローラに提供することにより、プログラムコードがプロセッサ又はコントローラにより実行されると、フローチャート及び/又はブロック図に指定された機能/動作を実行するようにすることができる。プログラムコードは、全てがマシン上で実行されても良く、一部がマシン上で実行されても良く、スタンドアロンパッケージとして一部的にマシン上で実行され且つ一部的にリモートマシン上で実行され、或いは全てがリモートマシン又はサーバ上で実行されても良い。
【0171】
本開示の文脈では、機械可読媒体は、有形の媒体であって、命令実行システム、装置又はデバイスにより使用され、或いは命令実行システム、装置又はデバイスと合わせて使用されるプログラムを含むか記憶することができる。機械可読媒体は、機械可読信号媒体又は機械可読記憶媒体であってよい。機械可読媒体は、電子的、磁気的、光学的、電磁気的、赤外線的、又は半導体的なシステム、装置又はデバイス、あるいはこれらの任意の適切な組み合わせを含んで良いが、これらに限定されない。機械可読記憶媒体のより具体的な例は、1つ又は複数のラインに基づく電気的接続、ポータブルコンピュータディスク、ハードディスク、ランダムアクセスメモリ(RAM)、読み取り専用メモリ(ROM)、消去可能プログラマブル読み取り専用メモリ(EPROM又はフラッシュメモリ)、光ファイバ、携帯型コンパクトディスク読み取り専用メモリ(CD-ROM)、光学記憶装置、磁気記憶装置、又はこれらの任意の適切な組み合わせを含む。
【0172】
ユーザとのインタラクションを提供するために、本明細書に記載されたシステム及び技術は、ユーザに情報を表示するための表示装置(例えば、CRT(陰極線管)又はLCD(液晶ディスプレイ)モニタ)と、ユーザにより入力をコンピュータに提供するキーボード及びポインティングデバイス(例えば、マウス又はトラックボール)と備えるコンピュータ上に実施されてよい。他の種類の装置は、ユーザとのインタラクションを提供するためにも使用され得る。例えば、ユーザに提供されるフィードバックは、任意の形態のセンシングフィードバック(例えば、視覚フィードバック、聴覚フィードバック、又は触覚フィードバック)であって良く、ユーザからの入力を任意の形式(音入力、音声入力、又は触覚入力を含む)で受信して良い。
【0173】
本明細書に記載されたシステム及び技術は、バックエンド構成要素を含むコンピューティングシステム(例えば、データサーバとする)、又はミドルウェア構成要素を含むコンピューティングシステム(例えば、アプリケーションサーバ)、又はフロントエンド構成要素を含むコンピューティングシステム(例えば、グラフィカルユーザインターフェースもしくはウェブブラウザを有するクライアントコンピュータであり、ユーザは、当該グラフィカルユーザインターフェースもしくは当該ウェブブラウザを通じて本明細書で説明されるシステムと技術の実施形態とインタラクションすることができる)、そのようなバックエンド構成要素、ミドルウェア構成要素、もしくはフロントエンド構成要素の任意の組合せを含むコンピューティングシステムに実施されることが可能である。システムの構成要素は、任意の形態又は媒体のデジタルデータ通信(例えば、通信ネットワーク)によって相互に接続されることが可能である。通信ネットワークの例は、ローカルエリアネットワーク(「LAN」)、ワイド・エリア・ネットワーク(「WAN」)、インターネットワークを含む。
【0174】
コンピュータシステムは、クライアントとサーバを含み得る。クライアントとサーバは、一般的に互いから遠く離れており、通常は、通信ネットワークを通じてインタラクトする。クライアントとサーバとの関係は、相応するコンピュータ上で実行され、互いにクライアント-サーバの関係を有するコンピュータプログラムによって生じる。サーバはクラウドサーバであっても良く、分散システムのサーバであっても良く、ブロックチェーンを組み合わせたサーバであってもよい。
【0175】
以上で示された様々な形式のフローを使用して、ステップを並べ替え、追加、又は削除できることを理解されたい。例えば、本開示に説明される各ステップは、並列の順序又は順次的な順序で実施されてもよいし、又は異なる順序で実行されてもよく、本開示で開示された技術案の望ましい結果が達成できる限り、ここで制限されない。
【0176】
上記の具体的な実施形態は本開示の保護範囲に対する制限を構成しない。設計要件及び他の要因に従って、様々な修正、組み合わせ、部分的組み合わせ及び置換を行うことができることを当業者は理解するべきである。本開示の精神及び原則の範囲内で行われる修正、同等の置換、改善は、何れも本開示の保護範囲内に含まれるべきである。