(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-05-23
(45)【発行日】2023-05-31
(54)【発明の名称】信号線の接続方法、プログラム、及び、半導体集積回路
(51)【国際特許分類】
H03K 19/173 20060101AFI20230524BHJP
H03K 19/177 20200101ALI20230524BHJP
【FI】
H03K19/173 150
H03K19/177
(21)【出願番号】P 2021541386
(86)(22)【出願日】2019-08-20
(86)【国際出願番号】 JP2019032455
(87)【国際公開番号】W WO2021033266
(87)【国際公開日】2021-02-25
【審査請求日】2022-07-04
【新規性喪失の例外の表示】特許法第30条第3項適用 平成30年8月22日にインターネットアドレス https://ipsj.ixsq.nii.ac.jp/ej/?action=pages_view_main&active_action=repository_view_main_item_detail&item_id=190888&item_no=1&page_id=13&block_id=8にて公開 平成30年8月29日にDAシンポジウム2018にて発表 平成30年11月5日にインターネットアドレス https://dl.acm.org/doi/10.1145/3240765.3240849にて公開 平成30年11月6日にIEEE/ACM 2018 International Conference on Computer-Aided Design(ICCAD 2018)にて発表 平成30年11月30日に第35回OACISシンポジウムにて発表 令和1年5月8日にインターネットアドレス https://www.ieice.org/ken/paper/20190515N1Nd/にて公開 令和1年5月15日にIEICE-VLD,IPSJ-SLDM 5月研究会にて発表
【国等の委託研究の成果に係る記載事項】(出願人による申告)平成26年度、国立研究開発法人科学技術振興機構、戦略的創造研究推進事業、「再構成可能チップのテストに関する研究」委託研究、産業技術力強化法第17条の適用を受ける特許出願
(73)【特許権者】
【識別番号】504132272
【氏名又は名称】国立大学法人京都大学
(74)【代理人】
【識別番号】110001519
【氏名又は名称】弁理士法人太陽国際特許事務所
(74)【代理人】
【識別番号】100109210
【氏名又は名称】新居 広守
(73)【特許権者】
【識別番号】520041932
【氏名又は名称】ナノブリッジ・セミコンダクター株式会社
(74)【代理人】
【識別番号】110001519
【氏名又は名称】弁理士法人太陽国際特許事務所
(72)【発明者】
【氏名】橋本 昌宜
(72)【発明者】
【氏名】土井 龍太郎
(72)【発明者】
【氏名】劉 載勲
【審査官】渡井 高広
(56)【参考文献】
【文献】特開2018-7167(JP,A)
【文献】特開2018-37783(JP,A)
【文献】特開平8-204543(JP,A)
【文献】特開2012-198695(JP,A)
【文献】特開2004-39150(JP,A)
【文献】特開2006-73010(JP,A)
【文献】特開2008-217844(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
H03K 19/173
H03K 19/177
(57)【特許請求の範囲】
【請求項1】
格子状に配置された複数の縦方向の信号線と複数の横方向の信号線との複数の交点であって、当該複数の交点のそれぞれに、当該交点における縦方向の信号線と横方向の信号線とを接続する接続状態と、接続しない非接続状態とを切り替えて保持するスイッチが設けられた複数の交点の中から、予め指定された複数の交点である複数の接続点のそれぞれを、前記スイッチを前記非接続状態から前記接続状態へと切り替えることで接続する、信号線の接続方法であって、
前記縦方向と前記横方向とのうちの一方の方向の複数の信号線のうち、1以上の前記接続点を有する信号線のそれぞれをノードとし、2つの前記ノード間を接続する1本の他方の信号線のそれぞれを枝とする接続グラフを生成する第1ステップと、
前記接続グラフに基づいて、前記複数の接続点の接続順を決定する第2ステップと、を有し、
前記第2ステップでは、前記複数の接続点のそれぞれを接続する際に、当該接続点以外の交点を接続してしまう経路であるスニークパスが発生しないように、前記接続順を決定する
信号線の接続方法。
【請求項2】
前記接続グラフは、ツリー構造を有する
請求項1に記載の信号線の接続方法。
【請求項3】
前記第2ステップでは、前記ツリー構造における一の子ノードにおける接続点の方が、当該一の子ノードの親ノードにおける接続点よりも後に接続するように、前記接続順を決定する
請求項2に記載の信号線の接続方法。
【請求項4】
前記第2ステップは、さらに、
一のツリー構造における一の葉ノードを選択する第3ステップと、
前記一の葉ノードにおける親ノードへの接続点を前記一のツリー構造において最後に接続する接続点に決定する第4ステップと、
前記一のツリー構造から前記一の葉ノードを除外して新たな一のツリー構造を生成する第5ステップとを含み、
前記第3ステップ~前記第5ステップを繰り返し行うことで、再帰的に前記接続順を決定する
請求項3に記載の信号線の接続方法。
【請求項5】
前記複数の縦方向の信号線と、前記複数の横方向の信号線との接続状態を、予め指定された複数の第1の交点である複数の第1の接続点のそれぞれが接続された第1の接続状態から、予め指定された複数の第2の交点である複数の第2の接続点のそれぞれが接続された第2の接続状態へと変更する場合において、
前記複数の第1の接続点から、前記複数の第1の接続点と前記複数の第2の接続点とで共通する1以上の共通接続点を除外した1以上の第1の非共通接続点のそれぞれを、前記スイッチを前記接続状態から前記非接続状態へと切り替えることで非接続とする第6ステップと、
前記複数の第2の接続点から、前記1以上の共通接続点を除外した1以上の第2の非共通接続点のそれぞれを対象として、当該第2の非共通接続点を有するノード及び当該ノードの子孫ノードにおける、親ノードへの接続点である1以上の第3の接続点のそれぞれを、前記スイッチを前記接続状態から前記非接続状態へと切り替えることで非接続としてから、当該第2の非共通接続点を、前記スイッチを前記非接続状態から前記接続状態へと切り替えることで接続して、さらに、前記1以上の第3の接続点のそれぞれを、前記スイッチを前記非接続状態から前記接続状態へと切り替えることで接続する第7ステップと、をさらに含み、
前記第7ステップでは、前記第3の接続点の接続順を、前記第1ステップと前記第2ステップとを行うことで決定する
請求項4に記載の信号線の接続方法。
【請求項6】
さらに、前記第3の接続点の数が最小となるツリー構造を探索する第8ステップを有し、
前記第7ステップにおいて、前記子孫ノードは、前記第8ステップにおいて探索されたツリー構造における、前記第2の非共通接続点を有するノードの子孫ノードである
請求項5に記載の信号線の接続方法。
【請求項7】
コンピュータに、信号線の接続処理を実行させるためのプログラムであって、
前記信号線の接続処理は、
格子状に配置された複数の縦方向の信号線と複数の横方向の信号線との複数の交点であって、当該複数の交点のそれぞれに、当該交点における縦方向の信号線と横方向の信号線とを接続する接続状態と、接続しない非接続状態とを切り替えて保持するスイッチが設けられた複数の交点の中から、予め指定された複数の交点である複数の接続点のそれぞれを、前記スイッチを前記非接続状態から前記接続状態へと切り替えることで接続する、処理であって、
前記縦方向と前記横方向とのうちの一方の方向の複数の信号線のうち、1以上の前記接続点を有する信号線のそれぞれをノードとし、2つの前記ノード間を接続する1本の他方の信号線のそれぞれを枝とする接続グラフを生成する第1ステップと、
前記接続グラフに基づいて、前記複数の接続点の接続順を決定する第2ステップと、を有し、
前記第2ステップでは、前記複数の接続点のそれぞれを接続する際に、当該接続点以外の交点を接続してしまう経路であるスニークパスが発生しないように、前記接続順を決定する
プログラム。
【請求項8】
格子状に配置された複数の縦方向の信号線及び複数の横方向の信号線と、
前記複数の縦方向の信号線と前記複数の横方向の信号線との複数の交点であって、当該複数の交点のそれぞれに、当該交点における縦方向の信号線と横方向の信号線とを接続する接続状態と、接続しない非接続状態とを切り替えて保持するスイッチが設けられた複数の交点と、を備え、
前記複数の交点の中から、予め指定された複数の交点である複数の接続点のそれぞれを、前記スイッチを前記非接続状態から前記接続状態へと切り替えることで接続する、信号線の接続処理が行われた半導体集積回路であって、
前記信号線の接続処理は、
前記縦方向と前記横方向とのうちの一方の方向の複数の信号線のうち、1以上の前記接続点を有する信号線のそれぞれをノードとし、2つの前記ノード間を接続する1本の他方の信号線のそれぞれを枝とする接続グラフを生成する第1ステップと、
前記接続グラフに基づいて、前記複数の接続点の接続順を決定する第2ステップと、を有し、
前記第2ステップでは、前記複数の接続点のそれぞれを接続する際に、当該接続点以外の交点を接続してしまう経路であるスニークパスが発生しないように、前記接続順を決定する
半導体集積回路。
【請求項9】
前記半導体集積回路は、複数のテストプログラムでテストされ、
前記複数のテストプログラムによるテスト順は、前記半導体集積回路に含まれる全ての前記スイッチにおける、前記非接続状態と前記接続状態との間で切り替えを行う切替回数の総和が最小となる順である
請求項8に記載の半導体集積回路。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、信号線の接続方法に関する。
【背景技術】
【0002】
製造後に論理構成を設定することができる半導体集積回路であるFPGA(Field Programmable Gate Array)が知られている(例えば、特許文献1参照)。
【0003】
近年、複数の縦方向の信号線と複数の横方向の信号線との複数の交点に、信号線間の接続状態と非接続状態との切り替えを行う不揮発性のビアスイッチが配置されたクロスバー回路を備えるビアスイッチFPGAの開発が進んでいる。ビアスイッチFPGAを利用するユーザは、クロスバー回路におけるいくつかの交点のビアスイッチを非接続状態から接続状態へと切り替えることでそれら交点における信号線間を接続して、ビアスイッチFPGAに所望の論理構成を設定する。
【先行技術文献】
【特許文献】
【0004】
【発明の概要】
【発明が解決しようとする課題】
【0005】
本発明は、ビアスイッチFPGAにおける適切な信号線の接続方法等を提供することを目的とする。
【課題を解決するための手段】
【0006】
本発明に係る信号線の接続方法は、格子状に配置された複数の縦方向の信号線と複数の横方向の信号線との複数の交点であって、当該複数の交点のそれぞれに、当該交点における縦方向の信号線と横方向の信号線とを接続する接続状態と、接続しない非接続状態とを切り替えて保持するスイッチが設けられた複数の交点の中から、予め指定された複数の交点である複数の接続点のそれぞれを、前記スイッチを前記非接続状態から前記接続状態へと切り替えることで接続する、信号線の接続方法であって、前記縦方向と前記横方向とのうちの一方の方向の複数の信号線のうち、1以上の前記接続点を有する信号線のそれぞれをノードとし、2つの前記ノード間を接続する1本の他方の信号線のそれぞれを枝とする接続グラフを生成する第1ステップと、前記接続グラフに基づいて、前記複数の接続点の接続順を決定する第2ステップと、を有し、前記第2ステップでは、前記複数の接続点のそれぞれを接続する際に、当該接続点以外の交点を接続してしまう経路であるスニークパスが発生しないように、前記接続順を決定する。
【0007】
例えば、前記接続グラフは、ツリー構造を有するとしてもよい。
【0008】
例えば、前記第2ステップでは、前記ツリー構造における一の子ノードにおける接続点の方が、当該一の子ノードの親ノードにおける接続点よりも後に接続するように、前記接続順を決定するとしてもよい。
【0009】
例えば、前記第2ステップは、さらに、一のツリー構造における一の葉ノードを選択する第3ステップと、前記一の葉ノードにおける親ノードへの接続点を前記一のツリー構造において最後に接続する接続点に決定する第4ステップと、前記一のツリー構造から前記一の葉ノードを除外して新たな一のツリー構造を生成する第5ステップとを含み、前記第3ステップ~前記第5ステップを繰り返し行うことで、再帰的に前記接続順を決定するとしてもよい。
【0010】
例えば、前記複数の縦方向の信号線と、前記複数の横方向の信号線との接続状態を、予め指定された複数の第1の交点である複数の第1の接続点のそれぞれが接続された第1の接続状態から、予め指定された複数の第2の交点である複数の第2の接続点のそれぞれが接続された第2の接続状態へと変更する場合において、前記複数の第1の接続点から、前記複数の第1の接続点と前記複数の第2の接続点とで共通する1以上の共通接続点を除外した1以上の第1の非共通接続点のそれぞれを、前記スイッチを前記接続状態から前記非接続状態へと切り替えることで非接続とする第6ステップと、前記複数の第2の接続点から、前記1以上の共通接続点を除外した1以上の第2の非共通接続点のそれぞれを対象として、当該第2の非共通接続点を有するノード及び当該ノードの子孫ノードにおける、親ノードへの接続点である1以上の第3の接続点のそれぞれを、前記スイッチを前記接続状態から前記非接続状態へと切り替えることで非接続としてから、当該第2の非共通接続点を、前記スイッチを前記非接続状態から前記接続状態へと切り替えることで接続して、さらに、前記1以上の第3の接続点のそれぞれを、前記スイッチを前記非接続状態から前記接続状態へと切り替えることで接続する第7ステップと、をさらに含み、前記第7ステップでは、前記第3の接続点の接続順を、前記第1ステップと前記第2ステップとを行うことで決定するとしてもよい。
【0011】
例えば、さらに、前記第3の接続点の数が最小となるツリー構造を探索する第8ステップを有し、前記第7ステップにおいて、前記子孫ノードは、前記第8ステップにおいて探索されたツリー構造における、前記第2の非共通接続点を有するノードの子孫ノードであるとしてもよい。
【0012】
本発明に係るプログラムは、コンピュータに、信号線の接続処理を実行させるためのプログラムであって、前記信号線の接続処理は、格子状に配置された複数の縦方向の信号線と複数の横方向の信号線との複数の交点であって、当該複数の交点のそれぞれに、当該交点における縦方向の信号線と横方向の信号線とを接続する接続状態と、接続しない非接続状態とを切り替えて保持するスイッチが設けられた複数の交点の中から、予め指定された複数の交点である複数の接続点のそれぞれを、前記スイッチを前記非接続状態から前記接続状態へと切り替えることで接続する、処理であって、前記縦方向と前記横方向とのうちの一方の方向の複数の信号線のうち、1以上の前記接続点を有する信号線のそれぞれをノードとし、2つの前記ノード間を接続する1本の他方の信号線のそれぞれを枝とする接続グラフを生成する第1ステップと、前記接続グラフに基づいて、前記複数の接続点の接続順を決定する第2ステップと、を有し、前記第2ステップでは、前記複数の接続点のそれぞれを接続する際に、当該接続点以外の交点を接続してしまう経路であるスニークパスが発生しないように、前記接続順を決定する。
【0013】
本発明に係る半導体集積回路は、格子状に配置された複数の縦方向の信号線及び複数の横方向の信号線と、前記複数の縦方向の信号線と前記複数の横方向の信号線との複数の交点であって、当該複数の交点のそれぞれに、当該交点における縦方向の信号線と横方向の信号線とを接続する接続状態と、接続しない非接続状態とを切り替えて保持するスイッチが設けられた複数の交点と、を備え、前記複数の交点の中から、予め指定された複数の交点である複数の接続点のそれぞれを、前記スイッチを前記非接続状態から前記接続状態へと切り替えることで接続する、信号線の接続処理が行われた半導体集積回路であって、前記信号線の接続処理は、前記縦方向と前記横方向とのうちの一方の方向の複数の信号線のうち、1以上の前記接続点を有する信号線のそれぞれをノードとし、2つの前記ノード間を接続する1本の他方の信号線のそれぞれを枝とする接続グラフを生成する第1ステップと、前記接続グラフに基づいて、前記複数の接続点の接続順を決定する第2ステップと、を有し、前記第2ステップでは、前記複数の接続点のそれぞれを接続する際に、当該接続点以外の交点を接続してしまう経路であるスニークパスが発生しないように、前記接続順を決定する。
【0014】
例えば、前記半導体集積回路は、複数のテストプログラムでテストされ、前記複数のテストプログラムによるテスト順は、前記半導体集積回路に含まれる全ての前記スイッチにおける、前記非接続状態と前記接続状態との間で切り替えを行う切替回数の総和が最小となる順であるとしてもよい。
【発明の効果】
【0015】
本発明に係る信号線の接続方法等によると、ビアスイッチFPGAにおける適切な信号線の接続方法等を提供することができる。
【図面の簡単な説明】
【0016】
【
図1】
図1は、実施の形態に係る半導体集積回路の構成の一例を示すブロック図である。
【
図2】
図2は、実施の形態に係るビアスイッチの回路構成の一例を示す模式図である。
【
図3】
図3は、実施の形態に係る原子スイッチの構成の一例及び動作原理を示す模式図である。
【
図4】
図4は、実施の形態に係る複数のビアスイッチが配置されている様子を示す模式図である。
【
図5】
図5は、スニークパス問題が生じる様子を示す模式図である。
【
図6A】
図6Aは、実施の形態に係る、複数の縦方向の信号線と、複数の横方向の信号線と、複数の接続点とのコンフィグレーションの一例を示す模式図である。
【
図6B】
図6Bは、実施の形態に係る接続木を示す模式図である。
【
図7】
図7は、接続点の接続順を決定する様子を示す模式図である。
【
図8】
図8は、実施の形態に係る信号線の接続処理のフローチャートである。
【
図9A】
図9Aは、信号線の接続状態を変更する様子を示す模式図である。
【
図9B】
図9Bは、信号線の接続状態を変更する様子を示す模式図である。
【
図10】
図10は、スニークパスが生じる様子を示す模式図である。
【
図11】
図11は、オフ状態とする第1の原子スイッチと、オフ状態としない第1の原子スイッチとを例示する模式図である。
【
図12】
図12は、実施の形態に係る手順を実行する様子の一具体例を示す模式図である。
【
図13】
図13は、実施の形態に係る手順を実行する様子の一具体例を示す模式図である。
【
図14】
図14は、実施の形態に係る信号線の変更処理のフローチャートである。
【
図15A】
図15Aは、実施の形態に係る手順により生成される完全有向グラフの一具体例を示す模式図である。
【
図15B】
図15Bは、実施の形態に係る手順により最適なテスト順が算出される様子を示す模式図である。
【発明を実施するための形態】
【0017】
以下、本開示の一態様に係る半導体集積回路の具体例について、図面を参照しながら説明する。ここで示す実施の形態は、本開示の一具体例を示すものである。従って、以下の実施の形態で示される数値、形状、構成要素、構成要素の配置及び接続形態、並びに、ステップ(工程)及びステップの順序等は、一例であって本開示を限定するものではない。以下の実施の形態における構成要素のうち、最上位概念を示す独立請求項に記載されていない構成要素については、任意に付加可能な構成要素である。また、各図は、模式図であり、必ずしも厳密に図示されたものではない。
【0018】
(実施の形態)
ここでは、本開示の一態様に係る半導体集積回路の一例であって、クロスバー回路を備える半導体集積回路について説明する。クロスバー回路とは、格子状に配置された複数の縦方向の信号線及び複数の横方向の信号線と、複数の縦方向の信号線と複数の横方向の信号線との複数の交点のそれぞれに配置された複数のスイッチとを備える回路である。ここで、各スイッチは、配置された交点における縦方向の信号線と横方向の信号線とを接続する接続状態と、接続しない状態とを切り替えて保持するスイッチである。また、必ずしも全ての交点にスイッチが必要というわけではない。
【0019】
[1.半導体集積回路の構成]
図1は、実施の形態に係る半導体集積回路の一例である半導体集積回路1の構成を示すブロック図である。ここでは、本開示の一態様に係る半導体集積回路の一例として、半導体集積回路1を例示して説明するが、本開示の一態様に係る半導体集積回路は、クロスバー回路を備える半導体集積回路であれば、必ずしも、半導体集積回路1に限定される必要はない。
【0020】
図1に示すように、半導体集積回路1は、アレイ状に配置された複数の論理設定可能ブロック10(CLB(Configurable Logic Block))を含んで構成されるビアスイッチFPGAである。
【0021】
論理設定可能ブロック10は、クロスバー回路11と、論理ブロック14とを含んで構成される。
【0022】
論理ブロック14は、各種組み合わせ回路、順序回路、メモリ回路を構築する。
【0023】
クロスバー回路11は、複数の縦方向の信号線31と、複数の横方向の信号線32と、各信号線の交点に配置された複数のビアスイッチ20とを含んで構成される。
【0024】
ビアスイッチ20は、縦方向の信号線31と横方向の信号線32との間の接続状態と非接続状態との切り替えを行う不揮発性のスイッチである。
【0025】
クロスバー回路11は、機能的には、論理ブロック14への入出力を設定するコネクションブロック12と、論理設定可能ブロック10間のグローバル配線のルーティングを設定するスイッチブロック13とを含んで構成される。
【0026】
半導体集積回路1を利用するユーザは、クロスバー回路11におけるいくつかの交点のビアスイッチ20を非接続状態から接続状態へと切り替えることでそれら交点における信号線間を接続して、半導体集積回路1に所望の論理構成を設定する。
【0027】
図2は、ビアスイッチ20の回路構成の一例を示す模式図である。ここでは、ビアスイッチ20の回路構成の一例として、
図2に図示する回路構成について説明するが、ビアスイッチ20は、縦方向の信号線31と横方向の信号線32との間の接続状態と非接続状態との切り替えを行う不揮発性のスイッチであれば、必ずしも、以下で説明する回路構成の例に限定される必要はない。
【0028】
図2に示すように、ビアスイッチ20は、第1の原子スイッチ21Aと、第2の原子スイッチ21Bと、第1のバリスタ22Aと、第2のバリスタ22Bとを含んで構成される。
【0029】
第1の原子スイッチ21Aと第2の原子スイッチ21Bとは、互いに同様の素子である。このため、両者の個体を明示的に区別する必要がない場合には、第1の原子スイッチ21A又は第2の原子スイッチ21Bのことを、単に原子スイッチ21とも称する。また、第1のバリスタ22Aと第2のバリスタ22Bとは、互いに同様の素子である。このため、両者の個体を明示的に区別する必要がない場合には、第1のバリスタ22A又は第2のバリスタ22Bのことを、単にバリスタ22とも称する。
【0030】
図3は、原子スイッチ21の構成及び動作原理を示す模式図である。
【0031】
図3に示すように、原子スイッチ21は、銅電極25と、ルテニウム電極26との間に銅イオンを含む固体電解質27を挟んだ構造を有する。
【0032】
原子スイッチ21は、銅電極25と、ルテニウム電極26との間に電圧を印加することで、固体電解質27内に含まれる銅イオンによる、銅電極25-ルテニウム電極26間の架橋28の形成、消失を可逆的に繰り返すことができる素子である。原子スイッチ21は、銅電極25が正電圧となるように、銅電極25-ルテニウム電極26間に電圧を印加されると、銅電極25-ルテニウム電極26間に架橋28が形成されてオン状態(低抵抗状態)となり、銅電極25が負電圧となるように、銅電極25-ルテニウム電極26間に電圧を印加されると、銅電極25-ルテニウム電極26間の架橋28が消失されてオフ状態(高抵抗状態)となる。原子スイッチ21は、電源供給がなくてもオン状態とオフ状態とが維持される不揮発性を有する。
【0033】
ビアスイッチ20は、信頼性向上のため、
図2に示すように、2個の原子スイッチ21(第1の原子スイッチ21Aと、第2の原子スイッチ21Bと)を逆方向に直列接続したCAS(Complementary Atom Switch)構造を有する。
【0034】
ビアスイッチ20は、
図2に示すように、CAS構造の制御端子部分に、バリスタ22を2つ、すなわち、第1の原子スイッチ21A側に配置された第1のバリスタ22Aと、第2の原子スイッチ21B側に配置された第2のバリスタ22Bとを有する。制御線と信号線との間に閾値以上の電圧が印加されることで、バリスタ22が導通し、原子スイッチ21のオン状態とオフ状態とが切り替えられる。一方で、制御線と信号線との間に閾値以上の電圧が印加されない場合には、バリスタ22が非導通となり、制御線と信号線とが電気的に切り離され、ビアスイッチ20は、信号線との接続端子を2つ有する2端子素子として機能する。
【0035】
図4は、クロスバー回路11において、複数の縦方向の信号線31と、複数の横方向の信号線32との各交点に、複数のビアスイッチ20が配置されている様子を示す模式図である。
図4において、縦方向の信号線31Aと縦方向の信号線31Bとは、それぞれ、複数の縦方向の信号線31のうちの1本であり、横方向の信号線32Aと横方向の信号線32Bとは、それぞれ、複数の横方向の信号線32のうちの1本である。
【0036】
ビアスイッチ20は、配置される交点において、第1の原子スイッチ21A側の端子が縦方向の信号線31に接続され、第2の原子スイッチ21B側の端子が縦方向の信号線31に接続されることで、縦方向の信号線31と横方向の信号線32とに接続される。
【0037】
図4に示されるように、横方向に並ぶビアスイッチ20それぞれの、第1のバリスタ22A側の端子は、縦方向の制御線41(
図4中の縦方向の制御線41A、41Bに対応)に接続され、縦方向に並ぶビアスイッチ20それぞれの、第2のバリスタ22B側の端子は、横方向の制御線42(
図4中の横方向の制御線42A、42Bに対応)に接続される。
【0038】
半導体集積回路1を利用するユーザは、所望の第1の原子スイッチ21Aのオン状態とオフ状態との切り替えを行う場合には、所望の第1の原子スイッチ21Aを有するビアスイッチ20に接続される縦方向の信号線31と、そのビアスイッチ20に接続される横方向の制御線42とに、閾値以上の電圧を印加することで、オン状態とオフ状態との切り替えを行う。また、半導体集積回路1を利用するユーザは、所望の第2の原子スイッチ21Bのオン状態とオフ状態との切り替えを行う場合には、所望の第2の原子スイッチ21Bを有するビアスイッチ20に接続される横方向の信号線32と、そのビアスイッチ20に接続される縦方向の制御線41とに、閾値以上の電圧を印加することで、オン状態とオフ状態との切り替えを行う。
【0039】
[2.スニークパス問題]
ここでは、上記構成の半導体集積回路1において生じ得るスニークパス問題について説明する。
【0040】
スニークパス問題とは、半導体集積回路1を利用するユーザが、所望の第1の原子スイッチ21A又は第2の原子スイッチ21Bのオン状態とオフ状態との切り替えを行う際に、所望の第1の原子スイッチ21A又は第2の原子スイッチ21B以外の、第1の原子スイッチ21A又は第2の原子スイッチ21Bのオン状態とオフ状態との切り替えが行われてしまう現象のことを言う。
【0041】
この現象は、既に接続状態となっているビアスイッチ20によって、一の縦方向の信号線31に印加した電圧が、他の縦方向の信号線31に回り込むこと、又は、一の横方向の信号線32に印加した電圧が、他の横方向の信号線32に回り込むことによって発生する。
【0042】
図5は、半導体集積回路1において、スニークパス問題が生じる様子を示す模式図である。
【0043】
図5において、第1の原子スイッチ21Aaと、第2の原子スイッチ21Baと、第1の原子スイッチ21Abと、第2の原子スイッチ21Bbとはオン状態であり、第2の原子スイッチ21Bcと、第2の原子スイッチ21Bdとはオフ状態である。このような状態において、半導体集積回路1を利用するユーザは、第2の原子スイッチ21Bcをオン状態にするために、横方向の信号線32Aと縦方向の制御線41Bとの電位差が閾値以上になるように、横方向の信号線32AにHIGH電圧、縦方向の制御線41BにLOW電圧を印加する。すると、横方向の信号線32Aに印加されたHIGH電圧が、第2の原子スイッチ21Ba及び第1の原子スイッチ21Aaを介して縦方向の信号線31Aに回り込み、さらに、第1の原子スイッチ21Ab及び第2の原子スイッチ21Bbを介して横方向の信号線32Bに回り込む。その結果、所望の第2の原子スイッチ21Bcがオン状態になるとともに、所望しない第2の原子スイッチ21Bdもがオン状態となってしまう。
【0044】
従来、半導体集積回路1において、縦方向と横方向との双方に複数の接続状態となるビアスイッチ20(
図5の例においては、第1の原子スイッチ21Abと第2の原子スイッチ21Bbとを含むビアスイッチ20)が存在するコンフィギュレーションを禁止することで、スニークパス問題の発生を回避している。
【0045】
しかしながら、上記スニークパス問題の発生の回避方法では、上記コンフィギュレーションが禁止されるため、半導体集積回路1におけるFPGAとしてのプログラミングの自由度が低下してしまうという問題がある。
【0046】
そこで、発明者は、上記問題に鑑み、所望のビアスイッチ20を接続する際に、それらビアスイッチ20をスニークパス問題が発生しない順に接続することができれば、スニークパス問題を発生させることなくそれらビアスイッチ20を接続することができるはずであるという点に着目し、半導体集積回路1におけるFPGAとしてのプログラミングの自由度の低下を招くことなくスニークパス問題の発生の回避方法を見出すべく、鋭意考察、実験を重ねた。その結果、発明者は、実用上問題のないビアスイッチ20の接続範囲において、接続状態となるビアスイッチ20のいかなるコンフィグレーションを禁止することなく、スニークパス問題の発生を回避する方法、すなわち、半導体集積回路1におけるFPGAとしてのプログラミングの自由度の低下を招くことなくスニークパス問題の発生の回避方法に想到した。ここで、実用上問題のないビアスイッチ20の接続とは、ビアスイッチ20の接続において、冗長な配線経路(いわゆるループ)が発生しないビアスイッチ20の接続のことをいう。一般に、配線経路にループが発生している場合には、その配線経路の配線容量は、ループが発生していない場合の配線経路の配線容量よりも大きくなる。このため、配線経路にループが発生している場合には、配線経路にループが発生していない場合に比べて、動作速度、消費電力の面で不利になる。従って、配線経路にループが発生しないようにビアスイッチ20を接続することは、実用上問題がないことに加えて、上記不利な面を生じないという点において優れていると言える。
【0047】
以下、発明者が想到した、スニークパス問題の回避方法について説明する。
【0048】
[3.スニークパス問題の回避方法]
まず、縦方向と横方向とのうちの一方の方向を選択する。ここでは、一方の方向として縦方向を選択するとして説明する。以下の説明において、一方の方向と他方の方向とを入れ替えても、すなわち、縦方向と横方向とを入れ替えても同様の議論が成立する。このため、一方の方向として横方向を選択する場合の説明を省略する。また、以下の説明において、複数の縦方向の信号線31と複数の横方向の信号線32との複数の交点のうち、ビアスイッチ20が接続状態となることで、縦方向の信号線31と横方向の信号線32とが接続される交点のことを「接続点」とも称する。
【0049】
次に、選択した方向の配線である、複数の縦方向の信号線31のうち、1以上の接続点を有する信号線のそれぞれをノードとし、2つのノード間を接続する横方向の信号線32のそれぞれを枝とする接続グラフを生成する。
【0050】
そして、生成した接続グラフに基づいて、所望の接続点のそれぞれを接続する際に、所望の接続点以外の接続点を接続してしまう経路であるスニークパスが発生しないように、接続点の接続順を決定する。ここで、配線経路にループが発生していな場合には、接続状態となるビアスイッチ20(すなわち、接続点)のいかなるコンフィグレーションであっても、必ず、ツリー構造を有する接続グラフである接続木を作成することができる。ここでは、接続グラフの一例として、接続グラフが接続木であるとして説明するが、接続グラフは、必ずしもツリー構造を有する接続木の例に限定される必要はない。
【0051】
以下、図面を参照しながら、接続木の作成方法について、より具体的に説明する。
【0052】
図6Aは、複数の縦方向の信号線31と、複数の横方向の信号線32と、複数の接続点との具体的なコンフィグレーションの一例を示す模式図である。
図6Aの例は、複数の縦方向の信号線31が5本で、複数の横方向の信号線32が5本である場合において、接続点が接続点B~接続点Hの6か所であるコンフィギュレーションの例となっている。
【0053】
図6Bは、
図6Aで示されるコンフィギュレーションから生成される接続木を示す模式図である。
【0054】
まず、縦方向の信号線31のうち、1以上の接続点を有する信号線のそれぞれをノードとする。ここでは、縦方向の信号線SV1~SV5の全てが1以上の接続点を有しているため、縦方向の信号線SV1~SV5のそれぞれを、ノードSV1~ノードSV5とする。
【0055】
次に、各ノードのそれぞれに対して、対応する信号線に存在する接続点を、そのノードの接続点とする。ここでは、接続点EをノードSV1の接続点とし、接続点B、F、GをノードSV2の接続点とし、接続点CをノードSV3の接続点とし、接続点DをノードSV4の接続点とし、接続点HをノードSV5の接続点とする。
【0056】
最後に、2つのノード間を接続する横方向の信号線32のそれぞれを枝として、それら2つのノードを接続することで接続木を生成する。この際、どのノードを根ノードとするかは任意である。ここでは、ノードSV3の接続点CとノードSV2の接続点Bとを接続し、ノードSV2の接続点FとノードSV1の接続点Eとを接続し、ノードSV2の接続点GとノードSV5の接続点Hとを接続し、ノードSV3の接続点CとノードSV4の接続点Dとを接続することで、ノードSV3を根ノードとする接続木を生成する。
【0057】
ここで、生成した接続木において、各葉ノードにおける、親ノードへの接続点は、スニークパスを生じることなく接続することが可能な接続点となっている。
【0058】
以下、図面を参照しながら、生成した接続木に基づいて接続点の接続順を決定する方法について、より具体的に説明する。
【0059】
図7は、生成した接続木に基づいて接続点の接続順を決定する様子を示す模式図である。
【0060】
まず、生成した接続木における一の葉ノードを選択し(以下、この選択のことを「第1の処理」とも称する)、選択した葉ノードにおける親ノードへの接続点を、生成した接続木において最後に接続する接続点に決定する(以下、この決定のことを「第2の処理」とも称する)。上述した通り、選択した葉ノードにおける親ノードへの接続点は、生成した接続木において、スニークパスを生じることなく接続することが可能な接続点となっている。ここでは、生成した接続木における一の葉ノードであるノードSV1を選択し、選択した葉ノードSV1における親ノードSV2への接続点である接続点Eを、生成した接続木において最後に接続する接続点に決定する。
【0061】
次に、生成した接続木から、選択した一の葉ノードを除外して、新たな接続木を生成する(以下、この生成のことを「第3の処理」とも称する)。ここでは、葉ノードSV1を除外した、ノードSV3とノードSV2とノードSV5とノードSV4とからなる新たな接続木を生成する。
【0062】
そして、新たな接続木に対して、さらに第1の処理~第3の処理を行うことで、さらなる新たな接続木を生成する。上述した通り、第2の処理において選択した葉ノードにおける親ノードへの接続点は、新たな接続木において、スニークパスを生じることなく接続することが可能な接続点となっている。ここでは、第1の処理において、生成した新たな接続木における一の葉ノードであるノードSV5を選択し、選択した葉ノードSV5における親ノードSV2への接続点である接続点Hを、生成した新たな接続木において最後に接続する接続点に決定する。そして、葉ノードSV5を削除した、ノードSV3とノードSV2とノードSV4とからなるさらなる新たな接続木を生成する。
【0063】
以下、さらなる新たな接続木に対して、これ以上新たな接続木を生成することができなくなるまで、第1の処理~第3の処理を繰り返し行うことで、再帰的に、各接続点の接続順を決定する。この際、一の葉ノードを選択した場合において、その一の葉ノードにおける、親ノードへの接続点以外の接続点は、親ノードへの接続点よりも先に接続する接続順であれば、どのような接続順に決定しても構わない。ここでは、各接続点の接続順を、接続点C、接続点D、接続点G、接続点F、接続点B、接続点H、接続点Eの接続順と決定する。
【0064】
なお、上述したスニークパス問題の回避方法によると、接続木における一の子ノードにおける接続点の方が、その一の子ノードの親ノードにおける接続点よりも後に接続するように、接続順が決定されることになる。
【0065】
上述したスニークパス問題の回避方法は、例えば、コンピュータがプログラムを実行することで実現される。
【0066】
以下、上述したスニークパス問題の回避方法を実現するためにコンピュータが実行する処理の一例である信号線の接続処理について説明する。
【0067】
[4.信号線の接続処理]
図8は、信号線の接続処理のフローチャートである。
【0068】
信号線の接続処理が開始されると、コンピュータは、縦方向の複数の信号線31のうち、1以上の接続点を有する信号線のそれぞれをノードとし、2つのノード間を接続する横方向の信号線32のそれぞれを枝とする接続木を生成する(ステップS100)。
【0069】
接続木を生成すると、コンピュータは、生成した接続木における一の葉ノードを選択する(ステップS110)。
【0070】
一の葉ノードを選択すると、コンピュータは、選択した葉ノードにおける親ノードへの接続点を、生成した接続木における最後に接続する接続点に決定する(ステップS120)。
【0071】
最後に接続する接続点を決定すると、コンピュータは、選択した一の葉ノードを除外した接続木を生成可能であるか否かを調べる(ステップS130)。
【0072】
ステップS130の処理において、選択した一の葉ノードを除外した接続木を生成可能である場合には(ステップS130:Yes)、選択した一の葉ノードを除外した新たな接続木を生成し(ステップS140)、再び、ステップS110の処理に進む。これにより、ステップS110の処理~ステップS140の処理からなるループ処理が実行される。
【0073】
ステップS130の処理において、選択した一の葉ノードを除外した接続木を生成可能でない場合には(ステップS130:No)、コンピュータは、ステップS130:Noの処理に進むより前に実行されたループ処理の処理結果に沿って、再帰的に接続点の接続順を決定する(ステップS150)。
【0074】
ステップS150の処理が終了すると、コンピュータは、その信号線の接続処理を終了する。
【0075】
[5.接続状態の変更]
ここでは、半導体集積回路1において、複数のオン状態のビアスイッチ20によって接続される、複数の縦方向の信号線31と複数の横方向の信号線32との接続状態を、第1の接続状態から第2の接続状態へと変更させる接続状態の変更方法について説明する。以下では、複数のオン状態のビアスイッチ20によって接続される、複数の縦方向の信号線31と複数の横方向の信号線32との接続状態のことを、単に「信号線の接続状態」とも称する。
【0076】
半導体集積回路1では、信号線の接続状態を第1の接続状態から第2の接続状態へと接続状態を変更する過程において、スニークパス問題が生じないように、信号線の接続状態を変更する必要がある。
【0077】
信号線の接続状態を第1の接続状態から第2の接続状態へと変更する場合には、例えば、一旦、全てのビアスイッチ20を非接続状態とすることで、全ての複数の縦方向の信号線31と全ての複数の横方向の信号線32とが接続しない状態(以下、この状態のことを「未接続な接続状態」とも称する)に変更した後に、この未接続な接続状態から第2の接続状態へと、上述したスニークパス問題の回避方法を利用して変更することで、スニークパス問題が生じないように、信号線の接続状態を第1の接続状態から第2の接続状態へと変更することができる。
【0078】
しかしながら、この信号線の接続状態の変更方法では、本来非接続状態に変更する必要がない接続状態のビアスイッチ20に対して、一旦非接続状態に変更した後に再び接続状態に変更してしまうことになる可能性がある。
【0079】
図9Aは、信号線の接続状態を、第1の接続状態から第2の接続状態へと変更する際に、途中状態として、一旦、第1の接続状態から未接続な接続状態に変更した後に、未接続な接続状態から第2の接続状態へと変更する様子を示す模式図である。
【0080】
図9Aにおいて、共通接続点101A~共通接続点101Fは、それぞれ、第1の接続状態と第2の接続状態とで共通する接続点である。
【0081】
第1の非共通接続点102A~第1の非共通接続点102Eは、それぞれ、第1の接続状態における接続点のうち、共通接続点101A~共通接続点101Fを除外した接続点である。
【0082】
第2の非共通接続点103A~第2の非共通接続点103Eは、それぞれ、第2の接続状態における接続点のうち、共通接続点101A~共通接続点101Fを除外した接続点である。
【0083】
図9Bは、信号線の接続状態を、第1の接続状態から第2の接続状態へと変更する際に、途中状態として、一旦、第1の接続状態から、共通接続点101A~共通接続点101Fにおけるビアスイッチ20以外の全てのビアスイッチ20を非接続状態とする状態(以下、共通接続点におけるビアスイッチ20以外の全てのビアスイッチ20を非接続状態とする状態のことを「共通部分のみの接続状態」とも称する)に変更した後に、共通部分のみの接続状態から第2の接続状態へと変更する様子を示す模式図である。
【0084】
図9Bからも理解されるように、信号線の接続状態を第1の接続状態から第2の接続状態へと変更する場合において、第1の接続状態から、一旦、共通部分のみの接続状態に変更した後に、第2の接続状態に変更する変更方法は、共通接続点101A~共通接続点101Fにおけるビアスイッチ20の状態を変更する必要がなく、状態を変更するビアスイッチ20の数が適正化された変更方法である。これに対して、
図9Aからも理解されるように、信号線の接続状態を第1の接続状態から第2の接続状態へと変更する場合において、第1の接続状態から、一旦、未接続な接続状態に変更した後に、第2の接続状態に変更する変更方法は、状態を変更するビアスイッチ20の数が適正化された変更方法ではない。
【0085】
一般に、ビアスイッチ20の状態を変更する回数には、信頼性上の上限がある。このため、信号線の接続状態を変更する度に、本来非接続状態に変更する必要がない接続状態のビアスイッチ20に対して、一旦非接続状態に変更した後に再び接続状態に変更してしまうと、半導体集積回路1の長寿命化を阻害してしまうという問題がある。
【0086】
そこで、発明者は、上記問題に鑑み、信号線の接続状態を第1の接続状態から第2の接続状態に変更する際に、スニークパス問題を回避しつつ、一旦、共通部分のみの接続状態に変更した後に、第2の接続状態に変更することができれば、信号線の接続状態を第1の接続状態から第2の接続状態に変更する際における、状態を変更するビアスイッチの数を適正化できるはずであるという点に着目し、半導体集積回路1の長寿命化を実現すべく、鋭意考察、実験を重ねた。その結果、発明者は、信号線の接続状態を第1の接続状態から第2の接続状態に変更する際に、スニークパス問題を回避しつつ、一旦、共通部分のみの接続状態に変更した後に、第2の接続状態に変更することができる信号線の接続状態の変更方法、すなわち、半導体集積回路1の長寿命化を実現することができる信号線の接続状態の変更方法に想到した。
【0087】
以下、発明者が想到した、信号線の接続状態の変更方法について説明する。
【0088】
[6.信号線の接続状態の変更方法]
以下の説明において、第1の接続点と第2の接続点とで共通する接続点のことを「共通接続点」と称し、第1の接続点から共通接続点を除外した接続点のことを「第1の非共通接続点」と称し、第2の接続点から共通接続点を除外した接続点のことを「第2の非共通接続点」と称する。
【0089】
信号線の接続状態の変更方法は、下記手順1、手順2、手順3をこの順番で実行することで実現される。
【0090】
手順1:第1の非共通接続点のそれぞれにおいて、ビアスイッチ20を接続状態から非接続状態へと切り替える。
【0091】
手順2:第2の非共通接続点におけるビアスイッチ20を非接続状態から接続状態へと切り替えるための前処理を行う。
【0092】
手順3:第2の非共通接続点におけるビアスイッチ20を非接続状態から接続状態へと切り替える。
【0093】
以下、これら手順1、手順2、手順3について、より具体的に説明する。
【0094】
[6-1.手順1]
上述した通り、手順1は、第1の非共通接続点のそれぞれにおいて、ビアスイッチ20を接続状態から非接続状態へと切り替える処理である。
【0095】
手順1を実行するにあたって、ビアスイッチ20の状態の切り替え順によっては、スニークパスが生じる可能性がある。しかしながら、ここで生じるスニークパスは、非接続状態のビアスイッチ20の状態を、接続状態から非接続状態へと切り替える方向のスニークパスとなるため、実用上問題は生じない。従って、手順1を実行するにあたって、ビアスイッチ20の状態の切り替え順は任意である。
【0096】
図10は、手順1を実行する際に、半導体集積回路1において、スニークパスが生じる様子を示す模式図である。
【0097】
図10において、第1の原子スイッチ21Ajと、第2の原子スイッチ21Bjと、第1の原子スイッチ21Akと、第2の原子スイッチ21Bkと、第1の原子スイッチ21Amと、第2の原子スイッチ21Bmと、第1の原子スイッチ21Anと、第2の原子スイッチ21Bnとはオン状態である。このような状態において、半導体集積回路1を利用するユーザは、第1の原子スイッチ21Ajをオフ状態にするために、横方向の制御線42Jと縦方向の信号線31Jとの電位差が閾値以上になるように、横方向の制御線42JにHIGH電圧、縦方向の信号線31JにLOW電圧を印加する。すると、縦方向の信号線31Jに印加されたLOW電圧が、第1の原子スイッチ21Ak及び第2の原子スイッチ21Bkを介して横方向の信号線32Lに回り込み、さらに、第2の原子スイッチ21Bm及び第1の原子スイッチ21Amを介して、縦方向の信号線31Kに回り込み、さらに、第2の原子スイッチ21Bn及び第1の原子スイッチ21Anを介して、縦方向の信号線31Lに回り込む。その結果、所望の第1の原子スイッチ21Ajがオフ状態になるとともに、所望しない第1の原子スイッチ21Ap及び所望しない第1の原子スイッチ21Aqもがオフ状態となってしまう。しかしながら、これら、第1の原子スイッチ21Ap及び第1の原子スイッチ21Aqは、そもそも、必ず元々オフ状態であるため、実用上問題は生じない。
【0098】
[6-2.手順2]
手順2は、第2の非共通接続点におけるビアスイッチ20の第2原子スイッチ21Bをオン状態とする処理である。
【0099】
但し、この処理を行う際には、スニークパスが生じないように、第2の非共通接続点と同一行(ここで、行は横方向)の接続状態のビアスイッチ20のうち、同一列(ここで、列は縦方向)に接続状態のビアスイッチ20存在するビアスイッチ20に対しては、予め、そのビアスイッチ20を非接続状態としておく必要がある。
【0100】
このため、手順2は、下記手順2.1、手順2.2をこの順番で実行することで実現される。
【0101】
手順2.1:第2の非共通接続点と同一行の接続状態のビアスイッチ20のうち、同一列に接続状態のビアスイッチ20が存在するビアスイッチ20の第1の原子スイッチ21Aをオフ状態とする。以下、手順2.1でオフ状態とした第1の原子スイッチ21Aを含む共通接続点のことを、「前処理済共通接続点」とも称する。
【0102】
手順2.2:第2の非接続点におけるビアスイッチ20の第2の原子スイッチ21Bをオン状態とする。
【0103】
図11は、手順2.1の実行において、オフ状態とする第1の原子スイッチ21Aと、オフ状態としない第1の原子スイッチ21Aとを例示する模式図である。
【0104】
図11において、第1の原子スイッチ21Apと、第2の原子スイッチ21Bpと、第1の原子スイッチ21Amと、第2の原子スイッチ21Bmと、第1の原子スイッチ21Anと、第2の原子スイッチ21Bnとはオン状態である。このような状態において、第1の原子スイッチ21Ak及び第2の原子スイッチ21Bkを含むビアスイッチ20が、第2の非共通接続点のビアスイッチ20である場合には、同一列に接続状態のビアスイッチ20(第1の原子スイッチ21Ak及び第2の原子スイッチ21Bkを含むビアスイッチ20)を含むビアスイッチ20の第1の原子スイッチ21Amは、オフ状態とするとなるのに対して、同一列に接続状態のビアスイッチ20を含まないビアスイッチ20の第1の原子スイッチ21Anは、オフ状態とする対象とならない。
【0105】
[6-3.手順3]
手順3は、第2の非共通接続点及び前処理済共通接続点におけるビアスイッチ20を非接続状態から接続状態へと切り替える処理である。
【0106】
但し、この処理を行う際には、スニークパスが生じないようにする必要がある。さらには、スニークパスが生じないようにするために、接続状態を変更するビアスイッチ20が必要となる場合には、それら接続状態を変更するビアスイッチ20の数を最小限に抑える必要がある。
【0107】
このため、手順3は、下記手順3.1、手順3.2、手順3.3、手順3.4をこの順で実行することで実現される。
【0108】
手順3.1:スニークパスが生じないようにするために接続状態を変更する必要があるビアスイッチ20の数を最小とするように、接続木の根ノードを調整する。
【0109】
手順3.2:手順3.1で根ノードが調整された接続木において、第2の非共通接続点及び前処理済共通接続点を有するノード及びそのノードの子孫ノードにおける親ノードへの接続点(以下、この接続点のことを、「第3の接続点」とも称する)におけるビアスイッチ20のそれぞれを、接続状態から非接続状態へと切り替える。
【0110】
手順3.3:共通接続点及び第2の非共通接続点のうちの、親ノードへの接続点以外の接続点におけるビアスイッチ20のそれぞれを、非接続状態から接続状態へと切り替える。
【0111】
手順3.4:第3の接続点におけるビアスイッチ20のそれぞれを、非接続状態から接続状態へと切り替える。この際、スニークパス問題が生じないように、上述したスニークパス問題の回避方法を利用する。
【0112】
図12は、手順3を実行する様子の一具体例を示す模式図である。
【0113】
図12において、A、B、C、D、E、Fは、それぞれノード名を示し、各黒丸は、共通接続点のうち、ビアスイッチ20が接続状態となる共通接続点を示し、各白抜きの丸は、共通接続点のうち、ビアスイッチ20が非接続状態となる共通接続点を示し、黒丸を含む二重丸は、第2の非共通接続点のうち、ビアスイッチ20が接続状態となる第2の非共通接続点を示し、黒丸を含まない二重丸は、第2の非共通接続点のうち、ビアスイッチ20が非接続状態となる第2の非共通接続点を示す。
【0114】
図12に示すように、手順3では、まず、手順3.1を実行することで、第3の接続点の数を最小とするように、接続木の根ノードを調整する。すなわち、対象とする接続木における各ノードのそれぞれが根ノードとなるように対象とする接続木を変形した場合において、変形した接続木のうち、第3の接続点の数が最小となる1以上の接続木を探し出す。そして、探し出した1以上の接続木のうちの1つを、根ノードが調整された新たな接続木とする。ここでは、ノードAが根ノードとなるように、接続木の根ノードを調整する。この手順3.1については、後程、具体例を示す図面を参照しながら、より詳細に説明する。
【0115】
次に、手順3.2を実行することで、第3の接続点におけるビアスイッチ20のそれぞれを、接続状態から非接続状態へと切り替える。ここでは、ノードB、ノードC、ノードEにおける親ノードへの接続点におけるビアスイッチ20のそれぞれを、接続状態から非接続状態へと切り替える。
【0116】
次に、手順3.3を実行することで、共通接続点及び第2の非共通接続点のうちの、親ノードへの接続点以外の接続点におけるビアスイッチ20のそれぞれを、非接続状態から接続状態へと切り替える。ここでは、ノードBに存在する第3の共通接続点におけるビアスイッチ20を、非接続状態から接続状態へと切り替える。
【0117】
最後に、手順3.4を実行することで、第3の接続点におけるビアスイッチ20のそれぞれを、上述したスニークパス問題の回避方法を利用して、非接続状態から接続状態へと切り替える。ここでは、ノードBの第3の接続点、ノードCの第3の接続点、ノードEの第3の接続点の順で、第3の接続点におけるビアスイッチ20のそれぞれを、非接続状態から接続状態へと切り替える。
【0118】
図13は、手順3.1を実行する様子の一具体例を示す模式図である。
【0119】
図13において、A、B、C、D、E、F、G、H、I、Jは、それぞれノード名を示し、白抜きの丸aは、ノードAに含まれる第2の非共通接続点を示し、白抜きの丸bは、ノードBに含まれる第2の非共通接続点を示し、白抜きの丸fは、ノードFに含まれる第2の非共通接続点を示し、白抜きの丸gは、ノードGに含まれる第2の非共通接続点を示し、白抜きの丸iは、ノードIに含まれる第2の非共通接続点を示す。
【0120】
まず、第2の非共通接続点のそれぞれについて、接続木を構成するノードそれぞれを根ノードとした場合における、第3の接続点の数及び、第3の接続点を含むノードに含まれる第2の非共通接続点を算出する。ここでは、第2の非共通接続点aについて、ノードB側に根ノードがある場合における第3の接続点の数は3となり、第3の接続点を含むノードに含まれる第2の非共通接続点は、第2の非共通接続点a、第2の非共通接続点fとなる。ここで、第2の非共通接続点fの第3の接続点は、第2の非共通接続点aの第3の接続点に含まれる。このため、第2の非共通接続点fの第3の接続点の数を、第2の非共通接続点aの第3の接続点の数と別にカウントする必要はない。また、第2の非共通接続点aについて、ノードC側に根ノードがある場合における第3の接続点の数は8となり、第3の接続点を含むノードに含まれる第2の非共通接続点は、第2の非共通接続点a、第2の非共通接続点b、第2の非共通接続点g、第2の非共通接続点iとなる。ここで、第2の非共通接続点b、第2の非共通接続点g、第2の非共通接続点iの第3の接続点は、第2の非共通接続点aの第3の接続点に含まれる。このため、第2の非共通接続点b、第2の非共通接続点g、第2の非共通接続点iの第3の接続点の数を、第2の非共通接続点aの第3の接続点の数と別にカウントする必要はない。また、第2の非共通接続点aについて、ノードAが根ノードとなる場合における第3の接続点の数は9となり、第3の接続点を含むノードに含まれる第2の非共通接続点は、第2の非共通接続点a、第2の非共通接続点b、第2の非共通接続点f、第2の非共通接続点g、第2の非共通接続点iとなる。ここで、第2の非共通接続点b、第2の非共通接続点f、第2の非共通接続点g、第2の非共通接続点iの第3の接続点は、第2の非共通接続点aの第3の接続点に含まれる。このため、第2の非共通接続点b、第2の非共通接続点f、第2の非共通接続点g、第2の非共通接続点iの第3の接続点の数を、第2の非共通接続点aの第3の接続点の数と別にカウントする必要はない。以下、第2の非共通接続点b、第2の非共通接続点f、第2の非共通接続点g、第2の非共通接続点iについても同様であるが、ここではその説明を省略する。
【0121】
次に、算出した、接続木を構成するノードそれぞれを根ノードとした場合における、第3の接続点の数及び、第3の接続点を含むノードに含まれる非共通接続点を、集合被覆問題にモデル化し、モデル化した集合被覆問題を解くことで、第3の接続点の数が最小となる1以上の接続木を探し出す。そして、探し出した1以上の接続木のうちの1つを、根ノードが調整された新たな接続木とする。
【0122】
なお、接続木を構成するノードそれぞれを根ノードとした場合における、第3の接続点の数を算出して、それら算出した数のうち最も少ない数が、上記集合被覆問題を解いて得られる最小の数となることが証明されている。このため、対象となる接続木を構成するノードそれぞれを根ノードとした場合における、第3の接続点の数が最小となるノードを根ノードとする接続木を、根ノードが調整された新たな接続木としてもよい。この方法によって、接続木の根ノードを調整する方が、上記集合被覆問題を解くことで接続木の根ノードを調整するよりも、より少ない演算量で接続木の根ノードを調整することができる。
【0123】
上述した信号線の接続状態の変更方法は、例えば、コンピュータがプログラムを実行することで実現される。
【0124】
以下、上述した信号線の接続状態の変更方法を実現するためにコンピュータが実行する処理の一例である信号線の変更処理について説明する。
【0125】
[7.信号線の変更処理]
図14は、信号線の変更処理のフローチャートである。
【0126】
信号線の変更処理が開始されると、コンピュータは、第1の非共通接続点のそれぞれを、ビアスイッチ20を接続状態から非接続状態へと切り替えることで非接続とする(ステップS200)。
【0127】
第1の非共通接続点のそれぞれを非接続とすると、コンピュータは、第2の非共通接続点と同一行の接続状態のビアスイッチ20のうち、同一列に接続状態のビアスイッチ20が存在するビアスイッチ20の第1の原子スイッチ21Aをオフ状態として、第2の非共通接続点におけるビアスイッチ20の第2の原子スイッチ21Bをオン状態とすることで、第2の非共通接続点におけるビアスイッチ20を非接続状態から接続状態へと切り替えるための前処理を行う(ステップS210)。
【0128】
前処理を行うと、コンピュータは、第3の接続点の数が最小となるツリー構造を探索し、探索したツリー構造となるように、接続木の根ノードを調整する(ステップS220)。
【0129】
接続木の根ノードを調整すると、コンピュータは、根ノードを調整した接続木において、根ノード側に他の第2の非共通接続点及び前処理済共通接続点が存在しない第2の非共通接続点及び前処理済共通接続点(以下、「代表接続点」とも称する)の中から、未選択の一の代表接続点を選択する(ステップS230)。ここで、未選択の代表接続点とは、ステップS230の処理~後述するステップS270:Yesの処理により形成されるループ処理において、未だ選択されたことのない代表接続点のことを言う。
【0130】
一の代表接続点を選択すると、コンピュータは、選択した代表接続点を有するノード及び当該ノードの子孫ノードにおける第3の接続点のそれぞれを、ビアスイッチ20を接続状態から非接続状態へと切り替えることで非接続とする(ステップS240)。
【0131】
上記第3の接続点のそれぞれを非接続とすると、コンピュータは、代表接続点のノード及び子孫ノード内の、第2の非共通接続点及び前処理済共通接続点のうち、第3の接続点以外の接続点のそれぞれを、ビアスイッチ20を非接続状態から接続状態へと切り替えることで接続する(ステップS250)。
【0132】
上記接続点のそれぞれを接続すると、コンピュータは、代表接続点のノード及び子孫ノードにおける未接続の第3の接続点のそれぞれを、ビアスイッチ20を非接続状態から接続状態へと切り替えることで接続する(ステップS260)。
【0133】
上記第3の接続点のそれぞれを接続すると、コンピュータは、未選択の代表接続点が存在するか否かを調べる(ステップS270)。
【0134】
ステップS270の処理において、未選択の代表接続点が存在する場合には(ステップS270:Yes)、再びステップS230の処理に進む。これにより、ステップS230の処理~ステップS270:Yesの処理からなるループ処理が形成される。
【0135】
ステップS270の処理において、未選択の代表接続点が存在しない場合には(ステップS270:No)、コンピュータは、その信号線の変更処理を終了する。
【0136】
[8.テスト]
ここでは、半導体集積回路1を製造した後に実行されるテストについて説明する。ここでのテストは、製造された半導体集積回路1の不具合の有無の検査を行うテストのことを言う。
【0137】
一般に、半導体集積回路のテストを行う際には、複数のテストプログラムが実行される。
【0138】
半導体集積回路1において複数のテストプログラムが実行される際には、テストプログラムが切り替えられる毎に、複数のビアスイッチ20の状態が変更される。半導体集積回路1の長寿命化を実現するためには、複数のテストプログラムが実行される際に状態が変更されるビアスイッチ20の数を適正化することが有効である。このため、半導体集積回路1をテストする場合には、状態が変更されるビアスイッチ20の数が適正化される方法(以下、この方法のことを「適正化されたテスト方法」とも称する)で、複数のテストプログラムを実行する。
【0139】
以下、この適正化されたテスト方法について説明する。
【0140】
適正化されたテスト方法は、下記手順1、手順2、手順3をこの順番で実行することで実現される。
【0141】
手順1:全ての交点におけるビアスイッチ20が非接続状態であるプログラム及び複数のテストプログラムの各プログラム間における、プログラムを切り替える際に変更されるビアスイッチ20の数を算出する。この際、上述した信号線の接続状態の変更方法を利用して、プログラムを切り替える際に変更されるビアスイッチ20の数を算出する。
【0142】
手順2:各プログラム間における、プログラムを切り替える際に変更されるビアスイッチ20の数を枝の重みとする完全有向グラフを生成する。
【0143】
手順3:生成した完全有向グラフを、全ての交点におけるビアスイッチ20が非接続状態であるプログラムを始点と終点にする非対称巡回セールスマン問題と捉えて最適なテスト順を算出する。
【0144】
図15Aは、手順2により生成される完全有向グラフの一具体例を示す模式図である。
【0145】
図15Aにおいて、「All off config」は、全ての交点におけるビアスイッチ20が非接続状態であるプログラム、「Test prog A」、「Test prog B」、「Test prog C」、「Test prog D」は、それぞれ、テストプログラムを示す。すなわち、
図15Aは、プログラムの数が5つである場合の完全有向グラフを示す模式図となっている。また、
図15Aにおいて、各矢印は各プログラム間の切り替え順を示し、各矢印に対応付けられている各数字は、その矢印の順にプログラムが切り替えられた場合に、状態が変更されるビアスイッチ20の数を示す。
【0146】
図15Aに示されるように、各プログラム間でプログラムを切り替える場合には、プログラムの切り替え順が変わると、状態が変更されるビアスイッチ20の数も変わる(但し、たまたま一致する場合もあり得る)。このため、手順2では、単に完全グラフを生成するのではなく、完全有向グラフを生成する必要がある。
【0147】
図15Bは、手順3により最適なテスト順が算出される様子を示す模式図である。
【0148】
図15Bに示されるように、
図15Aに示される完全有向グラフを、始点と終点を「All off conifg」とする非対称巡回セールスマン問題と捉えて算出される最適なテスト順は、「All off config」、「Test prog B」、「Test prog A」、「Test prog D」、「Test prog C」、「All off config」の順となる。
【0149】
このように、手順3を行うことで、複数のテストプログラムによるテスト順は、半導体集積回路1に含まれる全てのビアスイッチ20における、非接続状態と接続状態との間で切り替えを行う切替回数の総和が最小となる順となる。
【0150】
上述した最適化テスト方法は、例えば、例えば、コンピュータがプログラムを実行することで実現される。
【0151】
[9.考察]
上述したスニークパス問題の回避方法により、半導体集積回路1におけるFPGAとしてのプログラミングの自由度の低下を招くことなく、スニークパス問題の発生の回避することができる。
【0152】
また、上述したスニークパス問題の回避方法により、クロスバー回路11内において、一の縦方向の信号線31においても一の横方向の信号線32においても複数のビアスイッチ20を接続状態とすることができる。これにより、クロスバー回路11内での縦方向の信号線31間のトラック乗り換えが可能となる。また、これにより、クロスバー回路11においてビアスイッチ20を間引いた場合におけるルーティングのしやすさを向上することができる。また、これにより、論理ブロック14の出力を縦方向の信号線31における長距離用配線と短距離用配線との両方に出力することが可能となる。また、これにより、配線ツールのアルゴリズム及びデータ構造を単純化できるため、配線ツールのチューニング及び保守が容易になる。また、これにより、信号伝達経路の迂回が減少することになるため、ルーティング前段階での性能予測と、ルーティング後の実際の性能との不一致を低減させることができる。
【0153】
上述した信号線の接続状態の変更方法により、半導体集積回路1の長寿命化を実現することができる。
【0154】
例えば、
図9Aに図示された方法で、信号線の接続状態を第1の接続状態から第2の接続状態へと変更する場合には、ビアスイッチ20の状態の変更回数は44回となるのに対して、
図9Bに図示された方法、すなわち、上述した信号線の接続状態の変更方法で、信号線の接続状態を第1の接続状態から第2の接続状態へと変更する場合には、ビアスイッチ20の状態の変更回数は24回となる。このように、ビアスイッチ20の状態の変更回数は45%削減されるため、半導体集積回路1のプログラム可能回数が80%向上し、プログラミング時間が45%削減される。このように、上述した信号線の接続状態の変更方法により、半導体集積回路1の商品価値が向上する。
【0155】
上述した適正化されたテスト方法により、半導体集積回路1の長寿命化を実現することができる。すなわち、半導体集積回路1の出荷後における、ビアスイッチ20の状態の変更可能回数を最大化することができる。
【0156】
また、上述した適正化されたテスト方法により、半導体集積回路1のテスト時間を削減することができる。テスト時間が削減されると、半導体集積回路1の単価が下がる。すなわち、上述した適正化されたテスト方法によると、半導体集積回路1の単価を下げることができる。
【0157】
なお、実施の形態において、スニークパス問題の回避方法として、原子スイッチ21をオフ状態からオン状態へと切り替える場合を中心に説明したが、原子スイッチ21をオン状態からオフ状態へと切り替える場合も、原子スイッチ21をオフ状態からオン状態へと切り替える場合と同様の考え方で、スニークパス問題を回避することができる。
【0158】
(補足)
以上のように、本出願において開示する技術の例示として、実施の形態について説明した。しかしながら、本開示による技術は、これに限定されず、本開示の趣旨を逸脱しない限り、適宜、変更、置き換え、付加、省略等を行った実施の形態又は変形例にも適用可能である。
【産業上の利用可能性】
【0159】
本開示に係る信号線の接続方法、プログラム、及び、半導体集積回路は、例えば、ビアスイッチFPGAに利用することができる。
【符号の説明】
【0160】
1 半導体集積回路
10 論理設定可能ブロック
11 クロスバー回路
12 コネクションブロック
13 スイッチブロック
14 論理ブロック
20 ビアスイッチ
21 原子スイッチ
21A、21Aa、21Ab、21Ac、21Ad、21Aj、21Ak、21Am、21An、21Ap、21Aq、21Ar 第1の原子スイッチ
21B、21Ba、21Bb、21Bc、21Bd、21Bj、21Bk、21Bm、21Bn、21Bp、21Bq、21Br 第2の原子スイッチ
22 バリスタ
22A 第1のバリスタ
22B 第2のバリスタ
25 銅電極
26 ルテニウム電極
27 固体電解質
28 架橋
31、31A、31B、31J、31K、31L 縦方向の信号線
32、32A、32B、32J、32K、32L 横方向の信号線
41A、41B、41J、41K、41L 縦方向の制御線
42A、42B、42J、42K、42L 横方向の制御線
101A~101F 共通接続点
102A~102E 第1の非共通接続点
103A~103E 第2の非共通接続点