JP5571928B2 - 集積回路設計方法及びプログラム - Google Patents

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

Info

Publication number
JP5571928B2
JP5571928B2 JP2009214876A JP2009214876A JP5571928B2 JP 5571928 B2 JP5571928 B2 JP 5571928B2 JP 2009214876 A JP2009214876 A JP 2009214876A JP 2009214876 A JP2009214876 A JP 2009214876A JP 5571928 B2 JP5571928 B2 JP 5571928B2
Authority
JP
Japan
Prior art keywords
description
overload
procedure
creating
created
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.)
Active
Application number
JP2009214876A
Other languages
English (en)
Other versions
JP2011065376A (ja
Inventor
司 井上
徹也 高橋
和浩 丸山
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.)
Hitachi Information and Telecommunication Engineering Ltd
Original Assignee
Hitachi Information and Telecommunication Engineering Ltd
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 Hitachi Information and Telecommunication Engineering Ltd filed Critical Hitachi Information and Telecommunication Engineering Ltd
Priority to JP2009214876A priority Critical patent/JP5571928B2/ja
Publication of JP2011065376A publication Critical patent/JP2011065376A/ja
Application granted granted Critical
Publication of JP5571928B2 publication Critical patent/JP5571928B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Design And Manufacture Of Integrated Circuits (AREA)

Description

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

Claims (4)

  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記載のプログラム。
JP2009214876A 2009-09-16 2009-09-16 集積回路設計方法及びプログラム Active JP5571928B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2009214876A JP5571928B2 (ja) 2009-09-16 2009-09-16 集積回路設計方法及びプログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2009214876A JP5571928B2 (ja) 2009-09-16 2009-09-16 集積回路設計方法及びプログラム

Publications (2)

Publication Number Publication Date
JP2011065376A JP2011065376A (ja) 2011-03-31
JP5571928B2 true JP5571928B2 (ja) 2014-08-13

Family

ID=43951559

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2009214876A Active JP5571928B2 (ja) 2009-09-16 2009-09-16 集積回路設計方法及びプログラム

Country Status (1)

Country Link
JP (1) JP5571928B2 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9075945B1 (en) * 2014-06-27 2015-07-07 Google Inc. Method for implementing efficient entropy decoder by using high level synthesis

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005284577A (ja) * 2004-03-29 2005-10-13 Matsushita Electric Ind Co Ltd コンパイラ
JP2007316731A (ja) * 2006-05-23 2007-12-06 Nec Electronics Corp Lsi設計支援装置

Also Published As

Publication number Publication date
JP2011065376A (ja) 2011-03-31

Similar Documents

Publication Publication Date Title
US8141011B1 (en) Hardware description language code generation from a state diagram
US6637013B1 (en) Method and system for automating design rule check error correction in a CAD environment
WO2011148891A1 (ja) システムモデルからの静的なフォルトツリー解析のシステムと方法
US9026978B1 (en) Reverse interface logic model for optimizing physical hierarchy under full chip constraint
Ghiasi et al. An optimal algorithm for minimizing run-time reconfiguration delay
US20070168902A1 (en) Method for high-level synthesis of semiconductor integrated circuit
US20090164193A1 (en) Method and System for Verifying Electronic Designs Having Software Components
JP2013152620A (ja) 高位合成装置,高位合成方法,高位合成プログラム,集積回路の設計方法
Barbosa et al. Flexible proof production in an industrial-strength SMT solver
US20080208554A1 (en) Simulator development system and simulator development method
US20110231178A1 (en) Modeling and generating computer software product line variants
JP2009157440A (ja) 高位合成装置、高位合成システム、及び高位合成方法
JP5571928B2 (ja) 集積回路設計方法及びプログラム
JPH05101141A (ja) 高位合成装置
JP2022536648A (ja) 平坦化されたネットリストからの挙動設計回復
Stürmer et al. Experiences with model and autocode reviews in model-based software development
JP4870956B2 (ja) 組み込み用プログラム生成方法、組み込み用プログラム開発システム、及び情報テーブル部
Hyde The fallacy of premature optimization
JPH1031693A (ja) 専用アプリケーション・サブシステムの合成方法
JP2006202330A (ja) システムlsiの設計方法及びこれを記憶した記録媒体
JP2018041301A (ja) Rtl最適化システム及びrtl最適化プログラム
US20070277142A1 (en) LSI design supporting apparatus and LSI design supporting program used for designing and manufacturing LSI
Rabozzi Caos: Cad as an adaptive open-platform service for high performance reconfigurable systems
US10929177B2 (en) Managing resources for multiple trial distributed processing tasks
Wille et al. Generating and checking control logic in the hdl-based design of reversible circuits

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20120823

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20130415

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20130423

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20130621

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20130730

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20131023

A911 Transfer to examiner for re-examination before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20131031

A912 Re-examination (zenchi) completed and case transferred to appeal board

Free format text: JAPANESE INTERMEDIATE CODE: A912

Effective date: 20131213

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20140627

R150 Certificate of patent or registration of utility model

Ref document number: 5571928

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250