(57)【要約】【課題】配置領域の形状を考慮せずに決められたテンプレートに基づき複数のユニット抵抗を作成すると、作成されたユニット抵抗の高さや幅が配置領域を超える場合があり、配置領域の面積が無駄になる。【解決手段】コンピュータにより、抵抗素子を直列接続または並列接続した抵抗ユニットを選択し、抵抗ユニットの抵抗素子を横方向および縦方向に各々揃えた横向き配置候補および縦向き配置候補を作成し、抵抗ユニットの配置領域に配置可能な横向き配置候補または縦向き配置候補のうち、配置領域に対する面積比率が大きいいずれか一方を選択して配置抵抗として配置する。【選択図】図１
2013182578.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータによる半導体装置の自動レイアウト設計方法であって、
抵抗素子を直列接続または並列接続した抵抗ユニットを選択し、
前記抵抗ユニットの前記抵抗素子を横方向および縦方向に各々揃えた横向き配置候補および縦向き配置候補を作成し、
前記抵抗ユニットの配置領域に配置可能な前記横向き配置候補または前記縦向き配置候補のうち、前記配置領域に対する面積比率が大きいいずれか一方を選択して配置抵抗として配置する、半導体装置の自動レイアウト設計方法。
【請求項２】
前記配置抵抗における前記抵抗素子の端子の電位および前記配置領域に隣接する周辺素子データに基づき、前記抵抗ユニットと接続すべき前記周辺素子データの端子の電位を検出し、
前記周辺素子データの端子の電位に基づき前記配置抵抗の配置開始座標を決定する、請求項１記載の半導体装置の自動レイアウト設計方法。
【請求項３】
前記周辺素子データの端子の電位および前記配置抵抗における前記抵抗素子の端子の電位が同電位である場合、前記周辺素子データの端子と前記抵抗素子の端子が近づくように前記配置抵抗を上下または左右にミラー反転させる、請求項２記載の半導体装置の自動レイアウト設計方法。
【請求項４】
前記抵抗ユニットは前記抵抗素子の配置順番および電位番号に基づき生成される、請求項１記載の半導体装置の自動レイアウト設計方法。
【請求項５】
前記配置領域から前記配置抵抗の領域を削除して新たな抵抗ユニットの配置領域を設定し、
前記新たな抵抗ユニットの配置領域に新たな配置抵抗を配置する、請求項１記載の半導体装置の自動レイアウト設計方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は半導体装置の自動レイアウト設計方法に関し、たとえば、抵抗を有する半導体装置の自動レイアウト設計方法に関する。
【背景技術】
【０００２】
近年、民生用機器を用途の一例とする、アナログデジタル混在半導体装置の微細加工技術も進化してきている。製造プロセスの微細化に伴いトランジスタで構成されるデジタル回路部の面積は縮小しているが、アナログ回路部の面積はデジタル回路部の面積に比べて大きな領域を占めている。これは、アナログデジタル混在半導体装置の低消費電力化を実現するため、搭載される抵抗の値が大きく設定されるためである。
【０００３】
製造上のばらつきに対する抵抗値の変動を抑えるため、アナログ回路部の抵抗は、幅と長さを固定した棒状の基本抵抗（以下、抵抗素子と記載する。）を複数本、直列接続若しくは並列接続に組み合わせて配置した構成をとっている。この結果、アナログデジタル混在半導体装置において、抵抗素子を配置する際、その配置領域の周辺部の素子配置状態に合わせた最適な配置を実現する技術の必要性が高まってきた。
【０００４】
特開２００４−１６５５７２号公報（特許文献１）は、ユニット抵抗の抵抗値、接続タイプ、並列配置数、および直列配置数を規定するパラメータを取得する工程と、抵抗値を規定するパラメータに基づいてユニット抵抗の基本構成を定め、上記ユニット抵抗の抵抗値等のパラメータに基づいてユニット抵抗の基本構成を配置および接続して抵抗素子のレイアウトを行う素子セル生成工程とを含むレイアウト設計方法を開示する。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００４−１６５５７２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
特許文献１は、複数のユニット抵抗（抵抗素子）を配置する際、無駄な領域を作成するという問題を有する。その理由は、接続タイプを指定する４つの固定されたテンプレートに基づきユニット抵抗を配置するため、配置領域の形状を考慮してユニット抵抗を配置出来ないためである。ＰＡＲＡＬＥＬＬ＿ＳＥＲＩＡＬ、ＰＡＲＡＬＥＬＬ、およびＺＩＧＺＡＧのテンプレートでは、配置する複数のユニット抵抗の高さがその長さで固定されるため、複数数のユニット抵抗を配置する領域の高さがユニット抵抗の長さを超えている場合、その超えている部分の領域が無駄となる。また、ＳＥＲＩＡＬのテンプレートでは、配置する複数のユニット抵抗の幅がユニット抵抗の幅で固定されるので、複数のユニット抵抗を配置する領域の幅がユニット抵抗の幅を超えている場合、その超えている部分の領域は無駄となる。
【０００７】
その他の課題と新規な特徴は、本明細書の記述および添付図面から明らかになるであろう。
【課題を解決するための手段】
【０００８】
一実施の形態によれば、コンピュータにより、抵抗素子を直列接続または並列接続した抵抗ユニットを選択し、抵抗ユニットの抵抗素子を横方向および縦方向に各々揃えた横向き配置候補および縦向き配置候補を作成し、抵抗ユニットの配置領域に配置可能な横向き配置候補または縦向き配置候補のうち、配置領域に対する面積比率が大きいいずれか一方を選択して配置抵抗として配置する、半導体装置の自動レイアウト設計方法である。
【発明の効果】
【０００９】
前記一実施の形態によれば、抵抗素子の配置領域に無駄な領域を作らずに抵抗素子を配置することが可能となる。
【図面の簡単な説明】
【００１０】
【図１】実施の形態に係る、抵抗素子のレイアウト設計方法の全体フローを説明する図である。
【図２】図１におけるＳ２０６の詳細なフローチャートである。
【図３】図１におけるＳ２０７の詳細なフローチャートである。
【図４】実施の形態に係る、抵抗素子のレイアウト設計装置１０１の構成を説明する図である。
【図５】図２におけるＳ２１５の詳細なフローチャートである。
【図６】図２におけるＳ２１６の詳細なフローチャートである。
【図７】図２におけるＳ２１８の詳細なフローチャートである。
【図８】図２におけるＳ２１９の詳細なフローチャートである。
【図９】実施の形態に係る、抵抗素子の配置方向と始点の座標、および終点の座標を説明する図である。
【図１０】実施の形態に係る、抵抗素子の配置領域データおよび周辺素子データの一例を説明する図である。
【図１１】実施の形態に係る、直列接続の抵抗ユニットのイメージの一例を示す図である。
【図１２】実施の形態に係る、並列接続の抵抗ユニットのイメージの一例を示す図である。
【図１３】実施の形態に係る、直列接続の場合で縦向きに配置した配置候補の一例を示す図である。
【図１４】実施の形態に係る、直列接続の場合で横向きに配置した配置候補の一例を示す図である。
【図１５】実施の形態に係る、直列接続の場合の最終配置として決定した一例を示す図である。
【図１６】実施の形態に係る、並列接続の場合で縦向きに配置した配置候補の一例を示す図である。
【図１７】実施の形態に係る、並列接続の場合で横向きに配置した配置候補の一例を示す図である。
【図１８】実施の形態に係る、並列接続の場合の最終配置として決定した一例を示す図である。
【図１９】実施の形態に係る、直列接続の抵抗ユニットを横向きに配置している一例を示す図である。
【図２０】実施の形態に係る、直列接続の抵抗ユニットを上下にミラー反転して最終配置として決定した一例を示す図である。
【図２１】実施の形態に係る、新たな配置領域に直列接続の抵抗ユニットを横向きに配置した一例を示す図である。
【図２２】実施の形態に係る、直列接続の抵抗ユニットを上下にミラー反転して最終配置として決定した一例を示す図である。
【発明を実施するための形態】
【００１１】
以下、図面を参照しつつ、実施の形態について説明する。実施の形態の説明において、個数、量などに言及する場合、特に記載ある場合を除き、必ずしもその個数、量などに限定されない。実施の形態の図面において、同一の参照符号や参照番号は、同一部分または相当部分を表わすものとする。また、実施の形態の説明において、同一の参照符号等を付した部分等に対しては、重複する説明は繰り返さない場合がある。
【００１２】
図４を参照して、実施の形態に係る、抵抗素子のレイアウト設計装置１０１の構成を説明する。
【００１３】
抵抗素子のレイアウト設計装置１０１はコンピュータによる設計システムであり、設計プログラムを含む設計ツール１０２、設計ツール１０２に入力される入力データ格納部１０３、設計ツール１０２の出力データを格納する出力データ格納部１０４、レイアウトライブラリを格納するレイアウトライブラリ格納部１０５、設計ルールを格納する設計ルール格納部１０６、および記憶装置１０７を備える。設計ツール１０２は、レイアウトライブラリ格納部１０５および設計ルール格納部１０６を参照して、記憶装置１０７に格納されたデータに基づき入力データ格納部１０３のデータを処理し、その結果を出力データ格納部１０４へ出力する。
【００１４】
図１を参照して、実施の形態に係る、抵抗素子のレイアウト設計方法の全体フローを説明する。
【００１５】
図１において、ステップＳ２０１（以下、Ｓ２０１、と記載。他も同様。）は、設計ルール格納部１０６からデザインルールを読み出して、記憶装置１０７に登録する。このデザインルールは、設計性能等を決めるルールでプロセス別、種別毎にあらかじめ準備される。Ｓ２０２は、入力データ格納部１０３から抵抗素子が配置可能な領域のデータ（以下、抵抗素子の配置領域データ、と記載。）を読み出し、記憶装置１０７に登録する。Ｓ２０３は、入力データ格納部１０３から周辺素子データを読み出し、記憶装置１０７に登録する。
【００１６】
図１０を参照して、抵抗素子の配置領域データおよび周辺素子データの一例を説明する。
図１０において、抵抗素子の配置領域１１１は抵抗素子の配置領域データの一例であり、周辺素子データ１１２は周辺素子データの一例である。
【００１７】
図１に戻り、Ｓ２０４は、入力データ格納部１０３から抵抗素子データを読み出し、記憶装置１０７に登録する。Ｓ２０５は、記憶装置１０７に登録された抵抗素子データから配置対象となる抵抗のグループ（以下、グループ抵抗、と記載。）を読み出し、記憶装置１０７に登録する。
【００１８】
次に、Ｓ２０６は、後述する図２のフローチャートに従い、配置するグループ抵抗が直列接続か並列接続か直並列接続かを判定し、縦向きに配置した配置候補と横向きに配置した配置候補を作成する。図１３に、直列接続の場合で縦向きに配置した配置候補の一例を示す。図１４に、直列接続の場合で横向きに配置した配置候補の一例を示す。図１６に、並列接続の場合で縦向きに配置した配置候補の一例を示す。図１７に、並列接続の場合で横向きに配置した配置候補の一例を示す。
【００１９】
図１に戻り、Ｓ２０７は、後述する図３のフローチャートに従って、Ｓ２０６で作成した縦向きに配置した配置候補と横向きに配置した配置候補に対して、配置候補が図１０に示す抵抗素子の配置領域１１１に収まっているか（以下、領域収納率、と記載。）を以下の式１２１で算出して判定し、Ｓ２０６で作成した縦向きに配置した配置候補と横向きに配置した配置候補に対して、抵抗素子の配置領域１１１に占める配置候補の面積の比率（以下、領域占有率、と記載。）を以下の式１２２で算出して比較し、最終配置として決定する。
【００２０】
続けて、仮決定した最終配置を上下もしくは左右にミラー反転することで、グループ抵抗と周辺素子データの各素子の端子が持つ電位の番号（以下、電位番号、と記載。）が同じ端子で近づくかを判定し、近くなる場合は決定した最終配置を上下もしくは左右にミラー反転した配置に最終配置を変更する。
【００２１】
図１５は、直列接続の場合の最終配置として決定した一例であり、図１４の横向きの配置候補を上下にミラー反転した図である。
【００２２】
図１８は、並列接続の場合の最終配置として決定した一例であり、図１７の横向きの配置候補を上下にミラー反転した図である。
領域収納率＝（（配置候補の幅÷抵抗素子の配置領域の幅）＋（配置候補の高さ÷抵抗素子の配置領域の高さ））×１００  ……  式１２１
領域占有率＝（（配置候補の幅×配置候補の高さ）÷（抵抗素子の配置領域の幅×抵抗素子の配置領域の高さ））×１００  ……  式１２２
【００２３】
次に、Ｓ２０８は、Ｓ２０７で作成した最終配置を、抵抗素子の配置領域１１１に配置する。Ｓ２０９は、記憶装置１０７から読み出した抵抗素子を配置する領域のデータから、Ｓ２０８で配置した領域を削除して残った領域を新しい抵抗素子の領域データとして記憶装置１０７に登録する。Ｓ２１０は、記憶装置１０７に登録された抵抗素子データから読み出した配置するグループ抵抗を全て配置したかを判定し、残っている場合は、Ｓ２０５へ戻り、全て配置した場合は処理を終了する。
【００２４】
図２を参照して、図１におけるＳ２０６の詳細なフローチャートを説明する。
【００２５】
Ｓ２０６は配置候補の作成を行う場合、まず、Ｓ２１１は、記憶装置１０７に登録された情報から、配置するグループ抵抗、周辺素子データ、および抵抗素子の配置領域データを取り出す。Ｓ２１２は、図１０に示す抵抗素子の配置領域１１１の４隅の座標のうち、左下隅の座標を配置開始座標に仮決定する。Ｓ２１３は、Ｓ２１２で仮決定した配置開始座標を、デザインルールを基に、周辺素子データおよび配置するグループ抵抗が配置間隔の基準を満たす様に座標を修正して、配置開始座標１３０を決定する。
【００２６】
Ｓ２１４は、配置するグループ抵抗に含まれる各抵抗素子の両端子の電位を認識し、電位の数が”抵抗数＋１”通りの場合は直列接続と判定してＳ２１５に移り、電位の数が２通りの場合は並列接続と判定してＳ２１６に移る。Ｓ２１５は、後述する図５のフローチャートに従って、グループ抵抗の各抵抗素子を直列接続で鎖状に連結したユニット（以下、直列接続の抵抗ユニット、と記載。）を作成する。
【００２７】
Ｓ２１７は、後述する図５のフローチャートおよび後述する図６のフローチャートに従って直列接続部を直列接続の抵抗ユニットで作成し、並列接続部を並列接続の抵抗ユニットで作成し、直列接続部と並列接続部をつなぎ合わせる事で、直並列接続の抵抗ユニットを作成する。Ｓ２１６は、後述する図６のフローチャートに従って、グループ抵抗の各抵抗素子を並列接続で鎖状に連結したユニット（以下、並列接続の抵抗ユニット、と記載。）を作成する。Ｓ２１８は、後述する図７のフローチャートに従って、縦向きに配置した配置候補を作成する。Ｓ２１９は、後述する図８のフローチャートに従って、横向きに配置した配置候補を作成する。
【００２８】
図３を参照して、図１におけるＳ２０７の詳細なフローチャートを説明する。
Ｓ２０７の配置候補の選択の処理を行うに場合、まず、Ｓ２３１で、縦向きの配置候補の領域収納率が１００％以下かを判定し、１００％以下の場合はＳ２３２に進み、１００％を超えている場合はＳ２３３に進む。
【００２９】
Ｓ２３２は、横向きの配置候補の領域収納率が１００％以下かを判定し、１００％以下の場合はＳ２３４に進み、１００％を超えている場合はＳ２３５に進む。Ｓ２３３で、横向きの配置候補の領域収納率が１００％以下かを判定し、１００％以下の場合はＳ２３６に進み、１００％を超えている場合はＳ２３７に進む。
【００３０】
Ｓ２３４は、縦向きの配置候補と横向きの配置候補の領域占有率を比較し、縦向きの配置候補の領域占有率の方が横向きの配置候補の領域占有率より大きい場合はＳ２３５に進み、縦向きの配置候補の領域占有率の方が横向きの配置候補の領域占有率より大きくない場合はＳ２３６に進む。Ｓ２３５は、縦向きの配置候補を最終配置に決定する。Ｓ２３６は、横向きの配置候補を最終配置に決定する。Ｓ２３７は、領域不足のエラーメッセージを出力して処理を終了する。
【００３１】
Ｓ２３８は、配置する抵抗素子と接続する素子が抵抗素子の近くにある（周辺素子データがある）か、無いかを判定する。従って、配置する抵抗素子のデータと同電位の周辺素子データの端子を検索し、同じ電位の端子が無い場合に処理を終了し、ある場合にＳ２３５で最終配置に決定した縦向きの配置候補を上下もしくは左右にミラー反転する事で抵抗データの端子と周辺素子データ１１２の端子の座標が近づくかを判定し、近づかない場合はそのまま処理を終了し、近づく場合はＳ２４０に進む。
【００３２】
Ｓ２３９は、配置する抵抗素子と接続する素子が抵抗素子の近くにある（周辺素子データがある）か、無いかを判定する。従って、配置する抵抗素子のデータと同電位の周辺素子データの端子を検索し、同じ電位の端子が無い場合に処理を終了し、ある場合はＳ２３６で最終配置に決定した横向きの配置候補を上下もしくは左右にミラー反転する事で抵抗データの端子と周辺素子データ１１２の端子の座標が近づくかを検索し、近づかない場合はそのまま処理を終了し、近づく場合はＳ２４１に進む。
【００３３】
Ｓ２４０は、Ｓ２３５で最終配置に決定した縦向きの配置候補を同電位の周辺素子データの端子に近くなる様に上下もしくは左右にミラー反転して配置候補を最終配置に変更して処理を終了する。Ｓ２４１は、Ｓ２３６で最終配置に決定した横向きの配置候補を同電位の周辺素子データの端子に近くなる様に上下もしくは左右にミラー反転して配置候補を最終配置に変更して処理を終了する。
【００３４】
図５を参照して、図２におけるＳ２１５の詳細なフローチャートを説明する。
Ｓ２１５の直列接続の抵抗ユニットの処理を行うに場合、まず、Ｓ２５１は、配置するグループ抵抗の各端子の電位番号を抽出して、１個の端子だけに付加されている電位番号と、２個の端子に付加されている電位番号とに分類する。ここで、配置するグループ抵抗は直列接続なので、１個の端子だけに付加されている電位番号は、配置するグループ抵抗に２個存在し、２個の端子に付加されている電位番号は”抵抗素子の数−１”個存在する。
【００３５】
Ｓ２５２は、Ｓ２５１で分類した１個の端子だけに付加されている電位番号を、周辺素子データの端子の電位番号から検索して、一致した電位番号をもつ端子が１個見つかった場合は見つかった端子を１番目の端子とし、２個見つかった場合は周辺素子データの端子と一致した電位番号を持つ端子の距離を比較して近いほうの端子を１番目の端子とし、見つからない場合は２個存在する端子の数が１個となる電位番号の任意の端子を１番目の端子とする。
【００３６】
Ｓ２５３は、１番目の端子を持つ抵抗素子を１番目の抵抗として決定し、１番目の抵抗素子の反対側の端子を２番目の端子として決定する。次に２番目の端子と同じ電位番号を持つ抵抗素子を２番目の抵抗素子として決定し、２番目の抵抗素子の反対側の端子を３番目の端子として決定する。この処理を全抵抗素子に対して実施して、全ての抵抗素子の順番と端子の順番を決定する。
【００３７】
Ｓ２５４は、前記Ｓ２５３で決定した抵抗素子の順番と端子の順番を基に、直列接続で抵抗を連結したユニットを構成して、記憶装置１０７に登録する。
【００３８】
図１１を参照して、直列接続の抵抗ユニットのイメージの一例を示す。
抵抗ユニット１１３は、抵抗素子１１４〜抵抗素子１１７の複数の抵抗素子で構成する。電位番号１５１および１５６が端子の数が１個となる電位番号で、電位番号１５２〜１５５が端子の数が２個となる電位番号である。周辺素子データの端子と一致すると仮定して抵抗素子１１４を１番目の抵抗素子として抵抗素子１１５〜１１７を直列に連結している。
【００３９】
図６を参照して、図２におけるＳ２１６の詳細なフローチャートを説明する。
Ｓ２１６の並列接続の抵抗ユニットの処理を行うに際し、まず、Ｓ２５５は、配置するグループ抵抗の各端子の電位番号を抽出する。ここで、配置するグループ抵抗は並列接続なので、電位番号は２個存在する。Ｓ２５６は、配置するグループ抵抗から任意の抵抗素子を取り出して１番目の抵抗素子として決定し、残り全ての抵抗素子に対して任意に順番を決定する。２個存在する電位番号の端子から任意の端子を１番目の端子として決定し、もうひとつを２番目の端子として決定する。Ｓ２５７は、Ｓ２５６で決定した、抵抗素子の順番と端子の順番を基に、並列接続で抵抗を連結したユニットを構成して、記憶装置１０７に登録する。
【００４０】
図１２を参照して、並列接続の抵抗ユニットのイメージの一例を示す。
抵抗ユニット１２２は、抵抗素子１２３〜抵抗素子１２６の複数の抵抗素子で構成する。電位番号１５７、１５８が２個の電位番号である。電位番号１５７の端子を１番目の端子、電位番号１５８の端子を２番目の端子として決定して端子の番号を揃えて連結している。
【００４１】
図７を参照して、図２におけるＳ２１８の詳細なフローチャートを説明する。
Ｓ２１８の縦向きの配置候補を処理する場合、まず、図９を参照して、抵抗素子の配置方向と始点の座標（以下、始点座標、と記載。）と終点の座標（以下、終点座標、と記載。）を説明する。抵抗素子の両端の端子から任意に選んだ一方の端子の中心を始点座標、他方の端子の中心を終点座標とし、始点座標と終点座標のＹ座標が同じ場合を横向き、始点座標と終点座標のＸ座標が同じ場合を縦向き向きとする。図９は抵抗素子を横向きに配置した例で、１７１が始点座標、１７２が終点座標である。
【００４２】
図７に戻り、Ｓ２６１は、記憶装置１０７の抵抗ユニットから１番目の抵抗素子のデータを取り出す。Ｓ２６２は、１番目の抵抗素子の始点座標と終点座標を、以下の式１００で算出する。配置開始座標は、図２のＳ２１３で決定される。なお、式１００は始点および終点の各Ｘ座標および各Ｙ座標を計算する各計算式の集合を意味するものとする。以降における式も同様である。
始点のＸ座標＝配置開始座標１３０のＸ座標、
始点のＹ座標＝配置開始座標１３０のＹ座標、
終点のＸ座標＝始点のＸ座標、
終点のＹ座標＝始点のＹ座標＋抵抗素子の長さ  ……  式１００
ここで、抵抗素子の長さは抵抗素子の両端子間の長さである。
【００４３】
次に、Ｓ２６３は、１番目の抵抗素子の１番目の電位番号の端子を始点座標に配置し、１番目の抵抗素子の２番目の電位番号側の端子を終点座標に配置する。Ｓ２６４は、記憶装置１０７の抵抗ユニットから次に配置する抵抗素子を配置抵抗素子としてデータを取り出す。Ｓ２６５は、前に配置した抵抗の始点座標と終点座標のＹ座標を比較して、始点座標より終点座標の方が大きい場合はＳ２６６に処理を移し、大きくない場合はＳ２６７に処理を移す。
【００４４】
Ｓ２６６は、配置抵抗素子の始点座標と終点座標を、直列接続の抵抗ユニットの場合は以下の式１０１で算出し、並列接続の抵抗ユニットの場合は以下の式１１１で算出し、Ｓ２６８に移る。
始点のＸ座標＝前の抵抗素子の終点座標のＸ座標、
始点のＹ座標＝前の抵抗素子の終点座標のＹ座標＋配置ルールから得られる抵抗素子の配置間隔、
終点のＸ座標＝始点のＸ座標、
終点のＹ座標＝始点のＹ座標＋抵抗素子の長さ  ……  式１０１
始点のＸ座標＝前の抵抗素子の始点座標のＸ座標＋配置ルールから得られる抵抗素子の配置間隔、
始点のＹ座標＝前の抵抗素子の始点座標のＹ座標、
終点のＸ座標＝始点のＸ座標、
終点のＹ座標＝始点のＹ座標＋抵抗素子の長さ  ……  式１１１
【００４５】
次にＳ２６５でＮＯの場合、Ｓ２６７は、配置抵抗素子の始点座標と終点座標を、直列接続の抵抗ユニットの場合は以下の式１０２で算出し、並列接続の抵抗ユニットの場合は以下の式１１２で算出し、Ｓ２６８に移る。
始点のＸ座標＝前の抵抗素子の終点座標のＸ座標、
始点のＹ座標＝前の抵抗素子の終点座標のＹ座標−配置ルールから得られる抵抗素子の配置間隔、
終点のＸ座標＝始点のＸ座標、
終点のＹ座標＝始点のＹ座標−抵抗素子の長さ  ……  式１０２
始点のＸ座標＝前の抵抗素子の始点座標のＸ座標−配置ルールから得られる抵抗素子の配置間隔、
始点のＹ座標＝前の抵抗素子の始点座標のＹ座標、
終点のＸ座標＝始点のＸ座標、
終点のＹ座標＝始点のＹ座標−抵抗素子の長さ  ……  式１１２
【００４６】
次に、Ｓ２６８は、直列接続の抵抗ユニットの場合は、配置抵抗素子の終点のＹ座標が抵抗素子の配置領域１１１の上辺のＹ座標より大きいかを判定し、大きい場合はＳ２７０に処理を移し、大きくない場合はＳ２６９に処理を移す。並列接続の抵抗ユニットの場合は、配置抵抗素子の終点のＸ座標が抵抗素子の配置領域１１１の右辺のＸ座標より大きいかを判定し、大きい場合はＳ２７０に処理を移し、大きくない場合はＳ２６９に処理を移す。
【００４７】
Ｓ２６９は、直列接続の抵抗ユニットの場合は、配置抵抗素子の終点のＹ座標が抵抗素子の配置領域１１１の下辺のＹ座標より小さいかを判定し、小さい場合はＳ２７１に処理を移し、小さくない場合はＳ２７２に処理を移す。並列接続の抵抗ユニットの場合は、配置抵抗素子の終点のＸ座標が抵抗素子の配置領域１１１の左辺のＸ座標より小さいかを判定し、小さい場合はＳ２７１に処理を移し、小さくない場合はＳ２７２に処理を移す。
【００４８】
次にＳ２６８でＹＥＳの場合、Ｓ２７０は、配置抵抗素子の始点座標と終点座標を、直列接続の抵抗ユニットの場合は以下の式１０３で算出し、並列接続の抵抗ユニットの場合は以下の式１１３で算出する。
始点のＸ座標＝前の抵抗素子の終点座標のＸ座標＋配置ルールから得られる抵抗素子の配置間隔、
始点のＹ座標＝前の抵抗素子の終点座標のＹ座標、
終点のＸ座標＝始点のＸ座標、
終点のＹ座標＝始点のＹ座標−抵抗素子の長さ  ……  式１０３
始点のＸ座標＝前の抵抗素子の始点座標のＸ座標、
始点のＹ座標＝前の抵抗素子の始点座標のＹ座標＋配置ルールから得られる抵抗素子の配置間隔＋抵抗素子の長さ×２、
終点のＸ座標＝始点のＸ座標、
終点のＹ座標＝始点のＹ座標−抵抗素子の長さ  ……  式１１３
【００４９】
次にＳ２６９でＹＥＳの場合、Ｓ２７１は、配置抵抗素子の始点座標と終点座標を、直列接続の抵抗ユニットの場合は以下の式１０４で算出し、並列接続の抵抗ユニットの場合は以下の式１１４で算出し、Ｓ２７２に移る。
始点のＸ座標＝前の抵抗素子の終点座標のＸ座標＋配置ルールから得られる抵抗素子の配置間隔、
始点のＹ座標＝前の抵抗素子の終点座標のＹ座標、
終点のＸ座標＝始点のＸ座標、
終点のＹ座標＝始点のＹ座標＋抵抗素子の長さ  ……  式１０４
始点のＸ座標＝前の抵抗素子の始点座標のＸ座標、
始点のＹ座標＝前の抵抗素子の始点座標のＹ座標＋配置ルールから得られる抵抗素子の配置間隔、
終点のＸ座標＝始点のＸ座標、
終点のＹ座標＝始点のＹ座標＋抵抗素子の長さ  ……  式１１４
【００５０】
次に、Ｓ２７２は、配置抵抗素子の端子を抵抗ユニットの端子の順番で始点座標と終点座標に配置する。Ｓ２７３は、抵抗ユニット中の全ての抵抗素子を配置したかを判定し、配置した場合は処理を終了し、残っている場合はＳ２６４に戻る。尚、直列接続の抵抗ユニットで全ての抵抗素子を配置するために、抵抗素子の配置領域１１１の右辺を超えて配置する抵抗素子がある場合は配置領域１１１の右辺を超えても配置し、並列接続の抵抗ユニットで全ての抵抗素子を配置するために、抵抗素子の配置領域１１１の上辺を超えて配置する抵抗素子がある場合は配置領域１１１の上辺を超えても配置する。
【００５１】
図１３を参照して、図１１に示す直列接続の抵抗ユニットを縦向きに配置した例を説明する。
【００５２】
配置開始座標１３０を基準に、１番目の抵抗素子１１４の始点座標と終点座標を式１００で算出し、電位番号１５１の側の端子の中心を始点座標に配置して電位番号１５２側の端子の中心を終点座標に配置する。次に、抵抗素子１１４に続く抵抗素子１１５の始点座標と終点座標を式１０１〜式１０４で算出し、抵抗素子１１４の隣に抵抗ユニットの端子の順番で始点座標と終点座標を配置する。
【００５３】
次に、抵抗素子１１５に続く抵抗素子１１６の始点座標と終点座標を式１０１〜式１０４で算出し、抵抗素子１１５の隣に抵抗ユニットの端子の順番で始点座標と終点座標に配置する。この方法で、抵抗ユニット１１３の抵抗素子１１４に続く全部の抵抗素子を配置して、縦向きの配置候補を作成する。
【００５４】
図１６を参照して、図１２で示す並列接続の抵抗ユニットを縦向きに配置した例を説明する。
【００５５】
１番目の抵抗素子１２３の始点座標と終点座標を式１００で算出し、抵抗素子１２３の電位番号１５７側の端子の中心を始点座標に配置して電位番号１５８側の端子の中心を終点座標に配置する。次に、抵抗素子１２３に続く抵抗素子１２４の始点座標と終点座標を式１１１〜式１１４で算出し、抵抗素子１２３の隣に抵抗素子１２４の電位番号１５７側の端子の中心を始点座標に配置して電位番号１５８側の端子の中心を終点座標に配置する。
【００５６】
次に、抵抗素子１２４に続く抵抗素子１２５の始点座標と終点座標を式１１１〜式１１４で算出し、抵抗素子１２４の隣に抵抗素子１２５の電位番号１５７側の端子の中心を始点座標に配置して電位番号１５８側の端子の中心を終点座標に配置する。この方法で、抵抗ユニット１２２の抵抗素子１２３に続く全部の抵抗素子を始点座標を配置した軌跡１７５に示す様な抵抗素子の始点座標で配置して、縦向きの配置候補を作成する。
【００５７】
図８を参照して、図２におけるＳ２１９の詳細なフローチャートを説明する。
Ｓ２１９の横向きの配置候補を作成する処理を行う場合、まず、Ｓ２８１は、記憶装置１０７から抵抗ユニットの１番目の抵抗素子のデータを取り出す。次に、Ｓ２８２は、１番目の抵抗素子の始点座標と終点座標を以下の式１２０で算出する。
始点のＸ座標＝配置開始座標１３０のＸ座標、
始点のＹ座標＝配置開始座標１３０のＹ座標、
終点のＸ座標＝始点のＸ座標＋抵抗素子の長さ、
終点のＹ座標＝始点のＹ座標  ……  式１２０
【００５８】
Ｓ２８３は、１番目の抵抗素子の１番目の端子を始点座標に配置し、１番目の抵抗素子の２番目の端子を終点座標に配置する。Ｓ２８４は、記憶装置１０７から抵抗ユニットの次に配置する抵抗素子を配置抵抗素子としてデータを取り出す。Ｓ２８５は、前の抵抗素子の始点座標と終点座標のＸ座標を比較して、始点座標より終点座標の方が大きい場合はＳ２８６に処理を移し、大きくない場合はＳ２８７に処理を移す。
【００５９】
Ｓ２８６は、配置抵抗素子の始点座標と終点座標を、直列接続の抵抗ユニットの場合は以下の式１２１で算出し、並列接続の抵抗ユニットの場合は以下の式１３１で算出する。
始点のＸ座標＝前の抵抗素子の終点座標のＸ座標＋配置ルールから得られる抵抗素子の配置間隔、
始点のＹ座標＝前の抵抗素子の終点座標のＹ座標、
終点のＸ座標＝始点のＸ座標＋抵抗素子の長さ、
終点のＹ座標＝始点のＹ座標  ……  式１２１
始点のＸ座標＝前の抵抗素子の始点座標のＸ座標、
始点のＹ座標＝前の抵抗素子の始点座標のＹ座標＋配置ルールから得られる抵抗素子の配置間隔、
終点のＸ座標＝始点のＸ座標＋抵抗素子の長さ、
終点のＹ座標＝始点のＹ座標  ……  式１３１
【００６０】
次にＳ２８５でＮＯの場合、Ｓ２８７は、配置抵抗素子の始点座標と終点座標を、直列接続の抵抗ユニットの場合は以下の式１２２で算出し、並列接続の抵抗ユニットの場合は以下の式１３２で算出する。
始点のＸ座標＝前の抵抗素子の終点座標のＸ座標−配置ルールから得られる抵抗素子の配置間隔、
始点のＹ座標＝前の抵抗素子の終点座標のＹ座標、
終点のＸ座標＝始点のＸ座標−抵抗素子の長さ、
終点のＹ座標＝始点のＹ座標  ……  式１２２
始点のＸ座標＝前の抵抗素子の始点座標のＸ座標、
始点のＹ座標＝前の抵抗素子の始点座標のＹ座標−配置ルールから得られる抵抗素子の配置間隔、
終点のＸ座標＝始点のＸ座標−抵抗素子の長さ、
終点のＹ座標＝始点のＹ座標  ……  式１３２
【００６１】
次に、Ｓ２８８は、直列接続の抵抗ユニットの場合は、配置抵抗素子の終点のＸ座標が抵抗素子の配置領域１１１の右辺のＸ座標より大きいかを判定し、大きい場合はＳ２９０に処理を移し、大きくない場合はＳ２８９に処理を移す。並列接続の抵抗ユニットの場合は、配置抵抗素子の終点のＹ座標が抵抗素子の配置領域１１１の上辺のＹ座標より大きいかを判定し、大きい場合はＳ２９０に処理を移し、大きくない場合はＳ２８９に処理を移す。
【００６２】
Ｓ２８９は、直列接続の抵抗ユニットの場合は、配置抵抗素子の終点のＸ座標が抵抗素子の配置領域１１１の左辺のＸ座標より小さいかを判定し、小さい場合はＳ２９１に処理を移し、小さくない場合はＳ２９２に処理を移す。並列接続の抵抗ユニットの場合は、配置抵抗素子の終点のＹ座標が抵抗素子の配置領域１１１の下辺のＹ座標より小さいかを判定し、小さい場合はＳ２９１に処理を移し、小さくない場合はＳ２９２に処理を移す。
【００６３】
Ｓ２８８でＹＥＳの場合、Ｓ２９０は、配置抵抗素子の始点座標と終点座標を、直列接続の抵抗ユニットの場合は以下の式１２３で算出し、並列接続の抵抗ユニットの場合は以下の式１３３で算出し、Ｓ２９２に処理を移す。
始点のＸ座標＝前の抵抗素子の終点座標のＸ座標、
始点のＹ座標＝前の抵抗素子の終点座標のＹ座標＋配置ルールから得られる抵抗素子の配置間隔、
終点のＸ座標＝始点のＸ座標−抵抗素子の長さ、
終点のＹ座標＝始点のＹ座標  ……  式１２３
始点のＸ座標＝前の抵抗素子の始点座標のＸ座標＋配置ルールから得られる抵抗素子の配置間隔＋抵抗素子の長さ×２、
始点のＹ座標＝前の抵抗素子の始点座標のＹ座標、
終点のＸ座標＝始点のＸ座標−抵抗素子の長さ、
終点のＹ座標＝始点のＹ座標  ……  式１３３
【００６４】
次にＳ２８９でＹＥＳの場合、Ｓ２９１は、配置抵抗素子の始点座標と終点座標を、直列接続の抵抗ユニットの場合は以下の式１２４で算出し、並列接続の抵抗ユニットの場合は以下の式１３４で算出し、Ｓ２９２に処理を移す。
始点のＸ座標＝前の抵抗素子の終点座標のＸ座標、
始点のＹ座標＝前の抵抗素子の終点座標のＹ座標＋配置ルールから得られる抵抗素子の配置間隔、
終点のＸ座標＝始点のＸ座標＋抵抗素子の長さ、
終点のＹ座標＝始点のＹ座標  ……  式１２４
始点のＸ座標＝前の抵抗素子の始点座標のＸ座標＋配置ルールから得られる抵抗素子の配置間隔、
始点のＹ座標＝前の抵抗素子の始点座標のＹ座標、
終点のＸ座標＝始点のＸ座標＋抵抗素子の長さ、
終点のＹ座標＝始点のＹ座標  ……  式１３４
【００６５】
次に、Ｓ２９２は、配置抵抗素子の端子を抵抗ユニットの端子の順番で始点座標と終点座標に配置する。Ｓ２９３は、抵抗ユニット中の全ての抵抗素子を配置したかを判定し、配置した場合は処理を終了し、残っている場合はＳ２８４に戻る。尚、直列接続の抵抗ユニットで全ての抵抗素子を配置するために、抵抗素子の配置領域１１１の上辺を超えて配置する抵抗素子がある場合は配置領域１１１の上辺を超えても配置し、並列接続の抵抗ユニットで全ての抵抗素子を配置するために、抵抗素子の配置領域１１１の右辺を超えて配置する抵抗素子がある場合配置領域１１１の右辺を超えても配置する。
【００６６】
図１４を参照して、図１１で示す直列接続の抵抗ユニットを横向きに配置した例を説明する。
【００６７】
１番目の抵抗素子１１４の始点座標と終点座標を式１２０で算出し、電位番号１５１の側の端子の中心を始点座標に配置して電位番号１５２側の端子の中心を終点座標に配置する。次に、抵抗素子１１４に続く抵抗素子１１５の始点座標と終点座標を式１２１〜式１２４で算出し、抵抗素子１１４の隣に抵抗ユニットの端子の順番で始点座標と終点座標に配置する。次に、抵抗素子１１５に続く抵抗素子１１６の始点座標と終点座標を式１２１〜式１２４で算出し、抵抗素子１１５の隣に抵抗ユニットの端子の順番で始点座標と終点座標を配置する。この方法で、抵抗ユニット１１３の抵抗素子１１４に続く全部の抵抗素子を配置して、横向きの配置候補を作成する。
【００６８】
図１７を参照して、図１２で示す並列接続の抵抗ユニットを横向きに配置した例を説明する。
【００６９】
１番目の抵抗素子１２３の始点座標と終点座標を式１２０で算出し、電位番号１５７側の端子の中心を始点座標に配置して電位番号１５８側の端子の中心を終点座標に配置する。次に、抵抗素子１２３に続く抵抗素子１２４の始点座標と終点座標を式１３１〜式１３４で算出し、抵抗素子１２３の隣に抵抗素子１２４の電位番号１５７側の端子の中心を始点座標に配置して電位番号１５８側の端子の中心を終点座標に配置する。次に、抵抗素子１２４に続く抵抗素子１２５の始点座標と終点座標を式１３１〜式１３４で算出し、抵抗素子１２４の隣に抵抗素子１２５の電位番号１５７側の端子の中心を始点座標に配置して電位番号１５８側の端子の中心を終点座標に配置する。この方法で、抵抗ユニット１２２の抵抗素子１２３に続く全部の抵抗素子を始点座標を配置した軌跡１７５に示す様な抵抗素子の始点座標で配置して、縦向きの配置候補を作成する。
【００７０】
次に、図１のフローで図１９に示す配置領域１３１に２個目以降の直列接続の抵抗ユニットを配置する方法を、図１９、図２０、図２１、および図２２の例で説明する。
【００７１】
図１９は、図１のＳ２０１〜Ｓ２０７までの処理によって、抵抗素子の配置領域１３１に、直列接続の抵抗ユニット１３６を横向きに配置している一例である。
【００７２】
図２０は、図３のＳ２３９で、直列接続の抵抗ユニット１３６を上下にミラー反転することで、トランジスタ素子１３３の電位番号１５９の端子と、抵抗素子１３５の電位番号１５９の端子が近づくので、図１のＳ２０８で直列接続の抵抗ユニット１３６を上下にミラー反転して最終配置として決定した一例である。
【００７３】
図２１は、図１のＳ２０９で抵抗素子の配置領域１３１に直列接続の抵抗ユニット１３６を配置した残りの配置領域を新たな配置領域１４１に決定し、図１のＳ２１０の全グループ抵抗を配置したかの判定でＮＯと判定され、図１のＳ２０５に戻って次に配置するグループ抵抗を読み出し、図１のＳ２０６〜Ｓ２０７の処理によって新たな配置領域１４１に配置する抵抗ユニット１３８の配置開始座標１４０を決定し、新たな配置領域１４１に直列接続の抵抗ユニット１３８を横向きに配置した一例である。
【００７４】
図２２は、図３のＳ２３９で、図２１に示す直列接続の抵抗ユニット１３８を上下にミラー反転することで、トランジスタ素子１３４の電位番号１６０の端子と、抵抗素子１３７の電位番号１６０の端子が近づくので、直列接続の抵抗ユニット１３８を上下にミラー反転して最終配置として決定した一例である。
【００７５】
以上の処理により、抵抗素子の配置領域に複数の抵抗ユニットを配置する。
実施の形態に半導体装置のレイアウト設計方法によれば、複数の抵抗素子を配置する際、抵抗素子の順番と端子の順番とを決定して複数の抵抗素子を鎖状に連結し、鎖状に連結した抵抗素子を配置領域の幅と高さに合わせて折り返しながら縦向きもしくは横向きに配置することができる。また、抵抗素子の配置領域が残った場合、残った領域に別の複数の抵抗素子を配置することができるため、複数の抵抗素子を配置する際、抵抗素子の配置領域に無駄な領域を作らずに配置できる。
【００７６】
抵抗素子の配置領域に複数の抵抗を配置する際に抵抗素子の配置領域が残った場合、残った領域に別の抵抗を配置することができるため、複数の抵抗を配置する際に抵抗素子の配置領域に無駄な領域を残さずに配置できる。
【００７７】
また、配置候補を決める際、縦向きと横向きの２通りの配置候補しか作らないので、配置候補としてテンプレートを多数用意する必要がないので、配置候補から最終配置を決定するときに、２通りの配置候補で抵抗配置ができるため、自動配置の処理時間を短くすることが可能で、使用メモリも少なくすることができる。
【００７８】
今回開示された実施の形態はすべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は上記した説明ではなく特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
【符号の説明】
【００７９】
１０１  レイアウト設計装置、１０２  設計ツール、１０３  入力データ格納部、１０４  出力データ格納部、１０５  レイアウトライブラリ格納部、１０６  設計ルール格納部、１０７  記憶装置、１１１  配置領域、１１２  周辺素子データ、１１４，１１５，１１６，１１７，１２３，１２４，１２５，１２６  抵抗素子、１１３，１２２，１３６，１３８  抵抗ユニット、１５２，１５３，１５４，１５５  電位番号、１３０，１４０  配置開始座標、１３１  配置領域、１３３，１３４  トランジスタ素子、１３５，１３７  抵抗素子、１４１  配置領域、１５１，１５２，１５７，１５８，１５９，１６０  電位番号、１７５  軌跡。
【図１】
2013182578.tif 000003
【図２】
2013182578.tif 000004
【図３】
2013182578.tif 000005
【図４】
2013182578.tif 000006
【図５】
2013182578.tif 000007
【図６】
2013182578.tif 000008
【図７】
2013182578.tif 000009
【図８】
2013182578.tif 000010
【図９】
2013182578.tif 000011
【図１０】
2013182578.tif 000012
【図１１】
2013182578.tif 000013
【図１２】
2013182578.tif 000014
【図１３】
2013182578.tif 000015
【図１４】
2013182578.tif 000016
【図１５】
2013182578.tif 000017
【図１６】
2013182578.tif 000018
【図１７】
2013182578.tif 000019
【図１８】
2013182578.tif 000020
【図１９】
2013182578.tif 000021
【図２０】
2013182578.tif 000022
【図２１】
2013182578.tif 000023
【図２２】
2013182578.tif 000024