説明

集積回路設計方法及びプログラム

【課題】ある演算記述における単一の演算期間が、指定した期間よりも長い場合があっても、動作記述中の演算記述の変更を不要とする集積回路設計方法及びプログラムを提供する。
【解決手段】本集積回路設計方法は、演算子を細分化した演算記述を作成する第1工程と、第1工程で作成した細分化演算記述を使用して演算子のオーバロード用ライブラリを作成する第2工程と、動作記述を使用してオーバロード用ライブラリインクルード済み動作記述を作成する第3工程と、第3工程で作成したオーバロード用ライブラリインクルード済み動作記述と第2工程で作成したオーバロード用ライブラリとを使用して高位合成を行いレジスタ転送レベル記述を作成する第4工程と、第4工程で作成したレジスタ転送レベル記述を使用して論理合成を行いゲートレベル記述を作成する第5工程とを備える。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、高位合成を利用して動作記述からレジスタ転送レベル記述を自動生成する集積回路設計方法及びプログラムに関するものである。
【背景技術】
【0002】
近年、大規模なLSIを短期間で設計するために有効な技術として、高位合成技術が知られている。高位合成技術とは、ハードウェアの構造に関する情報が含まれず、処理のアルゴリズムのみが記述された動作記述から、レジスタ転送レベル記述であるハードウェアの回路を自動生成する技術である。
【0003】
高位合成技術では、動作記述中の演算記述をハードウェアの演算器に割り付けることが必要であり、この演算器アロケーション設計方法に関する技術が記載された文献としては下記特許文献1が挙げられ、この特許文献1には、複数の演算をある一つの演算器に割り付ける際に、指定した期間よりも長いフォールスパスが発生するか否かを判定し、フォールスパスが存在する場合は、それらの複数の演算を異なる演算器にそれぞれ割り付けることで、LSI上で実際には動作しないパスであるフォールスパスに対して、設計検証ツールで発生する擬似エラーや、論理合成ツールで発生する過剰な最適化を抑止する技術が記載されている。
【先行技術文献】
【特許文献】
【0004】
【特許文献1】特開2003−076728号公報
【発明の概要】
【発明が解決しようとする課題】
【0005】
前記特許文献1に記載された技術は、複数の演算の演算期間が指定した期間よりも長いパスに対しては、それらの複数の演算を異なる演算器にそれぞれ割り付けることでディレイ違反を解消することができる。しかし、単一の演算の演算期間が指定した期間よりも長く、かつ、このパスをフォールスパスにできない場合、すなわち、このパスがLSI上で実際に動作するパスである場合は、演算器を割り付けることができない、もしくは、演算器を割り付けることができたとしても、この演算器を経由するパスはディレイ違反パスとなり正常動作を保つLSIを生成することができない。そのため、動作記述中の該当する演算記述を、より演算期間の短い演算器を複数回使用して演算する記述、すなわち、細分化した演算記述に変更する必要が生じてしまう。
【0006】
これを説明するために、まず演算期間と演算器の割り付け方法について説明する。図3(a)に示す演算記述3001を演算するためには、A+Bの演算3002を図3(b)に示す加算器3004に、(A+Bの結果)−Cの演算3003を減算器3005に割り付ける。このとき、加算器3004の演算期間3006は、図3(c)に示すように、指定された期間3007より短いため割り付けが可能であり、かつ、この加算器3004を経由するパスはディレイ違反パスとならずLSIを生成する上で問題が生じない。同様に、(A+Bの結果)−Cの演算3003を減算器3005に割り付ける場合も割り付けが可能である。しかし、図4(a)に示す演算記述4001のA/Bの演算4002を除算器4003に割り付ける場合は、図4(b)に示す除算器4003の演算期間4004は、図4(c)に示すように、指定された期間4005より長いため割り付けができない、もしくは、この除算器4003を経由するパスはディレイ違反パスとなりLSIを生成する上で問題が生じてしまう。そのため、A/Bの演算4002を図5(a)に示す細分化した演算記述5001に変更し、演算記述4001は演算記述5002に書き換える。図5(a)においてdivide5003とは、細分化した演算記述5001を関数化したものを示す。細分化した演算記述5001は、除算器4003は使用せずに図5(b)に示す減算器5004を複数回使用した演算に書き換えられており、減算器5004の演算期間5005は、図5(c)に示すように、指定された期間5006よりも短いため、割り付けが可能であり、かつ、この減算器5004を経由するパスはディレイ違反パスとならずLSIを生成する上での問題発生を防ぐことができる。なお、A/Bの演算4002を細分化した演算記述5001に書き換える方法を詳細に記した文献としては、例えば『Computer Architecture:A Quantitative Approach』John L.Hennessy,David A.Patterson等が挙げられる。
【0007】
次に、上記説明した演算器の割り付け方法および演算記述の変更を、すなわち、従来の高位合成を利用したLSI設計の流れを図1のフローチャートを用いて説明する。初めに動作記述1001を高位合成1002し、レジスタ転送レベル記述1003を生成する。そして、レジスタ転送レベル記述1003を論理合成1004し、ゲートレベル記述1005を生成する。そして、ゲートレベル記述1005を使用して演算器の演算期間チェック1006を行い、演算器の演算期間が指定された期間より短い場合はここで処理終了となるが、長い場合は、演算記述の細分化1007を行い細分化演算記述1008を作成し、動作記述1001と細分化演算記述1008を使用して演算記述部の変更1009を行い動作記述変更版1010を作成する。動作記述変更版1010は、高位合成1002の元となるファイルである動作記述1001を書き換えたものであるため、再度、高位合成1002、論理合成1004をやり直す必要がある。
【0008】
以上説明したとおり、従来における高位合成を利用したLSIの設計方法では、演算記述4001中のA/Bの演算4002に示すような単一の演算期間が、指定した期間よりも長い場合は、細分化した演算記述に変更する必要が生じ、この記述変更は、指定した期間よりも長い演算期間を有する演算記述全てを変更する必要がある。そのため、演算記述を修正することで修正箇所に論理不良を作り込んでしまう危険性があるという問題点および、演算記述を修正した後で、高位合成を再度実行する必要があるため、設計の後戻りが生じるという問題点があった。
【0009】
本発明の目的は、ある演算記述における単一の演算期間が、指定した期間よりも長い場合があっても、動作記述中の演算記述の変更を不要とする集積回路設計方法及びプログラムを提供することである。
【課題を解決するための手段】
【0010】
前記目的を達成するために、本発明は、以下の集積回路設計方法及びプログラムを提供する。
(1)演算子を細分化した演算記述を作成する第1工程と、前記第1工程で作成した細分化演算記述を使用して演算子のオーバロード用ライブラリを作成する第2工程と、動作記述を使用してオーバロード用ライブラリインクルード済み動作記述を作成する第3工程と、前記第3工程で作成したオーバロード用ライブラリインクルード済み動作記述と前記第2工程で作成したオーバロード用ライブラリとを使用して高位合成を行いレジスタ転送レベル記述を作成する第4工程と、前記第4工程で作成したレジスタ転送レベル記述を使用して論理合成を行いゲートレベル記述を作成する第5工程とを備えたことを特徴とする集積回路設計方法。
(2)前記動作記述とは別の動作記述に対して前記第3工程〜第5工程を繰り返し行うことを特徴とする上記(1)記載の集積回路設計方法。
(3)コンピュータに、演算子を細分化した演算記述を作成する第1手順、前記第1手順で作成した細分化演算記述を使用して演算子のオーバロード用ライブラリを作成する第2手順、動作記述を使用してオーバロード用ライブラリインクルード済み動作記述を作成する第3手順、前記第3手順で作成したオーバロード用ライブラリインクルード済み動作記述と前記第2手順で作成したオーバロード用ライブラリとを使用して高位合成を行いレジスタ転送レベル記述を作成する第4手順、前記第4手順で作成したレジスタ転送レベル記述を使用して論理合成を行いゲートレベル記述を作成する第5手順、を実行させるためのプログラム。
(4)前記動作記述とは別の動作記述に対して前記第3手順〜第5手順を繰り返し実行させるための上記(3)記載のプログラム。
【発明の効果】
【0011】
本発明によれば、ある演算記述における単一の演算期間が、指定した期間よりも長い場合があっても、動作記述中の演算記述の変更を不要とすることができる。これにより、演算記述の変更による論理不良の混入を防ぐことができる。また、高位合成の再実行による設計の後戻りを防ぐことができ、集積回路の設計工数と設計期間を従来に比べて短縮することができる。さらに、複数の集積回路を設計する際には、設計工程の一部は共通して利用可能なので残りの工程を実行するだけで設計することができる。
【図面の簡単な説明】
【0012】
【図1】従来方式による高位合成を利用したLSI設計の一例を示すフローチャートである。
【図2】本発明に係る集積回路設計方法の一実施形態を示すフローチャートである。
【図3】(a)〜(c)は演算器の割り付け方法の一例を示す構成図である。
【図4】(a)〜(c)は演算器の割り付け方法の一例を示す構成図である。
【図5】(a)〜(c)は演算器の割り付け方法の一例を示す構成図である。
【図6】演算子のオーバロード用ライブラリ記述の一例を示す図である。
【図7】演算子のオーバロード用ライブラリをインクルードした動作記述の一例を示す図である。
【図8】(a)、(b)はレジスタ転送レベル記述の一例を示す図である。
【図9】(a)、(b)はゲートレベル記述の一例を示す図である。
【発明を実施するための形態】
【0013】
以下、本発明の好適な実施の形態を図面を参照しながら詳細に説明する。図2は、本発明に係る集積回路設計方法の一実施形態を示すフローチャートである。本実施形態では集積回路としてLSIを例にとって説明する。また、図6は、演算子のオーバロード方法の一例を示す図、図7はオーバロード用ライブラリインクルード済み動作記述の一例を示す図である。
【0014】
本実施形態による高位合成を利用したLSIの設計方法は、例えば図2に示す如く、事前処理2001とゲートレベル記述作成処理2006の2つの処理で構成されている。なお、本実施形態は一例として処理を区分けしたもので、本発明はこれに限定されるものではない。始めに、事前処理2001における細分化演算記述作成2002では、動作記述の記述に適したプログラム言語としてC++もしくはSystemCを使用して、細分化演算記述2003を作成する。細分化演算記述2003とは、前述した細分化した演算記述5001と同等な記述を示しており、すなわち、加算演算子(+)、減算演算子(−)、乗算演算子(*)、除算演算子(/)等の算術演算子を細分化した演算記述のことである。次に、細分化演算記述2003を使用してオーバロード用ライブラリ作成2004を行い、オーバロード用ライブラリ2005を作成し、事前処理2001は処理完了となる。ここで、図6を用いてオーバロード用ライブラリ作成2004について説明する。
【0015】
オーバロード用ライブラリ6001は、演算子のオーバロード宣言部6004と演算動作細分化記述部6003で構成される。演算動作細分化記述部6003は、細分化演算記述2003と等価な記述であり、すなわち、オーバロード用ライブラリ6001は、細分化演算記述2003に演算子のオーバロード宣言部6004を追記することで作成できる。
【0016】
次に、ゲートレベル記述作成処理2006におけるオーバロード用ライブラリインクルード2009では、動作記述の記述に適したプログラム言語としてC++もしくはSystemCを使用して記述された動作記述2007を使用して、オーバロード用ライブラリインクルード済み動作記述2010を作成する。ここで、図7を用いてオーバロード用ライブラリのインクルードについて、図6と図7を用いて演算子のオーバロード動作について説明する。
【0017】
動作記述インプリメントファイル7001は、オーバロード用ライブラリインクルード部7002と、演算記述部7004で構成される。演算記述部7004は、動作記述2007と等価な記述であり、すなわち、動作記述インプリメントファイル7001は、動作記述2007にオーバロード用ライブラリインクルード部7002を追記することで作成できる。これは、図5で説明した演算記述5002は、A/Bの演算4002をdivide5003に書き換えて作成したことに対し、ここでは、演算記述部7004は一切変更しておらず、演算記述部7004にオーバロード用ライブラリインクルード部7002を追記しただけであるため、動作記述中の演算記述の変更を不要とし、同時に、演算記述の変更による論理不良の混入を防ぐことができることを意味している。
【0018】
演算子のオーバロード動作は、C++もしくはSystemCのプログラム言語仕様に予め用意されている機能である。まず、オーバロード用ライブラリ6001は、演算子のオーバロード宣言部6004に記述されている除算演算子6002を、演算動作細分化記述部6003に置き換えていることを意味する。そして、動作記述インプリメントファイル7001は、オーバロード用ライブラリ6001をオーバロード用ライブラリインクルード部7002によってインクルードしているため、動作記述インプリメントファイル7001を実行した場合、除算演算子7003は、演算動作細分化記述部6003に置き換えられて実行される。以上説明したように、演算子のオーバロード動作とは、演算子を、動作記述をコーディングするユーザが演算子に対応する動作記述を任意に指定できる機能である。なお、演算子のオーバロード動作および演算子のオーバロード宣言部6004の記述方法を詳細に記した文献としては、例えば『GNU C++プログラミング』トム・スワン等が挙げられる。
【0019】
次に、高位合成2011では、オーバロード用ライブラリインクルード済み動作記述2010と、オーバロード用ライブラリ2005を使用して、レジスタ転送レベル記述2012を作成する。その一例を図8(a)、(b)に示す。図8(a)のレジスタ転送レベル記述8001は、例えば図8(b)のフリップフロップ8002、加算器8003および減算器8004を含む回路図で表わされる。そして、論理合成2013では、レジスタ転送レベル記述2012を使用して、ゲートレベル記述2014を作成する。その一例を図9(a)、(b)に示す。図9(a)のゲートレベル記述9001は、例えば図9(b)のフリップフロップ9002およびアンドゲートやオアゲート等からなるゲート回路9003を含む回路図で表わされる。以上でゲートレベル記述作成処理2006が処理完了となる。なお、このゲートレベル記述2014を、LSIチップ生成ベンダに送付することでLSIを生成することができる。複数のLSIを設計する際には、上述の事前処理は一度だけ行えばよく、各LSIについてそれぞれゲートレベル記述作成処理を行うだけで複数のLSIを設計することが可能である。
【0020】
以上の各工程の手順は、コンピュータに次のプログラムを実行させることで実施することができる。すなわち、このプログラムは、コンピュータに、演算子を細分化した演算記述を作成する第1手順、第1手順で作成した細分化演算記述を使用して演算子のオーバロード用ライブラリを作成する第2手順、動作記述を使用してオーバロード用ライブラリインクルード済み動作記述を作成する第3手順、第3手順で作成したオーバロード用ライブラリインクルード済み動作記述と第2手順で作成したオーバロード用ライブラリとを使用して高位合成を行いレジスタ転送レベル記述を作成する第4手順、第4手順で作成したレジスタ転送レベル記述を使用して論理合成を行いゲートレベル記述を作成する第5手順、を実行させるためのものである。複数のLSIを設計する際には、前記動作記述とは別の動作記述に対して上述の第3手順〜第5手順を繰り返し実行させることで行うことができる。
【符号の説明】
【0021】
2001 事前処理
2002 細分化演算記述作成
2003 細分化演算記述
2004 オーバロード用ライブラリ作成
2005 オーバロード用ライブラリ
2006 ゲートレベル記述作成処理
2007 動作記述
2009 オーバロード用ライブラリインクルード
2010 オーバロード用ライブラリインクルード済み動作記述
2011 高位合成
2012 レジスタ転送レベル記述
2013 論理合成
2014 ゲートレベル記述

