JP2007316731A - Lsi設計支援装置 - Google Patents

Lsi設計支援装置 Download PDF

Info

Publication number
JP2007316731A
JP2007316731A JP2006142860A JP2006142860A JP2007316731A JP 2007316731 A JP2007316731 A JP 2007316731A JP 2006142860 A JP2006142860 A JP 2006142860A JP 2006142860 A JP2006142860 A JP 2006142860A JP 2007316731 A JP2007316731 A JP 2007316731A
Authority
JP
Japan
Prior art keywords
arithmetic
unit
library
level
arithmetic unit
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Withdrawn
Application number
JP2006142860A
Other languages
English (en)
Inventor
Hisahide Ezaki
尚英 江崎
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
NEC Electronics Corp
Original Assignee
NEC Electronics Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by NEC Electronics Corp filed Critical NEC Electronics Corp
Priority to JP2006142860A priority Critical patent/JP2007316731A/ja
Priority to US11/802,317 priority patent/US20070277142A1/en
Publication of JP2007316731A publication Critical patent/JP2007316731A/ja
Withdrawn legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2117/00Details relating to the type or aim of the circuit design
    • G06F2117/08HW-SW co-design, e.g. HW-SW partitioning

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Evolutionary Computation (AREA)
  • Geometry (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Design And Manufacture Of Integrated Circuits (AREA)

Abstract

【課題】浮動小数点や三角関数などの複雑な演算を実行する演算器と、単純な演算器との動作合成におけるスケジューリング、共有化が可能演算ライブラリを構成する。
【解決手段】LSIの設計における動作合成に用いられる演算ライブラリ(26)を生成するライブラリ生成プログラム(32)をコンピュータに実行させる。そのプログラム(32)は、
(a)入力装置(2)を用いて入力された、生成対象の前記演算ライブラリ(26)に対応するパラメータ(14)を供給するステップと、
(b)前記パラメータ(14)に応答して、動作合成時に共有化可能な演算器で構成される高級演算器を生成するステップと、
(c)前記高級演算器を有する前記演算ライブラリ(26)を構成するステップ
を具備する方法をコンピュータで実行する。
【選択図】図7

Description

本発明は、システムLSI(Large Scale Integration:大規模集積回路)の設計に関する。
近年、市場に流通する機器の多くにLSIが搭載されてきている。半導体技術の進歩に伴って、市場に流通する機器のライフサイクルは、ますます短くなってきている。そのため、半導体メーカにとっては、短期間で高性能なシステムLSIを開発することが重要となってきている。
短期間でシステムLSIを開発する技術として、動作合成ツールを用いたシステムLSIの開発技術が知られている。動作合成ツールとは、ハードウェアの動作を表現するアルゴリズムから、論理合成ツールに入力されるRTL(Register Transfer Level)記述を生成するEDA(Electronic Design Automation)ツールである。
動作合成ツールによるシステムLSIの開発期間を短縮する手法としては、例えば、ソフトウェア部分とハードウェア部分とを含めたシステム仕様を、C/C++言語などの動作記述レベルで記述し、システムレベルでの検証を行うソフトウェア/ハードウェア協調検証などが知られている。従来のシステムLSIの開発において、上記のソフトウェア/ハードウェア協調検証を行った後、ソフトウェアおよびハードウェアのそれぞれに関して、詳細な設計を行っている。
ハードウェア部分の詳細な設計を行う場合に、上記のソフトウェア/ハードウェア協調検証で使用された記述(C/C++言語などで記述されたシステム仕様の、ハードウェア部分の記述)を用いて動作合成を行う技術が知られている(例えば、非特許文献1参照)。
図1は、上記非特許文献1に記載のLSI設計工程を示す流れ図である。図1を参照すると、従来の動作合成では、動作記述を入力として、RTL記述を生成している。非特許文献1には、動作合成の主要機能であるスケジューリング、アロケーションに関する技術が開示されている。動作合成におけるスケジューリングとは、動作記述に基づいて、開発対象のLSIで実行される各演算の並列化や逐次化を行う処理である。換言すると、スケジューリングを行うことで、LSIを動作させる際に、どの演算を、いつ、どのような順序で実行するかを決定している。また、アロケーションとは、スケジューリングされた各演算を、演算器に割り当てるための処理である。さらに、従来の動作合成では、アロケーションを行うことで、演算器の共有化が行われている。
アロケーションにおける演算器の共有化では、動作合成を行った後特定の演算子などが同時に使用されないことがわかっている場合、その演算器を共有使用することを決定する。この共有化により、開発されるLSI全体の回路規模を小さくすることができる。
図1に示されているように、従来の動作合成においては、動作記述に記載されている演算に着目し、スケジューリング、共有化といった最適化処理を行っている。従来の動作合成におけるスケジューリング、共有化の対象となる演算器が演算ライブラリに備えられている。
図2は、上記の演算ライブラリに備えられた演算器に関連する情報を示すテーブルである。図2を参照すると、非特許文献1に記載の設計工程における従来の演算ライブラリには、加算器、減算器、乗算器などの基本的な演算器が、引数のビット数に応じて備えられている。
上述のしたように、従来の演算ライブラリには、加算器、減算器、乗算器などの基本的な演算器が用意されている。開発の対象となるシステムLSIの多様化、大規模化に伴って、より複雑な演算器(例えば、浮動小数点演算器や三角関数演算器)を用いた演算を行うことが必要とされている。従来の動作合成においては、このような複雑な演算は、一つのマクロやIP(Intellectual Property)などを基準とした単位で演算ライブラリに備えられていた。
浮動小数点を用いた演算を有する動作記述に対して、動作合成を行うと場合を例示して、従来の動作合成に関して説明を行う。上述のように、浮動小数点演算を行う演算器(以下、浮動小数点演算器と呼ぶ)がマクロとして演算ライブラリに用意されている。この場合、動作合成を実行すると、スケジューリング、共有化は、この浮動小数点演算器のマクロを単位として行われることになる。
また、三角関数を用いた演算を有する動作記述に対して、動作合成を行うと場合を例示して、従来の動作合成に関して説明を行う。三角関数を用いた演算では、引数の値に対応する演算結果をテーブルとして構成し、直接数値で表現していた。この場合、三角関数を有する動作記述を動作合成すると、三角関数の演算部分には各テーブルが割り当てられる。したがって、上述の浮動小数点演算器と同様に、スケジューリング、共有化の自由度に制限が生じてしまうこととなる。
日経エレクトロニクス、1996,2,12(NO,655)、P146〜P169、日経BP社、「伝送用LSIを動作合成で開発、機能設計の期間が1/10に短縮」
このように、複雑な演算器のマクロを有する演算ライブラリを用いた動作合成においては、スケジューリングや共有化を行なう場合、それらはマクロ同士(または、IP同士)で行われる。そのため、システムLSIの動作合成では、スケジューリングや共有化の自由度に制限が生じてしまう場合がある。システムLSIの開発において、動作合成におけるスケジューリングや共有化の自由度が制限されると、最適な動作合成結果を得られない場合がある。
つまり、従来はC/C++言語などで記述されたシステム仕様を流用してハードウェア部分の動作記述としていた。しかしながら、C/C++言語などで記述されたシステム仕様の記述の仕方によっては、上記のような自由度に関する制限に起因して、最適な動作合成結果を得られないことがあるという問題があった。
以下に、[発明を実施するための最良の形態]で使用される番号を用いて、課題を解決するための手段を説明する。これらの番号は、[特許請求の範囲]の記載と[発明を実施するための最良の形態]との対応関係を明らかにするために付加されたものである。ただし、それらの番号を、[特許請求の範囲]に記載されている発明の技術的範囲の解釈に用いてはならない。
上記課題を解決するために、LSIの設計における動作合成に用いられる演算ライブラリ(26)を生成するライブラリ生成プログラム(32)をコンピュータに実行させる。そのプログラム(32)は、
(a)入力装置(2)を用いて入力された、生成対象の前記演算ライブラリ(26)に対応するパラメータ(14)を供給するステップと、
(b)前記パラメータ(14)に応答して、動作合成時に共有化可能な演算器で構成される高級演算器を生成するステップと、
(c)前記高級演算器を有する前記演算ライブラリ(26)を構成するステップ
を具備する方法をコンピュータで実行可能なライブラリ生成プログラムである。
本発明の演算ライブラリは、浮動小数点や三角関数などの複雑な演算を実行する演算器に対応する演算器ライブラリ(例えば、浮動小数点加算ライブラリやSIN関数ライブラリ)を備えている。この演算器ライブラリは、動作合成におけるスケジューリング、共有化が可能な単純な演算器の組み合わせで構成されている。したがって、動作記述に上記のような複雑な演算が含まれていたとしても、動作合成時の演算器のスケジューリング、共有化が制限され、その自由度が低下してしまうことがない。また、C言語やC++言語などを用いてシステム仕様が記述されている場合に、その記述からハードウェア用動作記述への移行を円滑に行うことが可能となる。
以下に、図面を参照して、本発明を実施するための形態について説明を行う。なお、以下の実施形態において、動作レベル(アルゴリズム・レベル)の記述をアルゴリズム記述と呼ぶ。また、RTLの記述をRTL記述と呼ぶ。また、ゲート・レベルの記述を論理記述と呼ぶ。したがって、動作記述からRTL記述への展開を動作合成と呼び、RTL記述からゲート・レベルへの展開を論理合成と呼ぶ。更に、以下に述べる実施形態では、アルゴリズム記述がC/C++言語を用いて記述されている場合を例示して本願発明の説明を行う。なお、これは本願発明に適用されるアルゴリズム記述がC/C++言語に制限されることを意味するものではない。
[第1の実施形態]
[構成]
図3は、本発明のLSI設計支援装置10の構成を例示するブロック図である。図3を参照すると、本実施形態のLSI設計支援装置10は、情報処理装置1と入力装置2と表示装置3とを含んで構成されている。また、LSI設計支援装置10によって設計された半導体装置の情報を半導体製造装置に送ることで、本願発明を半導体製造に適用することができる。
情報処理装置1は、パーソナルコンピュータやワークステーションなどに代表される高速演算処理装置である。入力装置2は、情報処理装置1に対して、データを入力する機能を備えたマンマシンインターフェースであり、例えば、キーボードやマウスなどがその代表である。以下の実施形態においては、入力装置2が、キーボードである場合を例示して説明を行う。表示装置3は、情報処理装置1の処理結果を外部に出力する機能を有するマンマシンインターフェースであり、例えば、CRTや液晶ディスプレイがその代表である。以下の実施形態においては、表示装置3が、ディスプレイ装置である場合を例示し、抽出されたパラメータ値やシミュレーション結果などを視覚的に表示するものとして説明を行う。
上述の情報処理装置1は、図6に示されているように、CPU(Central Processing Unit:中央演算処理装置)4と、メモリ5と、入出力インターフェース6と、大容量記憶装置7とを備えて構成され、それらはバス8を介して接続されている。CPU4は、LSI設計支援装置10に備えられた各種装置の制御や、情報処理装置1に入出力されるデータの処理を行う演算処理装置であり、入力装置2などから受け取ったデータを解釈して演算し、その演算結果を表示装置3などで出力する。メモリ5は、データの書き込みと読み出しができる記憶媒体であり、例えば、SDRAMやDDR−SDRAMなどがその代表として例示される。入出力インターフェース6は、上述の入力装置2や表示装置3と情報処理装置1との間で実行されるデータ通信を制御する装置である。大容量記憶装置7は、記憶媒体に大量のデータを記録させるために使用する装置であり、例えば、HDD(Hard Disk Drive)などがその代表として例示される。また、図6に示されているように、大容量記憶装置7はデータ記憶部11とプログラム記憶部12とを含んで構成されている。
データ記憶部11は、大容量記憶装置7が保持する各種データの中で本実施形態に関連するデータが格納されている記憶領域を示している。また同様に、プログラム記憶部12は、大容量記憶装置7が保持する各種データの中で、本実施形態の動作に関連するコンピュータプログラムが格納されている記憶領域を示している。以下に、図面を参照してデータ記憶部11とプログラム記憶部12の詳細な構成に関して説明を行う。
図4は、データ記憶部11の構成を例示するブロック図である。図4を参照すると、データ記憶部11は、パラメータ記憶部21と、アルゴリズム記述記憶部22と、ソフトウェアアルゴリズム記述記憶部23と、ハードウェアアルゴリズム記述記憶部24と、リンク変更アルゴリズム記述記憶部25と、算術演算ライブラリ26と、RTL記述記憶部27とを含んで構成されている。
パラメータ記憶部21は、入力装置2を介して入力されたパラメータを保持している。ハードウェアアルゴリズム記述記憶部24は、C言語やC++言語で記述されたシステム仕様のアルゴリズム記述を保持している。ソフトウェアアルゴリズム記述記憶部23は、アルゴリズム記述のソフトウェア部分の記述であるソフトウェアアルゴリズム記述を保持している。ハードウェアアルゴリズム記述記憶部24は、アルゴリズム記述のハードウェア部分の記述であるハードウェアアルゴリズム記述を保持している。リンク変更アルゴリズム記述記憶部25は、ハードウェアアルゴリズム記述のリンクを変更したリンク変更後記述を保持している。算術演算ライブラリ26は、動作合成に使用される演算器を保持している。RTL記述記憶部27は、動作合成によって生成されたRTL記述を保持している。このRTLは、論理合成に使用される。
図5は、プログラム記憶部12の構成を例示するブロック図である。図5を参照すると、プログラム記憶部12は、動作合成実行プログラム31と、算術演算ライブラリ生成部32と、ソフトウェア/ハードウェア分割部33と、リンク変更部34と、動作合成部35と、検証部36と、パラメータ妥当性検証部37と、浮動小数点ライブラリ生成部38と、三角関数ライブラリ生成部39とを含んで構成されている。
動作合成実行プログラム31は、本実施形態における動作記述からRTL記述を生成する手順を示している。算術演算ライブラリ生成部32は、算術演算ライブラリ26に保持される演算器(複雑な演算器ライブラリ)を生成するための手順を示している。ソフトウェア/ハードウェア分割部33は、システム仕様のアルゴリズム記述から、ソフトウェア部分の記述とハードウェア部分の記述を特定するための手順を示している。リンク変更部34は、ハードウェアアルゴリズム記述のリンクを変更したリンク変更後記述を生成するために手順を示している。動作合成部35は、リンク変更後記述に基づいて動作合成の手順を示している。検証部36は、検証動作の手順を示している。パラメータ妥当性検証部37は、算術演算ライブラリ26に保持される演算器を生成する場合に、入力されるパラメータの妥当性をチェックする手順を示している。このパラメータ妥当性検証部37は、算術演算ライブラリ生成部32に示される動作に対応して読み出される。浮動小数点ライブラリ生成部38は、浮動小数点ライブラリを生成するための手順を示している。三角関数ライブラリ生成部39は、三角関数ライブラリを生成するための手順を示している。同様に、平方根関数ライブラリ生成部51、指数関数ライブラリ生成部52、対数関数ライブラリ生成部53および絶対値関数ライブラリ生成部54は、それぞれ、平方根関数ライブラリ、指数関数ライブラリ、対数関数ライブラリおよび絶対値関数ライブラリを生成するための手順を示している。
図6は、パラメータ記憶部21の構成を例示するテーブル40である。パラメータは、生成する演算器に応じて指定される。生成される演算器は、指定されるパラメータによって、所望の演算制度に対応してビット幅、アルゴリズムなどが決定される。図6を参照すると、パラメータテーブル40は、生成演算41とパラメータデータ42とが関連付けられている。また、図6に例示されるパラメータテーブル40は、浮動小数点乗算43、浮動小数点加算44、SIN関数45およびCOS関数46に関するパラメータを含んで構成されている。
[動作]
以下に、図面を参照して、第1の実施形態の動作に関して説明を行う。図7は、本発明のLSI設計支援装置10における第1の実施形態の動作を例示する流れ図である。第1の実施形態における情報処理装置1は、算術演算ライブラリ生成部32に示される手順に対応して、算術演算ライブラリ26を生成している。図7を参照すると、算術演算ライブラリ生成部32は、入力されたパラメータに応答して、パラメータ妥当性検証部37を読み出す。パラメータ妥当性検証部37に示される手順に対応して、その入力されたパラメータの妥当性のチェックを行う。
LSI設計支援装置10は、パラメータ妥当性検証部37に示される手順に対応して、入力されたパラメータの妥当性のチェックを行なうべきか否かの判断を行う。妥当性のチェックを行なうという判断をした場合、入力されたパラメータに関してのチェックを行なう。このとき、LSI設計支援装置10は、パラメータ妥当性検証部37に示される手順に対応して、妥当でないパラメータが入力された場合には、エラーを出力する。また、妥当でないパラメータが入力された場合に、その入力されたパラメータに基づいて、指定可能な新たなパラメータを要求する構成であっても良い。入力されたパラメータが妥当であった場合、算術演算ライブラリ生成部32に示される手順に対応して、生成しようとする演算ライブラリ生成部(38,39)を読み出す。
以下、浮動小数点加算の演算ライブラリ(以下、浮動小数点加算ライブラリと呼ぶ)を生成する場合に対応して説明を行う。なお、算術演算ライブラリ生成部32は、入力されたパラメータが、浮動小数点加算ライブラリに対応するものである場合、パラメータ妥当性検証部37の妥当性のチェックを行なうことなく、浮動小数点ライブラリ生成部38を読み出す。
図7を参照すると、LSI設計支援装置10は、入力装置2から入力されたパラメータ13に応答して、算術演算ライブラリ生成部32に示されている手順に対応して、浮動小数点ライブラリ生成部38を読み出す。LSI設計支援装置10は、浮動小数点ライブラリ生成部38に示される手順に対応して浮動小数点加算ライブラリを生成する。上述の図6のパラメータテーブル40に示されているように、浮動小数点加算ライブラリを生成する場合に使用するパラメータは、入力/出力データの指数部のビット幅と仮数部のビット幅である。
したがって、LSI設計支援装置10は、浮動小数点ライブラリ生成部38に示される手順に対応して、以下のような処理を実行する浮動小数点加算ライブラリを生成する。浮動小数点加算ライブラリでの処理は、二つの引数の指数部を比較する。その比較によって得られた結果に基づいて、小さいほうの仮数部を合わせるようにシフトする。その後、シフトした後の仮数部どうしを加算する。更に加算結果を正規化する。この正規化では、仮数部を右/左シフトし、浮動小数点の表現である1.mに変換する。そして、正規化した結果を浮動小数点の結果として出力する。
図8は、本実施形態における浮動小数点加算ライブラリの構成を例示する図である。図8を参照すると、本実施形態の浮動小数点加算ライブラリは、入力データ/出力データの指数部が5ビット、仮数部が5ビットというパラメータが入力されて生成されている。図8には、本実施形態の浮動小数点加算ライブラリにおいて、変数などの宣言部分以降で、実際の浮動小数点加算演算が、シフト(<<)、比較(==、>=)、加算(+)、減算(−)などの単純なビット演算で構成されていることが示されている。上述したように、これらの単純なビット演算は、動作合成用の演算ライブラリとして予め準備されているものである。
ここにおいて、動作合成の実行対象であるハードウェアアルゴリズム記述が、後述する図13に記載されているような記述の場合を例示して、具体的に本実施形態の浮動小数点加算ライブラリについて説明を行う。この場合、浮動小数点の加算を行なっている“b+c”の演算は、この浮動小数点加算ライブラリを使用することで、動作合成用に準備されているシフト器、比較器、加算器および減算器で実現されることとなる。(なお、生成されるライブラリの使用方法に関する詳細は後述するものとする。)
これらのシフト器、比較器、加算器および減算器は、動作合成において、スケジューリング、共有化の対象となる。つまり、ハードウェアアルゴリズム記述の中で、上記の“b+c”の演算以外の部分で、シフト器、比較器、加算器および減算器を使用するような記述があれば、これらは動作合成において演算器の共有化が行われる対象になりうる。
したがって、本実施形態の浮動小数点加算ライブラリを適用することによって、動作記述に浮動小数点加算を行う記述がある場合であっても、動作合成時の演算器のスケジューリング、共有化が制限され、その自由度が低下してしまうことがない。具体的には、浮動小数点加算ライブラリ内で使用しているシフト器、加算器が、浮動小数点加算以外の演算におけるシフト器、加算器と共有化することが可能となる。
なお、上記の浮動小数点加算を実行する演算以外にも、浮動小数点減算や浮動小数点乗算に本実施形態の動作を適用することが可能である。例えば、浮動小数点乗算の場合、指数部を加算し、仮数部を乗算する。そして、それらに対応して正規化することで、浮動小数点加算ライブラリを構成することができる。
以下に、三角関数の演算ライブラリ(以下、三角関数ライブラリと呼ぶ)を生成する場合に対応して説明を行う。上述の図6のパラメータテーブル40に示されているように、三角関数ライブラリを生成する場合に使用するパラメータは、入力/出力データのビット幅、近似方法、分割数である。近似方法、分割数は、演算制度に影響を及ぼすパラメータである。このパラメータは、所望の演算制度に対応して指定される。
上述したように、図7を参照すると、本実施形態のLSI設計支援装置10は、入力装置2から入力されたパラメータに応答して、算術演算ライブラリ生成部32に示されている手順に対応して、パラメータ妥当性検証部37を読み出す。LSI設計支援装置10は、パラメータ妥当性検証部37に示される手順に対応して、入力されたパラメータ13の妥当性のチェックを行なうべきか否かの判断を行う。ここで、パラメータ妥当性検証部37は、入力/出力データの指数部のビット幅、近似方法、分割数が入力されたことに応答して、妥当性のチェックを行う。上述したように、妥当でないパラメータ13が入力された場合には、エラー(または、指定可能な新たなパラメータの要求)を出力する。
例えば、パラメータ妥当性検証部37は、三角関数ライブラリを生成する場合、分割数に応じて1次式あるいは2次式の補間関数を用いて演算結果を求めている。このときパラメータ妥当性検証部37は、
入力データの取りうる範囲≧分割数
の関係が満たされているか否かの判断を行う。
以下に、生成する三角関数ライブラリが、
y=sin(x×π/2):0≦x<1 ・・・(1)
というである場合を例示して、パラメータ妥当性検証部37が実行する妥当性チェックに関して、具体的に説明を行う。
上記(1)式において、xは入力データを示している。その入力データが3ビットであるとすると、xがとり得る範囲は、
000:(0)
001
010:(π/8)
011
100:(π/4)
101
110:(3π/8)
111
である。したがって、この場合の分割数の最大値は8である。
ここにおいて、仮にパラメータとして入力された分割数が8を超えていた場合には、パラメータ妥当性検証部37は、エラーを出力する(または、指定可能な8以下のパラメータを要求する。)。なお、8未満の数字が分割数として指定された場合であっても、ライブラリ生成は正常に行われる。しかしながら、その場合に生成されるライブラリの演算精度は、分割数として8が指定された場合に比較して低下することになる。そのため、必要とする演算精度に基づいてこの分割数を入力することで適切なライブラリを構成することができる。
また、それ以外にも、実際にハードウェアかされた場合の面積などを考慮し、入力データ、出力データのビット幅、分割数に対して制限が設けられている場合、この制限に適合しているか否かをチェックする。
妥当性のチャックが終了した後、算術演算ライブラリ生成部32に示される手順に対応して三角関数ライブラリ生成部39を読み出す。ここにおいて、読み出された三角関数ライブラリ生成部39に示される手順が、SIN関数の演算器を生成する場合を例示して説明を行う。以下の実施形態において、本願発明の理解を容易にするために、そのSIN関数が
y=sin(x×π/2):0≦x<1
であるものを例示して説明する。
三角関数ライブラリを生成する場合、まず関数がとりうる範囲を所定数で分割する。そして、その分割点での値を用いて補間近似する。これによって、三角関数ライブラリを生成することが可能となる。図9は、分割数が4分割である場合の本実施形態の動作を例示するグラフである。上述のように、この分割数は、三角関数ライブラリを生成するためのパラメータのひとつである。
補間近似は、分割点での値を用いて、1次式により補間を行う。また、この補間近似では、2次式を用いることも可能である。1次式または2次式のどちらを選択するかは、入力されるパラメータによって決定される。
補間近似を1次式によって行う場合を以下に説明する。1次式近似(直線近似)の場合、演算結果は下記(1)式によって求められる。
y(x)=y(n)+{y(n+1)−y(n)}×t ・・・(1)
ただし、
t={x−x(n)}/(1/N)
N:分割数、n:任意の分割点
である。
また、補間近似を2次式によって行う場合を以下に説明する。図10は、SIN(X)と1次近似との差分を2次式で近似するときの動作を例示するグラフである。2次式近似の場合は、1次式近似よりも、より制度の高い演算結果を得ることができる。演算結果は下記(2)式によって求められる。
y(x)=y(n)+{y(n+1)−y(n))×t+4t×(1−t)×gain(n)・・・(2)
三角関数ライブラリ生成部39は、入力装置2を介して入力されたパラメータ記憶部21にしたがって、上記の処理内容の三角関数ライブラリを生成する。
図11は、本実施形態における三角関数ライブラリの構成を例示する図である。図11には、本実施形態の三角関数ライブラリとしてSIN関数ライブラリが例示されている。そのSIN関数ライブラリは、入力データ/出力データが8ビットであり、演算アルゴリズムとして、二次近似、分割数が4というパラメータが入力されて生成されている。図11には、このSIN関数ライブラリにおける、変数などの宣言部分以降での実際のSIN関数演算が単純な、比較(<)、減算(−)、乗算(*)、シフト(>>)、加算(+)などで構成されていることが示されている。
したがって、上述した浮動小数点加算ライブラリと同様に、SIN関数演算を実行する記述と、それ以外で比較器、減算器、乗算器、シフト器、加算器を使用するような演算を行う記述があれば、これらは動作合成において共有化が行われる対象になりうる。
したがって、本実施形態の三角関数ライブラリを適用することによって、動作記述に三角関数演算を行う記述がある場合であっても、動作合成時の演算器のスケジューリング、共有化が制限され、その自由度が低下してしまうことがない。具体的には、三角関数ライブラリ内で使用しているシフト器、加算器が、その三角関数演算以外の演算におけるシフト器、加算器と共有化することが可能となる。なお、上記の三角関数(SIN関数)を実行する演算以外の三角関数演算(例えばCOS演算)にも、本実施形態の動作を適用することが可能である。また、近似方法として、1次式、2次式を適用して場合を例示して説明を行ってきた。これ以外にも、例えば、ビット単位の演算である乗算、シフト、加算を用いた近似式を適用することも可能である。
上述のように、本実施形態の演算ライブラリは、浮動小数点や三角関数などの複雑な演算を実行する演算器に対応する演算器ライブラリ(例えば、浮動小数点加算ライブラリやSIN関数ライブラリ)を備えている。この演算器ライブラリは、動作合成におけるスケジューリング、共有化が可能な単純な演算器の組み合わせで構成されている。したがって、動作記述に上記のような複雑な演算が含まれていたとしても、動作合成時の演算器のスケジューリング、共有化が制限され、その自由度が低下してしまうことがない。また、C言語やC++言語などを用いてシステム仕様が記述されている場合に、その記述からハードウェア用動作記述への移行を円滑に行うことが可能となる。
[第2の実施形態]
以下に、図面を参照して、本願発明のLSI設計支援装置における第2の実施形態について説明を行う。上述の第1の実施形態では、算術演算ライブラリ26を生成する実施形態について説明を行ってきた。第2の実施形態では、その算術演算ライブラリ26を用いてRTL記述を生成する構成・動作に関して説明を行う。
図12を参照すると、第2の実施形態におけるLSI設計支援装置10は、動作合成実行プログラム31に示される手順に対応して、アルゴリズム記述記憶部22に保持されているアルゴリズム記述を読み出す。ソフトウェア/ハードウェア分割部33は、読み出されたアルゴリズム記述の、ハードウェア向けアルゴリズム記述を特定する。ソフトウェア/ハードウェア分割部33は、特定したハードウェア向けアルゴリズム記述をハードウェアアルゴリズム記述記憶部24に保持する。リンク変更部34は、ハードウェアアルゴリズム記述記憶部24に保持されているハードウェア向けアルゴリズム記述と、算術演算ライブラリ26に保持されている演算器とを読み出す。
リンク変更部34は、そのハードウェア向けアルゴリズム記述で使用されている演算に対し、算術演算ライブラリ26に保持されている演算器の使用が可能なように変更を行う。リンク変更部34は変更結果を、リンク変更後記述としてリンク変更アルゴリズム記述記憶部25に保持させる。
動作合成部35は、そのリンク変更アルゴリズム記述記憶部25に保持されているリンク変更後記述と算術演算ライブラリ26の演算器とに基づいて動作合成を行い、RTL記述を生成する。
以下に、具体的なリストを用いて、第2の実施形態の動作について説明を行う。図13は、ハードウェアアルゴリズム記述記憶部24に保持されるハードウェア向けアルゴリズム記述の例を示すリストである。図13に示されるリストは、C++言語で記述された設計対象のアルゴリズムから、ハードウェア部分として切り出された記述の例である。
図14は、第1の実施形態の動作によって生成された浮動小数点の乗算、加算を行う浮動小数点演算器ライブラリである。図14に示されるライブラリは、指数部5ビット、仮数部5ビットの浮動小数点を示している。以下の実施形態において、ハードウェア化する場合の設計仕様が、指数部5ビット、仮数部5ビットという設計仕様である場合を例示して説明を行う。通常、C++言語での浮動小数点は、32ビットあるいは64ビットとして定義されている。上記の設計仕様の場合、そのまま32ビットあるいは64ビットの浮動小数点演算器ライブラリを構成すると、冗長なハードウェアを構成してしまうことになる。
図15は、リンク変更部34によって生成されるリンク変更後記述の例を示すリストである。図15を参照すると、図15を参照すると、そのリストに示されるリンク変更後記述には、図14の浮動小数点演算ライブラリへのリンク宣言部が追加されている。また、リンク変更部34は、図13に示されているハードウェア向けアルゴリズム記述用いられている浮動小数点変数(a、b、c)の演算
x=a×b+c)
が、生成した浮動小数点演算ライブラリ中の浮動小数点の演算となるように、浮動小数点変数(a、b、c)の宣言部分が、図14のリストにおける
float_5_5
と変更する。
これによって、生成されたリンク変更後記述が動作合成部35に渡される。動作合成部35は、そのリンク変更後記述と、算術演算ライブラリ26に登録されている演算器とに対応してRTL記述を生成する。なお、上述の実施形態では、C言語/C++言語などがサポートしている関数のオーバーロード機能を利用している。そのため、変数の宣言部を変更するだけで演算の置き換えが可能となる。仮にオーバーロードをサポートしていない言語でアルゴリズム記述が構成されていた場合、外部からの指示に対応して演算を置き換えることで、本実施形態の動作を実現可能である。
図1は、従来の動作合成の流れを示す流れ図である。 図2は、従来の演算ライブラリの構成を示すテーブルである。 図3は、本願発明のLSI設計支援システムの構成を例示するブロック図である。 図4は、データ記憶部11の構成を例示するブロック図である。 図5は、プログラム記憶部12の構成を例示するブロック図である。 図6は、パラメータと演算器との対応を示すテーブルである。 図7は、第1の実施形態の動作を例示する流れ図である。 図8は、本実施形態における浮動小数点加算ライブラリの構成を例示する図である。 図9は、本実施形態の動作を例示するグラフである。 図10は、SIN(X)と1次近似との差分を2次式で近似するときの動作を例示するグラフである。 図11は、本実施形態における三角関数ライブラリの構成を例示する図である。 図12は、第2の実施形態の動作を例示する流れ図である。 図13は、ハードウェアアルゴリズム記述例である。 図14は、リンク変更部ソース例である。 図15は、リンク変更後記述例である。
符号の説明
10…LSI設計支援装置
1…情報処理装置
2…入力装置
3…表示装置
4…CPU
5…メモリ
6…入出力インターフェース
7…大容量記憶装置
8…バス
11…データ記憶部
12…プログラム記憶部
13…パラメータ
14…実行結果
21…パラメータ記憶部
22…アルゴリズム記述記憶部
23…ソフトウェアアルゴリズム記述記憶部
24…ハードウェアアルゴリズム記述記憶部
25…リンク変更アルゴリズム記述記憶部
26…算術演算ライブラリ
27…RTL記述記憶部
31…動作合成実行プログラム
32…算術演算ライブラリ生成部
33…ソフトウェア/ハードウェア分割部
34…リンク変更部
35…動作合成部
36…検証部
37…パラメータ妥当性検証部
38…浮動小数点ライブラリ生成部
39…三角関数ライブラリ生成部
40…テーブル
41…生成演算
42…パラメータ
43…浮動小数点乗算
44…浮動小数点加算
45…SIN演算
46…COS演算
51…平方根関数ライブラリ生成部
52…指数関数ライブラリ生成部
53…対数関数ライブラリ生成部
54…絶対値関数ライブラリ生成部
101…テーブル

