(57)【要約】【課題】  半導体装置にメモリを搭載する搭載条件に歩留りの指標が含まれる場合にも、０−１整数計画問題により、搭載条件を満たすメモリマクロの構成を得る。【解決手段】  複数のマクロタイプの各々の選択または非選択を示す変数が格納される変数領域を、複数のメモリと複数のマクロタイプとの組み合わせ毎に記憶部に割り当て、特性の指標に対応する第１の特性値を、複数のメモリと複数のマクロタイプとの組み合わせ毎に算出し、歩留りの指標と相関があり線形表現可能な線形指標に対応する第２の特性値を、複数のメモリと複数のマクロタイプとの組み合わせ毎に算出し、変数領域に格納される変数と第１の特性値と第２の特性値とを用いて、目的関数および制約条件を生成することで０−１整数計画問題を生成し、０−１整数計画問題の解を求め、求めた解に基づいて複数のメモリ毎にマクロタイプを選択する。【選択図】    図１
2016131053.tif 000002
【特許請求の範囲】
【請求項１】
半導体装置に搭載する複数のメモリを示す搭載メモリ情報と、前記複数のメモリを前記半導体装置に搭載する場合の搭載条件に含まれる前記複数のメモリの特性の指標および前記複数のメモリの歩留りの指標とを入力し、前記複数のメモリの各々に適用する複数種のメモリマクロを示す複数のマクロタイプのいずれかを前記複数のメモリ毎に選択するメモリ選択装置であって、
前記複数のマクロタイプの各々の選択または非選択を示す変数が格納される変数領域を、前記複数のメモリと前記複数のマクロタイプとの組み合わせ毎に記憶部に割り当てる変数生成部と、
前記特性の指標に対応する第１の特性値を、前記複数のメモリと前記複数のマクロタイプとの組み合わせ毎に算出する第１の算出部と、
前記歩留りの指標と相関があり線形表現可能な線形指標に対応する第２の特性値を、前記複数のメモリと前記複数のマクロタイプとの組み合わせ毎に算出する第２の算出部と、
前記変数領域に格納される前記変数と前記第１の特性値と前記第２の特性値とを用いて、目的関数および制約条件を生成することで０−１整数計画問題を生成する問題生成部と、
前記０−１整数計画問題の解を求め、求めた解に基づいて前記複数のメモリ毎にマクロタイプを選択する制御部と
を備えることを特徴とするメモリ選択装置。
【請求項２】
前記第２の算出部は、前記搭載条件に含まれる「歩留りの最大化」を目的とする前記歩留りの指標に基づいて、前記複数のメモリのそれぞれに存在する欠陥数を、前記第２の特性値として算出し、
前記問題生成部は、前記変数と前記第２の特性値との積の和を用いて欠陥数の最小化を目的とする目的関数を生成するとともに、前記変数と前記第１の特性値との積の和を用いて制約条件を生成すること
を特徴とする請求項１記載のメモリ選択装置。
【請求項３】
前記複数のメモリに存在する欠陥数に基づいて、前記複数のメモリの歩留りを算出する歩留り算出部を備え、
前記第２の算出部は、前記搭載条件に含まれる「歩留りが所定値以上」を制約とする前記歩留りの指標に基づいて、前記複数のメモリのそれぞれの欠陥数を前記第２の特性値として算出し、
前記問題生成部は、前記変数と前記第２の特性値との積の和を用いて欠陥数の最小化を目的とする目的関数を生成するとともに、前記変数と前記第１の特性値との積の和を用いて制約条件を生成することで第１の０−１整数計画問題を生成し、前記変数と前記第２の特性値との積の和を用いて欠陥数の最大化を目的とする目的関数を生成するとともに、前記変数と前記第１の特性値との積の和を用いて制約条件を生成することで第２の０−１整数計画問題を生成し、
前記制御部が実行する前記複数のメモリ毎にマクロタイプを選択する処理は、
前記第１の０−１整数計画問題の解と、前記第２の０−１整数計画問題の解とを求める第１の処理と、
求めた解に基づいて、前記複数のメモリの欠陥数の最小値と最大値とを前記第２の算出部に算出させる第２の処理と、
欠陥数の最小値と最大値との間の欠陥数に対応する歩留りを前記歩留り算出部に求めさせ、求めた歩留りと前記搭載条件に含まれる歩留りの前記所定値との比較に基づいて、歩留りが前記所定値に近づく側に新たな最小値と最大値とを設定する処理を、欠陥数の最大値と最小値の差が閾値より小さくなるまで繰り返す第３の処理と、
欠陥数の最大値と最小値の差が所定の閾値より小さくなった場合、最終の最小値と最大値との間の欠陥数に対応するマクロタイプを前記複数のメモリ毎に選択する第４の処理と
を含むことを特徴とする請求項１記載のメモリ選択装置。
【請求項４】
前記第３の処理は、
欠陥数の最小値と最大値との間の欠陥数を制約条件にし、前記搭載条件に含まれる目的を示す前記特性の指標を目的関数にすることで第３の０−１整数計画問題を前記問題生成部に生成させる処理と、
前記第３の０−１整数計画問題の解を求める処理と、
求めた解に基づいて前記複数のメモリの欠陥数を前記第２の算出部に求めさせる処理と、
求めた欠陥数に対応する歩留りを前記歩留り算出部に求めさせる処理と
を含むことを特徴とする請求項３記載のメモリ選択装置。
【請求項５】
前記問題生成部は、前記第１の０−１整数計画問題および前記第２の０−１整数計画問題を生成せず、
前記制御部は、
前記第１の処理と前記第２の処理の代わりに、歩留りが他のマクロタイプの歩留まりより大きいマクロタイプを前記複数のメモリのそれぞれに適用した場合の前記複数のメモリの面積を用いて、前記複数のメモリの欠陥数の最小値を求め、歩留りが他のマクロタイプの歩留まりより小さいマクロタイプを前記複数のメモリのそれぞれに適用した場合の前記複数のメモリの面積を用いて、前記複数のメモリの欠陥数の最大値を求め、
前記第３の処理において、前記第３の０−１整数計画問題の解が存在しない場合、欠陥数の最小値を最大値側に変更すること
を特徴とする請求項４記載のメモリ選択装置。
【請求項６】
前記複数のメモリに存在する欠陥数に基づいて、前記複数のメモリの歩留りを算出する歩留り算出部を備え、
前記第２の算出部は、前記搭載条件に含まれる「面積／歩留りの値の最小化」を目的とする前記歩留りの指標に基づいて、前記複数のメモリのそれぞれの欠陥数を前記第２の特性値として算出し、
前記問題生成部は、前記変数と前記第２の特性値との積の和を用いて欠陥数の最小化を目的とする目的関数を生成するとともに、前記変数と前記第１の特性値との積の和を用いて制約条件を生成することで第１の０−１整数計画問題を生成し、前記変数と前記第２の特性値との積の和を用いて欠陥数の最大化を目的とする目的関数を生成するとともに、前記変数と前記第１の特性値との積の和を用いて制約条件を生成することで第２の０−１整数計画問題を生成し、
前記制御部が実行する前記複数のメモリ毎にマクロタイプを選択する処理は、
前記第１の０−１整数計画問題の解と、前記第２の０−１整数計画問題の解とを求める第１の処理と、
求めた解に基づいて、前記複数のメモリの欠陥数の最小値と最大値とを前記第２の算出部に算出させる第２の処理と、
欠陥数の最小値と最大値との間を探索範囲にして、黄金分割探索法による第１の分割点での第１の欠陥数に対応する第１の面積／歩留りの値と、黄金分割探索法による第２の分割点での第２の欠陥数に対応する第２の面積／歩留りの値とを求め、前記第１の面積／歩留りの値と前記第２の面積／歩留りの値との比較に基づいて、探索範囲を狭める処理を、探索範囲が所定の範囲以下になるまで繰り返す第３の処理と、
探索範囲が前記所定の範囲以下になった場合、探索範囲の間の欠陥数を制約条件にし、前記搭載条件に含まれる目的を示す前記特性の指標を目的関数にすることで０−１整数計画問題を生成し、生成した０−１整数計画問題の解を求め、求めた解に基づいて前記複数のメモリ毎にマクロタイプを選択する第４の処理と
を含むことを特徴とする請求項１記載のメモリ選択装置。
【請求項７】
前記第３の処理は、
前記第１の分割点における第１の欠陥数と、前記第１の分割点より大きい前記第２の分割点における第２の欠陥数とを求める処理と、
前記第１の欠陥数を制約条件にし、前記搭載条件に含まれる目的を示す前記特性の指標を目的関数にすることで第３の０−１整数計画問題を前記問題生成部に生成させ、前記第２の欠陥数を制約条件にし、前記搭載条件に含まれる目的を示す前記特性の指標を目的関数にすることで第４の０−１整数計画問題を前記問題生成部に生成させる処理と、
前記第３の０−１整数計画問題の解である第１の解と前記第４の０−１整数計画問題の解である第２の解とを求める処理と、
前記第１の解に基づいて前記複数のメモリの欠陥数である第３の欠陥数を前記第２の算出部に求めさせ、前記第２の解に基づいて前記複数のメモリの欠陥数である第４の欠陥数を前記第２の算出部に求めさせる処理と、
前記第３の欠陥数に対応する歩留りと、前記第４の欠陥数に対応する歩留りとを前記歩留まり算出部に求めさせる処理と
を含むことを特徴とする請求項６記載のメモリ選択装置。
【請求項８】
前記問題生成部は、前記第１の０−１整数計画問題および前記第２の０−１整数計画問題を生成せず、
前記制御部は、
前記第１の処理と前記第２の処理の代わりに、歩留りが他のマクロタイプの歩留まりより大きいマクロタイプを前記複数のメモリのそれぞれに適用した場合の前記複数のメモリの面積を用いて、前記複数のメモリの欠陥数の最小値を求め、歩留りが他のマクロタイプの歩留まりより小さいマクロタイプを前記複数のメモリのそれぞれに適用した場合の前記複数のメモリの面積を用いて、前記複数のメモリの欠陥数の最大値を求め、
前記第１の欠陥数を制約条件とする前記第３の０−１整数計画問題の解が存在しない場合、前記第１の欠陥数に対応する前記第１の分割点を新たな最小値に設定すること
を特徴とする請求項７記載のメモリ選択装置。
【請求項９】
半導体装置に搭載する複数のメモリを示す搭載メモリ情報と、前記複数のメモリを前記半導体装置に搭載する場合の搭載条件に含まれる前記複数のメモリの特性の指標および前記複数のメモリの歩留りの指標とを入力し、前記複数のメモリの各々に適用する複数種のメモリマクロを示す複数のマクロタイプのいずれかを前記複数のメモリ毎に選択するメモリ選択方法であって、
前記複数のマクロタイプの各々の選択または非選択を示す変数が格納される変数領域を、前記複数のメモリと前記複数のマクロタイプとの組み合わせ毎に記憶部に割り当て、
前記特性の指標に対応する第１の特性値を、前記複数のメモリと前記複数のマクロタイプとの組み合わせ毎に算出し、
前記歩留りの指標と相関があり線形表現可能な線形指標に対応する第２の特性値を、前記複数のメモリと前記複数のマクロタイプとの組み合わせ毎に算出し、
前記変数領域に格納される前記変数と前記第１の特性値と前記第２の特性値とを用いて、目的関数および制約条件を生成することで０−１整数計画問題を生成し、
前記０−１整数計画問題の解を求め、求めた解に基づいて前記複数のメモリ毎にマクロタイプを選択すること
を特徴とするメモリ選択方法。
【請求項１０】
半導体装置に搭載する複数のメモリを示す搭載メモリ情報と、前記複数のメモリを前記半導体装置に搭載する場合の搭載条件に含まれる前記複数のメモリの特性の指標および前記複数のメモリの歩留りの指標とを入力し、前記複数のメモリの各々に適用する複数種のメモリマクロを示す複数のマクロタイプのいずれかを前記複数のメモリ毎に選択する処理をコンピュータに実行させるメモリ選択プログラムであって、
前記複数のマクロタイプの各々の選択または非選択を示す変数が格納される変数領域を、前記複数のメモリと前記複数のマクロタイプとの組み合わせ毎に記憶部に割り当て、
前記特性の指標に対応する第１の特性値を、前記複数のメモリと前記複数のマクロタイプとの組み合わせ毎に算出し、
前記歩留りの指標と相関があり線形表現可能な線形指標に対応する第２の特性値を、前記複数のメモリと前記複数のマクロタイプとの組み合わせ毎に算出し、
前記変数領域に格納される前記変数と前記第１の特性値と前記第２の特性値とを用いて、目的関数および制約条件を生成することで０−１整数計画問題を生成し、
前記０−１整数計画問題の解を求め、求めた解に基づいて前記複数のメモリ毎にマクロタイプを選択すること
を特徴とするメモリ選択プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、メモリ選択装置、メモリ選択方法およびメモリ選択プログラムに関する。
【背景技術】
【０００２】
半導体装置の製造工程で発生する異物は、不良の発生の原因になり、半導体装置の良品率である歩留りは、不良の発生により低下する。例えば、半導体メモリは、歩留りを向上するために不良のメモリセルを救済する冗長ライン（予備のメモリセル行または予備のメモリセル列）を有する。複数の冗長ラインを有する半導体メモリにおいて、使用する冗長ラインの数を０−１整数計画問題を解くことにより最小化する手法が提案されている（例えば、特許文献１参照）。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００９−６４５１５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
半導体装置に搭載する複数のメモリ毎に、消費電力または動作周波数等の電気的特性が互いに異なり、冗長ラインの数が互いに異なる複数のメモリマクロ（マクロタイプ）のいずれかを選択可能な場合がある。各メモリが内蔵する回路は、電気的特性および冗長ラインの数に応じて異なるため、各メモリの面積は、選択するメモリマクロの電気的特性および冗長ラインの数に応じて変化する。また、各メモリの歩留りは、各メモリの面積に応じて変化する。以下、各メモリの電気的特性および歩留りは、メモリ特性とも称される。
【０００５】
半導体装置に搭載するメモリは、各メモリのメモリ特性を選択する最適化問題（すなわち、メモリマクロを選択する最適化問題）を解くことにより選択される。半導体装置に搭載する複数のメモリ全体の消費電力および面積は、複数のメモリのそれぞれの消費電力の和および面積の和のそれぞれにより表せる。このため、半導体装置に搭載するメモリ全体の消費電力の指標または面積の指標が半導体装置を設計する際の搭載条件（目的または制約）に含まれる場合、最適化問題として０−１整数計画問題を生成し、最適解（メモリマクロの構成）を得ることが可能である。
【０００６】
一方、半導体装置に搭載する複数のメモリ全体の歩留りは、複数のメモリのそれぞれの歩留りの和では表せない。このため、半導体装置に搭載する複数のメモリ全体の歩留りの指標が搭載条件（目的または制約）に含まれる場合、最適化問題として０−１整数計画問題を生成することは困難である。すなわち、最適解（メモリマクロの構成）が得られる０−１整数計画問題を生成することは困難である。
【０００７】
１つの側面では、本件開示のメモリ選択装置、メモリ選択方法およびメモリ選択プログラムは、半導体装置にメモリを搭載する搭載条件に歩留りの指標が含まれる場合にも、０−１整数計画問題により、搭載条件を満たすメモリマクロの構成を得ることを目的とする。
【課題を解決するための手段】
【０００８】
一つの観点によれば、半導体装置に搭載する複数のメモリを示す搭載メモリ情報と、複数のメモリを半導体装置に搭載する場合の搭載条件に含まれる複数のメモリの特性の指標および複数のメモリの歩留りの指標とを入力し、複数のメモリの各々に適用する複数種のメモリマクロを示す複数のマクロタイプのいずれかを複数のメモリ毎に選択するメモリ選択装置は、複数のマクロタイプの各々の選択または非選択を示す変数が格納される変数領域を、複数のメモリと複数のマクロタイプとの組み合わせ毎に記憶部に割り当てる変数生成部と、特性の指標に対応する第１の特性値を、複数のメモリと複数のマクロタイプとの組み合わせ毎に算出する第１の算出部と、歩留りの指標と相関があり線形表現可能な線形指標に対応する第２の特性値を、複数のメモリと複数のマクロタイプとの組み合わせ毎に算出する第２の算出部と、変数領域に格納される変数と第１の特性値と第２の特性値とを用いて、目的関数および制約条件を生成することで０−１整数計画問題を生成する問題生成部と、０−１整数計画問題の解を求め、求めた解に基づいて複数のメモリ毎にマクロタイプを選択する制御部とを有する。
【０００９】
別の観点によれば、半導体装置に搭載する複数のメモリを示す搭載メモリ情報と、複数のメモリを半導体装置に搭載する場合の搭載条件に含まれる複数のメモリの特性の指標および複数のメモリの歩留りの指標とを入力し、複数のメモリの各々に適用する複数種のメモリマクロを示す複数のマクロタイプのいずれかを複数のメモリ毎に選択するメモリ選択方法は、複数のマクロタイプの各々の選択または非選択を示す変数が格納される変数領域を、複数のメモリと複数のマクロタイプとの組み合わせ毎に記憶部に割り当て、特性の指標に対応する第１の特性値を、複数のメモリと複数のマクロタイプとの組み合わせ毎に算出し、歩留りの指標と相関があり線形表現可能な線形指標に対応する第２の特性値を、複数のメモリと複数のマクロタイプとの組み合わせ毎に算出し、変数領域に格納される変数と第１の特性値と第２の特性値とを用いて、目的関数および制約条件を生成することで０−１整数計画問題を生成し、０−１整数計画問題の解を求め、求めた解に基づいて複数のメモリ毎にマクロタイプを選択する。
【００１０】
さらなる別の観点によれば、半導体装置に搭載する複数のメモリを示す搭載メモリ情報と、複数のメモリを半導体装置に搭載する場合の搭載条件に含まれる複数のメモリの特性の指標および複数のメモリの歩留りの指標とを入力し、複数のメモリの各々に適用する複数種のメモリマクロを示す複数のマクロタイプのいずれかを複数のメモリ毎に選択する処理をコンピュータに実行させるメモリ選択プログラムは、複数のマクロタイプの各々の選択または非選択を示す変数が格納される変数領域を、複数のメモリと複数のマクロタイプとの組み合わせ毎に記憶部に割り当て、特性の指標に対応する第１の特性値を、複数のメモリと複数のマクロタイプとの組み合わせ毎に算出し、歩留りの指標と相関があり線形表現可能な線形指標に対応する第２の特性値を、複数のメモリと複数のマクロタイプとの組み合わせ毎に算出し、変数領域に格納される変数と第１の特性値と第２の特性値とを用いて、目的関数および制約条件を生成することで０−１整数計画問題を生成し、０−１整数計画問題の解を求め、求めた解に基づいて複数のメモリ毎にマクロタイプを選択する。
【発明の効果】
【００１１】
本件開示の本件開示のメモリ選択装置、メモリ選択方法およびメモリ選択プログラムは、半導体装置にメモリを搭載する搭載条件に歩留りの指標が含まれる場合にも、０−１整数計画問題により、搭載条件を満たすメモリマクロの構成を得ることができる。
【図面の簡単な説明】
【００１２】
【図１】メモリ選択装置、メモリ選択方法およびメモリ選択プログラムの一実施形態を示す図である。
【図２】メモリ選択装置、メモリ選択方法およびメモリ選択プログラムの別の実施形態を示す図である。
【図３】図２に示すメモリ選択装置で選択されるメモリと、メモリが搭載されるチップの一例を示す図である。
【図４】図２に示すマクロタイプ表の一例を示す図である。
【図５】図３に示すチップの設計手順の一例を示す図である。
【図６】図５に示すステップＳ２００（マクロタイプの選択）の処理の一例を示す図である。
【図７】図６に示すステップＳ２１０において、「歩留り」を含む「目的」を、「歩留り」と相関があり線形表現可能な「平均欠陥数の最小化」に変更する一例を示す図である。
【図８】図６に示すステップＳ２１０、Ｓ２２０の処理の一例を示す図である。
【図９】図８に示すステップＳ２１１、Ｓ２１２、Ｓ２１３で生成される変数、面積、電力、速度および平均欠陥数の一例を示す図である。
【図１０】図８に示すステップＳ２２１で生成される目的関数と、ステップＳ２２２、Ｓ２２３で生成される制約条件との一例を示す図である。
【図１１】図２に示すメモリ選択装置が実行する処理の流れの一例を示す図である。
【図１２】図２に示すメモリ選択装置が実行する処理の流れの一例（図１１の続き）を示す図である。
【図１３】メモリ選択装置、メモリ選択方法およびメモリ選択プログラムの別の実施形態を示す図である。
【図１４】図５に示すステップＳ２００（マクロタイプの選択）の処理の一例を示す図である。
【図１５】図１３に示すメモリ選択装置において、「歩留り」を含む「制約」の代わりに、「歩留り」と相関があり線形表現可能な「平均欠陥数」を「目的」にする一例を示す図である。
【図１６】図１４に示すステップＳ２２０ｂで生成される目的関数および制約条件の一例を示す図である。
【図１７】図１４に示すステップＳ２４０ｂの処理中に生成される目的関数および制約条件の一例を示す図である。
【図１８】図１４に示すステップＳ２４０ｂの処理の一例を示す図である。
【図１９】図１８に示すステップＳ２４０ｂにおける探索処理の一例を示す図である。
【図２０】図１３に示すメモリ選択装置が実行する処理の流れの一例を示す図である。
【図２１】図１３に示すメモリ選択装置が実行する処理の一例（図２０の続き）を示す図である。
【図２２】メモリ選択装置、メモリ選択方法およびメモリ選択プログラムの別の実施形態における図５に示すステップＳ２００（マクロタイプの選択）の処理の一例を示す図である。
【図２３】図２２に示すステップＳ２４０ｃの処理の一例を示す図である。
【図２４】メモリ選択装置、メモリ選択方法およびメモリ選択プログラムの別の実施形態のおける図５に示すステップＳ２００（マクロタイプの選択）の処理の一例を示す図である。
【図２５】図２４に示すステップＳ２００の処理を実行するメモリ選択装置において、「歩留り」を含む「目的」の代わりに、「歩留り」と相関があり線形表現可能な「平均欠陥数」を「目的」にする一例を示す図である。
【図２６】図２４に示すステップＳ２４０ｄの処理の一例を示す図である。
【図２７】図２６に示すステップＳ２４０ｄにおける探索処理の一例を示す図である。
【図２８】図２７に示す面積／歩留りと平均欠陥数との関係の一例を示す図である。
【図２９】メモリ選択装置、メモリ選択方法およびメモリ選択プログラムの別の実施形態のおける図５に示すステップＳ２００（マクロタイプの選択）の処理の一例を示す図である。
【図３０】図２９に示すステップＳ２４０ｅの処理の一例を示す図である。
【図３１】歩留りと相関があり線形表現可能な指標の別の例を示す図である。
【図３２】歩留りと相関があり線形表現可能な指標の別の例を示す図である。
【図３３】歩留りと相関があり線形表現可能な指標の別の例を示す図である。
【図３４】図１から図３０で説明したメモリ選択装置を実現する情報処理装置の一例を示す図である。
【発明を実施するための形態】
【００１３】
以下、図面を用いて実施形態を説明する。
【００１４】
図１は、メモリ選択装置、メモリ選択方法およびメモリ選択プログラムの一実施形態を示す。図１に示すメモリ選択装置１００は、変数生成部１、第１の算出部２、第２の算出部３、問題生成部４および制御部５を有する。メモリ選択装置１００は、半導体装置に搭載する複数のメモリを示す搭載メモリ情報と、複数のメモリを半導体装置に搭載する場合の搭載条件である複数のメモリの特性の指標および複数のメモリの歩留り（良品率）の指標とを入力する。
【００１５】
そして、メモリ選択装置１００は、複数種のメモリマクロのそれぞれを示すマクロタイプのいずれかを複数のメモリ毎に選択する最適化問題を解くために動作する。メモリ選択装置１００により、複数種のメモリマクロのそれぞれを示すマクロタイプのいずれかを複数のメモリ毎に選択するメモリ選択方法が実現される。なお、メモリ選択装置１００は、ハードウェアにより実現されてもよく、ソフトウェアにより実現されてもよい。例えば、メモリ選択装置１００は、記憶装置に格納されたメモリ選択プログラムを情報処理装置等のコンピュータに実行させることにより実現されてもよい。なお、メモリ選択装置１００は、記録媒体に記録されたメモリ選択プログラムを情報処理装置の記憶装置に読み込むことで実現されてもよい。メモリ選択プログラムを実行する情報処理装置の一例は、図３４に示される。
【００１６】
特性の指標は、複数のメモリの面積、電力（消費電力）、および複数のメモリの各々の速度（動作周波数）等の少なくともいずれかの指標である。例えば、搭載条件は、歩留りを最大化する目的（歩留りの指標）と、面積を所定値以下にする制約（特性の指標）と、電力を所定値以下にする制約（特性の指標）とを含む。あるいは、搭載条件は、面積を最小化する目的（特性の指標）と、電力を所定値以下にする制約（特性の指標）と、歩留りを所定値以上にする制約（歩留りの指標）とを含む。すなわち、搭載条件に含まれる歩留りの指標は、最適化問題を解く条件である目的または制約のいずれかに含まれる。
【００１７】
半導体装置に搭載する複数のメモリの各々の歩留りは、後述する式（１）等を用いて求めることができるが、複数のメモリ全体の歩留りは、メモリの各々を歩留りを加算しても得られない。このため、目的または制約に歩留りの指標が含まれる場合、０−１整数計画問題を解くための線形表現による定式化は困難である。そこで、第２の算出部３は、歩留りの指標を含む目的または制約を、歩留りと相関があり線形表現可能な線形指標（例えば、後述する平均欠陥数）に変更して第２の特性値を算出することで、０−１整数計画問題の目的関数および制約条件を生成可能にする。なお、歩留りの指標から線形指標への変更の制御は、制御部５により実行されてもよく、第２の算出部３は、制御部５からの指示に基づいて、指標が変更された第２の特性値を算出してもよい。
【００１８】
変数生成部１は、マクロタイプの選択または非選択を示す情報が設定される変数が格納される変数領域を、複数のメモリと複数のマクロタイプとの組み合わせ毎に記憶部１ａに割り当てる。なお、記憶部１ａは、変数生成部１の内部に設けられてもよく、メモリ選択装置１００の外部に設けられてもよい。例えば、複数のメモリとマクロタイプとの組み合わせを示す情報は、マクロタイプ表６を参照することで得られる。例えば、マクロタイプ表６には、半導体装置に搭載可能な複数種のメモリ毎に、使用可能な複数種のマクロタイプを示す情報が格納される。マクロタイプ表６の例は、図４に示され、変数の例は、図９に変数ｘｉｊとして示される。
【００１９】
第１の算出部２は、特性の指標に対応する第１の特性値を、複数のメモリとマクロタイプとの組み合わせ毎に算出し、算出した第１の特性値を問題生成部４に渡す。なお、第１の算出部２は、算出した第１の特性値を記憶部１ａに格納してもよい。第１の特性値は、複数のマクロタイプの各々に対応するメモリの面積、電力または速度等である。第１の特性値の例は、図９に面積Ａｉｊ、電力Ｐｉｊまたは速度Ｓｉｊとして示される。
【００２０】
第２の算出部３は、歩留りの指標と相関があり線形表現可能な線形指標に対応する第２の特性値を、複数のメモリとマクロタイプとの組み合わせ毎に算出し、算出した第２の特性値を問題生成部４に渡す。なお、第２の算出部３は、算出した第２の特性値を記憶部１ａに格納してもよい。例えば、第２の特性値は、複数のマクロタイプの各々に対応するメモリの欠陥数（マクロタイプにより示されるメモリマクロを使用したメモリに確率的に存在する欠陥数（平均欠陥数））である。第２の特性値の例は、図９に平均欠陥数λｉｊとして示される。
【００２１】
問題生成部４は、記憶部１ａに割り当てられた変数領域を参照し、変数の情報と、第１の算出部２が算出した第１の特性値と、第２の算出部３が算出した第２の特性値とを用いて、目的関数および制約条件を生成することで０−１整数計画問題を生成する。なお、問題生成部４は、変数の情報を変数生成部１から受けてもよい。第２の特性値は、線形表現可能な線形指標に対応するため、問題生成部４は、搭載条件である目的または制約に歩留りの指標が含まれる場合にも、０−１整数計画問題を生成することができる。問題生成部４は、生成した０−１整数計画問題を制御部５に渡す。目的関数および制約条件の例は、図１０に示される。
【００２２】
制御部５は、問題生成部４が生成した０−１整数計画問題を求解部７に渡し、０−１整数計画問題の解を求解部７に求めさせる。制御部５は、求解部７が求めた解に基づいて複数のメモリ毎にマクロタイプを選択する選択処理を実行する。例えば、制御部５は、解に含まれる変数（図９のｘｉｊ）のうち、マクロタイプの選択を示す変数に対応するマクロタイプを選択する。これにより、搭載条件である目的または制約に歩留りの指標が含まれる場合にも、０−１整数計画問題を解くことにより、半導体装置に搭載する複数のメモリに使用するマクロタイプを決定することができる。例えば、求解部７が求めた解に含まれる変数は、記憶部１ａの変数領域に格納され、制御部５は、変数領域に格納された変数を読み出すことで、解を得る。
【００２３】
なお、メモリ選択装置１００は、マクロタイプ表６に格納される情報を、メモリ選択装置１００内に設けられる記憶部（例えば、１ａ）に記憶してもよい。この場合、変数生成部１、第１の算出部２および第２の算出部３は、複数のメモリとマクロタイプとの対応情報を、記憶部から読み出してもよい。また、メモリ選択装置１００は、求解部７を内蔵してもよい。
【００２４】
以上、図１に示した実施形態では、半導体装置にメモリを搭載する搭載条件に歩留りの指標が含まれる場合にも、０−１整数計画問題により、搭載条件を満たすメモリマクロの構成を得ることができる。
【００２５】
図２は、メモリ選択装置、メモリ選択方法およびメモリ選択プログラムの別の実施形態を示す。この実施形態のメモリ選択装置１００Ａは、制御部１０、定式化部２０、求解部３０、パラメータ算出部４０、指標算出部５０および記憶部６０を有する。メモリ選択装置１００Ａは、サーバ等の情報処理装置が実行するメモリ選択プログラムにより実現され、あるいは、専用のハードウェアにより実現される。そして、メモリ選択装置１００Ａは、図６以降で説明するメモリ選択方法を実行する。
【００２６】
記憶部６０には、制御部１０、定式化部２０、求解部３０、パラメータ算出部４０および指標算出部５０が生成する変数、式、データ等の情報が格納される領域が割り当てられる。記憶部６０に格納された情報は、制御部１０、定式化部２０、求解部３０、パラメータ算出部４０および指標算出部５０により参照可能である。記憶部６０には、メモリ選択装置１００Ａの機能を実現するためのメモリ選択プログラムが格納されてもよい。なお、記憶部６０は、制御部１０、定式化部２０、求解部３０、パラメータ算出部４０および指標算出部５０の少なくともいずれかに設けられてもよく、メモリ選択装置１００Ａの外部に設けられてもよい。
【００２７】
制御部１０は、メモリ選択装置１００Ａの全体の動作を管理し、０−１整数計画問題の生成と、生成した０−１整数計画問題の解を求める処理とを制御する。そして、制御部１０は、マクロタイプ表ＭＴＢＬ（例えば、ファイル形式）に含まれる複数のマクロタイプの中から、チップに搭載する複数のメモリの各々に使用するマクロタイプを選択する。マクロタイプ表ＭＴＢＬの例は、図４に示される。なお、マクロタイプ表ＭＴＢＬは、記憶部６０内に格納されてもよい。
【００２８】
例えば、制御部１０は、チップに搭載する各メモリの容量と、各メモリのマクロタイプを決定するための搭載条件である「目的」および「制約」とを外部から受ける。チップに搭載する各メモリの容量は、チップに搭載する複数のメモリを示す搭載メモリ情報の一例である。なお、制御部１０は、メモリの容量の代わりに、図４に示すマクロタイプ表ＭＴＢＬに格納された符号Ｍ１、Ｍ２等のメモリ番号を入力してもよい。「目的」または「制約」の少なくともいずれかは、搭載メモリの特性の指標を含み、「目的」または「制約」のいずれかは、チップの良品率である歩留りの指標を含む。「目的」または「制約」に含まれる特性の指標の例および歩留りの指標の例は、図７に示される。
【００２９】
特性の指標を含む「目的」は、「面積を最大にする」または「電力を最小にする」などであり、特性の指標を含む「制約」は、「面積を所定値以下にする」または「電力を所定値以下にする」などである。歩留りの指標を含む「目的」は、「歩留りを最大にする」または「チップに搭載するメモリの面積／歩留りを最小にする」などであり、歩留りの指標を含む「制約」は、「歩留りを９５％以上にする」などである。すなわち、歩留りの指標は、複数のメモリをチップに搭載する場合の搭載条件の１つである。
【００３０】
歩留りは、チップ面積をＡ平方センチメートル、欠陥密度をＤ個／平方センチメートルとすると、例えば、式（１）により求められる。
歩留り［％］＝｛ｅｘｐ（-Ａ×Ｄ）｝×１００  …（１）
式（１）に示すように、チップに搭載されるメモリ全体の歩留りは、チップに搭載されるメモリ全体の面積から求められ、各メモリの歩留りは、各メモリの面積から求められる。しかし、チップに搭載されるメモリ全体の歩留りは、チップに搭載される各メモリの歩留りを加算しても得られない。このため、図１で説明したように、「目的」または「制約」が歩留りを含む場合、０−１整数計画問題を解くための線形表現による定式化は困難である。そこで、図１と同様に、指標算出部５０は、「歩留り」を含む「目的」または「制約」を、「歩留り」と相関があり線形表現可能な指標に変更し、変更した指標に対応する特性値を算出する。これにより、０−１整数計画問題を解くための定式化を可能にする。なお、制御部１０が「歩留り」を含む「目的」または「制約」を、「歩留り」と相関があり線形表現可能な指標に変更し、変更した指標を指標算出部５０に指示してもよい。
【００３１】
チップ内の欠陥数が少ない場合、歩留りは高くなり、チップ内の欠陥数が多い場合、歩留りは低くなるため、欠陥数は、歩留りと相関がある。欠陥数は、メモリの面積と欠陥密度とに基づいて、平均欠陥数として求めることができ、線形表現が可能である。このため、「歩留り」を含む「目的」または「制約」は、例えば、「平均欠陥数」に変更される。すなわち、メモリ選択装置１００Ａに入力される「歩留り」は、指標算出部５０または制御部１０により、線形表現が可能な指標に置き換えられる。
【００３２】
次に、制御部１０は、チップに搭載する各メモリの容量と、目的および制約とを、定式化部２０に出力する。以下では、チップに搭載されるメモリは、搭載メモリとも称される。定式化部２０は、制御部１０から受ける各メモリの容量に基づいてマクロタイプ表ＭＴＢＬを参照し、搭載メモリとマクロタイプとの組み合わせ毎にマクロタイプの選択または非選択を示す変数（図９に示すｘｉｊ）を生成（定義）する。例えば、定式化部２０は、変数が格納される変数領域を記憶部６０に割り当てる。定式化部２０は、マクロタイプの選択または非選択を示す情報が設定される変数が格納される変数領域を、複数のメモリと複数のマクロタイプとの組み合わせ毎に記憶部６０に割り当てる変数生成部の一例である。
【００３３】
また、定式化部２０は、制御部１０からの指示に基づいて、マクロタイプ表ＭＴＢＬを参照し、各搭載メモリに使用可能な全てのマクロタイプの面積、速度、電力等の特性値をパラメータ算出部４０に算出させる。面積、速度、電力等の特性値は、第１の特性値の一例である。パラメータ算出部４０は、予め求められた計算式に基づいて、面積、速度、電力等の特性値を算出し、あるいは、メモリコンパイラ等のオプション機能（簡易計算機能）を利用して、面積、速度、電力等の特性値を算出する。パラメータ算出部４０は、特性の指標に対応する第１の特性値を、複数のメモリとマクロタイプとの組み合わせ毎に算出する第１の算出部の一例である。
【００３４】
また、定式化部２０は、制御部１０からの指示に基づいて、マクロタイプ表ＭＴＢＬを参照し、各搭載メモリに使用可能な全てのマクロタイプの特性値（例えば、平均欠陥数）を指標算出部５０に算出させる。指標算出部５０は、歩留りの指標と相関があり線形表現可能な線形指標（例えば、平均欠陥数）に対応する第２の特性値を、搭載メモリとマクロタイプとの組み合わせ毎に算出する第２の算出部の一例である。指標算出部５０は、予め求められた計算式に基づいて、特性値を算出し、あるいは、メモリコンパイラ等のオプション機能（簡易機能）を利用して、特性値を算出する。なお、パラメータ算出部４０による特性値の算出と、指標算出部５０による特性値の算出とは、制御部１０からの指示に基づいて実行されてもよい。
【００３５】
定式化部２０は、パラメータ算出部４０と指標算出部５０との算出結果に基づいて、目的関数および制約条件を生成することで、０−１整数計画問題を生成する。定式化部２０は、０−１整数計画問題を生成する問題生成部の一例である。目的関数および制約条件の一例は、図１０に示される。
【００３６】
制御部１０は、定式化部２０が生成した目的関数および制約条件を求解部３０に渡し、求解部３０に０−１整数計画問題を解かせる。例えば、求解部３０は、０−１整数計画問題を解くソルバ（プログラム）である。求解部３０は、０−１整数計画問題を解くことで、目的関数および制約条件を満足するマクロタイプの最適な組み合わせを決定し、決定した組み合わせを示す変数の値を記憶部６０に割り当てられた変数領域に格納する。そして、制御部１０は、記憶部６０に格納された変数に基づいて、搭載メモリに使用するマクロタイプを選択し、選択したマクロタイプを示す情報をメモリ選択装置１００Ａの外部に出力する。すなわち、制御部１０は、求解部３０が求めた解に基づいて搭載メモリ毎にマクロタイプを選択する選択処理を行う。この後、決定したマクロタイプに基づいて、メモリコンパイラ等により、各搭載メモリのハードマクロが生成される。なお、求解部３０は、メモリ選択装置１００Ａの外部に設けられてもよい。
【００３７】
例えば、メモリを搭載するチップには、ＣＰＵ（Central Processing Unit）、周辺回路（ＤＭＡＣ（Direct Memory Access Controller）およびタイマ等）、入出力回路等の機能ブロックが搭載される。すなわち、メモリを搭載するチップは、ＳｏＣ（System on a Chip）である。メモリと機能ブロックとがチップに搭載される場合、メモリ選択装置１００Ａは、メモリが搭載されるメモリ領域の歩留り、面積、および電力等を求める。機能ブロックが搭載される機能領域の歩留り、面積および電力等は、メモリ領域とは別に求められる。そして、メモリ領域に許容される歩留り、面積および電力等の目的および制約は、機能ブロックが搭載される機能領域の歩留り、面積および電力等を考慮して、チップ仕様を満足する値に設定される。メモリと機能ブロックとを有するチップの設計手順は、図５に示される。
【００３８】
図３は、図２に示すメモリ選択装置１００Ａで選択されるメモリと、メモリが搭載されるチップＣＰの一例を示す。図３に示す例では、１７個のメモリＭ１−Ｍ１７と、ＣＰＵと、５個の周辺回路ＰＥＲ１−ＰＥＲ５と、２個の入出力回路ＩＯ１−ＩＯ２とが、チップＣＰに搭載される。チップＣＰは、半導体装置の一例である。
【００３９】
メモリ選択装置１００Ａは、０−１整数計画問題を解くことにより、各メモリＭ１−Ｍ１７で使用するマクロタイプを決定する。この後、メモリ選択装置１００Ａが決定したマクロタイプにしたがって、各メモリＭ１−Ｍ１７に対応するメモリマクロ（ハードマクロ）がメモリコンパイラ等により生成される。そして、生成されたメモリマクロと、機能ブロックのマクロとを用いてチップＣＰのレイアウト設計が実行される。
【００４０】
図４は、図２に示すマクロタイプ表ＭＴＢＬの一例を示す。マクロタイプ表ＭＴＢＬには、容量が異なるメモリ（Ｍ１、Ｍ２等）毎に、選択可能なｎ個のマクロタイプを示す情報が格納されている。例えば、メモリＭ１は、１６キロビット（ワード数ｗ＝１０２４、ビット数ｂ＝１６）の容量を有し、メモリＭ２は、８キロビット（ワード数ｗ＝５１２、ビット数ｂ＝１６）の容量を有する。なお、ワード数ｗとビット数ｂの組み合わせが互いに異なり、容量が互いに同じメモリ（メモリＭ２と、ワード数ｗ＝１０２４、ビット数ｂ＝８のメモリ）は、異なるメモリとしてマクロタイプ表ＭＴＢＬに格納される。
【００４１】
図４に示す例では、各メモリのマクロタイプとして、高速タイプ、低電力タイプおよび省面積（標準）タイプが、メモリセル等の不良を救済する冗長セルブロックの搭載数のタイプ毎に用意されている。冗長セルブロックは、冗長回路ブロックの一例である。高速タイプは、駆動回路等の追加により、標準タイプに比べて動作周波数は高いが、電力は増加し、面積は増加する。低電力タイプは、内部電源生成回路等の追加により内部電源電圧を下げることで、標準タイプに比べて電力は少ないが、動作周波数は低くなり、面積は増加する。なお、低電力タイプは、標準タイプより閾値電圧が高いトランジスタが使用されてもよい。省面積（標準）タイプは、駆動回路および内部電源生成回路等を搭載しないことで、動作周波数は高速タイプに比べて低く、電力は低電力タイプに比べて増加するが、面積の増加は抑制される。
【００４２】
冗長セルブロックを有するマクロタイプは、不良のメモリセルを含むセルブロックの代わりに使用することで不良を救済でき、歩留りを向上できる。図４において、「１冗長セルブロック」は、１つの冗長セルブロックを有するマクロタイプを示し、１つのセルブロック内に発生した不良を救済できる。「２冗長セルブロック」は、２つの冗長セルブロックを有するマクロタイプを示し、２つのセルブロック内で発生した不良をそれぞれ救済できる。
【００４３】
例えば、メモリＭ１に使用可能なｎ個のマクロタイプのうち、「高速（冗長セルブロックなし）」のマクロタイプは、歩留りが最も低く、「省面積（２冗長セルブロック）」のマクロタイプは、歩留りが最も高い。なお、図４に示すマクロタイプ表ＭＴＢＬは、メモリ（Ｍ１、Ｍ２等）毎に、ｎ個のマクロタイプを有するが、マクロタイプの数は、メモリ毎に相違してもよい。
【００４４】
図５は、図３に示すチップＣＰの設計手順の一例を示す。チップＣＰの設計では、まず、ステップＳ１００において、ＣＰＵおよび周辺回路等の機能ブロックが設計され、各機能ブロックのハードマクロが生成される。なお、機能ブロックのハードマクロは、予め設計されていてもよい。
【００４５】
ステップＳ２００において、図２に示したメモリ選択装置１００Ａがメモリ選択方法を実行し、０−１整数計画問題を解くことにより、各搭載メモリに使用するマクロタイプが決定される。次に、ステップＳ３００において、メモリコンパイラ等を用いて、ステップＳ２００で決定したマクロタイプのハードマクロ（すなわち、メモリマクロ）が生成される。
【００４６】
次に、ステップＳ４００において、レイアウト設計装置等を用いて、機能ブロックのハードマクロと搭載メモリのハードマクロとを組み合わせて、チップ設計（レイアウト設計）が実行される。次に、ステップＳ５００において、チップ仕様を満足する場合、チップＣＰの設計は完了し、チップ仕様を満足しない場合、ステップＳ６００の処理が実行される。ステップＳ６００では、マクロタイプの選択をやり直す場合、処理はステップＳ２００に移行され、機能ブロックの設計をやり直す場合、処理はステップＳ１００に移行される。
【００４７】
図６は、図５に示すステップＳ２００（マクロタイプの選択）の処理の一例を示す。例えば、図６に示す処理は、図２に示すメモリ選択装置１００Ａがメモリ選択プログラムを実行することにより実行される。
【００４８】
まず、メモリ選択装置１００Ａは、マクロタイプ表ＭＴＢＬ、チップに搭載する各メモリの容量、目的、制約および欠陥密度を入力する。メモリの容量は、図４に示すワード数ｗとビット数ｂの組み合わせにより示される。欠陥密度は、チップの製造に使用する半導体ウェーハに存在する欠陥とチップの製造工程で発生する欠陥とに基づいて決まる値である。なお、欠陥密度は、メモリ選択装置１００Ａに予め入力されてもよい。
【００４９】
メモリ選択装置１００Ａは、ステップＳ２１０において、図９に示す変数ｘｉｊおよび各種の特性値（面積Ａｉｊ、電力Ｐｉｊ、速度Ｓｉｊ、平均欠陥数λｉｊ）を生成する。面積Ａｉｊ、電力Ｐｉｊ、速度Ｓｉｊは、メモリ選択装置１００Ａに入力される「目的」または「制約」のいずれかに含まれる特性の指標に対応する。平均欠陥数λｉｊは、「目的」または「制約」のいずれかに含まれる歩留りの指標に対応する。すなわち、メモリ選択装置１００Ａは、歩留りの指標を含む「目的」または「制約」を、「歩留り」と相関があり線形表現可能な指標に変更する。ステップＳ２１０で実行される処理の例は、図７および図８に示される。
【００５０】
次に、メモリ選択装置１００Ａは、ステップＳ２２０において、目的関数および制約条件（すなわち、０−１整数計画問題）を生成し、ステップＳ２３０において、０−１整数計画問題を解く。ステップＳ２２０の例は、図８に示される。
【００５１】
次に、メモリ選択装置１００Ａは、ステップＳ２６０において、０−１整数計画問題を解くことにより得られた解により示されるマクロタイプ（チップに搭載するメモリに使用するマクロタイプ）を出力する。
【００５２】
図７は、図６に示すステップＳ２１０において、「歩留り」を含む「目的」を、「歩留り」と相関があり線形表現可能な「平均欠陥数の最小化」に変更する一例を示す。
【００５３】
歩留りは、平均欠陥数が減少すると向上するため、「歩留りの最大化」は、「平均欠陥数の最小化」に置き換え可能である。このため、図２に示す制御部１０は、元の最適化問題の「目的」である「歩留りの最大化」を、線形表現可能な「平均欠陥数の最小化」に変更し、０−１整数計画問題を生成可能にする。「平均欠陥数」は、線形表現可能であり、「歩留り」と相関を有するため、「平均欠陥数の最小化」を目的関数とすることで、「歩留りの最大化」を目的とする場合と同じ結果を得ることができる。
【００５４】
図７に示す例では、制御部１０は、Ａ以下の面積、Ｐ以下の電力、ＳＰ１、ＳＰ２、ＳＰ３以下の各搭載チップＭ１、Ｍ２、Ｍ３の速度で示される元の最適化問題の「制約」を、０−１整数計画問題の「制約条件」に設定する。面積は、メモリが搭載されるメモリ領域の面積を示し、電力は、メモリが搭載されるメモリ領域で消費される電力である。図７に示す「目的関数」および「制約条件」は、「歩留り」を含まないため、０−１整数計画問題として生成可能である。
【００５５】
図８は、図６に示すステップＳ２１０、Ｓ２２０の処理の一例を示す。図８に示す処理は、制御部１０の制御に基づいて、定式化部２０、パラメータ算出部４０および指標算出部５０により実行される。
【００５６】
まず、ステップＳ２１１において、制御部１０は、定式化部２０に搭載メモリを示す情報を与え、マクロタイプ表ＭＴＢＬに登録されている全てのマクロタイプに対応する変数ｘｉｊを定式化部２０に生成（定義）させる。
【００５７】
変数ｘｉｊにおける”ｉ”は、搭載メモリ（Ｍ１、Ｍ２等）を識別する番号であり、搭載メモリの通し番号である。搭載メモリの数がｍ個の場合、”ｉ”は、１からｍのいずれかである。変数ｘｉｊにおける”ｊ”は、搭載メモリ毎にマクロタイプを識別する番号であり、搭載メモリ毎のマクロタイプの通し番号である。マクロタイプ表ＭＴＢＬに、メモリ毎にｎ個のマクロタイプが登録されている場合、”ｊ”は、１からｎのいずれかである。以下の説明では、説明を分かりやすくするため、各メモリが使用可能なマクロタイプの数は、ｎ個（同じ数）であるとする。変数ｘｉｊの例は、図９に示される。
【００５８】
例えば、定式化部２０は、マクロタイプの数（ｎ個）を記憶している。定式化部２０は、搭載メモリ毎に、ｎ個のマクロタイプに対応するｎ個の変数ｘｉｊを生成する。すなわち、搭載メモリ毎にｎ個の変数ｘｉｊを格納する領域が、例えば、記憶部６０等に割り当てられる。図９に示すように、変数ｘｉｊの値は、マクロタイプがメモリに使用される場合”１”に設定され、マクロタイプがメモリに使用されない場合”０”に設定される。
【００５９】
次に、ステップＳ２１２において、定式化部２０は、搭載メモリを示す情報と、各マクロタイプを示す情報をパラメータ算出部４０に与える。パラメータ算出部４０は、定式化部２０からの情報に基づいて、搭載メモリに使用可能なｎ個のマクロタイプの面積Ａｉｊ、電力Ｐｉｊ、速度Ｓｉｊを算出する。面積Ａｉｊ、電力Ｐｉｊ、速度Ｓｉｊにおける”ｉ”、”ｊ”の意味は、変数ｘｉｊの”ｉ”、”ｊ”の意味と同じである。また、算出される特性値は、面積Ａｉｊ、電力Ｐｉｊ、速度Ｓｉｊに限定されない。
【００６０】
パラメータ算出部４０は、算出した面積Ａｉｊ、電力Ｐｉｊ、速度Ｓｉｊを定式化部２０に渡す。なお、算出した面積Ａｉｊ、電力Ｐｉｊ、速度Ｓｉｊは、記憶部６０等に割り当てられたパラメータ領域に格納され、パラメータ領域を介して定式化部２０に渡されてもよい。面積Ａｉｊ、電力Ｐｉｊ、速度Ｓｉｊの例は、図９に示される。
【００６１】
次に、ステップＳ２１３において、定式化部２０は、パラメータ算出部４０が算出した搭載メモリ毎のｎ個のマクロタイプの面積Ａｉｊと、各マクロタイプを示す情報とを指標算出部５０に与える。各マクロタイプを示す情報は、マクロタイプに搭載される冗長セルブロックの数を含む。指標算出部５０は、定式化部２０からの情報に基づいて、搭載メモリ毎にｎ個のマクロタイプの平均欠陥数λｉｊを算出する。平均欠陥数λｉｊの算出方法は、図９で説明する。平均欠陥数λｉｊにおける”ｉ”、”ｊ”の意味は、変数ｘｉｊの”ｉ”、”ｊ”の意味と同じである。
【００６２】
指標算出部５０は、算出した平均欠陥数λｉｊを定式化部２０に渡す。なお、算出した平均欠陥数λｉｊは、記憶部６０等に割り当てられた指標領域に格納され、指標領域を介して定式化部２０に渡されてもよい。平均欠陥数λｉｊの例は、図９に示される。
【００６３】
次に、ステップＳ２２１において、定式化部２０は、変数ｘｉｊと平均欠陥数λｉｊとを組み合わせて目的関数を生成する。目的関数の例は、図１０に示される。
【００６４】
次に、ステップＳ２２２において、定式化部２０は、制約条件を生成する。例えば、定式化部２０は、変数ｘｉｊと面積Ａｉｊと面積の制約値（図７に示す”Ａ”）とを組み合わせて、面積の制約条件を生成する。定式化部２０は、変数ｘｉｊと電力Ｐｉｊと電力の制約値（図７に示す”Ｐ”）とを組み合わせて、電力の制約条件を生成する。定式化部２０は、変数ｘｉｊと速度Ｓｉｊと速度の制約値（図７に示す”ＳＰ１”等）とを、搭載メモリ毎に組み合わせて、速度の制約条件を生成する。面積、電力、速度の制約条件の例は、図１０に示される。
【００６５】
次に、ステップＳ２２３において、定式化部２０は、変数ｘｉｊに関係する所定数の制約条件を生成する。変数ｘｉｊに関係する制約条件の例は、図１０に示される。そして、目的関数と制約条件との生成により、０−１整数計画問題が生成される。定式化部２０は、生成した目的関数および制約条件を制御部１０に渡す。なお、生成した目的関数および制約条件は、記憶部６０等に割り当てられた定式領域に格納され、定式領域を介して定式化部２０に渡されてもよい。
【００６６】
図９は、図８に示すステップＳ２１１、Ｓ２１２、Ｓ２１３で生成される変数ｘｉｊ、面積Ａｉｊ、電力Ｐｉｊ、速度Ｓｉｊおよび平均欠陥数λｉｊの一例を示す。
【００６７】
変数ｘｉｊにおいて、”ｊ”で示されるマクロタイプが使用される場合、変数ｘｉｊの値は、”１”に設定され、”ｊ”で示されるマクロタイプが使用されない場合、変数ｘｉｊの値は、”０”に設定される。
【００６８】
面積Ａｉｊ、電力Ｐｉｊおよび速度Ｓｉｊは、ｍ個の搭載メモリとｎ個のマクロタイプの組み合わせ毎に、パラメータ算出部４０が算出した値に設定される。平均欠陥数λｉｊは、ｍ個の搭載メモリとｎ個のマクロタイプの組み合わせ毎に、指標算出部５０が算出した値に設定される。
【００６９】
平均欠陥数λｉｊは、冗長セルブロックを持たないマクロタイプでは、式（２）によりマクロタイプの面積Ａｉｊと欠陥密度Ｄとを乗じることで算出される。平均欠陥数λｉｊは、冗長セルブロックを持つマクロタイプでは、式（３）により算出される。
λｉｊ＝Ａｉｊ×Ｄ  ［冗長セルブロックなし］  …（２）
λｉｊ＝ｍａｘ（Ａｉｊ×Ｄ−ｒｉｊ，０）  ［冗長セルブロックあり］  …（３）
式（３）において、変数ｒｉｊは、冗長セルブロックの数を示し、”ｉ”、”ｊ”の意味は、変数ｘｉｊの”ｉ”、”ｊ”の意味と同じである。ｍａｘは、”Ａｉｊ×Ｄ−ｒｉｊ”と”０”のうちの大きい値を選択することを示す。これにより、欠陥密度が小さく、”Ａｉｊ×Ｄ−ｒｉｊ”が負になる場合、平均欠陥数λｉｊは”０”に設定される。冗長セルブロックを有するマクロタイプでは、式（３）に示すように、冗長セルブロック毎に、１つの不良が救済され、平均欠陥数λｉｊが減少される。以下では、正規のセルブロック毎に１つの不良が発生するものとして説明される。すなわち、式（３）における”Ａｉｊ×Ｄ”が”２”の場合、２つの不良は、互いに異なる正規のセルブロックで発生するものとする。
【００７０】
図１０は、図８に示すステップＳ２２１で生成される目的関数と、ステップＳ２２２、Ｓ２２３で生成される制約条件との一例を示す。定式化部２０は、変数ｘｉｊと平均欠陥数λｉｊとの積の総和を用いて欠陥数の最小化を目的とする目的関数を示す式を生成する（定式化）。すなわち、目的関数は、搭載メモリとマクロタイプの組み合わせ毎の平均欠陥数λｉｊを積算した値を最小化することを示す。このため、目的関数（平均欠陥数λｉｊ）は、線形表現可能であり、０−１整数計画問題の定式化が可能である。ここで、使用しないマクロタイプの変数ｘｉｊは”０”になるため、使用するマクロタイプの平均欠陥数λｉｊのみが積算される。
【００７１】
また、定式化部２０は、図９に示す変数ｘｉｊと面積Ａｉｊとの積の総和、変数ｘｉｊと電力Ｐｉｊとの積の総和、および変数ｘｉｊと速度ｍｎとの積の総和をそれぞれ用いて面積、電力、速度の制約条件を示す式をそれぞれ生成する（定式化）。
【００７２】
面積の制約条件は、使用するマクロタイプの面積Ａｉｊの合計が、制約値Ａ（例えば、０．３平方センチメートル）以下であることを示す。電力の制約値は、使用するマクロタイプの電力Ｐｉｊの合計が、制約値Ｐ（例えば、１００ミリワット）以下であることを示す。速度の制約値は、使用する各マクロタイプの動作周波数が、制約値Ｓ１（または、Ｓ２、...、Ｓｍ；例えば、１００メガヘルツ）以上であることを示す。
【００７３】
変数ｘｉｊの制約条件（ａ）の式は、各変数ｘｉｊの値が０以上であることを示す。変数ｘｉｊの制約条件（ｂ）の式は、搭載メモリ毎に、変数ｘｉｊの値の合計が”１”以上であることを示す。すなわち、制約条件（ｂ）は、搭載メモリ毎にマクロタイプのいずれか１つが選択されることを示す。変数ｘｉｊの制約条件（ｃ）の式は、各変数ｘｉｊが”０”または”１”であることを示す。
【００７４】
図１１は、図２に示すメモリ選択装置１００Ａが実行する処理の流れの一例を示す。例えば、メモリ選択装置１００Ａは、搭載メモリの容量、目的および制約が制御部１０に入力されることで、チップに搭載するメモリのマクロタイプを選択する処理を開始する（図１１（ａ））。
【００７５】
制御部１０は、搭載メモリ、目的、制約を示す情報を定式化部２０に渡す。この際、制御部１０は、「歩留り」を含む「目的」に代えて、「歩留り」と相関があり線形表現可能な指標（平均欠陥数）を定式化部２０に渡す。すなわち、制御部１０は、「歩留り」を含む「目的」を、「歩留り」と相関があり線形表現可能な指標（平均欠陥数）に変更する（図１１（ｂ））。
【００７６】
定式化部２０は、図８のステップＳ２１１で説明したように、変数ｘｉｊを生成（定義）する（図１１（ｃ））。パラメータ算出部４０は、図８のステップＳ２１２で説明したように、搭載メモリと各マクロタイプとを示す情報に基づいて、面積Ａｉｊ、電力Ｐｉｊ、速度Ｓｉｊを算出し、算出した面積Ａｉｊ、電力Ｐｉｊ、速度Ｓｉｊを定式化部２０に渡す（図１１（ｄ））。
【００７７】
指標算出部５０は、図８のステップＳ２１３で説明したように、面積Ａｉｊと各マクロタイプとを示す情報に基づいて、平均欠陥数λｉｊを算出し、算出した平均欠陥数λｉｊを定式化部２０に渡す（図１１（ｅ））。
【００７８】
定式化部２０は、図８のステップＳ２２１からＳ２２３で説明したように、目的関数と制約条件とを生成し、生成した目的関数および制約条件を制御部１０に渡す（図１１（ｆ））。
【００７９】
図１２は、図２に示すメモリ選択装置１００Ａが実行する処理の流れの一例（図１１の続き）を示す。制御部１０は、定式化部２０が生成した目的関数および制約条件を求解部３０に渡し、求解部３０に０−１整数計画問題の解を求める指示を与える。この際、求解部３０は、定式化部２０が生成した目的関数および制約条件を、制御部１０から受けてもよく、記憶部６０の定式領域から読み出してもよい。
【００８０】
求解部３０は、目的関数および制約条件で示される０−１整数計画問題を解き、求めた解（すなわち、搭載メモリに適用するメモリマクロの構成）を制御部１０に通知する（図１２（ａ））。例えば、求解部３０が求めた解は、記憶部６０に格納されてもよい。この場合、制御部１０は、求解部３０が求めた解を記憶部６０から読み出してもよい。
【００８１】
求解部３０が求めた解は、搭載メモリにどのマクロタイプを使用するかの情報（例えば、変数ｘｉｊの０または１）を含む。すなわち、制御部１０は、０−１整数計画問題を解くことにより、各搭載チップに使用するマクロタイプの構成を得ることができる。そして、制御部１０は、求解部３０が求めた解から得られた搭載メモリに使用するマクロタイプの構成を示す情報をメモリ選択装置１００Ａの外部に出力し、処理を完了する（図１２（ｂ））。
【００８２】
なお、制御部１０は、求解部３０が求めた解に基づいて、パラメータ算出部４０および指標算出部５０を動作させることで、搭載チップ全体の面積、電力と、各搭載チップの速度と、搭載チップ全体の平均欠陥数を得ることができる。この際、制御部１０は、搭載チップ全体の面積、電力、平均欠陥数と、各搭載チップの速度とをメモリ選択装置１００Ａの外部に出力してもよい。また、搭載チップ全体の平均欠陥数は、式（１）に示す面積Ａと欠陥密度Ｄの積に等しいため、制御部１０は、平均欠陥数に基づいて搭載チップ全体の歩留りを求めることができる。求めた歩留りは、図７に示す元の最適化問題の目的である最大の歩留りである。
【００８３】
以上、図２から図１２に示す実施形態においても、図１に示す実施形態と同様に、半導体装置にメモリを搭載する搭載条件に歩留りの指標が含まれる場合にも、０−１整数計画問題により、搭載条件を満たすメモリマクロの構成を得ることができる。例えば、メモリ選択装置１００Ａは、元の最適化問題に含まれる定式化が困難な「歩留りの最大化」の目的を、定式化が可能な「平均欠陥数の最小化」を示す目的関数に変更する。これにより、マクロタイプを選択するための０−１整数計画問題を生成することができ、０−１整数計画問題を解くことにより搭載メモリに適用するマクロタイプを決定することができる。
【００８４】
図１３は、メモリ選択装置、メモリ選択方法およびメモリ選択プログラムの別の実施形態を示す。図２に示した実施形態で説明した要素と同一または同様の要素については、同一の符号を付し、これ等については、詳細な説明は省略する。
【００８５】
この実施形態のメモリ選択装置１００Ｂは、図２に示すメモリ選択装置１００Ａに歩留り算出部７０を追加している。メモリ選択装置１００Ｂは、サーバ等の情報処理装置が実行するプログラムにより実現され、あるいは、専用のハードウェアにより実現される。
【００８６】
メモリ選択装置１００Ｂで選択されるメモリと、メモリが搭載されるチップＣＰは、図３と同様であり、マクロタイプ表ＭＴＢＬは、図４と同様である。また、メモリ選択装置１００Ｂで選択されるメモリが搭載されるチップＣＰの設計手順は、図５と同様である。
【００８７】
図１３に示すメモリ選択装置１００Ｂは、外部から入力される「制約」に含まれる「歩留り」を、線形表現可能な「平均欠陥数」に変更し、目的関数または制約条件を生成して０−１整数計画問題を繰り返し解く。そして、メモリ選択装置１００Ｂは、解から算出される平均欠陥数を用いて歩留りを求め、求めた歩留りが、「制約」に含まれる「歩留り」に最も近づいたときに、最終解が得られたと判断し、チップに搭載するメモリに使用するマクロタイプを決定する。メモリ選択装置１００Ｂが実行する処理は、図１４から図２１で説明する。
【００８８】
図１４は、図５に示すステップＳ２００（マクロタイプの選択）の処理の一例を示す。メモリ選択装置１００Ｂに入力される情報は、図６で説明した情報と同様である。例えば、図１４に示す処理は、図１３に示すメモリ選択装置１００Ｂがメモリ選択プログラムを実行することにより実行される。
【００８９】
まず、ステップＳ２１０ｂにおいて、図８に示すステップＳ２１０と同様に、メモリ選択装置１００Ｂは、変数ｘｉｊおよび各種の特性値（例えば、電力Ｐｉｊ、平均欠陥数λｉｊ）を生成する。電力Ｐｉｊは、メモリ選択装置１００Ｂに入力される「制約」に含まれる電力の指標に対応し、平均欠陥数λｉｊは、「制約」に含まれる歩留りの指標に対応する。すなわち、メモリ選択装置１００Ｂは、歩留りの指標を含む「目的」または「制約」を、「歩留り」と相関があり線形表現可能な指標に変更する。ステップＳ２１０ｂで実行される処理の例は、図１５に示される。
【００９０】
次に、ステップＳ２２０ｂにおいて、図８に示すステップＳ２２０と同様に、メモリ選択装置１００Ｂは、定式化部２０、パラメータ算出部４０および指標算出部５０を用いて、平均欠陥数を最小化（ｍｉｎ）する目的関数と、制約条件とを生成する。またメモリ選択装置１００Ｂは、定式化部２０、パラメータ算出部４０および指標算出部５０を用いて、平均欠陥数を最大化（ｍａｘ）する目的関数と、制約条件とを生成する。すなわち、メモリ選択装置１００Ｂは、２つの０−１整数計画問題を生成する。
【００９１】
次に、ステップＳ２３０ｂにおいて、メモリ選択装置１００Ｂは、求解部３０を用いて、ステップＳ２２０ｂで生成した２つの０−１整数計画問題をそれぞれ解き、チップに搭載するメモリに使用するマクロタイプ（メモリマクロの構成）を得る。そして、メモリ選択装置１００Ｂは、パラメータ算出部４０および指標算出部５０を用いて、求めたメモリマクロの構成から平均欠陥数（最小値と最大値）を求める。求めたメモリマクロの構成から平均欠陥数を求める手法は、図２１で説明する。
【００９２】
次に、ステップＳ２４０ｂにおいて、メモリ選択装置１００Ｂは、求解部３０を用いて、ステップＳ２３０ｂで求めた平均欠陥数の最小値と最大値との中間値を制約条件として０−１整数計画問題を解く。メモリ選択装置１００Ｂは、パラメータ算出部４０、指標算出部５０および歩留り算出部７０を用いて、０−１整数計画問題の解（メモリマクロの構成）から歩留りを求める。そして、メモリ選択装置１００Ｂの制御部１０は、求めた歩留りと「制約」に含まれる歩留りＹｍｉｎとの大小関係を判定する。求めたメモリマクロの構成から歩留りを求める手法は、図１８で説明する。
【００９３】
メモリ選択装置１００Ｂの制御部１０および定式化部２０は、歩留りの判定結果に基づいて、二分探索法により新たな平均欠陥数の制約条件を求め、新たな０−１整数計画問題を生成する。そして、メモリ選択装置１００Ｂは、０−１整数計画問題の解を求める処理と二分探索法による新たな平均欠陥数の制約条件の生成とを、Ｙｍｉｎ以上でＹｍｉｎに最も近い歩留りに対応する平均欠陥数が求められるまで繰り返す。ステップＳ２４０ｂの処理の例は、図１８および図１９に示される。この後、ステップＳ２６０において、メモリ選択装置１００Ｂの制御部１０は、０−１整数計画問題を解くことで得られた解により示されるマクロタイプを出力する。
【００９４】
図１５は、図１３に示すメモリ選択装置１００Ｂにおいて、「歩留り」を含む「制約」の代わりに、「歩留り」と相関があり線形表現可能な「平均欠陥数」を「目的」にする一例を示す。
【００９５】
図１５では、図１３に示す制御部１０は、元の最適化問題の「制約」に含まれる「歩留りがＹｍｉｎ以上」を、「平均欠陥数の最小化」と「平均欠陥数の最大化」とを示す「目的関数」に変更する。また、制御部１０は、元の最適化問題の「制約」に含まれる「歩留り」が除外された制約条件を生成する。図１５に示す例では、Ｐ以下の電力が、「制約条件」に設定される。なお、「制約」および「制約条件」は、図７に示す面積および速度を含んでもよい。
【００９６】
歩留りは、平均欠陥数と相関があり、平均欠陥数の減少とともに上がり、平均欠陥数の増加とともに下がる。また、歩留りは、平均欠陥数が最小の場合に最大になり、平均欠陥数が最大の場合に最小になる。このため、元の最適化問題の「制約」で示される歩留り（例えば、歩留りがＹｍｉｎ以上）に対応する平均欠陥数は、平均欠陥数の最小値と最大値との間に存在する。そこで、メモリ選択装置１００Ｂは、平均欠陥数の最小化を目的関数とする０−１整数計画問題と、平均欠陥数の最大化を目的関数とする０−１整数計画問題とを生成し、解を求める。
【００９７】
この後、メモリ選択装置１００Ｂは、図１８および図１９で説明するように、二分探索法を用いて元の最適化問題の「制約」で示される歩留りに対応する平均欠陥数を絞り込んでいき、搭載メモリに使用するマクロタイプを決定する。なお、元の最適化問題の「目的」は、「面積の最小化」以外の目的でもよい。
【００９８】
図１６は、図１４に示すステップＳ２２０ｂで生成される目的関数および制約条件の一例を示す。図１６に示す符号の意味は、図９および図１０と同じである。
【００９９】
目的関数（１）は、平均欠陥数λの最小値を求める０−１整数計画問題の要素であり、目的関数（２）は、平均欠陥数λの最大値を求める０−１整数計画問題の要素である。電力の制約条件および変数ｘｉｊの制約条件は、平均欠陥数λの最小値および最大値を求める０−１整数計画問題に共通の要素である。図１０で説明したように、目的関数（平均欠陥数λｉｊ）は、線形表現可能であり、０−１整数計画問題の定式化が可能である。
【０１００】
図１７は、図１４に示すステップＳ２４０ｂの処理中に生成される目的関数および制約条件の一例を示す。図１７に示す符号の意味は、図９および図１０と同じである。
【０１０１】
ステップＳ２４０ｂで実行される０−１整数計画問題では、搭載メモリ全体の面積Ａの最小化が目的関数に設定され、搭載メモリ全体の平均欠陥数λおよび電力Ｐと、変数ｘｉｊとが制約条件に設定される。電力Ｐおよび変数ｘｉｊの制約条件の内容は、図１０と同じである。なお、図１０および図１６に示す目的関数と同様に、平均欠陥数の制約条件は、搭載メモリとマクロタイプの組み合わせ毎の平均欠陥数λｉｊを積算した値を制約値λ以下とする式で示される。このため、制約条件（平均欠陥数λｉｊ）は、線形表現可能であり、０−１整数計画問題の定式化が可能である。
【０１０２】
図１８は、図１４に示すステップＳ２４０ｂの処理の一例を示す。図１８に示す処理は、図１３に示す制御部１０の制御に基づいて、図１３に示す定式化部２０、求解部３０、パラメータ算出部４０、指標算出部５０および歩留り算出部７０により実行される。
【０１０３】
まず、ステップＳ２４１ｂにおいて、制御部１０は、平均欠陥数の最小値ｍｉｎと最大値ｍａｘとを比較し、最小値ｍｉｎが最大値ｍａｘ以下の場合、処理をステップＳ２４２ｂに移行し、最小値ｍｉｎが最大値ｍａｘより大きい場合、処理を終了する。すなわち、最大値ｍａｘと最小値ｍｉｎの差が負の場合（閾値０より小さい場合）、処理は終了する。ステップＳ２４１ｂは、二分探索法により平均欠陥数の探索が収束したかを判断するために設けられる。なお、処理の終了をステップＳ２４１ｂにより判定可能にするために、後述するステップＳ２４７ｂ、Ｓ２４８ｂの処理が設けられる。
【０１０４】
ステップＳ２４２ｂにおいて、制御部１０は、最小値ｍｉｎと最大値ｍａｘの中間の平均欠陥数λを求め、定式化部２０に、平均欠陥数の制約条件（λ以下）を生成させ、０−１整数計画問題を生成させる。ここで、歩留りは、平均欠陥数が多いほど低くなり、平均欠陥数が少ないほど高くなる。このため、図１５に示す元の歩留りの制約（Ｙｍｉｎ以上）に対応する平均欠陥数の制約は上限値以下（λ以下）という形式になる。
【０１０５】
次に、ステップＳ２４３ｂにおいて、求解部３０は、図１７に示す目的関数および制約条件を用いて０−１整数計画問題の解を求める。制御部１０は、搭載メモリを示す情報と、解で示される搭載メモリに使用するマクロタイプを示す情報（メモリマクロの構成）とを歩留り算出部７０に与える。歩留り算出部７０は、解に含まれる各マクロタイプの面積をパラメータ算出部４０に求めさせる。また、歩留り算出部７０は、パラメータ算出部４０が求めた面積を指標算出部５０に与え、解に含まれる各マクロタイプの平均欠陥数を指標算出部５０に求めさせる。例えば、平均欠陥数は、図９に示すように、面積Ａと欠陥密度Ｄとの積により算出される。そして、歩留り算出部７０は、指標算出部５０が求めた各マクロタイプの平均欠陥数の合計値から搭載メモリ全体の歩留りを算出し、制御部１０に通知する。
【０１０６】
次に、ステップＳ２４５ｂにおいて、制御部１０は、０−１整数計画問題の解から算出した平均欠陥数λに対応する搭載メモリ全体の歩留りＹλと、元の最適化問題の「制約」に含まれる歩留りＹｍｉｎとを比較する。歩留りＹλが歩留りＹｍｉｎ以上の場合、平均欠陥数λを新たな最小値ｍｉｎに設定するため、処理はステップＳ２４６ｂに移行される。歩留りＹλが歩留りＹｍｉｎより小さい場合、平均欠陥数λを新たな最大値ｍａｘに設定するため、処理はステップＳ２４８ｂに移行される。
【０１０７】
なお、メモリ選択装置１００Ｂは、図１４に示すステップＳ２３０ｂにおいて、平均欠陥数の最小化と最大化を目的関数とする２つの０−１整数計画問題を解くことにより、平均欠陥数を最小値ｍｉｎと最大値ｍａｘとを求める。これにより、ステップＳ２４３ｂにおいて、平均欠陥数を制約条件（λ以下）とする０−１整数計画問題の解を必ず求めることができる。これは、０−１整数計画問題の解に基づいて求められる平均欠陥数の範囲（最小値と最大値の間）には、元の最適化問題の「制約」で示される歩留りに対応する平均欠陥数が含まれるためである。
【０１０８】
歩留りＹλが、元の最適化問題の「制約」に含まれる歩留りＹｍｉｎ以上の場合、「制約」を満足するため、ステップＳ２４６ｂにおいて、制御部１０は、現在の解を暫定解とする。次に、ステップＳ２４７ｂにおいて、制御部１０は、平均欠陥数λを新たな最小値ｍｉｎに設定する。この際、平均欠陥数λに所定値Ｖ１を加えた値が最小値ｍｉｎに設定され、処理はステップＳ２４１ｂに戻る。一方、ステップＳ２４８ｂにおいて、制御部１０は、平均欠陥数λを新たな最大値ｍａｘに設定する。この際、平均欠陥数λから所定値Ｖ１を引いた値が最大値ｍａｘに設定され、処理はステップＳ２４１ｂに戻る。ステップＳ２４７ｂ、Ｓ２４８ｂの処理により、平均欠陥数λに所定値Ｖ１を増減した値を、新たな最小値ｍｉｎまたは新たな最大値ｍａｘに設定し、ステップＳ２４０ｂの処理を繰り返すことで、最小値ｍｉｎと最大値ｍａｘとを逆転させることが可能になる。この結果、ステップＳ２４１ｂの判定により処理を終了することが可能になる。なお、ステップＳ２４１ｂにおいて、最大値ｍａｘと最小値ｍｉｎの差が所定の閾値以下になった場合に、処理を終了させることで、ステップＳ２４７ｂ、Ｓ２４８ｂによる所定値Ｖ１の増減を省略してもよい。
【０１０９】
図１９は、図１８に示すステップＳ２４０ｂにおける探索処理の一例を示す。図１９に示す探索処理の前に、メモリ選択装置１００Ｂは、図１５で説明したように、平均欠陥数の最小化と最大化を目的関数として、２つの０−１整数計画問題を解く。そして、メモリ選択装置１００Ｂは、求めた２つの解（メモリマクロの構成）に基づいて、平均欠陥数（最小値ｍｉｎおよび最大値ｍａｘの初期値）を算出する。
【０１１０】
図１９に示す例では、歩留りと平均欠陥数との関係を示す線グラフは、単調減少関数（右下がり）になる。なお、歩留りと平均欠陥数との関係を示す線グラフは、直線でない場合もある。平均欠陥数の最小値ｍｉｎに対応する歩留りは最大を示し、平均欠陥数の最大値ｍａｘに対応する歩留りは最小を示すため、元の制約である歩留りＹｍｉｎは、線グラフに含まれる。
【０１１１】
メモリ選択装置１００Ｂは、平均欠陥数の最小値ｍｉｎと最大値ｍａｘの中央（（ｍｉｎ＋ｍａｘ）／２）の平均欠陥数λに対応する歩留りＹλを求め、求めた歩留りＹλを歩留りＹｍｉｎと比較する。メモリ選択装置１００Ｂは、歩留りＹλ、Ｙｍｉｎの比較結果に基づいて、平均欠陥数λを新たな制約条件（最小化または最大化）にして、０−１整数計画問題を解く。そして、メモリ選択装置１００Ｂは、０−１整数計画問題の解から算出される平均欠陥数（新たな最小値または最大値）を用いて、平均欠陥数の中央値λを求め、中央値λに対応する歩留りＹλを求め、歩留りＹｍｉｎと比較する。メモリ選択装置１００Ｂは、歩留りＹλ、Ｙｍｉｎの比較結果に基づいて、平均欠陥数λを新たな制約条件（最小化または最大化）にして、０−１整数計画問題を解く。以上の処理を繰り返すことで、二分探索法の手法を用いて探索範囲を狭めていき、最終解λ（すなわち、搭載メモリに使用するマクロタイプの構成）が求められる。
【０１１２】
例えば、図１９の左側において、平均欠陥数λに対応する歩留りＹλは歩留りＹｍｉｎより低いため、歩留りＹｍｉｎに対応する平均欠陥数は最小値ｍｉｎ側に存在する。このため、メモリ選択装置１００Ｂは、平均欠陥数λの最大化を制約条件として０−１整数計画問題を解き、図１９の中央に示すように、平均欠陥数λの最大値ｍａｘを求める。すなわち、図１８のステップＳ２４５ｂの判定により、処理はステップＳ２４８ｂに移行される。なお、平均欠陥数の最小化を制約条件とする０−１整数計画問題の解は、前回の０−１整数計画問題を解いたときに得られており、平均欠陥数の最小値ｍｉｎは、前回算出した値が用いられる。
【０１１３】
また、図１９の中央において、平均欠陥数λに対応する歩留りＹλは歩留りＹｍｉｎ以上であるため、歩留りＹｍｉｎに対応する平均欠陥数は最大値ｍａｘ側に存在する。このため、メモリ選択装置１００Ｂは、平均欠陥数λの最小化を制約条件として０−１整数計画問題を解き、図１９の右側に示すように、平均欠陥数λの最小値ｍｉｎを求める。すなわち、図１８のステップＳ２４５ｂの判定により、処理はステップＳ２４６ｂ、Ｓ２４７ｂに移行される。なお、平均欠陥数の最大化を制約条件とする０−１整数計画問題の解は、前回の０−１整数計画問題を解いたときに得られており、平均欠陥数の最大値ｍａｘは、前回算出した値が用いられる。
【０１１４】
図２０は、図１３に示すメモリ選択装置１００Ｂが実行する処理の流れの一例を示す。図１１と同一または同様の処理については、詳細な説明は省略する。
【０１１５】
制御部１０が受ける「目的」、「制約」の内容と、制御部１０が「制約」に含まれる「歩留り」を、平均欠陥数の最小化および最大化を示す目的関数に変更する例は、図１５に示す。定式化部２０が定義する変数ｘｉｊは、図９と同じである。
【０１１６】
定式化部２０は、搭載メモリと各マクロタイプとを示す情報をパラメータ算出部４０に与える。パラメータ算出部４０は、図１１と同様に、例えば、予め用意された計算式に基づいて、電力Ｐｉｊを算出し、算出した電力Ｐｉｊを定式化部２０に渡す（図２０（ｄ））。
【０１１７】
平均欠陥数λを算出する処理と、変数ｘｉｊ、電力Ｐｉｊ、平均欠陥数λｉｊを用いて図１６に示す目的関数（１）、（２）および制約条件を生成する処理は、図１１と同様である。
【０１１８】
図２１は、図１３に示すメモリ選択装置１００Ｂが実行する処理の流れの一例（図２０の続き）を示す。図１２と同一または同様の処理については、詳細な説明は省略する。
【０１１９】
制御部１０は、目的関数（１）および制約条件（図１６）を求解部３０に渡し、０−１整数計画問題（１）を解く指示を求解部３０に出力する。また、制御部１０は、目的関数（２）および制約条件（図１６）を求解部３０に渡し、０−１整数計画問題（２）を解く指示を求解部３０に出力する。
【０１２０】
求解部３０は、０−１整数計画問題（１）、（２）のそれぞれを解き、求めた解（すなわち、メモリマクロの構成）を制御部１０に通知する（図２１（ａ）、（ｂ））。制御部１０は、図８のステップＳ２１２、Ｓ２１３の処理と同様に、図１３に示すパラメータ算出部４０および指標算出部５０を用いて、解で示されるメモリマクロの構成から平均欠陥数を求める。なお、制御部１０は、歩留り算出部７０を介して、パラメータ算出部４０および指標算出部５０を動作させ、解のそれぞれから平均欠陥数を求めてもよい。
【０１２１】
次に、制御部１０は、図１８および図１９で説明したように、二分探索法による平均欠陥数の変更と、変更した平均欠陥数を制約条件とする０−１整数計画問題（λ）の実行とを繰り返す。この際、制御部１０は、変更した平均欠陥数λを定式化部２０に通知し、定式化部２０に図１７に示す目的関数および制約条件を生成させる（図２１（ｃ））。また、制御部１０は、図１８のステップＳ２４３ｂで説明したように、図１７に示す目的関数および制約条件による０−１整数計画問題（λ）を求解部３０に解かせる（図２１（ｄ））。また、制御部１０は、０−１整数計画問題（λ）の解に示されるメモリマクロの構成での歩留りを求めるため、０−１整数計画問題（λ）の解に示されるメモリマクロの構成を歩留り算出部７０に出力する。歩留り算出部７０は、図１８で説明したように、パラメータ算出部４０および指標算出部５０を用いて平均欠陥数λを求め、求めた平均欠陥数λから搭載メモリ全体の歩留りを算出する（図２１（ｅ））。制御部１０は、歩留り算出部７０が算出した歩留りを図１８に示すステップＳ２４５ｂで使用する。
【０１２２】
そして、制御部１０は、図１９に示すように、二分探索法により平均欠陥数λ（制約条件）を変更しながら０−１整数計画問題の解を求める処理を繰り返すことで最終的に得られるマクロタイプをメモリ選択装置１００Ａの外部に出力し、処理を完了する。
【０１２３】
以上、図１３から図２１に示す実施形態においても、図１に示す実施形態と同様に、半導体装置にメモリを搭載する搭載条件に歩留りの指標が含まれる場合にも、０−１整数計画問題により、搭載条件を満たすメモリマクロの構成を得ることができる。例えば、メモリ選択装置１００Ｂは、元の最適化問題に含まれる定式化が困難な「歩留りを所定値以上にする」の制約を、定式化が可能な「平均欠陥数の最小化」を示す目的関数と、「平均欠陥数の最大化」を示す目的関数に変更する。そして、メモリ選択装置１００Ｂは、平均欠陥数の最小値ｍｉｎと最大値ｍａｘの中間の平均欠陥数に対応する歩留りと、元の制約の歩留り（所定値）との比較に基づいて、元の制約の歩留り（所定値）に対応する平均欠陥数を絞り込んでいく。これにより、マクロタイプを選択するための０−１整数計画問題を生成することができ、０−１整数計画問題を解くことにより搭載メモリに適用するマクロタイプを決定することができる。
【０１２４】
この際、メモリ選択装置１００Ｂは、二分探索法を用いて、中間の平均欠陥数を制約条件にして０−１整数計画問題を生成し、０−１整数計画問題の解に示されるメモリマクロの構成から平均欠陥数を求め、求めた平均欠陥数から歩留りを求める。これにより、元の制約の歩留り（所定値）に対応する平均欠陥数を絞り込むまでの０−１整数計画問題の実行回数を、二分探索法を用いない場合に比べて削減することができる。
【０１２５】
図２２は、メモリ選択装置、メモリ選択方法およびメモリ選択プログラムの別の実施形態のおける図５に示すステップＳ２００（マクロタイプの選択）の処理の一例を示す。図１３から図２１に示した実施形態で説明した要素と同一または同様の要素については、同一の符号を付し、これ等については、詳細な説明は省略する。例えば、図２２に示す処理は、図１３に示すメモリ選択装置１００Ｂがメモリ選択プログラムを実行することにより実行される。
【０１２６】
図２２の処理を実行するメモリ選択装置の構成は、図１３に示すメモリ選択装置１００Ｂと同様である。図２２の処理を実行するメモリ選択装置で選択されるメモリと、メモリが搭載されるチップＣＰは、図３と同様であり、マクロタイプ表ＭＴＢＬは、図４と同様である。また、図２２の処理を実行するメモリ選択装置で選択されるメモリが搭載されるチップＣＰの設計手順は、図５と同様である。
【０１２７】
図２２では、図１４のステップＳ２１０ｂ、Ｓ２２０ｂ、Ｓ２３０ｂの代わりにステップＳ２１０ｃが実行され、図１４のステップＳ２４０ｂの代わりにステップＳ２４０ｃが実行される。ステップＳ２６０の処理は、図１４と同様である。
【０１２８】
歩留りは、冗長セルブロックの数が多いほど高くなり、また、面積が小さいほど高くなる。したがって、図４に示すマクロタイプ表ＭＴＢＬにおけるメモリＭ１に使用可能なマクロタイプのうち、例えば、省面積（２冗長セルブロック）のマクロタイプの歩留りが最も高くなり、低電力（冗長セルブロック）のマクロタイプの歩留りが最も低くなる。また、各マクロタイプのおおよその面積と、チップＣＰ（図３）の欠陥密度とは、ともに既知であるとする。
【０１２９】
この場合、チップＣＰに搭載するメモリ全体の面積と欠陥密度との積により、チップＣＰに搭載するメモリ全体の平均欠陥数を求めることができる。例えば、省面積（２冗長セルブロック）のマクロタイプのメモリをチップＣＰに搭載する場合、平均欠陥数は最も低くなる（歩留りは最も高い）。一方、低電力（冗長セルブロック）のマクロタイプのメモリをチップＣＰに搭載する場合、平均欠陥数は最も高くなる（歩留りは最も低い）。したがって、図１４に示すステップＳ２１０ｂ、Ｓ２２０ｂ、Ｓ２３０ｂの処理を実行することなく、ステップＳ２１０ｃにより、マクロタイプ表ＭＴＢＬを利用して平均欠陥数の最小値ｍｉｎと最大値ｍａｘとを求めることができる。すなわち、平均欠陥数の最小値ｍｉｎと最大値ｍａｘとを求める処理時間を短縮することができる。例えば、ステップＳ２１０ｃは、図１３に示す制御部１０により実行される。
【０１３０】
ステップＳ２１０ｃでは、制御部１０は、歩留りが最大のマクロタイプを搭載メモリのそれぞれに適用した場合の各搭載メモリの面積をパラメータ算出部４０に算出させる。制御部１０は、パラメータ算出部４０が算出した面積を指標算出部５０に与え、指標算出部５０に各搭載メモリの平均欠陥数（最小値）を算出させる。また、制御部１０は、歩留りが最小のマクロタイプを搭載メモリのそれぞれに適用した場合の各搭載メモリの面積をパラメータ算出部４０に算出させる。制御部１０は、パラメータ算出部４０が算出した面積を指標算出部５０に与え、指標算出部５０に各搭載メモリの平均欠陥数（最大値）を算出させる。そして、制御部は、指標算出部５０が算出した平均欠陥数（最小値）の和を平均欠陥数の最小値とし、指標算出部５０が算出した平均欠陥数（最大値）の和を平均欠陥数の最大値とする。
【０１３１】
なお、平均欠陥数の最小値ｍｉｎと最大値ｍａｘは、各マクロタイプのおおよその面積を用いて求められるため、二分探索法を用いて平均欠陥数を絞り込む場合に解く０−１整数計画問題に解が存在しないおそれがある。このため、ステップＳ２４０ｃでは、図１４に示すステップＳ２４０ｂの処理に加えて、解が存在しない場合に、歩留りの判定を抑止し、二分探索法による探索範囲を、０−１整数計画問題で解が得られる可能性を高い側に絞り込む処理が実行される。ステップＳ２４０ｃの処理の例は、図２３に示される。
【０１３２】
図２３は、図２２に示すステップＳ２４０ｃの処理の一例を示す。図１８と同一または同様の処理については、詳細な説明は省略する。ステップＳ２４０ｃの処理は、図１８に示すステップＳ２４０ｂと同様に、図１３に示す制御部１０により実行される。
【０１３３】
図２３では、ステップＳ２４３ｂとステップＳ２４５ｂの間に、ステップＳ２４４ｃが追加される。ステップＳ２４４ｃにおいて、図１３に示す制御部１０は、ステップＳ２４３ｂで実行した０−１整数計画問題の解が存在するかを判定する。そして、制御部１０は、解が存在する場合に処理をステップＳ２４５ｂに移行し、解が存在しない場合に処理をステップＳ２４７ｂに移行する。解が存在しない場合にステップＳ２４７ｂにより探索範囲を、平均欠陥数が多い側に絞り込むことで、次に実行される０−１整数計画問題で解が存在する確率を高くすることができる。また、解が存在しない場合にステップＳ２４６ｂの処理をしないことで、無効な解が暫定解に設定されることを抑止することができ、誤ったマクロタイプが選択されることを抑止することができる。
【０１３４】
以上、図２２から図２３に示す実施形態においても、図１から図２１に示す実施形態と同様に、半導体装置にメモリを搭載する搭載条件に歩留りの指標が含まれる場合にも、０−１整数計画問題により、搭載条件を満たすメモリマクロの構成を得ることができる。さらに、図２２から図２３に示す実施形態では、０−１整数計画問題を解くことなく平均欠陥数の最小値と最大値とを求めることができ、搭載メモリのマクロタイプを求める処理時間を、図１４の処理に比べて短縮することができる。この際、平均欠陥数を絞り込みながら解く０−１整数計画問題に解が存在しない場合に、探索範囲を、平均欠陥数が多い側に絞り込むことで、次に実行される０−１整数計画問題で解が得られる可能性を高くすることができる。
【０１３５】
図２４は、メモリ選択装置、メモリ選択方法およびメモリ選択プログラムの別の実施形態のおける図５に示すステップＳ２００（マクロタイプの選択）の処理の一例を示す。図２から図２１に示した実施形態で説明した要素と同一または同様の要素については、同一の符号を付し、これ等については、詳細な説明は省略する。例えば、図２４に示す処理は、メモリ選択装置がメモリ選択プログラムを実行することにより実行される。
【０１３６】
図２４の処理を実行するメモリ選択装置の構成は、図１３に示すメモリ選択装置１００Ｂと同様である。図２４の処理を実行するメモリ選択装置で選択されるメモリと、メモリが搭載されるチップＣＰは、図３と同様であり、マクロタイプ表ＭＴＢＬは、図４と同様である。また、図２４の処理を実行するメモリ選択装置で選択されるメモリが搭載されるチップＣＰの設計手順は、図５と同様である。
【０１３７】
図２４では、図１４のステップＳ２１０ｂ、Ｓ２４０ｂ、Ｓ２５０ｂの代わりに、ステップＳ２１０ｄ、Ｓ２４０ｄ、Ｓ２５０ｄがそれぞれ実行される。ステップＳ２２０ｂ、Ｓ２３０ｂ、Ｓ２６０の処理は、図１４と同様である。
【０１３８】
ステップＳ２１０ｄにおいて、図１４に示すステップＳ２１０ｂと同様に、メモリ選択装置１００は、変数ｘｉｊおよび各種の特性値（例えば、電力Ｐｉｊ、平均欠陥数λｉｊ）を生成する。すなわち、メモリ選択装置は、歩留りの指標を含む「面積／歩留りの最小化」の「目的」を、「歩留り」と相関があり線形表現可能な指標に変更する。ステップＳ２１０ｄで実行される処理の例は、図２５に示される。
【０１３９】
例えば、図３に示すチップＣＰのチップコストは、式（４）に示すように、チップＣＰが搭載される半導体ウェーハのコストをチップＣＰの良品数で割ることで得られる。良品数は、式（５）に示すように、半導体ウェーハの面積をチップＣＰの面積で割った値に歩留りを掛けることで得られる。したがって、式（５）を式（６）の良品数に代入することで、式（６）が得られる。
チップコスト＝ウェーハコスト／良品数  …（４）
良品数＝（ウェーハ面積／チップ面積）×歩留り  …（５）
チップコスト＝（ウェーハコスト／ウェーハ面積）×（チップ面積／歩留り）…（６）
式（６）において、「ウェーハコスト／ウェーハ面積」は、チップＣＰに搭載するメモリに適用するマクロタイプに依存されず、「チップ面積／歩留り」は、チップＣＰに搭載するメモリに適用するマクロタイプに依存して変化する。このため、「チップ面積／歩留り」の最小化を目的としてマクロタイプを求める最適化問題により、チップコストを最小化するマクロタイプを求めることが可能である。
【０１４０】
ステップＳ２４０ｄにおいて、メモリ選択装置は、ステップＳ２３０ｂで得られた平均欠陥数の最小値と最大値とを探索範囲として、黄金分割探索法の２つの分割点（図２７に示すａ、ｂ）を求める。そして、メモリ選択装置は、分割点ａ、ｂでの平均欠陥数のそれぞれを制約条件として２つの０−１整数計画問題（λ）を解き、解で示されるメモリマクロの構成に基づいて、分割点ａ、ｂでの搭載メモリ全体の面積と平均欠陥数とをそれぞれ算出する。メモリ選択装置は、算出した平均欠陥数から歩留りを算出し、分割点ａ、ｂでの「面積／歩留り」を比較する。平均欠陥数の算出と歩留りの算出とは、図１８での説明と同様に、制御部１０の制御に基づいて、歩留り算出部７０、パラメータ算出部４０および指標算出部５０を用いて実行される。
【０１４１】
この後、メモリ選択装置は、「面積／歩留り」の比較結果に応じて探索範囲を狭めながら、２つの分割点で０−１整数計画問題（λ）の解を求める処理を繰り返し、「面積／歩留り」が最小になる平均欠陥数λを求める。ステップＳ２４０ｂの処理の例は、図２６および図２７に示される。
【０１４２】
次に、ステップＳ２５０ｄにおいて、メモリ選択装置は、最小値ｍｉｎと最大値ｍａｘとの中間値を平均欠陥数の制約条件として０−１整数計画問題を解き、チップに搭載するメモリに使用するマクロタイプを求める。ステップＳ２５０ｄで解く０−１整数計画問題は、図１７に示す平均欠陥数の制約条件のλを最小値ｍｉｎと最大値ｍａｘとの中間値（ｍｉｎ＋ｍａｘ）／２に置き換えることにより示される。そして、ステップＳ２６０において、０−１整数計画問題を解くことにより得られた解により示されるマクロタイプ（チップに搭載するメモリに使用するマクロタイプ）が出力される。
【０１４３】
図２４に示す処理の流れは、図２０および図２１に示す処理の流れと同様である。但し、図２０に示す元の最適化問題の「目的」は、図２５に示す「面積／歩留りの最小化」である。また、図２４に示す処理では、図２１に示す二分探索法の手法の代わりに、図２７に示す黄金分割探索法の手法が利用され、分割点ａ、ｂの平均欠陥数を制約条件として、０−１整数計画問題の解が求められる。
【０１４４】
図２５は、図２４に示すステップＳ２００の処理を実行するメモリ選択装置において、「歩留り」を含む「目的」の代わりに、「歩留り」と相関があり線形表現可能な「平均欠陥数」を「目的」にする一例を示す。
【０１４５】
図２５では、図１３に示す制御部１０は、元の最適化問題の「目的」に含まれる「面積／歩留りの最小化」を、「平均欠陥数の最小化」と「平均欠陥数の最大化」を示す「目的関数」に変更する。また、制御部１０は、元の最適化問題の「制約」に含まれる「歩留り」が除外された制約条件を生成する。図２５に示す例では、Ｐ以下の電力が、「制約条件」に設定される。なお、「制約」および「制約条件」は、図７に示す面積および速度を含んでもよい。
【０１４６】
図１５で説明したように、歩留りは、平均欠陥数と相関がある。また、図２７で説明するように、平均欠陥数を制約条件（上限値以下）として面積を最小化した場合のメモリマクロの構成の面積Ａと歩留りＹについて、面積Ａ／歩留りＹと平均欠陥数との関係を示すグラフは下側に突出する単峰関数になる。このため、面積Ａ／歩留りＹの最小値に対応する平均欠陥数は、平均欠陥数の最小値と最大値との間に存在する。
【０１４７】
このため、メモリ選択装置は、図１５で説明したように、平均欠陥数の最小化と最大化を目的関数とする０−１整数計画問題を解き、平均欠陥数の最小値と最大値とを求め、平均欠陥数の最小値と最大値とから、黄金分割探索法での分割点ａ、ｂを求める。この際、メモリ選択装置は、元の最適化問題の「目的」である「面積／歩留りの最小化」を、「面積の最小化」の目的関数に変更する。
【０１４８】
メモリ選択装置は、分割点ａ、ｂを平均欠陥数の制約条件とする０−１整数計画問題を解く処理を繰り返し実行し、面積Ａ／歩留りＹの最小値に対応する平均欠陥数の最終解λを求める。そして、最終解λが求められたときの平均欠陥数の最小値ｍｉｎと最大値ｍａｘの中間値を制約条件とする０−１整数計画問題を解くことで、面積Ａ／歩留りＹを最小にするメモリマクロの構成を求める。
【０１４９】
図２６は、図２４に示すステップＳ２４０ｄの処理の一例を示す。まず、ステップＳ２４１ｄにおいて、メモリ選択装置は、黄金分割探索法の判定に用いる平均欠陥数の分割点ａ、ｂを、平均欠陥数の最小値ｍｉｎと最大値ｍａｘとに基づいて求める。また、メモリ選択装置は、分割点ａ、ｂのそれぞれを平均欠陥数の制約条件（ａ以下およびｂ以下）とし、電力を制約条件とする２つの０−１整数計画問題を定式化部２０に生成させる。
【０１５０】
生成される２つの０−１整数計画問題は、図１７に示す平均欠陥数の制約条件のλを分割点ａまたは分割点ｂに置き換えることにより示される。０−１整数計画問題は、図１３に示す定式化部２０により生成される。
【０１５１】
次に、ステップＳ２４２ｄにおいて、メモリ選択装置は、生成した２つの０−１整数計画問題の解を求め、解で示されるメモリマクロの構成を用いて、分割点ａ、ｂに対応する各搭載メモリの面積を算出し、面積の和である搭載メモリの面積Ａを算出する。メモリ選択装置は、各搭載メモリの面積を用いて、各搭載メモリの平均欠陥数を算出し、平均欠陥数の和を算出することで、搭載メモリ全体の平均欠陥数を求める。例えば、０−１整数計画問題の解は、図１３に示す求解部３０により求められ、平均欠陥数は、図１に示すパラメータ算出部４０および指標算出部５０を用いて算出される。
【０１５２】
メモリ選択装置は、搭載メモリ全体の平均欠陥数から歩留りＡを算出し、分割点ａ、ｂでの「面積Ａ／歩留りＹ」をそれぞれ算出する。例えば、歩留りＹは、図１３で説明したように、０−１整数計画問題の解で示されるマクロタイプを図１３に示す歩留り算出部７０に与えることで求められ、「面積Ａ／歩留りＹ」は、制御部１０により求められる。なお、２回目以降のループでは、分割点ａ、ｂの一方での平均欠陥数は既知であるため、メモリ選択装置は、分割点ａ、ｂの他方の平均欠陥数を制約条件にして０−１整数計画問題を解く。
【０１５３】
次に、ステップＳ２４４ｄにおいて、メモリ選択装置は、分割点ａでの「面積Ａ／歩留りＹ」の値Ａ／Ｙ（ａ）と、分割点ｂでの「面積Ａ／歩留りＹ」の値Ａ／Ｙ（ｂ）とを比較する。値Ａ／Ｙ（ａ）が値Ａ／Ｙ（ｂ）以下の場合、面積Ａ／歩留りＹの最小値に対応する平均欠陥数は、図２７の左側に示すように、最小値ｍｉｎと分割点ｂとの間に存在する。このため、ステップＳ２４５ｄにおいて、メモリ選択装置は、分割点ｂを新たな最大値ｍａｘに設定し、分割点ａを新たな分割点ｂに設定し、式（７）を用いて、新たな分割点ａを求める。ステップＳ２４５ｄの後、処理はステップＳ２４７ｄに移行される。式（７）におけるφは、黄金数であり、式（８）で示される。式（８）において、符号ｓｑｒｔ（５）は、”５”の平方根（正値）を示す。
ａ＝ｍｉｎ＋（ｍａｘ−ｍｉｎ）／（φ＋１）  …（７）
φ＝（１＋ｓｑｒｔ（５））／２  …（８）
一方、値Ａ／Ｙ（ａ）が値Ａ／Ｙ（ｂ）より大きい場合、面積Ａ／歩留りＹの最小値に対応する平均欠陥数は、図２７の中央に示すように、分割点ａと最大値ｍａｘとの間に存在する。このため、ステップＳ２４６ｄにおいて、メモリ選択装置は、分割点ａを新たな最小値ｍｉｎに設定し、分割点ｂを新たな分割点ａに設定し、式（９）を用いて、新たな分割点ｂを求める。ステップＳ２４６ｄの後、処理はステップＳ２４７ｄに移行する。
ｂ＝ｍａｘ＋（ｍａｘ−ｍｉｎ）／（φ＋１）  …（９）
ステップＳ２４７ｄにおいて、メモリ選択装置は、最大値ｍａｘと最小値ｍｉｎとの差が、所定値Ｖ２以下の場合、処理を終了し、最大値ｍａｘと最小値ｍｉｎとの差が、所定値Ｖ２より大きい場合、処理をステップＳ２４２ｄに戻す。すなわち、最大値ｍａｘと最小値ｍｉｎとの差が、所定値Ｖ２以下になるまで、分割点ａまたは分割点ｂを平均欠陥数の制約条件とする０−１整数計画問題の解が繰り返し求められる。所定値Ｖ２は、探索を終了する基準値であり、例えば、ステップＳ２４０ｄを開始する際の初期の最大値ｍａｘと初期の最小値ｍｉｎの差の０．０１％である。
【０１５４】
図２７は、図２６に示すステップＳ２４０ｄにおける探索処理の一例を示す。まず、メモリ選択装置は、図１４のステップＳ２３０ｂで説明したように、平均欠陥数の最小化と最大化を目的関数として、２つの０−１整数計画問題を解き、平均欠陥数の最小値ｍｉｎと最大値ｍａｘとを求める。この後、メモリ選択装置は、黄金分割探索法の分割点ａ、ｂを求め、求めた分割点ａ、ｂを平均欠陥数の制約条件として０−１整数計画問題を解く。
【０１５５】
例えば、面積Ａ／歩留りＹと平均欠陥数との関係を示すグラフは、下側に突出する単峰関数になる。したがって、黄金分割探索法を用いて０−１整数計画問題を繰り返し実行し、突出部分に対応する平均欠陥数を探索することで、面積Ａ／歩留りＹの最小値に対応するマクロタイプを求めることができる。面積Ａ／歩留りＹと平均欠陥数との関係を示すグラフの例は、図２８に示す。
【０１５６】
メモリ選択装置は、分割点ａ、ｂを平均欠陥数の制約条件として２つの０−１整数計画問題を解いた後、解で示されるメモリマクロの構成に基づいて、分割点ａ、ｂでの面積Ａおよび平均欠陥数をそれぞれ求め、平均欠陥数から歩留りＹをそれぞれ求める。メモリ選択装置は、分割点ａ、ｂのそれぞれでの面積Ａと歩留りＹとの比Ａ／Ｙ（ａ）、Ａ／Ｙ（ｂ）を比較し、黄金分割探索法の手法を用いて、探索範囲を絞り込む。探索範囲を絞り込む処理は、図２６に示すステップＳ２４５ｄまたはステップＳ２４６ｄにより実行される。
【０１５７】
メモリ選択装置は、絞り込んだ探索範囲において、新たな分割点ａ、ｂを設定する。この後、メモリ選択装置は、分割点ａ、ｂの平均欠陥数を制約条件とする０−１整数計画問題を解く処理と、搭載メモリの面積Ａと歩留りＹとの比Ａ／Ｙ（ａ）、Ａ／Ｙ（ｂ）を比較する処理と、比較結果に基づき探索範囲を絞り込む処理を繰り返し実行する。そして、メモリ選択装置は、平均欠陥数の最終解λを得た後、最小値ｍｉｎと最大値ｍａｘとの中間値を平均欠陥数の制約条件として０−１整数計画問題を解き、チップに搭載するメモリに使用するマクロタイプを求める。
【０１５８】
図２８は、図２７に示す面積Ａ／歩留りＹと平均欠陥数との関係の一例を示す。例えば、平均欠陥数が増加するのに伴い、歩留りＹおよび面積Ａは単調に減少し、歩留りの減少率は徐々に大きくなり、面積Ａの減少率は、徐々に小さくなる。これにより、面積Ａ／歩留りＹと平均欠陥数との関係を示すグラフは下側に突出する単峰関数になる。
【０１５９】
以上、図２４から図２８に示す実施形態においても、図１に示す実施形態と同様に、半導体装置にメモリを搭載する搭載条件に歩留りの指標が含まれる場合にも、０−１整数計画問題により、搭載条件を満たすメモリマクロの構成を得ることができる。例えば、図２４から図２８に示す実施形態では、メモリ選択装置は、元の最適化問題に含まれる定式化が困難な「面積／歩留りの最小化」の目的を、定式化が可能な「平均欠陥数の最小化」を示す目的関数と、「平均欠陥数の最大化」を示す目的関数に変更する。そして、メモリ選択装置は、黄金分割探索法による分割点ａ、ｂでの平均欠陥数に対応する面積／歩留りの値の比較に基づいて、面積／歩留りを最小化するメモリマクロの構成を求める。これにより、マクロタイプを選択するための０−１整数計画問題を生成することができ、０−１整数計画問題を解くことにより搭載メモリに適用するマクロタイプを決定することができる。
【０１６０】
図２９は、メモリ選択装置、メモリ選択方法およびメモリ選択プログラムの別の実施形態のおける図５に示すステップＳ２００（マクロタイプの選択）の処理の一例を示す。図２４から図２８に示した実施形態で説明した要素と同一または同様の要素については、同一の符号を付し、これ等については、詳細な説明は省略する。例えば、図２９に示す処理は、メモリ選択装置がメモリ選択プログラムを実行することにより実行される。
【０１６１】
図２９の処理を実行するメモリ選択装置の構成は、図１３に示すメモリ選択装置１００Ｂと同様である。図２９の処理を実行するメモリ選択装置で選択されるメモリと、メモリが搭載されるチップＣＰは、図３と同様であり、マクロタイプ表ＭＴＢＬは、図４と同様である。また、図２９の処理を実行するメモリ選択装置で選択されるメモリが搭載されるチップＣＰの設計手順は、図５と同様である。
【０１６２】
図２９では、図２４のステップＳ２１０ｄ、Ｓ２２０ｂ、Ｓ２３０ｂの代わりにステップＳ２１０ｅが実行され、図２４のステップＳ２４０ｄの代わりにステップＳ２４０ｅが実行される。ステップＳ２５０ｄ、Ｓ２６０の処理は、図２４と同様である。
【０１６３】
ステップＳ２１０ｅでは、図２２に示すステップＳ２１０ｃと同様に、メモリ選択装置は、平均欠陥数の最小値ｍｉｎと最大値ｍａｘを求める。
【０１６４】
ステップＳ２４０ｅにおいて、メモリ選択装置は、図２２に示すステップＳ２４０ｃと同様に、図２４に示すステップＳ２４０ｄの処理に加えて、解が存在しない場合に、分割点ａ、ｂでの面積Ａ／歩留りＹの比較を抑止する。そして、メモリ選択装置は、黄金分割探索法による探索範囲を、０−１整数計画問題で解が存在する確率が高い側に絞り込む。例えば、新たな探索範囲は、分割点ａ（図２７）を最小値に設定することで絞り込まれる。ステップＳ２４０ｅの処理の例は、図３０に示される。
【０１６５】
図３０は、図２９に示すステップＳ２４０ｅの処理の一例を示す。図２６と同一または同様の処理については、詳細な説明は省略する。
【０１６６】
図３０では、ステップＳ２４２ｄとステップＳ２４４ｄの間に、ステップＳ２４３ｅが追加される。ステップＳ２４３ｅにおいて、図１３に示す制御部１０は、ステップＳ２４２ｄで実行した０−１整数計画問題において、「平均欠陥数≦ａ」を制約条件とする０−１整数計画問題の解が存在するかを判定する。そして、制御部１０は、解が存在する場合、処理をステップＳ２４４ｄに移行し、解が存在しない場合、処理をステップＳ２４６ｄに移行する。
【０１６７】
図２９に示すステップＳ２１０ｅでは、各マクロタイプのおおよその面積を用いて、平均欠陥数の初期の最小値ｍｉｎと最大値ｍａｘとが求められる。このため、ステップＳ２４２ｄで０−１整数計画問題を解く場合に、解が存在しない可能性がある。一方、平均欠陥数が分割点ｂに比べて少ない分割点ａの歩留りは、分割点ｂの歩留りに比べて高いため、０−１整数計画問題で解が得られる条件は、分割点ａのほうが分割点ｂより厳しい。換言すれば、条件の厳しい分割点ａで解が得られれば、分割点ｂでも解が得られる。
【０１６８】
したがって、ステップＳ２４３ｅにおいて、「平均欠陥数≦ａ」を制約条件とする０−１整数計画問題の解が存在する場合、ステップＳ２４４ｄでの判定が可能である。一方、ステップＳ２４３ｅにおいて、「平均欠陥数≦ａ」を制約条件とする０−１整数計画問題の解が存在しない場合、ステップＳ２４６ｄにおいて、分割点ａを最小値ｍｉｎに設定する。すなわち、黄金分割探索法による探索範囲は、平均欠陥数が多い側（歩留りが低い側）に絞り込まれる。これにより、０−１整数計画問題で解が得られる条件を緩くすることができ、ステップＳ２４２ｄによる次の０−１整数計画問題の解が得られる可能性を高くすることができる。
【０１６９】
以上、図２９から図３０に示す実施形態においても、図１から図３０に示す実施形態と同様に、半導体装置にメモリを搭載する搭載条件に歩留りの指標が含まれる場合にも、０−１整数計画問題により、搭載条件を満たすメモリマクロの構成を得ることができる。また、図２２および図２３に示す実施形態と同様に、０−１整数計画問題を解くことなく平均欠陥数の最小値と最大値とを求めることができ、搭載メモリのマクロタイプを求める処理時間を、図２４の処理に比べて短縮することができる。この際、「平均欠陥数≦ａ」を制約条件とする０−１整数計画問題の解が存在しない場合、面積／歩留りの比較をすることなく、分割点ａを最小値ｍｉｎに設定することで、次に実行される０−１整数計画問題で解が得られる可能性を高くすることができる。
【０１７０】
図３１は、歩留りと相関があり線形表現が可能な指標の別の例を示す。例えば、図４に示すマクロタイプ表ＭＴＢＬにおいて、１つの冗長セルブロックを有するメモリのマクロタイプでは、メモリの容量（ワード数ｗとビット数ｂの積）が大きいほど、不良を救済可能な領域は大きくなるため、歩留りは高くなる。このため、メモリの容量は、歩留りと相関がある。また、メモリの容量は、線形表現が可能である。
【０１７１】
したがって、マクロタイプ表６、ＭＴＢＬ（図１、図４）が、「１冗長セルブロック」または「２冗長セルブロック」のいずれかを含む場合、メモリ容量Ｍｉｊを平均欠陥数λｉｊの代わりに使用して、図１から図３０に示す実施形態を実現可能である。メモリ容量Ｍｉｊにおける”ｉ”、”ｊ”の意味は、変数ｘｉｊの”ｉ”、”ｊ”の意味と同じである。変数ｘｉｊは、図９に示す変数ｘｉｊと同じである。
【０１７２】
例えば、図１から図１２に示す実施形態では、「冗長セルブロックを有するメモリの容量Ｍｉｊの総和」の最大化を目的関数として０−１整数計画問題を解くことで、搭載メモリに使用するマクロタイプを求めることができる。
【０１７３】
また、図１３から図３０に示す実施形態では、「冗長セルブロックを有するメモリの容量Ｍｉｊの総和」の最小化と最大化とを目的関数として２つの０−１整数計画問題を解くことで、最大値ｍｉｎと最小値ｍａｘとを求めることができる。この後、「冗長セルブロックを有するメモリの容量Ｍｉｊの総和」を制約条件にして、二分探索法または黄金分割探索法を用いて０−１整数計画問題を繰り返し解くことで、搭載メモリに使用するマクロタイプを求めることができる。
【０１７４】
図３２は、歩留りと相関があり線形表現が可能な指標の別の例を示す。図４に示すマクロタイプ表ＭＴＢＬにおいて、メモリの容量（ワード数ｗとビット数ｂの積）と、メモリの面積とは比例する。メモリの容量は、線形表現が可能である。このため、図３１に示す指標と同様に、１つの冗長セルブロックを有するメモリのマクロタイプでは、メモリの面積が大きいほど、歩留りは高くなり、メモリの面積は、歩留りと相関がある。
【０１７５】
したがって、図３１と同様に、マクロタイプ表６、ＭＴＢＬが、「１冗長セルブロック」または「２冗長セルブロック」のいずれかを含む場合、メモリの面積Ｒｉｊを平均欠陥数λｉｊの代わりに使用して、図１から図３０に示す実施形態を実現可能である。図３２において、変数ｘｉｊは、図８に示すステップＳ２１１で生成される変数ｘｉｊと同じである。
【０１７６】
メモリの面積Ｒｉｊは、図９に示す面積Ａｉｊを使用して求めることができる。また、メモリの面積Ｒｉｊは、メモリセルの面積ａｊ（セル面積）に基づいて求めてもよい。面積ａｊは、各メモリにおいて、ｊ番目のマクロタイプにおける１ビットを記憶するメモリセルの面積である。この場合、メモリの面積Ｒｉｊは、ワード数ｗとビット数ｂとセル面積ａｊの積により求められる。
【０１７７】
例えば、図１から図１２に示す実施形態では、「冗長セルブロックを有するメモリの面積Ｒｉｊの総和」の最大化を目的関数として０−１整数計画問題を解くことで、搭載メモリに使用するマクロタイプを求めることができる。
【０１７８】
また、図１３から図３０に示す実施形態では、「冗長セルブロックを有するメモリの面積Ｒｉｊの総和」の最小化と最大化とを目的関数として２つの０−１整数計画問題を解くことで、最大値ｍｉｎと最小値ｍａｘとを求めることができる。この後、「冗長セルブロックを有するメモリの面積Ｒｉｊの総和」を制約条件にして、二分探索法または黄金分割探索法を用いて０−１整数計画問題を繰り返し解くことで、搭載メモリに使用するマクロタイプを求めることができる。
【０１７９】
図３３は、歩留りと相関があり線形表現が可能な指標の別の例を示す。図４に示すマクロタイプ表ＭＴＢＬにおいて、図３２で説明したように、歩留りは、メモリの面積が大きいほど高くなる。さらに、歩留りは、メモリに含まれる冗長セルブロックの数が多いほど高くなる。このため、メモリの面積と冗長セルブロックの数との積は、歩留りと相関がある。また、メモリの面積と冗長セルブロックの数との積は、線形表現が可能である。
【０１８０】
したがって、メモリの面積Ｒｉｊと冗長セルブロックの数ｒｉｊの積を平均欠陥数λｉｊの代わりに使用して、図１から図３０示す実施形態を実現可能である。図３３において、メモリの面積Ｒｉｊは、図３２と同様に求められる。変数ｘｉｊは、図８に示すステップＳ２１１で生成される変数ｘｉｊと同じである。
【０１８１】
例えば、図１から図１２に示す実施形態では、「メモリの面積Ｒｉｊと冗長セルブロックの数ｒｉｊの積の総和」の最大化を目的関数として０−１整数計画問題を解くことで、搭載メモリに使用するマクロタイプを求めることができる。また、図１３から図３０に示す実施形態では、「メモリの面積Ｒｉｊと冗長セルブロックの数ｒｉｊの積の総和」の最小化と最大化とを目的関数として２つの０−１整数計画問題を解くことで、最大値ｍｉｎと最小値ｍａｘとを求めることができる。この後、「メモリの面積Ｒｉｊと冗長セルブロックの数ｒｉｊの積の総和」を制約条件にして、二分探索法または黄金分割探索法を用いて０−１整数計画問題を繰り返し解くことで、搭載メモリに使用するマクロタイプを求めることができる。
【０１８２】
図３４は、図１から図３０で説明したメモリ選択装置を実現する情報処理装置の一例を示す。図３４に示す情報処理装置ＩＰＥは、マザーボードＭＢおよび光学ドライブ装置ＯＤＤ、ハードディスク装置ＨＤＤ、入力装置ＩＮＤおよび出力装置ＯＵＴＤ等を有する。マザーボードＭＢ上には、ＣＰＵ、記憶装置ＭＥＭ、光学ドライブコントローラＯＤＣ、ハードディスクコントローラＨＤＣ、入力インタフェースＩＮＩＦ、出力インタフェースＯＵＴＩＦおよびネットワークインタフェースＮＷＩＦ等が搭載される。ＣＰＵ、記憶装置ＭＥＭ、光学ドライブコントローラＯＤＣ、ハードディスクコントローラＨＤＣ、入力インタフェースＩＮＩＦ、出力インタフェースＯＵＴＩＦおよびネットワークインタフェースＮＷＩＦは、システムバスＳＢＵＳに接続される。なお、ＣＰＵ、記憶装置ＭＥＭ、光学ドライブコントローラＯＤＣ、ハードディスクコントローラＨＤＣ、入力インタフェースＩＮＩＦ、出力インタフェースＯＵＴＩＦおよびネットワークインタフェースＮＷＩＦは、共通の半導体チップに搭載されてもよい。
【０１８３】
ＣＰＵは、記憶装置ＭＥＭに格納されたメモリ選択プログラムを実行することで、図１から図３０で説明した動作を実現する。例えば、記憶装置ＭＥＭは、ＲＡＭ（Random Access Memory）であり、メモリ選択プログラムを格納する領域や、ワークデータ（変数ｘｉｊおよび目的関数、制約条件等）を格納する領域が割り当てられる。
【０１８４】
光学ドライブコントローラＯＤＣは、光学ドライブ装置ＯＤＤに接続され、光学ドライブ装置ＯＤＤに装着される記録媒体ＲＭにアクセス可能である。記録媒体ＲＭは、ＣＤ（Compact Disc：登録商標）またはＤＶＤ（Digital Versatile Disc：登録商標）等であり、メモリ選択プログラムが格納されている。記録媒体ＲＭには、メモリ選択プログラムで使用するデータ等が格納されてもよい。メモリ選択プログラムおよびメモリ選択プログラムで使用するデータ等は、光学ドライブ装置ＯＤＤを介して記録媒体ＲＭからハードディスク装置ＨＤＤにダウンロードされ、記憶装置ＭＥＭに転送される。なお、ＣＰＵは、ハードディスク装置ＨＤＤを介することなく、記録媒体ＲＭから記憶装置ＭＥＭにメモリ選択プログラムをダウンロードしてもよい。
【０１８５】
ハードディスクコントローラＨＤＣは、ハードディスク装置ＨＤＤに接続されている。例えば、情報処理装置ＩＰＥの電源が起動されたときに、ＣＰＵは、ハードディスク装置ＨＤＤに格納されているメモリ選択プログラムをメモリＭＥＭに転送し、メモリＭＥＭに転送されたプログラムを実行することで動作する。
【０１８６】
入力インタフェースＩＮＩＦは、キーボードやマウス等の入力デバイスＩＮＤに接続される。出力インタフェースＯＵＴＩＦは、ディスプレイやプリンタ等の出力デバイスＯＵＴＤに接続される。ネットワークインタフェースＮＷＩＦは、ネットワークＮＷに接続される。ＣＰＵは、ネットワークＮＷ上の装置に格納されたメモリ選択プログラムを、ネットワークＮＷを介してハードディスク装置ＨＤＤやメモリＭＥＭにダウンロードしてもよい。
【０１８７】
以上の実施形態において説明した発明を整理して、付記として開示する。
（付記１）
半導体装置に搭載する複数のメモリを示す搭載メモリ情報と、前記複数のメモリを前記半導体装置に搭載する場合の搭載条件に含まれる前記複数のメモリの特性の指標および前記複数のメモリの歩留りの指標とを入力し、前記複数のメモリの各々に適用する複数種のメモリマクロを示す複数のマクロタイプのいずれかを前記複数のメモリ毎に選択するメモリ選択装置であって、
前記複数のマクロタイプの各々の選択または非選択を示す変数が格納される変数領域を、前記複数のメモリと前記複数のマクロタイプとの組み合わせ毎に記憶部に割り当てる変数生成部と、
前記特性の指標に対応する第１の特性値を、前記複数のメモリと前記複数のマクロタイプとの組み合わせ毎に算出する第１の算出部と、
前記歩留りの指標と相関があり線形表現可能な線形指標に対応する第２の特性値を、前記複数のメモリと前記複数のマクロタイプとの組み合わせ毎に算出する第２の算出部と、
前記変数領域に格納される前記変数と前記第１の特性値と前記第２の特性値とを用いて、目的関数および制約条件を生成することで０−１整数計画問題を生成する問題生成部と、
前記０−１整数計画問題の解を求め、求めた解に基づいて前記複数のメモリ毎にマクロタイプを選択する制御部と
を備えることを特徴とするメモリ選択装置。
（付記２）
前記第２の算出部は、前記搭載条件に含まれる「歩留りの最大化」を目的とする前記歩留りの指標に基づいて、前記複数のメモリのそれぞれに存在する欠陥数を、前記第２の特性値として算出し、
前記問題生成部は、前記変数と前記第２の特性値との積の和を用いて欠陥数の最小化を目的とする目的関数を生成するとともに、前記変数と前記第１の特性値との積の和を用いて制約条件を生成すること
を特徴とする付記１記載のメモリ選択装置。
（付記３）
前記複数のメモリに存在する欠陥数に基づいて、前記複数のメモリの歩留りを算出する歩留り算出部を備え、
前記第２の算出部は、前記搭載条件に含まれる「歩留りが所定値以上」を制約とする前記歩留りの指標に基づいて、前記複数のメモリのそれぞれの欠陥数を前記第２の特性値として算出し、
前記問題生成部は、前記変数と前記第２の特性値との積の和を用いて欠陥数の最小化を目的とする目的関数を生成するとともに、前記変数と前記第１の特性値との積の和を用いて制約条件を生成することで第１の０−１整数計画問題を生成し、前記変数と前記第２の特性値との積の和を用いて欠陥数の最大化を目的とする目的関数を生成するとともに、前記変数と前記第１の特性値との積の和を用いて制約条件を生成することで第２の０−１整数計画問題を生成し、
前記制御部が実行する前記複数のメモリ毎にマクロタイプを選択する処理は、
前記第１の０−１整数計画問題の解と、前記第２の０−１整数計画問題の解とを求める第１の処理と、
求めた解に基づいて、前記複数のメモリの欠陥数の最小値と最大値とを前記第２の算出部に算出させる第２の処理と、
欠陥数の最小値と最大値との間の欠陥数に対応する歩留りを前記歩留り算出部に求めさせ、求めた歩留りと前記搭載条件に含まれる歩留りの前記所定値との比較に基づいて、歩留りが前記所定値に近づく側に新たな最小値と最大値とを設定する処理を、欠陥数の最大値と最小値の差が閾値より小さくなるまで繰り返す第３の処理と、
欠陥数の最大値と最小値の差が所定の閾値より小さくなった場合、最終の最小値と最大値との間の欠陥数に対応するマクロタイプを前記複数のメモリ毎に選択する第４の処理と
を含むことを特徴とする付記１記載のメモリ選択装置。
（付記４）
前記第３の処理は、
欠陥数の最小値と最大値との間の欠陥数を制約条件にし、前記搭載条件に含まれる目的を示す前記特性の指標を目的関数にすることで第３の０−１整数計画問題を前記問題生成部に生成させる処理と、
前記第３の０−１整数計画問題の解を求める処理と、
求めた解に基づいて前記複数のメモリの欠陥数を前記第２の算出部に求めさせる処理と、
求めた欠陥数に対応する歩留りを前記歩留り算出部に求めさせる処理と
を含むことを特徴とする付記３記載のメモリ選択装置。
（付記５）
前記問題生成部は、前記第１の０−１整数計画問題および前記第２の０−１整数計画問題を生成せず、
前記制御部は、
前記第１の処理と前記第２の処理の代わりに、歩留りが他のマクロタイプの歩留まりより大きいマクロタイプを前記複数のメモリのそれぞれに適用した場合の前記複数のメモリの面積を用いて、前記複数のメモリの欠陥数の最小値を求め、歩留りが他のマクロタイプの歩留まりより小さいマクロタイプを前記複数のメモリのそれぞれに適用した場合の前記複数のメモリの面積を用いて、前記複数のメモリの欠陥数の最大値を求め、
前記第３の処理において、前記第３の０−１整数計画問題の解が存在しない場合、欠陥数の最小値を最大値側に変更すること
を特徴とする付記４記載のメモリ選択装置。
（付記６）
前記複数のメモリに存在する欠陥数に基づいて、前記複数のメモリの歩留りを算出する歩留り算出部を備え、
前記第２の算出部は、前記搭載条件に含まれる「面積／歩留りの値の最小化」を目的とする前記歩留りの指標に基づいて、前記複数のメモリのそれぞれの欠陥数を前記第２の特性値として算出し、
前記問題生成部は、前記変数と前記第２の特性値との積の和を用いて欠陥数の最小化を目的とする目的関数を生成するとともに、前記変数と前記第１の特性値との積の和を用いて制約条件を生成することで第１の０−１整数計画問題を生成し、前記変数と前記第２の特性値との積の和を用いて欠陥数の最大化を目的とする目的関数を生成するとともに、前記変数と前記第１の特性値との積の和を用いて制約条件を生成することで第２の０−１整数計画問題を生成し、
前記制御部が実行する前記複数のメモリ毎にマクロタイプを選択する処理は、
前記第１の０−１整数計画問題の解と、前記第２の０−１整数計画問題の解とを求める第１の処理と、
求めた解に基づいて、前記複数のメモリの欠陥数の最小値と最大値とを前記第２の算出部に算出させる第２の処理と、
欠陥数の最小値と最大値との間を探索範囲にして、黄金分割探索法による第１の分割点での第１の欠陥数に対応する第１の面積／歩留りの値と、黄金分割探索法による第２の分割点での第２の欠陥数に対応する第２の面積／歩留りの値とを求め、前記第１の面積／歩留りの値と前記第２の面積／歩留りの値との比較に基づいて、探索範囲を狭める処理を、探索範囲が所定の範囲以下になるまで繰り返す第３の処理と、
探索範囲が前記所定の範囲以下になった場合、探索範囲の間の欠陥数を制約条件にし、前記搭載条件に含まれる目的を示す前記特性の指標を目的関数にすることで０−１整数計画問題を生成し、生成した０−１整数計画問題の解を求め、求めた解に基づいて前記複数のメモリ毎にマクロタイプを選択する第４の処理と
を含むことを特徴とする付記１記載のメモリ選択装置。
（付記７）
前記第３の処理は、
前記第１の分割点における第１の欠陥数と、前記第１の分割点より大きい前記第２の分割点における第２の欠陥数とを求める処理と、
前記第１の欠陥数を制約条件にし、前記搭載条件に含まれる目的を示す前記特性の指標を目的関数にすることで第３の０−１整数計画問題を前記問題生成部に生成させ、前記第２の欠陥数を制約条件にし、前記搭載条件に含まれる目的を示す前記特性の指標を目的関数にすることで第４の０−１整数計画問題を前記問題生成部に生成させる処理と、
前記第３の０−１整数計画問題の解である第１の解と前記第４の０−１整数計画問題の解である第２の解とを求める処理と、
前記第１の解に基づいて前記複数のメモリの欠陥数である第３の欠陥数を前記第２の算出部に求めさせ、前記第２の解に基づいて前記複数のメモリの欠陥数である第４の欠陥数を前記第２の算出部に求めさせる処理と、
前記第３の欠陥数に対応する歩留りと、前記第４の欠陥数に対応する歩留りとを前記歩留まり算出部に求めさせる処理と
を含むことを特徴とする付記６記載のメモリ選択装置。
（付記８）
前記問題生成部は、前記第１の０−１整数計画問題および前記第２の０−１整数計画問題を生成せず、
前記制御部は、
前記第１の処理と前記第２の処理の代わりに、歩留りが他のマクロタイプの歩留まりより大きいマクロタイプを前記複数のメモリのそれぞれに適用した場合の前記複数のメモリの面積を用いて、前記複数のメモリの欠陥数の最小値を求め、歩留りが他のマクロタイプの歩留まりより小さいマクロタイプを前記複数のメモリのそれぞれに適用した場合の前記複数のメモリの面積を用いて、前記複数のメモリの欠陥数の最大値を求め、
前記第１の欠陥数を制約条件とする前記第３の０−１整数計画問題の解が存在しない場合、前記第１の欠陥数に対応する前記第１の分割点を新たな最小値に設定すること
を特徴とする付記７記載のメモリ選択装置。
（付記９）
前記複数のメモリのそれぞれに適用可能なマクロタイプは、不良を救済する少なくとも１つの冗長回路ブロックを含む第１のマクロタイプと、前記冗長回路ブロックを含まない第２のマクロタイプのいずれかであり、
前記第２の算出部は、前記第１のマクロタイプの欠陥数を、前記第２のマクロタイプの欠陥数に比べて少なく算出すること
を特徴とする付記３ないし付記８のいずれか１項記載のメモリ選択装置。
（付記１０）
前記第２の特性値は、前記複数のメモリのそれぞれに存在する欠陥数、前記第１のマクロタイプのメモリ容量、前記第１のマクロタイプの面積、および前記第１のマクロタイプの面積と前記冗長回路ブロックの数との積のいずれかであること
を特徴とする付記９記載のメモリ選択装置。
（付記１１）
前記制御部は、０−１整数計画問題の解に基づいて欠陥数を求める場合、
前記第１の算出部に、０−１整数計画問題の解に示される前記複数のメモリに適用するマクロタイプに基づいて、マクロタイプにより示される前記複数のメモリの各々の面積を前記第１の特性値として算出させ、
前記第２の算出部に、前記第１の算出部が算出した面積に基づいて、前記複数のメモリのそれぞれに存在する欠陥数を前記第２の特性値として算出させること
を特徴とする付記１ないし付記１０のいずれか１項記載のメモリ選択装置。
（付記１２）
前記第１の特性値は、前記複数のメモリの各々の面積、前記複数のメモリの各々の電力、および前記複数のメモリの各々の速度の少なくともいずれかを含むこと
を特徴とする付記１ないし付記１０のいずれか１項記載のメモリ選択装置。
（付記１３）
半導体装置に搭載する複数のメモリを示す搭載メモリ情報と、前記複数のメモリを前記半導体装置に搭載する場合の搭載条件に含まれる前記複数のメモリの特性の指標および前記複数のメモリの歩留りの指標とを入力し、前記複数のメモリの各々に適用する複数種のメモリマクロを示す複数のマクロタイプのいずれかを前記複数のメモリ毎に選択するメモリ選択方法であって、
前記複数のマクロタイプの各々の選択または非選択を示す変数が格納される変数領域を、前記複数のメモリと前記複数のマクロタイプとの組み合わせ毎に記憶部に割り当て、
前記特性の指標に対応する第１の特性値を、前記複数のメモリと前記複数のマクロタイプとの組み合わせ毎に算出し、
前記歩留りの指標と相関があり線形表現可能な線形指標に対応する第２の特性値を、前記複数のメモリと前記複数のマクロタイプとの組み合わせ毎に算出し、
前記変数領域に格納される前記変数と前記第１の特性値と前記第２の特性値とを用いて、目的関数および制約条件を生成することで０−１整数計画問題を生成し、
前記０−１整数計画問題の解を求め、求めた解に基づいて前記複数のメモリ毎にマクロタイプを選択すること
を特徴とするメモリ選択方法。
（付記１４）
半導体装置に搭載する複数のメモリを示す搭載メモリ情報と、前記複数のメモリを前記半導体装置に搭載する場合の搭載条件に含まれる前記複数のメモリの特性の指標および前記複数のメモリの歩留りの指標とを入力し、前記複数のメモリの各々に適用する複数種のメモリマクロを示す複数のマクロタイプのいずれかを前記複数のメモリ毎に選択する処理をコンピュータに実行させるメモリ選択プログラムであって、
前記複数のマクロタイプの各々の選択または非選択を示す変数が格納される変数領域を、前記複数のメモリと前記複数のマクロタイプとの組み合わせ毎に記憶部に割り当て、
前記特性の指標に対応する第１の特性値を、前記複数のメモリと前記複数のマクロタイプとの組み合わせ毎に算出し、
前記歩留りの指標と相関があり線形表現可能な線形指標に対応する第２の特性値を、前記複数のメモリと前記複数のマクロタイプとの組み合わせ毎に算出し、
前記変数領域に格納される前記変数と前記第１の特性値と前記第２の特性値とを用いて、目的関数および制約条件を生成することで０−１整数計画問題を生成し、
前記０−１整数計画問題の解を求め、求めた解に基づいて前記複数のメモリ毎にマクロタイプを選択すること
を特徴とするメモリ選択プログラム。
（付記１５）
半導体装置に搭載する複数のメモリを示す搭載メモリ情報と、前記複数のメモリを前記半導体装置に搭載する場合の搭載条件に含まれる前記複数のメモリの特性の指標および前記複数のメモリの歩留りの指標とを入力し、前記複数のメモリの各々に適用する複数種のメモリマクロを示す複数のマクロタイプのいずれかを前記複数のメモリ毎に選択する処理を実行させるメモリ選択プログラムを記録したコンピュータが読み取り可能な記録媒体であって、
前記複数のマクロタイプの各々の選択または非選択を示す変数が格納される変数領域を、前記複数のメモリと前記複数のマクロタイプとの組み合わせ毎に記憶部に割り当て、
前記特性の指標に対応する第１の特性値を、前記複数のメモリと前記複数のマクロタイプとの組み合わせ毎に算出し、
前記歩留りの指標と相関があり線形表現可能な線形指標に対応する第２の特性値を、前記複数のメモリと前記複数のマクロタイプとの組み合わせ毎に算出し、
前記変数領域に格納される前記変数と前記第１の特性値と前記第２の特性値とを用いて、目的関数および制約条件を生成することで０−１整数計画問題を生成し、
前記０−１整数計画問題の解を求め、求めた解に基づいて前記複数のメモリ毎にマクロタイプを選択する
処理を実行させるメモリ選択プログラムを記録した記録媒体。
【０１８８】
以上の詳細な説明により、実施形態の特徴点および利点は明らかになるであろう。これは、特許請求の範囲がその精神および権利範囲を逸脱しない範囲で前述のような実施形態の特徴点および利点にまで及ぶことを意図するものである。また、当該技術分野において通常の知識を有する者であれば、あらゆる改良および変更に容易に想到できるはずである。したがって、発明性を有する実施形態の範囲を前述したものに限定する意図はなく、実施形態に開示された範囲に含まれる適当な改良物および均等物に拠ることも可能である。
【符号の説明】
【０１８９】
１…変数生成部；１ａ…記憶部；２…第１の算出部；３…第２の算出部；４…問題生成部；５…制御部；６…マクロタイプ表；７…求解部；１０…制御部；２０…定式化部；３０…求解部；４０…パラメータ算出部；５０…指標算出部；６０…記憶部；７０…歩留り算出部；１００、１００Ａ、１００Ｂ…メモリ選択装置；ＩＯ１−ＩＯ２…入出力回路；ＣＰ…チップ；Ｍ１−Ｍ１７…メモリ；ＭＴＢＬ…マクロタイプ表；ＰＥＲ１−ＰＥＲ５…周辺回路
【図１】
2016131053.tif 000003
【図２】
2016131053.tif 000004
【図３】
2016131053.tif 000005
【図４】
2016131053.tif 000006
【図５】
2016131053.tif 000007
【図６】
2016131053.tif 000008
【図７】
2016131053.tif 000009
【図８】
2016131053.tif 000010
【図９】
2016131053.tif 000011
【図１０】
2016131053.tif 000012
【図１１】
2016131053.tif 000013
【図１２】
2016131053.tif 000014
【図１３】
2016131053.tif 000015
【図１４】
2016131053.tif 000016
【図１５】
2016131053.tif 000017
【図１６】
2016131053.tif 000018
【図１７】
2016131053.tif 000019
【図１８】
2016131053.tif 000020
【図１９】
2016131053.tif 000021
【図２０】
2016131053.tif 000022
【図２１】
2016131053.tif 000023
【図２２】
2016131053.tif 000024
【図２３】
2016131053.tif 000025
【図２４】
2016131053.tif 000026
【図２５】
2016131053.tif 000027
【図２６】
2016131053.tif 000028
【図２７】
2016131053.tif 000029
【図２８】
2016131053.tif 000030
【図２９】
2016131053.tif 000031
【図３０】
2016131053.tif 000032
【図３１】
2016131053.tif 000033
【図３２】
2016131053.tif 000034
【図３３】
2016131053.tif 000035
【図３４】
2016131053.tif 000036