【特許請求の範囲】
【請求項1】
演算子を細分化した演算記述を作成する第1工程と、前記第1工程で作成した細分化演算記述を使用して演算子のオーバロード用ライブラリを作成する第2工程と、動作記述を使用してオーバロード用ライブラリインクルード済み動作記述を作成する第3工程と、前記第3工程で作成したオーバロード用ライブラリインクルード済み動作記述と前記第2工程で作成したオーバロード用ライブラリとを使用して高位合成を行いレジスタ転送レベル記述を作成する第4工程と、前記第4工程で作成したレジスタ転送レベル記述を使用して論理合成を行いゲートレベル記述を作成する第5工程とを備えたことを特徴とする集積回路設計方法。
【請求項2】
前記動作記述とは別の動作記述に対して前記第3工程〜第5工程を繰り返し行うことを特徴とする請求項1記載の集積回路設計方法。
【請求項3】
コンピュータに、演算子を細分化した演算記述を作成する第1手順、前記第1手順で作成した細分化演算記述を使用して演算子のオーバロード用ライブラリを作成する第2手順、動作記述を使用してオーバロード用ライブラリインクルード済み動作記述を作成する第3手順、前記第3手順で作成したオーバロード用ライブラリインクルード済み動作記述と前記第2手順で作成したオーバロード用ライブラリとを使用して高位合成を行いレジスタ転送レベル記述を作成する第4手順、前記第4手順で作成したレジスタ転送レベル記述を使用して論理合成を行いゲートレベル記述を作成する第5手順、を実行させるためのプログラム。
【請求項4】
前記動作記述とは別の動作記述に対して前記第3手順〜第5手順を繰り返し実行させるための請求項3記載のプログラム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate


【公開番号】特開2011−65376(P2011−65376A)
【公開日】平成23年3月31日(2011.3.31)
【国際特許分類】
【出願番号】特願2009−214876(P2009−214876)
【出願日】平成21年9月16日(2009.9.16)
【出願人】(000233295)日立情報通信エンジニアリング株式会社 (195)
【Fターム(参考)】