(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】6254387
(24)【登録日】2017年12月8日
(45)【発行日】2017年12月27日
(54)【発明の名称】高位合成で作成する新規設計データと既存設計データの接続方法
(51)【国際特許分類】
G06F 17/50 20060101AFI20171218BHJP
H01L 21/82 20060101ALI20171218BHJP
【FI】
G06F17/50 654K
G06F17/50 654M
G06F17/50 654A
H01L21/82 C
【請求項の数】4
【全頁数】11
(21)【出願番号】特願2013-179055(P2013-179055)
(22)【出願日】2013年8月30日
(65)【公開番号】特開2015-49560(P2015-49560A)
(43)【公開日】2015年3月16日
【審査請求日】2016年7月19日
(73)【特許権者】
【識別番号】000233295
【氏名又は名称】株式会社日立情報通信エンジニアリング
(74)【代理人】
【識別番号】100090583
【弁理士】
【氏名又は名称】田中 清
(74)【代理人】
【識別番号】100098110
【弁理士】
【氏名又は名称】村山 みどり
(72)【発明者】
【氏名】遠藤 昌志
(72)【発明者】
【氏名】高橋 徹也
(72)【発明者】
【氏名】丸山 和浩
【審査官】
合田 幸裕
(56)【参考文献】
【文献】
特開2013−003999(JP,A)
【文献】
特開2013−152620(JP,A)
【文献】
特開2008−217071(JP,A)
【文献】
特開2001−249955(JP,A)
【文献】
特開2002−222228(JP,A)
【文献】
特開2002−140379(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 17/50
H01L 21/82
IEEE Xplore
JSTPlus(JDreamIII)
(57)【特許請求の範囲】
【請求項1】
高位合成で作成する新規設計データと既存設計データの接続方法であって、高位合成ツールが、
前記既存設計データとしての既存レジスタトランスファレベル(RTL)のインタフェース回路のプロトコルに基づいて作成された前記既存RTLへの接続用インタフェース記述から前記既存RTLの処理サイクル数を読み取り、
前記既存RTLの処理サイクル数および前記新規設計データとしての新規RTLで決められた処理サイクル数にそれぞれ対応して、前記既存RTLのデータ処理を行うデータパス回路および前記新規RTLのデータ処理を行うデータパス回路を生成し、
前記新規RTLのデータパス回路において、前記既存RTLのインタフェース回路に接続するための前記新規RTLのインタフェース回路を、前記既存RTLへの接続用インタフェース記述に基づいて生成することを特徴とする方法。
【請求項2】
前記既存RTLへの接続用インタフェース記述は、サイクル単位に前記既存RTLのインタフェース回路の入力ポートへの入力データおよび出力ポートからの出力データを指定可能としたことを特徴とする請求項1に記載の方法。
【請求項3】
前記既存RTLへの接続用インタフェース記述は、サイクル単位の順次処理を記述することを特徴とする請求項1または2に記載の方法。
【請求項4】
前記既存RTLへの接続用インタフェース記述は、前記既存RTLのインタフェース回路の入力ポートへの入力データの印加を同一サイクル内で複数記述することを特徴とする請求項1から3のいずれかに記載の方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、半導体集積回路の設計において高位合成で作成する新規設計データと既存設計データの接続方法に関するものである。
【背景技術】
【0002】
近年、半導体集積回路の設計の生産性向上のために、ハードウェア記述のレジスタトランスファレベル(以下、RTLという)設計より高い抽象度のSystemC、C、C++などの高級言語を使用した動作記述で設計を可能とする高位合成ツールが実用化されている。これに関連する技術は例えば特許文献1に記載されている。
【0003】
高位合成ツールを適用する半導体集積回路設計の現状は、新規設計する機能は設計生産性を高めるために高位合成を用い、開発実績のある流用機能は既存のRTLを再利用することで設計効率と品質確保を狙った開発が行われており、半導体集積回路の構成機能全てを新規で作成することは少ない。従って高位合成ツールで生成したRTLと既存RTLを組み合わせた設計となっている。しかし、高位合成ツールで生成したRTLと既存RTLを接続するケースにおいて、接続インタフェース回路仕様が双方で異なることが多く、どちらか一方または両方の接続インタフェース回路仕様を人手で変更し統一することが必要となっている。
【先行技術文献】
【特許文献】
【0004】
【特許文献1】特開2002−140379号公報
【発明の概要】
【発明が解決しようとする課題】
【0005】
大規模な半導体集積回路設計では、設計する機能を階層的に分割し、そのブロック単位で設計を行う階層設計手法が広く適用されている。高位合成ツール利用を前提とした設計として、高位合成による動作記述からのRTL生成の一例を
図1に示す。
【0006】
図1の例では、複数のブロックからなる機能111を有する場合、ブロック単位の機能をそれぞれ動作記述101〜104とし、高位合成ツールによってブロック単位に高位合成を行い、それぞれRTL105〜108を生成する。生成したブロックのRTLにはブロック間を接続するためのインタフェース回路109、110が必要となる。半導体集積回路全体に高位合成設計を適用するケースでは高位合成ツールがインタフェース回路を用意し、これを使ってブロック間接続をする。
【0007】
しかし、実際の半導体集積回路設計においては、新規設計する機能は高位合成ツールを用いてRTLを生成し、流用機能は既存RTLを再利用して混在させることが多い。
図2に既存RTLを使用する場合の一例を示す。ここでは図中の動作記述201に対し既存RTL203を使用する。この場合、高位合成204は使用せず、既存RTL203を使用するが、高位合成で生成した生成RTL202のインタフェース回路205と既存RTL203のインタフェース回路206とでプロトコル仕様が異なることが多く、接続できない。その対応として、
図2下段に示すように、動作記述212も高位合成209は使用せず、RTL207を人手で作成し、既存RTL208のインタフェース回路211に接続できるインタフェース回路210を用意する必要がある。このため、既存RTLの再利用には多大な工数を要していた。
【0008】
図3は、新規設計する機能と再利用する機能が混在した場合のソフトウェア機能のソースコードの一例を示す図である。本例は、全体機能301の中に機能(動作記述作成)302、303、305がある場合において、機能302と305は新規作成し、機能303は内部の一部機能について既存RTL304を再利用するものである。
【0009】
この場合、新規設計の動作記述303から高位合成で生成した新規RTLが既存RTL304と接続されることになるが、既存RTL304のインタフェース回路307は高位合成インタフェース回路306を考慮したものではないため、新規RTLと既存RTL304とではインタフェース回路のプロトコル仕様が合わず接続できない。そのため、新規RTLと既存RTL304とを接続するには、プロトコル仕様をあわせたインタフェース回路を別途人手で作成する必要がある。
【0010】
プロトコル仕様が合わない具体例を
図6の高位合成ツールで生成したRTLの接続用インタフェース回路のプロトコルタイムチャートと、
図10の既存RTLの接続用インタフェース回路のプロトコルタイムチャートとに示す。
図6と
図10を比較すると、
図6のインタフェース信号601と
図10のインタフェース信号1001で信号名、信号種が異なる。また、両者間において、入力フェーズ602と1002との間、および出力フェーズ604と1004との間でサイクル数と波形が異なっていることが分かる。このように新規RTLと既存RTL間のインタフェース回路のプロトコル仕様が合わないため両者は接続できない。
【0011】
図4は、高位合成ツールが生成するRTLの構造の一例を示す図である。本例では、動作記述401から高位合成処理402によりRTL403を生成する。高位合成が生成するRTL構造403を説明すると、図示のようにRTL404は、データ処理を行うデータパス回路406、データパス回路の処理シーケンスを制御する有限ステートマシン(以下、FSMという)回路405、入力インタフェース回路(入力ポート)407および出力インタフェース回路(出力ポート)408を有する。
【0012】
図5は、高位合成ツールを使用した設計フローの一例を示す図である。図において、高位合成514は高位合成ツール処理である。動作記述501は高級言語で記述した演算アルゴリズムである。構造解析502は動作記述をデータの流れと実行順序を表現したグラフに変換する。スケジューリング503は演算器数と演算ステップ数を決める。アロケーション504は変数や演算にレジスタや演算器を割り当てる。データパス回路生成505はデータパス機能のRTLを生成する。FSM回路を生成するFSM生成506はデータパス制御機能のRTLを生成する。インタフェース回路生成507はブロック間インタフェース回路のRTLを生成する。このときインタフェース回路生成用プロトコルライブラリ508に登録してあるインタフェース回路情報を基にブロック間のインタフェース回路を生成する。生成RTL509は高位合成ツール処理の出力である。人手設計510は、既存のRTLと高位合成ツールで作成したRTLとのインタフェース回路の作成を行う。全体回路記述513は、既存RTL512と高位合成ツールで作成したRTL509をインタフェース回路記述511で接続することで完成する。
【0013】
なお、高位合成処理結果判定515は、機能・性能要件を満足できないRTLを生成したと判定した場合、動作記述から見直しが必要となるため動作記述501に戻り上記ステップを繰り返す。高位合成ツールを使用した設計フローはブロック間接続の対応として、インタフェース回路生成用プロトコルライブラリに登録されている接続方法を前提としており、既存RTLが多数存在する現状においては、再利用する既存RTLのインタフェース回路をインタフェース回路生成用ライブラリ508に登録されるインタフェース仕様に整合する様に人手にて対応する必要がある。
【0014】
したがって本発明の目的は、人手を介することなくインタフェース回路仕様を整合させることができる、高位合成で作成する新規設計データと既存設計データの接続方法を提供することにある。
【課題を解決するための手段】
【0015】
本発明は、上記目的を達成するため以下のような高位合成で作成する新規設計データと既存設計データの接続方法を提供する。
(1)高位合成で作成する新規設計データと既存設計データの接続方法であって、
前記既存設計データとしての既存レジスタトランスファレベル(RTL)のインタフェース回路のプロトコルに基づいて前記既存RTLへの接続用インタフェース記述を作成し、
前記既存RTLへの接続用インタフェース記述から前記既存RTLの処理サイクル数を読み取り、
前記既存RTLの処理サイクル数および前記新規設計データとしての新規RTLで決められた処理サイクル数にそれぞれ対応して、前記既存RTLのデータ処理を行うデータパス回路および前記新規RTLのデータ処理を行うデータパス回路を生成し、
前記新規RTLのデータパス回路において、前記既存RTLのインタフェース回路に接続するための前記新規RTLのインタフェース回路を、前記既存RTLへの接続用インタフェース記述に基づいて生成することを特徴とする方法。
(2)前記既存RTLへの接続用インタフェース記述は、サイクル単位に前記既存RTLのインタフェース回路の入力ポートへの入力データおよび出力ポートからの出力データを指定可能としたことを特徴とする上記(1)に記載の方法。
(3)前記既存RTLへの接続用インタフェース記述は、サイクル単位の順次処理を記述することを特徴とする上記(1)または(2)に記載の方法。
(4)前記既存RTLへの接続用インタフェース記述は、前記既存RTLのインタフェース回路の入力ポートへの入力データの印加を同一サイクル内で複数記述することを特徴とする上記(1)から(3)のいずれかに記載の方法。
【発明の効果】
【0016】
本発明によれば、人手を介することなくインタフェース回路仕様を整合させることができる、高位合成で作成する新規設計データと既存設計データの接続方法を提供することができる。これにより高位合成ツール利用における半導体集積回路設計時に既存RTLの一部または全てを使用することが容易に可能となり、設計生産性を向上させる効果がある。
本発明は、既存RTLのインタフェース回路仕様をパラメタライズ可能なインタフェース情報コマンドで高位合成ツールに入力し、既存RTLと同じインタフェース回路仕様のRTLを生成可能とする。このインタフェース情報コマンドは、インタフェース回路の信号名、信号種、サイクルと波形をサイクル毎に定義する関数イメージのコマンドであり、多種多様なインタフェース回路仕様を高位合成の入力情報として与えることができる。このインタフェース情報コマンドを使用し、プロトコルライブラリの参照、インタフェース回路選択のステップに加えて、既存RTLの処理サイクルとプロトコルに対応できるインタフェース情報設定機能と、RTLのインタフェース情報読み込み機能と、既存RTLのインタフェース情報からインタフェース回路と、FSM回路を生成することができる。
【図面の簡単な説明】
【0017】
【
図1】高位合成による動作記述からのRTL生成の一例を示す図である。
【
図2】高位合成による動作記述からのRTL生成と既存RTL使用の一例を示す図である。
【
図3】高位合成ツールの入力となる動作記述の一例を示す図である。
【
図4】高位合成ツールが生成するRTLの構造の一例を示す図である。
【
図5】高位合成ツールを使用した設計フローの一例を示す図である。
【
図6】高位合成ツールで生成したRTL接続用インタフェース回路のプロトコルタイムチャートの一例である。
【
図7】本発明に係る既存RTL接続手法を適用した高位合成フローの一例を示す図である。
【
図8】既存RTL接続を持つ動作記述例を示す図である。
【
図9】
図8の既存RTL接続を持つ動作記述例と既存RTLの対応関係の一例を示す図である
【
図10】ブロック間接続用インタフェース回路のプロトコルタイムチャートの一例である。
【
図11】
図10に対する既存RTLへの接続用インタフェース記述の一例を示す図である。
【
図12】
図8で示すFunc2()を高位合成ツールで生成したRTLの回路構成の一例を示す図である。
【
図13】
図12に示すFunc2の回路に対する高位合成で生成したRTLと既存RTLのインタフェースプロトコルのタイムチャートの一例を示す図である。
【発明を実施するための形態】
【0018】
以下、本発明の好適な実施形態を説明する。
図7は、本発明に係る既存RTL接続手法を適用した高位合成フローの一例を示す図である。本フローは、既存RTL記述を再利用する際に、既存RTLのインタフェース回路プロトコル仕様を考慮し、高位合成ツール処理における新規機能部のRTL生成を可能とするものである。
【0019】
まず、動作記述と既存RTLとのインタフェース記述701は、高級言語で記述した演算、接続情報、および既存RTLとのインタフェース定義を持つ。高位合成715は高位合成ツール処理である。構造解析703は動作記述をデータの流れと実行順序を表現したグラフに変換する。スケジューリング704は演算器数と演算ステップ数を決める。アロケーション705は変数や演算にレジスタや演算器を割り当てる。データパス回路生成706はデータパス機能のRTLを生成する。FSM生成707は、既存RTLへの接続に対応したインタフェース回路生成用既存ブロック接続用プロトコル仕様定義702に書かれているステートシーケンス情報を基にデータパス制御を行うFSM回路のRTLを生成する。既存RTLに対応する既存ブロック対応インタフェース回路生成708はブロック間インタフェース回路のRTLを生成する。ここでは、インタフェース回路生成用既存ブロック接続用プロトコル仕様定義702に書かれているインタフェース回路生成用既存ブロック接続用インタフェース記述を基にインタフェース回路を生成する。これにより、生成RTL711とインタフェース回路RTL712が出力できる。このRTL記述は、既存RTL713とインタフェース回路のプロトコル仕様が合っており接続可能となる。
【0020】
なお、高位合成処理結果判定709は、機能・性能要件を満足できないRTLを生成したと判定した場合、動作記述から見直しが必要となるため、動作記述と既存RTLとのインタフェース記述701に戻り上記ステップを繰り返す。
【0021】
図8は、既存RTL接続を持つ動作記述例を示す図である。動作記述801は、既存RTL部の読み込みを持つ動作記述である。動作記述802は、既存RTL部の送受信データのみ指定して転送サイクル情報は接続用インタフェース記述内部に隠蔽した動作記述である。この例では、送信データとして符号803で示すwr_dt_buf_o[i]があり、受信データとして符号804で示すresult[i]がある。
【0022】
図9は、
図8の既存RTL接続を持つ動作記述例と既存RTLの対応関係の一例を示す図である。符号901は既存RTL接続を持つ動作記述例である。符号902の動作記述Func2内にある符号903のrtl_calc動作記述についてRTL時に既存RTLを使用する場合、符号902の動作記述Func2を動作合成で生成したRTLは、符号904の既存RTLと接続できるようにRTLを生成する必要がある。送信データ部分905は既存RTLの入力ポート906に接続でき、受信データ部分907は既存RTLの出力ポート908に接続できるインタフェース回路を生成する必要がある。
【0023】
図10は、ブロック間接続用インタフェース回路のプロトコルタイムチャートの一例である。
図10に示すように、
図9の入力ポート906と出力ポート908にあたるインタフェース信号1001として、CLK、CMD、VALID、DATAIN_EN、DATAOUT_EN、DATAIN、DATAOUTがある。フェーズ1002では、ポートCMDがHighレベル信号で且つDATAIN_ENがHighレベル信号のとき、ポートDATAINに入力データが印加される。フェーズ1003では、演算処理(3サイクル)が行われる。フェーズ1004では、ポートVALIDがHighレベル信号で且つDATAOUT_ENがHighレベル信号の条件のとき、DATAOUTに出力データを出力する。
【0024】
図11は、
図10に対する既存RTLへの接続用インタフェース記述の一例を示す図である。この既存RTLへの接続用インタフェース記述は、サイクル単位に既存RTLのインタフェース回路の入力ポートへの入力データおよび出力ポートからの出力データを指定でき、且つサイクル単位の順次処理を記述する。また、既存RTLのインタフェース回路の入力ポートへの入力データの印加を同一サイクル内で複数記述することで並列処理を表現できる。
【0025】
図11において、符号1101および1102は入力データが印加されるフェーズを示す(
図10のフェーズ1002に対応)。符号1101では、ポートCMD=1(CMDがHighレベル信号)、ポートDATAIN_EN=0(DATAIN_ENがLowレベル信号)、ポートVALID=0(VALIDがLowレベル信号)である。符号1102では、ポートCMD=1(CMDがHighレベル信号)、ポートDATAIN_EN=1(DATAIN_ENがHighレベル信号)、ポートVALID=0(VALIDがLowレベル信号)の条件のとき、ポートDATAINに入力データが印加されることを定義する。符号1103は、演算処理であり、ここではCMD=0、VALID=0、DATAIN_EN=0、DATAOUT_EN=0を3行定義し、3サイクルであることを定義している(
図10のフェーズ1003に対応)。符号1104では、ポートCMD=0(CMDがLowレベル信号)、ポートDATAOUT_EN=1(DATAOUT_ENがHighレベル信号)、ポートVALID=1(VALIDがHighレベル信号)の条件のとき、DATAOUTに演算結果であるdata_outを出力されることを定義している(
図10のフェーズ1004に対応)。このように既存RTLのデータ入力タイミング、演算レイテンシ、データ出力タイミングなどを指定する。既存RTLの接続用インタフェース回路に様々なケースがあったとしても
図11に示す様にパラメタライズされた既存RTLへの接続用インタフェース記述とすることで、様々なインタフェースプロトコルへの対応が可能となる。
【0026】
図12は、
図8で示すFunc2()を高位合成ツールで生成したRTLの回路構成の一例を示す図である。符号1201はFunc2()を高位合成ツールでRTLへ展開した回路全体である。この回路1201は、その構成要素として、FSM回路1202、データパス回路1203、およびFSM回路からデータパス回路への制御信号1200を備える。データパス回路1203は、高位合成ツールで生成したFunc2のデータパス回路RTL1204と、rtl_calcのデータパス回路既存RTL1205とを備える。Func2のデータパス回路RTL1204のインタフェース回路1211、1214は、rtl_calcのデータパス回路既存RTL1205のインタフェース回路1212、1213とそれぞれ接続される。
【0027】
ここで、FSM回路生成1202への対応について説明する。本発明によるフローでは、
図11に記載の既存RTLへの接続用インタフェース記述(RTL接続用インタフェースに定義したプロトコル仕様情報)から演算処理レイテンシ情報を読み取ることによりFunc2のデータパス回路RTL1204と、rtl_calcのデータパス回路既存RTL1205の全体演算ステップを制御するFSM回路を生成できる。ここでは、
図11に記載の既存RTLへの接続用インタフェース記述が符号1101〜1104で示す6行で定義されることで、
図12の既存RTL1205のレイテンシ1209は6サイクルであることが読み取れる。また、Func2のレイテンシ1208、1210は高位合成自身が決めてくるが、仮にレイテンシ1208が2サイクルで、レイテンシ1210も2サイクルとした場合、既存RTL1209のレイテンシ6サイクルと合わせて全体で10サイクルのデータパス回路となる。よって、FSM回路1202は10サイクルのステートシーケンスを制御する回路として生成できる。これによりFSM回路を含めデータパス回路全体のデータパスを生成できる。
【0028】
図13は、
図12に示すFunc2の回路に対する高位合成で生成したRTLと既存RTLのインタフェースプロトコルのタイムチャートの一例を示す図である。本例では、インタフェース信号1301として、CLK、Func2 CMD、Func2 VALID、Func2 DATAIN_EN、rtl_calc DATAOUT_EN、rtl_calc VALID、rtl_calc DATAIN、rtl_calc DATAOUT、Func2 BUSY、Func2 VALIDを有する。
【0029】
フェーズ1302は2サイクルのレイテンシ1305(Func2)であり、フェーズ1303は6サイクルのレイテンシ1306(rtl_calc)であり、そしてフェーズ1304は2サイクルのレイテンシ1307(Func2)であり、合計で10サイクルである。ここで、フェーズ1302では、CMD=1且つDATAIN_EN=1の条件により既存RTL部のポートDATAINに入力データが印加する。次にフェーズ1303では、DATAINの入力データにおける既存RTL部の演算処理を行う。フェーズ1304では、既存RTLのポートVALID=1且つDATAOUT_EN=1の条件のとき、DATAOUTに出力データを出力する。このようにして、Func2のインタフェース回路と既存RTLのインタフェース回路とが接続可能となり、高位合成で作成する新規RTLと既存RTLが接続される。
【0030】
以上のように本発明は、高位合成ツール利用の設計フローにおいて、プロトコルライブラリを参照して、インタフェース回路を選択するステップに加えて、既存RTLの処理サイクルとプロトコルに対応できるパラメタライズ可能なインタフェース情報の設定機能と、RTLのインタフェース情報の読み込み機能と、既存RTLのインタフェース情報からインタフェース回路を生成する。また、高位合成ツール利用の設計フローにおいて、プロトコルライブラリを参照して、インタフェース回路を選択するステップに加えて、既存RTLの処理サイクルとプロトコルに対応できるパラメタライズ可能なインタフェース情報の設定機能と、RTLのインタフェース情報の読み込み機能と、既存RTLのインタフェース情報からインタフェース回路を生成するインタフェース回路生成の指示をパラメタライズする。さらに、高位合成ツール利用の設計フローにおいて、プロトコルライブラリを参照して、インタフェース回路を選択するステップに加えて、既存RTLの処理サイクルとプロトコルに対応できるパラメタライズ可能なインタフェース情報により既存RTLのレイテンシをFSM回路のシーケンスへフィードバックする。
【符号の説明】
【0031】
1200 制御信号
1201 高位合成ツールでRTLへ展開した回路全体
1202 FSM回路
1203 データパス回路
1204 Func2のデータパス回路RTL
1205 rtl_calcのデータパス回路既存RTL
1208、1210 Func2のレイテンシ
1209 既存RTLのレイテンシ
1211−1214 インタフェース回路