JP2007193529A - 半導体集積回路の高位合成方法 - Google Patents
半導体集積回路の高位合成方法 Download PDFInfo
- Publication number
- JP2007193529A JP2007193529A JP2006010387A JP2006010387A JP2007193529A JP 2007193529 A JP2007193529 A JP 2007193529A JP 2006010387 A JP2006010387 A JP 2006010387A JP 2006010387 A JP2006010387 A JP 2006010387A JP 2007193529 A JP2007193529 A JP 2007193529A
- Authority
- JP
- Japan
- Prior art keywords
- semiconductor integrated
- integrated circuit
- synthesis method
- level synthesis
- circuit
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F30/00—Computer-aided design [CAD]
- G06F30/30—Circuit design
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
【課題】回路記述流出時の不正利用と設計情報不正解読のリスクを低減するために、設計情報を秘匿化(設計情報隠蔽と回路記述難読化)した回路記述を生成する半導体集積回路の高位合成方法を提供する。
【解決手段】ハードウェアの動作レベル回路記述を解析して得られた中間表現であるCDFG(Control Data Flow Graph)に対して、設計情報を秘匿化するため、スケジューリング前又はスケジューリング後に、演算の追加によるCDFGの変形処理を施す。ハードウェアリソースのアロケーション処理済みのCDFGに対して、ハードウェアリソースの割り付け変更処理を施してもよい。
【選択図】図1
【解決手段】ハードウェアの動作レベル回路記述を解析して得られた中間表現であるCDFG(Control Data Flow Graph)に対して、設計情報を秘匿化するため、スケジューリング前又はスケジューリング後に、演算の追加によるCDFGの変形処理を施す。ハードウェアリソースのアロケーション処理済みのCDFGに対して、ハードウェアリソースの割り付け変更処理を施してもよい。
【選択図】図1
Description
本発明は、半導体集積回路の高位設計方法において、回路記述中の設計情報を秘匿化する方法に関するものである。
半導体微細化技術及び情報技術の進展に伴い、1つの集積回路に搭載される情報処理機能が格段に向上した。こうした集積回路は、一般に大規模かつ複雑であるため、人手だけによる設計は非現実的である。近年では、機能設計、論理設計、物理設計等、集積回路設計の作業工程が分割され、更に、これらの作業工程は、EDA(Electronic Design Automation)と呼ばれるソフトウェア環境によって支援されている。特に、機能設計においては設計が抽象化され、一般にHDL(Hardware Description Language:ハードウェア記述言語)と呼ばれるハードウェア設計用のプログラミング言語を用いてRTL(Register Transfer Level:レジスタ転送レベル)の回路記述を作成することによって、集積回路の機能を設計することができる。更に、最近では、より抽象性を高めた高位設計において、動作レベルと呼ばれる高位の回路記述からRTLの回路記述を自動生成する高位合成技術が利用されるようになってきた。
しかしながら、プログラミング言語による高位レベル又は機能レベルのハードウェア設計は、設計を効率化させる反面、設計が抽象化されているために、設計データが流出した際に、第三者によって容易に設計データを解読されてしまうという欠点がある。集積回路の開発工程は、設計から製造まで多岐に分業されているため、電子メールや記録媒体を用いて動作レベル或いはRTLの設計データ(回路記述)を受け渡しすることがある。このため、設計データが流出した際の設計情報の漏洩や不正利用のリスクを低減するために、設計データに対して設計情報を設計者以外から守るための処置を施すことがある。
回路記述において変数等の回路構造を示す名称を、回路構造とは関係のない別の名称に自動変換する方法が知られている(特許文献1及び2参照)。この方法によると、例えば、カウンタを実現する変数名CNTをN1等、カウンタを推測させない全く別の名称に変換する。変数名が変更された回路記述は、設計者以外が容易に解読することはできないため、不正利用のリスクを低減することができる。また、市販されている高位合成ツールは、出力するRTL回路記述の可読性を上げるために、動作レベル回路記述の変数名等をRTL回路記述のワイヤ名やレジスタ名に継承することがある。したがって、動作レベルの回路記述において名称を変更することで、高位合成後のRTL回路記述の不正利用のリスクを低減することができる。
特開2002−163312号公報
特開2005−235848号公報
しかしながら、前述の従来方法では、回路構造や回路動作から容易に設計情報が解読されてしまう危険性がある。例えば、シミュレーション等による回路動作の解析によって回路記述が解読されてしまう。
そこで、本発明の目的は、回路記述流出時の不正利用と設計情報不正解読のリスクを、より効果的に低減することにある。
上記課題を解決するために、本発明では、設計情報の隠蔽や解読の混乱を招くダミー(冗長)動作の挿入を行うこととした。
具体的に説明すると、本発明に係る半導体集積回路の高位合成方法は、ハードウェアの動作レベル回路記述を解析して、記述中に現れた演算とデータとの流れを表すDFG(Data Flow Graph)と演算の実行順序の制御の流れを表すCFG(Control Flow Graph)とから構成されるCDFG(Control Data Flow Graph)を生成する中間表現生成工程と、所望のハードウェア回路の設計制約条件と使用可能なハードウェアリソースの情報とをもとに、中間表現生成工程において生成されたCDFGの各ノードの実行順序をクロックに同期した時間(ステート)に割り付けるスケジューリング工程と、このスケジューリング工程においてスケジュールされたCDFGの各ノードに処理を実現するハードウェアリソースを割り付けるアロケーション工程と、中間表現生成工程によって生成されたCDFGに対して、或いはスケジューリング工程又はアロケーション工程における処理が完了したCDFGに対して、設計情報を秘匿化(設計情報隠匿、或いは回路記述難読化)するために、演算(ノード)の追加によるCDFGの変形又は回路構造変更又は一部ハードウェアリソースの割り当て変更を施す回路秘匿化工程と、最終的な結果として動作レベル或いはRTLの回路記述と秘匿化解読情報とを別々に出力する回路記述出力工程とを包含することを特徴とする。
なお、本発明の高位合成方法は、追加する演算の種類と方法をデータベースとして与えてもよい。
本発明の高位合成方法によれば、動作レベルの回路記述を解析して得られたCDFGに対して、設計情報を秘匿化(設計情報隠匿、或いは回路記述難読化)するための冗長演算を追加することにより、回路記述が流出した際に不正利用されたり、解読されたりするリスクを低減できる。
以下に、本発明の実施形態について、図面を用いて説明する。なお、本発明は以下の実施形態に何等限定されるものではなく、要旨を逸脱しない範囲においては種々なる形態で実施し得ることは、言うまでもない。
《第1の実施形態》
図1は、第1の実施形態に係る高位合成方法を示すフローチャートである。図1に示す高位合成方法では、ハードウェアの動作レベル回路記述に対して、中間表現生成工程S01、スケジューリング工程S02、回路秘匿化工程S11、アロケーション工程S03、回路記述出力工程S04が実行される。まず、中間表現生成工程S01において、ハードウェアの動作レベル回路記述を解析して、記述中に現れた演算とデータとの流れを表すDFGと、演算の実行順序の制御の流れを表すCFGとから構成されるCDFGを生成する。そして、スケジューリング工程S02において、所望のハードウェアを合成するための設計制約条件と使用可能なハードウェアリソースの情報とをもとに、中間表現生成工程S01において生成されたDFGの各ノードの実行順序をクロックに同期した時間(ステート)に割り付ける。次に、回路秘匿化工程S11では、スケジューリング工程S02で生成されたスケジューリング済みDFGの各ノードのライフタイムを解析して、処理サイクルが増加しない範囲において、DFGの実行結果に影響を及ぼさないようにDFGを変形する。DFGの変形は、具体的には、ノードの出力値の一致性を保証する冗長な演算を追加することにより行う。追加する演算の種類と方法は、例えば、データベースとして登録されたものから選択する。次に、アロケーション工程S03において、回路秘匿化工程S11で変形されたDFGの各ノードに処理を実現するハードウェアリソースを割り付ける。回路記述出力工程S04では、スケジューリング工程S02、回路秘匿化工程S11、アロケーション工程S03の処理結果に基づいて、動作レベル又はRTLの回路記述と秘匿化内容を解読するための情報とを出力する。
図1は、第1の実施形態に係る高位合成方法を示すフローチャートである。図1に示す高位合成方法では、ハードウェアの動作レベル回路記述に対して、中間表現生成工程S01、スケジューリング工程S02、回路秘匿化工程S11、アロケーション工程S03、回路記述出力工程S04が実行される。まず、中間表現生成工程S01において、ハードウェアの動作レベル回路記述を解析して、記述中に現れた演算とデータとの流れを表すDFGと、演算の実行順序の制御の流れを表すCFGとから構成されるCDFGを生成する。そして、スケジューリング工程S02において、所望のハードウェアを合成するための設計制約条件と使用可能なハードウェアリソースの情報とをもとに、中間表現生成工程S01において生成されたDFGの各ノードの実行順序をクロックに同期した時間(ステート)に割り付ける。次に、回路秘匿化工程S11では、スケジューリング工程S02で生成されたスケジューリング済みDFGの各ノードのライフタイムを解析して、処理サイクルが増加しない範囲において、DFGの実行結果に影響を及ぼさないようにDFGを変形する。DFGの変形は、具体的には、ノードの出力値の一致性を保証する冗長な演算を追加することにより行う。追加する演算の種類と方法は、例えば、データベースとして登録されたものから選択する。次に、アロケーション工程S03において、回路秘匿化工程S11で変形されたDFGの各ノードに処理を実現するハードウェアリソースを割り付ける。回路記述出力工程S04では、スケジューリング工程S02、回路秘匿化工程S11、アロケーション工程S03の処理結果に基づいて、動作レベル又はRTLの回路記述と秘匿化内容を解読するための情報とを出力する。
以下、
y=(((a+b)+c)+(d+e))+(f+g)
という計算式の図2に示す動作レベル回路記述BD1(秘匿化処理前:初期状態)を用いて、本実施形態の動作の一例を示す。
y=(((a+b)+c)+(d+e))+(f+g)
という計算式の図2に示す動作レベル回路記述BD1(秘匿化処理前:初期状態)を用いて、本実施形態の動作の一例を示す。
まず、中間表現生成工程S01では、動作レベル回路記述BD1を解析して、変数、演算をノードで、データの流れをエッジでそれぞれ表したDFGと、DFGをノードで、DFGの実行順序の制御をエッジでそれぞれ表したCFGとから構成されるCDFGを生成する。BD1のCDFGを図3に示す。BD1には、処理の実行順序を制御する条件記述(C/C++等のプログラミング言語では、一般にIF文、FOR文等で表現される。)が存在しないため、CFGのノードは1つのみである。また、DFGの重複する演算(ノード)には、+1、+2等、識別番号を記載している。
次に、スケジューリング工程S02において、DFGの各ノードをステップと呼ばれるクロックサイクルに同期した時間に割り付けて実行順序を決定する。図4は、BD1のスケジューリング済みのDFGである。DFGの各ノードは、S0,S1,S2,S3のいずれかのステートに割り付けられている。
回路秘匿化工程S11では、処理サイクル数が増加しない範囲で、かつ、元の動作レベル回路記述BD1の実行結果に影響を与えないような演算を追加する。そのため、まずスケジューリング済みのDFGの各ノードの出力値のライフタイムを解析する。ライフタイムとは、ノードの出力値が保持されるステップ数のことである。図4のDFGでは、ノード+1、+2、+3、+4のライフタイムは1であり、+5のライフタイムは3であり、+6のライフタイムは4である。ライフタイムが2以上のノードの出力値、例えばノード+6の出力値に対して、当該ノード+6の出力値を保証する新たな演算を施す。新たに追加する演算は、1サイクルで実行可能なハードウェアリソースを割り付けられる演算のみとする。これにより、追加演算によって回路性能が劣化する(処理サイクルが増加する)ことを防ぐ。また、出力値を保証する演算として、データベースから任意の演算を選択してもよいが、ここでは、DFG上に存在する演算で、かつ演算を追加するステップ以外に存在する演算を選択するという選定基準を設けて、ノード+6の出力値とゼロとの加算を追加する。図5は、ノード+6の出力値とゼロとの加算を追加した後のDFGである。加算ノード+7と定数ノード0とが新たに追加されている。この場合、加算ノード+7を追加するステップ以外では、DFG上に5個の加算ノード+1、+3、+4、+5、+6が存在するため、以降で実施するアロケーション工程S03において、これらの加算ノードに割り付けられるハードウェアリソースを共有できる可能性がある。共有された場合、ハードウェアリソースの使用数削減によって、追加演算による回路面積の増加を抑制することができる。
更に、加算ノード+7の入力となる定数ノード0を入力ポートpに割り付ける。定数ノードを入力ポートに割り付ける1つの理由は、追加演算が冗長であるため、高位合成中の最適化処理、或いは論理合成中の最適化処理において、冗長性を削除されることを防ぐためである。この追加演算は、最終的に出力する回路記述を難読化することを目的とする。したがって、出力回路記述に対して確実に反映する必要がある。もう1つの理由は、回路記述を正しく動作させるために必要な情報を隠蔽するためである。定数値を入力ポートとして隠蔽することにより、回路記述が流出した場合でも、入力ポートに正しい値を与えない限り、回路記述を正しく利用することができず、流出時のリスクを低減することができる。
次に、アロケーション工程S03において、回路秘匿化工程S11で変形されたDFGの各ノードに対して処理を実行するハードウェアリソースを割り付ける。図6は、ハードウェアリソース割り付け後のDFGである。追加ノード+7に割り付けられた加算リソースAdd2は、加算ノード+5と共有されているので、ハードウェアリソースの増加を抑制できている。
最後に、回路記述出力工程S04において、秘匿化処理を反映した回路記述と機密内容を解読するための秘匿化解読情報とを出力する。回路設計者は、回路記述と秘匿化解読情報とを別々に管理し、正規の回路記述使用者に対して、別々のルート(電子メール、記録媒体等)でこれらを提供することにより、回路記述流出時に設計情報が解読されるリスクを低減することができる。
図7は、動作レベル回路記述BD1に対して秘匿化処理を施す高位合成により得られたRTL回路記述の一例である。一方、図8は、秘匿化処理を施さない、従来の高位合成により得られたRTL回路記述である。なお、両図のRTL回路記述では、ワイヤ及びレジスタの宣言については省略している。両図のRTL回路記述には、BD1の変数名をワイヤ名に継承しているため、秘匿化処理を施さなかった図8のRTL回路記述には、BD1の部分式「d+e」に相当する記述が10行目にそのままの形で残っている。一方、図7のRTL回路記述には、「d+e」に相当する記述は、BD1とは異なる形(10行目から12行目)で実現されている。したがって、秘匿化処理が施された図7のRTL回路記述からBD1の計算式を解読することは、図8のRTL回路記述に比べて困難である。また、図7のRTL回路記述は、入力ポートpに対してゼロを与えない限り、BD1と同じ結果を得ることができず、RTL回路記述が流出した際も、不正に回路記述が利用されるリスクを低減できる。
秘匿化解読情報は、例えば、追加演算の個数、追加演算の種類、回路記述中に追加演算が存在する行数、追加演算に入力する値(追加入力ポートに与える値)等である。追加演算に入力する値は、秘匿化処理が施された回路記述の上位階層記述として与えてもよい。図9は、図7のRTL回路記述の上位階層にあたる回路記述である。図7の追加入力ポートpがゼロに固定されている。上位階層記述を得ることにより、回路記述使用者は、秘匿化された情報を解読できる。
なお、出力する回路記述としては、RTL回路記述に限らず、動作レベル回路記述を選択してもよい。図10は、秘匿化処理が施された動作レベル回路記述BD2である。BD2では、3行目の右辺に変数gとBD1に存在しなかった変数pとの演算が追加されている。BD2から元のBD1を導き出すことは、設計情報等、必要な情報を知らない限り難しいことである。また、変数pにゼロを与えない限り、図2のBD1と同じ結果は得られない。これによって、動作レベル回路記述の設計情報が解読されるリスク、不正利用されるリスクを低減できる。
また、回路記述には、追加演算前後の結果が常に同じ結果であることを確認するためのアサーション記述を追加してもよい。多数の入力ポートが追加された場合、これら全てに正しい値がセットされたかを確認することは手間がかかる。したがって、回路設計者がデバッグの際に、追加入力ポートの値設定ミスがあった場合、自動でミスを検出することができるので、設計情報の秘匿化によって起こり得る問題の解析工数発生のリスクを低減することができる。
以上のようにして、設計情報を秘匿化(設計情報の隠蔽と設計データの難読化)した回路記述を生成することができる。また、追加演算はライフタイムが2以上のノードの出力値に対して施すので、追加演算によってスケジューリング結果を変更する必要はなく、回路性能が劣化することはない。
なお、本実施形態では、追加演算にゼロとの加算を用いたが、選択演算、比較演算、論理演算、加算以外の四則演算等、出力値を保証できるものであれば、データベースに存在する任意の演算の種類を追加してもよい。
また、本実施形態では、追加演算としてDFG上に存在する加算演算を選択したが、追加演算の選定基準として、逆にDFG上に存在しない演算を追加してもよい。図3の例では、加算演算の代わりに、ノード+6の出力値と定数1との乗算、ノード+6の出力値と定数0とのいずれかを選択する選択演算(選択信号は入力ポートから与える)等を追加してもよい。この場合、以降のアロケーション工程S03においてハードウェアリソースの共有を期待することができないため、回路面積の抑制は期待できない。しかしながら、DFG上に存在しない演算は、アルゴリズム等を記載した回路仕様書にも存在しない。このため、出力された回路記述中の演算子からアルゴリズムを予測し辛くなり、回路記述が流出した際の不正解読のリスクを低減できる。
また、本実施形態では、回路秘匿化工程S11において1つのノードに対してのみ演算を追加したが、ライフタイムが2以上の複数のノードに対して演算を追加してもよい。
また、本実施形態では、追加した演算(加算ノード+7)の入力となる定数ノードを入力ポート(p)に割り付けたが、追加した演算に関係する定数に限らず、定数を隠蔽することは、回路を正しく動作させる情報を隠蔽する効果があるので、演算を追加する前のもともとのDFGに存在していた定数ノードを入力ポートに割り付けてもよい。
《第2の実施形態》
図11は、第2の実施形態に係る高位合成方法を示すフローチャートである。第1の実施形態との違いは、回路の秘匿化処理がスケジューリング工程S02の前に実施される点である。図11の回路秘匿化工程S12は、回路秘匿化時にスケジューリング結果の制約を受けないため、第1の実施形態に比較して、柔軟に演算を追加することができる。
図11は、第2の実施形態に係る高位合成方法を示すフローチャートである。第1の実施形態との違いは、回路の秘匿化処理がスケジューリング工程S02の前に実施される点である。図11の回路秘匿化工程S12は、回路秘匿化時にスケジューリング結果の制約を受けないため、第1の実施形態に比較して、柔軟に演算を追加することができる。
演算は、DFGの最小遅延パス上に存在するノードに対して追加するのがよい。まず、DFGの各ノードに対して、そのノードを経由するパスの遅延を算出して、最長の遅延を設定する。
前記BD1から得られた図3のDFGを用いて説明する。ここでは、加算ノードの遅延は10ns、入力ノード、出力ノードの遅延は、ともに0nsとする。ノード+1を経由するパスは、(a,+1,+2,+3,+4)、(b,+1,+2,+3,+4)の2つである。これら2つのパス遅延はともに40nsであるので、ノード+1には40nsを設定する。ノード+2を経由するパスは、(a,+1,+2,+3,+4)、(b,+1,+2,+3,+4)、(c,+2,+3,+4)の3つである。これら3つのパス遅延は、それぞれ40ns、40ns、30nsである。最長遅延に基づき、ノード+2に40nsを設定する。同様の計算を行い、ノード+3、+4、+5、+6に、それぞれ40ns、40ns、30ns、20nsを設定する。最小遅延パス上に存在するノードは+6であるので、ここではノード+6の出力値に対して、新たな演算を施す。例えば、ゼロとの加算を追加すると、図12のようなDFGになる。この場合、追加演算+7を経由する最長のパスは、(f,+6,+7,+4)、(g,+6,+7,+4)の30nsである。したがって、図3に示す元のDFGの最長遅延40nsを超えないので、以降のスケジューリング工程S02における結果で、処理サイクルが増加することを防ぐことができる。
以上のように、DFGの最小遅延パス上に存在するノードに対して演算を追加することで、スケジューリング工程S02において処理サイクルの増加を抑制した、回路の秘匿化を実現できる。また、スケジューリング実行前にDFGに演算を追加することによって、スケジューリング工程S02にて、第1の実施形態と違い、初期のDFG上のノードだけでなく、追加演算(ノード)を含めて、ハードウェアリソースの共有を考慮したスケジューリングを実施できる。
また、逆に、DFGの最大遅延パス上に存在するノードに対して演算を追加してもよい。この場合、スケジューリング工程S02において、処理サイクルが増加する可能性が高くなるため、回路記述出力工程S04において動作レベル回路記述のみを出力する。RTL回路記述を出力しないのは、論理合成以降の工程で処理サイクルを改善することが困難なためである。一方、秘匿化処理が施された動作レベル回路記述は、再び、従来の秘匿化処理を施さない高位合成をすることで処理サイクルを改善することができる。
例えば、図13に示すように、図3の演算ノード+2の出力に対して冗長なゼロとの加算演算を施し、定数値を入力ポートとして隠蔽する。この処置を施して出力した動作レベル回路記述を従来手法によって高位合成する。加算ノードの遅延を10nsとすると、追加演算(ノード)+7を経由するパスの最長遅延が、(a,+1,+2,+7,+3,+4)又は(b,+1,+2,+7,+3,+4)の50nsとなり、元の動作レベル回路記述の最長遅延40nsを超える。このため、クロック周波数の制約によって、サイクル数が増加する可能性がある。しかしながら、第1の実施形態で説明したように、秘匿化解読情報として出力した、追加ポートに正しい定数値を設定する動作レベルの上位階層記述から高位合成を実施することで、本質的に冗長である追加演算は、高位合成の最適化機能(具体的には、定数伝播機能)によって、DFGのレベルで計算されてしまう。定数伝播実施後の追加演算(冗長演算)が削除されたDFGは、基本的に、演算が追加される前の初期のDFG、すなわち図3のDFGと同じになる。このDFGに対して実施するスケジューリング結果は、冗長なサイクルを含まない。これは秘匿化解読情報を入手することによって可能となるので、秘匿化された動作レベル回路記述から、設計情報秘匿化のための不要サイクルを含まない正規のRTL回路記述を生成されるリスクを低減できる。また、極端に多くの演算を追加した動作レベル回路記述を、秘匿化解読情報を与えず、追加ポートをそのままポートとして高位合成すると、前述したように、追加演算により、不要にサイクルが増大する可能性がある。その結果、回路記述を動作させたときの処理サイクル数が、アルゴリズム本来の性能と差が生じて、処理サイクルからアルゴリズムを予測することを困難にさせることができる。
以上のようにして、スケジューリング実行前に設計情報の秘匿化処理を施すことで、回路性能(処理サイクル)の劣化を抑制しつつ、追加演算を実行するハードウェアリソースの面積増加を抑制できる。また、スケジューリング実行前に設計情報を秘匿化して得られた動作レベル回路記述は、設計情報の隠蔽と回路記述の難読化のみならず、出力されるRTL回路記述の性能(処理サイクル)も隠蔽することができるので、設計情報の秘匿性を向上させることができる。
《第3の実施形態》
図14は、第3の実施形態に係る高位合成方法を示すフローチャートである。第1の実施形態との違いは、回路の秘匿化処理がアロケーション工程S03の後に実施される点である。ここで、入力動作レベル回路記述に存在する冗長な計算式は、中間表現生成工程S01においてCDFGが生成される段階で最適化機能によって削除されるものとする。
図14は、第3の実施形態に係る高位合成方法を示すフローチャートである。第1の実施形態との違いは、回路の秘匿化処理がアロケーション工程S03の後に実施される点である。ここで、入力動作レベル回路記述に存在する冗長な計算式は、中間表現生成工程S01においてCDFGが生成される段階で最適化機能によって削除されるものとする。
図14の回路秘匿化工程S13では、回路秘匿化時にアロケーション情報からRTL回路構造を推測しながら、演算を追加することができる。
図15に示すアロケーション済みDFGを用いて説明する。なお、ハードウェアリソースAdd1,Add2の出力はそれぞれ、レジスタR1,R2で受けるものとする。図15のアロケーション結果から、図16に示すRTL回路構造を推測することができる。
まず、出力値のライフタイムが2以上のノードを選択する。ここではノード+4の出力のみが2以上のライフタイムを持つ。選択したノードの出力に対して施す新たな演算をデータベースから選択する。このとき、選択する演算は、図15のDFGのノードに割り付けられたハードウェアリソースをスケジューリングの変更をせずに再利用することによって、実行できるものとする。図15の例では、ノード+4に割り付けられたハードウェアリソースAdd2のみがステートS1,S2で再利用可能である。したがって、ノード+4の出力に対して、Add2で実行可能な演算として、ゼロとの加算をステートS1で実行するように追加する。
なお、追加演算の入力となる定数は、入力ポートに割り付けない。この処置を施した後のDFGを図17に示す。図17のアロケーション結果から、図18に示すRTL回路構造を推測することができる。ここで、再利用されたハードウェアリソースは、2つ以上の演算を実行することになり、これらの演算を適切に実行するための入力制御が必要となる。図18では、マルチプレクサMUX3,MUX4によって入力を制御(選択)することで、元の演算と冗長演算とを適宜実行している。
回路記述出力工程S04は、回路秘匿化工程S13で最終的に変形されたDFGとアロケーション情報とに基づいて推測される回路構造を、RTLの回路記述として出力する。このRTL回路記述は、冗長に追加された演算及び制御を含むため、解読が困難な複雑な記述になっている。
以上のようにして、ハードウェアリソースが割り付けられたDFGを解析して回路秘匿化処理を施すことにより、解読を困難にさせるための冗長な演算及び制御を作り出すことができるため、設計データ流出時に、回路記述が解読されるリスクを低減できる。また、ハードウェアリソースを再利用することを前提に冗長な演算を作り出すことで、ハードウェアリソースの増加を抑制することができる。また、第1の実施形態と違って、設計情報隠蔽のためのポートを追加することがないため、回路記述を検証する際に、特別なケアをする必要がない。
本実施形態における高位合成方法は、RTL回路構造に対する難読化を実現するため、回路記述出力工程S04では、RTL回路記述のみを出力する。
なお、冗長演算を施す演算(ノード)の選択肢が複数ある場合は、再利用するハードウェアリソースの入力を選択するマルチプレクサの入力数(或いは段数)が少ないものを選択すればよい。マルチプレクサの出力を選択するための制御信号は、制御回路であるFSM(Finite State Machine)の状態レジスタとデータパス回路の出力から生成されるが、選択する入力数が多く制御が複雑になると、制御信号を生成する論理段数が大きくなる可能性が高くなる。この場合、状態レジスタからマルチプレクサを経由してデータパス回路のレジスタに到達するパス遅延が、設計制約で規定された動作周波数制約を満たさなくなる危険性がある。したがって、マルチプレクサの入力数が少ないハードウェアリソースを採用することで、遅延違反の危険性を抑制することができる。
また、再利用するハードウェアリソースのビット幅が小さいものを選択してもよい。ただし、ハードウェアリソースは選択した演算を十分実行できるビット幅を有するものとする。入力を選択するために追加されるマルチプレクサは、ハードウェアリソースの入力ビット幅に依存するため、ビット幅が小さいハードウェアリソースを選択することで、マルチプレクサのビット幅が小さくなり、面積の増加を抑制することができる。
《第4の実施形態》
図19は、第4の実施形態に係る高位合成方法における回路秘匿化工程を示すフローチャートである。本実施形態では、第1〜第3の実施形態の回路秘匿化工程S11,S12,S13において追加する演算の数を所定の基準に従って制限する。
図19は、第4の実施形態に係る高位合成方法における回路秘匿化工程を示すフローチャートである。本実施形態では、第1〜第3の実施形態の回路秘匿化工程S11,S12,S13において追加する演算の数を所定の基準に従って制限する。
本実施形態における回路秘匿化工程では、図19に示すように、終了判定工程S21の次に、演算追加工程S22が実行される。終了判定工程S21では、所定の基準に従い、処理を終了するか継続するかが判断される。処理継続と判断(NOと判断)した場合は、演算追加工程S22を実施する。演算追加工程S22の終了後は、終了判定工程S21に戻る。処理終了と判定(YESと判断)されるか、演算が追加できなくなるまで、演算追加工程S22と終了判定工程S21とを繰り返し実施する。
以下、本実施形態の動作の一例として、上述した動作レベル回路記述BD1から得られた図4のDFGを用いて説明する。
まず、処理を終了するための基準として、追加する演算数を制限する方法を示す。ここでは、追加する演算数は「2つまで」とする。
図19によれば、まず終了判定工程S21において、追加した演算の数が所定の基準(2つまで)に達したかを判定する。追加した演算は0個なので、演算追加工程S22に進む。演算追加工程S22では、ライフタイムが2以上のノードを1つ選択して、そのノードの出力に対して、新たな演算を追加する。
例えば、ビット幅が小さいノードを選択すればよい。追加する演算を実行するハードウェアリソースの面積は、計算するビット幅に応じて増加する。32ビットの演算を追加すると、32ビットの加算リソースが必要になるが、4ビットの演算を追加する場合には、4ビットの加算リソースで済む。したがって、ビット幅が小さいノードを選択することは、追加演算によるハードウェアリソースの面積を抑制できる可能性がある。
また、定数ノードを選択してもよい。DFG上に存在する定数ノードは、アルゴリズムで規定された定数である場合がある。この場合、アルゴリズムで規定された定数を別の定数の演算によって作り出すことにより、最終的に出力する回路記述から、アルゴリズムで規定された定数を隠蔽できる。この結果、回路記述に存在する定数からアルゴリズムを解読されるリスクを低減できる。
図4の例では、ノード+6を選択する。ノード+6の出力値に対して、ゼロとの加算を施すことにより、ノード+6の出力値を保証する。ゼロとの加算を追加したDFGは、図20に示すとおり、第1の実施形態で示した図5と同じになる。
次に、終了判定工程S21に戻る。ここでは、追加した演算数が1つであり、所定の基準(2つまで)に達していないので、再び、演算追加工程S22に移る。
演算追加工程S22では、更新されたDFGのライフタイム情報に基づき、ノードを選択する。図20は、1回目の演算追加工程S22による更新後のDFGとライフタイムを示す。ライフタイムが2以上のノードは、+5と+7である。ここでは、ノード+5の出力値に対して新たな演算を施す。図21は、ノード+5の出力に対して1との乗算を施した後のDFG及びライフタイム情報である。
再び、終了判定工程S21に移る。更新後のDFG(図21参照)上には、ライフタイムが2以上のノードが2つ(*、+7)存在しているが、追加した演算数が2つになり、所定の基準(2つまで)に達したので、ここで処理を終了する。
次に、処理を終了するための基準として、追加する演算数を回路の面積増加率により制限する方法を示す。ここでは、回路面積の増加率が「10%を超えるまで」とする。また、加算リソースの面積は一律10とする。
まず、終了判定工程S21において、追加した演算の数が所定の基準(回路面積増加率10%)を超えたかを判定する。図4のDFGの元の回路面積は、加算演算が6個あるので、面積は60と推定する。ここでは、追加した演算は0個なので、面積増加率は0であるので、演算追加工程S22に進む。
演算追加工程S22では、ライフタイムが2以上のノードを1つ選択して、そのノードの出力に対して、新たな演算を追加する。ここでは、ノード+6を選択して、ゼロとの加算を追加する。ゼロとの加算を追加したDFGは、図20のようになる。加算演算が1つ増えたので、回路面積を70と推定する。
次に、終了判定工程S21に戻る。回路面積が、元の推定値60から70に増加したので、増加率は16%である。所定の基準(回路面積増加率10%)を超えたので、ここで処理を終了する。
以上のようにすれば、追加する演算の数を所定の基準に従って制御することができる。追加演算数を制限する場合、設計情報を秘匿化するための情報量を主として制御することができる。また、回路面積の増加率を制限する場合、設計情報を秘匿化しつつ、回路面積のオーバーヘッドを抑制することができる。
なお、回路面積の増加率の代わりに、回路性能(最長パス遅延)の増加率を制限してもよい。例えば、第2の実施形態の図11で示したように、中間表現生成工程S01において生成されたDFGに対して演算を追加する場合に、設計情報を秘匿化しつつ、極端に最長パス遅延が増加してスケジューリング結果として処理サイクルが増大することを防ぐことができる。
以上説明してきたとおり、本発明に係る半導体集積回路の高位合成方法は、回路記述が流出した際に不正利用されたり、解読されたりするリスクを低減できる効果を有し、ディジタル回路を構成するRTL回路記述の生成等に有用である。
S01 中間表現生成工程
S02 スケジューリング工程
S03 アロケーション工程
S04 回路記述出力工程
S11,S12,S13 回路秘匿化工程
S21 終了判定工程
S22 演算追加工程
S02 スケジューリング工程
S03 アロケーション工程
S04 回路記述出力工程
S11,S12,S13 回路秘匿化工程
S21 終了判定工程
S22 演算追加工程
Claims (22)
- ハードウェアの動作レベルの回路記述を解析して、記述中に現れた演算とデータとの流れを表すDFG(Data Flow Graph)と、演算の実行順序の制御の流れを表すCFG(Control Flow Graph)とから構成されるCDFG(Control Data Flow Graph)を生成する中間表現生成工程と、
所望のハードウェア回路の設計制約条件と使用可能なハードウェアリソースの情報とをもとに前記CDFGの各ノードの実行順序をクロックに同期したステートに割り付けるスケジューリング工程と、
前記CDFGの各ノードに処理を実現するハードウェアリソースを割り付けるアロケーション工程と、
出力する回路記述中の設計情報の秘匿化を考慮して、演算の追加による前記CDFGの変更、又はアロケーション結果の変更を行う回路秘匿化工程と、
前記各工程の処理結果に基づいて、回路記述と秘匿化解読情報とを出力する回路記述出力工程とを備えたことを特徴とする半導体集積回路の高位合成方法。 - 請求項1記載の半導体集積回路の高位合成方法において、
前記回路秘匿化工程において追加する処理結果の一致性を保証する演算は、前記CDFG上に存在しない演算であることを特徴とする半導体集積回路の高位合成方法。 - 請求項1記載の半導体集積回路の高位合成方法において、
前記回路秘匿化工程において追加する処理結果の一致性を保証する演算は、前記CDFG上に存在する演算であることを特徴とする半導体集積回路の高位合成方法。 - 請求項1記載の半導体集積回路の高位合成方法において、
前記回路秘匿化工程は、前記中間表現生成工程で生成されたCDFGの入出力間のパス遅延を解析して、遅延が短いパスに対して、優先して処理結果の一致性を保証する演算を追加することを特徴とする半導体集積回路の高位合成方法。 - 請求項1記載の半導体集積回路の高位合成方法において、
前記回路秘匿化工程は、前記中間表現生成工程で生成されたCDFGの入出力間のパス遅延を解析して、遅延が長いパスに対して、優先して処理結果の一致性を保証する演算を追加することを特徴とする半導体集積回路の高位合成方法。 - 請求項1記載の半導体集積回路の高位合成方法において、
前記回路秘匿化工程は、前記スケジューリング工程で生成されたスケジューリング済みCDFGを解析して、処理サイクルが増加しない範囲で、処理結果の一致性を保証する冗長な演算を追加することを特徴とする半導体集積回路の高位合成方法。 - 請求項4〜6のいずれか1項に記載の半導体集積回路の高位合成方法において、
前記回路秘匿化工程は、追加した演算の入力となる定数を表すノードを定数以外のハードウェアリソースに割り付けることを特徴とする半導体集積回路の高位合成方法。 - 請求項7記載の半導体集積回路の高位合成方法において、
前記定数以外のハードウェアリソースとは、入力ポートであることを特徴とする半導体集積回路の高位合成方法。 - 請求項4〜6のいずれか1項に記載の半導体集積回路の高位合成方法において、
前記回路秘匿化工程は、前記CDFGのノードの入力ビット幅が小さいノードに対して、そのノードの出力値を作り出す演算を追加することを特徴とする半導体集積回路の高位合成方法。 - 請求項4〜6のいずれか1項に記載の半導体集積回路の高位合成方法において、
前記回路秘匿化工程は、前記CDFGの定数ノードに対して、その定数値を作り出す演算を追加することを特徴とする半導体集積回路の高位合成方法。 - 請求項1記載の半導体集積回路の高位合成方法において、
前記回路秘匿化工程は、前記アロケーション工程で割り付けられたハードウェアリソースを再利用して、処理結果の一致性を保証する演算を作り出すことを特徴とする半導体集積回路の高位合成方法。 - 請求項11記載の半導体集積回路の高位合成方法において、
前記回路秘匿化工程は、入力を選択するマルチプレクサの制御遅延が小さいハードウェアリソースを優先して再利用することを特徴とする半導体集積回路の高位合成方法。 - 請求項11記載の半導体集積回路の高位合成方法において、
前記回路秘匿化工程は、入力ビット幅が小さいハードウェアリソースを優先して再利用することを特徴とする半導体集積回路の高位合成方法。 - 請求項1記載の半導体集積回路の高位合成方法において、
前記回路秘匿化工程は、前記CDFGに追加する演算の数を所定の基準に従って制限することを特徴とする半導体集積回路の高位合成方法。 - 請求項14記載の半導体集積回路の高位合成方法において、
前記所定の基準とは、追加する演算の数の上限であることを特徴とする半導体集積回路の高位合成方法。 - 請求項14記載の半導体集積回路の高位合成方法において、
前記所定の基準とは、前記追加演算を実行するために必要となるハードウェアリソースの面積が、前記回路秘匿化工程を実施する前の回路面積に及ぼす面積増加率の上限であることを特徴とする半導体集積回路の高位合成方法。 - 請求項14記載の半導体集積回路の高位合成方法において、
前記所定の基準とは、前記追加演算を実行するために必要となる遅延が、前記CDFGの最長パスに及ぼす遅延の増加率であることを特徴とする半導体集積回路の高位合成方法。 - 請求項1記載の半導体集積回路の高位合成方法において、
前記回路記述出力工程は、前記追加演算の結果が所望の値であるかを検証するためのアサーション記述を、回路記述に含めて出力することを特徴とする半導体集積回路の高位合成方法。 - 請求項1記載の半導体集積回路の高位合成方法において、
前記回路記述出力工程は、動作レベルの回路記述を出力することを特徴とする半導体集積回路の高位合成方法。 - 請求項1記載の半導体集積回路の高位合成方法において、
前記回路記述出力工程は、レジスタ転送レベルの回路記述を出力することを特徴とする半導体集積回路の高位合成方法。 - 請求項1記載の半導体集積回路の高位合成方法において、
前記回路記述出力工程は、秘匿化解読情報として、出力された回路記述を解読するための上位階層の回路記述を、独立したファイルとして出力することを特徴とする半導体集積回路の高位合成方法。 - 請求項1記載の半導体集積回路の高位合成方法において、
前記追加演算の方法をデータベースとして備えることを特徴とすることを特徴とする半導体集積回路の高位合成方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2006010387A JP2007193529A (ja) | 2006-01-18 | 2006-01-18 | 半導体集積回路の高位合成方法 |
US11/633,568 US20070168902A1 (en) | 2006-01-18 | 2006-12-05 | Method for high-level synthesis of semiconductor integrated circuit |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2006010387A JP2007193529A (ja) | 2006-01-18 | 2006-01-18 | 半導体集積回路の高位合成方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2007193529A true JP2007193529A (ja) | 2007-08-02 |
Family
ID=38264781
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2006010387A Withdrawn JP2007193529A (ja) | 2006-01-18 | 2006-01-18 | 半導体集積回路の高位合成方法 |
Country Status (2)
Country | Link |
---|---|
US (1) | US20070168902A1 (ja) |
JP (1) | JP2007193529A (ja) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2013084036A (ja) * | 2011-10-06 | 2013-05-09 | Dainippon Printing Co Ltd | データ処理システム及び微細構造物製造システム、並びにデータ処理方法及び微細構造物製造方法 |
JP2015076013A (ja) * | 2013-10-10 | 2015-04-20 | 富士通セミコンダクター株式会社 | 高位合成用データ生成装置、高位合成装置、高位合成用データ生成方法及びプログラム |
JP2015095130A (ja) * | 2013-11-13 | 2015-05-18 | 三菱電機株式会社 | 回路設計支援装置及びプログラム |
JP2019057181A (ja) * | 2017-09-22 | 2019-04-11 | 日本電気株式会社 | 設計支援装置、設計支援方法およびコンピュータプログラム |
Families Citing this family (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070157150A1 (en) * | 2005-12-01 | 2007-07-05 | Ogami Kenneth Y | Base project resource management and application synthesis |
JP5228546B2 (ja) * | 2008-03-13 | 2013-07-03 | 日本電気株式会社 | 動作合成装置、および、プログラム |
US8001497B2 (en) * | 2008-10-01 | 2011-08-16 | Lsi Corporation | Control signal source replication |
FR2978263A1 (fr) * | 2011-07-18 | 2013-01-25 | Modae Technologies | Procede de synthese de haut niveau d'une application |
US9032380B1 (en) * | 2011-12-05 | 2015-05-12 | The Mathworks, Inc. | Identifying function calls and object method calls |
JP2013214278A (ja) * | 2012-03-08 | 2013-10-17 | Canon Inc | 上位階層記述生成装置、上位階層記述生成方法及びプログラム |
CN105164638B (zh) | 2013-04-23 | 2019-09-27 | 起元科技有限公司 | 控制由计算系统执行的任务 |
US9740529B1 (en) * | 2013-12-05 | 2017-08-22 | The Mathworks, Inc. | High throughput synchronous resource-constrained scheduling for model-based design |
US10534885B1 (en) * | 2018-03-21 | 2020-01-14 | Xilinx, Inc. | Modifying data flow graphs using range information |
CN110334436B (zh) * | 2019-07-03 | 2023-11-07 | 腾讯科技(深圳)有限公司 | 一种数据处理方法以及设备 |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5555201A (en) * | 1990-04-06 | 1996-09-10 | Lsi Logic Corporation | Method and system for creating and validating low level description of electronic design from higher level, behavior-oriented description, including interactive system for hierarchical display of control and dataflow information |
US7017043B1 (en) * | 1999-03-19 | 2006-03-21 | The Regents Of The University Of California | Methods and systems for the identification of circuits and circuit designs |
US6625797B1 (en) * | 2000-02-10 | 2003-09-23 | Xilinx, Inc. | Means and method for compiling high level software languages into algorithmically equivalent hardware representations |
JP4029959B2 (ja) * | 2001-08-31 | 2008-01-09 | シャープ株式会社 | 演算器アロケーション設計装置および演算器アロケーション設計方法 |
JP2005173648A (ja) * | 2003-12-05 | 2005-06-30 | Matsushita Electric Ind Co Ltd | 高位合成方法及び高位合成装置 |
US7260798B2 (en) * | 2003-12-29 | 2007-08-21 | Mentor Graphics Corporation | Compilation of remote procedure calls between a timed HDL model on a reconfigurable hardware platform and an untimed model on a sequential computing platform |
US7305650B1 (en) * | 2004-06-21 | 2007-12-04 | C2 Design Automation | Data path synthesis apparatus and method for optimizing a behavioral design description being processed by a behavioral synthesis tool |
-
2006
- 2006-01-18 JP JP2006010387A patent/JP2007193529A/ja not_active Withdrawn
- 2006-12-05 US US11/633,568 patent/US20070168902A1/en not_active Abandoned
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2013084036A (ja) * | 2011-10-06 | 2013-05-09 | Dainippon Printing Co Ltd | データ処理システム及び微細構造物製造システム、並びにデータ処理方法及び微細構造物製造方法 |
JP2015076013A (ja) * | 2013-10-10 | 2015-04-20 | 富士通セミコンダクター株式会社 | 高位合成用データ生成装置、高位合成装置、高位合成用データ生成方法及びプログラム |
JP2015095130A (ja) * | 2013-11-13 | 2015-05-18 | 三菱電機株式会社 | 回路設計支援装置及びプログラム |
JP2019057181A (ja) * | 2017-09-22 | 2019-04-11 | 日本電気株式会社 | 設計支援装置、設計支援方法およびコンピュータプログラム |
JP6992357B2 (ja) | 2017-09-22 | 2022-01-13 | 日本電気株式会社 | 設計支援装置、設計支援方法およびコンピュータプログラム |
Also Published As
Publication number | Publication date |
---|---|
US20070168902A1 (en) | 2007-07-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP2007193529A (ja) | 半導体集積回路の高位合成方法 | |
US8402401B2 (en) | Protection of intellectual property cores through a design flow | |
Clow et al. | A pythonic approach for rapid hardware prototyping and instrumentation | |
US10303878B2 (en) | Methods and apparatus for automatic detection and elimination of functional hardware trojans in IC designs | |
Hu et al. | On the complexity of generating gate level information flow tracking logic | |
US20080271001A1 (en) | Method of generating program, information processing device and microcomputer | |
JP7132926B2 (ja) | コンパイルデバイス及びコンパイル方法 | |
US10289873B2 (en) | Generating hardware security logic | |
US20160042099A1 (en) | Behavioral synthesis apparatus, behavioral synthesis method, data processing system including behavioral synthesis apparatus, and non-transitory computer readable medium storing behavioral synthesis program | |
Gao et al. | FENL: an ISE to mitigate analogue micro-architectural leakage | |
JP2006048525A (ja) | シミュレーション方法 | |
Koul et al. | Aha: An agile approach to the design of coarse-grained reconfigurable accelerators and compilers | |
US8813007B2 (en) | Automatic approximation of assumptions for formal property verification | |
Pundir et al. | Secure high-level synthesis: Challenges and solutions | |
Pundir et al. | Analyzing security vulnerabilities induced by high-level synthesis | |
US7065719B2 (en) | Method for designing a system LSI | |
Antognazza et al. | Metis: An integrated morphing engine CPU to protect against side channel attacks | |
Qin et al. | A formal model for proving hardware timing properties and identifying timing channels | |
JP2008299464A (ja) | 消費電力計算方法、消費電力計算プログラムおよび消費電力計算装置 | |
Muttaki et al. | Security assessment of high-level synthesis | |
JP5471413B2 (ja) | 動作合成装置及び方法 | |
US6532584B1 (en) | Circuit synthesis method | |
JP6735951B2 (ja) | 高位合成装置、高位合成方法および高位合成プログラム | |
Barthe et al. | Provably secure compilation of side-channel countermeasures | |
JP2006202330A (ja) | システムlsiの設計方法及びこれを記憶した記録媒体 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A761 | Written withdrawal of application |
Free format text: JAPANESE INTERMEDIATE CODE: A761 Effective date: 20080630 |