(57)【要約】【課題】  性能や消費電力を最適化するバスを決定する際、大局的なバス構成、方式、および動作周波数の最適化が可能となる半導体集積装置の設計方法、設計プログラム、および記録媒体を提供する。【解決手段】  本発明の半導体集積装置の設計方法では、半導体集積装置のシミュレーション処理（ステップＳ１）を行い、トランザクションデータをトランザクションデータ記憶処理（ステップＳ２）にて記憶する。その後、トランザクションデータ解析処理（ステップＳ３）にてトランザクションデータを解析し、その解析結果から生成される最適なバスのビット幅、エンコーディング方式、または動作周波数などを静的または動的に制御する制御部を生成する（ステップＳ４）。【選択図】  図１
2006004076.tif 000002
【特許請求の範囲】
【請求項１】
機能ブロックがバスで相互に接続された半導体集積装置を設計する半導体集積装置の設計方法であって、
前記半導体集積装置の動作を模擬したシミュレーションを実行する工程と、
前記シミュレーションを実行する工程で得られた前記バス上を流れるデータビット系列を、当該バスのプロトコルに応じて意味のある１つ以上のビット系列に分類してトランザクションデータとして記憶する工程と、
前記トランザクションデータを解析し、前記バスを所定の条件に基づいて制御する制御部を生成する工程とを含むことを特徴とする、半導体集積装置の設計方法。
【請求項２】
前記トランザクションデータとして記憶する工程において、前記バス上を流れる前記データビット系列を前記プロトコルから前記トランザクションデータを抽出し記憶するトランザクション記憶部を、当該バス上のハードウエアとして実現することを特徴とする、請求項１に記載の半導体集積装置の設計方法。
【請求項３】
前記トランザクションデータとして記憶する工程において、前記バス上を流れる前記データビット系列を前記プロトコルから前記トランザクションデータを抽出し記憶するトランザクション記憶部を、当該バス上に接続される中央処理装置が実行するソフトウエアとして実現することを特徴とする、請求項１に記載の半導体集積装置の設計方法。
【請求項４】
前記制御部を生成する工程は、
前記トランザクションデータから前記バスのバス幅を一意に決定する前記制御部を生成し、
前記バス幅を選択するセレクタを設定する工程を含むことを特徴とする、請求項１に記載の半導体集積装置の設計方法。
【請求項５】
前記制御部を生成する工程は、
前記トランザクションデータの特徴に応じて、前記バスのバス幅を動的に決定する前記制御部を生成し、
前記バス幅を選択するセレクタを設定する工程を含むことを特徴とする、請求項１に記載の半導体集積装置の設計方法。
【請求項６】
前記制御部を生成する工程において、
前記トランザクションデータのうち連続する固定長ビット列間でビットごとの変化が最も少なくなるようなビット列を選択し、
前記トランザクションデータのうち前記選択されたビット列を最もビットごとの変化が少なくなるように変換し、
前記変換されたビット列を当該変換前のビット列に復元するための情報を付加するように前記バスを制御する前記制御部を生成することを特徴とする、請求項１に記載の半導体集積装置の設計方法。
【請求項７】
前記制御部を生成する工程において、
前記トランザクションデータのうち連続する可変長ビット列間でビットごとの変化が最も少なくなるようなビット列および当該ビット列の長さを選択し、
前記トランザクションデータのうち最もビットごとの変化が少なくなるように前記ビット列の長さで前記選択されたビット列を変換し、
前記変換されたビット列を当該変換前のビット列に復元するための情報を付加するように前記バスを制御する前記制御部を生成することを特徴とする、請求項１に記載の半導体集積装置の設計方法。
【請求項８】
前記制御部は、前記トランザクションデータの特徴に応じて前記ビット列の長さを動的に変更することを特徴とする、請求項７記載の半導体集積装置の設計方法。
【請求項９】
前記制御部を生成する工程において、
前記トランザクションデータの種類ごとにその出現率を計測し、
前記出現率が相対的に高い前記トランザクションデータのビット列を、当該ビット列より少ないビット列に一意に変換するための変換テーブルを生成し、
前記変換テーブルに基づいて、前記トランザクションデータのビット列を変換するように前記バスを制御する前記制御部を生成することを特徴とする、請求項１に記載の半導体集積装置の設計方法。
【請求項１０】
前記制御部は、前記トランザクションデータの特徴に応じて前記変換テーブルを動的に変更することを特徴とする、請求項９記載の半導体集積装置の設計方法。
【請求項１１】
前記制御部は、前記バス上に接続される中央処理装置が実行するソフトウエアで前記変換テーブルを記憶し、
前記変換テーブルは、前記ソフトウエアによって動的に変更されることを特徴とする、請求項１０記載の半導体集積装置の設計方法。
【請求項１２】
前記制御部を生成する工程において、前記トランザクションデータに応じて入力バス幅と出力バス幅とが異なる記憶装置を介して当該トランザクションデータを伝送するように前記バスを制御する前記制御部を生成することを特徴とする、請求項１に記載の半導体集積装置の設計方法。
【請求項１３】
前記制御部は、前記トランザクションデータの特徴に応じて、前記入力バス幅および出力バス幅の少なくとも一方を動的に変更することを特徴とする、請求項１２記載の半導体集積装置の設計方法。
【請求項１４】
前記制御部を生成する工程において、前記トランザクションデータの特徴に応じて、分周回路を制御し動作周波数を動的に変更するように前記バスを制御する前記制御部を生成することを特徴とする、請求項１に記載の半導体集積装置の設計方法。
【請求項１５】
機能ブロックがバスで相互に接続された半導体集積装置を設計するコンピュータに実行させる半導体集積装置の設計プログラムであって、
前記コンピュータに、
前記半導体集積装置の動作を模擬したシミュレーションを実行するステップと、
前記シミュレーションを実行するステップで得られた前記バス上を流れるデータビット系列を、当該バスのプロトコルに応じて意味のある１つ以上のビット系列に分類してトランザクションデータとして記憶するステップと、
前記トランザクションデータを解析し、前記バスを所定の条件に基づいて制御する制御部を生成するステップとを実行させることを特徴とする、半導体集積装置の設計プログラム。
【請求項１６】
機能ブロックがバスで相互に接続された半導体集積装置を設計するコンピュータに実行させる半導体集積装置の設計プログラムを記録した記録媒体であって、
前記コンピュータに、
前記半導体集積装置の動作を模擬したシミュレーションを実行するステップと、
前記シミュレーションを実行するステップで得られた前記バス上を流れるデータビット系列を、当該バスのプロトコルに応じて意味のある１つ以上のビット系列に分類してトランザクションデータとして記憶するステップと、
前記トランザクションデータを解析し、前記バスを所定の条件に基づいて制御する制御部を生成するステップとを実行させることを特徴とする、半導体集積装置の設計プログラムを記録した記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、半導体集積装置の設計方法、設計プログラム、および記録媒体に関し、より特定的には、複数の機能ブロック間を接続するバスの方式および構成を解析する半導体集積装置の設計方法、設計プログラム、および記録媒体に関する。
【背景技術】
【０００２】
近年、大規模・複雑化するシステムＬＳＩ（Ｌａｒｇｅ  Ｓｃａｌｅ  Ｉｎｔｅｇｒａｔｉｏｎ）と呼ばれる半導体集積装置には、ＣＰＵやＤＳＰ（Ｄｉｇｉｔａｌ  Ｓｉｇｎａｌ  Ｐｒｏｃｅｓｓｏｒ）などのプロセッサやＭＰＥＧやＪＰＥＧといったある特定の処理を専用で行うハードウエア、またメモリなどの機能ブロックが複数存在する。そして、半導体集積装置のアーキテクチャ（基本設計）として、それら機能ブロック間をバスが相互に接続をするという形態が多くなっている。こういった半導体集積装置の基本設計においては、バス上をいろいろなブロックから入出力されるデータが複雑に輻輳しているために、バス幅、バス方式、または動作周波数によって半導体集積装置の性能および消費電力が大きく左右される。そのため、半導体集積装置の基本設計では、最適なバス構成および方式を決定する必要がある。
【０００３】
従来は、そのバス構成・方式の決定に、バス上を流れる単純なビット列の情報を元に最適なバス幅やバスエンコーディング方式、動作周波数を決定している（例えば、特許文献１参照）。図１８は、従来のバス解析および最適化のための装置を示す概念図である。図１８において、従来の技術では、ＣＰＵ１０１、同ＣＰＵ１０１上で動作するソフトウエア１５０、メモリ１０２、専用ハードウエア１０３から構成されるＬＳＩのバスを最適化する。このとき、図１８中のビット系列記憶部１０５から構成されるビット系列データ１６０を解析し、その結果から制御部１０４を構成してバスの最適化を行っている。
【特許文献１】特開平７−１２０５３２号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
しかしながら、従来の半導体集積装置の設計方法は、性能や消費電力を最適化するバスのビット幅、周波数、またはエンコーディング方式を決定する際、単純なビット系列の情報をもとに最適化を行っているため、局所的な最適化しかできなかった。
【０００５】
それ故に、本発明の目的は、性能や消費電力を最適化するバスを決定する際、大局的なバス構成、方式、および動作周波数の最適化が可能となる半導体集積装置の設計方法、設計プログラム、および記録媒体を提供することである。
【課題を解決するための手段】
【０００６】
上記目的を達成するために、本発明は、以下に述べるような特徴を有している。
第１の発明は、機能ブロックがバスで相互に接続された半導体集積装置を設計する半導体集積装置の設計方法である。半導体集積装置の設計方法は、半導体集積装置の動作を模擬したシミュレーションを実行する工程と、シミュレーションを実行する工程で得られたバス上を流れるデータビット系列を、そのバスのプロトコルに応じて意味のある１つ以上のビット系列に分類してトランザクションデータとして記憶する工程と、トランザクションデータを解析し、バスを所定の条件に基づいて制御する制御部を生成する工程とを含んでいる。
【０００７】
第２の発明は、上記第１の発明において、トランザクションデータとして記憶する工程において、バス上を流れるデータビット系列をプロトコルからトランザクションデータを抽出し記憶するトランザクション記憶部を、そのバス上のハードウエアとして実現する。
【０００８】
第３の発明は、上記第１の発明において、トランザクションデータとして記憶する工程において、バス上を流れるデータビット系列をプロトコルからトランザクションデータを抽出し記憶するトランザクション記憶部を、そのバス上に接続される中央処理装置が実行するソフトウエアとして実現する。
【０００９】
第４の発明は、上記第１の発明において、制御部を生成する工程は、トランザクションデータからバスのバス幅を一意に決定する制御部を生成し、バス幅を選択するセレクタを設定する工程を含む。
【００１０】
第５の発明は、上記第１の発明において、制御部を生成する工程は、トランザクションデータの特徴に応じて、バスのバス幅を動的に決定する制御部を生成し、バス幅を選択するセレクタを設定する工程を含む。
【００１１】
第６の発明は、上記第１の発明において、制御部を生成する工程において、トランザクションデータのうち連続する固定長ビット列間でビットごとの変化が最も少なくなるようなビット列を選択し、トランザクションデータのうち選択されたビット列を最もビットごとの変化が少なくなるように変換し、変換されたビット列をその変換前のビット列に復元するための情報を付加するようにバスを制御する制御部を生成する。
【００１２】
第７の発明は、上記第１の発明において、制御部を生成する工程において、トランザクションデータのうち連続する可変長ビット列間でビットごとの変化が最も少なくなるようなビット列およびそのビット列の長さを選択し、トランザクションデータのうち最もビットごとの変化が少なくなるようにビット列の長さで選択されたビット列を変換し、変換されたビット列をその変換前のビット列に復元するための情報を付加するようにバスを制御する制御部を生成する。
【００１３】
第８の発明は、上記第７の発明において、制御部は、トランザクションデータの特徴に応じてビット列の長さを動的に変更する。
【００１４】
第９の発明は、上記第１の発明において、制御部を生成する工程において、トランザクションデータの種類ごとにその出現率を計測し、出現率が相対的に高いトランザクションデータのビット列を、そのビット列より少ないビット列に一意に変換するための変換テーブルを生成し、変換テーブルに基づいて、トランザクションデータのビット列を変換するようにバスを制御する制御部を生成する。
【００１５】
第１０の発明は、上記第９の発明において、制御部は、トランザクションデータの特徴に応じて変換テーブルを動的に変更する。
【００１６】
第１１の発明は、上記第１０の発明において、制御部は、バス上に接続される中央処理装置が実行するソフトウエアで変換テーブルを記憶し、変換テーブルは、ソフトウエアによって動的に変更される。
【００１７】
第１２の発明は、上記第１の発明において、制御部を生成する工程において、トランザクションデータに応じて入力バス幅と出力バス幅とが異なる記憶装置を介してそのトランザクションデータを伝送するようにバスを制御する制御部を生成する。
【００１８】
第１３の発明は、上記第１２の発明において、制御部は、トランザクションデータの特徴に応じて、入力バス幅および出力バス幅の少なくとも一方を動的に変更する。
【００１９】
第１４の発明は、上記第１の発明において、制御部を生成する工程において、トランザクションデータの特徴に応じて、分周回路を制御し動作周波数を動的に変更するようにバスを制御する制御部を生成する。
【００２０】
第１５の発明は、機能ブロックがバスで相互に接続された半導体集積装置を設計するコンピュータに実行させる半導体集積装置の設計プログラムである。設計プログラムは、コンピュータに、半導体集積装置の動作を模擬したシミュレーションを実行するステップと、シミュレーションを実行するステップで得られたバス上を流れるデータビット系列を、そのバスのプロトコルに応じて意味のある１つ以上のビット系列に分類してトランザクションデータとして記憶するステップと、トランザクションデータを解析し、バスを所定の条件に基づいて制御する制御部を生成するステップとを実行させる。
【００２１】
第１６の発明は、機能ブロックがバスで相互に接続された半導体集積装置を設計するコンピュータに実行させる半導体集積装置の設計プログラムを記録した記録媒体である。設計プログラムは、コンピュータに、半導体集積装置の動作を模擬したシミュレーションを実行するステップと、シミュレーションを実行するステップで得られたバス上を流れるデータビット系列を、そのバスのプロトコルに応じて意味のある１つ以上のビット系列に分類してトランザクションデータとして記憶するステップと、トランザクションデータを解析し、バスを所定の条件に基づいて制御する制御部を生成するステップとを実行させる。
【発明の効果】
【００２２】
本発明の半導体集積装置の設計方法によれば、規則性や類似性を持った意味のあるビット系列をトランザクションとして扱うことによって、トランザクション転送種別に応じた大局的なバス構成・方式・動作周波数の最適化が可能となり、半導体集積装置の性能の最適化や消費電力の低減などの効果が得られる。
【００２３】
また、本発明の半導体集積装置の設計プログラムおよび当該設計プログラムを記憶した記録媒体によれば、上述した半導体の設計方法と同様の効果が得られる。
【発明を実施するための最良の形態】
【００２４】
以下、図面を参照して、本発明の一実施形態に係る半導体集積装置の設計方法について説明する。まず、図１を参照して、当該半導体集積装置の設計方法の要旨を説明する。なお、図１は、当該半導体集積装置の設計方法の要旨を示すフローチャートである。
【００２５】
図１において、本発明が適用された半導体集積装置の設計方法では、半導体集積装置の動作を模擬したシミュレーション処理（ステップＳ１）を行う。次に、シミュレーション処理によって得られた半導体集積装置の機能ブロックを接続するバス上を流れるデータビット系列を、当該バスのプロトコルに応じて意味のある複数または単数のビット系列であるトランザクションデータ（後述する）としてトランザクションデータ記憶処理（ステップＳ２）にて記憶する。その後、トランザクションデータ解析処理（ステップＳ３）にてトランザクションデータを解析し、その解析結果から生成される最適なバスのビット幅、エンコーディング方式、または動作周波数などを静的または動的に制御する制御部を生成する（ステップＳ４）。
【００２６】
次に、図２を参照して、半導体集積装置の設計方法で用いるトランザクションデータについて説明する。なお、図２は、トランザクションの一例を示す図である。
【００２７】
図２において、本発明のトランザクションは、一連のビット系列であるものとする。例えば、バスは、クロックＣＬＫ、アドレスを示すアドレス信号ＢｕｓＡ＿Ａｄｄｒ、データを示すＢｕｓＡ＿Ｄａｔａ、およびデータが有効であることを示すｎＥｎａｂｌｅ等から構成されている。このような場合、本発明では、クロックＣＬＫ、アドレスＢｕｓＡ＿Ａｄｄｒ、データＢｕｓＡ＿Ｄａｔａ、その他ｎＥｎａｂｌｅ等の制御信号の集まりをトランザクションとして扱う。
【００２８】
図３は、本発明のトランザクションデータ６０を記憶するトランザクション記憶部５を、システムのバス上に構成した装置の一例である。装置が備えられたシステムは、ＣＰＵ１と、同ＣＰＵ１上で動作するソフトウエア５０、メモリ２、専用ハードウエア３、バスを制御する制御部４から構成される。上記ステップＳ１のシミュレーション処理において、トランザクション記憶部５ではバスをモニタし、バスプロトコルにしたがって、トランザクションを抽出する。抽出されたトランザクションは、トランザクション記憶部５からトランザクションデータ６０へ、上記ステップＳ２のトランザクションデータ記憶処理で記憶される。
【００２９】
図３に示した装置では、バスに流れているデータからバスプロトコルに従ってトランザクションを抽出するが、バスをモニタするのではなく、ＣＰＵ１で動作するソフトウエア５０に、トランザクションを記憶するためのトランザクションＡＰＩ（アプリケーション・プログラム・インターフェイス）５１を組み込むことで、トランザクションデータ６０の抽出および記憶を実現してもかまわない。なお、図４は、本発明をトランザクションＡＰＩ５１が組み込まれたソフトウエア５０で実現した一例である。
【００３０】
ここで、バスに流れるデータのサイズとその消費電力との関係を説明する。なお、図５は、バスに流れるデータのサイズとその消費電力とを示した図である。図５（ａ）は３２ビットデータｄ３２が１つバスに流れたことを示しており、図５（ｂ）はその際の電力Ｐを示している。図５（ａ）および図５（ｂ）に示すように、３２ビットデータｄ３２を一度に１つのバスに転送すると、電力Ｐにおけるピークの電力値が高くなる。一方、図５（ｃ）は３２ビットデータを８ビットデータｄ８ａ〜ｄ８ｄに４分割して１つバスに流れたことを示しており、図５（ｄ）はその際の電力Ｐを示している。図５（ｃ）および図５（ｄ）に示すように、データ転送にかかる総消費電力量は大きく変わらないが、分割することで、電力Ｐにおけるピークの電力値を抑えることができる。
【００３１】
図６は、上述した消費電力に関連して最適なバス幅を選択する制御部４を含んだ回路の一例である。図１に示したトランザクションデータ記憶処理（ステップＳ２）で記憶されたトランザクションデータをトランザクションデータ解析処理（ステップＳ３）で解析することで、バスのピーク電力がどのトランザクションの組み合わせで発生しているかが判明する。そして、トランザクションデータのサイズが相対的に大きく、かつ、分割しても性能を満たすような場合、データ分割（図５参照）を行うことで、ピークの電力値を抑えることができる。なお、性能を満たすかどうかの判定は、データを分割したトランザクションを発生させる環境で、再度シミュレーション処理（ステップＳ１）を行った結果を解析することで可能である。
【００３２】
上述したデータ分割を実現するために、本実施例の制御部４を含んだ回路は、バスにおけるマスタ側制御部４ｍ、スレーブ側制御部４ｓ、マスタ側バッファ６ｍ、スレーブ側バッファ６ｓ、マスタ側セレクタ７ｍ、およびスレーブ側セレクタ７ｓから構成される。上記ステップＳ３におけるトランザクションデータ解析処理の結果、データを分割する際、マスタ側制御部４ｍは、分割したデータを一時的に格納するマスタ側バッファ６ｍにデータを蓄える。そして、マスタ側制御部４ｍは、マスタ側バッファ６ｍに蓄えたデータを逐次スレーブ側バッファ６ｓへマスタ側セレクタ７ｍを介して転送する。スレーブ側がデータを受け取る際、マスタ側制御部４ｍからスレーブ側制御部４ｓへ、分割されて送られているデータを再び１つのデータに復元するための情報を送ることで、スレーブ側制御部４ｓでは当該情報にしたがって、スレーブ側バッファ６ｓでデータを再び復元する。また、マスタ側制御部４ｍがデータサイズを変更しない場合、マスタ側セレクタ７ｍを介してスレーブ側へ転送され、分割されていないデータがスレーブ側セレクタ７ｓで選択されることで本発明を実現できる。なお、分割結合のオーバーヘッドを削減するため、最初のデータをセレクタで分割して直接転送する方法も、本発明に含まれる。
【００３３】
なお、図７に示すように、バスにデータのサイズおよびビット位置をあらわす信号線Ｌが含まれる場合、図６に示したスレーブ側制御部４ｓ、スレーブ側セレクタ７ｓ、およびスレーブ側バッファ６ｓが不要となる。また、データのサイズおよびビット位置の少なくとも一方がプロトコルで決まる場合、残る情報から同様の回路構成で実現できるため、本発明を同様に適用できる。これは、マスタ側制御部４ｍが、転送するデータのサイズおよびビット位置を制御し、それをマスタ側セレクタ７ｍで選択することで、図６の回路をより簡単に実現できる。
【００３４】
また、一般的に、上述した半導体集積回路の消費電力見積もりとして、対象となる回路のゲートレベルのネットリストをシミュレーションし、シミュレーション時のゲート出力のトグル数をカウントする方法が知られている。バスの場合、データのトグル回数から上記カウントを算出できる。そして、トグル回数に比例して消費電力が大きくなることから、トグル回数を減らすことで、バスの消費電力を最適化することができる。
【００３５】
バスにおけるトグル回数を最小にするには、トランザクションの系列Ｔｒ＝｛Ｔ1、Ｔ2、…、Ｔｎ｝を対象として、
ΣｄH（Ｔi-1、変換関数（Ｔi））・・・式（１）
が最小となるような変換関数を利用することで、バスの消費電力を最適化が実現できる。ここで、ｄH（α、β）は、αとβとのハミング距離であり、トグル数を表す。
【００３６】
図８は、上記変換関数を用いて消費電力を最適化する制御部４を含んだ回路の一例である。上記式（１）に示した直前のトランザクションＴi-1と送信対象のトランザクションＴiとの変換関数を利用したハミング距離ｄH（Ｔi-1、変換関数（Ｔi））を利用するには、当該変換関数をスレーブ側でも持つ必要がある。上記ステップＳ３のトランザクションデータ解析処理の結果から、上記式（１）が最初になる変換関数を選択する。図８において、マスタ側データ変換回路８ｍでは、その変換関数を実現している。このとき、スレーブ側では復元するための情報が必要となるため、マスタ側制御部４ｍは、復元するための情報として復元情報Ｓｇ１をスレーブ側制御部４ｓへ送る。スレーブ側制御部４ｓは、受け取った復元情報Ｓｇ１をスレーブ側データ復元回路９ｓに送り、当該スレーブ側データ復元回路９ｓにて、マスタ側データ変換回路８ｍから送られたデータを復元する。本回路構成により、バスの電力は最適化される。
【００３７】
図９および図１０を参照して、上記変換関数として、固定長のビット反転を利用した場合の一例を説明する。なお、図９は、固定長のビット反転を利用した変換関数を用いて消費電力を最適化する制御部４を含んだ回路の一例である。図１０は、固定長のビット反転とトグル数との関係を示す図である。
【００３８】
図１０（ａ）に示すように、前トランザクションデータＴ１「０１００  ０００１  １１１０  ００００」が送信された後、次のトランザクションデータＴ２「１０１１  １１１０  ０００１  １１１０」をそのまま送信した場合、トグル数は「１５」となる。ここで、トランザクションデータＴ２も対してビット反転を行うと、トランザクションデータＴ２は、「０１００  ０００１  １１１０  ０００１」となる。このビット反転によって、マスタとスレーブとの間では、反転信号が１ビット増えるが、トランザクションとしてのトグル数が「１」となる。
【００３９】
また、図１０（ｂ）に示すように、前トランザクションデータＴ３「０１００  ０００１  １１１０  ００００」が送信された後、次のトランザクションデータＴ４「０１１１  ０１０１  ００１０  ０１０１」をそのまま送信した場合、トグル数は「７」となる。そして、トランザクションデータＴ４に対してビット反転を行うと、トランザクションデータＴ４は、「１０００  １０１０  １１０１  １０１０」となり、ビット反転によるトグル数が「９」となる。つまり、この場合は、ビット反転を行わずにそのまま送信することで、トグル数を送信ビット数以下に抑えられる。
【００４０】
ここで、上記変換関数としてトランザクションデータがビット反転に適するか否かは、上記ステップＳ３におけるトランザクションデータ解析処理で判断する。具体的には、図９において、マスタ側制御部４ｍは、前トランザクションデータを保有しており、当該前トランザクションと、次に送る予定のトランザクションとのハミング距離を計算する。そして、相対的にハミング距離が大きければ、上述した固定長のビット反転を転送データに施すために、マスタ側制御部４ｍからマスタ側ビット反転回路８ｍａおよびスレーブ側ビット反転回路９ｓａへビット反転指示信号Ｓｇ１ａをアクティブにする。ビット反転回路８ｍａは、送信する予定のトランザクションデータをビット反転して、スレーブ側ビット反転回路９ｓａへ送出する。スレーブ側ビット反転回路９ｓａでは、受け取ったデータをビット反転指示信号Ｓｇ１ａに応じて処理する。
【００４１】
以上では、ハードウエアのみによる上記変換関数の実装を説明したが、ＣＰＵ１で動作するソフトウエア５０に、トランザクションＡＰＩ５１を組み込む（図４参照）ことで当該変換関数を利用してもかまわない。ＣＰＵ１上で動作するソフトウエア５０がトランザクションＡＰＩ５１を用いてデータ転送を行う場合、トランザクションＡＰＩ５１内部でトランザクションに最適な変換関数を選択し、その変換関数を利用するようにトランザクションＡＰＩ５１内部で制御部４へ伝達することで、ソフトウエア５０を用いた動的な変換関数の選択ができる。動的な変換関数は、マスタ側制御部４ｍおよびスレーブ側制御部４ｓでそれぞれ実装することで実現することができる。
【００４２】
次に、図１１を参照して、上記変換関数として、可変長のビット反転を利用した場合の一例を説明する。なお、図１１は、可変長のビット反転とトグル数との関係を示す図である。
【００４３】
図１１（ａ）に示すように、前トランザクションデータＴ５「０１００  ０００１  １１１０  ００００」が送信された後、次のトランザクションデータＴ６「１０１１  １１１０  １１１０  ００００」をそのまま送信した場合、トグル数は「８」となる。そして、トランザクションデータＴ６全体に対してビット反転を行うと、トランザクションデータＴ６は、「０１００  ０００１  ０００１  １１１１」となり、ビット反転によるトグル数が「８」となり、さらに、マスタとスレーブと間での反転信号が１ビット増える。つまり、この場合、反転することによってトグル数が変わらず反転信号が１ビット増えるため、ビット反転せずに転送した方がよいことになる。
【００４４】
しかしながら、図１１（ｂ）に示すように、１６ビットのビット列で構成されるトランザクションデータＴ６を８ビット毎に分割し、前半のビット列を反転、後半のビット列を反転しない場合、トグル数が「８」から「０」に減少する。ここで、これら８ビット毎に分割すると仮定した場合、ビット分割を実行したことを示す情報１ビットおよび反転の実行の有無を示す情報２ビットの合計３ビットが別に必要になる。
【００４５】
ここで、上記変換関数としてトランザクションデータのビットを分割し、分割群毎にビット反転するか否かの判断は、上記ステップＳ３におけるトランザクションデータ解析処理で判断する。具体的には、図９において、マスタ側制御部４ｍは、前トランザクションデータを保有しており、当該前トランザクションと、次に送る予定のトランザクションを複数のビット幅に分割してそれぞれの分割に応じたハミング距離を計算する。そして、マスタ側制御部４ｍは、ハミング距離が一番小さくなる分割を選択する。分割方式が決まれば、分割群毎に相対的にハミング距離が大きければビット反転を転送データに施すために、マスタ側制御部４ｍからマスタ側ビット反転回路８ｍａおよびスレーブ側ビット反転回路９ｓａへビット反転指示信号Ｓｇ１ａをアクティブにする。ビット反転回路８ｍａは、送信する予定のトランザクションデータをビット反転して、スレーブ側ビット反転回路９ｓａへ送出する。スレーブ側ビット反転回路９ｓａでは、受け取ったデータをビット反転指示信号Ｓｇ１ａに応じて処理する。
【００４６】
以上では、ハードウエアのみによる上記変換関数の実装を説明したが、ＣＰＵ１で動作するソフトウエア５０に、トランザクションＡＰＩ５１を組み込む（図４参照）ことで当該変換関数を利用してもかまわない。ＣＰＵ１上で動作するソフトウエア５０がトランザクションＡＰＩ５１を用いてデータ転送を行う場合、トランザクションＡＰＩ５１内部でトランザクションに最適な変換関数を選択し、その変換関数を利用するようにトランザクションＡＰＩ５１内部で制御部４へ伝達することで、ソフトウエア５０を用いた動的な変換関数の選択ができる。動的な変換関数は、マスタ側制御部４ｍおよびスレーブ側制御部４ｓでそれぞれ実装することで実現することができる。
【００４７】
また、バスの消費電力を最適化する別の施策として、当該バスで転送するデータ量を少なくすることが考えられる。図１２および図１３を参照して、トランザクションデータから、より少ないビット数で全トランザクションを転送する一例を説明する。なお、図１２は、上記少ないビット数で転送することによって消費電力を最適化する制御部４を含んだ回路の一例である。図１３は、通信量を減らすための一意に復号可能なトランザクションデータＴに対する符号化例を示す図である。
【００４８】
図１３に示すトランザクションデータＴの例は、符号長が全て２であり、それらのデータには特定の出現する偏りが存在する。具体的には、トランザクションデータＴが「００」の出現率は、８０％である。トランザクションデータＴが「０１」の出現率は、１３％である。トランザクションデータＴが「１０」の出現率は、５％である。そして、トランザクションデータＴが「１１」の出現率は、２％である。
【００４９】
このとき、それぞれのトランザクションＴに、図１３に示す符号を割り当てる。具体的には、トランザクションデータＴが「００」に１ビットの符号「０」を割り当てる。トランザクションデータＴが「０１」に２ビットの符号「０１」を割り当てる。トランザクションデータＴが「１０」に３ビットの符号「００１」を割り当てる。そして、トランザクションデータＴが「１１」に３ビットの符号「０００」を割り当てる。この例における、符号化前後の転送量は、２ビット×１００％：１ビット×８０％＋２ビット×１３％＋３ビット×５％＋３ビット×２％＝２００：１２７となり、約４割近くデータ量を削減できる。その結果として、電力削減につながる。
【００５０】
図１２において、マスタ側符号化回路１０ｍは、上述した符号化を行いスレーブ側復号化回路１１ｓに送信し、データ量に関して最適なトランザクションを送信する回路を構成する。マスタ側制御部４ｍは、上記ステップＳ３のトランザクションデータ解析処理の結果から、最適な符号化方式が決まり、当該符号化方式に基づいて変換テーブル（例えば図１３参照）を作成する。そして、上記変換テーブルを用いた符号化および復号化処理をマスタ側符号化回路１０ｍおよびスレーブ側復号化回路１１ｓがそれぞれ行う。
【００５１】
このとき、上記ステップＳ１で用いたデータ以外からなるトランザクションの場合、上記変換テーブルでは最適な符号化が行なわれない可能性がある。そこで、ＣＰＵ１で動作し、トランザクションＡＰＩ５１を用いたソフトウエア５０（図４参照）にて、データ転送開始時に最適な符号化を計算し、新たな変換テーブルを作成後、その変換テーブルをマスタ側制御部４ｍに転送することで、動的に変換テーブルを変更し最適な変換テーブルを作成できる。また、変換テーブルを変更する処理全てをソフトウエアで実現した場合や性能に与えるインパクトが大きな場合、事前に数種類の変換テーブルを用意し、それらを切り替えても本発明を実現可能であり、このような変換テーブルの変更方法も、本発明の対象に含まれる。
【００５２】
次に、図１４を参照して、入力および出力のバス幅が異なる記憶装置を介してトランザクションを転送する装置の一例について説明する。なお、図１４は、入力のバス幅ＢＷ１および出力のバス幅ＢＷ２となったメモリ部１３を介してトランザクションを転送する装置のブロック図である。
【００５３】
図１４において、入出力双方でバッファを設けず、それぞれにマスタ側メモリ制御部１２ｍおよびスレーブ側メモリ制御部１２ｓを備え、メモリ部１３を共有することで、スレーブ側が所望のタイミングでメモリ部１３に格納されたデータを利用できるようになる。マスタ側およびスレーブ側にとって最適なタイミングは、上記ステップＳ３のトランザクションデータ解析処理にて性能解析を行うことでデータが必要なタイミングを解析し、当該タイミングに余裕があれば、データサイズと消費電力との関係（図５参照）を考慮し、図１４に示す構成回路を利用することで、バスの最適化が図られる。また、図６または図７で示した構成を図１４に示した回路構成に組み合わせることで、動的にビット幅を変更することも可能となる。また、バス幅変更もハードウエアとソフトウエアで制御する方法があり、双方とも本発明から構成される回路の一例である。なお、本実施例では、記憶装置をメモリ部１３で説明したが、本発明で述べるところの記憶装置は、レジスタやＦＩＦＯ等も含まれる。また、図１４では、メモリ部１３に対して異なるポートを形成しているが、マスタ側およびスレーブ側で共通のポートを用いてもかまわない。
【００５４】
また、バスの消費電力を最適化する別の施策として、動作周波数を低くすることが考えられる。図１５を参照して、動作周波数を低くすることによってバスの消費電力を最適化する一例を説明する。なお、図１５は、動作周波数を動的に変更させる半導体集積回路装置の一例である。
【００５５】
図１５において、マスタ側クロック制御部１４ｍにて、ベースとなる入力クロック信号Ｓｇ３のクロック周期を変化させたクロックまたは同一のクロックを、マスタ側データ送信回路１５ｍおよびスレーブ側データ受信回路１６ｓへクロック信号Ｓｇ４として伝播させる。クロック信号Ｓｇ４を受け取ったマスタ側データ送信回路１５ｍおよびスレーブ側データ受信回路１６ｓは、それぞれ回路が動作するクロック信号Ｓｇ４の周期に応じて動作する。
【００５６】
図１６に、ハードウエアのみでクロックを動的に変更するマスタ側クロック制御部１４ｍの一例を示す。図１６において、マスタ側クロック制御部１４ｍの中には、カウンタ１４１ｍが備えられている。マスタ側クロック制御部１４ｍは、カウンタ１４１ｍに設定されたベースカウンタ値分、分周することができる。分周させない場合、マスタ側クロック制御部１４ｍは、入力クロック信号Ｓｇ３をそのまま出力してもかまわない。
【００５７】
転送が開始されると、マスタ側クロック制御部１４ｍには、バスからトランザクション転送開始信号Ｓｇ５が送られてくる。なお、トランザクション転送開始信号Ｓｇ５を用いなくても、トランザクション記憶部５（図３参照）で用いた方法と同様の構成によって、バスからトランザクションが生成されるので、この構成を用いてもかまわない。トランザクション転送開始信号Ｓｇ５が送られた場合、マスタ側クロック制御部１４ｍは、カウンタ１４１ｍで参照するベースカウンタ値を減らすことで、動作周波数を高くすることができる。そして、マスタ側クロック制御部１４ｍは、バスからマスタ側トランザクション転送終了信号Ｓｇ６を検出すると、カウンタ１４１ｍのベースカウンタ値を増やすことで、周波数を低くすることができる。このように、マスタ側クロック制御部１４ｍは、トランザクションの増減に応じて周波数を変更するため、適切な周波数が動的に選択される。
【００５８】
図１７に、周波数変更手段をソフトウエア実現するマスタ側クロック制御部１４ｍの一例を示す。図１７において、マスタ側クロック制御部１４ｍの中には、カウンタ１４２ｍが形成される。
【００５９】
ＣＰＵ１上で動作するソフトウエア５０で利用するトランザクションＡＰＩ５１（図４参照）において、トランザクション開始前に制御部４へ転送開始を知らせることで、図１７におけるマスタ側クロック制御部１４ｍに入力するマスタ側クロック制御信号Ｓｇ７を変化させる。つまり、マスタ側クロック制御信号Ｓｇ７は、マスタ側トランザクション転送開始信号Ｓｇ５（図１６参照）と同様の役割を担っており、これによって、マスタ側クロック制御部１４ｍが同様に動的にクロック周波数を変更する回路を構成することができる。
【００６０】
なお、図１７の一例では、制御部４経由でマスタ側クロック制御部１４ｍへのマスタ側クロック制御信号Ｓｇ７を生成しているが、ＣＰＵ１から直接ソフトウエアでマスタ側クロック制御部１４ｍを制御することも、可能であり、そのように回路を構成してもかまわない。
【００６１】
また、上述した半導体集積装置の設計方法は、コンピュータにそれぞれのステップを実行させる半導体集積装置の設計プログラムとしても実現可能である。また、この設計プログラムは、上記コンピュータが読取可能な記録媒体（光ディスク、磁気ディスク、メモリーカードなど）に格納することが可能である。さらに、上記設計プログラムは、他の媒体や通信回線を通じて供給することもできる。
【産業上の利用可能性】
【００６２】
本発明の半導体集積装置の設計方法および設計プログラムは、トランザクションデータを用いてオンチップバスを大局的に性能および電力の最適化が可能となり、半導体集積回路装置のオンチップバス構造の設計や検討などへ適用することができる。
【図面の簡単な説明】
【００６３】
【図１】本発明の一実施形態に係る半導体集積装置の設計方法の要旨を示すフローチャート
【図２】図１の半導体集積装置の設計方法で用いるトランザクションデータの一例
【図３】ハードウエアで実現されたトランザクションデータ６０を記憶するトランザクション記憶部５を、システムのバス上に構成した装置の一例
【図４】トランザクションＡＰＩ５１が組み込まれたソフトウエア５０でシステムのバス上に構成した装置の一例
【図５】バスに流れるデータのサイズとその消費電力とを示した概念図
【図６】最適なバス幅を選択する回路の一例
【図７】最適なバス幅を選択する回路の他の例
【図８】変換関数を用いて消費電力を最適化する回路の一例
【図９】固定長のビット反転を利用した変換関数を用いて消費電力を最適化する回路の一例
【図１０】固定長のビット反転とトグル数との関係を示す図
【図１１】可変長のビット反転とトグル数との関係を示す図
【図１２】少ないビット数で転送することによって消費電力を最適化する回路の一例
【図１３】通信量を減らすための一意に復号可能なトランザクションデータＴに対する符号化例を示す図
【図１４】入力のバス幅ＢＷ１および出力のバス幅ＢＷ２となったメモリ部１３を介してトランザクションを転送する装置のブロック図
【図１５】動作周波数を低くすることによってバスの消費電力を最適化する半導体集積回路装置の一例
【図１６】ハードウエアでクロックを動的に変更するマスタ側クロック制御部１４ｍの一例
【図１７】ソフトウエアでクロックを動的に変更するマスタ側クロック制御部１４ｍの一例
【図１８】従来のバス解析および最適化のための装置を示す概念図
【符号の説明】
【００６４】
１…ＣＰＵ
２…メモリ
３…ハードウエア
４…制御部
５…トランザクション記憶部
６…バッファ
７…セレクタ
８…データ変換回路
９…データ復元回路
１０…符号化回路
１１…復号化回路
１２…メモリ制御部
１３…メモリ部
１４…クロック制御部
１４１、１４２…カウンタ
１５…データ送信回路
１６…データ受信回路
５０…ソフトウエア
５１…トランザクションＡＰＩ
６０…トランザクションデータ
【図１】
2006004076.tif 000003
【図２】
2006004076.tif 000004
【図３】
2006004076.tif 000005
【図４】
2006004076.tif 000006
【図５】
2006004076.tif 000007
【図６】
2006004076.tif 000008
【図７】
2006004076.tif 000009
【図８】
2006004076.tif 000010
【図９】
2006004076.tif 000011
【図１０】
2006004076.tif 000012
【図１１】
2006004076.tif 000013
【図１２】
2006004076.tif 000014
【図１３】
2006004076.tif 000015
【図１４】
2006004076.tif 000016
【図１５】
2006004076.tif 000017
【図１６】
2006004076.tif 000018
【図１７】
2006004076.tif 000019
【図１８】
2006004076.tif 000020
【手続補正書】
【提出日】平成17年5月31日(2005.5.31)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】請求項４
【補正方法】変更
【補正の内容】
【請求項４】
前記制御部を生成する工程は、
前記トランザクションデータから前記バスのバス幅を決定する前記制御部を生成し、
前記バス幅を選択するセレクタを設定する工程を含むことを特徴とする、請求項１に記載の半導体集積装置の設計方法。
【手続補正２】
【補正対象書類名】特許請求の範囲
【補正対象項目名】請求項９
【補正方法】変更
【補正の内容】
【請求項９】
前記制御部を生成する工程において、
前記トランザクションデータの種類ごとにその出現率を計測し、
前記出現率が相対的に高い前記トランザクションデータのビット列を、当該ビット列より少ないビット列に変換するための変換テーブルを生成し、
前記変換テーブルに基づいて、前記トランザクションデータのビット列を変換するように前記バスを制御する前記制御部を生成することを特徴とする、請求項１に記載の半導体集積装置の設計方法。
【手続補正３】
【補正対象書類名】明細書
【補正対象項目名】０００９
【補正方法】変更
【補正の内容】
【０００９】
第４の発明は、上記第１の発明において、制御部を生成する工程は、トランザクションデータからバスのバス幅を決定する制御部を生成し、バス幅を選択するセレクタを設定する工程を含む。
【手続補正４】
【補正対象書類名】明細書
【補正対象項目名】００１４
【補正方法】変更
【補正の内容】
【００１４】
第９の発明は、上記第１の発明において、制御部を生成する工程において、トランザクションデータの種類ごとにその出現率を計測し、出現率が相対的に高いトランザクションデータのビット列を、そのビット列より少ないビット列に変換するための変換テーブルを生成し、変換テーブルに基づいて、トランザクションデータのビット列を変換するようにバスを制御する制御部を生成する。