Claims (19)

  1. LSIの設計における動作合成に用いられる演算ライブラリを生成するライブラリ生成プログラムであって、
    (a)入力装置を用いて入力された、生成対象の前記演算ライブラリに対応するパラメータを供給するステップと、
    (b)前記パラメータに応答して、動作合成時に共有化可能な演算器で構成される高級演算器を生成するステップと、
    (c)前記高級演算器を有する前記演算ライブラリを構成するステップ
    をコンピュータに実行させるための
    ライブラリ生成プログラム。
  2. 請求項1に記載のライブラリ生成プログラムにおいて、
    前記(b)ステップは、
    前記高級演算器を構成する前記演算器を、前記動作合成時に、他の演算器と共有可能なように構成するステップ
    を含む
    ライブラリ生成プログラム。
  3. 請求項1に記載のライブラリ生成プログラムにおいて、
    前記(b)ステップは、
    供給された前記パラメータに応答して、前記パラメータの妥当性を検査する妥当性検査ステップ
    を含む
    ライブラリ生成プログラム。
  4. 請求項1に記載のライブラリ生成プログラムにおいて、
    前記高級演算器が実行する演算は、
    前記動作合成時に、前記演算器または前記他の演算器と共有されることのない特定の演算であり、
    前記(b)ステップは、
    前記高級演算器を、前記特定の演算を実行する演算器として構成するステップ
    を含む
    ライブラリ生成プログラム。
  5. 請求項1から4の何れか1項に記載のライブラリ生成プログラムにおいて、
    前記高級演算器は、浮動小数点演算を実行する演算器または三角関数演算を実行する演算器である
    ライブラリ生成プログラム。
  6. LSIの設計を支援するLSI設計支援プログラムであって、
    (a)入力装置を用いて入力されたパラメータに応答して、動作合成時に共有化可能な演算器で構成される高級演算器を有する演算ライブラリを構成するステップと、
    (b)ハードウェア対応アルゴリズム記述を読み出すステップと、
    (c)前記演算ライブラリを読み出すステップと、
    (d)前記ハードウェア対応アルゴリズム記述から、前記高級演算器に対応する高級演算器記述を特定し、前記高級演算器記述を前記演算ライブラリの前記高級演算器に変更するステップ
    をコンピュータに実行させるための
    LSI設計支援プログラム。
  7. 請求項6に記載のLSI設計支援プログラムにおいて、
    前記高級演算器を構成する前記演算器は、前記動作合成時に、他の演算器と共有可能に構成され、
    前記(a)ステップは、
    前記高級演算器を、前記動作合成時に、前記演算器または前記他の演算器と共有されることのない演算を実行する演算器で構成するステップ
    を含み、
    前記(d)ステップは、
    前記高級演算器記述を、前記演算ライブラリの前記高級演算器にリンクさせるため変更を行うステップ
    を含む
    LSI設計支援プログラム。
  8. 請求項6に記載のLSI設計支援プログラムにおいて、さらに、
    (e)前記演算ライブラリの高級演算器に変更されたハードウェ対応アルゴリズム記述と前記演算ライブラリとを読み込んで動作合成を実行し、RTL回路を生成するステップ
    をコンピュータに実行させるための
    LSI設計支援プログラム。
  9. LSIを設計するステップと、
    設計された前記LSIを製造するステップと
    を具備し、
    前記設計するステップは、
    (a)入力装置を用いて入力されたパラメータに応答して、動作合成時に共有化可能な演算器で構成される高級演算器を有する前記演算ライブラリを構成するステップと、
    (b)ハードウェア対応アルゴリズム記述を読み出すステップと、
    (c)前記演算ライブラリを読み出すステップと、
    (d)前記ハードウェア対応アルゴリズム記述から、前記高級演算器に対応する高級演算器記述を特定し、前記高級演算器記述を前記演算ライブラリの前記高級演算器に変更するステップ
    を具備する
    LSI製造方法。
  10. 請求項9に記載のLSI製造方法において、
    前記高級演算器を構成する前記演算器は、前記動作合成時に、他の演算器と共有可能に構成され、
    前記(a)ステップは、
    前記高級演算器を、前記動作合成時に、前記演算器または前記他の演算器と共有されることのない演算を実行する演算器で構成するステップ
    を含み、
    前記(d)ステップは、
    前記高級演算器記述を、前記演算ライブラリの前記高級演算器にリンクさせるため変更を行うステップ
    を含む
    LSI製造方法。
  11. 請求項9または10に記載のLSI製造方法によって製造された
    半導体装置。
  12. 入力装置を用いて入力された、生成対象の演算ライブラリに対応するパラメータを保持するパラメータ記憶部と、
    前記パラメータ記憶部から、前記パラメータを読み出し、読み出した前記パラメータに応答して、動作合成時に共有化可能な演算器で構成される高級演算器を生成する演算ライブラリ生成部と、
    前記演算ライブラリ生成部によって生成された前記高級演算器を保持する演算ライブラリと
    を具備する
    演算ライブラリ生成装置。
  13. 請求項12に記載の演算ライブラリ生成装置において、
    前記演算ライブラリ生成部は、
    前記高級演算器を構成する前記演算器を、前記動作合成時に、他の演算器と共有可能なように構成する
    演算ライブラリ生成装置。
  14. 請求項12に記載の演算ライブラリ生成装置において、
    前記演算ライブラリ生成部は、さらに、
    供給された前記パラメータに応答して、前記パラメータの妥当性を検査する妥当性検査部を含む
    演算ライブラリ生成装置。
  15. 請求項12に記載の演算ライブラリ生成装置において、
    前記高級演算器が実行する演算は、
    前記動作合成時に、前記演算器または前記他の演算器と共有されることのない特定の演算であり、
    前記演算ライブラリ生成部は
    前記高級演算器を、前記特定の演算を実行する演算器として構成する
    演算ライブラリ生成装置。
  16. 請求項12から15の何れか1項に記載の演算ライブラリ生成装置において、
    前記高級演算器は、浮動小数点演算を実行する演算器または三角関数演算を実行する演算器である
    演算ライブラリ生成装置。
  17. 入力装置を用いて入力されたパラメータに応答して、動作合成時に共有化可能な演算器で構成される高級演算器を有する演算ライブラリと、
    ハードウェア対応アルゴリズム記述を保持するアルゴリズム記述記憶部と、
    前記ハードウェア対応アルゴリズム記述から、前記高級演算器に対応する高級演算器記述を特定し、前記高級演算器記述を前記演算ライブラリの前記高級演算器に変更するリンク変更部と
    を具備する
    LSI設計支援装置。
  18. 請求項17に記載のLSI設計支援装置において、
    前記高級演算器が実行する演算は、
    前記演算器または前記他の演算器と共有することのない特定の演算であり、
    前記演算ライブラリ生成部は
    前記高級演算器を、前記特定の演算を実行する演算器として構成し、
    前記リンク変更部は、
    前記高級演算器記述を、前記演算ライブラリの前記高級演算器にリンクさせるため変更を行う
    LSI設計支援装置。
  19. 請求項18に記載のLSI設計支援装置において、さらに、
    前記演算ライブラリの高級演算器に変更されたハードウェ対応アルゴリズム記述と前記演算ライブラリとを読み込んで動作合成を実行し、RTL回路を生成する動作合成部
    を具備するLSI設計支援装置。
