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

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

▶ ソニーセミコンダクタソリューションズ株式会社の特許一覧

特開2023-128232処理方法、非同期式回路、および論理回路
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2023128232
(43)【公開日】2023-09-14
(54)【発明の名称】処理方法、非同期式回路、および論理回路
(51)【国際特許分類】
   G06F 30/35 20200101AFI20230907BHJP
   G06F 30/337 20200101ALI20230907BHJP
   H03K 19/00 20060101ALI20230907BHJP
【FI】
G06F30/35
G06F30/337
H03K19/00 230
【審査請求】未請求
【請求項の数】15
【出願形態】OL
(21)【出願番号】P 2022032437
(22)【出願日】2022-03-03
(71)【出願人】
【識別番号】316005926
【氏名又は名称】ソニーセミコンダクタソリューションズ株式会社
(74)【代理人】
【識別番号】110001357
【氏名又は名称】弁理士法人つばさ国際特許事務所
(72)【発明者】
【氏名】加藤 俊彦
(72)【発明者】
【氏名】谷本 匡亮
【テーマコード(参考)】
5B146
5J056
【Fターム(参考)】
5B146AA22
5B146GA06
5B146GC04
5J056AA03
5J056CC00
5J056CC05
5J056CC14
(57)【要約】
【課題】組合せ回路の前後のフリップフロップ回路を効果的に識別することができる処理方法を得る。
【解決手段】本開示の一実施の形態に係る処理方法は、コンピュータが、同期式回路における複数のフリップフロップ回路のうちの、それぞれが自己帰還ループを構成する1または複数のフリップフロップ回路を識別し、自己帰還ループにおける帰還経路を削除し、1または複数のフリップフロップ回路のうちの強連結成分を構成する2以上のフリップフロップ回路を識別し、強連結成分を構成する2以上のフリップフロップ回路を1つのダミーフリップフロップ回路に置き換える第1の処理を行うことと、コンピュータが、組合せ回路の入力側に接続された第1の1以上のフリップフロップ回路および組合せ回路の出力側に接続された第2の1以上のフリップフロップ回路を識別する第2の処理を行うこととを含む。
【選択図】図15
【特許請求の範囲】
【請求項1】
コンピュータが、同期式回路における複数のフリップフロップ回路のうちの、それぞれが自己帰還ループを構成する1または複数のフリップフロップ回路を識別し、前記自己帰還ループにおける帰還経路を削除し、前記1または複数のフリップフロップ回路のうちの強連結成分を構成する2以上のフリップフロップ回路を識別し、前記強連結成分を構成する前記2以上のフリップフロップ回路を1つのダミーフリップフロップ回路に置き換える第1の処理を行うことと、
前記コンピュータが、前記ダミーフリップフロップ回路を含む前記複数のフリップフロップ回路のうちの1以上のフリップフロップ回路の入力側に組合せ回路を介して接続された1以上のフリップフロップ回路を探索する処理と、探索された前記1以上のフリップフロップ回路の出力側に前記組合せ回路を介して接続された1以上のフリップフロップ回路を検索する処理とを交互に複数回行うことにより、前記組合せ回路の入力側に接続された第1の1以上のフリップフロップ回路および前記組合せ回路の出力側に接続された第2の1以上のフリップフロップ回路を識別する第2の処理を行うことと
を含む処理方法。
【請求項2】
前記第2の処理は、
前記コンピュータが、前記ダミーフリップフロップ回路を含む前記複数のフリップフロップ回路のうちの1つを順次選択する第3の処理を行うことと、
前記コンピュータが、前記第3の処理により選択されたフリップフロップ回路の入力側および出力側の一方である第1の側に、組合せ回路を介して接続された1または複数のフリップフロップ回路を第1の集合として識別し、前記第1の集合に含まれる前記1または複数のフリップフロップ回路のそれぞれの、前記入力側および前記出力側の他方である第2の側に、前記組合せ回路を介して接続された1または複数のフリップフロップ回路を第2の集合として識別する第4の処理を行うことと、
前記コンピュータが、最新の前記第2の集合に含まれる前記1または複数のフリップフロップ回路のそれぞれの前記第1の側に、前記組合せ回路を介して接続された1または複数のフリップフロップ回路を、最新の前記第1の集合とは別の第1の集合として識別し、最新の前記第1の集合に含まれる前記1または複数のフリップフロップ回路のそれぞれの前記第2の側に、前記組合せ回路を介して接続された1または複数のフリップフロップ回路を、最新の前記第2の集合とは別の第2の集合として識別する第5の処理を、1または複数回繰り返し行うことと、
前記コンピュータが、前記第5の処理を行う度に、最新の2つの前記第1の集合が互いに等しく、かつ、最新の2つの前記第2の集合が互いに等しいことを示す判定条件を満たすかどうかを確認し、前記判定条件を満たす場合に、最新の2つの前記第1の集合および最新の2つの前記第2の集合に基づいて、前記第1の1以上のフリップフロップ回路および前記第2の1以上のフリップフロップ回路を特定する第6の処理を行うことと
を含む
請求項1に記載の処理方法。
【請求項3】
前記第2の処理により特定された前記第2の1以上のフリップフロップ回路が、前記自己帰還ループを構成する場合に、前記コンピュータが、前記第2の1以上のフリップフロップ回路のそれぞれを4段のラッチ回路に変換し、前記組合せ回路を論理段数方向に4つに論理分割することにより前記組合せ回路を4つの組合せ回路に変換し、前記4つの組合せ回路の1つと前記4段のラッチ回路の1つとを交互に配置する第7の処理を行うことをさらに含む
請求項1に記載の処理方法。
【請求項4】
前記コンピュータが、前段回路および後段回路のうちの一方または双方との間でハンドシェイク処理を行うとともに、前記4段のラッチ回路に4つの制御信号をそれぞれ供給するハンドシェイク回路を準備する第8の処理を行うことをさらに含む
請求項3に記載の処理方法。
【請求項5】
前記コンピュータが、前記第7の処理により得られた前記4つの組合せ回路の1つと前記4段のラッチ回路の1つとが交互に配置された第1の回路を、前記4つの組合せ回路および2段のラッチ回路を有する第2の回路に置き換える第9の処理を行うことをさらに含み、
前記第2の回路では、
前記4段の組合せ回路のうちの1段目の組合せ回路の出力データおよび3段目の組合せ回路の出力データのうちの一方が選択的に前記2段のラッチ回路のうちの1段目のラッチ回路に供給され、
前記1段目のラッチ回路の出力データが、前記4つの組合せ回路のうちの2番目の組合せ回路および4番目の組合せ回路のうちの一方に選択的に供給され、
前記2番目の組合せ回路の出力データおよび前記4番目の組合せ回路の出力データのうちの一方が選択的に前記2段のラッチ回路のうちの2段目のラッチ回路に供給され、
前記2段目のラッチ回路の出力データが、前記1番目の組合せ回路および前記3番目の組合せ回路のうちの一方に選択的に供給される
請求項3に記載の処理方法。
【請求項6】
前記コンピュータが、前段回路および後段回路のうちの一方または双方との間でハンドシェイク処理を行うとともに、前記2段のラッチ回路に2つの制御信号をそれぞれ供給するハンドシェイク回路を準備する第10の処理を行うことをさらに含む
請求項5に記載の処理方法。
【請求項7】
前記第2の処理により特定された前記第2の1以上のフリップフロップ回路が、前記自己帰還ループを構成しない場合に、前記コンピュータが、前記第2の1以上のフリップフロップ回路のそれぞれを2段のラッチ回路に変換し、前記組合せ回路を論理段数方向に2つに論理分割することにより前記組合せ回路を2つの組合せ回路に変換し、前記2つの組合せ回路の1つと前記2段のラッチ回路の1つとを交互に配置する第11の処理を行うことをさらに含む
請求項1に記載の処理方法。
【請求項8】
入力データおよび出力データに基づいて論理演算を行うことが可能な第1の組合せ回路と、
第1のデータに基づいて論理演算を行うことが可能な第2の組合せ回路と、
第1の選択信号に基づいて、前記第1の組合せ回路から出力されたデータ、および前記第2の組合せ回路から出力されたデータのうちの一方を選択可能な第1のマルチプレクサと、
第1の制御信号に基づいて、前記第1のマルチプレクサから出力されたデータをラッチ可能な第1のラッチ回路と、
前記第1の制御信号に基づいて、前記第1の選択信号をラッチ可能な第1の制御ラッチ回路と、
前記第1の制御ラッチから出力された信号である第2の選択信号に基づいて、前記第1のラッチから出力されたデータを第2のデータまたは第3のデータとして出力可能な第1のデマルチプレクサと、
前記第2のデータに基づいて論理演算を行うことが可能な第3の組合せ回路と、
前記第3のデータに基づいて論理演算を行うことが可能な第4の組合せ回路と、
前記第2の選択信号に基づいて、前記第3の組合せ回路から出力されたデータ、および前記第4の組合せ回路から出力されたデータのうちの一方を選択可能な第2のマルチプレクサと、
第2の制御信号に基づいて、前記第2のマルチプレクサから出力されたデータをラッチ可能な第2のラッチ回路と、
前記第2の制御信号に基づいて、前記第2の選択信号をラッチ可能な第2の制御ラッチ回路と、
前記第2の制御ラッチから出力された信号である第3の選択信号に基づいて、前記第2のラッチから出力されたデータを前記第1のデータまたは前記出力データとして出力可能な第2のデマルチプレクサと、
前段回路および後段回路のうちの一方または双方との間でハンドシェイク処理を行うことが可能であり、前記第1の選択信号、前記第1の制御信号、および前記第2の制御信号を生成可能なハンドシェイク回路と
を備えた非同期式回路。
【請求項9】
前記ハンドシェイク回路は、
ジョイン回路と、
第1の信号を生成可能な第1の制御回路と、
第2の信号を生成可能な第2の制御回路と、
第3の信号を生成可能な第3の制御回路と、
第4の信号を生成可能な第4の制御回路と、
フォーク回路と、
前記第1の信号および前記第2の信号の反転信号の論理積を求めることにより第5の信号を生成可能な第1の論理積回路と、
前記第2の信号および前記第3の信号の反転信号の論理積を求めることにより第6の信号を生成可能な第2の論理積回路と、
前記第3の信号および前記第5の信号の反転信号の論理積を求めることにより第7の信号を生成可能な第3の論理積回路と、
前記第4の信号および前記第1の信号の反転信号の論理積を求めることにより第8の信号を生成可能な第4の論理積回路と、
前記第5の信号および前記第7の信号の論理和を求めることにより前記第1の制御信号を生成可能な第1の論理和回路と、
前記第6の信号および前記第8の信号の論理和を求めることにより前記第2の制御信号を生成可能な第2の論理和回路と、
前記第2の信号および前記第7の信号の論理和を求めることにより前記第1の選択信号を生成可能な第3の論理和回路と
を有し、
前記ジョイン回路は、前記前段回路および前記フォーク回路の両方からのリクエスト信号に基づいて前記第1の制御回路にリクエスト信号を出力可能であり、前記第1の制御回路からの応答信号に基づいて、前記前段回路および前記フォーク回路に応答信号を出力可能であり、
前記第1の制御回路は、前記ジョイン回路からのリクエスト信号および前記第2の制御回路からの応答信号に基づいて、前記第2の制御回路にリクエスト信号を出力し、前記ジョイン回路に応答信号を出力し、前記第1の信号を生成することが可能であり、
前記第2の制御回路は、前記第1の制御回路からのリクエスト信号および前記第3の制御回路からの応答信号に基づいて、前記第3の制御回路にリクエスト信号を出力し、前記第1の制御回路に応答信号を出力し、前記第2の信号を生成することが可能であり、
前記第3の制御回路は、前記第2の制御回路からのリクエスト信号および前記第4の制御回路からの応答信号に基づいて、前記第4の制御回路にリクエスト信号を出力し、前記第2の制御回路に応答信号を出力し、前記第3の信号を生成することが可能であり、
前記第4の制御回路は、前記第3の制御回路からのリクエスト信号および前記フォーク回路からの応答信号に基づいて、前記フォーク回路にリクエスト信号を出力し、前記第3の制御回路に応答信号を出力し、前記第4の信号を生成することが可能であり、
前記フォーク回路は、前記第4の制御回路からのリクエスト信号に基づいて、前記後段回路および前記ジョイン回路の両方にリクエスト信号を出力可能であり、前記後段回路および前記ジョイン回路の両方からの応答信号に基づいて、前記第4の制御回路に応答信号を出力可能である
請求項8に記載の非同期式回路。
【請求項10】
前記ハンドシェイク回路は、
ジョイン回路と、
マージ回路と、
第1の信号を生成可能な第1の制御回路と、
前記第2の制御信号を生成可能な第2の制御回路と、
スプリット回路と、
第3の制御回路と、
フォーク回路と、
前記第1の信号および前記第2の制御信号の反転信号の論理積を求めることにより前記第1の制御信号を生成可能な第5の論理積回路と
を有し、
前記ジョイン回路は、前記前段回路および前記フォーク回路の両方からのリクエスト信号に基づいて前記マージ回路にリクエスト信号を出力可能であり、前記マージ回路からの応答信号に基づいて、前記前段回路および前記フォーク回路に応答信号を出力可能であり、
前記マージ回路は、前記ジョイン回路および前記第3の制御回路のうちの少なくとも一方からのリクエスト信号に基づいて、前記第1の制御回路にリクエスト信号を出力するとともに前記第1の選択信号を生成することが可能であり、前記第1の制御回路からの応答信号に基づいて、前記ジョイン回路および前記第3の制御回路のうちの一方に応答信号を出力可能であり、
前記第1の制御回路は、前記マージ回路からのリクエスト信号および前記第2の制御回路からの応答信号に基づいて、前記第2の制御回路にリクエスト信号を出力し、前記マージ回路に応答信号を出力し、前記第1の信号を生成することが可能であり、
前記第2の制御回路は、前記第1の制御回路からのリクエスト信号および前記スプリット回路からの応答信号に基づいて、前記スプリット回路にリクエスト信号を出力し、前記第1の制御回路に応答信号を出力し、前記第2の制御信号を生成することが可能であり、
前記スプリット回路は、前記第2の制御回路からのリクエスト信号に基づいて、前記フォーク回路および前記第3の制御回路のうち、前記第3の選択信号に応じた回路にリクエスト信号を供給可能であり、前記フォーク回路および前記第3の制御回路のうちの少なくとも一方からの応答信号に基づいて、前記第2の制御回路に応答信号を出力可能であり、
前記第3の制御回路は、前記スプリット回路からのリクエスト信号および前記マージ回路からの応答信号に基づいて、前記マージ回路にリクエスト信号を出力するとともに前記スプリット回廊に応答信号を出力可能であり、
前記フォーク回路は、前記スプリット回路からのリクエスト信号に基づいて、前記後段回路および前記ジョイン回路の両方にリクエスト信号を出力可能であり、前記後段回路および前記ジョイン回路の両方からの応答信号に基づいて、前記スプリット回路に応答信号を出力可能である
請求項8に記載の非同期式回路。
【請求項11】
前記ハンドシェイク回路は、
ジョイン回路と、
マージ回路と、
前記第1の制御信号を生成可能な第1の制御回路と、
前記第2の制御信号を生成可能な第2の制御回路と、
スプリット回路と、
フォーク回路と、
を有し、
前記ジョイン回路は、前記前段回路および前記フォーク回路の両方からのリクエスト信号に基づいて前記マージ回路にリクエスト信号を出力可能であり、前記マージ回路からの応答信号に基づいて、前記前段回路および前記フォーク回路に応答信号を出力可能であり、
前記マージ回路は、前記ジョイン回路および前記スプリット回路のうちの少なくとも一方からのリクエスト信号に基づいて、前記第1の制御回路にリクエスト信号を出力するとともに前記第1の選択信号を生成することが可能であり、前記第1の制御回路からの応答信号に基づいて、前記ジョイン回路および前記スプリット回路のうちの一方に応答信号を出力可能であり、
前記第1の制御回路は、前記マージ回路からのリクエスト信号および前記第2の制御回路からの応答信号に基づいて、前記第2の制御回路にリクエスト信号を出力し、前記マージ回路に応答信号を出力し、前記第1の制御信号を生成することが可能であり、
前記第2の制御回路は、前記第1の制御回路からのリクエスト信号および前記スプリット回路からの応答信号に基づいて、前記スプリット回路にリクエスト信号を出力し、前記第1の制御回路に応答信号を出力し、前記第2の制御信号を生成することが可能であり、
前記スプリット回路は、前記第2の制御回路からのリクエスト信号に基づいて、前記フォーク回路および前記マージ回路のうち、前記第3の選択信号に応じた回路にリクエスト信号を供給可能であり、前記フォーク回路および前記マージ回路のうちの少なくとも一方からの応答信号に基づいて、前記第2の制御回路に応答信号を出力可能であり、
前記フォーク回路は、前記スプリット回路からのリクエスト信号に基づいて、前記後段回路および前記ジョイン回路の両方にリクエスト信号を出力可能であり、前記後段回路および前記ジョイン回路の両方からの応答信号に基づいて、前記スプリット回路に応答信号を出力可能である
請求項8に記載の非同期式回路。
【請求項12】
前記第1の制御回路および前記第2の制御回路のそれぞれは、
前段からのリクエスト信号の入力端子である第1の端子と、
前記前段への応答信号の出力端子である第2の端子と、
後段へのリクエスト信号の出力端子である第3の端子と、
前記後段からの応答信号の入力端子である第4の端子と、
前記第1の制御信号および前記第2の制御信号のうちの対応する制御信号の出力端子である第5の端子と、
前記第1の端子の信号および前記第2の端子の信号の論理積を求めることが可能な第6の論理積回路と、
前記第1の端子の信号、前記第3の端子の信号の反転信号、および前記第4の端子の信号の反転信号の論理積を求めることが可能な第7の論理積回路と、
前記第6の論理積回路の出力信号および前記第7の論理積回路の出力信号の論理和を求めることにより前記第2の端子の信号および前記第5の端子の信号を生成することが可能な第4の論理和回路と、
前記第3の端子の信号および前記第4の端子の信号の反転信号の論理積を求めることが可能な第8の論理積回路と、
前記第5の端子の信号および前記第8の論理積回路の出力信号の論理和を求めることにより前記第4の端子の信号を生成することが可能な第5の論理和回路と
を有する
請求項11に記載の非同期式回路。
【請求項13】
前記前段回路と、
前記後段回路と
をさらに備え、
前記前段回路および前記後段回路のそれぞれは、
前段からのリクエスト信号の入力端子である第1の端子と、
前記前段への応答信号の出力端子である第2の端子と、
後段へのリクエスト信号の出力端子である第3の端子と、
前記後段からの応答信号の入力端子である第4の端子と、
制御信号の出力端子である第5の端子と、
前記第1の端子の信号および前記第4の端子の信号の反転信号に基づいて前記第2の端子、前記第3の端子、および前記第5の端子の信号を生成するC素子回路と
を有する
請求項12に記載の非同期式回路。
【請求項14】
第1の同期式回路と、
前記第1の同期式回路の後段に設けられた非同期式回路と、
前記非同期式回路の後段に設けられた第2の同期式回路と
を備え、
前記非同期式回路は、
前記第1の同期式回路からのデータの入力端子であるデータ入力端子と、
前記第2の同期式回路へのデータの出力端子データ出力端子と、
前段からのリクエスト信号の入力端子である第1の端子と、
前記前段への応答信号の出力端子である第2の端子と、
後段へのリクエスト信号の出力端子である第3の端子と、
前記後段からの応答信号の入力端子である第4の端子と
を有し、
前記第1の端子には、前記第1の同期式回路におけるクロック信号が供給され、
前記第2の端子は、開放状態にされ、
前記第3の端子および前記第4の端子は互いに接続された
論理回路。
【請求項15】
前記非同期式回路は、第1の回路を有し、
前記第1の回路は、
入力データおよび出力データに基づいて処理を行うことが可能な第1の組合せ回路と、
第1のデータに基づいて処理を行うことが可能な第2の組合せ回路と、
第1の選択信号に基づいて、前記第1の組合せ回路から出力されたデータ、および前記第2の組合せ回路から出力されたデータのうちの一方を選択可能な第1のマルチプレクサと、
第1の制御信号に基づいて、前記第1のマルチプレクサから出力されたデータをラッチ可能な第1のラッチと、
前記第1の制御信号に基づいて、前記第1の選択信号をラッチ可能な第1の制御ラッチと、
前記第1の制御ラッチから出力された信号である第2の選択信号に基づいて、前記第1のラッチから出力されたデータを第2のデータまたは第3のデータとして出力する第1のデマルチプレクサと、
前記第2のデータに基づいて処理を行うことが可能な第3の組合せ回路と、
前記第3のデータに基づいて処理を行うことが可能な第4の組合せ回路と、
前記第2の選択信号に基づいて、前記第3の組合せ回路から出力されたデータ、および前記第4の組合せ回路から出力されたデータのうちの一方を選択可能な第2のマルチプレクサと、
第2の制御信号に基づいて、前記第2のマルチプレクサから出力されたデータをラッチ可能な第2のラッチと、
前記第2の制御信号に基づいて、前記第2の選択信号をラッチ可能な第2の制御ラッチと、
前記第2の制御ラッチから出力された信号である第3の選択信号に基づいて、前記第2のラッチから出力されたデータを前記第1のデータまたは前記出力データとして出力する第2のデマルチプレクサと、
前段回路および後段回路のうちの一方または双方との間でハンドシェイク処理を行うことが可能であり、前記第1の選択信号、前記第1の制御信号、および前記第2の制御信号を生成可能なハンドシェイク回路と
を有する
請求項14に記載の論理回路。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、回路に対して行われる処理方法、そのような処理方法を用いて生成される非同期式回路、および論理回路に関する。
【背景技術】
【0002】
論理回路には、同期式の論理回路および非同期式の論理回路がある。例えば、特許文献1には、フロー等価性を満たしつつ、同期式回路から非同期式回路へ変換する変換方法が開示されている。
【先行技術文献】
【非特許文献】
【0003】
【非特許文献1】I. Blunno, J. Cortadella, A. Kondratyev, L. Lavagno, K. Lwin, and C. Sotiriou, "Handshake Protocols for De-synchronization," 10th International Symposium on Asynchronous Circuits and Systems, 2004. Proceedings., 19-23 April 2004.
【発明の概要】
【発明が解決しようとする課題】
【0004】
同期式回路では、しばしば、フリップフロップ回路が自己帰還ループを構成することがある。このようなフリップフロップ回路を有する同期式回路において、組合せ回路の前段のフリップフロップ回路、およびその組合せ回路の後段のフリップフロップ回路を効果的に識別することができることが望まれる。
【0005】
組合せ回路の前後のフリップフロップ回路を効果的に識別することができる処理方法、非同期式回路、および論理回路を提供することが望ましい。
【課題を解決するための手段】
【0006】
本開示の一実施の形態における処理方法は、コンピュータが、同期式回路における複数のフリップフロップ回路のうちの、それぞれが自己帰還ループを構成する1または複数のフリップフロップ回路を識別し、自己帰還ループにおける帰還経路を削除し、1または複数のフリップフロップ回路のうちの強連結成分を構成する2以上のフリップフロップ回路を識別し、強連結成分を構成する2以上のフリップフロップ回路を1つのダミーフリップフロップ回路に置き換える第1の処理を行うことと、コンピュータが、ダミーフリップフロップ回路を含む複数のフリップフロップ回路のうちの1以上のフリップフロップ回路の入力側に組合せ回路を介して接続された1以上のフリップフロップ回路を探索する処理と、探索された1以上のフリップフロップ回路の出力側に組合せ回路を介して接続された1以上のフリップフロップ回路を検索する処理とを交互に複数回行うことにより、組合せ回路の入力側に接続された第1の1以上のフリップフロップ回路および組合せ回路の出力側に接続された第2の1以上のフリップフロップ回路を識別する第2の処理を行うこととを含むものである。
【0007】
本開示の一実施の形態における非同期式回路は、第1の組合せ回路と、第2の組合せ回路と、第1のマルチプレクサと、第1のラッチ回路と、第1の制御ラッチ回路と、第1のデマルチプレクサと、第3の組合せ回路と、第4の組合せ回路と、第2のマルチプレクサと、第2のラッチ回路と、第2の制御ラッチ回路と、第2のデマルチプレクサと、ハンドシェイク回路とを備える。第1の組合せ回路は、入力データおよび出力データに基づいて処理を行うことが可能なものである。第2の組合せ回路は、第1のデータに基づいて処理を行うことが可能なものである。第1のマルチプレクサは、第1の選択信号に基づいて、第1の組合せ回路から出力されたデータ、および第2の組合せ回路から出力されたデータのうちの一方を選択可能なものである。第1のラッチ回路は、第1の制御信号に基づいて、第1のマルチプレクサから出力されたデータをラッチ可能なものである。第1の制御ラッチ回路は、第1の制御信号に基づいて、第1の選択信号をラッチ可能なものである。第1のデマルチプレクサは、第1の制御ラッチから出力された信号である第2の選択信号に基づいて、第1のラッチから出力されたデータを第2のデータまたは第3のデータとして出力するものである。第3の組合せ回路は、第2のデータに基づいて処理を行うことが可能なものである。第4の組合せ回路は、第3のデータに基づいて処理を行うことが可能なものである。第2のマルチプレクサは、第2の選択信号に基づいて、第3の組合せ回路から出力されたデータ、および第4の組合せ回路から出力されたデータのうちの一方を選択可能なものである。第2のラッチ回路は、第2の制御信号に基づいて、第2のマルチプレクサから出力されたデータをラッチ可能なものである。第2の制御ラッチは、第2の制御信号に基づいて、第2の選択信号をラッチ可能なものである。第2のデマルチプレクサは、第2の制御ラッチから出力された信号である第3の選択信号に基づいて、第2のラッチから出力されたデータを第1のデータまたは出力データとして出力可能なものである。ハンドシェイク回路は、前段回路および後段回路のうちの一方または双方との間でハンドシェイク処理を行うことが可能であり、第1の選択信号、第1の制御信号、および第2の制御信号を生成可能なものである。
【0008】
本開示の一実施の形態における論理回路は、第1の同期式回路と、非同期式回路と、第2の同期式回路と備えている。非同期式回路は、第1の同期式回路の後段に設けられる。第2の同期式回路は、非同期式回路の後段に設けられる。非同期式回路は、データ入力端子と、データ出力端子と、第1の端子と、第2の端子と、第3の端子と、第4の端子とを有する。データ入力端子は、第1の同期式回路からのデータの入力端子である。データ出力は、第2の同期式回路へのデータの出力端子である。第1の端子は、前段からのリクエスト信号の入力端子である。第2の端子は、前段への応答信号の出力端子である。第3の端子は、後段へのリクエスト信号の出力端子である。第4の端子は、後段からの応答信号の入力端子である。第1の端子には、第1の同期式回路におけるクロック信号が供給される。第2の端子は、開放状態にされる。第3の端子および第4の端子は互いに接続される。
【0009】
本開示の一実施の形態における処理方法では、コンピュータにより、第1の処理および第2の処理が行われる。第1の処理では、まず、同期式回路における複数のフリップフロップ回路のうちの、それぞれが自己帰還ループを構成する1または複数のフリップフロップ回路が識別され、自己帰還ループにおける帰還経路が削除される。そして、1または複数のフリップフロップ回路のうちの強連結成分を構成する2以上のフリップフロップ回路が識別され、強連結成分を構成する2以上のフリップフロップ回路が1つのダミーフリップフロップ回路に置き換えられる。第2の処理では、ダミーフリップフロップ回路を含む複数のフリップフロップ回路のうちの1以上のフリップフロップ回路の入力側に組合せ回路を介して接続された1以上のフリップフロップ回路を探索する処理と、探索された1以上のフリップフロップ回路の出力側に組合せ回路を介して接続された1以上のフリップフロップ回路を検索する処理とを交互に複数回行うことにより、組合せ回路の入力側に接続された第1の1以上のフリップフロップ回路および組合せ回路の出力側に接続された第2の1以上のフリップフロップ回路が識別される。
【図面の簡単な説明】
【0010】
図1】同期式論理回路の一構成例を表すブロック図である。
図2】非同期式論理回路の一構成例を表すブロック図である。
図3図2に示した制御回路の一構成例を表す回路図である。
図4図3に示した制御回路の一動作例を表すタイミング波形図である。
図5図3に示したC素子の一具体例を表す回路図である。
図6図3に示したC素子の他の一具体例を表す回路図である。
図7】回路の接続の一例を表す説明図である。
図8】回路の接続の他の一例を表す説明図である。
図9図7に示したフォーク接続に係るフォーク回路の一具体例を表す回路図である。
図10図7に示したジョイン接続に係るジョイン回路の一具体例を表す回路図である。
図11図8に示したスプリット接続に係るスプリット回路の一具体例を表す回路図である。
図12図8に示したマージ接続に係るマージ接続の一具体例を表す回路図である。
図13】初期トークン投入回路の一具体例を表す回路図である。
図14】自己帰還ループに係る回路の一例を表すブロック図である。
図15】本開示の一実施の形態に係る処理方法の一例を表すフローチャートである。
図16図15に示した処理の一例を表す説明図である。
図17図15に示した処理の一例を表す他の説明図である。
図18図15に示した処理の一例を表す他の説明図である。
図19図15に示した処理の一例を表す他の説明図である。
図20図15に示した処理の一例を表す他の説明図である。
図21A図15に示したグルーピング処理の一例を表すフローチャートである。
図21B図15に示したグルーピング処理の一例を表す他のフローチャートである。
図22図21A,21Bに示した処理の一例を表す説明図である。
図23図21A,21Bに示した処理の一例を表す他の説明図である。
図24図21A,21Bに示した処理の一例を表す他の説明図である。
図25図21A,21Bに示した処理の一例を表す他の説明図である。
図26図21A,21Bに示した処理の一例を表す他の説明図である。
図27図21A,21Bに示した処理の一例を表す他の説明図である。
図28図21A,21Bに示した処理の一例を表す他の説明図である。
図29図21A,21Bに示した処理の一例を表す他の説明図である。
図30図15に示した処理の一例を表す他の説明図である。
図31図15に示した処理の一例を表す他の説明図である。
図32図15に示した処理の一例を表す他の説明図である。
図33図15に示した処理の一例を表す他の説明図である。
図34図15に示した処理の一例を表す他の説明図である。
図35図15に示した処理方法により生成される回路の一例を表す回路図である。
図36図35に示した回路の一部を表す回路図である。
図37図35に示した回路の一動作例を表すタイミング波形図である。
図38図15に示した処理方法により生成される回路の他の一例を表す回路図である。
図39図38に示した回路の一部を表す回路図である。
図40図38に示した回路の一動作例を表すタイミング波形図である。
図41図15に示した処理方法により生成される回路の他の一例を表す回路図である。
図42図41に示した回路の一動作例を表す説明図である。
図43図15に示した処理方法により生成される回路の他の一例を表す回路図である。
図44図43に示した回路の一動作例を表すタイミング波形図である。
図45図15に示した処理方法により生成される回路の他の一例を表す回路図である。
図46図45に示した回路の一動作例を表すタイミング波形図である。
図47図15に示した処理方法により生成される回路の他の一例を表す回路図である。
図48図47に示した制御回路の一構成例を表す回路図である。
図49図15に示した処理方法により生成される回路の他の一例を表す回路図である。
図50】同期式論理回路と非同期式論理回路との間のインタフェースの一例を表す回路図である。
図51】同期式論理回路と非同期式論理回路との間のインタフェースの他の一例を表す回路図である。
図52】同期式論理回路と非同期式論理回路との間のインタフェースの他の一例を表す回路図である。
【発明を実施するための形態】
【0011】
以下、本開示の実施の形態について、図面を参照して詳細に説明する。
【0012】
<実施の形態>
[構成例]
図1は、実施の形態に係る処理方法が適用される同期式論理回路9の一構成例を表すものである。この図1に示した同期式論理回路9は、最も基本な構成の一例であり、実際には、この回路構成より複雑になり得る。同期式論理回路9は、データパス回路90と、クロックツリー99とを備えている。
【0013】
データパス回路90は、データDTに対して処理を行うように構成される。データDTは、図1において、左から右に向かって供給される。データパス回路90は、複数のフリップフロップ回路(F/F)91と、複数の組合せ回路92とを有する。この例では、フリップフロップ回路91および組合せ回路92は、交互に配置される。フリップフロップ回路91は、例えば複数のフリップフロップ回路を含み、クロック信号CKに基づいて、前段の組合せ回路92から供給されたデータDTをサンプリングするように構成される。組合せ回路92は、前段のフリップフロップ回路91から供給されたデータDTに対して論理演算を行い、得られたデータDTを後段のフリップフロップ回路91に供給するように構成される。
【0014】
クロックツリー99は、クロック信号CKを、データパス回路90における複数のフリップフロップ回路91に供給するように構成される。
【0015】
本実施の形態では、このような同期式論理回路9に対して処理を行うことにより、この同期式論理回路9を、例えば以下に示す非同期式論理回路1に変換するようになっている。
【0016】
図2は、非同期式論理回路1の一構成例を表すものである。この非同期式論理回路1は、いわゆる束データ方式の非同期式論理回路である。この図1に示した非同期式論理回路1は、最も基本的な構成の一例であり、実際には、この回路構成より複雑になり得る。非同期式論理回路1は、データパス回路10と、ハンドシェイク回路20とを備えている。
【0017】
データパス回路10は、データDTに対して処理を行うように構成される。データDTは、図2において、左から右に向かって供給される。データパス回路10は、複数のラッチ回路(LAT)11と、複数の組合せ回路12とを有する。この例では、ラッチ回路11および組合せ回路12は、交互に配置される。ラッチ回路11は、例えば複数のラッチ回路を含み、ローカルクロックである信号LCKに基づいて、前段の組合せ回路12から供給されたデータDTをラッチするように構成される。組合せ回路12は、前段のラッチ回路11から供給されたデータDTに基づいて論理演算を行い、得られたデータDTを後段のラッチ回路11に供給するように構成される。
【0018】
ハンドシェイク回路20は、信号REQおよび信号ACKに基づいて、複数の信号LCKを生成し、生成した複数の信号LCKをデータパス回路10における複数のラッチ回路11にそれぞれ供給するように構成される。信号REQは、図2において、左から右に向かって供給され、信号ACKは、図2において、右から左に向かって供給される。ハンドシェイク回路20は、複数の制御回路21と、複数の遅延回路22とを有している。
【0019】
制御回路21は、供給された信号REQおよび信号ACKに基づいて、ローカルクロックである信号LCK、および信号REQ,ACKを生成するように構成される。具体的には、制御回路21には、前段の制御回路21から遅延回路22を介して信号REQが供給されるとともに、後段の制御回路21から信号ACKが供給され、これらの信号REQ,ACKに基づいて信号LCK,REQ,ACKを生成する。そして、制御回路21は、生成した信号LCKをラッチ回路11に供給し、生成した信号REQを、遅延回路22を介して後段の制御回路21に供給し、生成した信号ACKを、前段の制御回路21に供給するようになっている。
【0020】
図3は、制御回路21の一構成例を表すものである。この図3では、制御回路21に入力される信号REQを信号REQ_INと表記し、制御回路21から出力される信号REQを信号REQ_OUTと表記している。また、制御回路21に入力される信号ACKを信号ACK_INと表記し、制御回路21から出力される信号ACKを信号ACK_OUTと表記している。
【0021】
制御回路21は、C素子29を有している。C素子29は、いわゆる待ち合わせ回路であり、2つの入力端子と、リセット端子と、出力端子とを有する。2つの入力端子には、信号REQ_INと、信号ACK_INの反転信号とが入力される。リセット端子には、リセット信号RSTが入力される。C素子29は、信号REQ_INおよび信号ACK_INの反転信号がともに高レベルである場合に、出力端子における信号LCKを高レベルにし、信号REQ_INおよび信号ACK_INの反転信号がともに低レベルである場合に、出力端子における信号LCKを低レベルにし、それ以外の場合には、出力端子における信号LCKを維持する。また、C素子29は、リセット信号RSTに基づいて、出力端子における信号LCKを低レベルにするようになっている。
【0022】
図4は、制御回路21の一動作例を表すものであり、(A)は信号REQ_INの波形を示し、(B)は信号ACK_INの波形を示し、(C)は信号LCKの波形を示し、(D)は信号REQ_OUTの波形を示し、(E)は信号ACK_OUTの波形を示す。
【0023】
タイミングt1において、信号REQ_INが低レベルから高レベルに変化する(図4(A))。このとき、信号ACK_INは低レベルであるので(図4(B))、信号ACK_INの反転信号は高レベルである。よって、信号REQ_INおよび信号ACK_INの反転信号がともに高レベルになるので、C素子29は、信号LCKを低レベルから高レベルに変化させ(図4(C))、同様に、信号REQ_OUT,ACK_OUTを低レベルから高レベルに変化させる(図4(D),(E))。
【0024】
次に、タイミングt2において、信号ACK_INが低レベルから高レベルに変化する(図4(B))。言い換えれば、信号ACK_INの反転信号は高レベルから低レベルに変化する。このとき、信号REQ_INは高レベルである(図4(A))。よって、信号LCK,REQ_OUT,ACK_OUTは変化せず、高レベルに維持される(図4(C)~(E))。
【0025】
次に、タイミングt3において、信号REQ_INが高レベルから低レベルに変化する(図4(A))。このとき、信号ACK_INは高レベルであるので(図4(B))、信号ACK_INの反転信号は低レベルである。よって、信号REQ_INおよび信号ACK_INの反転信号がともに低レベルになるので、C素子29は、信号LCKを高レベルから低レベルに変化させ(図4(C))、同様に、信号REQ_OUT,ACK_OUTを高レベルから低レベルに変化させる(図4(D),(E))。
【0026】
次に、タイミングt4において、信号ACK_INが高レベルから低レベルに変化する(図4(B))。言い換えれば、信号ACK_INの反転信号は低レベルから高レベルに変化する。このとき、信号REQ_INは低レベルである(図4(A))。よって、信号LCK,REQ_OUT,ACK_OUTは変化せず、低レベルに維持される(図4(C)~(E))。
【0027】
このように、制御回路21は、4相信号である信号REQ_IN,ACK_INに基づいて動作を行うことにより、信号LCK,REQ_OUT,ACK_OUTを生成するようになっている。
【0028】
次に、C素子29の具体的な回路例について、いくつか例を挙げて説明する。
【0029】
図5は、C素子29の一構成例を表すものである。このC素子29は、2つの入力端子IN1,IN2と、リセット端子INRと、出力端子OUTと、論理積(AND)回路101と、論理和(OR)回路102と、否定論理積(NAND)回路103と、ラッチ回路104とを有している。論理積回路101は、入力端子IN1における信号と入力端子IN2における信号との論理積を求めるように構成される。論理和回路102は、入力端子IN1における信号と入力端子IN2における信号との論理和を求めるように構成される。否定論理積回路103は、論理和回路102の出力信号とリセット端子INRにおける信号との否定論理積を求めるように構成される。ラッチ回路104はDラッチであり、端子Dは電源電圧VDDの電源ノードに接続され、端子Gには論理積回路101の出力信号が供給され、端子Rには否定論理積回路103の出力信号が供給される。ラッチ回路104の端子Qは出力端子OUTに接続される。
【0030】
図6は、C素子29の他の一構成例を表すものである。この例では、いわゆるマジョリティゲートを用いてC素子29を構成している。このC素子29は、2つの入力端子IN1,IN2と、リセット端子INRと、出力端子OUTと、論理積回路111~113と、否定論理和(NOR)回路114と、論理積回路115とを有している。論理積回路111は、入力端子IN1における信号と論理積回路115の出力信号との論理積を求めるように構成される。論理積回路112は、入力端子IN1における信号と入力端子IN2における信号との論理積を求めるように構成される。論理積回路113は、入力端子IN2における信号と論理積回路115の出力信号との論理積を求めるように構成される。否定論理和回路114は、論理積回路111~113の出力信号の否定論理和を求めるように構成される。論理積回路115は、否定論理和回路114の出力信号の反転信号と、リセット端子INRにおける信号との論理積を求めるように構成される。論理積回路115の出力端子は出力端子OUTに接続される。
【0031】
このように、C素子29は、例えば、図5に示したようにラッチ回路104を用いて構成することができ、あるいは、例えば、図6に示したようにマジョリティゲートを用いて構成することができる。
【0032】
遅延回路22(図2)は、信号REQの供給経路に設けられ、信号REQを遅延させるように構成される。遅延回路22の遅延量は、対応する組合せ回路12における遅延量の最大値に設定される。
【0033】
この構成により、非同期式論理回路1では、組合せ回路12は、ラッチ回路11に対してデータDTを供給する。遅延回路22は、信号REQを遅延し、この遅延された信号REQを制御回路21に供給する。この制御回路21は、この遅延された信号REQに基づいて信号LCKを生成し、ラッチ回路11は、この信号LCKに基づいて、組合せ回路12から供給されたデータDTをラッチする。そして、制御回路21は、前段の制御回路21に対して信号ACKを供給する。この組合せ回路12における遅延量が小さい場合には、遅延回路22における遅延量も小さい値に設定され、この組合せ回路12における遅延量が大きい場合には、遅延回路22における遅延量も大きい値に設定される。
【0034】
図2の例では、制御回路21は、前段の制御回路21と、遅延回路22を介して1対1で接続されるとともに、後段の制御回路21と、遅延回路22を介して1対1で接続される。同様に、ラッチ回路11は、前段のラッチ回路11と、組合せ回路12を挟んで1対1で接続されるとともに、後段のラッチ回路11と、組合せ回路12を挟んで1対1で接続される。しかしながら、これに限定されるものではなく、制御回路21は、複数の制御回路21と1対複数で接続されることもあり得る。また、ラッチ回路11は、複数のラッチ回路11と1対複数で接続されることもあり得る。以下に、1対2の接続を例に挙げて詳細に説明する。
【0035】
図7は、1対2の接続の一例を模式的に表すものである。シンボルFFは、1つの回路からの信号を2つに分岐するフォーク(fork)接続を示し、シンボルJJは、2つの回路からの2つの信号を1つに合流させるジョイン(join)接続を示す。フォーク接続では、1つの回路からの信号を2つの回路の両方に供給し、ジョイン接続では、2つの回路からの2つの信号の両方を1つの回路に供給する。
【0036】
図8は、1対2の接続の他の一例を模式的に表すものである。シンボルSSは、1つの回路からの信号を2つに分岐するスプリット(split)接続を示し、シンボルMMは、2つの回路からの2つの信号を1つに合流させるマージ(merge)接続を示す。スプリット接続では、1つの回路からの信号を2つの回路のうちの一方に供給し、マージ接続では、2つの回路からの2つの信号のうちの一方を1つの回路に供給する。
【0037】
図9は、ハンドシェイク回路20において、フォーク接続を行う際に用いられるフォーク回路を表すものであり、(A)はフォーク回路の表記を示し、(B)はフォーク回路の一構成例を示す。
【0038】
フォーク回路は、図9(A)に示したように、前段の回路からの信号REQ_INを受け取るとともに、その回路に信号ACK_OUTを供給する。フォーク回路は、後段の第1の回路に信号REQ_OUT0を供給するとともに、その第1の回路からの信号ACK_IN0を受け取る。また、フォーク回路は、後段の第2の回路に信号REQ_OUT1を供給するとともに、その第2の回路からの信号ACK_IN1を受け取る。
【0039】
図9(B)に示したように、このフォーク回路は、C素子23を有する。このフォーク回路は、信号REQ_INを、そのまま信号REQ_OUT0および信号REQ_OUT1として出力する。C素子23は、2つの信号ACK_IN0,ACK_IN1に基づいて信号ACK_OUTを生成するようになっている。
【0040】
図10は、ハンドシェイク回路20において、ジョイン接続を行う際に用いられるジョイン回路を表すものであり、(A)はジョイン回路の表記を示し、(B)はジョイン回路の一構成例を示す。
【0041】
ジョイン回路は、図10(A)に示したように、前段の第1の回路からの信号REQ_IN0を受け取るとともに、その第1の回路に信号ACK_OUT0を供給する。ジョイン回路は、前段の第2の回路からの信号REQ_IN1を受け取るとともに、その第2の回路に信号ACK_OUT1を供給する。また、ジョイン回路は、後段の回路に信号REQ_OUTを供給するとともに、その回路からの信号ACK_INを受け取る。
【0042】
図10(B)に示したように、このジョイン回路は、C素子24を有する。C素子24は、2つの信号REQ_IN0,REQ_IN1に基づいて信号REQ_OUTを生成する。また、このジョイン回路は、信号ACK_INを、そのまま信号ACK_OUT0および信号ACK_OUT1として出力するようになっている。
【0043】
図11は、ハンドシェイク回路20において、スプリット接続を行う際に用いられるスプリット回路を表すものであり、(A)はスプリット回路の表記を示し、(B)はスプリット回路の一構成例を示す。
【0044】
スプリット回路は、図11(A)に示したように、前段の回路からの信号REQ_INを受け取るとともに、その回路に信号ACK_OUTを供給する。スプリット回路は、後段の第1の回路に信号REQ_OUT0を供給するとともに、その第1の回路からの信号ACK_IN0を受け取る。スプリット回路は、後段の第2の回路に信号REQ_OUT1を供給するとともに、その第2の回路からの信号ACK_IN1を受け取る。また、スプリット回路は、信号SEL_INを受け取る。この信号SEL_INは、信号REQ_INを、後段の第1の回路および第2の回路のうちのどちらに供給するかを示す信号である。
【0045】
図11(B)に示したように、このスプリット回路は、デマルチプレクサ25と、論理和回路26とを有する。このスプリット回路は、信号REQ_INを、2つの信号REQ_OUT0,REQ_OUT1のうちの、信号SEL_INに応じた信号として出力する。また、論理和回路26は、2つの信号ACK_IN0,ACK_IN1の論理和を求めることにより信号ACK_OUTを生成するようになっている。
【0046】
図12は、ハンドシェイク回路20において、マージ接続を行う際に用いられるマージ回路を表すものであり、(A)はマージ回路の表記を示し、(B)はマージ回路の一構成例を示す。
【0047】
マージ回路は、図12(A)に示したように、前段の第1の回路からの信号REQ_IN0を受け取るとともに、その第1の回路に信号ACK_OUT0を供給する。また、マージ回路は、前段の第2の回路からの信号REQ_IN1を受け取るとともに、その第2の回路に信号ACK_OUT1を供給する。マージ回路は、後段の回路に信号REQ_OUTを供給するとともに、その回路からの信号ACK_INを受け取る。また、マージ回路は、信号SEL_OUTを出力する。この信号SEL_OUTは、信号REQ_IN0,REQ_IN1のどちらがアクティブになったかを示す信号である。
【0048】
図12(B)に示したように、このマージ回路は、論理和回路31と、C素子32~334とを有する。論理和回路31は、2つの信号REQ_IN0,REQ_IN1の論理和を求めることにより信号REQ_OUTを生成する。C素子32は、信号REQ_IN0および信号ACK_OUTに基づいて信号ACK_OUT0を生成する。C素子33は、信号REQIN1および信号ACK_OUTに基づいて信号ACK_OUT1を生成する。すなわち、信号REQ_IN0がアクティブである場合には、C素子32が信号ACK_INを信号ACK_OUT0として出力し、信号REQ_IN1がアクティブである場合には、C素子33が信号ACK_INを信号CLK_OUT1として出力する。C素子34は、信号REQ_IN0および信号REQ_IN1の反転信号に基づいて信号SEL_OUTを生成する。すなわち、C素子34は、信号REQ_IN0がアクティブである場合には信号SEL_OUTを高レベルにし、信号REQ_IN1がアクティブである場合には信号SEL_OUTを低レベルにするようになっている。
【0049】
また、非同期式論理回路1のハンドシェイク回路20では、回路の初期状態を設定する目的で、以下のような初期トークン投入回路が設けられる。
【0050】
図13は、ハンドシェイク回路20において用いられる、初期トークン投入回路を表すものであり、(A)は初期トークン投入回路の表記を示し、(B)は初期トークン投入回路の一構成例を示す。
【0051】
初期トークン投入回路は、初期状態において、信号REQをアクティブにするように構成される。この初期トークン投入回路は、C素子35と、論理和回路36とを有する。C素子35は、信号ACKと、高レベル(“1”)を示す信号とに基づいて動作する。論理和回路36は、入力された信号REQ(信号REQ_IN)と、C素子35の出力信号の反転信号との論理和を求めることにより信号REQ(信号REQ_OUT)を生成する。
【0052】
一般に、初期状態では、信号REQおよび信号ACKはともに低レベルである。よって、この初期トークン投入回路では、C素子35に入力される2つの信号は低レベルおよび高レベルであるので、C素子35は低レベルの信号を出力する。これにより、C素子35の出力信号の反転信号は高レベルであるので、論理和回路36は、信号REQ(信号REQ_OUT)を高レベルにする。この初期トークン投入回路の後段の回路は、この信号REQに基づいて信号ACKを高レベルにする。これにより、この初期トークン投入回路のC素子35に入力される2つの信号は、ともに高レベルであるので、C素子35は高レベルの信号を出力する。その結果、論理和回路36は、信号REQ(信号REQ_OUT)を低レベルにする。このようにして、初期トークン投入回路は、初期状態において、信号REQをアクティブにすることができるようになっている。
【0053】
本技術では、コンピュータが、プログラムを実行することにより、図1に示したような同期式論理回路9の設計データに基づいて、この同期式論理回路9を、図2に示したような非同期式論理回路1に変換する。この変換処理において、コンピュータは、同期式論理回路9に含まれる、自己帰還ループを有するフリップフロップ回路を識別する。
【0054】
図14は、同期式論理回路9における、自己帰還ループに係るループ回路LPの一例を表すものである。この図14では、1または複数のビットデータを有するデータを太線で示す。この自己帰還ループに係るループ回路LPは、組合せ回路92Aと、フリップフロップ回路91Aとを有する。組合せ回路92Aは、図1に示した組合せ回路92に対応し、フリップフロップ回路91Aは、図1に示したフリップフロップ回路91に対応する。
【0055】
組合せ回路92Aは、前段から供給されたデータDinおよびフリップフロップ回路91Aから出力されたデータDoutに基づいて論理演算を行い、得られたデータを後段のフリップフロップ回路91Aに供給する。フリップフロップ回路91Aは、クロック信号CKに基づいて、前段の組合せ回路92Aから供給されたデータDTをサンプリングすることにより、データDTを生成する。そして、フリップフロップ回路91Aは、生成したデータDTを、このフリップフロップ回路91Aの前段の組合せ回路92Aに供給するとともに、後段に供給する。このように、フリップフロップ回路91Aは、自らの出力データを、前段の組合せ回路92Aに供給するような、自己帰還ループを構成する。
【0056】
コンピュータは、このような自己帰還ループを有するフリップフロップ回路を識別する。そして、コンピュータは、同期式論理回路9に含まれる複数の組合せ回路92のそれぞれについて、その組合せ回路92の前段のフリップフロップ回路91、およびその組合せ回路92の後段のフリップフロップ回路91を識別する。コンピュータは、1つのフリップフロップ回路91Aを有するループ回路LPを、例えば、2段のラッチ回路を有するループ回路に変換する。そして、コンピュータは、これらの処理結果を利用して、同期式論理回路9を非同期式論理回路1に変換する。
【0057】
例えば、同期式論理回路9における、自己帰還ループに係るループ回路LPを、非同期式回路に変換する方法について、様々な方法が提案されている。例えば、ループ回路LPを、1つのフリップフロップ回路91Aを有する回路から、例えば、3段以上のラッチ回路を有する回路に変換する方法が知られている。この場合には、休止相が多くなるため、回路の効率性がやや低下する。また、例えば、ハンドシェイク回路において、特許文献1に記載された制御回路を用いることにより、ループ回路LPを、2段のラッチ回路を有する回路に変換する方法が知られている。この場合には、複数のゲートループが生じ、これらの複数のゲートループ間の競争が生じる可能性がある。
【0058】
特に、近年、半導体製造プロセスの微細化がさらに進み、電源電圧がさらに低くなってきている。このような状況では、例えばトランジスタのIon/Ioff比が低くなり、特許文献1に記載された制御回路は、安定して動作しない可能性がある。このような場合には、例えば、帰還動作の安定性を高めるために、遅延回路を挿入するなどの対策が必要であり、回路面積や消費電力が大きくなり得る。また、半導体製造プロセスの微細化や、電源電圧の低下により、遅延ばらつきが複雑になりつつあり、遅延ばらつきの体制が悪化する可能性もある。
【0059】
よって、本技術では、例えば、自己帰還ループに係るループ回路LPを、安定して動作するような回路を追加しつつ、例えば2段のラッチ回路を有する回路に変換する。これにより、休止相を低減しつつ、安定して動作する非同期式論理回路を実現することができる。
【0060】
[動作および作用]
続いて、本実施の形態に係る処理方法について説明する。この処理方法では、コンピュータが、プログラムを実行することにより、同期式論理回路9の設計データに基づいて、この同期式論理回路9を、図2に示したような非同期式論理回路1に変換する。この設計データは、RTL(Resister Transfer Level)で記述されたデータを含んでいてもよいし、ゲートレベルのネットリストを含んでいてもよい。RTLで記述されたデータを含む場合には、このデータは、ゲートレベルのネットリストに予め変換される。この場合には、例えば、RTL記述とゲートレベルのネットリストとの対応関係が記憶されることが望ましい。また、この設計データでは、フリップフロップ回路間の接続(フォーク接続、ジョイン接続、スプリット接続、マージ接続)についての接続情報を含んでいる。
【0061】
図15は、コンピュータによる処理方法の一例を表すものである。コンピュータは、同期式論理回路9の設計データに基づいて、以下の処理を行う。
【0062】
まず、コンピュータは、自己帰還ループを構成するフリップフロップ回路を識別する(ステップS101)。
【0063】
図16は、同期式論理回路9の設計データが示す回路の一例を表すものである。この設計データが示す回路は、この例では、組合せ回路C1~C4と、フリップフロップ回路F1~F8とを有する。ここで、フリップフロップ回路F1~F8は、例えば、1ビットのビットデータを記憶するフリップフロップ回路である。
【0064】
コンピュータは、まず、設計データに含まれる、フリップフロップ回路間の接続についての接続情報に基づいて、フリップフロップ回路間の接続を把握する。コンピュータは、フリップフロップ回路を頂点とし、フリップフロップ回路間の経路を辺とするグラフを作成することにより、フリップフロップ回路間の接続を把握する。このグラフでは、クロック信号の経路およびリセット信号の経路は排除される。
【0065】
図17は、フリップフロップ回路F1~F8の間の接続を表すものである。この例では、例えば、フリップフロップ回路F1の入力端子は、組合せ回路C1を介してフリップフロップ回路F1,F2,F7,F8の出力端子に接続される。フリップフロップ回路F2の入力端子は、組合せ回路C1を介して、フリップフロップ回路F1,F2,F7,F8の出力端子に接続される。フリップフロップ回路F3の入力端子は、組合せ回路C2を介してフリップフロップ回路F1の出力端子に接続される。フリップフロップ回路F4の入力端子は、組合せ回路C2を介してフリップフロップ回路F1の出力端子に接続される。フリップフロップ回路F5の入力端子は、組合せ回路C3を介してフリップフロップ回路F2の出力端子に接続される。フリップフロップ回路F6の入力端子は、組合せ回路C3を介してフリップフロップ回路F2の出力端子に接続される。フリップフロップ回路F7の入力端子は、組合せ回路C4を介してフリップフロップ回路F3,F5,F6の出力端子に接続される。フリップフロップ回路F8の入力端子は、組合せ回路C4を介してフリップフロップ回路F4,F6の出力端子に接続される。
【0066】
コンピュータは、このようにして、フリップフロップ回路間の接続についての接続情報に基づいて、フリップフロップ回路間の接続を把握する。そして、コンピュータは、複数のフリップフロップ回路のうち、自己帰還ループを構成するフリップフロップ回路を識別する。コンピュータは、例えば、フリップフロップ回路の入力端子を起点として、フリップフロップ回路の出力端子に至るまでの経路について、深さ優先探索や幅優先探索を行うことにより、自己帰還ループを構成するフリップフロップ回路を識別することができる。
【0067】
図17に示したように、フリップフロップ回路F1の入力端子は、組合せ回路C1を介してフリップフロップ回路F1の出力端子に接続されるので、フリップフロップ回路F1は自己帰還ループを構成する。フリップフロップ回路F2,F8についても同様である。コンピュータは、このようにして、自己帰還ループを構成する3つのフリップフロップ回路F1,F2,F8を識別する。
【0068】
次に、コンピュータは、自己帰還ループを構成するフリップフロップ回路に、自己帰還ループ属性を与え、帰還経路を削除する(ステップS102)。
【0069】
図18は、ステップS102の処理の一例を表すものである。フリップフロップ回路F1,F2,F8は自己帰還ループを構成するので、コンピュータは、これらのフリップフロップ回路F1,F2,F8に、自己帰還ループ属性を与える。この図18では、自己帰還ループ属性が与えられたフリップフロップ回路F1,F2,F8を、ドットの網掛けで示している。そして、コンピュータは、この図18に示したように、フリップフロップ回路F1の出力端子からフリップフロップ回路F1の入力端子に至る帰還経路、フリップフロップ回路F2の出力端子からフリップフロップ回路F2の入力端子に至る帰還経路、フリップフロップ回路F8の出力端子からフリップフロップ回路F8の入力端子に至る帰還経路を削除する。
【0070】
次に、コンピュータは、自己帰還ループを構成するフリップフロップ回路のうち、強連結成分を識別し、強連結成分に係る複数のフリップフロップ回路を、1つのダミーフリップフロップ回路に置換する(ステップS103)。
【0071】
図19,20は、ステップS103の処理の一例を表すものである。この例では、回路は、自己帰還ループ属性が与えられたフリップフロップ回路F1,F2,F8を含んでいる。図19に示したように、フリップフロップ回路F1の出力端子はフリップフロップ回路F2の入力端子に接続され、フリップフロップ回路F2の出力端子はフリップフロップ回路F1の入力端子に接続される。よって、フリップフロップ回路F1,F2は、強連結成分である。フリップフロップ回路F8の出力端子はフリップフロップ回路F1,F2の入力端子に接続されるが、フリップフロップ回路F1,F2の出力端子はフリップフロップ回路F8の入力端子に接続されない。よって、フリップフロップ回路F8は、強連結成分ではない。よって、コンピュータは、最終的に、フリップフロップ回路F1,F2が強連結成分であると判断する。そして、図20に示したように、このフリップフロップ回路F1,F2を、1つのダミーフリップフロップ回路FDに置換する。この例では、ダミーフリップフロップ回路FDを、斜線の網掛けで示している。
【0072】
次に、コンピュータは、同期式論理回路9における複数のフリップフロップ回路を複数のグループにグループ分けするグルーピング処理を行う(ステップS104)。この例では、コンピュータは、図20に示したフリップフロップ回路F3~F8およびダミーフリップフロップ回路FDを、複数のグループにグループ分けする。
【0073】
図21A,21Bは、グルーピング処理の一例を表すものである。このグルーピング処理では、コンピュータは、複数の組合せ回路のそれぞれについて、前段の1以上のフリップフロップ回路を識別するとともに、後段の1以上のフリップフロップ回路を識別することにより、複数のフリップフロップ回路を複数のグループにグループ分けする。以下に、この処理について詳細に説明する。
【0074】
まず、コンピュータは、集合Λtotalを全てのフリップフロップ回路の集合とし、集合Γを空集合とする(ステップS121)。
【0075】
次に、コンピュータは、集合Λを集合Λtotalとする(ステップS122)。
【0076】
次に、コンピュータは、集合Λのうちの1つのフリップフロップ回路をλとして選択する(ステップS123)。
【0077】
次に、コンピュータは、パラメータjを0(ゼロ)に設定する(ステップS124)。
【0078】
次に、コンピュータは、フリップフロップ回路λの入力側に接続された1以上のフリップフロップ回路を識別し、識別した1以上のフリップフロップ回路を集合Iλ とする(ステップS125)。
【0079】
次に、コンピュータは、集合Iλ に属する1以上のフリップフロップ回路のそれぞれの出力側に接続された1以上のフリップフロップ回路を識別し、識別した1以上のフリップフロップ回路の和集合を集合Oλ とする(ステップS126)。
【0080】
次に、コンピュータは、集合Oλ に属する1以上のフリップフロップ回路のそれぞれの入力側に接続された1以上のフリップフロップ回路を識別し、識別した1以上のフリップフロップ回路の和集合を集合Iλ j+1とする(ステップS127)。
【0081】
次に、コンピュータは、集合Iλ j+1に属する1以上のフリップフロップ回路のそれぞれの出力側に接続された1以上のフリップフロップ回路を識別し、識別した1以上のフリップフロップ回路の和集合を集合Oλ j+1とする(ステップS128)。
【0082】
次に、コンピュータは、集合Iλ および集合Iλ j+1が互いに等しく(Iλ ==Iλ j+1)、かつ集合Oλ および集合Oλ j+1が互いに等しい(Oλ ==Oλ j+1)かどうかを確認する(ステップS129)。この条件が満たされていない場合(ステップS129において“N”)には、jをインクリメントし(ステップS130)、処理はステップS127に戻る。コンピュータは、ステップS129の条件が満たされるまで、ステップS127~S130の処理を繰り返す。
【0083】
このステップS129において、条件が満たされた場合(ステップS129において“Y”)には、コンピュータは、集合Γに集合{Iλ,Oλ}を加えるとともに、集合Λから集合Oλを削除することにより集合Γ,Λを更新する(ステップS131)。
【0084】
そして、コンピュータは、集合Γが集合Λtotalと等しい(Γ==Λtotal)かどうかを確認する(ステップS132)。この条件が満たされていない場合(ステップS131において“N”)には、処理はステップS123に戻る。コンピュータは、ステップS131の条件が満たされるまで、ステップS127~S132の処理を繰り返す。
【0085】
このステップS132において、条件が満たされた場合(ステップS132において“Y”)には、コンピュータは、このグルーピング処理のサブルーチンを終了する。
【0086】
以下に、このグルーピング処理について、例を挙げて詳細に説明する。
【0087】
図22~27は、グルーピング処理におけるステップS123~S131の処理の一具体例を表すものである。
【0088】
この例では、ステップS123において、コンピュータは、集合Λのうちのフリップフロップ回路F7を選択する(図22)。そして、ステップS124において、コンピュータは、パラメータjを0(ゼロ)に設定する。
【0089】
次に、ステップS125において、コンピュータは、フリップフロップ回路F7の入力側に接続されたフリップフロップ回路F3,F5,F6を識別し、これらのフリップフロップ回路F3,F5,F6を集合IF7 とする(図23)。
【0090】
次に、ステップS126において、コンピュータは、集合IF7 に属するフリップフロップ回路F3,F5,F6のそれぞれの出力側に接続されたフリップフロップ回路を識別することにより、フリップフロップ回路F7,F8を識別し、これらのフリップフロップ回路F7,F8を集合OF7 とする(図24)。
【0091】
次に、ステップS127において、コンピュータは、集合OF7 に属するフリップフロップ回路F7,F8のそれぞれの入力側に接続されたフリップフロップ回路を識別することにより、フリップフロップ回路F3~F6を識別し、これらのフリップフロップ回路F3~F6を集合IF7 とする(図25)。
【0092】
次に、ステップS128において、コンピュータは、集合IF7 に属するフリップフロップ回路F3~F6のそれぞれの出力側に接続されたフリップフロップ回路を識別することにより、フリップフロップ回路F7,F8を識別し、これらのフリップフロップ回路F7,F8を集合OF7 とする(図26)。
【0093】
図23に示した集合IF7 は、図25に示した集合IF7 と異なる。図24に示した集合OF7 は、図26に示した集合OF7 と等しい。よって、ステップS129の条件は満たされないので、ステップS130において、コンピュータは、パラメータjをインクリメントすることにより、パラメータjを1にする。そして、処理はステップS127に戻る。
【0094】
次に、ステップS127において、コンピュータは、集合OF7 に属するフリップフロップ回路F7,F8のそれぞれの入力側に接続されたフリップフロップ回路を識別することにより、フリップフロップ回路F3~F6を識別し、これらのフリップフロップ回路F3~F6を集合IF7 とする(図27)。
【0095】
次に、ステップS128において、コンピュータは、集合IF7 に属するフリップフロップ回路F3~F6のそれぞれの出力側に接続されたフリップフロップ回路を識別することにより、フリップフロップ回路F7,F8を識別し、これらのフリップフロップ回路F7,F8を集合OF7 とする(図28)。
【0096】
図25に示した集合IF7 は、図27に示した集合IF7 と等しい。図26に示した集合OF7 は、図28に示した集合OF7 と等しい。よって、ステップS129の条件は満たされるので、ステップS131において、コンピュータは、集合Γに{F3,F4,F5,F6,F7,F8}を加え、集合Λから{F7,F8}を削除することにより、集合Γ,Λを更新する。
【0097】
このような処理を繰り返すことように、コンピュータは、組合せ回路C1~C4のそれぞれについて、その組合せ回路の前段の1以上のフリップフロップ回路および後段の1以上のフリップフロップ回路を識別することにより、複数のフリップフロップ回路を複数のグループにグループ分けする。
【0098】
図29は、グルーピング処理の処理結果を表すものである。この図29では、ダミーフリップフロップ回路FDを、フリップフロップ回路F1,F2に戻して描いている。このグルーピング処理により、コンピュータは、フリップフロップ回路F1,F2が同じグループ(グループG1)に属し、フリップフロップ回路F3~F6が同じグループ(グループG2)に属し、フリップフロップ回路F7,F8が同じグループ(グループG3)に属するように、グループ分けを行うことができる。これにより、非同期式回路のハンドシェイク回路は、例えば、グループG1に属するフリップフロップ回路F1,F2に対して同じ信号LCKを供給し、グループG2に属するフリップフロップ回路F3~F6に対して同じ信号LCKを供給し、グループG3に属するフリップフロップ回路F7,F8に対して同じ信号LCKを供給することができる。
【0099】
次に、図15において、コンピュータは、自己帰還ループを構成するフリップフロップ回路を4段のラッチ回路に変換し、それ以外のフリップフロップ回路を2段のラッチ回路に変換する(ステップS105)。
【0100】
図30は、ステップS105の処理の一例を表すものである。この例では、コンピュータは、図29に示した、自己帰還ループ属性が与えられたフリップフロップ回路F1,F2,F8のそれぞれを、図30に示したように4段のラッチ回路に変換する。また、コンピュータは、図29に示した、自己帰還ループ属性が与えられていないフリップフロップ回路F3~F7のそれぞれを、図30に示したように2段のラッチ回路に変換する。
【0101】
次に、コンピュータは、自己帰還ループを構成するフリップフロップ回路の前段の組合せ回路を論理段数方向に4つに論理分割することにより4つの組合せ回路に変換し、論理分割された4つの組合せ回路と、ステップS105により得られた4段のラッチ回路とを交互に配置する(ステップS106)。例えば、図29の例では、コンピュータは、自己帰還ループを構成するフリップフロップ回路F1,F2に着目し、このフリップフロップ回路F1,F2の前段の組合せ回路C1を論理段数方向に4つに論理分割することにより4つの組合せ回路に変換する。そして、コンピュータは、論理分割された4つの組合せ回路と4段のラッチ回路とを交互に配置する。
【0102】
図31は、1つの組合せ回路を論理段数方向に4つに論理分割する処理の一例を表すものである。コンピュータは、例えば、以下の文献に記載の技術などを用いて、論理関数の分割を行うことにより、1つの組合せ回路を論理段数方向に4つに論理分割することができる。
Tadeusz Luba and Henry Selvaraj, H, “A General Approach to Boolean Function Decomposition and its Application in FPGA Based Synthesis.” In Proc. of VLSI Design, 3(3-4), 289-300, 1995.
【0103】
図31(A)に示したように、論理関数Fの組合せ回路は、データXに基づいてデータYを生成する。この例では、コンピュータは、図31(A)に示した論理関数Fの組合せ回路を、図31(B)に示した、論理関数Gの組合せ回路、および論理関数Hの組合せ回路からなる2段の組合せ回路に変換することができる。論理関数Gの組合せ回路は、データX1に基づいてデータZを生成する。論理関数Hの組合せ回路は、データX2およびデータZの和集合が示すデータに基づいてデータYを生成する。ここで、データX1およびデータX2の和集合はデータXである。
【0104】
そして、コンピュータは、同様に、図31(B)に示した論理関数Gの組合せ回路を、図31(C)に示した論理関数Ggの組合せ回路、および論理関数Ghの組合せ回路からなる、2段の組合せ回路に変換することができる。論理関数Ggの組合せ回路は、データX3に基づいてデータZ1を生成する。論理関数Ghの組合せ回路は、データX4およびデータZ1の和集合が示すデータに基づいてデータZを生成する。ここで、データX3およびデータX4の和集合はデータX1である。
【0105】
また、コンピュータは、同様に、図31(B)に示した論理関数Hの組合せ回路を、図31(C)に示した論理関数Hgの組合せ回路、および論理関数Hhの組合せ回路からなる、2段の組合せ回路に変換することができる。論理関数Hgの組合せ回路は、データWに基づいてデータVを生成する。論理関数Hhの組合せ回路は、データW1およびデータVの和集合が示すデータに基づいてデータYを生成する。ここで、データWおよびデータW1の和集合は、データX2およびデータZの和集合に等しい。
【0106】
このようにして、コンピュータは、1つの組合せ回路を、論理段数方向に4つに論理分割することにより4つの組合せ回路に変換する。そして、コンピュータは、リタイミング処理を行うことにより、論理分割された4つの組合せ回路と4段のラッチ回路とを交互に配置する。このリタイミング処理は、例えば、市販の論理合成ツールが提供するリタイミング機能により実現してもよい。
【0107】
図32,33は、この処理の一例を表すものである。図32に示したように、この例では、図31(C)に示した論理関数Ggの組合せ回路、論理関数Ghの組合せ回路、論理関数Hgの組合せ回路、および論理関数Hhの組合せ回路と、ステップS105においてフリップフロップ回路から変換された4段のラッチ回路が、この順に配置されている。コンピュータは、このような回路に対してリタイミング処理を行うことにより、図33に示した回路を得る。この例では、論理関数Ggの組合せ回路、ラッチ回路、論理関数Ghの組合せ回路、ラッチ回路、論理関数Hgの組合せ回路、ラッチ回路、論理関数Hhの組合せ回路、ラッチ回路の順に、回路が配置される。これらの4つのラッチ回路のそれぞれは、扱うデータのビット数に応じた数の複数のラッチ回路を有する。このように、コンピュータは、リタイミング処理を行うことにより、論理分割された4つの組合せ回路と4段のラッチ回路とを交互に配置する。
【0108】
なお、論理段数方向に2つに論理分割された2つの論理回路を用いて論理合成を行う場合には、このリタイミング処理の後に再度論理合成を行う必要がある。すなわち、仮に、論理段数方向に2つに論理分割された2つの論理回路を用いて論理合成を行った後にこのリタイミング処理をおこなった場合には、このリタイミング処理により、意図しないラッチ回路が挿入される可能性があるためである。また、得られた複数のラッチ回路に基づいて、ステップS104において示したグルーピング処理と同様に、複数のラッチ回路を複数のグループにグループ分けしてもよい。
【0109】
以下、説明の便宜上、図33に示した回路を、図34のように描く。この自己帰還ループに係る回路(ループ回路LP)は、組合せ回路12A~12Dと、ラッチ回路11A~11Dを有する。組合せ回路12A~12Dおよびラッチ回路11A~11Dは、組合せ回路12A、ラッチ回路11A、組合せ回路12B、ラッチ回路11B、組合せ回路12C、ラッチ回路11C、組合せ回路12D、ラッチ回路11Dの順に配置される。このループ回路LPにはデータDATA_INが入力され、ループ回路LPからデータDATA_OUTが出力される。組合せ回路12Aには、データDATA_INおよびラッチ回路11Dから出力されたデータが供給される。
【0110】
次に、図15において、コンピュータは、ステップS106により生成した、自己帰還ループに係る回路に、ハンドシェイク回路を付加する(ステップS107)。回路例の詳細については、後述する。ハンドシェイク回路を付加する処理は、例えば、以下の文献に記載の方法を用いることができる。
Chammika Mannakkara, "Asynchronous Pipeline Controller Based on Early Acknowledgement Protocol," PhD Thesis, SOKENDAI, 2010.
【0111】
次に、コンピュータは、自己帰還ループを構成するフリップフロップ以外のフリップフロップ回路の前段の組合せ回路を論理段数方向に2つに論理分割することにより2つの組合せ回路に変換し、論理分割された2つの組合せ回路と、ステップS105により得られた2段のラッチ回路とを交互に配置する(ステップS108)。具体的な処理は、ステップS106と同様である。
【0112】
次に、コンピュータは、ステップS108により生成した回路にハンドシェイク回路を付加する(ステップS109)。
【0113】
そして、コンピュータは、回路全体において、設計データに含まれるフリップフロップ回路間の接続(フォーク接続、ジョイン接続、スプリット接続、マージ接続)についての接続情報に基づいて、回路を接続する(ステップS110)。
【0114】
以上で、このフローは終了する。
【0115】
(自己帰還ループに係る非同期式回路の回路例)
次に、ステップS107において変換される非同期式回路の回路例について、いくつか例を挙げて詳細に説明する。
【0116】
(回路例E1)
図35は、自己帰還ループに係る回路の回路例E1を表すものである。データパス回路10は、図34に示した回路を有する。ハンドシェイク回路20は、ジョイン回路41と、遅延回路22A~22Dと、制御回路21A~21Dと、フォーク回路42と、初期トークン投入回路43とを有する。
【0117】
ジョイン回路41は、図示しない前段の制御回路21との間で、信号(信号REQ_INおよび信号ACK_OUT)のやり取りを行い、フォーク回路42との間で信号(信号REQ,ACK)のやり取りを行う。また、ジョイン回路41は、制御回路21Aとの間で信号(信号REQ,ACK)のやり取りを行う。
【0118】
具体的には、ジョイン回路41は、前段の制御回路21から供給された信号REQ_INを受け取るとともに、この制御回路21に信号ACK_OUTを供給し、フォーク回路42から供給された信号REQを受け取るとともに、このフォーク回路42に信号ACKを供給する。また、ジョイン回路41は、制御回路21Aに信号REQを供給するとともに、この制御回路21Aから供給された信号ACKを受け取る。
【0119】
制御回路21Aは、ジョイン回路41との間、および制御回路21Bとの間で信号(信号REQ,ACK)のやり取りをそれぞれ行う。具体的には、制御回路21Aは、ジョイン回路41から供給された信号REQを受け取るとともに、このジョイン回路41に信号ACKを供給し、制御回路21Bに信号REQ(信号REQA)を供給するとともに、この制御回路21Bから供給された信号ACKを受け取る。また、制御回路21Aは、ラッチ回路11Aに信号LCK(信号LCKA)を供給する。
【0120】
制御回路21Bは、制御回路21Aとの間、および制御回路21Cとの間で信号(信号REQ,ACK)のやり取りをそれぞれ行う。具体的には、制御回路21Bは、制御回路21Aから供給された信号REQ(信号REQA)を受け取るとともに、この制御回路21Aに信号ACKを供給し、制御回路21Cに信号REQ(信号REQB)を供給するとともに、この制御回路21Cから供給された信号ACKを受け取る。また、制御回路21Bは、ラッチ回路11Bに信号LCK(信号LCKB)を供給する。
【0121】
制御回路21Cは、制御回路21Bとの間、および制御回路21Dとの間で信号(信号REQ,ACK)のやり取りをそれぞれ行う。具体的には、制御回路21Cは、制御回路21Bから供給された信号REQ(信号REQB)を受け取るとともに、この制御回路21Bに信号ACKを供給し、制御回路21Dに信号REQ(信号REQC)を供給するとともに、この制御回路21Dから供給された信号ACKを受け取る。また、制御回路21Cは、ラッチ回路11Cに信号LCK(信号LCKC)を供給する。
【0122】
制御回路21Dは、制御回路21Cとの間、およびフォーク回路42との間で信号(信号REQ,ACK)のやり取りをそれぞれ行う。具体的には、制御回路21Dは、制御回路21Cから供給された信号REQ(信号REQC)を受け取るとともに、この制御回路21Cに信号ACKを供給し、フォーク回路42に信号REQ(信号REQD)を供給するとともに、このフォーク回路42から供給された信号ACKを受け取る。また、制御回路21Dは、ラッチ回路11Dに信号LCK(信号LCKD)を供給する。
【0123】
フォーク回路42は、制御回路21Dとの間で信号(信号REQ,ACK)のやり取りを行う。また、フォーク回路42は、図示しない後段の制御回路21との間で、信号(信号REQ_INおよび信号ACK_OUT)のやり取りを行い、ジョイン回路41との間で信号(信号REQ,ACK)のやり取りを行う。
【0124】
具体的には、フォーク回路42は、制御回路21Dから供給された信号REQ(信号REQD)を受け取るとともに、この制御回路21Dに信号ACKを供給する。また、フォーク回路42は、後段の制御回路21に信号REQ_OUTを供給するとともに、この制御回路21から供給された信号REQ_INを受け取り、ジョイン回路41に信号REQを供給するとともに、このジョイン回路41から供給された信号ACKを受け取る。
【0125】
初期トークン投入回路43は、ジョイン回路41およびフォーク回路42の間の信号経路に設けられる。初期トークン投入回路43は、初期状態において、フォーク回路42からジョイン回路41への信号REQをアクティブにする。
【0126】
このように、回路例E1では、図36に示すように、ラッチ回路11Aに、制御回路21Aから出力された信号LCKAを直接供給している。ラッチ回路11B~11Dについても同様である。
【0127】
図37は、この回路例E1に係る回路の一動作例を表すものであり、(A)は信号REQ_INの波形を示し、(B)は信号REQA,LCKAの波形を示し、(C)は信号REQB,LCKBの波形を示し、(D)は信号REQC,LCKCの波形を示し、(E)は信号REQD,LCKDの波形を示し、(F)は信号REQ_OUTの波形を示す。
【0128】
タイミングt11において、前段の制御回路21から供給された信号REQ_INは低レベルから高レベルに変化する(図37(A))。図示していないが、この例では、このタイミングt11において、フォーク回路42からジョイン回路41への信号REQは高レベルである。これにより、ジョイン回路41は、この信号REQ_INに基づいて、制御回路21Aへの信号REQを低レベルから高レベルに変化させる。よって、このタイミングt11から、遅延回路22Aの遅延量tdAだけ遅延したタイミングt12において、制御回路21Aは、信号REQA,LCKAを低レベルから高レベルに変化させる(図37(B))。制御回路21Aは、ジョイン回路41を介して、前段の制御回路21に信号ACK(信号ACK_OUT)を供給する。これにより、タイミングt13において、信号REQ_INは高レベルから低レベルに変化する(図37(A))。図示していないが、フォーク回路42からジョイン回路41への信号REQは高レベルから低レベルに変化する。これにより、ジョイン回路41は、待ち合わせ状態になる。
【0129】
信号REQA,LCKAが変化したタイミングt12から、遅延回路22Bの遅延量tdBだけ遅延したタイミングt14において、制御回路21Bは、信号REQB,LCKBを低レベルから高レベルに変化させる(図37(C))。制御回路21Bは、制御回路21Aに信号ACKを供給する。これにより、タイミングt15において、制御回路21Aは信号REQA,LCKAを高レベルから低レベルに変化させる(図37(B))。
【0130】
信号REQB,LCKBが変化したタイミングt14から、遅延回路22Cの遅延量tdCだけ遅延したタイミングt16において、制御回路21Cは、信号REQC,LCKCを低レベルから高レベルに変化させる(図37(D))。制御回路21Cは制御回路21Bに信号ACKを供給する。これにより、タイミングt18において、制御回路21Bは信号REQB,LCKBを高レベルから低レベルに変化させる(図37(C))。
【0131】
この例では、タイミングt17において、前段の制御回路21から供給された信号REQ_INは低レベルから高レベルに変化する(図37(A))。しかしながら、フォーク回路42からジョイン回路41への信号REQは低レベルであるので、ジョイン回路41は、待ち合わせ状態であり、制御回路21Aへの信号REQを低レベルに維持する。
【0132】
信号REQC,LCKCが変化したタイミングt16から、遅延回路22Dの遅延量tdDだけ遅延したタイミングt19において、制御回路21Dは、信号REQD,LCKDを低レベルから高レベルに変化させる(図37(E))。制御回路21Dは、制御回路21Cに信号ACKを供給する。これにより、タイミングt20において、制御回路21Cは信号REQC,LCKCを高レベルから低レベルに変化させる(図37(D))。
【0133】
フォーク回路42は、制御回路21Dからの信号REQDの変化に基づいて、タイミングt21において、信号REQ_OUTを低レベルから高レベルに変化させる(図37(F))。
【0134】
また、フォーク回路42は、この信号REQDの変化に基づいて、ジョイン回路41への信号REQを低レベルから高レベルに変化させる。信号REQ_INは高レベルであるので(図37(A))、ジョイン回路41における待ち合わせが成立する。よって、ジョイン回路41は、フォーク回路42からの信号REQの変化に基づいて、制御回路21Aへの信号REQを低レベルから高レベルに変化させる。よって、信号REQD,LCKDが変化したタイミングt19から、遅延回路22Aの遅延量tdAだけ遅延したタイミングt22において、制御回路21Aは、信号REQA,LCKAを低レベルから高レベルに変化させる(図37(B))。制御回路21Aは、ジョイン回路41を介して、前段の制御回路21に信号ACK(信号ACK_OUT)を供給する。これにより、タイミングt23において、信号REQ_INは高レベルから低レベルに変化する(図37(A))。同様に、制御回路21Aは、ジョイン回路41およびフォーク回路42を介して、制御回路21Dに信号ACKを供給する。これにより、タイミングt24において、制御回路21Dは、信号REQD,LCKDを高レベルから低レベルに変化させる(図37(E))。
【0135】
フォーク回路42は、制御回路21Dからの信号REQDの変化に基づいて、タイミングt25において、信号REQ_OUTを高レベルから低レベルに変化させる(図37(F))。
【0136】
信号REQA,LCKAが変化したタイミングt21から、遅延回路22Bの遅延量tdBだけ遅延したタイミングt26において、制御回路21Bは、信号REQB,LCKBを低レベルから高レベルに変化させる(図37(C))。制御回路21Bは、制御回路21Aに信号ACKを供給する。これにより、タイミングt27において、制御回路21Aは信号REQA,LCKAを高レベルから低レベルに変化させる(図37(B))。
【0137】
これ以降についても同様である。
【0138】
この例では、信号LCKAはタイミングt12~t15の期間において高レベルになる。これにより、ラッチ回路11Aは、このタイミングt12~t15の期間において、入力されたデータをそのまま出力する。また、信号LCKBは、タイミングt14~t18の期間において高レベルになる。これにより、ラッチ回路11Bは、このタイミングt14~t18の期間において、入力されたデータをそのまま出力する。信号LCKAが高レベルになる期間と、信号LCKBが高レベルになる期間は、タイミングt14~t15の期間においてオーバーラップする。このタイミングt14~t15の期間では、ラッチ回路11A,11Bの両方が、入力されたデータをそのまま出力する。言い換えれば、3つの組合せ回路12A,12B,12Cが接続される。
【0139】
同様に、タイミングt16~t18の期間では、信号LCKB,LCKCがともに高レベルになり、3つの組合せ回路12B,12C,12Dが接続される。タイミングt19~t20の期間では、信号LCKC,LCKDがともに高レベルになり、3つの組合せ回路12C,12D,12Aが接続される。タイミングt22~t24の期間では、信号LCKD,LCKAがともに高レベルになり、3つの組合せ回路12D,12A,12Bが接続される。
【0140】
回路例E1に係る回路は、このように3つの組合せ回路が接続しても問題が生じない場合に用いることができる。
【0141】
(回路例E2)
回路例E2は、上述したオーバーラップを解消し、3つの組合せ回路が接続しないように構成した例である。
【0142】
図38は、自己帰還ループに係る回路の回路例E2を表すものである。データパス回路10は、回路例E1(図35)と同様に、組合せ回路12A~12Dと、ラッチ回路11A~11Dとを有する。ハンドシェイク回路20は、ジョイン回路41と、遅延回路22A~22Dと、制御回路21A~21Dと、フォーク回路42と、初期トークン投入回路43と、論理積回路44A~44Dとを有する。
【0143】
論理積回路44Aは、制御回路21Aから供給された信号LCKと、制御回路21Bから供給された信号LCKの反転信号との論理積を求め、得られた結果を信号LCKAとして出力する。よって、制御回路21Bから供給された信号LCKは、制御回路21Bから制御回路21Aへの信号ACKと同じである。論理積回路44Bは、制御回路21Bから供給された信号LCKと、制御回路21Cから供給された信号LCKの反転信号との論理積を求め、得られた結果を信号LCKBとして出力する。論理積回路44Cは、制御回路21Cから供給された信号LCKと、制御回路21Dから供給された信号LCKの反転信号との論理積を求め、得られた結果を信号LCKCとして出力する。論理積回路44Dは、制御回路21Dから供給された信号LCKと、制御回路21Aから供給された信号LCKの反転信号との論理積を求め、得られた結果を信号LCKDとして出力する。
【0144】
このように、回路例E2では、図39に示すように、ラッチ回路11Aに、論理積回路44Aから供給された信号LCKAを供給している。ラッチ回路11B~11Dについても同様である。なお、図38では、例えば論理積回路44Aは、制御回路21Aから供給された信号LCKと、制御回路21Bから供給された信号LCKの反転信号との論理積を求めるようにしたが、この図39では、論理積回路44Aは、制御回路21Aから供給された信号LCKと、制御回路21Bから制御回路21Aへの信号ACKの反転信号との論理積を求めるようにしている。図3に示したように、制御回路21Bが生成する信号LCK,REQ,ACKは、互いに同じ信号であるので、これらは実質的に同じである。
【0145】
図40は、この回路例E2に係る回路の一動作例を表すものであり、(A)は信号REQ_INの波形を示し、(B)は信号REQAの波形を示し、(C)は信号REQBの波形を示し、(D)は信号REQCの波形を示し、(E)は信号REQDの波形を示し、(F)は論理積回路44Aが生成する信号LCKAの波形を示し、(G)は論理積回路44Bが生成する信号LCKBの波形を示し、(H)は論理積回路44Cが生成する信号LCKCの波形を示し、(I)は論理積回路44Dが生成する信号LCKDの波形を示し、(J)は信号REQ_OUTの波形を示す。信号REQ_IN,REQA~REQD、REQ_OUTの波形は、回路例E1の場合(図37)と同様である。
【0146】
論理積回路44Aは、制御回路21Aが生成した信号LCKと、制御回路21Bが生成した信号LCKの反転信号との論理積を求めることにより、信号LCKAを生成する。制御回路21Aが生成した信号LCKは、図40(B)に示した信号REQAと同じ波形を有し、制御回路21Bが生成した信号LCKは、図40(C)に示した信号REQBと同じ波形を有する。この例では、論理積回路44Aは、例えば、タイミングt12~t14の期間において信号LCKAを高レベルにする(図40(F))。
【0147】
同様に、論理積回路44Bは、制御回路21Bから供給された信号LCK(信号REQB)と、制御回路21Cから供給された信号LCK(信号REQC)の反転信号との論理積を求めることにより、信号LCKBを生成する。この例では、論理積回路44Bは、例えば、タイミングt14~t16の期間において信号LCKBを高レベルにする(図40(G))。
【0148】
同様に、論理積回路44Cは、制御回路21Cから供給された信号LCK(信号REQC)と、制御回路21Dから供給された信号LCK(信号REQD)の反転信号との論理積を求めることにより、信号LCKCを生成する。この例では、論理積回路44Cは、例えば、タイミングt16~t19の期間において信号LCKCを高レベルにする(図40(H))。
【0149】
同様に、論理積回路44Dは、制御回路21Dから供給された信号LCK(信号REQD)と、制御回路21Aから供給された信号LCK(信号REQA)の反転信号との論理積を求めることにより、信号LCKDを生成する。この例では、論理積回路44Dは、例えば、タイミングt19~t22の期間において信号LCKDを高レベルにする(図40(I))。
【0150】
この例では、信号LCKAはタイミングt12~t14の期間において高レベルになる。これにより、ラッチ回路11Aは、このタイミングt12~t14の期間において、入力されたデータをそのまま出力する。また、信号LCKBは、タイミングt14~t16の期間において高レベルになる。これにより、ラッチ回路11Bは、このタイミングt14~t16の期間において、入力されたデータをそのまま出力する。この例では、信号LCKAが高レベルになる期間と、信号LCKBが高レベルになる期間は、ほとんどオーバーラップしない。よって、回路例E1の場合とは異なり、3つの組合せ回路12D,12A,12Bは接続されない。
【0151】
同様に、信号LCKBが高レベルになる期間と、信号LCKCが高レベルになる期間は、ほとんどオーバーラップしない。信号LCKCが高レベルになる期間と、信号LCKDが高レベルになる期間は、ほとんどオーバーラップしない。信号LCKDが高レベルになる期間と、信号LCKAが高レベルになる期間は、ほとんどオーバーラップしない。
【0152】
これにより、例えば、回路例E2に係る回路は、回路例E1に係る回路に比べて、安定に動作することができる。
【0153】
(回路例E3)
回路例E3は、回路例E2において、データパス回路10におけるラッチ回路の段数を2段に削減した例である。
【0154】
図41は、回路例E3に係るループ回路LPの一構成例を表すものである。このループ回路LPは、組合せ回路12A~12Dと、ラッチ回路11AC,11BDと、マルチプレクサ(MUX)13,16と、デマルチプレクサ(DMX)15,18とを有する。マルチプレクサ13は、組合せ回路12Aから供給されたデータ、および組合せ回路12Cから供給されたデータのうちの一方を選択し、選択されたデータを出力する。ラッチ回路11ACは、マルチプレクサ13から供給されたデータをラッチする。デマルチプレクサ15は、ラッチ回路11ACから供給されたデータを、組合せ回路12Bおよび組合せ回路12Dのうちの一方に供給する。マルチプレクサ16は、組合せ回路12Bから供給されたデータ、および組合せ回路12Dから供給されたデータのうちの一方を選択し、選択されたデータを出力する。ラッチ回路11BDは、マルチプレクサ16から供給されたデータをラッチする。デマルチプレクサ18は、ラッチ回路11BDから供給されたデータを、データDATA_OUTとして出力し、あるいは組合せ回路12Cに供給する。
【0155】
図42は、図41に示したループ回路LPの一動作例を表すものであり、(A)はある動作状態を示し、(B)は他の動作状態を示す。このループ回路LPは、図42(A)に示した動作状態と、図42(B)に示した動作状態とを交互に繰り返す。
【0156】
図42(A)では、デマルチプレクサ18は、ラッチ回路11BDから供給されたデータをデータDATA_OUTとして出力する。組合せ回路12Aは、データDATA_INおよびデータDATA_OUTに基づいて論理演算を行う。マルチプレクサ13は、組合せ回路12Aから供給されたデータをラッチ回路11ACに供給する。ラッチ回路11ACは、マルチプレクサ13から供給されたデータをラッチする。デマルチプレクサ15は、ラッチ回路11ACから供給されたデータを組合せ回路12Bに供給する。組合せ回路12Bは、デマルチプレクサ15から供給されたデータに基づいて論理演算を行う。マルチプレクサ16は、組合せ回路12Bから供給されたデータをラッチ回路11BDに供給する。
【0157】
図42(B)では、デマルチプレクサ18は、ラッチ回路11BDから供給されたデータを組合せ回路12Cに供給する。組合せ回路12Cは、デマルチプレクサ18から供給されたデータに基づいて論理演算を行う。マルチプレクサ13は、組合せ回路12Cから供給されたデータをラッチ回路11ACに供給する。ラッチ回路11ACは、マルチプレクサ13から供給されたデータをラッチする。デマルチプレクサ15は、ラッチ回路11ACから供給されたデータを組合せ回路12Dに供給する。組合せ回路12Dは、デマルチプレクサ15から供給されたデータに基づいて論理演算を行う。マルチプレクサ16は、組合せ回路12Dから供給されたデータをラッチ回路11BDに供給する。
【0158】
このように、図41に示したループ回路LPは、データを2周させることにより、図34に示したループ回路LPと同じ処理を行う。
【0159】
コンピュータは、図34に示した回路を、図41に示した回路に変換し、この回路にハンドシェイク回路20を付加することにより、以下に示す回路例E3に係る回路を生成する。
【0160】
図43は、自己帰還ループに係る回路の回路例E3を表すものである。データパス回路10は、図41に示した回路に、ラッチ回路14,17を加えたものである。ラッチ回路14は、信号SELACをラッチすることにより信号SELBDを生成する。ラッチ回路17は、信号SELBDをラッチすることにより信号SELAC2を生成する。ハンドシェイク回路20は、ジョイン回路41と、遅延回路22A~22Dと、制御回路21A~21Dと、フォーク回路42と、初期トークン投入回路43と、論理積回路44A~44Dと、論理和回路45,46AC,46BDとを有する。
【0161】
論理和回路45は、制御回路21Bから供給された信号LCKと論理積回路44Cの出力信号(信号LCKC)との論理和を求め、得られた結果を信号SELACとして出力する。論理和回路46ACは、論理積回路44Aの出力信号(信号LCKA)と論理積回路44Cの出力信号(信号LCKC)との論理和を求め、得られた結果を信号LCKACとしてラッチ回路11AC,14に供給する。論理和回路46BDは、論理積回路44Bの出力信号(信号LCKB)と論理積回路44Dの出力信号(信号LCKD)との論理和を求め、得られた結果を信号LCKBDとしてラッチ回路11BD,17に供給する。
【0162】
ここで、組合せ回路12Aは、本開示における「第1の組合せ回路」の一具体例に対応する。組合せ回路12Cは、本開示における「第2の組合せ回路」の一具体例に対応する。マルチプレクサ13は、本開示における「第1のマルチプレクサ」の一具体例に対応する。ラッチ回路11ACは、本開示における「第1のラッチ回路」の一具体例に対応する。ラッチ回路14は、本開示における「第1の制御ラッチ回路」の一具体例に対応する。デマルチプレクサ15は、本開示における「第1のデマルチプレクサ」の一具体例に対応する。組合せ回路12Bは、本開示における「第3の組合せ回路」の一具体例に対応する。組合せ回路12Dは、本開示における「第4の組合せ回路」の一具体例に対応する。マルチプレクサ16は、本開示における「第2のマルチプレクサ」の一具体例に対応する。ラッチ回路11BDは、本開示における「第2のラッチ回路」の一具体例に対応する。ラッチ回路17は、本開示における「第2の制御ラッチ回路」の一具体例に対応する。デマルチプレクサ18は、本開示における「第2のデマルチプレクサ」の一具体例に対応する。
【0163】
ジョイン回路41は、本開示における「ジョイン回路」の一具体例に対応する。制御回路21Aは、本開示における「第1の制御回路」の一具体例に対応する。制御回路21Bは、本開示における「第2の制御回路」の一具体例に対応する。制御回路21Cは、本開示における「第3の制御回路」の一具体例に対応する。制御回路21Dは、本開示における「第4の制御回路」の一具体例に対応する。フォーク回路42は、本開示における「フォーク回路」の一具体例に対応する。論理積回路44Aは、本開示における「第1の論理積回路」の一具体例に対応する。論理積回路44Bは、本開示における「第2の論理積回路」の一具体例に対応する。論理積回路44Cは、本開示における「第3の論理積回路」の一具体例に対応する。論理積回路44Dは、本開示における「第4の論理積回路」の一具体例に対応する。論理和回路46ACは、本開示における「第1の論理和回路」の一具体例に対応する。論理和回路46BDは、本開示における「第2の論理和回路」の一具体例に対応する。論理和回路45は、本開示における「第3の論理和回路」の一具体例に対応する。信号REQ,REQ_IN,REQ_OUTは、本開示における「リクエスト信号」の一具体例に対応する。信号ACK,ACK_IN,ACK_OUTは、本開示における「応答信号」の一具体例に対応する。
【0164】
図44は、この回路例E3に係る回路の一動作例を表すものであり、(A)は信号REQ_INの波形を示し、(B)は信号REQAの波形を示し、(C)は信号REQBの波形を示し、(D)は信号REQCの波形を示し、(E)は信号REQDの波形を示し、(F)は論理積回路44Aが生成する信号LCKAの波形を示し、(G)は論理積回路44Bが生成する信号LCKBの波形を示し、(H)は論理積回路44Cが生成する信号LCKCの波形を示し、(I)は論理積回路44Dが生成する信号LCKDの波形を示し、(J)は論理和回路46ACが生成する信号LCKACの波形を示し、(K)は論理和回路46BDが生成する信号LCKBDの波形を示し、(L)は信号SELACの波形を示し、(M)は信号SELBDの波形を示し、(N)は信号SELAC2の波形を示し、(O)は信号REQ_OUTの波形を示す。信号REQ_IN,REQA~REQD、LCKA~LCKD,REQ_OUTの波形は、回路例E2の場合(図40)と同様である。
【0165】
論理和回路46ACは、論理積回路44Aが生成した信号LCKAと論理積回路44Cが生成した信号LCKCとの論理和を求めることにより、信号LCKACを生成する。この例では、論理和回路46ACは、例えば、タイミングt12~t14の期間、およびタイミングt16~t19の期間において信号LCKACを高レベルにする(図44(J))。
【0166】
論理和回路46BDは、論理積回路44Bが生成した信号LCKBと論理積回路44Dが生成した信号LCKDとの論理和を求めることにより、信号LCKBDを生成する。この例では、論理和回路46BDは、例えば、タイミングt14~t16の期間、およびタイミングt19~t21の期間において信号LCKACを高レベルにする(図44(K))。
【0167】
論理和回路45は、制御回路21Bが生成した信号LCKと論理積回路44Cが生成した信号LCKCとの論理和を求めることにより信号SELACを生成する。制御回路21Bが生成した信号LCKは、図44(C)に示した信号REQCと同じ波形を有する。よって、この例では、論理和回路45は、例えば、タイミングt14において信号SELACを低レベルから高レベルに変化させ、タイミングt19において信号SELACを高レベルから低レベルに変化させる(図44(L))。
【0168】
データパス回路10のラッチ回路14は、信号LCKACに基づいて、この信号SELACをラッチすることにより信号SELBDを生成する。よって、この例では、ラッチ回路14は、タイミングt16において信号SELBDを低レベルから高レベルに変化させ、タイミングt21において信号SELBDを高レベルから低レベルに変化させる(図44(M))。
【0169】
データパス回路10のラッチ回路17は、信号LCKBDに基づいて、この信号SELBDをラッチすることにより信号SELAC2を生成する。よって、この例では、ラッチ回路17は、タイミングt14において信号SELAC2を高レベルから低レベルに変化させ、タイミングt19において信号SELAC2を低レベルから高レベルに変化させる(図44(N))。
【0170】
例えば、タイミングt12~t14の期間では、信号SELACが低レベルであるので(図44(L))、マルチプレクサ13は、組合せ回路12Aから供給されたデータをラッチ回路11ACに供給する。
【0171】
タイミングt14~t16の期間では、信号SELBDが低レベルであるので(図44(M)、デマルチプレクサ15は、ラッチ回路11ACから供給されたデータを組合せ回路12Bに供給し、マルチプレクサ16は、組合せ回路12Bから供給されたデータをラッチ回路11BDに供給する。
【0172】
タイミングt16~t19の期間では、信号SELAC2が低レベルであり、信号SELACが高レベルであるので(図44(L),(N)、デマルチプレクサ18は、ラッチ回路11BDから供給されたデータを組合せ回路12Cに供給し、マルチプレクサ13は、組合せ回路12Cから供給されたデータをラッチ回路11ACに供給する。
【0173】
タイミングt19~t22の期間では、信号SELBDが高レベルであるので(図44(K)、デマルチプレクサ15は、ラッチ回路11ACから供給されたデータを組合せ回路12Dに供給し、マルチプレクサ16は、組合せ回路12Dから供給されたデータをラッチ回路11BDに供給する。
【0174】
そして、タイミングt22~t26の期間では、信号SELAC2が高レベルであるので(図44(N))、デマルチプレクサ18は、ラッチ回路11BDから供給されたデータをデータDATA_OUTとして出力する。
【0175】
回路例E3では、データパス回路10におけるラッチ回路の段数を2段に削減することができるので、回路規模を削減することができる。その結果、回路面積および消費電力を削減することができる。
【0176】
また、この回路例E3では、図43に示したように、自己帰還ループを構成するフリップフロップ回路は、最終的に2段のラッチ回路11AC,11BDを用いて構成される。一方、図15のステップS105に示したように、自己帰還ループを構成するフリップフロップ回路以外のフリップフロップ回路もまた、2段のラッチ回路を用いて構成される。これにより、静的タイミング解析が容易になる。よって、テストを容易にするための設計において、テスト回路をシンプルにすることができるので、テスト回路の回路規模を抑えることができる。
【0177】
(回路例E4)
回路例E4は、回路例E3において、ハンドシェイク回路20における、フォワードパスでのラッチ回路の段数を2段に削減した例である。
【0178】
図45は、自己帰還ループに係る回路の回路例E4を表すものである。データパス回路10は、回路例E3(図43)と同様に、組合せ回路12A~12Dと、ラッチ回路11AC,11BD,14,17と、マルチプレクサ13,16と、デマルチプレクサ15,18とを有する。ハンドシェイク回路20は、ジョイン回路41と、マージ回路51と、遅延回路22AC,22BDと、制御回路21AC,21BD,47と、スプリット回路52と、フォーク回路42と、初期トークン投入回路43と、論理積回路48とを有する。
【0179】
ジョイン回路41は、図示しない前段の制御回路21との間で、信号(信号REQ_INおよび信号ACK_OUT)のやり取りを行い、フォーク回路42との間で信号(信号REQ,ACK)のやり取りを行う。また、ジョイン回路41は、マージ回路51との間で信号(信号REQ,ACK)のやり取りを行う。
【0180】
具体的には、ジョイン回路41は、前段の制御回路21から供給された信号REQ_INを受け取るとともに、この制御回路21に信号ACK_OUTを供給し、フォーク回路42から供給された信号REQを受け取るとともに、このフォーク回路42に信号ACKを供給する。また、ジョイン回路41は、マージ回路51に信号REQを供給するとともに、このマージ回路51から供給された信号ACKを受け取る。
【0181】
マージ回路51は、ジョイン回路41との間、および制御回路47との間で、信号(信号REQ,ACK)のやり取りを行う。また、マージ回路51は、制御回路21ACとの間で信号(信号REQ,ACK)のやり取りを行う。また、マージ回路51は、信号SELACを生成する。
【0182】
具体的には、マージ回路51は、ジョイン回路41から供給された信号REQを受け取るとともに、このマージ回路51に信号ACKを供給し、制御回路47から供給された信号REQを受け取るとともに、この制御回路47に信号ACKを供給する。また、マージ回路51は、制御回路21ACに信号REQを供給するとともに、この制御回路21ACから供給された信号ACKを受け取る。
【0183】
制御回路21ACは、マージ回路51との間、および制御回路21BDとの間で信号(信号REQ,ACK)のやり取りをそれぞれ行う。具体的には、制御回路21ACは、マージ回路51から供給された信号REQを受け取るとともに、このマージ回路51に信号ACKを供給し、制御回路21BDに信号REQ(信号REQAC)を供給するとともに、この制御回路21BDから供給された信号ACKを受け取る。また、制御回路21ACは、論理積回路48に信号LCKを供給する。
【0184】
制御回路21BDは、制御回路21ACとの間、およびスプリット回路52との間で信号(信号REQ,ACK)のやり取りをそれぞれ行う。具体的には、制御回路21BDは、制御回路21ACから供給された信号REQACを受け取るとともに、この制御回路21ACに信号ACKを供給し、スプリット回路52に信号REQ(信号REQBD)を供給するとともに、このスプリット回路52から供給された信号ACKを受け取る。また、制御回路21BDは、ラッチ回路11BD,17に信号LCK(信号LCKBD)を供給する。
【0185】
制御回路47は、スプリット回路52との間で、信号(信号REQ,ACK)のやり取りを行う。また、制御回路47は、マージ回路51との間で、信号(信号REQ,ACK)のやり取りを行う。具体的には、制御回路47は、スプリット回路52から供給された信号REQを受け取るとともに、このスプリット回路52に信号ACKを供給し、マージ回路51に信号REQ(信号REQDM)を供給するとともに、このマージ回路51から供給された信号ACKを受け取る。
【0186】
スプリット回路52は、制御回路21BDとの間で信号(信号REQ,ACK)のやり取りを行う。また、スプリット回路52は、フォーク回路42との間、および制御回路47との間で、信号(信号REQ,ACK)のやり取りを行う。スプリット回路52には、信号SELAC2が入力される。
【0187】
具体的には、スプリット回路52は、制御回路21BDから供給された信号REQBDを受け取るとともに、この制御回路21BDに信号ACKを供給する。また、スプリット回路52は、フォーク回路42に信号REQを供給するとともに、このフォーク回路42から供給された信号REQを受け取り、制御回路47に信号REQを供給するとともに、この制御回路47から供給された信号ACKを受け取る。
【0188】
フォーク回路42は、スプリット回路52との間で信号(信号REQ,ACK)のやり取りを行う。また、フォーク回路42は、図示しない後段の制御回路21との間で、信号(信号REQ_INおよび信号ACK_OUT)のやり取りを行い、ジョイン回路41との間で信号(信号REQ,ACK)のやり取りを行う。
【0189】
具体的には、フォーク回路42は、スプリット回路52から供給された信号REQを受け取るとともに、このスプリット回路52に信号ACKを供給する。また、フォーク回路42は、後段の制御回路21に信号REQ_OUTを供給するとともに、この制御回路21から供給された信号REQ_INを受け取り、ジョイン回路41に信号REQを供給するとともに、このジョイン回路41から供給された信号ACKを受け取る。
【0190】
論理積回路48は、制御回路21ACから供給された信号LCKと、制御回路21BDから供給された信号LCK(信号LCKBD)の反転信号との論理積を求め、得られた結果を信号LCKACとして出力する。
【0191】
ここで、マージ回路51は、本開示における「マージ回路」の一具体例に対応する。制御回路21ACは、本開示における「第1の制御回路」の一具体例に対応する。制御回路21BDは、本開示における「第2の制御回路」の一具体例に対応する。スプリット回路52は、本開示における「スプリット回路」の一具体例に対応する。制御回路47は、本開示における「第3の制御回路」の一具体例に対応する。論理積回路48は、本開示における「第5の論理積回路」の一具体例に対応する。
【0192】
図46は、この回路例E4に係る回路の一動作例を表すものであり、(A)は信号REQ_INの波形を示し、(B)は信号REQACの波形を示し、(C)は信号REQBDの波形を示し、(D)は信号REQDMの波形を示し、(E)は論理積回路48が生成する信号LCKACの波形を示し、(F)は制御回路21BDが生成する信号LCKBDの波形を示し、(G)は信号SELACの波形を示し、(H)は信号SELBCの波形を示し、(I)は信号SELAC2の波形を示し、(J)は信号REQ_OUTの波形を示す。
【0193】
タイミングt31において、前段の制御回路21から供給された信号REQ_INは低レベルから高レベルに変化する(図46(A))。図示していないが、この例では、このタイミングt31において、フォーク回路42からジョイン回路41への信号REQは高レベルである。これにより、ジョイン回路41は、この信号REQ_INに基づいて、マージ回路51への信号REQを低レベルから高レベルに変化させる。マージ回路51は、この信号REQを制御回路21ACに供給する。よって、このタイミングt31から、遅延回路22ACの遅延量tdACだけ遅延したタイミングt32において、制御回路21ACは、信号REQACを低レベルから高レベルに変化させる(図46(B))。制御回路21ACは、マージ回路51およびジョイン回路41を介して、前段の制御回路21に信号ACK(信号ACK_OUT)を供給する。これにより、タイミングt33において、信号REQ_INは高レベルから低レベルに変化する(図46(A))。図示していないが、フォーク回路42からジョイン回路41への信号REQは高レベルから低レベルに変化する。これにより、ジョイン回路41は、待ち合わせ状態になる。
【0194】
信号REQACが変化したタイミングt32から、遅延回路22BDの遅延量tdBDだけ遅延したタイミングt34において、制御回路21BDは、信号REQBD,LCKBDを低レベルから高レベルに変化させる(図46(C),(F))。制御回路21BDは、制御回路21ACに信号ACKを供給する。これにより、タイミングt35において、制御回路21ACは信号REQAC,LCKを高レベルから低レベルに変化させる(図46(B))。
【0195】
スプリット回路52は、信号SELAC2に基づいて、信号REQBDを制御回路47に供給する。タイミングt35において、制御回路47は、信号REQDMを低レベルから高レベルに変化させる(図46(D))。制御回路47は、スプリット回路52を介して、制御回路21BDに信号ACKを供給する。これにより、タイミングt37において、制御回路21BDは信号REQBD,LCKBDを高レベルから低レベルに変化させる(図46(C),(F))。
【0196】
マージ回路51は、この信号REQDMの変化に基づいて、タイミングt36において、信号SELACを低レベルから高レベルに変化させる(図46(G))。
【0197】
また、マージ回路51は、この信号REQDMの変化に基づいて、制御回路21ACへの信号REQを低レベルから高レベルに変化させる。信号REQDMが変化したタイミングt35から、遅延回路22ACの遅延量tdACだけ遅延したタイミングt38において、制御回路21ACは、信号REQACを低レベルから高レベルに変化させる(図46(B))。制御回路21ACは、マージ回路51を介して、制御回路47に信号ACKを供給する。これにより、タイミングt39において、制御回路47は信号REQDMを高レベルから低レベルに変化させる(図46(D))。
【0198】
この例では、タイミングt40において、前段の制御回路21から供給された信号REQ_INは低レベルから高レベルに変化する(図46(A))。しかしながら、フォーク回路42からジョイン回路41への信号REQは低レベルであるので、ジョイン回路41は、待ち合わせ状態であり、マージ回路51への信号REQを低レベルに維持する。
【0199】
信号REQACが変化したタイミングt38から、遅延回路22BDの遅延量tdBDだけ遅延したタイミングt41において、制御回路21BDは、信号REQBD,LCKBDを低レベルから高レベルに変化させる(図46(C),(F))。制御回路21BDは、制御回路21ACに信号ACKを供給する。これにより、タイミングt42において、制御回路21ACは信号REQACを高レベルから低レベルに変化させる(図46(B))。
【0200】
スプリット回路52は、信号SELAC2に基づいて、この信号REQBDをフォーク回路42に供給する。フォーク回路42は、スプリット回路52から供給された信号REQ(信号REQBD)の変化に基づいて、タイミングt42において、信号REQ_OUTを低レベルから高レベルに変化させる(図46(J))。
【0201】
また、フォーク回路42は、スプリット回路52から供給された信号REQ(信号REQBD)の変化に基づいて、ジョイン回路41への信号REQを低レベルから高レベルに変化させる。信号REQ_INは高レベルであるので(図46(A))、ジョイン回路41は、フォーク回路42からの信号REQに基づいて、マージ回路51への信号REQを低レベルから高レベルに変化させる。マージ回路51は、この信号REQの変化に基づいて、タイミングt43において、信号SELABを高レベルから低レベルに変化させる(図46(G))。
【0202】
そして、制御回路21BDは、タイミングt44において、信号REQBD,LCKBDを高レベルから低レベルに変化させる(図46(C),(F))。スプリット回路52は、信号SELAC2に基づいて、この信号REQBDをフォーク回路42に供給する。フォーク回路42は、スプリット回路52から供給された信号REQ(信号REQBD)の変化に基づいて、タイミングt45において、信号REQ_OUTを高レベルから低レベルに変化させる(図46(J))。
【0203】
これ以降についても同様である。
【0204】
回路例E4では、ハンドシェイク回路20におけるラッチ回路の段数を削減することができる。また、例えば回路例E3(図43)の回路と比べて、論理積回路44A~44Dおよび論理和回路45,46AC,46BDを省くことができる。このように、論理積回路44A~44Dを省いても、図46に示したように、信号LCKACが高レベルになる期間と、信号LCKBDが高レベルになる期間が、ほとんどオーバーラップしないようにすることができる。制御回路47を設けることにより、このような動作の順序は保証される。これにより、回路例E4では、回路規模を小さくしつつ、安定に動作することができる。
【0205】
(回路例E5)
回路例E5に係る回路は、自己ループに係る回路における制御回路を、自己ループに係る回路以外の回路における制御回路21と異なる回路により構成したものである。
【0206】
図47は、自己帰還ループに係る回路の回路例E5の一例を表すものである。データパス回路10は、回路例E4(図45)と同じ回路構成を有する。ハンドシェイク回路20は、ジョイン回路41と、マージ回路51と、遅延回路22AC,22BDと、制御回路61AC,61BDと、スプリット回路52と、フォーク回路42と、初期トークン投入回路43とを有する。すなわち、回路例E5に係るハンドシェイク回路20は、回路例E4に係るハンドシェイク回路20(図45)における制御回路21AC,21BDを制御回路61AC,61BDに変更するとともに、制御回路47および論理積回路48を省いたものである。
【0207】
制御回路61ACは、制御回路21AC(図45)と同様に、マージ回路51との間、および制御回路61BDとの間で信号(信号REQ,ACK)のやり取りをそれぞれ行う。また、制御回路61ACは、ラッチ回路11AC,14に信号LCK(信号LCKAC)を供給する。
【0208】
制御回路61BDは、制御回路21BD(図45)と同様に、制御回路61ACとの間、およびスプリット回路52との間で信号(信号REQ,ACK)のやり取りをそれぞれ行う。また、制御回路61BDは、ラッチ回路11BD,17に信号LCK(信号LCKBD)を供給する。
【0209】
図48は、制御回路61の一構成例を表すものである。制御回路61AC,61BDのそれぞれは、この制御回路61を用いることができる。この制御回路61は、論理積回路121,122と、論理和回路123と、論理積回路124と、論理和回路125とを有する。信号LCKおよび信号ACK_OUTは、互いに同じ信号である。論理積回路121は、信号LCKおよび信号REQ_INの論理積を求めるように構成される。論理積回路122は、信号REQ_IN、信号ACK_INの反転信号、および信号REQ_OUTの反転信号の論理積を求めるように構成される。論理和回路123は、論理積回路121の出力信号および論理積回路122の出力信号の論理和を求めることにより、信号LCKおよび信号ACK_OUTを生成するように構成される。論理積回路124は、信号ACK_INの反転信号および信号REQ_OUTの論理積を求めるように構成される。論理和回路125は、信号LCKおよび論理積回路124の出力信号の論理和を求めることにより、信号REQ_OUTを生成するように構成される。
【0210】
この自己ループに係る回路の前段の制御回路21は、例えば図3に示した回路を用いて構成される。同様に、この自己ループに係る回路の後段の制御回路21は、例えば図3に示した回路を用いて構成される。このように、回路例E5では、自己ループに係る回路における制御回路61を、図48に示した回路を用いて構成し、自己ループに係る回路以外の回路における制御回路21を、図3に示した回路を用いて構成している。
【0211】
制御回路61を用いることにより、信号LCKACが高レベルになる期間と、信号LCKBDが高レベルになる期間とのオーバーラップを解消することができる。この回路例E5に係る回路は、例えば、いわゆるサブミクロンプロセスにより製造された回路を、低電源電圧ではなく、通常電源電圧で動作させる場合に使用することができる。
【0212】
なお、図47では、回路例E4に係る回路(図45)において、自己ループに係る回路の制御回路21を、制御回路61に置き換えたが、これに限定されるものではない。例えば、回路例E1に係る回路(図35)、回路例E2に係る回路(図38)、回路例E3に係る回路(図43)において、自己ループに係る回路の制御回路21を、制御回路61に置き換えてもよい。
【0213】
ここで、制御回路61ACは、本開示における「第1の制御回路」の一具体例に対応する。制御回路61BDは、本開示における「第2の制御回路」の一具体例に対応する。論理積回路121は、本開示における「第6の論理積回路」の一具体例に対応する。論理積回路122は、本開示における「第7の論理積回路」の一具体例に対応する。論理和回路123は、本開示における「第4の論理和回路」の一具体例に対応する。論理積回路124は、本開示における「第8の論理積回路」の一具体例に対応する。論理和回路125は、本開示における「第5の論理和回路」の一具体例に対応する。
【0214】
図49は、回路例E6の他の一例を表すものである。データパス回路10は、組合せ回路12AB,12CDと、ラッチ回路11AB,11CDとを有する。組合せ回路12ABは、データDATA_IN、およびラッチ回路11CDから供給されたデータDATA_OUTに基づいて論理演算を行うように構成される。ラッチ回路11ABは、信号LCKABに基づいて、組合せ回路12ADから供給されたデータをラッチするように構成される。組合せ回路12CDは、ラッチ回路11ABから供給されたデータに基づいて論理演算を行うように構成される。ラッチ回路11CDは、組合せ回路12CDから供給されたデータをラッチすることにより、データDATA_OUTを生成するように構成される。組合せ回路12AB,12CDは、例えば、図15に示したステップS106の処理において、コンピュータが、例えば、図31(A),(B)に示したように、1つの組合せ回路を2段の組合せ回路に変換することにより生成される。
【0215】
ハンドシェイク回路20は、ジョイン回路41と、遅延回路22AB,22CDと、制御回路61AB,61CDと、フォーク回路42と、初期トークン投入回路43とを有する。
【0216】
ジョイン回路41は、前段の制御回路21との間で、信号(信号REQ_INおよび信号ACK_OUT)のやり取りを行い、フォーク回路42との間で信号(信号REQ,ACK)のやり取りを行う。また、ジョイン回路41は、制御回路61ABとの間で信号(信号REQ,ACK)のやり取りを行う。
【0217】
制御回路61ABは、ジョイン回路41との間、および制御回路21Bとの間で信号(信号REQ,ACK)のやり取りをそれぞれ行う。制御回路61CDは、制御回路61ABとの間、およびフォーク回路42との間で信号(信号REQ,ACK)のやり取りをそれぞれ行う。制御回路61AB,61CDのそれぞれは、図48に示した制御回路61を用いることができる。
【0218】
フォーク回路42は、制御回路61CDとの間で信号(信号REQ,ACK)のやり取りを行う。また、フォーク回路42は、後段の制御回路21との間で、信号(信号REQ_INおよび信号ACK_OUT)のやり取りを行い、ジョイン回路41との間で信号(信号REQ,ACK)のやり取りを行う。
【0219】
このように、自己帰還ループに係る回路において、データパス回路10におけるラッチ回路11の段数を2段にするとともに、ハンドシェイク回路20における制御回路61の段数を2段にしてもよい。
【0220】
(フロー等価性について)
本技術における処理方法では、図15に示したように、同期式論理回路における自己帰還ループに係る回路(図14)を、回路例E1~E5に示したような非同期式論理回路(例えば図35,38,43,45,47,49)に変換する。この変換においては、フロー等価性が満たされる必要がある。ここで、フロー等価性とは、変換前の回路および変換後の回路のそれぞれに、同じ信号変化系列の信号を入力した場合に、変換前の回路から出力される信号の信号変化系列と、変換後の回路から出力される信号の信号変化系列とが、互いに同じであることをいう。以下に、図15に示した方法で回路を変換する場合におけるフロー等価性について示す。
【0221】
フロー等価性を証明する方法としては、例えば、対応するラッチ回路ごとに、信号変化系列を比較する方法があり得る。例えば、同期式論理回路における自己帰還ループに係る回路(図14)におけるフリップフロップ回路は、回路例E1~E5に示したような非同期式論理回路における複数のラッチ回路に対応する。回路構成および動作原理の観点から、これらにおける信号変化系列は、互いに一致する。
【0222】
例えば、自己帰還ループを構成するフリップフロップ回路と、その前段または後段に配置された他のフリップフロップ回路との間に、フォーク接続、ジョイン接続、スプリット接続、マージ接続などの関係がない場合には、変換前の回路から出力される信号の変化系列と、変換後の回路から出力される信号の信号変化系列は、互いに一致する。
【0223】
例えば、自己帰還ループを構成するフリップフロップ回路と、その前段または後段に配置された他のフリップフロップ回路とが、フォーク接続やジョイン接続により接続されている場合には、例えば、ジョイン回路において待ち合わせが生じ得るので、遅延は生じ得るが、信号変化系列自体は変化しない。よって、変換前の回路から出力される信号の変化系列と、変換後の回路から出力される信号の信号変化系列は、互いに一致する。フォーク接続では、ハンドシェイクにより同期するので、これらの信号変化系列は、互いに一致する。
【0224】
例えば、自己帰還ループを構成するフリップフロップ回路と、その前段または後段に配置された他のフリップフロップ回路とが、スプリット接続やマージ接続により接続されている場合には、マージ回路において待ち合わせが生じ得るので、遅延は生じ得るが、信号変化系列自体は変化しない。よって、変換前の回路から出力される信号の変化系列と、変換後の回路から出力される信号の信号変化系列は、互いに一致する。スプリット接続では、ハンドシェイクにより同期するので、これらの信号変化系列は、互いに一致する。
【0225】
よって、変換前の回路および変換後の回路のそれぞれに、同じ信号変化系列の信号を入力した場合に、変換前の回路から出力される信号の信号変化系列と、変換後の回路から出力される信号の信号変化系列とが、互いに同じである。その結果、図15に示した処理方法による回路の変換は、フロー等価性を満たす。
【0226】
このように、この処理方法では、例えばステップS101~S103に示したように、コンピュータが、同期式論理回路における複数のフリップフロップ回路のうちの、それぞれが自己帰還ループを構成する1または複数のフリップフロップ回路を識別し、自己帰還ループにおける期間経路を削除し、1または複数のフリップフロップ回路のうちの強連結成分を構成する2以上のフリップフロップ回路を識別し、強連結成分を構成する2以上のフリップフロップ回路を1つのダミーフリップフロップ回路に置き換える第1の処理を行うようにした。そして、例えば、ステップS104のグルーピング処理に示したように、 コンピュータが、ダミーフリップフロップを含む複数のフリップフロップ回路のうちの1以上のフリップフロップ回路の入力側に組合せ回路を介して接続された1以上のフリップフロップ回路を探索する処理と、探索された1以上のフリップフロップ回路の出力側に組合せ回路を介して接続された1以上のフリップフロップ回路を検索する処理とを交互に複数回行うことにより、組合せ回路の入力側に接続された第1の1以上のフリップフロップ回路および組合せ回路の出力側に接続された第2の1以上のフリップフロップ回路を識別する第2の処理を行うようにした。これにより、自己帰還ループを構成するフリップフロップ回路を有する同期式回路において、組合せ回路の前後のフリップフロップ回路を効果的に識別することができる。
【0227】
[効果]
以上のように本実施の形態では、コンピュータが、同期式論理回路における複数のフリップフロップ回路のうちの、それぞれが自己帰還ループを構成する1または複数のフリップフロップ回路を識別し、自己帰還ループにおける期間経路を削除し、1または複数のフリップフロップ回路のうちの強連結成分を構成する2以上のフリップフロップ回路を識別し、強連結成分を構成する2以上のフリップフロップ回路を1つのダミーフリップフロップ回路に置き換える第1の処理を行うようにした。そして、コンピュータが、ダミーフリップフロップを含む複数のフリップフロップ回路のうちの1以上のフリップフロップ回路の入力側に組合せ回路を介して接続された1以上のフリップフロップ回路を探索する処理と、探索された1以上のフリップフロップ回路の出力側に組合せ回路を介して接続された1以上のフリップフロップ回路を検索する処理とを交互に複数回行うことにより、組合せ回路の入力側に接続された第1の1以上のフリップフロップ回路および組合せ回路の出力側に接続された第2の1以上のフリップフロップ回路を識別する第2の処理を行うようにした。これにより、自己帰還ループを構成するフリップフロップ回路を有する同期式回路において、組合せ回路の前後のフリップフロップ回路を効果的に識別することができる。
【0228】
[変形例]
上記実施の形態では、同期式論理回路を非同期式論理回路に変換した。例えば、このようにして変換された非同期式論理回路を、同期式論理回路と接続する場合があり得る。具体的には、例えば、同期式論理回路から非同期式論理回路にデータを供給する場合や、非同期式論理回路から同期式論理回路にデータを供給する場合があり得る。以下に、この場合における、同期式論理回路と非同期式論理回路との間のインタフェースについて説明する。
【0229】
図50は、同期式論理回路200から非同期式論理回路210にデータを供給する場合におけるインタフェースの一例を表すものである。
【0230】
同期式論理回路200は、フリップフロップ回路201と、組合せ回路202とを有している。フリップフロップ回路201は、クロック信号CLKに基づいて動作する。組合せ回路202は、フリップフロップ回路201から供給されたデータに基づいて論理演算を行う。
【0231】
非同期式論理回路210は、非同期式論理回路211と、組合せ回路212とを有している。非同期式論理回路211は、例えば上記実施の形態に係る処理方法により生成される。非同期式論理回路211は、回路例E1~E5に示した回路を含み得る。この非同期式論理回路211には、組合せ回路202から供給されたデータが入力され、クロック信号CLKが信号REQとして入力される。非同期式論理回路211の信号ACKを出力する端子は、開放状態にされる。
【0232】
コンピュータは、同期式論理回路200から非同期式論理回路210にデータを供給する場合において、このようなインタフェースを準備する。
【0233】
図51は、非同期式論理回路220から同期式論理回路230にデータを供給する場合におけるインタフェースの一例を表すものである。
【0234】
非同期式論理回路220は、組合せ回路221と、C素子222,223と、非同期式論理回路224とを有している。組合せ回路221は、前段から供給されたデータに基づいて論理演算を行う。C素子222は、前段から供給された信号REQ、および同期式論理回路230において使用されるクロック信号CLKの反転信号に基づいて動作する。C素子223は、C素子222の出力信号、およびクロック信号CLKに基づいて動作する。非同期式論理回路224は、例えば上記実施の形態に係る処理方法により生成される。非同期式論理回路224は、回路例E1~E5に示した回路を含み得る。非同期式論理回路224には、組合せ回路221から供給されたデータが入力され、C素子223の出力信号が信号REQとして入力される。非同期式論理回路224から出力された信号ACKは、前段の回路に供給される。非同期式論理回路224から出力された信号REQは、この非同期式論理回路224に、信号ACKとして入力される。
【0235】
同期式論理回路230は、組合せ回路231と、フリップフロップ回路232とを有する。非同期式論理回路224から出力されたデータは、組合せ回路231に供給される。
【0236】
コンピュータは、非同期式論理回路220から同期式論理回路230にデータを供給する場合において、このようなインタフェースを準備する。
【0237】
図52は、同期式論理回路240から非同期式論理回路250にデータを供給する場合におけるインタフェース、および非同期式論理回路250から同期式論理回路260にデータを供給する場合のインタフェースの一例を表すものである。
【0238】
同期式論理回路240は、フリップフロップ回路241と、組合せ回路242とを有している。フリップフロップ回路241は、クロック信号CLKに基づいて動作する。組合せ回路242は、フリップフロップ回路241から供給されたデータに基づいて論理演算を行う。
【0239】
非同期式論理回路250は、非同期式論理回路251を有している。非同期式論理回路251は、例えば上記実施の形態に係る処理方法により生成される。非同期式論理回路251は、回路例E1~E5に示した回路を含み得る。この非同期式論理回路251には、組合せ回路242から供給されたデータが入力され、クロック信号CLKが信号REQとして入力される。非同期式論理回路251の信号ACKを出力する端子は、開放状態にされる。非同期式論理回路251から出力された信号REQは、この非同期式論理回路251に、信号ACKとして入力される。
【0240】
同期式論理回路260は、組合せ回路261と、フリップフロップ回路262とを有する。非同期式論理回路251から出力されたデータは、組合せ回路261に供給される。
【0241】
ここで、同期式論理回路240は、本開示における「第1の同期式回路」の一具体例に対応する。非同期式論理回路250は、本開示における「非同期式回路」の一具体例に対応する。同期式論理回路260は、本開示における「第2の同期式回路」の一具体例に対応する。
【0242】
コンピュータは、同期式論理回路240から非同期式論理回路250にデータを供給する場合、および非同期式論理回路250から同期式論理回路260にデータを供給する場合において、このようなインタフェースを準備する。
【0243】
以上、いくつかの実施の形態および変形例を挙げて本技術を説明したが、本技術はこれらの実施の形態等には限定されず、種々の変形が可能である。
【0244】
例えば、上記の各実施の形態では、同期式論理回路を、束データ方式の非同期式論理回路に変換したが、これに限定されるものではなく、他の方式の非同期式論理回路に変換してもよい。
【0245】
なお、本明細書に記載された効果はあくまで例示であって限定されるものでは無く、また他の効果があってもよい。
【0246】
なお、本技術は以下のような構成とすることができる。以下の構成の本技術によれば、自己帰還ループを構成するフリップフロップ回路を有する同期式回路において、組合せ回路の前後のフリップフロップ回路を効果的に識別することができる。
【0247】
(1)
コンピュータが、同期式回路における複数のフリップフロップ回路のうちの、それぞれが自己帰還ループを構成する1または複数のフリップフロップ回路を識別し、前記自己帰還ループにおける帰還経路を削除し、前記1または複数のフリップフロップ回路のうちの強連結成分を構成する2以上のフリップフロップ回路を識別し、前記強連結成分を構成する前記2以上のフリップフロップ回路を1つのダミーフリップフロップ回路に置き換える第1の処理を行うことと、
前記コンピュータが、前記ダミーフリップフロップ回路を含む前記複数のフリップフロップ回路のうちの1以上のフリップフロップ回路の入力側に組合せ回路を介して接続された1以上のフリップフロップ回路を探索する処理と、探索された前記1以上のフリップフロップ回路の出力側に前記組合せ回路を介して接続された1以上のフリップフロップ回路を検索する処理とを交互に複数回行うことにより、前記組合せ回路の入力側に接続された第1の1以上のフリップフロップ回路および前記組合せ回路の出力側に接続された第2の1以上のフリップフロップ回路を識別する第2の処理を行うことと
を含む処理方法。
(2)
前記第2の処理は、
前記コンピュータが、前記ダミーフリップフロップ回路を含む前記複数のフリップフロップ回路のうちの1つを順次選択する第3の処理を行うことと、
前記コンピュータが、前記第3の処理により選択されたフリップフロップ回路の入力側および出力側の一方である第1の側に、組合せ回路を介して接続された1または複数のフリップフロップ回路を第1の集合として識別し、前記第1の集合に含まれる前記1または複数のフリップフロップ回路のそれぞれの、前記入力側および前記出力側の他方である第2の側に、前記組合せ回路を介して接続された1または複数のフリップフロップ回路を第2の集合として識別する第4の処理を行うことと、
前記コンピュータが、最新の前記第2の集合に含まれる前記1または複数のフリップフロップ回路のそれぞれの前記第1の側に、前記組合せ回路を介して接続された1または複数のフリップフロップ回路を、最新の前記第1の集合とは別の第1の集合として識別し、最新の前記第1の集合に含まれる前記1または複数のフリップフロップ回路のそれぞれの前記第2の側に、前記組合せ回路を介して接続された1または複数のフリップフロップ回路を、最新の前記第2の集合とは別の第2の集合として識別する第5の処理を、1または複数回繰り返し行うことと、
前記コンピュータが、前記第5の処理を行う度に、最新の2つの前記第1の集合が互いに等しく、かつ、最新の2つの前記第2の集合が互いに等しいことを示す判定条件を満たすかどうかを確認し、前記判定条件を満たす場合に、最新の2つの前記第1の集合および最新の2つの前記第2の集合に基づいて、前記第1の1以上のフリップフロップ回路および前記第2の1以上のフリップフロップ回路を特定する第6の処理を行うことと
を含む
前記(1)に記載の処理方法。
(3)
前記第2の処理により特定された前記第2の1以上のフリップフロップ回路が、前記自己帰還ループを構成する場合に、前記コンピュータが、前記第2の1以上のフリップフロップ回路のそれぞれを4段のラッチ回路に変換し、前記組合せ回路を論理段数方向に4つに論理分割することにより前記組合せ回路を4つの組合せ回路に変換し、前記4つの組合せ回路の1つと前記4段のラッチ回路の1つとを交互に配置する第7の処理を行うことをさらに含む
前記(1)または(2)に記載の処理方法。
(4)
前記コンピュータが、前段回路および後段回路のうちの一方または双方との間でハンドシェイク処理を行うとともに、前記4段のラッチ回路に4つの制御信号をそれぞれ供給するハンドシェイク回路を準備する第8の処理を行うことをさらに含む
前記(3)に記載の処理方法。
(5)
前記コンピュータが、前記第7の処理により得られた前記4つの組合せ回路の1つと前記4段のラッチ回路の1つとが交互に配置された第1の回路を、前記4つの組合せ回路および2段のラッチ回路を有する第2の回路に置き換える第9の処理を行うことをさらに含み、
前記第2の回路では、
前記4段の組合せ回路のうちの1段目の組合せ回路の出力データおよび3段目の組合せ回路の出力データのうちの一方が選択的に前記2段のラッチ回路のうちの1段目のラッチ回路に供給され、
前記1段目のラッチ回路の出力データが、前記4つの組合せ回路のうちの2番目の組合せ回路および4番目の組合せ回路のうちの一方に選択的に供給され、
前記2番目の組合せ回路の出力データおよび前記4番目の組合せ回路の出力データのうちの一方が選択的に前記2段のラッチ回路のうちの2段目のラッチ回路に供給され、
前記2段目のラッチ回路の出力データが、前記1番目の組合せ回路および前記3番目の組合せ回路のうちの一方に選択的に供給される
前記(3)に記載の処理方法。
(6)
前記コンピュータが、前段回路および後段回路のうちの一方または双方との間でハンドシェイク処理を行うとともに、前記2段のラッチ回路に2つの制御信号をそれぞれ供給するハンドシェイク回路を準備する第10の処理を行うことをさらに含む
前記(5)に記載の処理方法。
(7)
前記第2の処理により特定された前記第2の1以上のフリップフロップ回路が、前記自己帰還ループを構成しない場合に、前記コンピュータが、前記第2の1以上のフリップフロップ回路のそれぞれを2段のラッチ回路に変換し、前記組合せ回路を論理段数方向に2つに論理分割することにより前記組合せ回路を2つの組合せ回路に変換し、前記2つの組合せ回路の1つと前記2段のラッチ回路の1つとを交互に配置する第11の処理を行うことをさらに含む
前記(1)から(6)のいずれかに記載の処理方法。
(8)
入力データおよび出力データに基づいて論理演算を行うことが可能な第1の組合せ回路と、
第1のデータに基づいて論理演算を行うことが可能な第2の組合せ回路と、
第1の選択信号に基づいて、前記第1の組合せ回路から出力されたデータ、および前記第2の組合せ回路から出力されたデータのうちの一方を選択可能な第1のマルチプレクサと、
第1の制御信号に基づいて、前記第1のマルチプレクサから出力されたデータをラッチ可能な第1のラッチ回路と、
前記第1の制御信号に基づいて、前記第1の選択信号をラッチ可能な第1の制御ラッチ回路と、
前記第1の制御ラッチから出力された信号である第2の選択信号に基づいて、前記第1のラッチから出力されたデータを第2のデータまたは第3のデータとして出力可能な第1のデマルチプレクサと、
前記第2のデータに基づいて論理演算を行うことが可能な第3の組合せ回路と、
前記第3のデータに基づいて論理演算を行うことが可能な第4の組合せ回路と、
前記第2の選択信号に基づいて、前記第3の組合せ回路から出力されたデータ、および前記第4の組合せ回路から出力されたデータのうちの一方を選択可能な第2のマルチプレクサと、
第2の制御信号に基づいて、前記第2のマルチプレクサから出力されたデータをラッチ可能な第2のラッチ回路と、
前記第2の制御信号に基づいて、前記第2の選択信号をラッチ可能な第2の制御ラッチ回路と、
前記第2の制御ラッチから出力された信号である第3の選択信号に基づいて、前記第2のラッチから出力されたデータを前記第1のデータまたは前記出力データとして出力可能な第2のデマルチプレクサと、
前段回路および後段回路のうちの一方または双方との間でハンドシェイク処理を行うことが可能であり、前記第1の選択信号、前記第1の制御信号、および前記第2の制御信号を生成可能なハンドシェイク回路と
を備えた非同期式回路。
(9)
前記ハンドシェイク回路は、
ジョイン回路と、
第1の信号を生成可能な第1の制御回路と、
第2の信号を生成可能な第2の制御回路と、
第3の信号を生成可能な第3の制御回路と、
第4の信号を生成可能な第4の制御回路と、
フォーク回路と、
前記第1の信号および前記第2の信号の反転信号の論理積を求めることにより第5の信号を生成可能な第1の論理積回路と、
前記第2の信号および前記第3の信号の反転信号の論理積を求めることにより第6の信号を生成可能な第2の論理積回路と、
前記第3の信号および前記第5の信号の反転信号の論理積を求めることにより第7の信号を生成可能な第3の論理積回路と、
前記第4の信号および前記第1の信号の反転信号の論理積を求めることにより第8の信号を生成可能な第4の論理積回路と、
前記第5の信号および前記第7の信号の論理和を求めることにより前記第1の制御信号を生成可能な第1の論理和回路と、
前記第6の信号および前記第8の信号の論理和を求めることにより前記第2の制御信号を生成可能な第2の論理和回路と、
前記第2の信号および前記第7の信号の論理和を求めることにより前記第1の選択信号を生成可能な第3の論理和回路と
を有し、
前記ジョイン回路は、前記前段回路および前記フォーク回路の両方からのリクエスト信号に基づいて前記第1の制御回路にリクエスト信号を出力可能であり、前記第1の制御回路からの応答信号に基づいて、前記前段回路および前記フォーク回路に応答信号を出力可能であり、
前記第1の制御回路は、前記ジョイン回路からのリクエスト信号および前記第2の制御回路からの応答信号に基づいて、前記第2の制御回路にリクエスト信号を出力し、前記ジョイン回路に応答信号を出力し、前記第1の信号を生成することが可能であり、
前記第2の制御回路は、前記第1の制御回路からのリクエスト信号および前記第3の制御回路からの応答信号に基づいて、前記第3の制御回路にリクエスト信号を出力し、前記第1の制御回路に応答信号を出力し、前記第2の信号を生成することが可能であり、
前記第3の制御回路は、前記第2の制御回路からのリクエスト信号および前記第4の制御回路からの応答信号に基づいて、前記第4の制御回路にリクエスト信号を出力し、前記第2の制御回路に応答信号を出力し、前記第3の信号を生成することが可能であり、
前記第4の制御回路は、前記第3の制御回路からのリクエスト信号および前記フォーク回路からの応答信号に基づいて、前記フォーク回路にリクエスト信号を出力し、前記第3の制御回路に応答信号を出力し、前記第4の信号を生成することが可能であり、
前記フォーク回路は、前記第4の制御回路からのリクエスト信号に基づいて、前記後段回路および前記ジョイン回路の両方にリクエスト信号を出力可能であり、前記後段回路および前記ジョイン回路の両方からの応答信号に基づいて、前記第4の制御回路に応答信号を出力可能である
前記(8)に記載の非同期式回路。
(10)
前記ハンドシェイク回路は、
ジョイン回路と、
マージ回路と、
第1の信号を生成可能な第1の制御回路と、
前記第2の制御信号を生成可能な第2の制御回路と、
スプリット回路と、
第3の制御回路と、
フォーク回路と、
前記第1の信号および前記第2の制御信号の反転信号の論理積を求めることにより前記第1の制御信号を生成可能な第5の論理積回路と
を有し、
前記ジョイン回路は、前記前段回路および前記フォーク回路の両方からのリクエスト信号に基づいて前記マージ回路にリクエスト信号を出力可能であり、前記マージ回路からの応答信号に基づいて、前記前段回路および前記フォーク回路に応答信号を出力可能であり、
前記マージ回路は、前記ジョイン回路および前記第3の制御回路のうちの少なくとも一方からのリクエスト信号に基づいて、前記第1の制御回路にリクエスト信号を出力するとともに前記第1の選択信号を生成することが可能であり、前記第1の制御回路からの応答信号に基づいて、前記ジョイン回路および前記第3の制御回路のうちの一方に応答信号を出力可能であり、
前記第1の制御回路は、前記マージ回路からのリクエスト信号および前記第2の制御回路からの応答信号に基づいて、前記第2の制御回路にリクエスト信号を出力し、前記マージ回路に応答信号を出力し、前記第1の信号を生成することが可能であり、
前記第2の制御回路は、前記第1の制御回路からのリクエスト信号および前記スプリット回路からの応答信号に基づいて、前記スプリット回路にリクエスト信号を出力し、前記第1の制御回路に応答信号を出力し、前記第2の制御信号を生成することが可能であり、
前記スプリット回路は、前記第2の制御回路からのリクエスト信号に基づいて、前記フォーク回路および前記第3の制御回路のうち、前記第3の選択信号に応じた回路にリクエスト信号を供給可能であり、前記フォーク回路および前記第3の制御回路のうちの少なくとも一方からの応答信号に基づいて、前記第2の制御回路に応答信号を出力可能であり、
前記第3の制御回路は、前記スプリット回路からのリクエスト信号および前記マージ回路からの応答信号に基づいて、前記マージ回路にリクエスト信号を出力するとともに前記スプリット回廊に応答信号を出力可能であり、
前記フォーク回路は、前記スプリット回路からのリクエスト信号に基づいて、前記後段回路および前記ジョイン回路の両方にリクエスト信号を出力可能であり、前記後段回路および前記ジョイン回路の両方からの応答信号に基づいて、前記スプリット回路に応答信号を出力可能である
前記(8)に記載の非同期式回路。
(11)
前記ハンドシェイク回路は、
ジョイン回路と、
マージ回路と、
前記第1の制御信号を生成可能な第1の制御回路と、
前記第2の制御信号を生成可能な第2の制御回路と、
スプリット回路と、
フォーク回路と、
を有し、
前記ジョイン回路は、前記前段回路および前記フォーク回路の両方からのリクエスト信号に基づいて前記マージ回路にリクエスト信号を出力可能であり、前記マージ回路からの応答信号に基づいて、前記前段回路および前記フォーク回路に応答信号を出力可能であり、
前記マージ回路は、前記ジョイン回路および前記スプリット回路のうちの少なくとも一方からのリクエスト信号に基づいて、前記第1の制御回路にリクエスト信号を出力するとともに前記第1の選択信号を生成することが可能であり、前記第1の制御回路からの応答信号に基づいて、前記ジョイン回路および前記スプリット回路のうちの一方に応答信号を出力可能であり、
前記第1の制御回路は、前記マージ回路からのリクエスト信号および前記第2の制御回路からの応答信号に基づいて、前記第2の制御回路にリクエスト信号を出力し、前記マージ回路に応答信号を出力し、前記第1の制御信号を生成することが可能であり、
前記第2の制御回路は、前記第1の制御回路からのリクエスト信号および前記スプリット回路からの応答信号に基づいて、前記スプリット回路にリクエスト信号を出力し、前記第1の制御回路に応答信号を出力し、前記第2の制御信号を生成することが可能であり、
前記スプリット回路は、前記第2の制御回路からのリクエスト信号に基づいて、前記フォーク回路および前記マージ回路のうち、前記第3の選択信号に応じた回路にリクエスト信号を供給可能であり、前記フォーク回路および前記マージ回路のうちの少なくとも一方からの応答信号に基づいて、前記第2の制御回路に応答信号を出力可能であり、
前記フォーク回路は、前記スプリット回路からのリクエスト信号に基づいて、前記後段回路および前記ジョイン回路の両方にリクエスト信号を出力可能であり、前記後段回路および前記ジョイン回路の両方からの応答信号に基づいて、前記スプリット回路に応答信号を出力可能である
前記(8)に記載の非同期式回路。
(12)
前記第1の制御回路および前記第2の制御回路のそれぞれは、
前段からのリクエスト信号の入力端子である第1の端子と、
前記前段への応答信号の出力端子である第2の端子と、
後段へのリクエスト信号の出力端子である第3の端子と、
前記後段からの応答信号の入力端子である第4の端子と、
前記第1の制御信号および前記第2の制御信号のうちの対応する制御信号の出力端子である第5の端子と、
前記第1の端子の信号および前記第2の端子の信号の論理積を求めることが可能な第6の論理積回路と、
前記第1の端子の信号、前記第3の端子の信号の反転信号、および前記第4の端子の信号の反転信号の論理積を求めることが可能な第7の論理積回路と、
前記第6の論理積回路の出力信号および前記第7の論理積回路の出力信号の論理和を求めることにより前記第2の端子の信号および前記第5の端子の信号を生成することが可能な第4の論理和回路と、
前記第3の端子の信号および前記第4の端子の信号の反転信号の論理積を求めることが可能な第8の論理積回路と、
前記第5の端子の信号および前記第8の論理積回路の出力信号の論理和を求めることにより前記第4の端子の信号を生成することが可能な第5の論理和回路と
を有する
前記(11)に記載の非同期式回路。
(13)
前記前段回路と、
前記後段回路と
をさらに備え、
前記前段回路および前記後段回路のそれぞれは、
前段からのリクエスト信号の入力端子である第1の端子と、
前記前段への応答信号の出力端子である第2の端子と、
後段へのリクエスト信号の出力端子である第3の端子と、
前記後段からの応答信号の入力端子である第4の端子と、
制御信号の出力端子である第5の端子と、
前記第1の端子の信号および前記第4の端子の信号の反転信号に基づいて前記第2の端子、前記第3の端子、および前記第5の端子の信号を生成するC素子回路と
を有する
前記(12)に記載の非同期式回路。
(14)
第1の同期式回路と、
前記第1の同期式回路の後段に設けられた非同期式回路と、
前記非同期式回路の後段に設けられた第2の同期式回路と
を備え、
前記非同期式回路は、
前記第1の同期式回路からのデータの入力端子であるデータ入力端子と、
前記第2の同期式回路へのデータの出力端子データ出力端子と、
前段からのリクエスト信号の入力端子である第1の端子と、
前記前段への応答信号の出力端子である第2の端子と、
後段へのリクエスト信号の出力端子である第3の端子と、
前記後段からの応答信号の入力端子である第4の端子と
を有し、
前記第1の端子には、前記第1の同期式回路におけるクロック信号が供給され、
前記第2の端子は、開放状態にされ、
前記第3の端子および前記第4の端子は互いに接続された
論理回路。
(15)
前記非同期式回路は、第1の回路を有し、
前記第1の回路は、
入力データおよび出力データに基づいて処理を行うことが可能な第1の組合せ回路と、
第1のデータに基づいて処理を行うことが可能な第2の組合せ回路と、
第1の選択信号に基づいて、前記第1の組合せ回路から出力されたデータ、および前記第2の組合せ回路から出力されたデータのうちの一方を選択可能な第1のマルチプレクサと、
第1の制御信号に基づいて、前記第1のマルチプレクサから出力されたデータをラッチ可能な第1のラッチと、
前記第1の制御信号に基づいて、前記第1の選択信号をラッチ可能な第1の制御ラッチと、
前記第1の制御ラッチから出力された信号である第2の選択信号に基づいて、前記第1のラッチから出力されたデータを第2のデータまたは第3のデータとして出力する第1のデマルチプレクサと、
前記第2のデータに基づいて処理を行うことが可能な第3の組合せ回路と、
前記第3のデータに基づいて処理を行うことが可能な第4の組合せ回路と、
前記第2の選択信号に基づいて、前記第3の組合せ回路から出力されたデータ、および前記第4の組合せ回路から出力されたデータのうちの一方を選択可能な第2のマルチプレクサと、
第2の制御信号に基づいて、前記第2のマルチプレクサから出力されたデータをラッチ可能な第2のラッチと、
前記第2の制御信号に基づいて、前記第2の選択信号をラッチ可能な第2の制御ラッチと、
前記第2の制御ラッチから出力された信号である第3の選択信号に基づいて、前記第2のラッチから出力されたデータを前記第1のデータまたは前記出力データとして出力する第2のデマルチプレクサと、
前段回路および後段回路のうちの一方または双方との間でハンドシェイク処理を行うことが可能であり、前記第1の選択信号、前記第1の制御信号、および前記第2の制御信号を生成可能なハンドシェイク回路と
を有する
前記(14)に記載の論理回路。
【符号の説明】
【0248】
1…非同期式論理回路、9…同期式論理回路、10…データパス回路、11,11A~11D,11AC,11BD,11AB,11CD…ラッチ回路、12,12A~12D,12AB,12CD…組合せ回路、13,16…マルチプレクサ、14,17…ラッチ回路、15,18…デマルチプレクサ、20…ハンドシェイク回路、21,21A~21D,61AC,61BD,61AB,61CD…制御回路、22,22A~22D…遅延回路、23…C素子、24…C素子、25…デマルチプレクサ、29…C素子、31…論理和回路、32~35…C素子、36…論理和回路、41…ジョイン回路、42…フォーク回路、43…初期トークン投入回路、44A~44D…論理積回路、45…論理和回路、46AC,46BD…論理和回路、47…制御回路、48…論理積回路、51…マージ回路、52…スプリット回路、90…データパス回路、91…フリップフロップ回路、92…組合せ回路、99…クロックツリー、101,111~113,115,121,122,124…論理積回路、102,123,125…論理和回路、103…否定論理積回路、104…ラッチ回路、114…否定論理和回路、200,230,240,260…同期式論理回路、201,232,241,262…フリップフロップ回路、202,212,221,231,242,261…組合せ回路、210,220,250…非同期式論理回路、222,223…C素子、ACK,LCK,REQ…信号、RST…リセット信号。


図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13
図14
図15
図16
図17
図18
図19
図20
図21A
図21B
図22
図23
図24
図25
図26
図27
図28
図29
図30
図31
図32
図33
図34
図35
図36
図37
図38
図39
図40
図41
図42
図43
図44
図45
図46
図47
図48
図49
図50
図51
図52