(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2022-09-26
(45)【発行日】2022-10-04
(54)【発明の名称】レイアウト設計システム及びレイアウト設計方法
(51)【国際特許分類】
G06F 30/392 20200101AFI20220927BHJP
【FI】
G06F30/392
(21)【出願番号】P 2019524545
(86)(22)【出願日】2018-06-14
(86)【国際出願番号】 IB2018054348
(87)【国際公開番号】W WO2018234945
(87)【国際公開日】2018-12-27
【審査請求日】2021-06-07
(31)【優先権主張番号】P 2017122541
(32)【優先日】2017-06-22
(33)【優先権主張国・地域又は機関】JP
(73)【特許権者】
【識別番号】000153878
【氏名又は名称】株式会社半導体エネルギー研究所
(72)【発明者】
【氏名】筒井 直昭
(72)【発明者】
【氏名】幸村 雄介
(72)【発明者】
【氏名】岩城 裕司
(72)【発明者】
【氏名】山崎 舜平
【審査官】岡本 俊威
(56)【参考文献】
【文献】特開2015-148926(JP,A)
【文献】特開2017-080016(JP,A)
【文献】回路・実装設計技術委員会,システムJisso-CAD/CAEの課題と展望,エレクトロニクス実装学会誌,20巻 1号,日本,2017年04月03日,p. 7-10,https://www.jstage.jst.go.jp/article/jiep/20/1/20_7/_article/-char/ja
(58)【調査した分野】(Int.Cl.,DB名)
G06F 30/39-30/3953
(57)【特許請求の範囲】
【請求項1】
処理部を有し、
前記処理部には、回路図と、レイアウト設計情報と、が入力され、
前記処理部は、前記回路図と、前記レイアウト設計情報とから、Q学習を行うことでレイアウトデータを生成する機能を有し、
前記処理部は、前記レイアウトデータを出力する機能を有し、
前記処理部は、第1のニューラルネットワークを有し、
前記第1のニューラルネットワークは、前記Q学習において行動価値関数を推定する、レイアウト設計システム。
【請求項2】
端末と、サーバと、を有し、
前記端末は、入出力部と、第1の通信部と、を有し、
前記サーバは、処理部と、第2の通信部と、を有し、
前記入出力部には、回路図と、レイアウト設計情報と、が入力され、
前記第1の通信部は、有線通信及び無線通信のうち一方または双方により、前記サーバに前記回路図及び前記レイアウト設計情報を供給する機能を有し、
前記処理部は、前記回路図と、前記レイアウト設計情報とから、Q学習を行うことでレイアウトデータを生成する機能を有し、
前記処理部は、前記第2の通信部に前記レイアウトデータを供給する機能を有し、
前記第2の通信部は、有線通信及び無線通信のうち一方または双方により、前記端末に前記レイアウトデータを供給する機能を有し、
前記処理部は、第1のニューラルネットワークを有し、
前記第1のニューラルネットワークは、前記Q学習において行動価値関数を推定する、レイアウト設計システム。
【請求項3】
請求項1又は請求項2において、
前記第1のニューラルネットワークは、畳み込みニューラルネットワークである、レイアウト設計システム。
【請求項4】
請求項1又は請求項2において、
前記処理部は、さらに、第2のニューラルネットワークを有し、
前記第2のニューラルネットワークは、前記行動価値関数の教師データを推定し、
前記教師データから算出される損失関数に基づき、前記第1のニューラルネットワークの重み係数を更新する、レイアウト設計システム。
【請求項5】
請求項4において、
前記第2のニューラルネットワークは、畳み込みニューラルネットワークである、レイアウト設計システム。
【請求項6】
請求項1又は請求項2において、
前記処理部は、トランジスタを有し、
前記トランジスタは、チャネル形成領域に金属酸化物を有する、レイアウト設計システム。
【請求項7】
請求項1又は請求項2において、
前記処理部は、トランジスタを有し、
前記トランジスタは、チャネル形成領域にシリコンを有する、レイアウト設計システム。
【請求項8】
回路図と、レイアウト設計情報と、を入力し、
前記回路図と、前記レイアウト設計情報とから、Q学習を行うことで、レイアウトデータを作成し、
前記Q学習において、第1のニューラルネットワークを用いて行動価値関数を推定し、
前記レイアウトデータを出力する、レイアウト設計方法。
【請求項9】
請求項8において、
第2のニューラルネットワークは、前記行動価値関数の教師データを推定し、
前記教師データから算出される損失関数に基づき、前記第1のニューラルネットワークの重み係数を更新する、レイアウト設計方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明の一態様は、レイアウト設計システム及びレイアウト設計方法に関する。
【0002】
なお、本発明の一態様は、上記の技術分野に限定されない。本明細書等で開示する本発明の一態様の技術分野としては、半導体装置、表示装置、発光装置、蓄電装置、記憶装置、表示システム、電子機器、照明装置、入力装置、入出力装置、それらの駆動方法、又はそれらの製造方法、を一例として挙げることができる。
【0003】
また、本明細書等において、半導体装置とは、半導体特性を利用することで機能しうる装置全般を指す。トランジスタ、半導体回路、演算装置、記憶装置等は半導体装置の一態様である。また、撮像装置、電気光学装置、発電装置(薄膜太陽電池、有機薄膜太陽電池等を含む)、及び電子機器は半導体装置を有している場合がある。
【背景技術】
【0004】
半導体技術の進歩に伴い集積回路の規模が大きくなっており、回路設計者には大規模な回路を短期間で設計することが求められている。集積回路の設計において、デジタル回路のレイアウト設計を自動で行うCADツールが実用化されている。一方、アナログ回路などは回路設計者が手動でレイアウト設計の作業を行い、長い作業時間を要する場合がある。また、レイアウト設計においては、要求される回路特性及びデザインルールを満たす必要があることから、回路設計者には高い技術が求められる。
【0005】
また、様々な用途において、人工知能の活用が検討されている。特に、人工ニューラルネットワークの構成を応用することで、従来のノイマン型コンピュータよりも高性能なコンピュータが実現できると期待されており、近年、電子回路上で人工ニューラルネットワークを構築する種々の研究が進められている。
【0006】
例えば、特許文献1には、チャネル形成領域に酸化物半導体を有するトランジスタを用いた記憶装置によって、人工ニューラルネットワークを用いた計算に必要な重みデータを保持する発明が開示されている。
【先行技術文献】
【特許文献】
【0007】
【文献】米国特許公開第2016/0343452号公報
【発明の概要】
【発明が解決しようとする課題】
【0008】
アナログ回路設計においては、回路設計者が手動でレイアウト設計の作業を行うことが多く、作業に時間を要することから、レイアウト設計の作業時間の短縮が求められる。また、アナログ回路のレイアウト設計は、製造コスト削減や動作速度向上のため、レイアウト面積の最小化が求められるとともに、配線や導体が有する寄生容量などを考慮し、デザインルールを満たす必要がある。
【0009】
上記に鑑み、本発明の一態様は、短時間でレイアウト設計を行えるレイアウト設計システムを提供することを課題の一つとする。又は、本発明の一態様は、レイアウト面積の小さいレイアウト設計を行えるレイアウト設計システムを提供することを課題の一つとする。又は、本発明の一態様は、新規なレイアウト設計システムを提供することを課題の一つとする。又は、本発明の一態様は、短時間でレイアウト設計を行えるレイアウト設計方法を提供することを課題の一つとする。又は、本発明の一態様は、レイアウト面積の小さいレイアウト設計を行えるレイアウト設計方法を提供することを課題の一つとする。又は、本発明の一態様は、新規なレイアウト設計方法を提供することを課題の一つとする。
【0010】
なお、これらの課題の記載は、他の課題の存在を妨げるものではない。本発明の一態様は、必ずしも、これらの課題の全てを解決する必要はないものとする。明細書、図面、請求項の記載から、これら以外の課題を抽出することが可能である。
【課題を解決するための手段】
【0011】
本発明の一態様は、処理部を有し、処理部には、回路図と、レイアウト設計情報と、が入力され、処理部は、回路図と、レイアウト設計情報とから、Q学習を行うことでレイアウトデータを生成する機能を有し、処理部は、レイアウトデータを出力する機能を有し、処理部は、第1のニューラルネットワークを有し、第1のニューラルネットワークは、Q学習において行動価値関数を推定する、レイアウト設計システムである。
【0012】
本発明の一態様は、端末と、サーバと、を有し、端末は、入出力部と、第1の通信部と、を有し、サーバは、処理部と、第2の通信部と、を有し、入出力部には、回路図と、レイアウト設計情報と、が入力され、第1の通信部は、有線通信及び無線通信のうち一方または双方により、サーバに回路図及びレイアウト設計情報を供給する機能を有し、処理部は、回路図と、レイアウト設計情報とから、Q学習を行うことでレイアウトデータを生成する機能を有し、処理部は、第2の通信部にレイアウトデータを供給する機能を有し、第2の通信部は、有線通信及び無線通信のうち一方または双方により、端末にレイアウトデータを供給する機能を有し、処理部は、第1のニューラルネットワークを有し、第1のニューラルネットワークは、Q学習において行動価値関数を推定する、レイアウト設計システムである。
【0013】
前述のレイアウト設計システムにおいて、第1のニューラルネットワークは、畳み込みニューラルネットワークであることが好ましい。
【0014】
前述のレイアウト設計システムにおいて、処理部は、さらに、第2のニューラルネットワークを有し、第2のニューラルネットワークは、行動価値関数の教師データを推定し、教師データから算出される損失関数に基づき、第1のニューラルネットワークの重み係数を更新すると好ましい。
【0015】
前述のレイアウト設計システムにおいて、第2のニューラルネットワークは、畳み込みニューラルネットワークであることが好ましい。
【0016】
前述のレイアウト設計システムにおいて、処理部は、トランジスタを有していてもよい。トランジスタは、チャネル形成領域に金属酸化物を有していてもよい。または、トランジスタは、チャネル形成領域にシリコンを有していてもよい。
【0017】
本発明の一態様は、回路図と、レイアウト設計情報と、を入力し、回路図と、レイアウト設計情報とから、Q学習を行うことで、レイアウトデータを作成し、Q学習において、第1のニューラルネットワークを用いて行動価値関数を推定し、レイアウトデータを出力する、レイアウト設計方法である。
【0018】
レイアウト設計方法において、第2のニューラルネットワークは、行動価値関数の教師データを推定し、教師データから算出される損失関数に基づき、第1のニューラルネットワークの重み係数を更新すると好ましい。
【発明の効果】
【0019】
本発明の一態様により、短時間でレイアウト設計を行えるレイアウト設計システムを提供できる。又は、本発明の一態様により、レイアウト面積の小さいレイアウト設計を行えるレイアウト設計システムを提供できる。又は、本発明の一態様により、新規なレイアウト設計システムを提供できる。又は、本発明の一態様により、短時間でレイアウト設計を行えるレイアウト設計方法を提供できる。又は、本発明の一態様により、レイアウト面積の小さいレイアウト設計を行えるレイアウト設計方法を提供できる。又は、本発明の一態様により、新規なレイアウト設計方法を提供できる。
【0020】
なお、これらの効果の記載は、他の効果の存在を妨げるものではない。本発明の一態様は、必ずしも、これらの効果の全てを有する必要はない。明細書、図面、請求項の記載から、これら以外の効果を抽出することが可能である。
【図面の簡単な説明】
【0021】
【
図1】レイアウト設計システムの例を示すブロック図。
【
図4】レイアウト設計システムの例を示すブロック図。
【
図10】基本セル及びアブストラクトの例を示す図。
【
図12】アブストラクト及びレイアウトの画像データの例を示す図。
【
図17】ニューラルネットワークの構成の例を示す図。
【
図26】レイアウト設計システムの例を示すブロック図。
【
図27】ニューラルネットワークの構成例を示す図。
【発明を実施するための形態】
【0022】
実施の形態について、図面を用いて詳細に説明する。但し、本発明は以下の説明に限定されず、本発明の趣旨及びその範囲から逸脱することなくその形態及び詳細を様々に変更し得ることは当業者であれば容易に理解される。従って、本発明は以下に示す実施の形態の記載内容に限定して解釈されるものではない。
【0023】
なお、以下に説明する発明の構成において、同一部分又は同様な機能を有する部分には同一の符号を異なる図面間で共通して用い、その繰り返しの説明は省略する。また、同様の機能を指す場合には、ハッチパターンを同じくし、特に符号を付さない場合がある。
【0024】
また、図面において示す各構成の、位置、大きさ、範囲などは、理解の簡単のため、実際の位置、大きさ、範囲などを表していない場合がある。このため、開示する発明は、必ずしも、図面に開示された位置、大きさ、範囲などに限定されない。
【0025】
なお、「膜」という言葉と、「層」という言葉とは、場合によっては、又は、状況に応じて、互いに入れ替えることが可能である。例えば、「導電層」という用語を、「導電膜」という用語に変更することが可能である。または、例えば、「絶縁膜」という用語を、「絶縁層」という用語に変更することが可能である。
【0026】
(実施の形態1)
本実施の形態では、本発明の一態様のレイアウト設計システムについて、
図1乃至
図26を用いて説明する。
【0027】
本発明の一態様であるレイアウト設計システムは、回路図及びレイアウト設計情報を元にレイアウトデータを作成する機能を有する。本発明の一態様であるレイアウト設計システムは、集積回路のレイアウト設計に用いることができる。
【0028】
本明細書等において、レイアウト設計とは、回路図及びレイアウト設計情報を元にレイアウトデータを作成することを指す。回路図とは、トランジスタ、ダイオードなどの能動素子や、容量、抵抗などの受動素子がどのように接続されるか、図形と線によって表現した図である。レイアウトデータとは、マスク(レチクルともいう)に転写される半導体層、導電体層などの形状及び配置の情報である。なお、本明細書等において、能動素子及び受動素子を素子と記す場合がある。
【0029】
レイアウト設計情報は、セルライブラリ、デザインルール及びグリッド情報を有する。レイアウト設計情報の詳細は後述する。
【0030】
本発明の一態様のレイアウト設計システムは、処理部を有する。処理部には、回路図及びレイアウト設計情報が入力される。処理部は、回路図及びレイアウト設計情報から、レイアウトデータを作成する機能を有する。なお、本実施の形態のレイアウト設計システムは、回路図及びレイアウト設計情報を変えることで、様々なレイアウト設計に応用できる。
【0031】
本発明の一態様であるレイアウト設計システムを用いることで、回路設計で作成された回路図及びデザインルールを満たすとともに、集積回路の面積が小さいレイアウトデータを作成できる。
【0032】
レイアウト設計システムは、少なくとも一部の処理に人工知能(AI:Artificial Intelligence)を用いて、レイアウトデータを作成することが好ましい。
【0033】
レイアウト設計システムは、特に、人工ニューラルネットワーク(ANN:Artificial Neural Network、以下、単にニューラルネットワークとも記す)を用いて、出力データを生成することが好ましい。なお、本明細書等において、人工ニューラルネットワークを、単にニューラルネットワーク(NN:Neural Network)と記す場合がある。ニューラルネットワークは、回路(ハードウェア)またはプログラム(ソフトウェア)により実現される。
【0034】
レイアウト設計には、強化学習(Reinforcement Learning)を用いることができる。強化学習として、例えばTD学習(Temporal Difference Learning:時間的差分学習)、Q学習(Q-Learning)などを用いることができる。また、Q学習において深層学習を利用する学習アルゴリズムを用いると特に好ましい。
【0035】
Q学習とは、時刻tにおいて、環境が状態stのとき、エージェントが行動atを選択する価値を学習する方法である。エージェントは行動する主体を指し、環境は働きかけられる対象を指す。エージェントの行動atにより環境が状態Stから状態St+1に遷移し、エージェントは報酬rt+1を受け取る。Q学習では、得られる報酬の総量が最終的に最大になるように行動atを学習する。状態stにおいて行動atをとる価値を、行動価値関数Q(st,at)と表せる。本明細書等において、行動価値関数QをQ関数、行動価値関数Q(st,at)の値をQ値と呼ぶ場合がある。例えば、行動価値関数Q(st,at)の更新式は、数式1で表せる。
【0036】
【0037】
ここで、αは学習率(αは0より大きく1以下)、γは割引率(γは0以上1以下)を示す。学習率αは、現在の価値と、行動によって得られた結果のどちらを重視するかを表している。学習率αが1に近いほど、得られた結果を重視し価値の変化は大きくなる。学習率αが0に近いほど、現在の価値を重視し価値の変化は小さくなる。割引率γは、現在の報酬と、将来の報酬のどちらを重視するかを表している。割引率γが0に近いほど、現在の報酬を重視する。割引率γが1に近いほど、将来の報酬を重視する。例えば、学習率αを0.10、割引率γを0.90とすることができる。
【0038】
前述の行動価値関数Q(st,at)の推定に深層学習を用いることができる。行動価値関数Q(st,at)の推定に深層学習を用いる学習アルゴリズムをDeep Q-Learningと呼び、Deep Q-Learningで用いるニューラルネットワークをDeep Q-Network(DQN)と呼ぶ場合がある。
【0039】
本発明の一態様であるレイアウト設計システムは、レイアウト設計にDeep Q-Learningを用い、Deep Q-Networkは畳み込みニューラルネットワーク(CNN:Convolutional Neural Network)の構成を有すると特に好ましい。なお、本明細書等において、Deep Q-Networkを、単にニューラルネットワークと記す場合がある。
【0040】
一般的に、Q学習においては行動価値関数Q(st,at)の状態st及び行動atの組み合わせを、予めルックアップテーブル(LUT:Look Up Table)としてデータを保存する。しかし、状態st及び行動atの組み合わせは多数あるため、多数のメモリが必要となる場合がある。一方、本発明の一態様であるレイアウト設計システムにおいては、行動価値関数Q(st,at)の推定にニューラルネットワークを用いることで、必要とするメモリ数を少なくすることができる。
【0041】
本明細書等において、ニューラルネットワークとは、生物の神経回路網を模し、学習によってニューロンどうしの結合強度を決定し、問題解決能力を持たせるモデル全般を指す。ニューラルネットワークは、入力層と、出力層と、入力層と出力層との間に1層以上の中間層(隠れ層)を有する。
【0042】
本明細書等において、ニューラルネットワークについて述べる際に、既にある情報からニューロンとニューロンの結合強度(重み係数ともいう)を決定することを「学習」と呼ぶ場合がある。
【0043】
また、本明細書等において、学習によって得られた結合強度を用いてニューラルネットワークを構成し、そこから新たな結論を導くことを「推論」と呼ぶ場合がある。
【0044】
ニューラルネットワークは、膨大な数の積和演算によって実行される。これらの演算処理は、デジタル回路及びアナログ回路の一方または双方を用いて行うことができる。デジタル回路を用いる場合、必要となるトランジスタ数が膨大になり、非効率的で消費電力が高い。そのため、上述の積和演算はアナログ積和演算回路(以下、APS(Analog Product-Sum circuit)と呼ぶ)で行うことが好ましい。また、APSはアナログメモリを有することが好ましい。学習で得られた重み係数を上記アナログメモリに格納することで、APSは、アナログデータのまま積和演算を実行することができる。その結果、APSは少ないトランジスタで効率的にニューラルネットワークを構築することができる。
【0045】
なお、本明細書等においてアナログメモリはアナログデータを格納することが可能な記憶装置のことを指す。また、本明細書においてアナログデータとは、3ビット(8値)以上の分解能を有するデータのことを指す。多値データのことをアナログデータと呼ぶ場合もある。
【0046】
上記アナログメモリとして、多値のフラッシュメモリ、ReRAM(Resistive Random Access Memory)、MRAM(Magnetoresistive Random Access Memory)またはOSトランジスタを用いたメモリ(OSメモリと呼ぶ)を用いることができる。
【0047】
また、本明細書等において、チャネル形成領域に酸化物半導体または金属酸化物を用いたトランジスタをOxide Semiconductorトランジスタ、あるいはOSトランジスタと呼ぶ。OSトランジスタのチャネル形成領域は、金属酸化物を有することが好ましい。
【0048】
また、本明細書等において、金属酸化物(metal oxide)とは、広い表現での金属の酸化物である。金属酸化物は、酸化物絶縁体、酸化物導電体(透明酸化物導電体を含む)、酸化物半導体(Oxide Semiconductorまたは単にOSともいう)などに分類される。例えば、トランジスタの半導体層に金属酸化物を用いた場合、当該金属酸化物を酸化物半導体と呼称する場合がある。つまり、金属酸化物が増幅作用、整流作用、及びスイッチング作用の少なくとも1つを有する場合、当該金属酸化物を、金属酸化物半導体(metal oxide semiconductor)、略してOSと呼ぶことができる。
【0049】
チャネル形成領域が有する金属酸化物はインジウム(In)を含むことが好ましい。チャネル形成領域が有する金属酸化物がインジウムを含む金属酸化物の場合、OSトランジスタのキャリア移動度(電子移動度)が高くなる。また、チャネル形成領域が有する金属酸化物は、元素Mを含む酸化物半導体であると好ましい。元素Mは、好ましくは、アルミニウム(Al)、ガリウム(Ga)またはスズ(Sn)などとする。そのほかの元素Mに適用可能な元素としては、ホウ素(B)、シリコン(Si)、チタン(Ti)、鉄(Fe)、ニッケル(Ni)、ゲルマニウム(Ge)、イットリウム(Y)、ジルコニウム(Zr)、モリブデン(Mo)、ランタン(La)、セリウム(Ce)、ネオジム(Nd)、ハフニウム(Hf)、タンタル(Ta)、タングステン(W)などがある。ただし、元素Mとして、前述の元素を複数組み合わせても構わない場合がある。元素Mは、例えば、酸素との結合エネルギーが高い元素である。例えば、酸素との結合エネルギーがインジウムよりも高い元素である。また、チャネル形成領域が有する金属酸化物は、亜鉛(Zn)を含む金属酸化物であると好ましい。亜鉛を含む金属酸化物は結晶化しやすくなる場合がある。
【0050】
チャネル形成領域が有する金属酸化物は、インジウムを含む金属酸化物に限定されない。半導体層は、例えば、亜鉛スズ酸化物、ガリウムスズ酸化物などの、インジウムを含まず、亜鉛を含む金属酸化物、ガリウムを含む金属酸化物、スズを含む金属酸化物などであっても構わない。
【0051】
<1.レイアウト設計システムの構成>
レイアウト設計システム100の構成について、説明する。レイアウト設計システム100のブロック図を
図1示す。レイアウト設計システム100は、少なくとも、処理部103を有する。
図1に示すレイアウト設計システム100は、さらに、入力部101、伝送路102、記憶部105、データベース107、及び出力部109を有する。
【0052】
[入力部101]
入力部101には、レイアウト設計システム100の外部から情報が供給される。入力部101に供給された情報は、伝送路102を介して、処理部103、記憶部105、またはデータベース107に供給される。入力部101に供給される情報として、例えば回路図、レイアウト設計情報などがある。
【0053】
[伝送路102]
伝送路102は、情報を伝達する機能を有する。入力部101、処理部103、記憶部105、データベース107、及び出力部109の間の情報の送受信は、伝送路102を介して行うことができる。
【0054】
[処理部103]
処理部103は、入力部101、記憶部105、データベース107などから供給された情報を用いて、レイアウト設計を行い、レイアウトデータを作成する機能を有する。処理部103は、レイアウトデータなどを、記憶部105、データベース107、出力部109などに供給することができる。
【0055】
処理部103には、チャネル形成領域に金属酸化物を有するトランジスタを用いることが好ましい。当該トランジスタはオフ電流が極めて低いため、当該トランジスタを記憶素子として機能する容量素子に流入した電荷(データ)を保持するためのスイッチとして用いることで、データの保持期間を長期にわたり確保することができる。この特性を、処理部103が有するレジスタ及びキャッシュメモリのうち少なくとも一方に用いることで、必要なときだけ処理部103を動作させ、他の場合には直前の処理の情報を当該記憶素子に待避させることにより、ノーマリーオフコンピューティングが可能となり、レイアウト設計システムの低消費電力化を図ることができる。
【0056】
処理部103は、例えば、演算回路、または中央演算装置(CPU:Central Processing Unit)等を有する。
【0057】
処理部103は、DSP(Digital Signal Processor)、GPU(Graphics Processing Unit)等のマイクロプロセッサを有していてもよい。マイクロプロセッサは、FPGA(Field Programmable Gate Array)、FPAA(Field Programmable Analog Array)等のPLD(Programmable Logic Device)によって実現された構成であってもよい。処理部103は、プロセッサにより種々のプログラムからの命令を解釈し実行することで、各種のデータ処理及びプログラム制御を行うことができる。プロセッサにより実行しうるプログラムは、プロセッサが有するメモリ領域及び記憶部105のうち少なくとも一方に格納される。
【0058】
処理部103はメインメモリを有していてもよい。メインメモリは、RAM(Random Access Memory)等の揮発性メモリ、及びROM(Read Only Memory)等の不揮発性メモリのうち少なくとも一方を有する。
【0059】
RAMとしては、例えばDRAM(Dynamic Random Access Memory)、SRAM(Static Random Access Memory)等が用いられ、処理部103の作業空間として仮想的にメモリ空間が割り当てられ利用される。記憶部105に格納されたオペレーティングシステム、アプリケーションプログラム、プログラムモジュール、プログラムデータ、及びルックアップテーブル等は、実行のためにRAMにロードされる。RAMにロードされたこれらのデータ、プログラム、及びプログラムモジュールは、それぞれ、処理部103に直接アクセスされ、操作される。
【0060】
ROMには、書き換えを必要としない、BIOS(Basic Input/Output System)及びファームウェア等を格納することができる。ROMとしては、マスクROM、OTPROM(One Time Programmable Read Only Memory)、EPROM(Erasable Programmable Read Only Memory)等が挙げられる。EPROMとしては、紫外線照射により記憶データの消去を可能とするUV-EPROM(Ultra-Violet Erasable Programmable Read Only Memory)、EEPROM(Electrically Erasable Programmable Read Only Memory)、フラッシュメモリ等が挙げられる。
【0061】
[記憶部105]
記憶部105は、処理部103が実行するプログラムを記憶する機能を有する。また、記憶部105は、処理部103が生成したレイアウトデータ及び入力部101に入力された情報などを記憶する機能を有していてもよい。
【0062】
記憶部105は、揮発性メモリ及び不揮発性メモリのうち少なくとも一方を有する。記憶部105は、例えば、DRAM、SRAMなどの揮発性メモリを有していてもよい。記憶部105は、例えば、ReRAM(Resistive Random Access Memory)などに代表される抵抗変化型のメモリ、PRAM(Phase change Random Access Memory)、FeRAM(Ferroelectric Random Access Memory)、MRAM(Magnetoresistive Random Access Memory)などに代表される磁気抵抗型のメモリ、またはフラッシュメモリなどの不揮発性メモリを有していてもよい。また、記憶部105は、ハードディスクドライブ(Hard Disc Drive:HDD)及びソリッドステートドライブ(Solid State Drive:SSD)等の記録メディアドライブを有していてもよい。
【0063】
[データベース107]
データベース107は、セルライブラリ及びデザインルールを記憶する機能を有する。また、データベース107は、処理部103が生成したレイアウトデータ及び入力部101に入力された情報などを記憶する機能を有していてもよい。なお、記憶部105及びデータベース107は互いに分離されていなくてもよい。例えば、レイアウト設計システムは、記憶部105及びデータベース107の双方の機能を有する記憶ユニットを有していてもよい。
【0064】
[出力部109]
出力部109は、レイアウト設計システム100の外部に情報を供給する機能を有する。例えば、処理部103で作成したレイアウトデータなどを外部に供給することができる。
【0065】
<2.レイアウト設計方法1>
レイアウト設計方法について、説明する。
【0066】
レイアウト設計方法の説明に先立って、まず、集積回路の開発フローを
図2に示す。
図2は、集積回路の例としてアナログ回路の開発フローを示したものであり、アナログ回路の仕様を決めるステップから、レイアウトデータの作成が完了するステップまでを示している。
【0067】
ステップS11は、所望する集積回路の仕様を決定するステップである。集積回路の仕様として、例えば集積回路の特性、大きさなどがある。
【0068】
ステップS12は、回路設計を行うステップである。回路設計では、セルライブラリ115と、プロセス情報111に格納されたトランジスタパラメータ113を主として参照し、ステップS11で決定した仕様を満たす回路
図119を作成する。使用するセルライブラリ115を変えることで、同じ仕様の回路を様々な態様で実現することができる。
【0069】
セルライブラリとは、基本セルのデータベースである。アナログ回路の設計において、基本セルはトランジスタ、容量など個々の素子を指す場合がある。デジタル回路設計において、基本セルは論理演算素子であるANDゲート、NANDゲート、ORゲート、NORゲート等の論理ゲートを指す場合がある。
【0070】
トランジスタパラメータとは、集積回路に用いる素子の情報である。トランジスタパラメータとして、例えば、トランジスタのチャネル長、チャネル幅及び移動度がある。
【0071】
ステップS13は、シミュレーションを行うステップである。ステップS13では、ステップS12の回路設計で作成された回路
図119が、ステップS11で決めた仕様を満たすか否かを確認する。仕様を満たさない場合は、再度、ステップS12の回路設計を行う。
【0072】
ステップS14は、レイアウト設計を行うステップである。レイアウト設計では、ステップS12で作成した回路
図119と、セルライブラリ115と、プロセス情報111に格納されたデザインルール117を主として参照し、レイアウトデータ121を作成する。ステップS14のレイアウト設計に、本発明の一態様であるレイアウト設計システム100を用いることができる。
【0073】
デザインルールとは、各素子の構成要素(半導体層、導電体層など)の寸法及び間隔の最小値などを指し、レイアウト設計する上での制約事項である。デザインルールには、例えば、配線の幅、配線と隣接する配線との間隔、配線と隣接する素子との間隔、コンタクトホールの大きさ等の最大値、最小値が含まれる。
【0074】
ステップS15は、DRC(Design Rule Check)及びLVS(Layout versus Schematic)を行うステップである。DRCは、S14のレイアウト設計で作成されたレイアウトデータ121が、デザインルール117を満たしているか否かを確認する。デザインルールを満たさない場合は、再度、ステップS14のレイアウト設計を行う。LVSは、ステップS14のレイアウト設計で作成されたレイアウトデータ121が、ステップS12で作成された回路
図119の接続関係を満たしているか否かを確認する。回路
図119の接続関係を満たさない場合は、再度、ステップS14のレイアウト設計を行う。なお、LVSは行われない場合がある。
【0075】
図2は、アナログ回路を例に説明したが、デジタル回路、又はアナログ・デジタル回路においても、本発明の一態様であるレイアウト設計システム100を適用できる。また、回路全体ではなく、回路の一部にレイアウト設計システム100を適用させてもよい。
【0076】
以上で集積回路の開発フローの説明を終了する。
【0077】
本発明の一態様であるレイアウト設計システム100を適用できる集積回路について、説明する。
【0078】
集積回路の例として、記憶回路の構成を用いて説明する。記憶回路のブロック図を
図3に示す。
図3に示すブロック図では、メモリセルアレイ90、ワード線駆動回路91、およびビット線駆動回路92を図示している。
【0079】
メモリセルアレイ90は、m行n列(m、nは自然数)のマトリクス状に設けられたメモリセルMCを有する。メモリセルMCは、ワード線WL_1乃至WL_mおよびビット線BL_1乃至BL_nに接続される。メモリセルMCは、ビット線およびワード線の他、電流を流すためのソース線、トランジスタのバックゲートに電圧を印加するための配線、または容量素子の一方の電極を固定電位にするための容量線等に接続されていてもよい。
【0080】
ワード線駆動回路91は、各行におけるメモリセルMCを選択するための信号を出力する回路である。ワード線WL_1乃至WL_mは、書き込み用と読み出し用とに別々のワード線とがあってもよい。
【0081】
ビット線駆動回路92は、各列におけるメモリセルMCへのデータを書き込み、またはメモリセルMCからのデータの読み出しを行うための回路である。ビット線BL_1乃至BL_nは、書き込み用と読み出し用とに別々のビット線とがあってもよい。
【0082】
メモリセルMCは、トランジスタ、容量など複数の素子を有する。メモリセルMC内の素子のレイアウト設計について、本発明の一態様であるレイアウト設計システム100を適用できる。
【0083】
本発明の一態様であるレイアウト設計システム100を用いたレイアウト設計方法について、説明する。
【0084】
本発明の一態様であるレイアウト設計システム100は、回路図及びレイアウト設計情報を元にレイアウトデータ121を作成する機能を有する。レイアウト設計情報は、セルライブラリ115、デザインルール117及びグリッド情報123を有する。レイアウト設計システム100の例を示すブロック図を、
図4に示す。
図4に示すように、本発明の一態様であるレイアウト設計システム100は、回路
図119、セルライブラリ115、デザインルール117及びグリッド情報123を入力し、レイアウトデータ121が出力される。
【0085】
レイアウト設計システム100を用いたレイアウト設計方法のフローを、
図5及び
図6に示す。
図5及び
図6に示すフローは、
図2のステップS14に示したレイアウト設計に該当し、回路
図119及びレイアウト設計情報を元にレイアウトデータ121を作成するフローである。本発明の一態様においては、まず素子の配置を決め、次に素子間の配線の経路を決める。
【0086】
本発明の一態様であるレイアウト設計システムを用いることで、回路設計で作成された回路図及びデザインルールを満たすとともに、集積回路の面積が小さいレイアウトデータを作成できる。
【0087】
なお、本明細書等において、ステップS26のレイアウト状態の観察から、ステップS33及びステップS36の行動価値関数Q(st,at)の更新までの1回の流れを、1エピソードと記す場合がある。また、行動価値関数Q(st,at)を更新した回数を、エピソード回数と記す場合がある。
【0088】
[ステップS21]
ステップS21は、回路図及びレイアウト設計情報を取得するステップである。
【0089】
回路図として、前述のステップS12で作成された回路
図119を用いることができる。回路
図119及びレイアウト情報は、レイアウト設計システム100の外部から入力部101に入力される。そして、回路
図119は、入力部101から、伝送路102を介して、処理部103に供給される。または、回路
図119及びレイアウト情報は、伝送路102を介して、記憶部105またはデータベース107に保存され、記憶部105またはデータベース107から、伝送路102を介して、処理部103に供給されてもよい。
【0090】
回路図として、ハードウェア記述言語(HDL:Hardware Description Language)により素子及び素子間の接続関係を記載したネットリストを用いてもよい。また、回路図として、SPICE(Simulation Program with Integrated Circuit Emphasis)により素子及び素子間の接続関係を記載したネットリストを用いてもよい。
【0091】
レイアウト設計情報は、セルライブラリ、デザインルール及びグリッド情報を有する。
【0092】
グリッド情報とは、グリッド枠の大きさ及びグリッド間隔の値である。グリッドは、複数の直線がそれぞれ周期的に交わることで構成される格子である。グリッド枠とは、グリッドが設けられる領域の外周を指し、矩形とする。グリッド間隔とは、グリッドを構成する直線の間隔を指す。グリッド間隔は、デザインルールで定められた配線幅の最小値と同程度、又は配線幅の最小値より小さい値とすることが好ましい。グリッド枠の大きさは、グリッド間隔の整数倍とする。なお、本明細書等において、矩形とは4つの内角が全て直角である四角形を指し、正方形を含む。
【0093】
[ステップS22]
ステップS22は、処理部103でグリッドを作成するステップである。
【0094】
ステップS21で取得したグリッド情報を元に、グリッド枠601及びグリッド603を作成する。グリッド枠601及びグリッド603の例を
図8(A)に示す。本実施の形態では、構成する直線がそれぞれ等間隔で直交する、正方形のグリッドを用いる例を示している。
【0095】
[ステップS23]
ステップS23は、処理部103でグリッド枠内に基本セル及びアブストラクトを作成するステップである。
【0096】
ステップS21で取得した回路
図119を元に、基本セルを作成する。基本セルの例を
図8(B)及び
図8(C)に示す。
図8(B)は、半導体層301と、ゲート電極303と、ソース電極305と、ドレイン電極307と、を有するトランジスタ素子を示している。
図8(C)は、上部電極309と、上部電極309と重なる領域を有する下部電極311と、を有する容量素子を示している。なお、
図8(B)及び
図8(C)はアナログ回路の例として、基本セルとして素子を用いる例を示しているが、本発明の一態様はこれに限られない。アナログ回路の場合は、基本セルとして論理ゲート等を用いることができる。
【0097】
素子は、他の素子と電気的に接続される場合がある。また、素子は、ワード線やビット線など(以下、信号線と記す)と電気的に接続される場合がある。素子と素子との間の接続関係、素子と信号線との間の接続関係は、回路
図119に基づく。
【0098】
素子又は信号線が、他の素子又は信号線と電気的に接続する領域を接続領域と記す。
図8(B)に示したトランジスタ素子においては、ゲート電極303、ソース電極305及びドレイン電極307の3つの領域を、接続領域とすることができる。また、
図8(C)に示した容量素子においては、上部電極309及び下部電極311を、接続領域とすることができる。
【0099】
素子又は信号線が、他の素子又は信号線と電気的に接続する位置を接続点と記す。接続点は、前述の接続領域内に設けることができる。素子又は信号線が有する接続点は、他の素子又は信号線が有する接続点とそれぞれ電気的に接続されうる位置を示している。また、接続点は、コンタクトホールの位置に相当する場合がある。
【0100】
図8(B)及び
図8(C)に示したトランジスタ素子及び容量素子を用いて、接続領域及び接続点を具体的に説明する。
図8(B)に示すトランジスタ素子において、ゲート電極303、ソース電極305及びドレイン電極307の領域を、それぞれ接続領域331_1乃至接続領域331_3とする。接続領域331_1乃至接続領域331_3を
図9(A)に示す。接続領域331_1乃至接続領域331_3には、それぞれ接続点を設けることができる。接続領域331_1乃至接続領域331_3に設けられる接続点の例を
図9(B)に示す。
図9(B)は、接続領域331_1に設けられる接続点CP_11、接続領域331_2に設けられる接続点CP_12、接続領域331_3に設けられる接続点CP_13を示している。なお、
図9(B)に示した接続点CP_11乃至接続点CP_13は一例であり、接続点の位置はこれに限られない。
【0101】
図8(C)に示す容量素子において、上部電極309及び下部電極311の領域を、それぞれ接続領域331_4及び接続領域331_5とする。接続領域331_4を
図9(C)、接続領域331_5を
図9(D)に示す。接続領域331_4及び接続領域331_5にはそれぞれ接続点CP_14及び接続点CP_15を設けることができる。接続領域331_4に対する接続点CP_14の例を
図9(E)、接続領域331_5に対する接続点CP_15の例を
図9(F)に示す。なお、
図9(E)及び
図9(F)に示した接続点CP_14及び接続点CP_15は一例であり、接続点の位置はこれに限られない。
【0102】
基本セルをグリッド枠601内に配置した例を
図10(A)に示す。
図10(A)では、基本セルELM_1乃至基本セルELM_3の3つの基本セルを示している。基本セルELM_1及び基本セルELM_2はそれぞれトランジスタ素子、基本セルELM_3は容量素子を示している。
【0103】
基本セルを元に、アブストラクトを作成する。1つの基本セルの全体を覆う最小の矩形をアブストラクトとし、アブストラクトの外周はグリッド603上にのみ作成される。
【0104】
図10(A)に示した基本セルELM_1乃至基本セルELM_3の3つの基本セルを用いて、アブストラクトを具体的に説明する。基本セルELM_1乃至基本セルELM_3と、基本セルELM_1乃至基本セルELM_3のそれぞれに対応するアブストラクトABS_1乃至アブストラクトABS_3の例を
図10(B)に示す。基本セルELM_1の全体を覆い、かつグリッド603上に外周を有する最小の矩形が、アブストラクトABS_1である。基本セルELM_2の全体を覆い、かつグリッド603上に外周を有する最小の矩形が、アブストラクトABS_2である。基本セルELM_3の全体を覆い、かつグリッド603上に外周を有する最小の矩形が、アブストラクトABS_3である。
図10(B)では基本セルとアブストラクトの位置関係を明示するために、アブストラクトABS_1乃至アブストラクトABS_3のハッチングを透過して図示している。
【0105】
図10(A)及び
図10(B)においては、3つの基本セルであるELM_1乃至基本セルELM_3を示したが、本発明の一態様はこれに限られない。回路図が有する基本セルの総数k個に対し、アブストラクトABS_1乃至アブストラクトABS_kのk個のアブストラクトが作成される。
【0106】
[ステップS24]
ステップS24は、処理部103で報酬rtを設定するステップである。
【0107】
グリッド枠601内に配置された全てのアブストラクトを覆う最小の矩形をブロックとし、ブロックの面積を算出する。ブロックの外周はグリッド603上にのみ作成される。
図10(B)に示したアブストラクトABS_1乃至アブストラクトABS_3と、それに対応するブロックBLKの例を
図11(A)に示す。
【0108】
ブロックBLKの面積に応じて報酬r
tを決定する。ブロックBLKの面積と、報酬r
tの関係を
図11(B)に示す。
図11(B)において、横軸はブロックBLKの面積を示し、縦軸は報酬r
tを示す。
図11(B)に示すように、ブロックBLKの面積が小さいほど報酬r
tが高く、ブロックBLKの面積が大きいほど報酬r
tを小さく設定する。ブロックBLKの面積が小さいほど報酬r
tが高くなる設定とすることで、ブロックBLKの面積が小さくなるようにニューラルネットワークを学習させ、面積の小さいレイアウト設計を行うことができる。また、報酬r
tの値は、有限の値とすることが好ましい。報酬r
tの値を有限の値とすることで、アルゴリズムが収束せずにレイアウト設計が終わらなくなるのを防げる。例えば、報酬r
tを-1以上1以下とすることができる。
図11(B)では、ブロックBLKの面積に対して報酬r
tが指数関数的に減少する例を示したが、本発明の一態様はこれに限られない。ブロックBLKの面積に対して報酬r
tが線形に減少してもよい。また、報酬r
tの設定として、ブロックBLKの面積が小さいほど報酬r
tが高くなる例を示したが、本発明の一態様はこれに限られない。
【0109】
[ステップS25]
ステップS25は、処理部103でアブストラクトをレイアウト枠内にランダムに配置するステップである。
【0110】
ステップS22で作成したk個の全てのアブストラクトABS_1乃至アブストラクトABS_kが、グリッド枠601内にランダムに配置される。ランダムに配置された状態を初期配置と呼ぶことができる。アブストラクトABS_1乃至アブストラクトABS_kの初期配置の例を
図12(A)に示す。
【0111】
[ステップS26]
ステップS26は、処理部103でアブストラクトのレイアウト状態stを観察するステップである。
【0112】
レイアウト状態s
tは、レイアウトの画像データLIMG
tとして記憶部105に記憶される。
図12(A)に示したアブストラクトABS_1乃至アブストラクトABS_kのレイアウト状態s
tに対応する、レイアウトの画像データLIMG
tの例を
図12(B)に示す。
図12(B)に示すように、画像データLIMG
tはアブストラクトのみを有し、グリッドは有さなくてもよい。レイアウトの画像データLIMG
tは、グレースケール、白黒又はカラーの画像とすることができる。
【0113】
本実施の形態では、レイアウトの画像データLIMG
tはグレースケールの画像を用いる。
図12(B)において、アブストラクトABS_1乃至アブストラクトABS_kにハッチングを付しているが、該ハッチング領域をグレースケールの領域とする。
【0114】
3つのアブストラクトABS_1乃至アブストラクトABS_3を有するレイアウトの例を
図13(A)に示す。
図13(A)の一点鎖線A-B間の断面図を
図13(B)に示す。
図13(A)及び
図13(B)に示す図は、アブストラクトABS_1乃至アブストラクトABS_3にそれぞれ対応する素子ELM_1乃至素子ELM_3が同一の層に形成される例を示している。素子ELM_1乃至素子ELM_3は同一の層に形成されることから、アブストラクトABS_1乃至アブストラクトABS_3が互いに重ならないレイアウトとすることが好ましい。
図13(A)に示したレイアウトに対応する画像データLIMG
tを、
図14に示す。
【0115】
複数の素子がそれぞれ異なる層に形成される例について説明する。3つのアブストラクトABS_1乃至アブストラクトABS_3を有するレイアウトの例を
図15(A)に示す。
図15(A)の一点鎖線C-D間の断面図を
図15(B)に示す。
図15(A)及び
図15(B)に示す図は、アブストラクトABS_1及びアブストラクトABS_2に対応する素子ELM_1及び素子ELM_2が同一の層に形成され、アブストラクトABS_3に対応する素子ELM_3は、素子ELM_1及び素子ELM_2と異なる層に形成される例を示している。素子ELM_1及び素子ELM_2と、素子ELM_3が異なる層に形成されることから、アブストラクトABS_1及びアブストラクトABS_2と、アブストラクトABS_3が重なる配置とすることができる。なお、
図15(B)において、素子ELM_1及び素子ELM_2のいずれか1以上と、素子ELM_3を電気的に接続する配線を有する領域320を示している。
【0116】
図15(A)に示したレイアウトに対応する画像データを、
図16(A)及び
図16(B)に示す。
図16(A)に示す画像データLIMG
t_1は、同一層に形成されるアブストラクトABS_1及びアブストラクトABS_2を有する。
図16(B)に示す画像データLIMG
t_2は、アブストラクトABS_1及びアブストラクトABS_2と異なる層に形成されるアブストラクトABS_3を有する。同じ層に形成されるアブストラクトを1つの画像データとし、形成される層が異なるアブストラクトは異なる画像データとすることができる。例えば、アブストラクトが形成される層がp個の場合は、画像データLIMG
t_1乃至画像データLIMG
t_pのp個の画像データとすることができる。
【0117】
[ステップS27]
ステップS27は、処理部103で行動価値関数Q(st,at)を推定するステップである。
【0118】
処理部103は第1のニューラルネットワーク520を有し、第1のニューラルネットワーク520により行動価値関数Q(st,at)を推定する。第1のニューラルネットワーク520では、ステップS26で作成したレイアウトの画像データLIMGtを入力データとして、行動価値関数Q(st,at)を出力データとする。第1のニューラルネットワーク520として、畳み込みニューラルネットワーク(CNN)の構成を用いることが好ましい。
【0119】
第1のニューラルネットワーク520の構成を
図17(A)に示す。
図17(A)はニューラルネットワークとして、畳み込みニューラルネットワーク(CNN)の構成を用いる例を示している。
図17(A)に示す第1のニューラルネットワーク520は、入力層521、中間層522及び出力層523で構成される。入力層521において、入力データであるレイアウトの画像データLIMG
t、出力データとして行動価値関数Q(s
t,a
1)乃至行動価値関数Q(s
t,a
m)を示している。レイアウト状態s
tにおいて、取りうる移動が移動a
1乃至移動a
mのm通り存在し、それぞれの移動に対応する行動価値関数をQ(s
t,a
1)乃至行動価値関数Q(s
t,a
m)と示している。行動価値関数をQ(s
t,a
1)乃至行動価値関数Q(s
t,a
m)のうち、最も高いQ値となる移動aを、次のアブストラクトの移動として選択できる。
【0120】
図17(A)では、中間層522が、畳み込み層524、プーリング層525、畳み込み層526、プーリング層527、畳み込み層528及び全結合層529で構成される。なお、中間層522の構成は一例であり、中間層522は1層以上であればよく、層の数や構成は特に限定されない。例えば、プーリング処理及び畳み込み演算処理をさらに多層で行う構成や、パディングやストライドといった演算処理を介して行う構成としてもよい。なお、
図17(A)にフィルタは図示していない。
【0121】
また、ステップS25で取得するレイアウトの画像データLIMGtをカラーの画像とする場合は、カラーの画像をグレースケールの画像に変換し、該グレースケールの画像を入力データとして用いてもよい。グレースケールへの変換には、NTSC加重平均法などを用いることができる。また、カラー(多チャンネル)の画像を入力データとして用いる場合は、第1のニューラルネットワーク520の畳み込み層において、各チャンネルに対応する複数の種類のフィルタを用いてもよい。また、複数の画像データLIMGtを入力データとする場合は、それぞれの画像データLIMGtに対し、異なるフィルタを用いてもよい。
【0122】
アブストラクトが取りうる移動a
tについて説明する。1つのアブストラクトABSにつき取りうる移動a
tは、X軸方向に+1移動する、X軸方向に-1移動する、Y軸方向に+1移動する、Y軸方向に-1移動する、その場で90°回転する、移動しない、の6種類とすることができる。アブストラクトABSがX軸方向に+1移動する例を
図18(A)に示す。アブストラクトABSがX軸方向に-1移動する例を
図18(B)に示す。アブストラクトABSがY軸方向に+1移動する例を
図18(C)に示す。アブストラクトABSがY軸方向に-1移動する例を
図19(A)に示す。アブストラクトABSがその場で90°回転する例を
図19(B)に示す。アブストラクトABSが移動しない例を
図19(C)に示す。X軸方向及びY軸方向の移動は、グリッド間隔を1単位としている。また、アブストラクトABSが有する4つの頂点のうち、X座標及びY座標が最小の頂点を基準点とする。
図18(A)乃至
図18(C)、
図19(A)及び
図19(C)において、基準点を黒丸印で示している。
【0123】
なお、本実施の形態では、
図19(B)に示すその場で90°回転する移動は、アブストラクトを左回り(反時計回り)に90°回転させ、回転前の基準点と、回転後の基準点を同じ座標とした。また、本実施の形態では、構成する直線がそれぞれ直交するグリッドを用いていることから、アブストラクトの回転は90°とした。なお、グリッドを構成する直線が直交しない場合においては、直線が成す角度をアブストラクトの回転角度とすることができる。例えば、グリッドを構成する直線が30°で交わるグリッドを用いる場合は、アブストラクトの取りうる行動として、アブストラクトの回転は30°及び150°の2通りを用いてもよい。
【0124】
k個のアブストラクトを有する場合の出力データの例を、表1に示す。それぞれのアブストラクトABS_1乃至アブストラクトABS_kに対し、X軸方向に+1移動する、X軸方向に-1移動する、Y軸方向に+1移動する、Y軸方向に-1移動する、その場で90°回転する、の5種類の取りうる移動と、さらにいずれのアブストラクトも移動しない、の1種類が、取りうる移動となる。表1に示すように、アブストラクトABS_1乃至アブストラクトABS_kに対し、取りうる移動は移動a1乃至移動a5k+1の(5k+1)通りとなり、出力データを行動価値関数Q(st,a1)乃至行動価値関数Q(st,a5k+1)の(5k+1)個とすることができる。これらの行動価値関数Q(st,a1)乃至行動価値関数Q(st,a5k+1)のうち、最も高いQ値となる移動aを、次のアブストラクトの移動として選択できる。
【0125】
例えば、アブストラクトABS_1乃至アブストラクトABS_3の3個のアブストラクトを有する場合、出力データは行動価値関数Q(st,a1)乃至行動価値関数Q(st,a16)の16個とすることができる。これらの行動価値関数Q(st,a1)乃至行動価値関数Q(st,a16)のうち、最も高いQ値となる移動aを、次のアブストラクトの移動として選択できる。
【0126】
【0127】
また、移動aの選択にε-greedy法を適用してもよい。ε-greedy法においては、(1-ε)の確率で最も高いQ値となる移動aを選択し、εの確率でランダムに移動aを選択する(εは0より大きく1以下)。例えば、0.95(95%)の確率で最も高いQ値となる移動aを選択し、0.05(5%)の確率でランダムに移動aを選択することができる。ε-greedy法を適用することにより、選択される行動aが偏るのを防ぎ、より最適な行動価値関数Qを学習できるようになる。なお、学習の初期ではεを大きく、学習が進むに従いεを小さくしてもよい。学習の初期でεを大きくすることにより、アブストラクトの初期配置の影響を低減でき、学習が進むに従いεを小さくすることにより、効率良く学習を進めることができる。
【0128】
[ステップS28]
ステップS28は、処理部103で接続点を接続できるか否かを判定するステップである。
【0129】
判定の対象は、ステップS27で選択した移動a
tを実行した場合のレイアウトである。移動した状態のアブストラクトABSのレイアウトにおいて、アブストラクトABSに対応する基本セルELMが有する接続点を、回路
図119の接続関係を満たすように接続できるか否かを判定する。
【0130】
ステップS28における接続点の接続方法について、2つの素子を有する回路の例を用いて説明する。1つのトランジスタ素子Tr51と、1つの容量素子C52とで構成される記憶回路の回路
図341を
図20(A)に示す。
図20(A)は素子の他に、ワード線WLと、ビット線BLと、接地電位線GNDを有する。なお、説明を簡単にするため、2つの素子を有する回路例を示したが、本発明の一態様はこれに限られない。ステップS27で選択した移動a
tを実行した場合のレイアウトの例を
図20(B)に示す。
図20(B)は、トランジスタ素子Tr51に対応するアブストラクトABS_51と、容量素子C52に対応するアブストラクトABS_52を示している。
【0131】
トランジスタ素子Tr51、トランジスタ素子Tr51に対応するアブストラクトABS_51、容量素子C52、容量素子C52に対応するアブストラクトABS_52を
図21(A)に示す。
図21(A)では位置関係を明示するために、アブストラクトABS_51及びアブストラクトABS_52のハッチングを透過して図示している。
【0132】
トランジスタ素子Tr51及び容量素子C52の接続点の例を
図21(B)に示す。トランジスタ素子Tr51は、ゲート電極の領域に接続点CP_2、ソース電極の領域に接続点CP_1、ドレイン電極の領域に接続点CP_4を有する。容量素子C52は、上部電極の領域に接続点CP_1、下部電極の領域にCP_3を有する。接続点は、接続領域内のグリッド上に設けられる。なお、
図21(B)では接続関係を分かりやすくするために、互いに電気的に接続される接続点には同じ符号を付している。同じ符号を付した接続点は、配線で結ばれることを示している。例えば、トランジスタ素子Tr51の接続点CP_1と、容量素子C52の接続点CP_1は、配線で結ばれることを示している。
【0133】
次に、信号線の接続点をグリッド上に配置する。信号線の接続点は、グリッド上の任意の位置に配置できる。
図21(B)に示した素子に対し、ワード線WL、接地電位線GND及びビット線BLのそれぞれの接続点の例を、
図22(A)に示す。
図22(A)は、ワード線WLの接続点CPL_2、接地電位線GNDの接続点CPL_3、ビット線BLの接続点CPL_4を示している。ワード線WLの接続点CPL_2は、トランジスタ素子Tr51の接続点CP_2と配線で結ばれる接続点である。接地電位線GNDの接続点CPL_3は、容量素子C52の接続点CP_3と配線で結ばれる接続点である。ビット線BLの接続点CPL_4は、トランジスタ素子Tr51の接続点CP_4と配線で結ばれる接続点である。接続点間を結ぶ配線は、グリッド上にのみ設けられる。
【0134】
図22(A)に示した接続点に対する配線を、
図22(B)に示す。
図22(B)では配線を実線で示し、回路
図341に基づく接続関係を全て満たす配線の例を配置できる例を示している。
【0135】
配線の経路を決定するアルゴリズムとして、線分探索法、迷路法、チャネル割当法などを用いることができる。本実施の形態では、線分探索法を用いることが好ましい。線分探索法とは、接続させるぞれぞれの2点からX軸方向及びY軸方向に順次線分を形成し、始点からの線分と終点からの線分が交わった時に、その点から逆方向に辿って経路を決定する方法である。
【0136】
回路図に基づく接続関係をすべて満たす配線を配置できる場合(Yes)は、ステップS29に進む。配線を配置できない場合(No)は、ステップS36に進む。
【0137】
[ステップS29]
ステップS29は、処理部103でデザインルールを満たしているか否かを判定するステップである。
【0138】
判定の対象は、ステップS28で作成した素子及び配線の配置を、素子及び配線のパターンに変換したレイアウトである。判定基準は、デザインルールである。
図22(B)に示した素子及び配線の配置を、素子及び配線のパターンに変換した図を、
図23に示す。
図23は、レイアウトデータの一例である。配線のパターンは、デザインルールに定められた、配線の幅の最大値及び最小値の範囲内とすることができる。また、接続点の一部は、コンタクトホールに変換される。コンタクトホールの大きさは、デザインルールに定められた、コンタクトホールの大きさの最大値及び最小値の範囲内とすることができる。
図23には、接続点の一部が、コンタクトホールCO_1乃至コンタクトホールCO_6に変換された図を示している。
【0139】
パターンのレイアウトが、デザインルールを満たす場合(Yes)は、ステップS30に進む。デザインルールを満たさない場合(No)は、ステップS36に進む。
【0140】
図23に示したレイアウトを、立体的に示した模式図を
図24(B)に示す。また、回路構成を立体的に示した模式図を
図24(A)に示す。本発明の一態様であるレイアウト設計システムを用いることで、回路設計で作成された回路図及びデザインルールを満たすとともに、集積回路の面積が小さいレイアウトデータを作成できる。
【0141】
[ステップS30]
ステップS30は、処理部103でアブストラクトを移動するステップである。該移動は、ステップS27で選択された移動atに従う。
【0142】
アブストラクトABS_1乃至アブストラクトABS_3の3つのアブストラクトを有するレイアウトで移動する例を、
図25に示す。
図25は、ステップS27で選択された移動a
tとして、アブストラクトABS_2がX軸方向に-1移動することが選択された例を示している。本実施の形態では、
図25に示すように1つのエピソードで移動するアブストラクトは1つとしたが、これに限られない。複数のアブストラクトが移動する構成としてもよい。
【0143】
[ステップS31]
ステップS31は、処理部103でアブストラクトのレイアウト状態st+1を観察するステップである。
【0144】
レイアウト状態st+1は、ステップS27の移動atによって、ステップS25でのレイアウト状態stが変化したものである。レイアウト状態st+1は、レイアウトの画像データLIMGt+1として記憶部105に記憶される。
【0145】
[ステップS32]
ステップS32は、処理部103で行動価値関数Q(st+1,at+1)を推定するステップである。
【0146】
一般的に、深層学習の学習時において、出力データと教師データの誤差が小さくなるようにニューラルネットワークの重み係数を更新していく。重み係数の更新は、出力データと教師データの誤差が一定になるまで繰り返される。強化学習の一種であるQ学習は、最適なQ関数の探索が学習の目的であるが、学習の最中は最適なQ関数は不明である。そこで、次の時刻t+1における行動価値関数Q(st+1,at+1)を推定し、rt+1+maxQ(st+1,at+1)を教師データとみなす。該教師データを損失関数に用いることで、第1のニューラルネットワーク520の学習を行う。
【0147】
処理部103は第2のニューラルネットワーク530を有し、第2のニューラルネットワーク530により行動価値関数Q(st+1,at+1)を推定する。第2のニューラルネットワーク530では、ステップS31で作成したレイアウトの画像データLIMGt+1を入力データとして、行動価値関数Q(st+1,at+1)を出力データとする。第2のニューラルネットワーク530として、畳み込みニューラルネットワーク(CNN)の構成を用いることが好ましい。
【0148】
第2のニューラルネットワーク530の構成を
図17(B)に示す。
図17(B)はニューラルネットワークとして、畳み込みニューラルネットワーク(CNN)の構成を用いる例を示している。
図17(B)に示す第2のニューラルネットワーク530は、入力層531、中間層532及び出力層533で構成される。入力層531において、入力データであるレイアウトの画像データLIMG
t+1、出力データとして行動価値関数Q(s
t+1,a
1)乃至行動価値関数Q(s
t+1,a
m)を示している。レイアウト状態s
tにおいて、取りうる移動が移動a
1乃至移動a
mのm通り存在し、それぞれの移動に対応する行動価値関数をQ(s
t,a
1)乃至行動価値関数Q(s
t+1,a
m)と示している。行動価値関数Q(s
t+1,a
1)乃至行動価値関数Q(s
t+1,a
m)のうち最も高いQ値と、報酬r
t+1の和を、第1のニューラルネットワークの推論に対する教師データとして用いることができる。
【0149】
図17(B)では、中間層532が、畳み込み層534、プーリング層535、畳み込み層536、プーリング層537、畳み込み層538及び全結合層539で構成される。なお、中間層532の構成は一例であり、プーリング処理及び畳み込み演算処理をさらに多層で行う構成や、パディングやストライドといった演算処理を介して行う構成としてもよい。なお、
図17(B)にフィルタは図示していない。
【0150】
なお、ステップS27及びステップS32で、1つのニューラルネットワークを用いてもよい。また、ステップS27及びステップS32で、それぞれ異なるニューラルネットワークを用いてもよい。
【0151】
[ステップS33]
ステップS33は、処理部103で報酬rt+1を受け取り、行動価値関数Q(st,at)を更新するステップである。
【0152】
報酬rt+1は、ステップS30でのアブストラクトの移動atに対する報酬である。移動atを行った後のブロックBLKの面積を算出し、ステップS24で設定した報酬設定に従い、ブロックBLKの面積に応じた報酬rt+1が決定される。なお、ステップS33において報酬を与えない、つまり報酬rt+1=0としてもよい。
【0153】
第1のニューラルネットワーク520による行動価値関数Q(st,at)の推論結果と、第2のニューラルネットワーク530により作成した教師データを用いて損失関数を計算する。確率的勾配降下法(SGD:Stochastic Gradient Descent)を用いて、該損失関数の値が小さくなるように、第1のニューラルネットワーク520の重み係数を更新する。確率的勾配降下法の他に、Adam(Adaptive Moment Estimation)、モメンタム(Momentum)、AdaGrad(Adaptive SubGradient Methods)、RMSPropなどを用いることができる。
【0154】
[ステップS34]
ステップS34は、処理部103で終了条件Aを満たしているか否かを判定するステップである。終了条件Aを満たす場合(Yes)は、ステップS35に進む。終了条件Aを満たさない場合(No)は、ステップS26のレイアウト状態の観察に進む。以降、ステップS26乃至ステップS33を繰り返すことで、第1のニューラルネットワーク520及び第2のニューラルネットワーク530の重み係数を更新し、第1のニューラルネットワーク520及び第2のニューラルネットワーク530を最適化していく。第1のニューラルネットワーク520及び第2のニューラルネットワーク530を最適化することで、短時間で、デザインルールを満たしつつ面積の小さいレイアウト設計を行うレイアウト設計システム100とすることができる。
【0155】
終了条件Aとして、
図5及び
図6に示すレイアウト設計フローの開始からの経過時間を用いることができる。終了条件Aを設定することで、アルゴリズムが収束せずにレイアウト設計が終わらなくなるのを防げる。
【0156】
[ステップS35]
ステップS35は、処理部103で終了条件Bを満たしているか否かを判定するステップである。終了条件Bを満たす場合(Yes)は、レイアウト設計は終了し、レイアウトデータを出力する。レイアウトデータとして、例えば
図23に示すレイアウトデータを出力できる。終了条件Bを満たさない場合(No)は、ステップS25のアブストラクトの配置に進み、アブストラクトの初期配置から学習を進める。以降、ステップS26乃至ステップS33を繰り返すことで、第1のニューラルネットワーク520及び第2のニューラルネットワーク530の重み係数を更新し、第1のニューラルネットワーク520及び第2のニューラルネットワーク530を最適化していく。第1のニューラルネットワーク520及び第2のニューラルネットワーク530を最適化することで、短時間で、デザインルールを満たしつつ面積の小さいレイアウト設計を行うレイアウト設計システム100とすることができる。
【0157】
終了条件Bとして、例えば、エピソード回数を用いることができる。
【0158】
[ステップS36]
ステップS28で接続点を接続できない場合、又はステップS29でデザインルールを満たさない場合は、ステップS36に進む。ステップS36において、処理部103で報酬rtを受け取り、行動価値関数Q(st,at)を更新する。ステップS36での報酬rtは、ステップS33での報酬rtより小さい値とする。報酬rtとして負の値を用いてもよい。例えば、報酬rtを-1とすることができる。
【0159】
以上により、レイアウト設計を行うことができる。
【0160】
また、それぞれ異なる回路図及びデザインルールを用いてレイアウト設計を行うことで、汎用性の高いレイアウト設計システムとすることができる。
【0161】
<3.レイアウト設計方法2>
前述の<2.レイアウト設計方法1>に示したレイアウト設計方法と異なるレイアウト設計方法について、説明する。<2.レイアウト設計方法1>と異なるのは、ステップS27における行動価値関数Q(st,at)の推定の方法である。他のステップは前述の記載を参照できる為、詳細な説明を省略する。
【0162】
[ステップS27]
ステップS27において、処理部103で行動価値関数Q(st,at)を推定する。処理部103は第1のニューラルネットワーク520を有し、第1のニューラルネットワーク520により行動価値関数Q(st,at)を推定する。第1のニューラルネットワーク520では、ステップS26で作成したレイアウトの画像データLIMGtを入力データとして、行動価値関数Q(st,at)を出力データとする。第1のニューラルネットワーク520として、畳み込みニューラルネットワーク(CNN)の構成を用いることが好ましい。
【0163】
第1のニューラルネットワーク520の構成については、前述の記載を参照できるため、詳細な説明を省略する。
【0164】
アブストラクトが取りうる移動atについて説明する。1エピソードにおいて、行動価値関数Q(st,at)を推定する対象を1つのアブストラクトABSとする。1つのアブストラクトが取りうる移動atは、X軸方向に+1移動する、X軸方向に-1移動する、Y軸方向に+1移動する、Y軸方向に-1移動する、その場で90°回転する、移動しない、の6種類とすることができる。
【0165】
k個のアブストラクトABS_1乃至アブストラクトABS_kの中で、移動の対象となる1つのアブストラクトをアブストラクトABS_iと記す。アブストラクトABS_iが前述の6種類の移動を取りうる場合の出力データの例を、表2に示す。1つのアブストラクトABS_iに対し、取りうる移動は移動a1乃至移動a6の6通りとなり、出力データを行動価値関数Q(st,a1)乃至行動価値関数Q(st,a6)の6個とすることができる。
【0166】
【0167】
1つのエピソードでは1つのアブストラクトABS_iを移動の対象とし、次のエピソードでは前エピソードと異なる1つのアブストラクトABS_(i+1)を移動の対象とする。1つのエピソードで移動する対象を1つのアブストラクトとすることで、ニューラルネットワークの出力データ数を固定することができ、汎用性の高いニューラルネットワークとすることができる。
【0168】
<4.レイアウト設計方法3>
前述の<2.レイアウト設計方法1>及び<3.レイアウト設計方法2>では、第1のニューラルネットワーク520及び第2のニューラルネットワーク530の重み係数を繰り返し更新し、ニューラルネットワークを学習させる方法を示した。これらの学習済みのニューラルネットワークを用いてレイアウト設計を行う方法について、説明する。レイアウト設計のフローを、
図7に示す。
【0169】
[ステップS101]
ステップS101は、回路図及びレイアウト設計情報を取得するステップである。
【0170】
ステップS101は、前述のステップS21の記載を参照できるため、詳細な説明を省略する。
【0171】
[ステップS102]
ステップS102は、処理部103でグリッドを作成するステップである。
【0172】
ステップS102は、前述のステップS22の記載を参照できるため、詳細な説明を省略する。
【0173】
[ステップS103]
ステップS103は、処理部103でグリッド枠内に基本セル及びアブストラクトを作成するステップである。
【0174】
ステップS103は、前述のステップS23の記載を参照できるため、詳細な説明を省略する。
【0175】
[ステップS104]
ステップS104は、処理部103でアブストラクトをレイアウト枠内にランダムに配置するステップである。
【0176】
ステップS104は、前述のステップS25の記載を参照できるため、詳細な説明を省略する。
【0177】
[ステップS105]
ステップS105は、処理部103でアブストラクトのレイアウト状態stを観察するステップである。
【0178】
ステップS105は、前述のステップS26の記載を参照できるため、詳細な説明を省略する。
【0179】
[ステップS106]
ステップS106は、処理部103で行動価値関数Q(st,at)を推定するステップである。
【0180】
ステップS106は、前述のステップS27の記載を参照できるため、詳細な説明を省略する。
【0181】
[ステップS107]
ステップS107は、処理部103で接続点を接続できるか否かを判定するステップである。
【0182】
ステップS107は、前述のステップS28の記載を参照できるため、詳細な説明を省略する。
【0183】
回路図に基づく接続関係をすべて満たす配線を配置できる場合(Yes)は、ステップS108に進む。配線を配置できない場合(No)は、ステップS104に進む。ステップS104でアブストラクトを初期配置とし、初期配置から再度レイアウト処理を進める。
【0184】
[ステップS108]
ステップS108は、処理部103でデザインルールを満たしているか否かを判定するステップである。
【0185】
ステップS108は、前述のステップS29の記載を参照できるため、詳細な説明を省略する。
【0186】
パターンのレイアウトが、デザインルールを満たす場合(Yes)は、ステップS109に進む。デザインルールを満たさない場合(No)は、ステップS104に進む。ステップS104でアブストラクトを初期配置とし、初期配置から再度レイアウト処理を進める。
【0187】
[ステップS109]
ステップS109は、処理部103でアブストラクトを移動するステップである。該移動は、ステップS106で選択された移動atに従う。
【0188】
ステップS109は、前述のステップS30の記載を参照できるため、詳細な説明を省略する。
【0189】
[ステップS110]
ステップS110は、処理部103で終了条件Cを満たしているか否かを判定するステップである。終了条件Cを満たす場合(Yes)は、レイアウト設計は終了する。終了条件Cを満たさない場合(No)は、ステップS105のレイアウト状態の観察に進む。
【0190】
終了条件Cとして、例えば、エピソード回数又はレイアウト処理開始からの経過時間を用いることができる。
【0191】
本発明の一態様である最適化されたニューラルネットワークを有するレイアウト設計システムを用いることで、短時間で、デザインルールを満たしつつ面積の小さいレイアウト設計を行うとすることができる。
【0192】
<5.レイアウト設計システムの例>
図1に示したレイアウト設計システム100と異なるレイアウト設計システムについて説明する。
【0193】
レイアウト設計システム150のブロック図を
図26に示す。レイアウト設計システム150は、サーバ151と、端末152(パーソナルコンピュータなど)とを有する。
【0194】
サーバ151は、通信部161a、伝送路162、処理部163a、及びデータベース167を有する。
図26では図示しないが、さらに、サーバ151は、記憶部、入出力部などを有していてもよい。
【0195】
端末152は、通信部161b、伝送路168、処理部163b、記憶部165、及び入出力部169を有する。
図26では図示しないが、端末152は、さらに、データベースなどを有していてもよい。
【0196】
レイアウト設計システム150の使用者は、端末152から、レイアウト設計に用いる回路図及びレイアウト設計情報を、サーバ151に入力する。当該データは、通信部161bから通信部161aに送信される。
【0197】
通信部161aが受信したデータは、伝送路162を介して、データベース167または記憶部(図示しない)に保存される。または、当該データは、通信部161aから、直接、処理部163aに供給されてもよい。
【0198】
前述したレイアウト設計は、処理部163aにて行われる。これらの処理は、高い処理能力が求められるため、サーバ151が有する処理部163aで行うことが好ましい。
【0199】
そして、処理部163aにより、レイアウトデータが生成される。レイアウトデータは、伝送路162を介して、データベース167または記憶部(図示しない)に保存される。または、当該データは、処理部163aから、直接、通信部161aに供給されてもよい。その後、サーバ151から、レイアウトデータが、端末152に出力される。当該データは、通信部161aから通信部161bに送信される。
【0200】
[入出力部169]
入出力部169には、レイアウト設計システム150の外部から情報が供給される。入出力部169は、レイアウト設計システム150の外部に情報を供給する機能を有する。なお、レイアウト設計システム100のように、入力部と出力部が分かれていてもよい。
【0201】
[伝送路162及び伝送路168]
伝送路162及び伝送路168は、情報を伝達する機能を有する。通信部161a、処理部163a、及びデータベース167の間の情報の送受信は、伝送路162を介して行うことができる。通信部161b、処理部163b、記憶部165、及び入出力部169の間の情報の送受信は、伝送路168を介して行うことができる。
【0202】
[処理部163a及び処理部163b]
処理部163aは、通信部161a及びデータベース167などから供給された情報を用いて、演算、推論などを行う機能を有する。処理部163bは、通信部161b、記憶部165、及び入出力部169などから供給された情報を用いて、演算などを行う機能を有する。処理部163a及び処理部163bは、処理部103の説明を参照できる。特に、処理部163aは、前述したレイアウト設計処理を行うことができる。そのため、処理部163aは、処理部163bに比べて処理能力が高いことが好ましい。
【0203】
[記憶部165]
記憶部165は、処理部163bが実行するプログラムを記憶する機能を有する。また、記憶部105は、処理部163bが生成した演算結果、通信部161bに入力された情報、及び入出力部169に入力された情報などを記憶する機能を有する。
【0204】
[データベース167]
データベース167は、レイアウト設計情報を記憶する機能を有する。また、データベース167は、処理部163aが生成した演算結果、及び通信部161aに入力された情報などを記憶する機能を有していてもよい。または、サーバ151は、データベース167とは別に記憶部を有し、当該記憶部が、処理部163aが生成した演算結果、及び通信部161aに入力された情報などを記憶する機能を有していてもよい。
【0205】
[通信部161a及び通信部161b]
通信部161a及び通信部161bを用いて、サーバ151と端末152との間で、情報の送受信を行うことができる。通信部161a及び通信部161bとしては、ハブ、ルータ、モデムなどを用いることができる。情報の送受信には、有線を用いても無線(例えば、電波、赤外線など)を用いてもよい。
【0206】
以上のように、本実施の形態のレイアウト設計システムでは、事前に準備されたレイアウト設計情報を元に、入力された回路図からレイアウトデータを作成できる。
【0207】
本実施の形態は、他の実施の形態と適宜組み合わせることができる。また、本明細書において、1つの実施の形態の中に、複数の構成例が示される場合は、構成例を適宜組み合わせることが可能である。
【0208】
(実施の形態2)
本実施の形態では、上記の実施の形態で説明したニューラルネットワークに用いることが可能な半導体装置の構成例について説明する。
【0209】
図27(A)に示すように、ニューラルネットワークNNは入力層IL、出力層OL、中間層(隠れ層)HLによって構成することができる。入力層IL、出力層OL、中間層HLはそれぞれ、1又は複数のニューロン(ユニット)を有する。なお、中間層HLは1層であってもよいし2層以上であってもよい。2層以上の中間層HLを有するニューラルネットワークはDNN(ディープニューラルネットワーク)と呼ぶこともでき、ディープニューラルネットワークを用いた学習は深層学習と呼ぶこともできる。
【0210】
入力層ILの各ニューロンには入力データが入力され、中間層HLの各ニューロンには前層又は後層のニューロンの出力信号が入力され、出力層OLの各ニューロンには前層のニューロンの出力信号が入力される。なお、各ニューロンは、前後の層の全てのニューロンと結合されていてもよいし(全結合)、一部のニューロンと結合されていてもよい。
【0211】
図27(B)に、ニューロンによる演算の例を示す。ここでは、ニューロンNと、ニューロンNに信号を出力する前層の2つのニューロンを示している。ニューロンNには、前層のニューロンの出力x
1と、前層のニューロンの出力x
2が入力される。そして、ニューロンNにおいて、出力x
1と重みw
1の乗算結果(x
1w
1)と出力x
2と重みw
2の乗算結果(x
2w
2)の総和x
1w
1+x
2w
2が計算された後、必要に応じてバイアスbが加算され、値a=x
1w
1+x
2w
2+bが得られる。そして、値aは活性化関数hによって変換され、ニューロンNから出力信号y=h(a)が出力される。
【0212】
このように、ニューロンによる演算には、前層のニューロンの出力と重みの積を足し合わせる演算、すなわち積和演算が含まれる(上記のx1w1+x2w2)。この積和演算は、プログラムを用いてソフトウェア上で行ってもよいし、ハードウェアによって行われてもよい。積和演算をハードウェアによって行う場合は、積和演算回路を用いることができる。この積和演算回路としては、デジタル回路を用いてもよいし、アナログ回路を用いてもよい。積和演算回路にアナログ回路を用いる場合、積和演算回路の回路規模の縮小、又は、メモリへのアクセス回数の減少による処理速度の向上及び消費電力の低減を図ることができる。
【0213】
積和演算回路は、チャネル形成領域にシリコン(単結晶シリコンなど)を含むトランジスタ(以下、Siトランジスタともいう)によって構成してもよいし、チャネル形成領域に酸化物半導体を含むトランジスタ(以下、OSトランジスタともいう)によって構成してもよい。特に、OSトランジスタはオフ電流が極めて小さいため、積和演算回路のアナログメモリを構成するトランジスタとして好適である。なお、SiトランジスタとOSトランジスタの両方を用いて積和演算回路を構成してもよい。以下、積和演算回路の機能を備えた半導体装置の構成例について説明する。
【0214】
<半導体装置の構成例>
図28に、ニューラルネットワークの演算を行う機能を有する半導体装置MACの構成例を示す。半導体装置MACは、ニューロン間の結合強度(重み)に対応する第1のデータと、入力データに対応する第2のデータの積和演算を行う機能を有する。なお、第1のデータ及び第2のデータはそれぞれ、アナログデータ又は多値のデータ(離散的なデータ)とすることができる。また、半導体装置MACは、積和演算によって得られたデータを活性化関数によって変換する機能を有する。
【0215】
半導体装置MACは、セルアレイCA、電流源回路CS、カレントミラー回路CM、回路WDD、回路WLD、回路CLD、オフセット回路OFST、及び活性化関数回路ACTVを有する。
【0216】
セルアレイCAは、複数のメモリセルMC及び複数のメモリセルMCrefを有する。
図28には、セルアレイCAがm行n列(m,nは1以上の整数)のメモリセルMC(MC[1,1]乃至[m,n])と、m個のメモリセルMCref(MCref[1]乃至[m])を有する構成例を示している。メモリセルMCは、第1のデータを格納する機能を有する。また、メモリセルMCrefは、積和演算に用いられる参照データを格納する機能を有する。なお、参照データはアナログデータ又は多値のデータとすることができる。
【0217】
メモリセルMC[i,j](iは1以上m以下の整数、jは1以上n以下の整数)は、配線WL[i]、配線RW[i]、配線WD[j]、及び配線BL[j]と接続されている。また、メモリセルMCref[i]は、配線WL[i]、配線RW[i]、配線WDref、配線BLrefと接続されている。ここで、メモリセルMC[i,j]と配線BL[j]間を流れる電流をIMC[i,j]と表記し、メモリセルMCref[i]と配線BLref間を流れる電流をIMCref[i]と表記する。
【0218】
メモリセルMC及びメモリセルMCrefの具体的な構成例を、
図29に示す。
図29には代表例としてメモリセルMC[1,1]、[2,1]及びメモリセルMCref[1]、[2]を示しているが、他のメモリセルMC及びメモリセルMCrefにも同様の構成を用いることができる。メモリセルMC及びメモリセルMCrefはそれぞれ、トランジスタTr11、Tr12、容量素子C11を有する。ここでは、トランジスタTr11及びトランジスタTr12がnチャネル型のトランジスタである場合について説明する。
【0219】
メモリセルMCにおいて、トランジスタTr11のゲートは配線WLと接続され、ソース又はドレインの一方はトランジスタTr12のゲート、及び容量素子C11の第1の電極と接続され、ソース又はドレインの他方は配線WDと接続されている。トランジスタTr12のソース又はドレインの一方は配線BLと接続され、ソース又はドレインの他方は配線VRと接続されている。容量素子C11の第2の電極は、配線RWと接続されている。配線VRは、所定の電位を供給する機能を有する配線である。ここでは一例として、配線VRから低電源電位(接地電位など)が供給される場合について説明する。
【0220】
トランジスタTr11のソース又はドレインの一方、トランジスタTr12のゲート、及び容量素子C11の第1の電極と接続されたノードを、ノードNMとする。また、メモリセルMC[1,1]、[2,1]のノードNMを、それぞれノードNM[1,1]、[2,1]と表記する。
【0221】
メモリセルMCrefも、メモリセルMCと同様の構成を有する。ただし、メモリセルMCrefは配線WDの代わりに配線WDrefと接続され、配線BLの代わりに配線BLrefと接続されている。また、メモリセルMCref[1]、[2]において、トランジスタTr11のソース又はドレインの一方、トランジスタTr12のゲート、及び容量素子C11の第1の電極と接続されたノードを、それぞれノードNMref[1]、[2]と表記する。
【0222】
ノードNMとノードNMrefはそれぞれ、メモリセルMCとメモリセルMCrefの保持ノードとして機能する。ノードNMには第1のデータが保持され、ノードNMrefには参照データが保持される。また、配線BL[1]からメモリセルMC[1,1]、[2,1]のトランジスタTr12には、それぞれ電流IMC[1,1]、IMC[2,1]が流れる。また、配線BLrefからメモリセルMCref[1]、[2]のトランジスタTr12には、それぞれ電流IMCref[1]、IMCref[2]が流れる。
【0223】
トランジスタTr11は、ノードNM又はノードNMrefの電位を保持する機能を有するため、トランジスタTr11のオフ電流は小さいことが好ましい。そのため、トランジスタTr11としてオフ電流が極めて小さいOSトランジスタを用いることが好ましい。これにより、ノードNM又はノードNMrefの電位の変動を抑えることができ、演算精度の向上を図ることができる。また、ノードNM又はノードNMrefの電位をリフレッシュする動作の頻度を低く抑えることが可能となり、消費電力を削減することができる。
【0224】
トランジスタTr12は特に限定されず、例えばSiトランジスタ又はOSトランジスタなどを用いることができる。トランジスタTr12にOSトランジスタを用いる場合、トランジスタTr11と同じ製造装置を用いて、トランジスタTr12を作製することが可能となり、製造コストを抑制することができる。なお、トランジスタTr12はnチャネル型であってもpチャネル型であってもよい。
【0225】
電流源回路CSは、配線BL[1]乃至[n]及び配線BLrefと接続されている。電流源回路CSは、配線BL[1]乃至[n]及び配線BLrefに電流を供給する機能を有する。なお、配線BL[1]乃至[n]に供給される電流値と配線BLrefに供給される電流値は異なっていてもよい。ここでは、電流源回路CSから配線BL[1]乃至[n]に供給される電流をIC、電流源回路CSから配線BLrefに供給される電流をICrefと表記する。
【0226】
カレントミラー回路CMは、配線IL[1]乃至[n]及び配線ILrefを有する。配線IL[1]乃至[n]はそれぞれ配線BL[1]乃至[n]と接続され、配線ILrefは、配線BLrefと接続されている。ここでは、配線IL[1]乃至[n]と配線BL[1]乃至[n]の接続箇所をノードNP[1]乃至[n]と表記する。また、配線ILrefと配線BLrefの接続箇所をノードNPrefと表記する。
【0227】
カレントミラー回路CMは、ノードNPrefの電位に応じた電流I
CMを配線ILrefに流す機能と、この電流I
CMを配線IL[1]乃至[n]にも流す機能を有する。
図28には、配線BLrefから配線ILrefに電流I
CMが排出され、配線BL[1]乃至[n]から配線IL[1]乃至[n]に電流I
CMが排出される例を示している。また、カレントミラー回路CMから配線BL[1]乃至[n]を介してセルアレイCAに流れる電流を、I
B[1]乃至[n]と表記する。また、カレントミラー回路CMから配線BLrefを介してセルアレイCAに流れる電流を、I
Brefと表記する。
【0228】
回路WDDは、配線WD[1]乃至[n]及び配線WDrefと接続されている。回路WDDは、メモリセルMCに格納される第1のデータに対応する電位を、配線WD[1]乃至[n]に供給する機能を有する。また、回路WDDは、メモリセルMCrefに格納される参照データに対応する電位を、配線WDrefに供給する機能を有する。回路WLDは、配線WL[1]乃至[m]と接続されている。回路WLDは、データの書き込みを行うメモリセルMC又はメモリセルMCrefを選択するための信号を、配線WL[1]乃至[m]に供給する機能を有する。回路CLDは、配線RW[1]乃至[m]と接続されている。回路CLDは、第2のデータに対応する電位を、配線RW[1]乃至[m]に供給する機能を有する。
【0229】
オフセット回路OFSTは、配線BL[1]乃至[n]及び配線OL[1]乃至[n]と接続されている。オフセット回路OFSTは、配線BL[1]乃至[n]からオフセット回路OFSTに流れる電流量、及び/又は、配線BL[1]乃至[n]からオフセット回路OFSTに流れる電流の変化量を検出する機能を有する。また、オフセット回路OFSTは、検出結果を配線OL[1]乃至[n]に出力する機能を有する。なお、オフセット回路OFSTは、検出結果に対応する電流を配線OLに出力してもよいし、検出結果に対応する電流を電圧に変換して配線OLに出力してもよい。セルアレイCAとオフセット回路OFSTの間を流れる電流を、Iα[1]乃至[n]と表記する。
【0230】
オフセット回路OFSTの構成例を
図30に示す。
図30に示すオフセット回路OFSTは、回路OC[1]乃至[n]を有する。また、回路OC[1]乃至[n]はそれぞれ、トランジスタTr21、トランジスタTr22、トランジスタTr23、容量素子C21、及び抵抗素子R1を有する。各素子の接続関係は
図30に示す通りである。なお、容量素子C21の第1の電極及び抵抗素子R1の第1の端子と接続されたノードを、ノードNaとする。また、容量素子C21の第2の電極、トランジスタTr21のソース又はドレインの一方、及びトランジスタTr22のゲートと接続されたノードを、ノードNbとする。
【0231】
配線VrefLは電位Vrefを供給する機能を有し、配線VaLは電位Vaを供給する機能を有し、配線VbLは電位Vbを供給する機能を有する。また、配線VDDLは電位VDDを供給する機能を有し、配線VSSLは電位VSSを供給する機能を有する。ここでは、電位VDDが高電源電位であり、電位VSSが低電源電位である場合について説明する。また、配線RSTは、トランジスタTr21の導通状態を制御するための電位を供給する機能を有する。トランジスタTr22、トランジスタTr23、配線VDDL、配線VSSL、及び配線VbLによって、ソースフォロワ回路が構成される。
【0232】
次に、回路OC[1]乃至[n]の動作例を説明する。なお、ここでは代表例として回路OC[1]の動作例を説明するが、回路OC[2]乃至[n]も同様に動作させることができる。まず、配線BL[1]に第1の電流が流れると、ノードNaの電位は、第1の電流と抵抗素子R1の抵抗値に応じた電位となる。また、このときトランジスタTr21はオン状態であり、ノードNbに電位Vaが供給される。その後、トランジスタTr21はオフ状態となる。
【0233】
次に、配線BL[1]に第2の電流が流れると、ノードNaの電位は、第2の電流と抵抗素子R1の抵抗値に応じた電位に変化する。このときトランジスタTr21はオフ状態であり、ノードNbはフローティング状態となっているため、ノードNaの電位の変化に伴い、ノードNbの電位は容量結合により変化する。ここで、ノードNaの電位の変化をΔVNaとし、容量結合係数を1とすると、ノードNbの電位はVa+ΔVNaとなる。そして、トランジスタTr22のしきい値電圧をVthとすると、配線OL[1]から電位Va+ΔVNa-Vthが出力される。ここで、Va=Vthとすることにより、配線OL[1]から電位ΔVNaを出力することができる。
【0234】
電位ΔVNaは、第1の電流から第2の電流への変化量、抵抗素子R1、及び電位Vrefに応じて定まる。ここで、抵抗素子R1と電位Vrefは既知であるため、電位ΔVNaから配線BLに流れる電流の変化量を求めることができる。
【0235】
上記のようにオフセット回路OFSTによって検出された電流量、及び/又は電流の変化量に対応する信号は、配線OL[1]乃至[n]を介して活性化関数回路ACTVに入力される。
【0236】
活性化関数回路ACTVは、配線OL[1]乃至[n]、及び、配線NIL[1]乃至[n]と接続されている。活性化関数回路ACTVは、オフセット回路OFSTから入力された信号を、あらかじめ定義された活性化関数に従って変換するための演算を行う機能を有する。活性化関数としては、例えば、シグモイド関数、tanh関数、softmax関数、ReLU関数、しきい値関数などを用いることができる。活性化関数回路ACTVによって変換された信号は、出力データとして配線NIL[1]乃至[n]に出力される。
【0237】
<半導体装置の動作例>
上記の半導体装置MACを用いて、第1のデータと第2のデータの積和演算を行うことができる。以下、積和演算を行う際の半導体装置MACの動作例を説明する。
【0238】
図31に半導体装置MACの動作例のタイミングチャートを示す。
図31には、
図29における配線WL[1]、配線WL[2]、配線WD[1]、配線WDref、ノードNM[1,1]、ノードNM[2,1]、ノードNMref[1]、ノードNMref[2]、配線RW[1]、及び配線RW[2]の電位の推移と、電流I
B[1]-I
α[1]、及び電流I
Brefの値の推移を示している。電流I
B[1]-I
α[1]は、配線BL[1]からメモリセルMC[1,1]、[2,1]に流れる電流の総和に相当する。
【0239】
なお、ここでは代表例として
図29に示すメモリセルMC[1,1]、[2,1]及びメモリセルMCref[1]、[2]に着目して動作を説明するが、他のメモリセルMC及びメモリセルMCrefも同様に動作させることができる。
【0240】
[第1のデータの格納]
まず、時刻T01-T02において、配線WL[1]の電位がハイ(High)レベルとなり、配線WD[1]の電位が接地電位(GND)よりもVPR-VW[1,1]大きい電位となり、配線WDrefの電位が接地電位よりもVPR大きい電位となる。また、配線RW[1]、及び配線RW[2]の電位が基準電位(REFP)となる。なお、電位VW[1,1]はメモリセルMC[1,1]に格納される第1のデータに対応する電位である。また、電位VPRは参照データに対応する電位である。これにより、メモリセルMC[1,1]及びメモリセルMCref[1]が有するトランジスタTr11がオン状態となり、ノードNM[1,1]の電位がVPR-VW[1,1]、ノードNMref[1]の電位がVPRとなる。
【0241】
このとき、配線BL[1]からメモリセルMC[1,1]のトランジスタTr12に流れる電流IMC[1,1],0は、次の式で表すことができる。ここで、kはトランジスタTr12のチャネル長、チャネル幅、移動度、及びゲート絶縁膜の容量などで決まる定数である。また、VthはトランジスタTr12のしきい値電圧である。
【0242】
【0243】
また、配線BLrefからメモリセルMCref[1]のトランジスタTr12に流れる電流IMCref[1],0は、次の式で表すことができる。
【0244】
【0245】
次に、時刻T02-T03において、配線WL[1]の電位がロー(Low)レベルとなる。これにより、メモリセルMC[1,1]及びメモリセルMCref[1]が有するトランジスタTr11がオフ状態となり、ノードNM[1,1]及びノードNMref[1]の電位が保持される。
【0246】
なお、前述の通り、トランジスタTr11としてOSトランジスタを用いることが好ましい。これにより、トランジスタTr11のリーク電流を抑えることができ、ノードNM[1,1]及びノードNMref[1]の電位を正確に保持することができる。
【0247】
次に、時刻T03-T04において、配線WL[2]の電位がハイレベルとなり、配線WD[1]の電位が接地電位よりもVPR-VW[2,1]大きい電位となり、配線WDrefの電位が接地電位よりもVPR大きい電位となる。なお、電位VW[2,1]はメモリセルMC[2,1]に格納される第1のデータに対応する電位である。これにより、メモリセルMC[2,1]及びメモリセルMCref[2]が有するトランジスタTr11がオン状態となり、ノードNM[2,1]の電位がVPR-VW[2,1]、ノードNMref[2]の電位がVPRとなる。
【0248】
このとき、配線BL[1]からメモリセルMC[2,1]のトランジスタTr12に流れる電流IMC[2,1],0は、次の式で表すことができる。
【0249】
【0250】
また、配線BLrefからメモリセルMCref[2]のトランジスタTr12に流れる電流IMCref[2],0は、次の式で表すことができる。
【0251】
【0252】
次に、時刻T04-T05において、配線WL[2]の電位がローレベルとなる。これにより、メモリセルMC[2,1]及びメモリセルMCref[2]が有するトランジスタTr11がオフ状態となり、ノードNM[2,1]及びノードNMref[2]の電位が保持される。
【0253】
以上の動作により、メモリセルMC[1,1]、[2,1]に第1のデータが格納され、メモリセルMCref[1]、[2]に参照データが格納される。
【0254】
ここで、時刻T04-T05において、配線BL[1]及び配線BLrefに流れる電流を考える。配線BLrefには、電流源回路CSから電流が供給される。また、配線BLrefを流れる電流は、カレントミラー回路CM、メモリセルMCref[1]、[2]へ排出される。電流源回路CSから配線BLrefに供給される電流をICref、配線BLrefからカレントミラー回路CMへ排出される電流をICM,0とすると、次の式が成り立つ。
【0255】
【0256】
配線BL[1]には、電流源回路CSからの電流が供給される。また、配線BL[1]を流れる電流は、カレントミラー回路CM、メモリセルMC[1,1]、[2,1]へ排出される。また、配線BL[1]からオフセット回路OFSTに電流が流れる。電流源回路CSから配線BL[1]に供給される電流をIC,0、配線BL[1]からオフセット回路OFSTに流れる電流をIα,0とすると、次の式が成り立つ。
【0257】
【0258】
[第1のデータと第2のデータの積和演算]
次に、時刻T05-T06において、配線RW[1]の電位が基準電位よりもVX[1]大きい電位となる。このとき、メモリセルMC[1,1]、及びメモリセルMCref[1]のそれぞれの容量素子C11には電位VX[1]が供給され、容量結合によりトランジスタTr12のゲートの電位が上昇する。なお、電位Vx[1]はメモリセルMC[1,1]及びメモリセルMCref[1]に供給される第2のデータに対応する電位である。
【0259】
トランジスタTr12のゲートの電位の変化量は、配線RWの電位の変化量に、メモリセルの構成によって決まる容量結合係数を乗じた値となる。容量結合係数は、容量素子C11の容量、トランジスタTr12のゲート容量、及び寄生容量などによって算出される。以下では便宜上、配線RWの電位の変化量とトランジスタTr12のゲートの電位の変化量が同じ、すなわち容量結合係数が1であるとして説明する。実際には、容量結合係数を考慮して電位Vxを決定すればよい。
【0260】
メモリセルMC[1,1]及びメモリセルMCref[1]の容量素子C11に電位VX[1]が供給されると、ノードNM[1,1]及びノードNMref[1]の電位がそれぞれVX[1]上昇する。
【0261】
ここで、時刻T05-T06において、配線BL[1]からメモリセルMC[1,1]のトランジスタTr12に流れる電流IMC[1,1],1は、次の式で表すことができる。
【0262】
【0263】
すなわち、配線RW[1]に電位VX[1]を供給することにより、配線BL[1]からメモリセルMC[1,1]のトランジスタTr12に流れる電流は、ΔIMC[1,1]=IMC[1,1],1-IMC[1,1],0増加する。
【0264】
また、時刻T05-T06において、配線BLrefからメモリセルMCref[1]のトランジスタTr12に流れる電流IMCref[1],1は、次の式で表すことができる。
【0265】
【0266】
すなわち、配線RW[1]に電位VX[1]を供給することにより、配線BLrefからメモリセルMCref[1]のトランジスタTr12に流れる電流は、ΔIMCref[1]=IMCref[1],1-IMCref[1],0増加する。
【0267】
また、配線BL[1]及び配線BLrefに流れる電流について考える。配線BLrefには、電流源回路CSから電流ICrefが供給される。また、配線BLrefを流れる電流は、カレントミラー回路CM、メモリセルMCref[1]、[2]へ排出される。配線BLrefからカレントミラー回路CMへ排出される電流をICM,1とすると、次の式が成り立つ。
【0268】
【0269】
配線BL[1]には、電流源回路CSから電流ICが供給される。また、配線BL[1]を流れる電流は、カレントミラー回路CM、メモリセルMC[1,1]、[2,1]へ排出される。さらに、配線BL[1]からオフセット回路OFSTにも電流が流れる。配線BL[1]からオフセット回路OFSTに流れる電流をIα,1とすると、次の式が成り立つ。
【0270】
【0271】
そして、式(E1)乃至式(E10)から、電流Iα,0と電流Iα,1の差(差分電流ΔIα)は次の式で表すことができる。
【0272】
【0273】
このように、差分電流ΔIαは、電位VW[1,1]とVX[1]の積に応じた値となる。
【0274】
その後、時刻T06-T07において、配線RW[1]の電位は接地電位となり、ノードNM[1,1]及びノードNMref[1]の電位は時刻T04-T05と同様になる。
【0275】
次に、時刻T07-T08において、配線RW[1]の電位が基準電位よりもVX[1]大きい電位となり、配線RW[2]の電位が基準電位よりもVX[2]大きい電位となる。これにより、メモリセルMC[1,1]、及びメモリセルMCref[1]のそれぞれの容量素子C11に電位VX[1]が供給され、容量結合によりノードNM[1,1]及びノードNMref[1]の電位がそれぞれVX[1]上昇する。また、メモリセルMC[2,1]、及びメモリセルMCref[2]のそれぞれの容量素子C11に電位VX[2]が供給され、容量結合によりノードNM[2,1]及びノードNMref[2]の電位がそれぞれVX[2]上昇する。
【0276】
ここで、時刻T07-T08において、配線BL[1]からメモリセルMC[2,1]のトランジスタTr12に流れる電流IMC[2,1],1は、次の式で表すことができる。
【0277】
【0278】
すなわち、配線RW[2]に電位VX[2]を供給することにより、配線BL[1]からメモリセルMC[2,1]のトランジスタTr12に流れる電流は、ΔIMC[2,1]=IMC[2,1],1-IMC[2,1],0増加する。
【0279】
また、時刻T05-T06において、配線BLrefからメモリセルMCref[2]のトランジスタTr12に流れる電流IMCref[2],1は、次の式で表すことができる。
【0280】
【0281】
すなわち、配線RW[2]に電位VX[2]を供給することにより、配線BLrefからメモリセルMCref[2]のトランジスタTr12に流れる電流は、ΔIMCref[2]=IMCref[2],1-IM
Cref[2],0増加する。
【0282】
また、配線BL[1]及び配線BLrefに流れる電流について考える。配線BLrefには、電流源回路CSから電流ICrefが供給される。また、配線BLrefを流れる電流は、カレントミラー回路CM、メモリセルMCref[1]、[2]へ排出される。配線BLrefからカレントミラー回路CMへ排出される電流をICM,2とすると、次の式が成り立つ。
【0283】
【0284】
配線BL[1]には、電流源回路CSから電流ICが供給される。また、配線BL[1]を流れる電流は、カレントミラー回路CM、メモリセルMC[1,1]、[2,1]へ排出される。さらに、配線BL[1]からオフセット回路OFSTにも電流が流れる。配線BL[1]からオフセット回路OFSTに流れる電流をIα,2とすると、次の式が成り立つ。
【0285】
【0286】
そして、式(E1)乃至式(E8)、及び、式(E12)乃至式(E15)から、電流Iα,0と電流Iα,2の差(差分電流ΔIα)は次の式で表すことができる。
【0287】
【0288】
このように、差分電流ΔIαは、電位VW[1,1]と電位VX[1]の積と、電位VW[2,1]と電位VX[2]の積と、を足し合わせた結果に応じた値となる。
【0289】
その後、時刻T08-T09において、配線RW[1]、[2]の電位は基準電位となり、ノードNM[1,1]、[2,1]及びノードNMref[1]、[2]の電位は時刻T04-T05と同様になる。
【0290】
式(E9)及び式(E16)に示されるように、オフセット回路OFSTに入力される差分電流ΔIαは、第1のデータ(重み)に対応する電位VXと、第2のデータ(入力データ)に対応する電位VWの積を足し合わせた結果に応じた値となる。すなわち、差分電流ΔIαをオフセット回路OFSTで計測することにより、第1のデータと第2のデータの積和演算の結果を得ることができる。
【0291】
なお、上記では特にメモリセルMC[1,1]、[2,1]及びメモリセルMCref[1]、[2]に着目したが、メモリセルMC及びメモリセルMCrefの数は任意に設定することができる。メモリセルMC及びメモリセルMCrefの行数mを任意の数とした場合の差分電流ΔIαは、次の式で表すことができる。
【0292】
【0293】
また、メモリセルMC及びメモリセルMCrefの列数nを増やすことにより、並列して実行される積和演算の数を増やすことができる。
【0294】
以上のように、半導体装置MACを用いることにより、第1のデータと第2のデータの積和演算を行うことができる。なお、メモリセルMC及びメモリセルMCrefとして
図29に示す構成を用いることにより、少ないトランジスタ数で積和演算回路を構成することができる。そのため、半導体装置MACの回路規模の縮小を図ることができる。
【0295】
半導体装置MACをニューラルネットワークにおける演算に用いる場合、メモリセルMCの行数mは一のニューロンに供給される入力データの数に対応させ、メモリセルMCの列数nはニューロンの数に対応させることができる。例えば、
図27(A)に示す中間層HLにおいて半導体装置MACを用いた積和演算を行う場合を考える。このとき、メモリセルMCの行数mは、入力層ILから供給される入力データの数(入力層ILのニューロンの数)に設定し、メモリセルMCの列数nは、中間層HLのニューロンの数に設定することができる。
【0296】
なお、半導体装置MACを適用するニューラルネットワークの構造は特に限定されない。例えば半導体装置MACは、畳み込みニューラルネットワーク(CNN)、再帰型ニューラルネットワーク(RNN)、オートエンコーダ、ボルツマンマシン(制限ボルツマンマシンを含む)などに用いることもできる。
【0297】
以上のように、半導体装置MACを用いることにより、ニューラルネットワークの積和演算を行うことができる。さらに、セルアレイCAに
図29に示すメモリセルMC及びメモリセルMCrefを用いることにより、演算精度の向上、消費電力の削減、又は回路規模の縮小を図ることが可能な集積回路を提供することができる。
本実施の形態は、他の実施の形態と適宜組み合わせることができる。
【実施例】
【0298】
本実施例では、<2.レイアウト設計方法1>に示した方法を用いて、レイアウト設計を行った。
【0299】
本実施例において、グリッドは、グリッド間隔を1、グリッド枠の大きさを20×20(グリッド面積を400)とした。アブストラクトは4つとし、それぞれのアブストラクトの大きさを3×3とした。
【0300】
ステップS27及びステップS32において、行動価値関数Q(st,at)の更新では割引率γを0.95とした。第1のニューラルネットワーク及び第2のニューラルネットワークの最適化には、Adamを用いた。また、移動aの選択にε-greedy法を適用した。1エピソードではεを1とし、その後はεを線形に小さくし、80000エピソードではεを0.1とした。80000エピソード以降ではεを0.1とした。
【0301】
ステップS33において、アブストラクトの移動に対する報酬は、1-(ブロック面積/400)とし、ブロック面積が大きくなるほど報酬が小さくなる設定とした。また、ステップS36において、接続点を接続でき、かつデザインルールを満たす場合は報酬を0とし、接続点を接続できない、又はデザインルールを満たさない場合は報酬を-1とした。接続点間の経路は、線分探索法を用いて決定した。
【0302】
図32に学習の結果を示す。
図32において、横軸はエピソード回数(Number of episodes)を示し、縦軸は報酬(Reward)を示す。報酬は、累積報酬の1000エピソード毎の平均値を示している。
【0303】
図32に示すように、エピソード回数が増えると累積報酬が増加した。また、約20000エピソードで累積報酬が飽和し、学習が収束した。つまり、デザインルールを満たしつつ、アブストラクト間を接続でき、かつブロックの面積が最小となるレイアウトを学習できることを確認できた。
【符号の説明】
【0304】
ABS:アブストラクト、ABS_1:アブストラクト、ABS_2:アブストラクト、ABS_3:アブストラクト、ABS_51:アブストラクト、ABS_52:アブストラクト、ABS_k:アブストラクト、BLK:ブロック、C11 容量素子、C21 容量素子、C52:容量素子、CP_1:接続点、CP_2:接続点、CP_3:接続点、CP_4:接続点、CP_11:接続点、CP_12:接続点、CP_13:接続点、CP_14:接続点、CP_15:接続点、CPL_2:接続点、CPL_3:接続点、CPL_4:接続点、ELM_1:基本セル、ELM_2:基本セル、ELM_3:基本セル、HL:中間層、IL:入力層、LIMGt:画像データ、LIMGt+1:画像データ、LIMGt_1:画像データ、LIMGt_2:画像データ、MC:メモリセル、MCref:メモリセル、NN:ニューラルネットワーク、OL:出力層、S11:ステップ、S12:ステップ、S13:ステップ、S14:ステップ、S15:ステップ、S21:ステップ、S22:ステップ、S23:ステップ、S24:ステップ、S25:ステップ、S26:ステップ、S27:ステップ、S28:ステップ、S29:ステップ、S30:ステップ、S31:ステップ、S32:ステップ、S33:ステップ、S34:ステップ、S35:ステップ、S36:ステップ、S101:ステップ、S102:ステップ、S103:ステップ、S104:ステップ、S105:ステップ、S106:ステップ、S107:ステップ、S108:ステップ、S109:ステップ、S110:ステップ、Tr11:トランジスタ、Tr12:トランジスタ、Tr21:トランジスタ、Tr22:トランジスタ、Tr23:トランジスタ、Tr51:トランジスタ素子、90:メモリセルアレイ、91:ワード線駆動回路、92:ビット線駆動回路、100:レイアウト設計システム、101:入力部、102:伝送路、103:処理部、105:記憶部、107:データベース、109:出力部、111 プロセス情報、113 トランジスタパラメータ、115 セルライブラリ、117 デザインルール、119 回路図、121 レイアウトデータ、123 グリッド情報、150:レイアウト設計システム、151:サーバ、152:端末、161a:通信部、161b:通信部、162:伝送路、163a:処理部、163b:処理部、165:記憶部、167:データベース、168:伝送路、169:入出力部、301:半導体層、303:ゲート電極、305:ソース電極、307:ドレイン電極、309:上部電極、311:下部電極、320:領域、331_1:接続領域、331_2:接続領域、331_3:接続領域、331_4:接続領域、331_5:接続領域、341:回路図、520:ニューラルネットワーク、521:入力層、522:中間層、523:出力層、524:畳み込み層、525:プーリング層、526:畳み込み層、527:プーリング層、528:畳み込み層、529:全結合層、530:ニューラルネットワーク、531:入力層、532:中間層、533:出力層、534:畳み込み層、535:プーリング層、536:畳み込み層、537:プーリング層、538:畳み込み層、539:全結合層、601:グリッド枠、603:グリッド