JP2006142860A 2006-05-23 2006-05-23 Lsi設計支援装置 Withdrawn JP2007316731A (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2006142860A JP2007316731A (ja) 2006-05-23 2006-05-23 Lsi設計支援装置
US11/802,317 US20070277142A1 (en) 2006-05-23 2007-05-22 LSI design supporting apparatus and LSI design supporting program used for designing and manufacturing LSI

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2006142860A JP2007316731A (ja) 2006-05-23 2006-05-23 Lsi設計支援装置

Publications (1)

Publication Number Publication Date
JP2007316731A true JP2007316731A (ja) 2007-12-06

Family

ID=38750921

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2006142860A Withdrawn JP2007316731A (ja) 2006-05-23 2006-05-23 Lsi設計支援装置

Country Status (2)

Country Link
US (1) US20070277142A1 (ja)
JP (1) JP2007316731A (ja)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010218217A (ja) * 2009-03-17 2010-09-30 Nec Corp 動作記述変換装置、動作記述変換方法、およびプログラム
JP2011039636A (ja) * 2009-08-07 2011-02-24 Nec Corp 動作合成装置、動作合成方法、ならびに、プログラム
JP2011065376A (ja) * 2009-09-16 2011-03-31 Hitachi Information & Communication Engineering Ltd 集積回路設計方法及びプログラム

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7328195B2 (en) * 2001-11-21 2008-02-05 Ftl Systems, Inc. Semi-automatic generation of behavior models continuous value using iterative probing of a device or existing component model
US7131078B1 (en) * 2003-08-21 2006-10-31 Synplicity, Inc. Method and apparatus for circuit design and synthesis

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010218217A (ja) * 2009-03-17 2010-09-30 Nec Corp 動作記述変換装置、動作記述変換方法、およびプログラム
JP2011039636A (ja) * 2009-08-07 2011-02-24 Nec Corp 動作合成装置、動作合成方法、ならびに、プログラム
JP2011065376A (ja) * 2009-09-16 2011-03-31 Hitachi Information & Communication Engineering Ltd 集積回路設計方法及びプログラム

Also Published As

Publication number Publication date
US20070277142A1 (en) 2007-11-29

Similar Documents

Publication Publication Date Title
US10140099B2 (en) Systems and methods for generating code from executable models with floating point data
US8990739B2 (en) Model-based retiming with functional equivalence constraints
US10140399B2 (en) Corner database generator
JP5014920B2 (ja) 回路設計方法、ならびにその方法により製造される集積回路
Ndu et al. CHO: towards a benchmark suite for OpenCL FPGA accelerators
Mahzoon et al. GenMul: Generating architecturally complex multipliers to challenge formal verification tools
US20110137631A1 (en) Simulation method, system and program product
US8347255B2 (en) Equation based retargeting of design layouts
JP2007316731A (ja) Lsi設計支援装置
US20160292064A1 (en) Iterative test generation based on data source analysis
Lee et al. External don’t cares in logic synthesis
JP2005293448A (ja) データ処理装置の開発方法、データプロセッサの開発支援プログラム、設計データの提供方法、及びデータ処理システムの開発方法
JP4870956B2 (ja) 組み込み用プログラム生成方法、組み込み用プログラム開発システム、及び情報テーブル部
Khan et al. Accelerating SpMV multiplication in probabilistic model checkers using GPUs
US20130318487A1 (en) Programmable Circuit Characteristics Analysis
JP2018041301A (ja) Rtl最適化システム及びrtl最適化プログラム
Kayed et al. An optimizing technique for using MATLAB HDL coder
JP6548848B2 (ja) 情報処理装置、情報処理方法及び情報処理プログラム
Virginia et al. An empirical comparison of ANSI-C to VHDL compilers: SPARK, ROCCC and DWARV
JP2006202330A (ja) システムlsiの設計方法及びこれを記憶した記録媒体
Leipnitz et al. Constraint-Aware Multi-Technique Approximate High-Level Synthesis for FPGAs
JP5571928B2 (ja) 集積回路設計方法及びプログラム
Garnaik et al. Reliability enhancement of software programs by minimizing the overflow errors
US12026485B2 (en) Method for generating source code
JP2009223554A (ja) 動作合成装置、動作合成方法、及び、プログラム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20090413

A761 Written withdrawal of application

Free format text: JAPANESE INTERMEDIATE CODE: A761

Effective date: 20090610