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

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

▶ 株式会社半導体エネルギー研究所の特許一覧

(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-05-15
(45)【発行日】2024-05-23
(54)【発明の名称】パラメータ探索方法
(51)【国際特許分類】
   G06F 30/367 20200101AFI20240516BHJP
   G06N 99/00 20190101ALI20240516BHJP
   G06N 20/00 20190101ALI20240516BHJP
   G06N 3/02 20060101ALI20240516BHJP
【FI】
G06F30/367
G06N99/00 180
G06N20/00
G06N3/02
【請求項の数】 7
(21)【出願番号】P 2020571925
(86)(22)【出願日】2020-02-04
(86)【国際出願番号】 IB2020050854
(87)【国際公開番号】W WO2020165688
(87)【国際公開日】2020-08-20
【審査請求日】2022-12-05
(31)【優先権主張番号】P 2019025661
(32)【優先日】2019-02-15
(33)【優先権主張国・地域又は機関】JP
(31)【優先権主張番号】P 2019070351
(32)【優先日】2019-04-02
(33)【優先権主張国・地域又は機関】JP
(73)【特許権者】
【識別番号】000153878
【氏名又は名称】株式会社半導体エネルギー研究所
(72)【発明者】
【氏名】小國 哲平
(72)【発明者】
【氏名】長多 剛
(72)【発明者】
【氏名】福留 貴浩
【審査官】田中 幸雄
(56)【参考文献】
【文献】特開2013-20614(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 30/367
G06N 99/00
G06N 20/00
G06N 3/02
(57)【特許請求の範囲】
【請求項1】
分類モデル、ニューラルネットワーク、パラメータ抽出部、回路シミュレータと、制御部と、を用いたパラメータ探索方法であって、
前記パラメータ探索方法は、第1の処理と、第2の処理と、を有し、
前記第1の処理は、
前記パラメータ抽出部に、半導体素子のデータセットが与えられるステップと、
前記パラメータ抽出部が、前記半導体素子のモデルパラメータを抽出するステップと、
前記回路シミュレータが、第1のネットリストと、前記モデルパラメータと、を用いてシミュレーションし、第1の出力結果を出力するステップと、
前記分類モデルが、前記モデルパラメータと、前記第1の出力結果を用いて学習するステップと、
を経て実施される処理であり、
前記第2の処理は、
前記制御部が、前記分類モデルで分類された第1のモデルパラメータを選択し、前記第1のモデルパラメータと、前記第1のモデルパラメータに含まれる第1のパラメータ変数と、第2のネットリストと、を前記回路シミュレータに与えるステップと、
前記制御部が、前記ニューラルネットワークに、前記第1のパラメータ変数を与えるステップと、
前記ニューラルネットワークが、前記第1のパラメータ変数から第1の行動価値関数Qを算出するステップと、
前記制御部が、前記第1のパラメータ変数を、前記第1の行動価値関数Qによって第2のパラメータ変数に更新し、前記2のパラメータ変数前記ニューラルネットワークに与えるステップと、
前記回路シミュレータが、前記第2のネットリストと、前記第2のパラメータ変数を用いてシミュレーションし、第2の出力結果を出力するステップと
記第2の出力結果が、前記第2のネットリストに与えられた収束条件を満たさない場合、前記制御部が、報酬を設定し、前記報酬を用いて前記ニューラルネットワークの重み係数を更新するステップを有し
記第2の出力結果、前記第2のネットリストに与えられた収束条件を満たした場合に、前記第2のパラメータ変数が前記第2のネットリストの要求条件に適した前記半導体素子のモデルパラメータであると判定するステップを有する処理であるパラメータ探索方法。
【請求項2】
分類モデルと、ニューラルネットワークと、パラメータ抽出部と、回路シミュレータと、制御部と、を用いたパラメータ探索方法であって、
前記パラメータ探索方法は、第1の処理と、第2の処理と、を有し、
前記第1の処理は、
前記パラメータ抽出部に、半導体素子の測定データと、プロセスパラメータを含むデータセットと、が与えられるステップと、
前記パラメータ抽出部が、モデルパラメータを抽出するステップと、
前記制御部が、前記回路シミュレータに対し第1のネットリストを与えるステップと、
前記回路シミュレータ、前記モデルパラメータと、前記第1のネットリストと、を用いて第1の出力結果を出力するステップと、
前記分類モデルが、前記モデルパラメータと、前記第1の出力結果を用いて学習するステップと、
を経て実施される処理であり、
前記第2の処理は、
前記制御部が、前記分類モデルで分類された第1のモデルパラメータを選択し、前記第1のモデルパラメータと、前記第1のモデルパラメータに含まれる第1のパラメータ変数と、第2のネットリストと、を前記回路シミュレータに与えるステップと、
前記制御部が、前記ニューラルネットワークに、前記第1のパラメータ変数を与えるステップと、を有し、
前記ニューラルネットワークが、前記第1のパラメータ変数から第1の行動価値関数Qを算出するステップと、
前記制御部が、前記第1のパラメータ変数を、前記第1の行動価値関数Qによって第2のパラメータ変数に更新し、前記2のパラメータ変数前記ニューラルネットワークに与えるステップと、
前記回路シミュレータが、前記第2のネットリストと、前記第2のパラメータ変数を用いてシミュレーションし、第2の出力結果を出力するステップと
記第2の出力結果、前記第2のネットリストに与えられた収束条件を満たさない場合、前記制御部が、前記第2の出力結果が前記収束条件に近づいた場合に高い報酬を設定し、前記第2の出力結果が前記収束条件から離れた場合に低い報酬を設定するステップと、
前記ニューラルネットワークが、前記第2のパラメータ変数を用いて第2の行動価値関数Qを算出するステップと、
前記ニューラルネットワークが、前記報酬と、前記第1の行動価値関数Qと前記第2の行動価値関数Qを用いて算出する誤差と、を用いて前記ニューラルネットワークの重み係数を更新するステップを有し、
記第2の出力結果、前記第2のネットリストに与えられた収束条件を満たした場合に、前記第2のパラメータ変数が前記第2のネットリストの要求条件に適した前記半導体素子のモデルパラメータであると判定するステップを有する処理であるパラメータ探索方法。
【請求項3】
請求項1又は請求項2において、
前記第1のネットリストは、インバータ回路、ソースフォロワ回路、又はソース接地回路のいずれか一又は複数を含むパラメータ探索方法。
【請求項4】
請求項1又は請求項2において、
前記第1のパラメータ変数の数が、2つ以上であるパラメータ探索方法。
【請求項5】
請求項1又は請求項2において、
前記ニューラルネットワークの出力層のユニット数が、前記ニューラルネットワークの入力ユニット数の2倍以上であるパラメータ探索方法。
【請求項6】
請求項1乃至請求項3のいずれか一において、
前記第1のネットリストを用いて抽出される前記第1の出力結果は、リーク電流、出力電流、信号の立ち上がり時間、又は信号の立下り時間のいずれか一又は複数を含むパラメータ探索方法。
【請求項7】
請求項1乃至請求項3のいずれか一において、
前記第1のネットリストで用いられる半導体素子がトランジスタであり、前記トランジスタは半導体層に金属酸化物を有するパラメータ探索方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明の一態様は、コンピュータを利用した半導体パラメータの学習方法、分類方法、選択方法、又は探索方法に関する。
【0002】
なお、本発明の一態様は、上記の技術分野に限定されない。本明細書等で開示する本発明の一態様の技術分野としては、化学合成のパラメータ探索等、を一例として挙げることができる。
【0003】
なお、本発明の一態様は、コンピュータに関する。本発明の一態様は、コンピュータを利用した電子化されたネットリストのパラメータ探索方法に関する。本発明の一態様は、半導体素子のデータセットからモデルパラメータを抽出し、モデルパラメータの集まりを分類モデルに学習させ、分類モデルによってモデルパラメータを分類することができるパラメータ分類方法に関する。本発明の一態様は、対象とするネットリストの要求特性に適しているモデルパラメータを当該パラメータ分類方法によって選択するパラメータ選択方法に関する。本発明の一態様は、回路シミュレータに与えるネットリストの変数が、ネットリストの要求特性を満たす最適候補になるように強化学習を用いて探索するパラメータ探索方法に関する。
【背景技術】
【0004】
ユーザは、回路設計をするために回路情報であるネットリストを作成する。但し、回路情報(以降、ネットリストと呼ぶ)には、動作環境によって要求特性が異なっている。ユーザは、ネットリストの要求特性を実現するために、回路シミュレータを用いてシミュレーションを行う。ユーザは、ネットリストに含まれる半導体素子のモデルパラメータを更新しながらネットリストの要求特性を満たすモデルパラメータの最適候補を探索する。
【0005】
なお、回路シミュレータでシミュレーションをするためには、半導体素子の測定データとプロセスパラメータを用いて適切なモデルパラメータを抽出し、そのモデルパラメータを回路シミュレータに与える必要がある。ユーザが、ネットリストの要求特性を満たす最適候補になるモデルパラメータを選択するためには、モデルパラメータを更新する度に回路シミュレータによる回路シミュレーションを行うことが求められる。したがって、最適候補となるモデルパラメータを探索するには、回路シミュレータのシミュレーション結果をユーザがシミュレーションを実施する度に判定する必要がある。
【0006】
近年では、遺伝的アルゴリズムを用いてトランジスタの物理モデルのパラメータ調整をすることが知られている。特許文献1では、遺伝的アルゴリズムをトランジスタの物理モデルのパラメータ調整に用いたパラメータ調整装置が開示されている。
【先行技術文献】
【特許文献】
【0007】
【文献】特開2005-038216号公報
【発明の概要】
【発明が解決しようとする課題】
【0008】
ネットリストに含まれる複数の半導体素子のモデルパラメータを扱う場合、ユーザが、ネットリストの要求特性を満たすモデルパラメータであるかを判定しなければならないという課題がある。
【0009】
例えば、ネットリストが複数の半導体素子を含む場合、ネットリストの要求特性を満たす当該半導体素子のモデルパラメータは、一つに限定されず、複数存在する場合がある。ユーザがシミュレーション結果を判定する場合、ユーザは、要求特性を満たすパラメータを抽出すると最適値と判定してしまう可能性がある。言い換えると、ユーザは、より要求特性を満たす可能性のある異なるモデルパラメータの存在を見落としてしまう問題がある。したがって回路シミュレータのシミュレーション結果の判定は、ユーザの経験値に依存する課題がある。
【0010】
また、同じネットリストでも、ネットリストの要求特性が異なる場合がある。例えば、低消費電力を目的とする回路、動作周波数を重視する回路、又は指定される周波数帯域で安定に動作する回路等がある。ネットリストの要求特性は、モデルパラメータが固定されると要求特性を満たせない課題がある。
【0011】
上記問題に鑑み、本発明の一態様は、コンピュータを利用した電子化されたネットリストのパラメータ探索方法を提供することを課題の一とする。又は、本発明の一態様は、半導体素子のデータセットからモデルパラメータを抽出し、モデルパラメータの集まりを分類モデルに学習させ、分類モデルによってモデルパラメータを分類することができるパラメータ分類方法を提供することを課題の一とする。又は、本発明の一態様は、対象とするネットリストの要求特性に適しているモデルパラメータを当該パラメータ分類方法によって選択するパラメータ選択方法を提供することを課題の一とする。
【0012】
本発明の一態様は、回路シミュレータに与えるネットリストの変数が、ネットリストの要求特性を満たす最適候補になるように強化学習を用いて探索するパラメータ探索方法を提供することを課題の一とする。
【0013】
なお、これらの課題の記載は、他の課題の存在を妨げるものではない。なお、本発明の一態様は、これらの課題の全てを解決する必要はないものとする。なお、これら以外の課題は、明細書、図面、請求項などの記載から、自ずと明らかとなるものであり、明細書、図面、請求項などの記載から、これら以外の課題を抽出することが可能である。
【課題を解決するための手段】
【0014】
本発明の一態様は、分類モデル、ニューラルネットワーク、パラメータ抽出部、回路シミュレータ、及び制御部を用いたパラメータ探索方法である。パラメータ抽出部に、半導体素子のデータセットが与えられるステップを有する。パラメータ抽出部が、半導体素子のモデルパラメータを抽出するステップを有する。回路シミュレータが、第1のネットリストと、モデルパラメータと、を用いてシミュレーションし、第1の出力結果を出力するステップを有する。分類モデルが、第1の出力結果を学習し、モデルパラメータを分類し、第1のモデルパラメータを出力するステップを有する。制御部が、回路シミュレータに、第2のネットリストと、第2のモデルパラメータとを与えるステップを有する。制御部が、ニューラルネットワークに、第2のモデルパラメータに含まれる第1のモデルパラメータ変数を与えるステップを有する。ニューラルネットワークが、第1のモデルパラメータ変数から第1の行動価値関数Qを算出するステップを有する。制御部が、第1のモデルパラメータ変数を、第1の行動価値関数Qによって第2のモデルパラメータ変数に更新し、第3のモデルパラメータを出力するステップを有する。回路シミュレータが、第2のネットリストと、第3のモデルパラメータを用いてシミュレーションし、第2の出力結果を出力するステップを有する。制御部が、第2のネットリストに与えられた収束条件を用いて第2の出力結果を判定するステップを有する。第2の出力結果を判定し、第2のネットリストの要求特性を満たさない場合に、制御部が、報酬を設定し、報酬を用いてニューラルネットワークの重み係数を更新するステップを有する。第2の出力結果を判定し、第2のネットリストの要求特性を満たした場合に、第1のモデルパラメータ変数が第2のネットリストの最適候補であると判定することができる。
【0015】
本発明の一態様は、分類モデルと、ニューラルネットワークと、パラメータ抽出部と、回路シミュレータと、制御部を用いたパラメータ探索方法である。パラメータ抽出部に、半導体素子の測定データと、プロセスパラメータを含むデータセットと、が与えられるステップを有する。パラメータ抽出部が、モデルパラメータを抽出するステップを有する。制御部が、回路シミュレータに対し第1のネットリストを与えるステップを有する。回路シミュレータは、モデルパラメータと、第1のネットリストと、を用いて第1の出力結果を出力するステップを有する。分類モデルは、モデルパラメータと、第1の出力結果とを学習することでモデルパラメータを分類し、第1のモデルパラメータを出力するステップを有する。制御部が、回路シミュレータに、第2のネットリストと、第2のモデルパラメータとを与えるステップを有する。制御部が、ニューラルネットワークに、第2のモデルパラメータに含まれる第1のモデルパラメータ変数を与えるステップを有する。ニューラルネットワークが、第1のモデルパラメータ変数から第1の行動価値関数Qを算出するステップを有する。制御部が、第1のモデルパラメータ変数を、第1の行動価値関数Qによって第2のモデルパラメータ変数に更新し、第3のモデルパラメータを出力するステップを有する。回路シミュレータが、第2のネットリストと、第3のモデルパラメータを用いてシミュレーションし、第2の出力結果を出力するステップを有する。制御部が、第2のネットリストに与えられた収束条件を用いて第2の出力結果を判定するステップを有する。第2の出力結果を判定し、第2のネットリストの要求特性を満たさない場合に、制御部が、第2の出力結果が収束条件に近づいた場合に高い報酬を設定し、第2の出力結果が収束条件から離れた場合に低い報酬を設定するステップを有する。ニューラルネットワークが、第2のモデルパラメータ変数を用いて第2の行動価値関数Qを算出するステップを有する。ニューラルネットワークが、報酬と、第1の行動価値関数Qと第2の行動価値関数Qを用いて算出する誤差と、を用いてニューラルネットワークの重み係数を更新するステップを有する。第2の出力結果を判定し、第2のネットリストの要求特性を満たした場合に、第1のモデルパラメータ変数が第2のネットリストの最適候補であると判定することができる。
【0016】
上記構成において、第1のネットリストは、インバータ回路、ソースフォロワ回路、又はソース接地回路のいずれか一又は複数を含むことが好ましい。
【0017】
上記構成において、第1のモデルパラメータ変数の数が、2つ以上であることが好ましい。
【0018】
上記構成において、ニューラルネットワークの出力層のユニット数が、モデルパラメータ変数の数の2倍以上であることが好ましい。
【0019】
上記構成において、第1のネットリストを用いて抽出される第1の出力結果は、リーク電流、出力電流、信号の立ち上がり時間、又は信号の立下り時間のいずれか一又は複数を含むことが好ましい。
【0020】
上記構成において、第1のネットリストで用いられる半導体素子がトランジスタであり、トランジスタは半導体層に金属酸化物を有するパラメータ探索方法が好ましい。
【発明の効果】
【0021】
本発明の一態様は、コンピュータを利用した電子化されたネットリストのパラメータ探索方法を提供することができる。又は、本発明の一態様は、半導体素子のデータセットからモデルパラメータを抽出し、モデルパラメータの集まりを分類モデルに学習させ、分類モデルによってモデルパラメータを分類することができるパラメータ分類方法を提供することができる。又は、本発明の一態様は、対象とするネットリストの要求特性に適しているモデルパラメータを当該パラメータ分類方法によって選択するパラメータ選択方法を提供することができる。又は、本発明の一態様は、回路シミュレータに与えるネットリストの変数が、ネットリストの要求特性を満たす最適候補になるように強化学習を用いて探索するパラメータ探索システムを提供することができる。
【0022】
なお本発明の一態様の効果は、上記列挙した効果に限定されない。上記列挙した効果は、他の効果の存在を妨げるものではない。なお他の効果は、以下の記載で述べる、本項目で言及していない効果である。本項目で言及していない効果は、当業者であれば明細書又は図面等の記載から導き出せるものであり、これらの記載から適宜抽出することができる。なお、本発明の一態様は、上記列挙した効果、及び/又は他の効果のうち、少なくとも一つの効果を有するものである。したがって本発明の一態様は、場合によっては、上記列挙した効果を有さない場合もある。
【図面の簡単な説明】
【0023】
図1は、パラメータ探索方法を説明するブロック図である。
図2は、データセットを説明する図である。
図3は、パラメータ探索方法を説明するフローチャートである。
図4は、パラメータ探索方法を説明するフローチャートである。
図5は、パラメータ探索方法を説明するフローチャートである。
図6は、パラメータ探索方法を説明するフローチャートである。
図7A乃至図7Dは、評価用ネットリストを説明する図である。
図8は、ニューラルネットワークを説明する模式図である。
図9は、ニューラルネットワークを説明するフローチャートである。
図10は、パラメータ探索方法を有するパラメータ探索装置を説明するブロック図である。
図11は、インバータ回路を記載したネットリストを説明する図である。
図12は、ユーザ設定用ファイルを説明する図である。
図13A図13Bは、モデルパラメータの探索結果を説明する図である。
図14A図14Bは、Graphical User Interface(GUI)を説明する図である。
【発明を実施するための形態】
【0024】
実施の形態について、図面を用いて詳細に説明する。但し、本発明は以下の説明に限定されず、本発明の趣旨及びその範囲から逸脱することなくその形態及び詳細を様々に変更し得ることは当業者であれば容易に理解される。したがって、本発明は以下に示す実施の形態の記載内容に限定して解釈されるものではない。
【0025】
なお、以下に説明する発明の構成において、同一部分又は同様な機能を有する部分には同一の符号を異なる図面間で共通して用い、その繰り返しの説明は省略する。また、同様の機能を指す場合には、ハッチパターンを同じくし、特に符号を付さない場合がある。
【0026】
また、図面において示す各構成の、位置、大きさ、範囲などは、理解の簡単のため、実際の位置、大きさ、範囲などを表していない場合がある。このため、開示する発明は、必ずしも、図面に開示された位置、大きさ、範囲などに限定されない。
【0027】
(実施の形態)
本発明の一態様では、パラメータ探索方法について図1乃至図10を用いて説明する。
【0028】
当該パラメータ探索方法は、コンピュータ上で動作するプログラムによって制御される。したがって、コンピュータは、パラメータ探索方法を備えるパラメータ探索装置と言い換えることができる。なお、パラメータ探索装置については、図10で詳細に説明する。当該プログラムは、コンピュータが有するメモリ、又はストレージに保存される。もしくは、ネットワーク(Local Area Network(LAN)、Wide Area Network(WAN)、インターネットなど)を介して接続されているコンピュータ、又はデータベースを有するサーバコンピュータに保存される。
【0029】
パラメータ探索方法は、機械学習(Machine Learning)又は強化学習(Reinforcement Learning)を用いてパラメータの最適候補を探索することができる。機械学習又は強化学習の一部の処理には、人工知能(Artificial Intelligence(AI))を用いることが好ましい。パラメータ探索方法は、特に、人工ニューラルネットワーク(Artificial Neural Network(ANN)、以下、単にニューラルネットワークと記す)を用いて、出力データを生成することができる。ニューラルネットワークの演算処理は、回路(ハードウェア)又はプログラム(ソフトウェア)により実現される。
【0030】
なお、ニューラルネットワークとは、学習によってニューロン間の結合強度を決定し、問題解決能力を持たせるモデル全般を指す。ニューラルネットワークは、入力層、中間層(複数の隠れ層を含む場合がある)、及び出力層を有する。ニューラルネットワークについて述べる際に、既にある情報からニューロンとニューロンの結合強度(重み係数ともいう)を決定することを「学習」と呼ぶ場合がある。
【0031】
最初に、機械学習を行う分類モデルの生成方法について説明する。分類モデルは、半導体素子のモデルパラメータを学習することで生成される。分類モデルは、モデルパラメータを分類する。なお、モデルパラメータは、パラメータ抽出部に半導体素子のデータセット(測定データ、又はプロセスパラメータを含む)を与えることで抽出される。但し、半導体素子のモデルパラメータだけでは、ネットリストの要求特性に適した分類が不十分な場合がある。
【0032】
本発明の一態様では、モデルパラメータについてさらに解析を行う。モデルパラメータを解析するには、モデルパラメータと、モデルパラメータを与えた評価用ネットリストとを用いて回路シミュレータによるシミュレーションを行う。当該シミュレーションでは、評価用ネットリストを用いてDC解析、AC解析、又は過渡解析などを行う。シミュレーションの結果には、評価用ネットリストにおける、リーク電流、出力電流、信号の立ち上がり時間、又は信号の立下り時間などのいずれか一もしくは複数が含まれる。
【0033】
よって、本発明の一態様では、モデルパラメータと、評価用ネットリストを用いたシミュレーションの結果とを学習用コンテンツと呼ぶことができる。分類モデルが学習用コンテンツを用いて学習を行う方法をパラメータ学習方法と呼ぶ。当該分類モデルは、パラメータ抽出部だけでは十分に行えなかった低消費電力を重視する回路、動作周波数を重視する回路、又は指定される周波数帯域で安定に動作する回路などの分類を容易にすることができる。なお、説明を簡便にするために、回路に要求される低消費電力、動作周波数、又は周波数帯域での安定性などを、要求特性と言い換えて説明する場合がある。
【0034】
例えば、ユーザが、低消費電力を重視する回路に適したモデルパラメータを分類モデルに要求した場合、分類モデルは、過去に学習したモデルパラメータから複数の候補を提示することができる。また、任意に指定した範囲の学習済のモデルパラメータから複数の候補を提示することができる。また、分類モデルは、新しいモデルパラメータを分類モデルに与えた場合、新しいモデルパラメータが、どのような要求特性に適したモデルパラメータであるかの適応度をそれぞれ確率で提示することができる。よって、ユーザは、新しいモデルパラメータがそれぞれの要求特性にどれくらい適しているか判定するための情報を得ることができる。
【0035】
つまり、分類モデルは、既に学習したモデルパラメータの中から要求特性に適したモデルパラメータを選択することができるパラメータ選択方法を提供することができる。なお、学習用コンテンツには、要求特性などを加えてもよい。
【0036】
上述した分類モデルには、クラス分類を特徴とする、決定木、ナイーブベイズ、K Nearest Neighbor(KNN)、Support Vector Machine(SVM)、パーセプトロン、もしくは、ロジスティック回帰、又はニューラルネットワークなどの機械学習のアルゴリズムを用いることができる。
【0037】
また、異なる分類モデルを生成してもよい。例えば、モデルパラメータ、及び評価用ネットリストを用いたシミュレーションの結果を用いてクラスタリングする分類モデルを生成することができる。クラスタリングには、K-means、又はdensity-based spatial clustering of applications with noise(BSCAN)などの機械学習のアルゴリズムを用いることができる。
【0038】
分類モデルが学習用コンテンツを選択する方法としてランダムサンプリング又はクロスバリエーションを用いることができる。もしくは、学習用コンテンツに付与された番号のソートされる順に従い指定された任意の数を選択することができる。なお、学習用コンテンツは、半導体素子のデータセットに対応する。
【0039】
なお、生成した分類モデルは電子機器本体又は外部のメモリに保存することができ、新たなファイルの分類の際に呼び出して使ってもよいし、さらに、新たな学習用コンテンツを追加しながら上記で説明した方法に従って分類モデルを更新することができる。
【0040】
次に、強化学習を行うニューラルネットワークについて説明する。なお、本発明の一態様では、Q学習(Q-learning)、又はモンテカルロ法(Monte Carlo method)などを用いることができる。なお、本発明の一態様では、Q学習を用いた例について説明する。
【0041】
まず、Q学習について説明する。Q学習とは、時刻tにおいて、ある環境(変数sとして表す)の下、エージェントが行動aを選択する価値を学習する方法である。エージェントは行動する主体を指し、変数sは働きかけられる対象を指す。エージェントの行動aにより、ある環境は、変数sから変数st+1に遷移し、エージェントは、報酬rt+1を受け取る。Q学習では、得られる報酬の総量が最終的に最大になるように行動aを学習する。変数sにおいて行動aとなる価値を、行動価値関数Q(s,a)と表せる。例えば、行動価値関数Q(s,a)の更新式は、式(1)で表せる。なお、本発明の一態様では、エージェントは制御部に相当し、ある環境は、ニューラルネットワークの入力層に与えられる変数sに相当し、行動aは、エージェントによってニューラルネットワークの出力層に出力される行動価値関数Q(s,a)によって決定される。
【0042】
【数1】
【0043】
ここで、αは学習率(αは0より大きく1以下)、γは割引率(γは0以上1以下)を示す。学習率αは、現在の価値と、行動によって得られた結果のどちらを重視するかを表している。学習率αが1に近いほど、得られた結果を重視し価値の変化は大きくなる。学習率αが0に近いほど、現在の価値を重視し価値の変化は小さくなる。割引率γは、現在の報酬と、将来の報酬のどちらを重視するかを表している。割引率γが0に近いほど、現在の報酬を重視する。割引率γが1に近いほど、将来の報酬を重視する。例えば、学習率αを0.10、割引率γを0.90とすることができる。
【0044】
一般的に、Q学習においては、ニューラルネットワークが出力する行動価値関数Q(s,a)の状態s及び行動aの組み合わせを、予めルックアップテーブル(Look Up Table(LUT))としてデータを保存する。なお、本発明の一態様では、ルックアップテーブルをアクションテーブルと言い換えることができる。また、ニューラルネットワークが出力する行動価値関数Q(s,a)のユニット数は、ニューラルネットワークに与えられる変数sが与えられるユニット数の2倍以上であることが好ましい。また、変数s及び行動aの組み合わせに対するそれぞれのアクションをアクションテーブルに決めておくことが好ましい。Q学習は、行動価値関数Q(s,a)が最大値となる組み合わせに紐づけられたアクションを実行する。なお、行動価値関数Qmax1は、時刻tにおける、行動価値関数Q(s,a)が最大値になる状態s及び行動aの組み合わせを意味する。
【0045】
【数2】
【0046】
Q学習では、誤差Eを式(2)で表すことができる。rt+1の項は、時刻tにおける学習で得られた報酬である。maxQ(st+1、a)の項は、正解ラベルによって決定されたアクションに従って変数sが更新され、ニューラルネットワークによって再度算出される行動価値関数Qmax2に相当する。なお、maxQ(st+1、a)の項は、maxQ(st+1、at+1)としてもよい。なお、Q(s、a)の項は、行動価値関数Qmax1に相当する。
【0047】
なお、誤差Eから、損失関数Lを計算する。損失関数Lの計算方法としては、二乗誤差を用いることができる。確率的勾配降下法(Stochastic Gradient Descent(SGD))を用いて、該損失関数Lの値が小さくなるように、ニューラルネットワークの重み係数を更新することができる。確率的勾配降下法の他に、Adaptive Moment Estimation(Adam)、モメンタム(Momentum)、Adaptive SubGradient Methods(AdaGrad)、RMSPropなどを用いることができる。すなわち、ニューラルネットワークの重み係数は、損失関数Lに応じて更新される。
【0048】
変数sが変数st+1に更新され、再度ニューラルネットワーク15の計算が行われる。Q学習では、損失関数Lができるだけ小さくなるように繰り返し学習が行われる。
【0049】
続いて、パラメータ探索方法について図1を用いて説明する。なお、以降において、パラメータ探索方法をパラメータ探索装置10と言い換えて説明する場合がある。
【0050】
パラメータ探索装置10は、パラメータ抽出部11、回路シミュレータ12、分類モデル13、制御部14、及びニューラルネットワーク15を備える。なお、パラメータ探索装置10には、半導体素子のデータセット及び設定ファイルF1が与えられ、パラメータ探索装置10は、出力データF2を出力する。パラメータ抽出部11、回路シミュレータ12、分類モデル13、制御部14、及びニューラルネットワーク15は、コンピュータ上で動作するプログラムによって制御される。
【0051】
なお、半導体素子のデータセット、設定ファイルF1、及び出力データF2は、当該コンピュータが有するメモリ又はストレージに記憶されることが好ましい。もしくは、ネットワークを介して接続されているコンピュータ、データベースを有するサーバコンピュータ、又は測定器が有するメモリ又はストレージに半導体素子のデータセットが記憶されていてもよい。
【0052】
また、パラメータ探索装置10によるパラメータの探索は、制御部14が動作するコンピュータと、パラメータ抽出部11、回路シミュレータ12、又は分類モデル13が動作するコンピュータ(サーバコンピュータを含む)が異なっていてもよい。
【0053】
パラメータ抽出部11には、半導体素子の測定データ又はプロセスパラメータがデータセットとして与えられる。なお、パラメータ抽出部11は、制御部14によって指示されたデータセットをロードすることができる。もしくは、パラメータ抽出部11がコンピュータ上のメモリ又はストレージ上に新しいデータセットを検出した場合、パラメータ抽出部11は新しいデータセットを自動でロードすることができる。パラメータ抽出部11は、データセットからモデルパラメータを抽出する。
【0054】
回路シミュレータ12には、制御部14から評価用ネットリストが与えられる。評価用ネットリストについては、図7で詳細に説明する。
【0055】
回路シミュレータ12が、評価用ネットリストと、当該モデルパラメータと、を用いてシミュレーションし、シミュレーションした結果を第1の出力結果として出力する。当該シミュレーションは、DC解析、AC解析、又は過渡解析などを行う。したがって、第1の出力結果は、少なくとも評価用ネットリストにおける、リーク電流、出力電流、信号の立ち上がり時間、又は信号の立下り時間などのいずれか一もしくは複数が含まれる。分類モデル13は、モデルパラメータと、第1の出力結果と、を学習し、当該モデルパラメータを分類することができる。なお、評価用ネットリストが複数存在する場合は、順次評価用ネットリストを更新し、回路シミュレータ12は、複数の評価用ネットリストを用いて第1の出力結果を出力する。
【0056】
回路シミュレータ12には、制御部14からネットリストと、ネットリストの要求特性に適していると分類されたモデルパラメータが与えられる。なお、当該ネットリストは、要求特性に適したモデルパラメータを求めるための回路情報である。なお、当該ネットリストは、複数の半導体素子で構成されている。但し、本発明の一態様では、当該ネットリストが有する半導体素子の中から調整したいモデルパラメータをモデルパラメータ変数として選択することができる。
【0057】
なお、回路シミュレータは、制御部14によって初期化される。初期化の情報は、設定ファイルF1によって制御部14に与えられる。設定ファイルF1には、シミュレーションに必要な電源電圧の大きさ、モデルパラメータの最大値および最小値、プロセスパラメータなどの情報が含まれている。なお、初期化の情報は、ユーザによってキーボード、マウス、マイクを介した音声によって与えられてもよい。
【0058】
ニューラルネットワーク15には、制御部14からモデルパラメータ変数が与えられる。モデルパラメータ変数とは、ニューラルネットワーク15によって最適候補を探索したい半導体素子のモデルパラメータである。ニューラルネットワーク15は、与えられたモデルパラメータ変数を時刻tにおける変数sとして入力層に与える。ニューラルネットワーク15は、変数sから行動価値関数Q(s,a)を出力する。制御部14は、行動価値関数Q(s,a)によってモデルパラメータ変数を更新する。回路シミュレータ12が、ネットリストと、更新されたモデルパラメータ変数を含むモデルパラメータと、を用いてシミュレーションする。回路シミュレータ12は、第2の出力結果を出力する。
【0059】
制御部14は、第2の出力結果を判定する。第2の出力結果がネットリストの要求特性を満たさない場合、制御部が、第2の出力結果に対して報酬を設定し、さらに、損失関数を算出する。ニューラルネットワーク15では、損失関数によりニューラルネットワーク15の重み係数が更新される。なお、第2の出力結果がネットリストの要求特性を満たす場合、モデルパラメータ変数をネットリストの最適候補と判定する。なお、出力データF2には、モデルパラメータ変数の最適候補がリストとして出力されることが好ましい。
【0060】
上述した方法と異なり、回路シミュレータ12には、制御部14からネットリストと、モデルパラメータが与えられてもよい。なお、この場合のモデルパラメータは、ネットリストの要求特性を必ずしも満たしていなくてもよい。但し、第2の出力結果が、ネットリストの要求特性を満たさない場合、損失関数を用いてニューラルネットワークの重み係数を更新する。また、回路シミュレータ12では、分類モデルによって第2のネットリストの要求特性を満たしていると分類された、いずれか一の前記モデルパラメータに更新する。回路シミュレータ12は、より広い範囲のモデルパラメータを用いて最適候補となるパラメータの探索を行う。
【0061】
図2は、半導体素子のデータセットを説明する図である。当該データセットは、半導体素子の測定データDS1、測定データDS2、又はプロセスパラメータDS3を有している。一例として、半導体素子は、トランジスタ、抵抗、容量、又はダイオードなどである。なお、半導体素子は、トランジスタ、抵抗、容量、又はダイオードなどを組み合わせて構成してもよい。
【0062】
図2では、半導体素子がトランジスタの場合について説明する。測定データDS1は、トランジスタのソース及びドレインに異なる固定電圧を与え、トランジスタのゲートに与える電圧を掃引した場合を示している。したがって、測定データDS1は、横軸にトランジスタのゲート電圧VG、縦軸にトランジスタのドレインに流れるドレイン電流IDを示した測定データである。なお、図2では測定データDS1を、グラフに示しているが、これは測定データを理解しやすくするためであり、データセットでは、数字で記録されたデータである。
【0063】
測定データDS2は、トランジスタのソース及びゲートに異なる固定電圧を与え、トランジスタのドレインに与える電圧を掃引した場合を示している。したがって、測定データDS2は、横軸にトランジスタのドレイン電圧VD、縦軸にトランジスタのドレインに流れるドレイン電流IDを示した測定データである。なお、図2では測定データDS2を、グラフに示しているが、これは測定データを理解しやすくするためであり、データセットでは、数字で記録されたデータである。
【0064】
なお、測定データDS1、又は測定データDS2は、それぞれ異なる条件で測定された複数の測定データを有することが好ましい。例えば、測定データDS1では、トランジスタのドレイン電圧VDとして、異なる固定電圧が与えられることが好ましい。また、測定データDS2では、トランジスタのゲート電圧VGとして、異なる固定電圧が与えられることが好ましい。
【0065】
プロセスパラメータDS3は、半導体素子のプロセスパラメータである。プロセスパラメータには、酸化膜の厚さTox、酸化膜の誘電率ε、導電膜の抵抗率RS、チャネル長L、又はチャネル幅Wなどがある。
【0066】
図3乃至図6は、パラメータ探索方法を説明するフローチャートである。パラメータ探索方法は、第1の処理と、第2の処理と、を有する。第1の処理は、パラメータ抽出部11による半導体素子のモデルパラメータ抽出と、分類モデル13によるモデルパラメータのパラメータ学習を行う。第2の処理は、分類モデルによって選択されたモデルパラメータを用いて、ネットリストが含む半導体素子のモデルパラメータ変数の最適候補を、Q学習を用いて探索する。
【0067】
図3では、パラメータ抽出部11によるモデルパラメータの抽出と、分類モデル13によるモデルパラメータの分類と、についてフローチャートを用いて説明する。
【0068】
ステップS30は、制御部14がパラメータ抽出部11の初期化をするステップである。パラメータ抽出部11には、ロードされる測定データの共通項目が与えられる。具体的には、パラメータ抽出部11には、トランジスタのソース、ドレイン、又はゲートに与えられる電圧、プロセスパラメータなどが与えられる。
【0069】
ステップS31は、パラメータ抽出部に半導体素子の測定データ及びプロセスパラメータなどを含むデータセットがロードされるステップである。
【0070】
ステップS32は、パラメータ抽出部11がモデルパラメータを抽出するステップである。一例として、トランジスタのモデルパラメータは、チャネル長、チャネル幅に対するしきい値電圧、酸化膜の厚さ、ドレイン抵抗、ソース抵抗、接合容量、ノイズ指数、移動度、又はチャネル長変調などの物理パラメータを含み、測定データは、関数式で表される。なお、モデルパラメータで管理する項目は、ユーザによって設定できることが好ましい。
【0071】
ステップS33は、制御部14が回路シミュレータ12に対し評価用ネットリストを与え、かつ、回路シミュレータには、パラメータ抽出部11からモデルパラメータが与えられるステップを有する。さらに、回路シミュレータ12は、評価用ネットリストを用いてシミュレーションをする。回路シミュレータ12は、シミュレーションした結果を第1の出力結果として出力する。
【0072】
なお、評価用ネットリストは、一つに限定されず、複数の種類の評価用ネットリストであってもよい。例えば、評価用ネットリストには、インバータ回路、ソースフォロワ回路、ソース接地回路、チャージポンプ回路、リングオシレータ回路、カレントミラー回路、又はアンプ回路などが含まれる。上述した評価用ネットリストからは、回路の特徴に応じた第1の出力結果を取得することができる。
【0073】
例えば、インバータ回路からは、リーク電流、出力電流、立ち上がり時間、又は立下り時間などが第1の出力結果として得られる。例えば、ソースフォロワ回路からは、回路の出力電流などが第1の出力結果として得られる。ソース接地回路からは、回路のリーク電流、吸い込み電流などが第1の出力結果として得られる。さらに、チャージポンプ回路、リングオシレータ回路、カレントミラー回路、又はアンプ回路などを評価用ネットリストとして用いることができる。チャージポンプ回路、リングオシレータ回路、カレントミラー回路、又はアンプ回路などは、インバータ回路、ソースフォロワ回路、又はソース接地回路を組み合わせた回路構成を有し、モデルパラメータの検証を行いたいネットリストの要求特性に近い特徴を有する第1の出力結果を得ることができる。
【0074】
一例として、評価用ネットリストで用いるインバータ回路について詳細に説明する。インバータ回路は、p型トランジスタとn型トランジスタとを用いて構成されてもよいし、p型トランジスタ又はn型トランジスタのいずれかのみによって構成されてもよい。例えば、インバータ回路が、n型トランジスタのみで構成される場合、n型トランジスタの半導体層に金属酸化物が含まれていることが好ましい。また異なるインバータ回路では、n型トランジスタの半導体層に金属酸化物を含み、p型のトランジスタの半導体層にシリコンを含む構成でもよい。
【0075】
ステップS34は、モデルパラメータ及び第1の出力結果を分類モデル13に与えることで、分類モデルが学習するステップである。分類モデルは、モデルパラメータと、第1の出力結果とを学習することで、モデルパラメータを分類することができるようになる。
【0076】
ステップS35は、制御部14が分類モデル13に対しデータセットの学習が終了したか判定するステップである。制御部14は、分類モデル13が全てのデータセットの学習が終わったと判定すればステップS41に移行し、まだ未学習のデータセットがあると判定すればステップS31に戻り分類モデルに対する学習を継続させる。
【0077】
図4乃至図6は、第2の処理について説明するフローチャートである。パラメータ検索方法の第2の処理では、Q学習を用いてパラメータの探索を行う。なお、Q学習を行うには、回路シミュレータ12及びニューラルネットワーク15の初期化が必要である。図4では、Q学習を行うための初期化についてフローチャートを用いて説明する。
【0078】
ステップS41は、ニューラルネットワーク15を初期化するステップである。なお、ニューラルネットワーク15は、ニューラルネットワーク15の重み係数に乱数を与えることで初期化することができる。もしくは、ニューラルネットワーク15は、過去に学習を行った時の重み係数をロードしてもよい。
【0079】
ステップS42は、回路シミュレータ12に対しネットリストを与えるステップである。なお、当該ネットリストは、ユーザがモデルパラメータの探索を行うネットリストである。
【0080】
ステップS43は、制御部14がモデルパラメータと、モデルパラメータの中で最適候補を探索したいモデルパラメータ変数ptと、を回路シミュレータ12に設定するステップである。なお、制御部14は、ネットリストの要求特性に適しているモデルパラメータを、分類モデルの分類結果を用いて選択することができる。
【0081】
ステップS44は、モデルパラメータ変数ptをニューラルネットワーク15の変数sとして設定するステップである。
【0082】
ステップS45は、ニューラルネットワーク15の出力である行動価値関数Q(s,a)にアクションテーブルを設定するステップである。なお、行動価値関数Q(s,a)は、ニューラルネットワーク15の出力層のユニット数に対応した複数の出力を有する。したがってアクションテーブルは、行動価値関数Q(s,a)の出力に対応するアクションが設定されることが好ましい。
【0083】
一例として、トランジスタのチャネル長をL、チャネル幅をWと示し、モデルパラメータ変数として変数s(L、W)が与えられた場合について説明する。モデルパラメータ変数が変数s(L、W)の場合、ニューラルネットワーク15の入力ユニット数はモデルパラメータ変数の数と同じであることが好ましい。ニューラルネットワーク15の出力ユニット数は、入力ユニット数の2倍以上であることが好ましい。したがって、行動価値関数Qは、行動価値関数Q(s,at=~a)の4つの出力で表すことができる。
【0084】
行動価値関数Q(s,at=~a)には、それぞれ異なるアクションが設定される。行動価値関数Q(s,a=a~a)には、アクションaとしてチャネル長Lを大きくする、アクションaとしてチャネル長Lを小さくする、アクションaとしてチャネル幅Wを大きくする、アクションaとしてチャネル幅Wを小さくするなどを設定することができる。なお、以降の説明において、ある変数sにおける行動価値関数Q(s,a)のうち最大値を行動価値関数Qmax1とし、行動価値関数Qmax1に紐付けられたアクションが実行される。なお、行動価値関数Q(s,a)が4つ以上の出力を有する場合、さらに詳細なアクション設定をすることができる。
【0085】
また、ユーザは、アクション可能な範囲を設定できることが好ましい。一例として、モデルパラメータ変数の一つであるチャネル長Lについて説明する。チャネル長Lは、製造装置の仕様によって対応可能な範囲が決定される。一例としてチャネル長Lが10nm以上1μm以下と設定された場合、チャネル長Lを小さくするというアクションが続くと、設定の下限である10nmを下回ってしまう場合がある。例えば、チャネル長Lが下限である10nmを下回ってしまう場合は、チャネル長Lを下限値である10nmに固定することができる。もしくは、チャネル長Lが下限である10nmを下回ってしまう場合は、チャネル長Lを最大値である1μm以下に設定することができる。
【0086】
ステップS46は、Q学習の報酬を設定する。当該報酬は、第2の出力結果が収束条件を満たしていない場合に与えられる。当該報酬は、当該収束条件に近づいた場合、高い報酬が与えられ、当該収束条件から遠くなった場合、低い報酬が与えられる。なお、当該報酬の大きさは、収束条件への距離に応じて固定の値が設定されてもよく、もしくはユーザが設定できてもよい。
【0087】
ステップS47は、Q学習の収束条件を設定するステップである。
【0088】
ステップS48は、ニューラルネットワーク15に与えた変数sから行動価値関数Qmax1を算出するステップである。続いて、図5のステップS51に移行する。
【0089】
図5は、Q学習を用いた強化学習を説明するフローチャートである。
【0090】
ステップS51は、ニューラルネットワーク15の出力である行動価値関数Qmax1に対応したアクションを決定するステップである。
【0091】
ステップS52は、行動価値関数Qmax1に対応したアクションによって変数sを変数st+1に更新するステップである。なお、変数st+1は、ニューラルネットワーク15に与えられる。
【0092】
ステップS53は、ネットリストのモデルパラメータ変数ptを変数st+1で更新するステップである。
【0093】
ステップS54は、回路シミュレータ12がネットリストと、モデルパラメータ変数ptが更新されたモデルパラメータと、を用いてシミュレーションをするステップである。回路シミュレータ12は、シミュレーション結果として第2の出力結果を出力する。
【0094】
ステップS55は、制御部14が第2の出力結果がネットリストに与えられた収束条件を満たしたかを判定するステップである。
【0095】
ステップS56は、制御部14が第2の出力結果がネットリストに与えられた収束条件を満たしたと判定した場合、ニューラルネットワーク15を用いた強化学習を終了する。したがって、その場合、第2の出力結果が、ネットリストの要求条件に適した最適候補の一つである。なお、ネットリストの要求条件に適したパラメータ変数の最適候補をさらに探す方法としては、収束条件を満たしてもループを終了しないで学習を続けてもよい。その場合、収束条件に近い条件を重点的に探索することができる。もしくは、ステップ41に移行し、ニューラルネットワーク15を異なる乱数で初期化し、強化学習を行うことができる。もしくは、ステップS41に移行し、異なるモデルパラメータを用いて強化学習を行うことができる。
【0096】
ステップS57は、Q学習の報酬を決定するステップである。例えば、第2の出力結果を判定し、第2のネットリストの要求特性を満たさない場合、制御部が、第2の出力結果が収束条件に近づいた場合に高い報酬を設定し、第2の出力結果が収束条件から離れた場合に低い報酬を設定するステップを有する。
【0097】
ステップS58は、ニューラルネットワーク15に与えられる変数st+1を用いて、行動価値関数Qmax2を算出するステップである。なお、行動価値関数Qmax2は、変数st+1における行動価値関数Q(st+1,at+1=1~4)の最大値に対応する。
【0098】
ステップS59は、ニューラルネットワーク15の重み係数を更新するステップである。当該重み係数は、行動価値関数Qmax1、行動価値関数Qmax2、及び報酬を用いて算出する誤差Eによって算出される損失関数に応じて更新される。
【0099】
ステップS5Aは、ニューラルネットワーク15に与えた変数st+1から行動価値関数Qmax1を算出するステップである。続いて、図5のステップS51に移行し、ニューラルネットワーク15の出力である行動価値関数Qmax1に対応したアクションを決定する。
【0100】
図6は、図5とは異なるQ学習を用いた強化学習を説明するフローチャートである。図6では、図5と異なる点について説明し、発明の構成(または実施例の構成)において、同一部分又は同様な機能を有する部分には同一の符号を異なる図面間で共通して用い、その繰り返しの説明は省略する。
【0101】
図6では、行動価値関数Qmax1に対応したアクションによって変数sを変数st+1に更新した(ステップS52)後、回路シミュレータ12のモデルパラメータを更新するステップS5Bを有している。例えば、ステップS51のアクションによってモデルパラメータ変数がアクション可能な範囲を超えた場合、モデルパラメータが更新される。但し、当該モデルパラメータは、分類モデル13によって分類され、ネットリストの要求特性に適していると分類された範囲内であることが好ましい。当該モデルパラメータに更新されることで、Q学習は、より広い範囲のパラメータ探索を行うことができる。
【0102】
上述したように、本発明の一態様のパラメータ探索方法では、ネットリストが含む複数の半導体素子のモデルパラメータの中から、複数のモデルパラメータ変数を選択し、ネットリストの要求特性に適したモデルパラメータ変数の最適候補を探索することができる。
【0103】
また、パラメータ探索方法では、分類モデルがパラメータ抽出部から抽出したモデルパラメータと、評価用ネットリストを用いた回路シミュレータによる第1の出力結果と、を分類モデルが学習することでネットリストの要求特性に適したモデルパラメータを分類することができる。
【0104】
分類モデルは、ネットリストの要求特性に適したモデルパラメータを選択することができるため、Q学習を効率的に行うことができる。例えば、プロセスパラメータの条件から最適なプロセス条件を検討する場合などに、分類モデルを適用することができる。また、ネットリストの要求特性に応じたモデルパラメータの抽出にも分類モデルを適用することができる。
【0105】
図7A乃至図7Dは、評価用ネットリストを説明する回路図である。なお、評価用ネットリストは、回路の出力段に出力負荷として容量64を有している。したがって、評価用ネットリストの出力信号は、容量64の充放電により生成される電圧によって評価用ネットリストの要求特性を満たすかどうか判定する判定することができる。
【0106】
図7Aは、インバータ回路を説明する回路図である。インバータ回路はトランジスタ61、トランジスタ62、配線65、配線66、配線SD1、及び配線SD2を有している。なおトランジスタ61は、p型トランジスタであり、トランジスタ62は、n型トランジスタである。
【0107】
トランジスタ61のソース又はドレインの一方は、配線65と電気的に接続される。トランジスタ61のソース又はドレインの他方は、トランジスタ62のソース又はドレインの一方と、容量64の電極の一方と電気的に接続される。トランジスタ62のソース又はドレインの他方は、配線66と電気的に接続される。容量64の電極の他方は、配線66と電気的に接続される。トランジスタ61のゲートは、配線SD1と電気的に接続される。トランジスタ62のゲートは、配線SD2と電気的に接続される。
【0108】
配線SD1に与えられる信号は、配線SD2に与えられる信号と同じ信号である。よって、トランジスタ61は、トランジスタ62と相補的にオン状態とオフ状態が切り替わる。トランジスタ61がオフ状態からオン状態に変化する場合、トランジスタ62は、オン状態からオフ状態に変化する。
【0109】
インバータ回路は、回路シミュレータによるDC解析を行うことでインバータ回路のリーク電流を見積もることができる。また、インバータ回路は、回路シミュレータによる過渡解析を行うことでインバータ回路に流れる貫通電流の大きさ、動作周波数、又は出力信号の立ち上がり時間及び立下り時間を見積もることができる。
【0110】
トランジスタ61又はトランジスタ62は、トランジスタの半導体層にシリコンを含むことが好ましい。但し、トランジスタ62は、トランジスタの半導体層に金属酸化物を含んでもよい。
【0111】
図7Bは、図7Aとは異なるインバータ回路を説明する回路図である。図7Bでは、図7Aと異なる点について説明し、発明の構成(または実施例の構成)において、同一部分又は同様な機能を有する部分には同一の符号を異なる図面間で共通して用い、その繰り返しの説明は省略する。
【0112】
図7Bで示すインバータ回路は、トランジスタ61A及びトランジスタ62がn型トランジスタである。
【0113】
配線SD1に与えられる信号として、配線SD2に与えられる信号の反転信号が与えられる。配線SD1に与えられる信号は、トランジスタ61Aのオン状態とオフ状態とを切り替える。配線SD2に与えられる信号は、トランジスタ62のオン状態とオフ状態とを切り替える。上述した動作によって、回路シミュレータを用いたDC解析、過渡解析を行うことができる。
【0114】
トランジスタ61A及びトランジスタ62は、トランジスタの半導体層にシリコンを含むことが好ましい。もしくは、トランジスタ61A及びトランジスタ62は、トランジスタの半導体層に金属酸化物を含んでもよい。
【0115】
図7Cは、ソースフォロワ回路を説明する回路図である。ソースフォロワ回路はトランジスタ61、抵抗63、配線65、配線66、及び配線SD1を有している。なお、図7Cのソースフォロワ回路では、トランジスタ61がn型トランジスタである例を示している。なお、ソースフォロワ回路は、バッファー回路(電流増幅回路)として機能する場合がある。なお、抵抗63は、能動負荷としてトランジスタ、又はダイオードを用いることができる。
【0116】
トランジスタ61のソース又はドレインの一方は、配線65と電気的に接続される。トランジスタ61のソース又はドレインの他方は、抵抗63の電極の一方と、容量64の電極の一方と電気的に接続される。抵抗63の電極の他方は、配線66と電気的に接続される。容量64の電極の他方は、配線66と電気的に接続される。トランジスタ61のゲートは、配線SD1と電気的に接続される。
【0117】
配線SD1に与えられる信号は、トランジスタ61のオン状態(強反転領域)又はオフ状態(弱反転領域)を切り替えることができる。配線SD1に与えられる信号によってトランジスタ61がオン状態になる場合、容量64に与えられる出力電位は、配線SD1に与えられる信号の電位よりトランジスタ61のしきい値電圧分下がった電位となる。
【0118】
ソースフォロワ回路は、回路シミュレータによるDC解析を行うことでソースフォロワ回路のバイアス電流、及びトランジスタ61のしきい値電圧を見積もることができる。また、ソースフォロワ回路は、回路シミュレータによるAC解析を行うことでソースフォロワ回路の周波数特性を見積もることができる。また、ソースフォロワ回路は、回路シミュレータによる過渡解析を行うことで、ソースフォロワ回路に流れるバイアス電流の変化の大きさ、又は出力信号の立ち上がり時間及び立下り時間を見積もることができる。
【0119】
トランジスタ61は、トランジスタの半導体層にシリコンを含むことが好ましい。但し、トランジスタ61は、トランジスタの半導体層に金属酸化物を含んでもよい。なお、トランジスタ61がp型トランジスタであってもよい。配線65、配線66に与える電源電圧を反転させることで、p型のトランジスタを用いてソースフォロワ回路を構成することができる。
【0120】
図7Dは、ソース接地回路を説明する回路図である。ソース接地回路はトランジスタ61、抵抗63、配線65、配線66、及び配線SD1を有している。なお、図7Dのソース接地回路では、トランジスタ61がn型トランジスタである例を示している。
【0121】
抵抗63の電極の一方は、配線65と電気的に接続される。抵抗63の電極の他方は、トランジスタ61のソース又はドレインの一方と、容量64の電極の一方と電気的に接続される。トランジスタ61のソース又はドレインの他方は、配線66と電気的に接続される。容量64の電極の他方は、配線66と電気的に接続される。トランジスタ61のゲートは、配線SD1と電気的に接続される。
【0122】
配線SD1に与えられる信号は、トランジスタ61のオン状態又はオフ状態を切り替えることができる。ソース接地回路は、増幅回路として機能する。配線SD1に与えられる信号は、トランジスタ61によって増幅され、容量64の充放電に用いられる。
【0123】
ソース接地回路は、回路シミュレータによるDC解析を行うことでソース接地回路のバイアス電流、及びトランジスタ61の増幅時の吸込み電流の値を見積もることができる。また、ソース接地回路は、回路シミュレータによるAC解析を行うことでソース接地回路の周波数特性を見積もることができる。また、ソース接地回路は、回路シミュレータによる過渡解析を行うことでソース接地回路に流れるバイアス電流の変化の大きさ、入力信号に対する増幅率、及びトランジスタ61のしきい値電圧ばらつきを見積もることができる。
【0124】
トランジスタ61は、トランジスタの半導体層にシリコンを含むことが好ましい。但し、トランジスタ61は、トランジスタの半導体層に金属酸化物を含んでもよい。なお、トランジスタ61がp型トランジスタであってもよい。配線65、配線66に与える電源電圧を反転させることで、p型のトランジスタを用いてソース接地回路を構成することができる。
【0125】
なお、図7A乃至図7Dで示す評価用ネットリストで得られる解析結果は、上述した第1の結果に相当する。なお、評価用ネットリストは、図7A乃至図7Dに限定されない。チャージポンプ回路、リングオシレータ回路、カレントミラー回路、アンプ回路などは、インバータ回路、ソースフォロワ回路、又はソース接地回路を組み合わせた回路構成を有し、実際の検証を行いたいネットリストに近い第1の出力結果を得ることができる。
【0126】
図8は、Q学習におけるニューラルネットワーク15を説明する模式図である。一例として、ニューラルネットワーク15は、全結合型(Fully Connected)ニューラルネットワークを用いる。なお、ニューラルネットワーク15は、全結合型に限定はされない。ニューラルネットワーク15は、入力層21、中間層23、及び出力層22で構成される。一例として、図8では、中間層23は、隠れ層24(隠れ層24a乃至24m)、隠れ層25(隠れ層25a乃至25m)を有する。なお、中間層23が有する隠れ層の数は2層に限定されない。中間層23は、必要に応じて2層以上の隠れ層を有することができる。また隠れ層が有するユニット数は、隠れ層ごとに異なっていてもよい。なお隠れ層が有するユニット数とは、図8で示すように隠れ層24a乃至24mのことを示す。
【0127】
入力層21には、時刻tにおける入力データである変数sが与えられる。出力層22は、行動価値関数Q(s,a)を出力する。なお、本発明の一態様のニューラルネットワーク15の出力ユニット数は、入力ユニット数の2倍以上であることが好ましい。一例として、図8では入力層21がユニット21a、ユニット22bを有し、出力層22は、ユニット22a乃至ユニット22dを有する。つまり、変数s(x1、x2)が与えられる場合、行動価値関数Q(s,a)は、行動価値関数Q(s,at=1~4)の4つの出力で表すことができる。取りうる行動はa乃至aの4通り存在する。行動価値関数Q(s,a)乃至Q(s,a)には、それぞれアクション1乃至アクション4が紐付されている。エージェントは、行動価値関数Q(s,a)乃至Q(s,a)のうち最大値となる行動価値関数Qmaxを選択し、行動価値関数Qmaxに紐付けられるアクションを実行する。
【0128】
一般的に、強化学習の学習時において、出力データと教師データの誤差Eが小さくなるようにニューラルネットワークの重み係数が更新される。重み係数の更新は、出力データと教師データの誤差Eが一定になるまで繰り返される。強化学習の一種であるQ学習は、最適な行動価値関数Q(s,a)の探索が学習の目的であるが、学習の最中は最適な行動価値関数Q(s,a)は不明である。そこで、次の時刻t+1における行動価値関数Q(st+1,at+1)を推定し、rt+1+maxQ(st+1,at+1)を教師データとする。該教師データを誤差E及び損失関数の算出に用いることで、ニューラルネットワークの学習を行う。
【0129】
図9は、ニューラルネットワーク15を説明するフローチャートである。
【0130】
ステップS71は、入力層21のユニット21aに変数x1、ユニット21bに変数x2を与え、隠れ層24にて全結合型の第1の積和演算を行う。なお、変数x1、変数x2は適宜、正規化を行ってもよい。当該正規化を行うことで、学習速度を速めることができる。
【0131】
ステップS72は、隠れ層24の演算結果を用いて、隠れ層25にて全結合型の第2の積和演算を行う。
【0132】
ステップS73は、隠れ層25の演算結果を用いて、出力層22にて第3の積和演算を行う。
【0133】
ステップS74は、出力層22の出力である行動価値関数Q(s,a)乃至Q(s,a)のうち最大値となる行動価値関数Qmaxを選択し、行動価値関数Qmaxに紐付けられるアクションが決定される。
【0134】
ステップS75は、アクションによって変数x1、変数x2が更新され、ユニット21a、ユニット21bに変数st+1として与える。
【0135】
図10は、パラメータ探索方法を有するパラメータ探索装置10を説明するブロック図である。
【0136】
パラメータ探索装置10は、演算部81、メモリ82、入出力インターフェース83、通信デバイス84、ストレージ85を有している。つまり、パラメータ探索装置10によるパラメータの探索方法は、パラメータ抽出部11、回路シミュレータ12、分類モデル13、制御部14、及びニューラルネットワーク15を含むプログラムによって提供される。なお当該プログラムは、ストレージ85又は、メモリ82に保存され、演算部81を用いてパラメータの探索を行う。
【0137】
入出力インターフェース83には、表示装置86a、キーボード86b等が電気的に接続される。なお、図10では図示していないが、マウスなどが接続されてもよい。
【0138】
通信デバイス84は、ネットワークインターフェース87を介して他のネットワーク(Network)と電気的に接続される。なお、ネットワークインターフェース87は、有線、又は無線による通信を含む。当該ネットワークには、データベース8A、リモートコンピュータ8B、及びリモートコンピュータ8Cなどが電気的に接続される。なお、ネットワークを介して電気的に接続されるデータベース8A、リモートコンピュータ8B、及びリモートコンピュータ8Cは、異なる建物、異なる地域、異なる国に設置されていてもよい。
【0139】
なお、パラメータ探索装置10によるパラメータの探索は、制御部14が動作するコンピュータと、パラメータ抽出部11、回路シミュレータ12、又は分類モデル13が動作するコンピュータ(サーバコンピュータを含む)が異なっていてもよい。
【0140】
上述したように本発明の一態様では、コンピュータを利用した電子化されたネットリストのパラメータ探索方法を提供することができる。ネットリストが電子化されることで、コンピュータ資源を用いてネットリストの要求特性に適したモデルパラメータを検索できる。
【0141】
または、本発明の一態様は、半導体素子のデータセットからモデルパラメータを抽出し、モデルパラメータの集まりを分類モデルに学習させ、分類モデルによってモデルパラメータを分類することができる。パラメータ分類方法は、分類モデルによって分類されたモデルパラメータを用いることで、効率よくネットリストの要求特性に適したモデルパラメータを検索できる。
【0142】
または、本発明の一態様は、新たなモデルパラメータが分類モデルに与えられることで、分類モデルが分類することができる要求特性ごとの適応率を確率で提示することができる。よって、適切なモデルパラメータを選択することができる。対象とするネットリストの要求特性に適するモデルパラメータを容易に選択することができるパラメータ選択方法を提供することができる。
【0143】
本発明の一態様は、回路シミュレータに与えるネットリストの変数が、ネットリストの要求特性を満たす最適候補になるように強化学習を用いて探索するパラメータ探索システムを提供することができる。
【0144】
パラメータ探索システムは、上述したように、モデルパラメータを分類モデルに学習させるパラメータ学習方法と、適切なモデルパラメータを選択するパラメータ選択方法と、強化学習を組み合わせることで、ネットリストの要求特性を満たす最適候補を探索するパラメータ探索システムを提供することができる。
【0145】
以上、本発明の一態様で示す構成、方法は、実施例で示す構成、方法と適宜組み合わせて用いることができる。
【実施例
【0146】
本実施例においては、本発明の一態様であるパラメータ探索方法を用いてパラメータの探索を行った。以下にパラメータ探索方法の詳細について図11乃至図14を用いて説明する。なお、パラメータ抽出部11は、シルバコ製のUtmost IVTMを用いた。回路シミュレーション12は、オープンソースであるngspice又はシルバコ製のSmartSpiceTMを用いた。説明を簡便にするために、対象とするネットリストは、図7Aに示したインバータ回路を用いている。なお。本実施例では、分類モデル13とUtmost IVを用いて20個のモデルパラメータを抽出したとして説明を進める。
【0147】
図11は、一例としてインバータ回路を記載したネットリストのプログラムコードである。なお、図11では、プログラムコードを説明するために行の先頭にプログラムの行番号を付与して記載する。
【0148】
図11は、本実施例で用いたインバータ回路のネットリストについて説明する。
【0149】
1行目は、パラメータの探索をするモデルパラメータ変数を定義した。なお、ユーザが設定する項目については、アンダーラインを加えることで差別化する。本実施例では、トランジスタのチャネル幅W1が最適候補になるパラメータを探索する。本実施例では、学習中にチャネル幅W1を変更できるよう、変数param_w1とした。
【0150】
2行目は、モデルパラメータが記載されたファイルを選択できるように変数param_fnameとした。なお、変数param_fnameは、図12で詳細に説明する。
【0151】
3行目又は4行目は、インバータ回路に与える電源電圧、又は信号を設定する。
【0152】
5行目又は6行目は、インバータ回路に用いる半導体素子、及び接続情報を設定する。
【0153】
7行目又は8行目は、5行目又は6行目に用いる半導体素子のモデルを設定する。本実施例では、半導体素子はトランジスタである。当該トランジスタとして、n型トランジスタ、又は、p型トランジスタを設定する。
【0154】
9行目又は10行目は、インバータ回路の要求特性に対する解析条件を設定する。
【0155】
9行目は、過渡解析を用いて電源に流れる電流の平均値(要求特性iavg)を探索対象と設定する。
【0156】
10行目は、過渡解析を用いて信号の遅延時間(要求特性tpd)を探索対象と設定する。
【0157】
なお、本実施例で用いたモデルパラメータの定義ファイルについて説明する。一例として、定義ファイルlevel3-sample-01.libについて説明する。なお、本実施例で用いるモデルパラメータは、level3の形式で設定した。なお、トランジスタのモデルパラメータは、level1乃至3など複数の異なる設定がある。ユーザは、必要とするlevelのトランジスタのモデルを用いることが好ましい。本実施例では、一般的なn型トランジスタ及びp型トランジスタのモデルパラメータを設定した。また本実施例では、定義ファイルには少なくともしきい値電圧VTOが含まれる。なお、本実施例では、しきい値電圧VTOをモデルパラメータ変数として扱う。
【0158】
図12は、本実施例で用いたユーザ設定用ファイルについて説明する。
【0159】
1行目は、回路シミュレータngspiceを用いることを宣言する。なお、回路シミュレータSmartSpiceTMを用いてもよい。
【0160】
2行目は、回路シミュレータngspiceで用いる図11で説明したネットリストの参照先を設定する。
【0161】
3行目は、回路シミュレータngspiceの第2の出力結果の出力先を設定する。
【0162】
4行目は、回路シミュレータngspiceに与えるアクション可能な範囲の上限値と、下限値を与える。本実施例では、チャネル幅の下限値1μm、及び上限値20μmを設定する。
【0163】
5行目は、回路シミュレータngspiceに与えるモデルパラメータが記載されたファイル(例えばlevel3-sample-01.lib)を設定する。本実施例では、異なる20条件のしきい値電圧VTOが記載されたモデルパラメータを用いてパラメータ探索を行う。
【0164】
6行目又は7行目は、回路シミュレータngspiceが出力する第2の出力結果に対する収束条件を設定する。
【0165】
6行目は、過渡解析を用いて電源に流れる電流の平均値(要求特性iavg)の収束条件の狙い値を設定する。
【0166】
7行目は、過渡解析を用いて信号の遅延時間(要求特性tpd)の収束条件の狙い値を設定する。
【0167】
図13A図13Bは本実施例であるパラメータ探索方法を用いてネットリストの要求特性に対するモデルパラメータを探索した結果である。横軸は、param_w1が1ではチャネル幅w1が1μmであり、param_w1が20ではチャネル幅w1が20μmであることを示している。縦軸は、変数param_fnameが0の場合、しきい値電圧VTOが0.00Vであることを示し、変数param_fnameが19の場合、しきい値電圧VTOが0.95Vであることを示している。各パラメータを用いた回路シミュレーションにおいて、各要求特性に近いほど、プロットが大きくなるよう出力した。なお、狙い値に一番近かったパラメータの箇所のプロットが一番大きかった。
【0168】
図13Aは、要求特性iavgに対するパラメータの探索結果である。なお、チャネル幅W1が小さいほど要求特性iavgが小さく、低消費電力に適したパラメータであることが確認された。
【0169】
図13Bは、要求特性tadに対するパラメータの探索結果である。なお、しきい値電圧VTOが小さいほど、又は、要求特性tadが小さいほど、遅延時間が短いことが確認された。すなわち、遅延時間を短くするのに適したモデルパラメータを探索することができたことになる。
【0170】
図14A図14Bは、本実施例を組み込んだGUIの一例を示している。GUI100は、レイアウト表示領域110、ネットリストから生成した回路構成120、パラメータ探索結果のリアルタイム表示130、及び回路シミュレータのシミュレーション結果140を表示することができる。また、GUI100は、スタートボタン又はリスタートボタン(以下、スタートボタン150a)、またはストップボタン150bを有する。なお、表示項目は、ユーザによって選択できることが好ましい。
【0171】
図14Aは、ユーザがGUIに対しネットリスト、又はユーザ設定用ファイルを与え、且つスタートボタン150aを押すことでパラメータ探索を開始した。本実施例では、GUIに与えたネットリストはインバータ回路であった。インバータ回路に与える入力信号の最大振幅を5Vに設定した。よってインバータ回路が出力する出力信号の最大振幅を5Vに設定した。
【0172】
パラメータ探索結果のリアルタイム表示130は、パラメータ探索を実行する度に、表示を更新する。本実施例では、パラメータ探索結果のリアルタイム表示130に、パラメータ探索方法によって探索されたPMOSのチャネル幅と、NMOSのチャネル幅、及び探索結果に対して与えられる累積報酬の大きさを表示する。
【0173】
回路シミュレータのシミュレーション結果140は、パラメータ探索結果を用いて回路シミュレーションを行った結果を表示する。なお、本実施例では、回路シミュレータを用いてDC解析を行う。出力信号の電圧が、入力信号の電圧と同じになる2.5Vを収束条件とした。なお、シミュレーション結果140は、収束条件と、シミュレーション結果を表示する。収束条件と、シミュレーション結果の差に応じて報酬が決定される。当該ニューラルネットワークの重み係数は、その報酬に応じて更新される。
【0174】
図14Bでは、回路シミュレータのシミュレーション結果がユーザによって設定した収束条件に達した例を示している。
【0175】
以上、本実施例に示す構成は、実施の形態に示す構成と適宜組み合わせて用いることができる。
【符号の説明】
【0176】
:DS1:測定データ、DS2:測定データ、DS3:プロセスパラメータ、F1:設定ファイル、F2:出力データ、S30:ステップ、S31:ステップ、S32:ステップ、S33:ステップ、S34:ステップ、S35:ステップ、S41:ステップ、S42:ステップ、S43:ステップ、S44:ステップ、S45:ステップ、S46:ステップ、S47:ステップ、S48:ステップ、S51:ステップ、S52:ステップ、S53:ステップ、S54:ステップ、S55:ステップ、S56:ステップ、S57:ステップ、S58:ステップ、S59:ステップ、S5A:ステップ、S5B:ステップ、SD1:配線、SD2:配線、8A:データベース、8B:リモートコンピュータ、8C:リモートコンピュータ、10:パラメータ探索装置、11:パラメータ抽出部、12:回路シミュレータ、13:分類モデル、14:制御部、15:ニューラルネットワーク、21:入力層、21a:ユニット、21b:ユニット、22:出力層、22a:ユニット、22b:ユニット、22c:ユニット、22d:ユニット、23:中間層、24:隠れ層、24a:隠れ層、24m:隠れ層、25:隠れ層、25a:隠れ層、25m:隠れ層、61:トランジスタ、61A:トランジスタ、62:トランジスタ、63:抵抗、64:容量、65:配線、66:配線、81:演算部、82:メモリ、83:入出力インターフェース、84:通信デバイス、85:ストレージ、86a:表示装置、86b:キーボード、87:ネットワークインターフェース、100:GUI、110:レイアウト表示領域、120:ネットリストから生成した回路構成、130:パラメータ探索結果のリアルタイム表示、140:シミュレーション結果、150a:スタートボタン、150b:ストップボタン
図1
図2
図3
図4
図5
図6
図7A
図7B
図7C
図7D
図8
図9
図10
図11
図12
図13A
図13B
図14A
図14B