JP2016122299A - ステートマシン分割プログラム、情報処理装置およびステートマシン分割方法 - Google Patents

ステートマシン分割プログラム、情報処理装置およびステートマシン分割方法 Download PDF

Info

Publication number
JP2016122299A
JP2016122299A JP2014261297A JP2014261297A JP2016122299A JP 2016122299 A JP2016122299 A JP 2016122299A JP 2014261297 A JP2014261297 A JP 2014261297A JP 2014261297 A JP2014261297 A JP 2014261297A JP 2016122299 A JP2016122299 A JP 2016122299A
Authority
JP
Japan
Prior art keywords
state machine
value
state
dividing
reference value
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.)
Pending
Application number
JP2014261297A
Other languages
English (en)
Inventor
暁子 古谷
Akiko Furuya
暁子 古谷
宣明 川添
Nobuaki Kawazoe
宣明 川添
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.)
Fujitsu Ltd
Original Assignee
Fujitsu 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 Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2014261297A priority Critical patent/JP2016122299A/ja
Priority to US14/918,631 priority patent/US9710583B2/en
Publication of JP2016122299A publication Critical patent/JP2016122299A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design
    • G06F30/39Circuit design at the physical level
    • G06F30/398Design verification or optimisation, e.g. using design rule check [DRC], layout versus schematics [LVS] or finite element methods [FEM]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design
    • G06F30/32Circuit design at the digital level
    • G06F30/327Logic synthesis; Behaviour synthesis, e.g. mapping logic, HDL to netlist, high-level language to RTL or netlist
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design
    • G06F30/39Circuit design at the physical level
    • G06F30/392Floor-planning or layout, e.g. partitioning or placement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2119/00Details relating to the type or aim of the analysis or the optimisation
    • G06F2119/12Timing analysis or timing optimisation

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)
  • Architecture (AREA)
  • Design And Manufacture Of Integrated Circuits (AREA)
  • Debugging And Monitoring (AREA)

Abstract

【課題】回路設計の時間を短縮するステートマシン分割プログラム、情報処理装置およびステートマシン分割方法を提供すること。【解決手段】実施形態に係るステートマシン分割プログラムは、コンピュータに、ステートマシンを用いて演算処理を制御する回路を示す回路情報に基づく設計値と、予め定められた基準値とを比較し、設計値が基準値を超える場合は、ステートマシンを複数のステートマシンに分割する処理を実行させることを特徴とする。【選択図】図1

Description

本発明は、ステートマシン分割プログラム、情報処理装置およびステートマシン分割方法に関する。
従来、コンピュータによって論理回路を合成する技術が知られている。このような技術の一例として、クロックを意識せずに論理回路の機能が記述された動作記述を、クロックに基づいてレジスタ間の機能を記述したRTL(Register Transfer Level)に変換する動作合成システムが知られている。例えば、動作合成システムは、動作記述に基づいて、演算のスケジューリングと演算器のリソース・シェアリングとを設定し、演算内容と演算のタイミングとを制御するステートマシンとデータパスとを生成する動作合成を実行する。
このような動作合成システムの一例として、生成したデータパスの中で全体がアクティブにならないfalseパスを検出し、レイテンシの最適化対象となるデータパスを削減する技術が知られている。また、回路上に設置されるモジュール間の接続を考慮し、レイテンシを調整するFF(フリップフロップ)の挿入位置を最適化する動作合成システムが知られている。
特開2001−209670号公報 特開2014−142918号公報
しかしながら、上述した従来技術では、自動生成されたステートマシンが回路の動作タイミング上問題となる場合は、RTLを用いたタイミング解析の結果を元に利用者が動作記述を書き直すので、回路設計に時間がかかるという問題がある。
例えば、タイミング解析の結果を元に利用者が動作記述を作成し直す場合は、抽象度が高い動作記述ができなくなるため、設計のTAT(Turn Around Time)や、シミュレーション時間の短縮が困難になる。また、タイミング解析の結果を元に利用者が動作記述を作成し直す場合は、実際に処理を実行する際の動作タイミングを考慮して動作記述を作成するため、テクノロジや動作周波数が異なる回路に動作記述を流用できなくなり、動作記述の再利用性が低下する。また、回路の配置配線時にステートマシンが動作タイミング上問題となると解った場合は、動作記述から見直しを行うので、工程上のロスが増大する。この結果、RTLのタイミング解析の結果を元に利用者が動作記述を作成し直す方法では、回路設計に時間がかかってしまう。
1つの側面では、本発明は、回路設計の時間を短縮するステートマシン分割プログラム、情報処理装置およびステートマシン分割方法を提供する。
本願の開示するステートマシン分割プログラムは、一つの態様において、コンピュータに、ステートマシンを用いて演算処理を制御する回路を示す回路情報に基づく設計値と、予め定められた基準値とを比較し、前記設計値が前記基準値を超える場合は、前記ステートマシンを複数のステートマシンに分割する処理を実行させることを特徴とする。
回路設計の時間を短縮できる。
図1は、実施例1に係る動作合成装置が有する機能構成の一例を示す図である。 図2は、実施例1に係る基準値記憶部が記憶する基準値の一例を説明する図である。 図3は、実施例1に係る動作合成装置が記憶する設定値の一例を説明する図である。 図4は、実施例1に係る動作合成装置が記憶する分割されたステートマシンの情報の一例を説明する図である。 図5は、実施例1に係る動作合成部が実行する処理の一例を説明する図である。 図6は、動作合成処理の一例を説明する図である。 図7は、実施例1に係る動作合成装置がステートマシンを分割する処理を説明する図である。 図8は、ステートの数による遅延の一例を説明する図である。 図9は、ステートの数が増大した際に生じる遅延の一例を説明する図である。 図10は、ステートの参照先の数による遅延の一例を説明する図である。 図11は、ステートの参照先が増大した際に生じる遅延の一例を説明する図である。 図12は、動作記述を見直してステートマシンを分割させる処理の一例を説明する図である。 図13は、実施例1に係る動作合成装置が実行する処理を説明する図である。 図14は、ステートマシンの分割による効果を説明する図である。 図15は、実施例1に係る動作合成装置が実行する処理の流れを説明するフローチャートである。 図16は、実施例1に係る動作合成装置が実行するステートマシン分割処理の流れを説明するフローチャートである。 図17は、実施例2に係る動作合成装置の機能構成の一例を説明する図である。 図18は、実施例2に係る動作合成装置が実行する処理の流れを説明するフローチャートである。 図19は、実施例3に係る動作合成装置の機能構成の一例を説明する図である。 図20は、実施例3に係る動作合成装置がステートマシンを分割する処理の例を説明する図である。 図21は、実施例3に係る動作合成装置が実行する処理の流れを説明するフローチャートである。 図22は、実施例4に係る動作合成装置の機能構成の一例を説明する図である。 図23は、実施例4に係る分割結果記憶部が記憶する情報の一例を説明する図である。 図24は、実施例4に係る動作合成装置が参照先を分散させる処理の一例を説明する図である。 図25は、実施例4に係る動作合成装置が実行する処理の流れを説明するフローチャートである。 図26は、実施例1に係る動作合成装置として動作するコンピュータのハードウェア構成を示す図である。
以下に図面を参照して、本発明にかかるステートマシン分割プログラム、情報処理装置およびステートマシン分割方法の実施の形態を詳細に説明する。なお、以下の実施例により本願の開示するステートマシン分割プログラム、情報処理装置およびステートマシン分割方法の実施の形態が限定されるものではない。
[動作合成装置の一例]
図1は、実施例1に係る動作合成装置が有する機能構成の一例を示す図である。図1に示すように、動作合成装置1は、基準値記憶部10、設定値記憶部11、分割結果記憶部12、入力部20、動作合成部21、判定部22、分割部23、出力部24を有する。
図1に示す動作合成装置1は、クロックを意識せずに論理回路の機能が記述された動作記述を、クロックに基づいてレジスタ間の機能を記述したRTLの記述(以下、単にRTLと記載する場合がある。)に変換する。かかるRTLには、処理を実現するための各種演算を行うデータパス部の記述と、どのタイミングでデータパス部のどの演算器を動かすかを制御するステートマシン部の記述とが含まれる。
また、動作合成装置1は、RTLを生成した場合は、RTLのタイミング解析を行わずに、RTLに基づく設定値、すなわち、設計対象となる回路の性能や属性を示す各種の情報に基づく値と利用者により指定された基準値とを比較する。そして、動作合成装置1は、設定値が基準値を超える場合は、RTLが示す回路のステートマシンを複数のステートマシンに分割し、再度動作合成を行う。
以下、動作合成装置1が有する各機能構成が実行する処理の一例を説明する。なお、以下の説明では、動作合成装置1が生成するステートマシン部の記述を、動作合成装置1が生成するステートマシンと記載する場合がある。
基準値記憶部10は、予め指定される基準値を記憶する。ここで、基準値とは、動作合成装置1の利用者が予め指定する値であり、動作合成装置1が生成するステートマシンや、動作合成装置1が生成したRTLが示す回路の性能や属性を指定するための値である。例えば、図2は、実施例1に係る基準値記憶部が記憶する基準値の一例を説明する図である。例えば、基準値記憶部10は、基準値として、動作合成装置1が生成するステートマシンが有するステートの数「k」を基準値として記憶する。
図1に戻り、設定値記憶部11は、動作合成装置1が動作記述から動作合成したRTLを記憶する。例えば、図3は、実施例1に係る動作合成装置が記憶する設定値の一例を説明する図である。図3に示す例では、設定値記憶部11は、回路情報として、動作合成装置1が生成したステートマシンが有するステートごとに、ステートの各種条件を示す情報11a〜11cを有する。
例えば、設定値記憶部11は、n番目のステートの情報11aとして、ステート名「org_state_name[n]」、遷移元ステートインデックス「org_in_id[n][a]」、遷移元からの遷移条件「org_in_cond[n][a]」を記憶する。また、設定値記憶部11は、n番目のステートの情報11aとして、遷移先ステートインデックス「org_out_id[n][b]」、遷移先への遷移条件「org_out_cond[n][b]」、ステートの参照先「org_reg[n][c]」を記憶する。
ここで、ステート名「org_state_name[n]」とは、ステートを特定するための情報であり、例えば、情報11aが[n]番目のステートである旨を示す情報である。また、遷移元ステートインデックス「org_in_id[n][a]」は、[n]番目のステートの遷移元となるステートが[a]番目のステートであることを示す情報である。また、遷移元からの遷移条件「org_in_cond[n][a]」は、遷移元となる[a]番目のステートから[n]番目のステートに遷移するための条件を示す情報である。
また、遷移先ステートインデックス「org_out_id[n][b]」とは、[n]番目のステートの遷移先となるステートが[b]番目のステートであることを示す情報である。また、遷移先への遷移条件「org_out_cond[n][b]」とは、遷移元となる[n]番目のステートから[b]番目のステートに遷移するための条件を示す情報である。また、ステートの参照先「org_reg[n][c]」とは、ステートの遷移を示すレジスタを示す情報であり、例えば、[n]番目のステートの参照先が[c]番目のレジスタであることを示す情報である。
なお、図3では記載を省略したが、設定値記憶部11には、ステートマシンの情報以外にも、演算を行うデータパス部の情報が格納されるものとする。例えば、設定値記憶部11には、データパス部の情報として、演算を行う演算器、演算器の出力を保持するFF(フリップフロップ)、演算器に信号を入力するマルチプレクサ、演算器からの出力をFFに出力するデマルチプレクサの数等が格納される。また、設定値記憶部11には、データパス部が有する演算器、FF、マルチプレクサおよびデマルチプレクサの接続関係や、マルチプレクサおよびデマルチプレクサの参照元となるレジスタの番号等が登録される。
図1に戻り、分割結果記憶部12は、動作合成装置1によって分割されたステートマシンの情報を記憶する。例えば、図4は、実施例1に係る動作合成装置が記憶する分割されたステートマシンの情報の一例を説明する図である。なお、図4には、動作合成装置1がステートマシンを主たるステートマシンであるメインステートマシンと、メインステートマシンに従属してステートが遷移する従たるステートマシンであるサブステートマシンとに分割した場合の例を記載した。
例えば、図4に記憶する例では、分割結果記憶部12は、メインステートマシンのステートごとに、ステートの情報12a〜12cを記憶し、サブステートマシンのステートごとに、ステートの情報12d〜12fを記憶する。なお、実施例1では、分割結果記憶部12がメインステートマシンおよびサブステートマシンが有するステートの情報を記憶するものとしたが、各ステートの情報は、メインステートマシンおよびサブステートマシンごとに異なる記憶部が記憶してもよい。
例えば、分割結果記憶部12は、メインステートマシンが有する[m]番目のステートの情報12aとして、ステート名「main_state_name[m]」、遷移元ステートインデックス「main_in_id[m][a]」、遷移元からの遷移条件「main_in_cond[m][a]」を記憶する。また、分割結果記憶部12は、[m]番目のステートの情報12aとして、遷移先ステートインデックス「main_out_id[m][b]」、遷移先への遷移条件「main_out_cond[m][b]」を記憶する。
また、分割結果記憶部12は、メインステートマシンが有する[m]番目のステートに属するサブステートマシンが有する[k+1]番目のステートの情報12dとして、ステート名「sub_state_name[m][k+1]」を記憶する。また、分割結果記憶部12は、情報12dとして、遷移元ステートインデックス「sub_in_id[m][k+1][a]」、遷移元からの遷移条件「sub_in_cond[m][k+1][a]」、遷移先ステートインデックス「sub_out_id[m][k+1][b]」を記憶する。また、分割結果記憶部12は、情報12dとして、遷移先への遷移条件「sub_out_cond[m][k+1][b]」、ステートの参照先[sub_reg[m][k+1][c]]を記憶する。
図1に戻り、説明を続ける。入力部20は、動作合成装置1の利用者が指定する基準値の入力を受付ける。例えば、図1に示す例では、入力部20は、動作合成装置1が生成するステートマシンが有するステートの数を基準値として受付ける。かかる場合、入力部20は、受信した基準値を基準値記憶部10に格納する。
また、入力部20は、RTLに変換する動作記述を受付ける。かかる動作記述は、入力部20が有するエディタ機能等により生成された動作記述であってもよく、他の装置や記録媒体等から読み込んだものであってもよい。また、入力部20は、動作記述を受付けた場合は、受付けた動作記述を動作合成部21に出力し、動作合成処理を実行させる。なお、入力部20は、マウスやキーボードなどのユーザの操作を受け付けるデバイスなどで実現される。
動作合成部21は、入力部20が受け付けた動作記述を用いて、RTLを生成する動作合成処理を実行し、生成したRTLを設定値記憶部11に登録する。例えば、図5は、実施例1に係る動作合成部が実行する処理の一例を説明する図である。図5に示すように、動作合成部21は、動作記述を受付けると、動作記述から、スケジューリングおよびリソース・シェアリングを設定し、設定結果に基づいて、データパスとステートマシンとを生成する動作合成を実行する。そして、動作合成部21は、動作合成の結果、動作記述が示す動作を実現する回路のRTLを生成する。
ここで、図6は、動作合成処理の一例を説明する図である。例えば、動作合成部21は、図6の(A)に示すように、クロック等の回路の動作タイミングを意識せずに論理回路の機能が記述された動作記述を受信する。かかる場合、動作合成部21は、図6の(B)に示すように、動作を実現するため、どのタイミングでどの演算を行うかを決定するスケジューリングを設定する。例えば、図6に示す例では、動作合成部21は、3サイクルのレイテンシで演算を実行する旨を設定する。また、動作合成部21は、図6の(C)に示すように、演算器を共有する演算を設定するリソース・シェアリングを行う。例えば、図6に示す例では、動作合成部21は、最初のサイクルと2番目のサイクルで実行される積算を同一の演算器で行い、2番目のサイクルと3番目のサイクルで実行される和算を同一の演算器で行う旨を設定する。
そして、動作合成部21は、図6の(D)に示すように、スケジューリングとリソース・シェアリングの結果に基づいて、データパスとステートマシンとを生成する。例えば、動作合成部21は、リソース・シェアリングの結果に基づいて、演算処理を実現するデータパス部を生成する。また、動作合成部21は、スケジューリングに基づいて、データパス部が有するマルチプレクサとデマルチプレクサとを制御するステートマシン部を生成する。そして、動作合成部21は、生成したデータパスとステートマシンとを示すRTLを設定値記憶部11に登録する。
判定部22は、設定値記憶部11に登録された設計値と、基準値記憶部10に登録された基準値とを比較する。例えば、判定部22は、基準値として、ステートマシンが有するステートの数が設定されている場合は、設定値記憶部11に登録されたRTLから、ステートマシンが有するステートの数を設定値として特定する。そして、判定部22は、特定した設定値が基準値を超えているか否かを判定し、設定値が基準値を超えている場合は、設定値記憶部11が記憶するステートマシンのRTLと基準値と設計値とを分割部23に出力する。一方、判定部22は、特定した設定値が基準値以下となる場合は、設定値記憶部11に登録されたRTLを出力部24に出力する。
分割部23は、設計値が基準値を超える場合は、ステートマシンを複数のステートマシンに分割する。例えば、分割部23は、判定部22からステートマシンのRTLを受信する。そして、分割部23は、基準値としてステートマシンが有するステートの数が設定されている場合は、ステートマシンの各ステートを振り分けることで、ステートマシンをメインステートマシンとサブステートマシンとに分割する。より具体的には、分割部23は、基準値と同じ数のステートを有するサブステートマシンと、設計値を基準値で除算した値を切り上げた値と同じ数のステートを有するメインステートマシンとにステートマシンを分割する。
そして、分割部23は、メインステートマシンとサブステートマシンとを示すRTL、すなわち、情報12a〜12fを生成し、生成した情報を分割結果記憶部12に登録する。かかる場合、動作合成部21は、分割結果記憶部12に登録された情報12a〜12fを取得する。そして、動作合成部21は、取得した情報12a〜12fが示すメインステートマシンとサブステートマシンにより制御が行われるよう、RTLを修正し、修正したRTLを設定値記憶部11に登録する。この結果、修正後のRTLの設定値が基準値を満たすこととなるので、判定部22は、修正後のRTLを出力部24に出力する。
以下、図7を用いて、分割部23がステートマシンをメインステートマシンとサブステートマシンとに分割する処理の一例を説明する。図7は、実施例1に係る動作合成装置がステートマシンを分割する処理を説明する図である。なお、図7に示す例では、メインステートマシンが有するn個のステートであるST1〜STnと、各ステートの遷移を示す矢印でステートマシンを表した。
例えば、分割部23は、図7の(E)に示すステートST1〜STnを有するステートマシンのRTLを取得する。かかる場合、分割部23は、ステートマシンに含まれるステートを、ステートの順序を辿りながら、ステートの数が基準値以下となる複数のグループに分割する。例えば、分割部23は、基準値の値が「k」である場合は、図7の(F)に示すように、ST1〜STk、STk+1〜ST2k、ST2k+1・・・ST(m−1)k、ST(m−1)k+1〜STnというように分割する。
続いて、分割部23は、異なるグループに分割したステート間の遷移条件を特定する。例えば、分割部23は、ST1に遷移するリセット解除時と、STkからSTk+1へと遷移するための遷移条件Aと、ST2kからSt2k+1へと遷移するための遷移条件Bとを特定する。また、分割部23は、ST(m−1)kからST(m−1)k+1へと遷移するための遷移条件C、STnからST1へと遷移するための遷移条件Dを特定する。また、分割部23は、グループを隔てるステート間の遷移条件、例えば、ST2k−1からST2へと遷移するための遷移条件Zを特定する。
そして、分割部23は、各グループにアイドルステートを追加し、グループに含まれるステートのうち最上流となるステートまでの遷移元をアイドルステートに変更する。また、分割部23は、グループに含まれるステートのうち最下流となるステートの遷移先をアイドルステートに変更する。また、分割部23は、遷移条件Z等、グループを隔ててステートが遷移する遷移条件の遷移先を、同一グループに含まれるアイドルステートに変更する。この結果、分割部23は、実質的なステートの数が基準値の数k個以下となる複数のサブステートマシンを生成する。
また、分割部23は、設定値を基準値で除算した値を切り上げた値を算出し、算出した値と同じ数のステートを有するメインステートマシンを生成する。そして、分割部23は、メインステートマシンに含まれる各ステートの遷移条件として、ステートマシンのステートを複数のグループに分割した際の分割箇所の条件を設定する。つまり、分割部23は、メインステートマシンの各ステートを、各サブステートマシンと対応させる。また、分割部23は、グループを隔ててステートが遷移する遷移条件については、かかるグループと対応するサブステートマシンを特定し、特定したサブステートマシンに対応するステート間の遷移条件とする。
この結果、分割部23は、図7中(G)に示すように、ステートマシンをメインステートマシンと複数のサブステートマシンとに分割する。例えば、図7に示す例では、分割部23は、遷移条件A〜遷移条件D、遷移条件Zで遷移するMain_ST1〜Main_STmまでのm個のステートを有するメインステートマシンを生成する。
また、分割部23は、遷移条件Dまたは遷移条件Zでアイドルステートから他のステートに遷移し、遷移条件Aでアイドルステートに戻るサブステートマシンSub1を生成する。また、分割部23は、遷移条件Aでアイドルステートから他のステートに遷移し、遷移条件Bまたは遷移条件Zでアイドルステートに戻るサブステートマシンSub2を生成する。また、分割部23は、遷移条件Cでアイドルステートから他のステートに遷移し、遷移条件Dでアイドルステートに戻るサブステートマシンSubmを生成する。なお、分割部23は、他にも、分割元となるステートマシンから分割した各ステートを含むサブステートマシンを生成しているものとする。
図1に戻り、出力部24は、設定値が基準値を満たすRTLを出力する。例えば、出力部24は、判定部22からRTLを受付けると、RTLをそのまま、若しくは、RTLに基づく回路図等を出力する。例えば、出力部24は、プリンタやモニタ等の情報出力装置により実現される。
このように、動作合成装置1は、動作合成されたRTLの回路情報の設定値が、設定された基準値を超える場合は、ステートマシンを分割し、回路情報の設定値が基準値を下回るように、RTLを修正する。この結果、動作合成装置1は、RTLのタイミング解析の結果に基づいて利用者が動作記述を修正せずとも、利用者が望む回路のRTLを出力することができるので、回路設計に係る時間を短縮することができる。
以下、図を用いて、動作合成装置1の効果を説明する。図8は、ステートの数による遅延の一例を説明する図である。例えば、図8に示すステートマシンは、2つのステートを有する。かかる場合、ステートマシンは、ステート1の成立条件が成立すると、図8中(H)に示す太線経路を介して、ステート1を示す値を出力する。この結果、図8に示すステートマシンは、図8中(I)に示すように、ステートの値を保持するFFの遅延、ステート1の成立条件である(1)の遅延、AND回路aおよびOR回路cの遅延を合計した遅延を有する。かかる遅延がクロック周期以内に収まる場合、ステートマシンは、回路の動作タイミング上問題とはならない。
一方、図9は、ステートの数が増大した際に生じる遅延の一例を説明する図である。例えば、図9に示すステートマシンは、3つのステートを有する。かかる場合、ステートマシンは、図9中の太線に示す経路を介して、ステート1を示す値を出力する。ここで、図9に示すステートマシンは、図8に示すステートマシンよりも多くのステートを有するため、回路規模が増大する。この結果、図9中の太線に示す経路は、図8中(H)に示した経路よりも長くなるため、図9中(J)に示すように、信号を保持するためのバッファfが設置されることとなる。この結果、図9に示すステートマシンは、図9中(L)に示すように、ステートの値を保持するFFの遅延、ステート1の成立条件である(1)の遅延、AND回路a、OR回路d、OR回路eおよびバッファfの遅延を合計した遅延を有する。この結果、ステートマシンは、遅延がクロック周期以内に収まらず、回路の動作タイミング上問題になってしまう。
また、図10は、ステートの参照先の数による遅延の一例を説明する図である。例えば、図10に示すステートマシンは、3つの参照先を有する。かかる場合、図10の(M)に示すように、ステートマシンの出力は、1つのFFを介して、参照先がステートマシンを参照するためのFFに分配される。この結果、図10に示すステートマシンは、図10中(N)に示すように、ステートマシンの出力を保持するFFの遅延と、かかるFFから参照先が参照するFFまでの経路(1)の遅延とを合計した遅延を有する。
一方、図11は、ステートの参照先が増大した際に生じる遅延の一例を説明する図である。例えば、図11に示すステートマシンは、7つの参照先を有する。かかる場合、1つのFFの出力では、参照先が参照する各FFを駆動できない恐れがあるため、図11中(O)に示すように、バッファaが追加される。また、図11に示す例では、参照先の増加に伴い、参照先が参照するFFの設置位置がステートマシンの出力を保持するFFから離れるため、バッファbおよびバッファcが追加される。かかる場合、図11に示すステートマシンは、図11中(R)に示すように、ステートマシンの出力を保持するFFの遅延と、かかるFFから参照先が参照するFFまでの経路(1)の遅延とを合計した遅延に加え、各バッファa〜cの遅延を合計した遅延を有する。この結果、ステートマシンは、遅延がクロック周期以内に収まらず、回路の動作タイミング上問題になってしまう。
上述したように、ステートマシンのステート数や参照先が増大した場合は、ステートマシン自体が回路の動作タイミング上問題となる。そこで、動作合成装置1は、ステートマシンを複数のステートマシンに分割することで、ステートマシンあたりのステート数や参照先を削減する。
なお、ステートマシンが回路の動作タイミング上問題となるか否かは、RTLのタイミング解析から特定することができる。このため、RTLのタイミング解析や実装時の解析等でステートマシンが問題となった場合は、動作記述を見直し、自動生成されるステートマシンを分割させることで、ステートマシンあたりのステート数や参照先を削減する手法も考えられる。
例えば、図12は、動作記述を見直してステートマシンを分割させる処理の一例を説明する図である。図12に示す例では、利用者は、処理Aの動作記述から生成されたRTLのタイミング解析の結果、ステートマシンがタイミング上問題となる場合は、図12中(S)に示すように、処理Aを処理A1と処理A2とに分けた動作記述を新たに作成する。この結果、動作合成システムは、図12の(T)に示すように、処理A1を実行するデータパス部とステートマシン部、および、処理A2を実行するデータパス部とステートマシン部とを有するモジュールのRTLを出力する。しかしながら、タイミング解析の結果を元に利用者が動作記述を作成し直す場合は、回路設計に要する時間を増大される恐れがある。
一方、図13は、実施例1に係る動作合成装置が実行する処理を説明する図である。例えば、動作合成装置1は、図13中(U)に示すように、RTLのタイミング解析の結果ではなく、RTLの回路情報である設計値に着目し、ステートマシンを分割する。具体的には、動作合成装置1は、設計値が基準値を超えていた場合は、生成されたステートマシンが回路の動作タイミング上問題となりえると判定する。この結果、動作合成装置1は、図13中(V)に示すように、RTLを修正し、ステートマシンをメインステートマシンとサブステートマシンとに分割する。この結果、動作合成装置1は、RTLのタイミング解析や、動作記述の修正を行わずとも、ステートマシンが問題となるのを解消できるので、回路設計に係る時間を短縮することができる。
ここで、図14は、ステートマシンの分割による効果を説明する図である。例えば、図14に示す例では、動作合成装置1は、ステート数がn個のステートマシンを、ステート数がk個の複数のサブステートマシンと、ステート数がm個のメインステートマシンとに分割する。ここで、値「m」は、設計値であるステートマシンのステート数「n」を基準値の値「k」で除算した値を切り上げた値である。
かかる分割を行った場合、動作合成装置1は、メインステートマシンおよびサブステートマシンのステートの数を削減する。この結果、メインステートマシンおよびサブステートマシンの配線が短くなる結果、信号を補償するバッファが不要となる。また、動作合成装置1は、図14中(W)に示すように、ステートマシンを分割することで、各ステートマシンの参照先を削減する。この結果、サブステートマシンの信号を補償するバッファや
参照先のFFを駆動させるためのバッファが不要となるので、動作合成装置1は、ステートマシンの遅延をクロック周期内に収めることができる。
なお、動作合成部21、判定部22、分割部23は、電子回路等で実現されてもよい。ここで、電子回路の例として、ASIC(Application Specific Integrated Circuit)やFPGA(Field Programmable Gate Array)などの集積回路、またはCPU(Central Processing Unit)やMPU(Micro Processing Unit)などを適用する。
また、基準値記憶部10、設定値記憶部11、分割結果記憶部12は、記憶装置である。ここで、記憶装置の例として、RAM(Random Access Memory)、ROM(Read Only Memory)、フラッシュメモリ(flash memory)などの半導体メモリ素子を適用する。
次に、図15を用いて、動作合成装置1が実行する処理の流れの一例を説明する。図15は、実施例1に係る動作合成装置が実行する処理の流れを説明するフローチャートである。まず、動作合成装置1は、設定値記憶部11から、ステートマシンのステート数nを取得する(ステップS101)。続いて、動作合成装置1は、基準値記憶部10から、基準値kを取得する(ステップS102)。そして、動作合成装置1は、nをkで除算した値が1よりも大きいか否かを判定する(ステップS103)。すなわち、動作合成装置1は、nがkを超えるか否かを判定する。
ここで、動作合成装置1は、nをkで除算した値が1よりも大きい場合(ステップS103:Yes)、すなわち、nがkを超える場合は、ステートマシンの分割を要すると判定する(ステップS104)。また、動作合成装置1は、メインステートマシンのステート数を算出する(ステップS105)。具体的には、動作合成装置1は、n/kを切り上げた値をメインステートマシンのステート数MainST_numに設定する。
また、動作合成装置1は、サブステートマシンのステート数を算出する(ステップS106)。具体的には、動作合成装置1は、基準値kをサブステートマシンのステート数SubST_numに設定する。そして、動作合成装置1は、ステートマシンを分割するステートマシン分割処理を実行し(ステップS107)、処理を終了する。一方、動作合成装置1は、nをkで除算した値が1以下となる場合(ステップS103:No)、すなわち、nがk以下となる場合は、ステートマシンの分割が不要と判定し(ステップS108)、処理を終了する。
続いて、図16を用いて、図15中ステップS107に示したステートマシン分割処理の流れの一例を説明する。図16は、実施例1に係る動作合成装置が実行するステートマシン分割処理の流れを説明するフローチャートである。まず、動作合成装置1は、設計値記憶部11に記憶されたステートの情報を、番号が若い順にSubST_num個ずつデータを取得する(ステップS201)。
次に、動作合成装置1は、メインステートマシンにステートを1つ追加する(ステップS202)。例えば、動作合成装置1は、メインステートマシンのステートを示す情報として、id_m=0〜(MainST_num−1)を設定する。また、動作合成装置1は、id_k=0として、サブステートマシンにIDLEステートを作成する(ステップS203)。
ここで、動作合成装置1は、id_m==0を満たすか否かを判定する(ステップS204)。すなわち、動作合成装置1は、メインステートマシンにステートが設定されているか否かを判定する。そして、動作合成装置1は、id_m==0を満たさない場合は(ステップS204、No)、IDLEステートをリセット解除時のステートにする(ステップS205)。続いて、動作合成装置1は、取得したk個のステートの情報から、id_k番目のデータを選択する(ステップS206)。
そして、動作合成装置1は、選択したデータをサブステートマシンのデータとしてコピーする(ステップS207)。例えば、動作合成装置1は、選択したデータの各情報に含まれる「org」を「sub」に変更したデータを生成する。また、動作合成装置1は、選択したデータの遷移元が、ステップS201で取得したステートであるか否かを判定する(ステップS208)。
そして、動作合成装置1は、選択したデータの遷移元が、ステップS201で取得したステートではないと判定した場合は(ステップS208:Yes)、以下の処理を実行する。まず、動作合成装置1は、選択したデータの遷移元ステートインデックスと遷移元からの遷移条件とを、id_mが示すメインステートマシンのステートの情報としてコピーする(ステップS209)。次に、動作合成装置1は、選択したデータの遷移元からの遷移条件を、サブステートマシンのアイドルステートの遷移先への遷移条件にコピーし、アイドルステートの遷移先ステートインデックスをid_kに設定する(ステップS210)。
そして、動作合成装置1は、選択したデータの遷移元ステートインデックスからコピーしたサブステートマシンの遷移元ステートインデックスの[a]の値を「0」(すなわち、アイドルステート)に設定する(ステップS211)。続いて、動作合成装置1は、選択したデータの遷移先が、ステップS201で取得したステート以外のステートであるか否かを判定する(ステップS212)。
そして、動作合成装置1は、選択したデータのコピー元の遷移先が、ステップS201で取得したステート以外のステートであると判定した場合は(ステップS212:Yes)、以下の処理を実行する。まず、動作合成装置1は、選択したデータの遷移先ステートインデックスと遷移先への遷移条件とをメインステートマシンのステート情報としてコピーする(ステップS213)。次に、動作合成装置1は、選択したデータの遷移先への遷移条件をサブステートマシンのアイドルステートの遷移元からの遷移条件にコピーし、アイドルステートの遷移先ステートインデックスの値[b]を「id_k」の値に設定する(ステップS214)。そして、動作合成装置1は、選択したデータからコピーしたサブステートマシンの遷移元ステートインデックスの[a]を「0」(すなわち、アイドルステート)に設定する(ステップS215)。
続いて、動作合成装置1は、id_kの値がSubST_numの値以下であるか否かを判定する(ステップS216)。そして、動作合成装置1は、id_kの値がSubST_numの値よりも大きい場合は(ステップS216:No)、id_mの値がMainST_numの値より小さいか否かを判定する(ステップS217)。そして、動作合成装置1は、id_mの値がMainST_numの値以上である場合は(ステップS217:No)、処理を終了する。
一方、動作合成装置1は、id_mの値がMainST_numの値より小さい場合は(ステップS217:Yes)、id_mの値を1インクリメントし(ステップS218)、ステップS201から、各処理を再度実行する。また、動作合成装置1は、id_kの値がSubST_numの値以下である場合は(ステップS216:Yes)、id_kの値を1インクリメントし(ステップS219)、ステップS206から、各処理を再度実行する。
また、動作合成装置1は、選択したデータのコピー元の遷移先が、ステップS201で取得したステートのいずれかであると判定した場合は(ステップS212:No)、ステップS213〜S215をスキップし、ステップS216を実行する。また、動作合成装置1は、選択したデータの遷移元が、ステップS201で取得したステートのいずれかであると判定した場合は(ステップS208:No)、ステップS209〜S211をスキップし、ステップS212を実行する。また、動作合成装置1は、id_m==0を満たす場合は(ステップS204:Yes)、ステップS205の実行をスキップする。
[実施例1の効果]
上述したように、動作合成装置1は、ステートマシンを用いて演算処理を制御する回路のRTLに基づく設計値と、予め定められた基準値とを比較する。そして、動作合成装置1は、設計値が基準値を超える場合は、ステートマシンを複数のステートマシンに分割する。このため、動作合成装置1は、RTLのタイミング解析に基づいて動作記述を修正せずとも、ステートマシンがタイミング上問題とはならない回路のRTLを生成させることができるので、回路設計にかかる時間を短縮することができる。
また、例えば、動作合成装置1は、動作記述の見直しを不要とするので、抽象度が高い動作記述を可能とし、設計のTAT(Turn Around Time)や、シミュレーション時間を短縮することができる。また、動作合成装置1は、動作記述の抽象度を保つ結果、テクノロジや動作周波数が異なる回路に動作記述を流用させることができるので、動作記述の再利用性を向上させることができる。
また、動作合成装置1は、ステートマシンを、基準値と同じ数のステートを有するサブステートマシンと、設計値を基準値で除算した値を切り上げた値と同じ数のステートを有するメインステートマシンとに分割する。このため、動作合成装置1は、各ステートマシンが有するステートの数と、参照先の数を削減することができる。また、動作合成装置1は、ステート間の依存関係を削減するので、配置配線性を向上させることができる。この結果、動作合成装置1は、ステートマシンがタイミング上問題となるのを防ぐことができる。
また、動作合成装置1は、ステートマシンが有するステートの数を示す設計値と基準値とを比較する。この結果、動作合成装置1は、ステートマシンの分割が適切か否かを精度良く判定することができる。
上述した実施例1では、ステートマシンが有するステートの数に基づいて、ステートマシンを分割するか否かを判定する動作合成装置1について説明した。しかしながら、実施形態は、これに限定されるものではない。以下、実施例2として、動作合成装置が実行する処理の他の例を説明する。
例えば、実施例2に係る動作合成装置1aは、回路が処理を完了するまでのレイテンシまたは処理を完了するまでに実行する演算の回数であるオペレーションの数を設計値および基準値とする。また、他の例では、動作合成装置1aは、ステートマシンの各ステートを参照する回数であるfanout数を設計値および基準値とする。
そして、動作合成装置1aは、設計値が基準値を超える場合は、設計値を基準値で除算した値を切り上げた値と同じ数のステートを有するメインステートマシンを生成する。また、動作合成装置1aは、ステートマシンのステート数をメインステートマシンのステート数で除算した値を切り上げた値と同じ数のステートを有するサブステートマシンを生成する。ただし、動作合成装置1aは、サブステートマシンのステート数が予め定められた所定の値(例えば、4)以上となる場合にのみ、ステートマシンをメインステートマシンとサブステートマシンとに分割する。
例えば、動作合成装置1aは、プロセス内のオペレーション数を設計値および基準値とする。ここで、動作合成装置1aは、設計値が「1200」であり基準値が「400」であり、動作記述から合成したステートマシンのステート数が「24」である場合は、以下の分割を実行する。すなわち、動作合成装置1aは、メインステートマシンのステート数が「1200/400=3」、サブステートマシンのステート数が「24/3=8」となるので、ステートマシンの分割を実行する。
一方、動作合成装置1aは、動作記述から合成したステートマシンのステート数が「9」である場合は、メインステートマシンのステート数が「1200/400=3」、サブステートマシンのステート数が「9/3=3」となる。かかる場合、ステートマシンをメインステートマシンとサブステートマシンとに分割しても、ステートマシンのステート数や参照先を削減することができない。このため、動作合成装置1aは、ステートマシンの分割を実行せずに、処理を終了する。
図17は、実施例2に係る動作合成装置の機能構成の一例を説明する図である。図17に示す例では、動作合成装置1aは、基準値記憶部10a、設定値記憶部11、分割結果記憶部12、入力部20、動作合成部21、判定部22a、分割部23a、出力部24を有する。なお、以下の説明では、実施例1と同様の機能を発揮するものについては、同一の符号を付し、以下の説明を省略する。
基準値記憶部10aは、予め設定される基準値として、レイテンシの値、オペレーションの数、fanout数等を記憶する。判定部22aは、基準値記憶部10aから基準値を取得すると、設定値記憶部11から、基準値と同種の情報である設定値を取得する。そして、判定部22aは、設定値が基準値を超える場合は、設定値記憶部11に格納された情報を分割部23aに出力し、設定値が基準値を超えない場合は、設定値記憶部11に格納された情報を出力部24に出力する。
分割部23aは、設計値を基準値で除算した値でステートマシンが有するステートの数を除算した値が所定の閾値よりも小さい場合は、ステートマシンを分割せずに処理を終了する。一方、分割部23aは、設計値を基準値で除算した値でステートマシンが有するステートの数を除算した値が所定の閾値以上となる場合は、ステートマシンの分割を行う。すなわち、分割部23aは、設計値を基準値で除算した値を切り上げた値と同じ数のステートを有するメインステートマシンを生成する。また、分割部23aは、ステートマシンが有するステートの数をメインステートマシンが有するステートの数で除算した値を切り上げた値と同じ数のステートを有するサブステートマシンを生成する。
なお、分割部23aがステートマシンを分割する処理については、分割部23が実行する処理と同様の処理によって実現されるものとし、以下の説明を省略する。
次に、図18を用いて、動作合成装置1aが実行する処理の流れの一例を説明する。図18は、実施例2に係る動作合成装置が実行する処理の流れを説明するフローチャートである。まず、動作合成装置1aは、設定値記憶部11から、設計値dとステートマシンのステート数nを取得し(ステップS201)、基準値記憶部10aから、基準値kを取得する(ステップS202)。そして、動作合成装置1aは、設計値dを基準値kで除算した値が1よりも大きく、かつ、dをkで除算した値でnを除算した値を切り上げた値が所定の値(4)以上となるか否かを判定する(ステップS203)。
そして、動作合成装置1aは、ステップS203の条件を満たす場合(ステップS203:Yes)、すなわち、設計値が基準値をこえ、かつ、サブステートマシンのステート数が所定の閾値以上となる場合は、以下の処理を実行する。すなわち、動作合成装置1aは、ステートマシンの分割を要すると判定し(ステップS204)、メインステートマシンのステート数を算出する(ステップS205)。具体的には、動作合成装置1aは、d/kを切り上げた値をメインステートマシンのステート数MainST_numに設定する。
また、動作合成装置1aは、サブステートマシンのステート数を算出する(ステップS206)。具体的には、動作合成装置1aは、nをメインステートマシンのステート数MainST_numで除算した値を切り上げた値をSubST_numに設定する。そして、動作合成装置1aは、ステートマシンを分割するステートマシン分割処理を実行し(ステップS207)、処理を終了する。一方、動作合成装置1aは、ステップS203の条件を満たさない場合(ステップS203:No)、すなわち、設定値が基準値を超えない場合、または、サブステートマシンのステート数が所定の値より小さい場合は、以下の処理を実行する。すなわち、動作合成装置1aは、ステートマシンの分割が不要と判定し(ステップS208)、処理を終了する。
[実施例2の効果]
このように、動作合成装置1aは、設計値を基準値で除算した値でステートマシンが有するステートの数を除算した値が所定の閾値以上となる場合にのみ、ステートマシンの分割を行う。すなわち、動作合成装置1aは、サブステートマシンのステートの数が所定の値以上となる場合には、ステートマシンの分割を行うと判定する。そして、動作合成装置1aは、設計値を基準値で除算した値を切り上げた値と同じ数のステートを有するメインステートマシンを生成する。また、動作合成装置1aは、ステートマシンが有するステートの数をメインステートマシンが有するステートの数で除算した値を切り上げた値と同じ数のステートを有するサブステートマシンを生成する。
このため、動作合成装置1aは、不要なステートマシンの分割を不要とするので、回路設計にかかる時間をさらに短縮することができる。また、動作合成装置1aは、不要なステートマシンの分割により、分割後のステートマシンがタイミング上問題となるといった不具合を軽減することができる。
また、動作合成装置1aは、回路が所定を完了するまでの期間であるレイテンシの値を設計値および基準値とする。ここで、ステートマシンが有するステートの数は、レイテンシの値に基づいて推定できる。このため、動作合成装置1aは、レイテンシの値を推定値および基準値として比較することで、ステートマシンのRTLが生成される前に、ステートマシンの分割が必要か否かを判定できるので、回路設計にかかる時間をさらに短縮できる。
また、動作合成装置1aは、回路が処理を完了するまでに実行する演算の回数であるオペレーションの数を設計値および基準値とする。ここで、ステートマシンが有するステートの数は、オペレーションの数を用いて推定できる。このため、動作合成装置1aは、ステートマシンのRTLが生成される前に、ステートマシンの分割が必要か否かを判定できるので、回路設計にかかる時間をさらに短縮できる。
ここで、fanout数が多い場合は、配線が長くなり、若しくは、参照先のFFが増加するため、バッファが設置される結果、ステートマシンがタイミング上問題となる恐れがある。しかしながら、動作合成装置1aは、ステートマシンが有するステートの参照回数であるfanout数を設計値および基準値とする。この結果、動作合成装置1aは、ステートマシンのfanout数が基準値を超える場合、ステートマシンがタイミング上問題となると判定し、ステートマシンの分割を行うので、分割後の各ステートマシンのfanout数を削減する。このため、動作合成装置1aは、ステートマシンが動作タイミング上問題となるのを防ぐことができる。
上述した実施例1、2では、動作記述から生成されたステートマシンを、基準値と設計値との値に基づく数のステートを有するメインステートマシンとサブステートマシンに分割する動作合成装置1、1aについて説明した。しかしながら、実施形態は、これに限定されるものではない。以下、実施例3として、動作合成装置が実行する処理の他の例を説明する。
例えば、実施例3に係る動作合成装置1bは、fanout数を基準値として記憶し、RTLからfanout数を設定値として取得すると、基準値と設定値とを比較する。そして、動作合成装置1bは、設定値が基準値を超える場合には、設定値の値が基準値よりも小さくなるまで、ステートマシンを順次分割してもよい。
図19は、実施例3に係る動作合成装置の機能構成の一例を説明する図である。図19に示す例では、動作合成装置1bは、基準値記憶部10b、設定値記憶部11、分割結果記憶部12、入力部20、動作合成部21、判定部22b、分割部23b、出力部24を有する。なお、以下の説明では、実施例1、2と同様の機能を発揮するものについては、同一の符号を付し、以下の説明を省略する。
基準値記憶部10bは、予め設定される基準値として、fanout数を記憶する。判定部22bは、設定値記憶部11に記憶されたRTLを解析し、ステートマシンの参照先の数を計数することで、fanout数を特定する。そして、判定部22bは、特定したfanout数、すなわち設定値が、基準値記憶部10bに記憶された基準値を超える場合は、設定値記憶部11に格納された情報を分割部23bに出力する。一方、判定部22bは、設定値が基準値を超えない場合は、設定値記憶部11に格納された情報を出力部24に出力する。
分割部23bは、設定値が基準値を超える場合は、設定値が基準値よりも小さくなるまでステートマシンの分割を行う。より具体的には、分割部23bは、ステートマシンを同程度のステート数を有する2つのサブステートマシンに分割するとともに、サブステートマシン間の遷移を示す1つのメインステートマシンとに分割する。そして、分割部23bは、サブステートマシンのfanout数を計数し、係数したfanout数が基準値を超える場合には、生成した各サブステートマシンをそれぞれ2つのサブステートマシンに分割する。また、分割部23bは、分割したサブステートマシンのfanout数を計測し、fanout数が基準値を超える場合は、さらに各サブステートマシンを分割する。
以下、図20を用いて、分割部23bがステートマシンをメインステートマシンとサブステートマシンとに分割する処理の一例を説明する。図20は、実施例3に係る動作合成装置がステートマシンを分割する処理の例を説明する図である。なお、図20に示す例では、図7と同様に、メインステートマシンが有するn個のステートであるST1〜STnと、各ステートの遷移を示す矢印でステートマシンを表した。
例えば、分割部23bは、図20の(X)に示すステートST1〜STnを有するステートマシンのRTLを取得する。かかる場合、分割部23bは、初回の分割処理として、ステートマシンを、2つのステートを有するメインステートマシンと、ステートマシンを2つに分割したサブステートマシンとに分割する。
例えば、分割部23bは、ステートマシンをステートST1〜STn/2までのステートと、ステートSTn/2+1〜STnまでのステートとに分割する。また、分割部23bは、ステートSTn/2からステートSTn/2+1へ遷移する遷移条件Bを特定し、ステートSTnからステートST1へ遷移する遷移条件Dを特定する。そして、分割部23bは、2つのステートを有するメインステートマシンを生成し、メインステートマシンが有するステート間の遷移条件として遷移条件Bおよび遷移条件Dを設定する。
また、分割部23bは、ステートST1〜STn/2までのステートに、アイドルステートを追加する。また、分割部23bは、遷移条件DでアイドルステートからステートST1に遷移し、遷移条件BでステートSTn/2からアイドルステートに遷移するよう、ステートST1、STn/2の遷移条件と遷移先ステートとを設定する。そして、分割部23bは、ステートST1〜STn/2の名称を、Sub1_ST1〜Sub1_STn/2に変更する。
また、分割部23bは、ステートSTn/2〜STnまでのステートに、アイドルステートを追加する。また、分割部23bは、遷移条件BでアイドルステートからステートSTn/2に遷移し、遷移条件DでステートSTnからアイドルステートに遷移するよう、ステートSTn/2、STnの遷移条件と遷移先ステートとを設定する。そして、分割部23bは、ステートSTn/2+1〜STnの名称を、Sub2_ST1〜Sub2_STn/2に変更する。
この結果、分割部23bは、図20中(X)に示すように、遷移条件BでMain_ST1からMain_ST2にステートが遷移し、遷移条件DでMain_ST2からMain_ST1にステートが遷移するメインステートマシンを生成する。また、分割部23bは、遷移条件DでアイドルステートからステートSub1_ST1にステートが遷移し、遷移条件BでSub1_STn/2からアイドルステートにステートが遷移するサブステートマシンを生成する。また、分割部23bは、遷移条件BでアイドルステートからステートSub2_ST1にステートが遷移し、遷移条件DでSub2_STn/2からアイドルステートにステートが遷移するサブステートマシンを生成する。
すなわち、分割部23bは、遷移条件Bでステートの遷移が始まり、遷移要件Dでステートの遷移が停止するサブステートマシンと、遷移条件Dでステートの遷移が始まり、遷移要件Bでステートの遷移が停止するサブステートマシンとを生成する。また、分割部23bは、遷移条件Bと遷移条件Dでステートが変化するメインステートマシンを生成する。
また、分割部23bは、生成した各サブステートマシンのfanout数を計数し、係数したfanout数、すなわち設計値が基準値を超えるか否かを判定する。そして、分割部23bは、設計値が基準値を超える場合は、生成した各サブステートマシンをさらに分割する。
例えば、図20に示す例では、ステートSTn/4からステートSTn/4+1への遷移条件は、遷移条件Aであり、ステートST3n/4からステートST3n/4+1への遷移条件は、遷移条件Cである。かかる場合、分割部23bは、メインステートマシンのステート数を倍にし、遷移条件A〜Dでステートが順次遷移するメインステートマシンを新たに生成する。
また、分割部23bは、ステートマシンを4つのグループに分割する。例えば、分割部23bは、ステートST1〜STn/4までのステートと、ステートSTn/4+1〜STn/2までのステートと、ステートSTn/4+1〜ST3n/4までのステートと、ステートST3n/4+1〜STnまでのステートとに分割する。そして、分割部23bは、分割した各グループにアイドルステートを追加した4つのサブステートマシンを生成し、特定した遷移条件A〜Dで、それぞれ個別のサブステートマシンがステートの遷移を開始するように遷移先条件と遷移先ステートとを設定する。
この結果、分割部23bは、図20中(Z)に示すように、遷移条件AでMain_ST1からMain_ST2にステートが遷移し、遷移条件BでMain_ST2からMain_ST3にステートが遷移するメインステートマシンを生成する。また、分割部23bは、遷移条件CでMain_ST3からMain_ST4にステートが遷移し、遷移条件DでMain_ST4からMain_ST1にステートが遷移するメインステートマシンを生成する。
また、分割部23bは、遷移条件DでアイドルステートからステートSub1_ST1にステートが遷移し、遷移条件AでSub1_STn/4からアイドルステートにステートが遷移するサブステートマシンを生成する。また、分割部23bは、遷移条件AでアイドルステートからステートSub2_ST1にステートが遷移し、遷移条件BでSub2_STn/4からアイドルステートにステートが遷移するサブステートマシンを生成する。また、分割部23bは、遷移条件BでアイドルステートからステートSub3_ST1にステートが遷移し、遷移条件CでSub3_STn/4からアイドルステートにステートが遷移するサブステートマシンを生成する。また、分割部23bは、遷移条件CでアイドルステートからステートSub4_ST1にステートが遷移し、遷移条件DでSub4_STn/4からアイドルステートにステートが遷移するサブステートマシンを生成する。
また、分割部23bは、サブステートマシンのfanout数が基準値以下となるまで、上述した処理を繰り返し実行し、メインステートマシンを順次分割する。この結果、動作合成装置1bは、基準値を満たすステートマシンを生成できるので、ステートマシンがタイミング上問題となるのを防ぐことができる。
次に、図21を用いて、動作合成装置1bが実行する処理の流れの一例を説明する。図21は、実施例3に係る動作合成装置が実行する処理の流れを説明するフローチャートである。まず、動作合成装置1bは、設定値記憶部11から、ステートマシンのステートに対するfanout数である設計値dとステートマシンのステート数nを取得し(ステップS301)、基準値記憶部10bから、基準値kを取得する(ステップS302)。そして、動作合成装置1bは、設計値dが基準値kよりも大きいか否かを判定する(ステップS303)。
そして、動作合成装置1bは設計値dが基準値kよりも大きい場合は(ステップS303:Yes)、ステートマシンの分割を要すると判定し(ステップS304)、メインステートマシンのステート数を算出する(ステップS305)。具体的には、動画合成装置1bは、メインステートマシンのステート数の初期値としてMainST_num=2を設定する。また、動作合成装置1bは、ステップS305の処理が2回目以降である場合は、メインステートマシンのステート数を2倍にする。
続いて、動作合成装置1bは、サブステートマシンのステート数を算出する(ステップS306)。具体的には、動作合成装置1bは、サブステートマシンのステート数SubST_numとして、ステートマシンが有するステート数nをメインステートマシンのステート数MainST_numで除算した値を切り上げた値を設定する。そして、動作合成装置1bは、図16に示したステートマシン分割処理を実行する(ステップS307)。
ここで、動作合成装置1bは、分割結果となるサブステートマシンが有するステートの参照先の数ddを算出し(ステップS308)、算出した数ddがkよりも大きいか否かを判定する(ステップS309)。そして、動作合成装置1bは、算出した数ddがk以下となる場合は(ステップS309:No)、処理を終了する。一方、動作合成装置1bは、算出した数ddがkよりも多い場合は(ステップS309:Yes)、ステップS304を再度実行する。また、動作合成装置1bは、設計値dの値が基準値kの値以下となる場合は(ステップS303:No)、ステートマシンの分割を不要と判定し(ステップS310)、処理を終了する。
[実施例3の効果]
上述したように、動作合成装置1bは、設計値が基準値を超える場合は、設計値が基準値以下となるまで、ステートマシンを順次分割する。このため、動作合成装置1bは、動作記述から生成されたステートマシンがタイミング上問題となるのを防ぐとともに、回路設計に係る時間を短縮できる。
上述した実施例1〜3では、設計値が基準値を超える場合は、ステートマシンをメインステートマシンとサブステートマシンとに分割する動作合成装置1〜1bについて説明した。しかしながら、実施形態は、これに限定されるものではない。以下、実施例4として、動作合成装置が実行する処理の他の例を説明する。
例えば、実施例4に係る動作合成装置1cは、RTLに基づく設計値と予め定められた基準値とを比較する。そして、動作合成装置1cは、設計値が基準値を超える場合は、ステートマシンが有するステートの参照先となるフリップフロップを追加する。この結果、動作合成装置1cは、データパス部がステートを参照する際の参照先となるフリップフロップを分散させることができるので、参照先を駆動させるバッファを削減する結果、ステートマシンが動作タイミング上問題となるのを防ぐことができる。
図22は、実施例4に係る動作合成装置の機能構成の一例を説明する図である。図22に示す例では、動作合成装置1cは、基準値記憶部10c、設定値記憶部11、分割結果記憶部12a、入力部20、動作合成部21a、判定部22c、分割部23c、出力部24を有する。なお、以下の説明では、実施例1〜3と同様の機能を発揮するものについては、同一の符号を付し、以下の説明を省略する。
基準値記憶部10cは、基準値記憶部10〜10bと同様に、予め定められた基準値を記憶する。例えば、基準値記憶部10cは、回路が処理を完了するまでのレイテンシまたは処理を完了するまでに実行する演算の回数であるオペレーションの数を基準値として記憶する。また、他の例では、基準値記憶部10cは、ステートマシンが有するステート数またはステートマシンの各ステートを参照する回数であるfanout数を基準値として記憶する。
分割結果記憶部12aは、分割部23cによって追加されたフリップフロップの情報を記憶する。例えば、図23は、実施例4に係る分割結果記憶部が記憶する情報の一例を説明する図である。例えば、分割結果記憶部12aは、図23に示すように、追加されたフリップフロップであるコピーFFのインデックスとして「cpff_id[n][c]」を記憶する。
図22に戻り、説明を続ける。動作合成部21aは、動作合成部21と同様に、動作記述からRTLを動作合成する。また、動作合成部21aは、後述するように、分割部23cによってコピーFFのインデックスが分割結果記憶部12aに登録された場合は、コピーFFのインデックスを用いて、ステートの参照先を分割させたRTLを生成する。
例えば、第1のコピーFFのインデックスと第2のコピーFFのインデックスが分割結果記憶部12aに登録される。かかる場合、動作合成部21aは、ステートマシンが有するステートのうち半分のステートの参照先インデックスを、第1のコピーFFのインデックスに変更し、残りのステートの参照先インデックスを第2のコピーFFのインデックスに変更する。
ここで、図24は、実施例4に係る動作合成装置が参照先を分散させる処理の一例を説明する図である。例えば、図24中の(a)に示す例では、ステートマシンのステートの参照先となるFFは、ステートマシンを参照する6つの回路と接続される。かかる場合、動作合成装置1cは、図24中(b)に示すように、参照先となるFFを追加し、各ステートの参照先を分散させる。この結果、動作合成装置1cは、各FFに接続される回路の数を3つに削減できるので、信号を補償するバッファを不要とする結果、ステートマシンが動作タイミング上問題となるのを防ぐことができる。
図22に戻り、判定部22cは、判定部22〜22bと同様に、設定値が基準値を超えるか否かを判定する。例えば、判定部22cは、設定値記憶部11に記憶されたRTLを解析し、基準値に対応する種別の設定値を特定する。そして、判定部22cは、特定した設定値が基準値を超える場合は、設定値記憶部11に格納された情報を分割部23cに出力し、設定値が基準値を超えない場合は、設定値記憶部11に格納された情報を出力部24に出力する。
分割部23cは、設定値が基準値を超える場合は、ステートマシンのステートの参照先となるフリップフロップを追加する。具体的には、分割部23cは、設定値を基準値で除算した値を切り上げた値を算出する。そして、分割部23cは、算出した値と同じ数のコピーFFのインデックスを生成し、生成したコピーFFのインデックスを分割結果記憶部12aに登録する。この結果、分割部23cは、ステートマシンのステートの参照先を分割することができる。
次に、図25を用いて、動作合成装置1cが実行する処理の流れの一例を説明する。図25は、実施例4に係る動作合成装置が実行する処理の流れを説明するフローチャートである。なお、図25に示す例では、コピーFFを示す変数cpff_idの初期値が「0」に設定されているものとする。
まず、動作合成装置1cは、設定値記憶部11から、設計値dとステートマシンのステート数nを取得し(ステップS401)、基準値記憶部10cから、基準値kを取得する(ステップS402)。そして、動作合成装置1cは、設計値dを基準値kで除算した値が1よりも大きいか否かを判定する(ステップS403)。
そして、動作合成装置1cは設計値dを基準値kで除算した値が1よりも大きい場合は(ステップS403:Yes)、ステートマシンの分割を要すると判定し(ステップS404)、コピーFFの数を算出する(ステップS405)。具体的には、動画合成装置1cは、コピーFFの数として、設計値dを基準値kで除算した値を切り上げた値をコピーFFの数であるCopyFF_numとする。
続いて、動作合成装置1cは、ステートマシンのステート数nをコピーFFの数で除算した値を算出する(ステップS406)。具体的には、動作合成装置1cは、nをCopyFF_numで除算した値を切り上げた値をST_numとする。また、動作合成装置1cは、設計値記憶部11に登録されたステートマシンのステートを、先頭からST_num個取得する(ステップS407)。そして、動作合成装置1cは、取得したステートの参照先インデックスをコピーFFのインデックスに書換える(ステップS408)。例えば、動作合成装置1cは、取得したステートの参照先インデックスを「cpff_id=0」に書換える。
また、動作合成装置1cは、cpff_idの値がCopyFF_numよりも小さいか否かを判定する(ステップS409)。そして、動作合成装置1cは、cpff_idの値がCopyFF_numの値以上となる場合は(ステップS409:No)、処理を終了する。一方、動作合成装置1cは、cpff_idの値がCopyFF_numよりも小さい場合は(ステップS409:Yes)、cpff_idの値を1つインクリメントし(ステップS410)、ステップS407を再度実行する。また、動作合成装置1cは、設定値dを基準値kで除算した値が1以下となる場合は(ステップS403:No)、ステートマシンの分割が不要であると判定し(ステップS411)、処理を終了する。
[実施例4の効果]
上述したように、動作合成装置1cは、設計値と基準値とを比較し、設計値が基準値を超える場合は、ステートマシンのステートの参照先となるフリップフロップを追加した回路情報を出力する。このため、動作合成装置1cは、ステートマシンが動作タイミング上問題となるのを防ぎつつ、回路設計にかかる時間を短縮することができる。また、ステートマシンが生成される前であっても、データパス部が参照先とするFFの数を設定することができる。このため、動作合成装置1cは、レイテンシの値やオペレーション数の数等、ステートマシンを生成する前に比較可能な基準値と設定値とを用いた場合は、ステートマシン回路設計にかかる時間をさらに短縮できる。
また、動作合成装置1cは、設計値を基準値で除算した値に応じた数のフリップフロップを追加した回路情報を出力する。このため、動作合成装置1cは、ステートマシンのステートの参照先を、基準値に対する設計値の割合に応じた数に分割させることができるので、ステートマシンがタイミング上問題となるのを防ぐことができる。
これまで本発明の実施例について説明したが、実施例は、上述した実施例以外にも様々な異なる形態にて実施されてよいものである。そこで、以下では実施例5として他の実施例を説明する。
[ステートマシンを分割する処理について]
上述した説明では、動作合成装置1〜1bは、ステートマシンをメインステートマシンとサブステートマシンとに分割した。ここで、動作合成装置1〜1bがステートマシンを分割する処理は、上述した処理以外にも、任意の処理を適用して良い。すなわち、動作合成装置1〜1bは、ステートマシンの分割手法に係らず、RTLのタイミング解析を行わずとも、設定値と基準値の比較結果からステートマシンが動作タイミング上問題となるか否かを判断する。そして、動作合成装置1〜1bは、設定値と基準値の比較結果からステートマシンが動作タイミング上問題となる場合は、ステートマシンを分割するので、回路設計に係る時間を短縮できる。
[基準値と設定値について]
上述した実施例1〜4では、レイテンシの値、オペレーション数、ステートマシンのステート数、ステートに対応するfanout数を基準値および設定値とする例について説明した。かかる基準値と設定値は、あくまで一例であり、動作合成装置1〜1cは、RTLのタイミング解析前にステートマシンが動作タイミング上問題となるか否かを判定できるのであれば、任意の情報を基準値および設定値として採用することができる。すなわち、実施例1〜4に係る動作合成装置1〜1cは、レイテンシの値、オペレーション数、ステートマシンのステート数、ステートに対応するfanout数を基準値および設定値としてもよい。
また、動作合成装置1〜1cは、複数種別の情報を組み合わせた基準値および設定値を用いて、ステートマシンが動作タイミング上問題となるか否かを判定してもよい。また、基準値および設定値は、ユーザが外部から任意の値を設定するだけでなく、回路デザインの動作周波数や、テクノロジライブラリの種類から推定される値であってもよい。
[基準値について]
上述した動作合成装置1〜1cに設定する基準値は、任意の値を設定することができる。例えば、利用者は、回路の設計、用途、配線の内容等に応じて、随時基準値を変更することができる。また、係る基準値の値は、回路に要求される機能、設計、用途、配線等の内容に応じて、自動的に定められる値であってもよく、利用者が任意に設定する値であってもよい。
[機能構成について]
上述した処理のうち、自動的に行われるものとして説明した処理の全部または一部を手動的におこなうこともできる。あるいは、手動的におこなわれるものとして説明した処理の全部または一部を公知の方法で自動的におこなうこともできる。この他、上記文書中や図面中で示した処理手順、具体的名称、各種のデータやパラメータを含む情報については、特記する場合を除いて任意に変更することができる。
また、図示した各装置の各構成要素は機能概念的なものであり、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、各装置の分散や統合の具体的形態は図示のものに限られない。つまり、その全部または一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的または物理的に分散・統合して構成することができる。
さらに、各装置にて行なわれる各処理機能は、その全部または任意の一部が、CPUおよび当該CPUにて解析実行されるプログラムにて実現され、あるいは、ワイヤードロジックによるハードウェアとして実現され得る。
[ハードウェア構成]
図26は、実施例1に係る動作合成装置として動作するコンピュータのハードウェア構成を示す図である。図26が示すように、コンピュータ300は、各種演算処理を実行するCPU(Central Processing Unit)310、ROM(Read Only Memory)320、HDD(Hard Disk Drive)330、RAM(Random Access Memory)340を有する。各装置310〜340は、バス350で接続される。
HDD330は、上述した判定部22〜22c、分割部23〜23cと同様の処理をコンピュータ300に実行させる分割プログラム330aを記憶する。CPU310は、HDD330に記憶された分割プログラム330aを読み出して、RAM340に展開して実行することで、各種の処理を行う。
なお、上記の分割プログラム330aは、必ずしもHDD330に記憶されている必要はない。例えば、コンピュータ300が読み取り可能な記憶媒体に記憶されたプログラムを、コンピュータ300が読み出して実行するようにしてもよい。コンピュータ300が読み取り可能な記憶媒体は、例えば、CD−ROMやDVDディスク、USB(Universal Serial Bus)メモリ等の可搬型記録媒体、フラッシュメモリ等の半導体メモリ、ハードディスクドライブ等が対応する。また、公衆回線、インターネット、LAN(Local Area Network)等に接続された装置にこのプログラムを記憶させておき、コンピュータ300がこれらからプログラムを読み出して実行するようにしてもよい。
1、1a〜1c 動作合成装置
10、10a〜10c 基準値記憶部
11 設定値記憶部
12、12a 分割結果記憶部
20 入力部
21、21a 動作合成部
22、22a〜22c 判定部
23、23a〜23c 分割部
24 出力部

Claims (14)

  1. コンピュータに、
    ステートマシンを用いて演算処理を制御する回路を示す回路情報に基づく設計値が、予め定められた基準値よりも大きいか否かを判定し、
    前記設計値が前記基準値よりも大きい場合は、前記ステートマシンを複数のステートマシンに分割する
    処理を実行させることを特徴とするステートマシン分割プログラム。
  2. 前記分割する処理は、前記設計値が前記基準値よりも大きい場合は、前記基準値と同じ数のステートを有するサブステートマシンと、前記設計値を前記基準値で除算した値に応じた数のステートを有するメインステートマシンとに前記ステートマシンを分割する
    ことを特徴とする請求項1に記載のステートマシン分割プログラム。
  3. 前記分割する処理は、前記設計値を前記基準値で除算した値で前記ステートマシンが有するステートの数を除算した値が所定の閾値よりも小さい場合は、前記ステートマシンを分割せず、前記設計値を前記基準値で除算した値で前記ステートマシンが有するステートの数を除算した値が所定の閾値以上となる場合は、前記設計値を前記基準値で除算した値に応じた値と同じ数のステートを有するメインステートマシンと、前記ステートマシンが有するステートの数をメインステートマシンが有するステートの数で除算した値に応じた値と同じ数のステートを有するサブステートマシンとに前記ステートマシンを分割する
    ことを特徴とする請求項1に記載のステートマシン分割プログラム。
  4. 前記分割する処理は、前記設計値が前記基準値以下となるまで、前記ステートマシンを順次分割することを特徴とする請求項1に記載のステートマシン分割プログラム。
  5. 前記判定する処理は、前記ステートマシンが有するステートの数を示す設計値が、指定されたステートの数を示す基準値よりも大きいか否かを判定することを特徴とする請求項1〜4のうちいずれか1つに記載のステートマシン分割プログラム。
  6. 前記判定する処理は、前記回路が前記所定の処理を完了するまでの期間を示す設計値が、指定された期間を示す基準値よりも大きいか否かを判定することを特徴とする請求項1〜4のうちいずれか1つに記載のステートマシン分割プログラム。
  7. 前記判定する処理は、前記回路が前記処理を完了するまでに実行する演算の回数を示す設計値が、指定された演算の回数を示す基準値よりも大きいか否かを判定することを特徴とする請求項1〜4のうちいずれか1つに記載のステートマシン分割プログラム。
  8. 前記判定する処理は、前記ステートマシンが有するステートの参照回数を示す設計値が、指定された参照回数を示す基準値よりも大きいか否かを判定することを特徴とする請求項1〜4のうちいずれか1つに記載のステートマシン分割プログラム。
  9. コンピュータに、
    ステートマシンを用いて演算処理を制御する回路を示す回路情報に基づく設計値が、予め定められた基準値よりも大きいか否かを判定し、
    前記設計値が前記基準値よりも大きい場合は、前記ステートマシンのステートの参照先となるフリップフロップを追加した回路情報を出力する
    処理を実行させることを特徴とするステートマシン分割プログラム。
  10. 前記出力する処理は、前記設計値を前記基準値で除算した値に応じた数のフリップフロップを追加した回路情報を出力することを特徴とする請求項9に記載のステートマシン分割プログラム。
  11. ステートマシンを用いて演算処理を制御する回路を示す回路情報に基づく設計値が、予め定められた基準値よりも大きいか否かを判定する判定部と、
    前記設計値が前記基準値よりも大きい場合は、前記ステートマシンを複数のステートマシンに分割する分割部と
    を有することを特徴とする情報処理装置。
  12. ステートマシンを用いて演算処理を制御する回路を示す回路情報に基づく設計値が、予め定められた基準値よりも大きいか否かを判定する判定部と、
    前記設計値が前記基準値を超える場合は、前記ステートマシンのステートの参照先となるフリップフロップを追加した回路情報を出力する出力部と
    を有することを特徴とする情報処理装置。
  13. 情報処理装置が、
    ステートマシンを用いて演算処理を制御する回路を示す回路情報に基づく設計値が、予め定められた基準値よりも大きいか否かを判定し、
    前記設計値が前記基準値よりも大きい場合は、前記ステートマシンを複数のステートマシンに分割する
    処理を実行することを特徴とするステートマシン分割方法。
  14. 情報処理装置が、
    ステートマシンを用いて演算処理を制御する回路を示す回路情報に基づく設計値が、予め定められた基準値よりも大きいか否かを判定し、
    前記設計値が前記基準値よりも大きい場合は、前記ステートマシンのステートの参照先となるフリップフロップを追加した回路情報を出力する
    処理を実行することを特徴とするステートマシン分割方法。
JP2014261297A 2014-12-24 2014-12-24 ステートマシン分割プログラム、情報処理装置およびステートマシン分割方法 Pending JP2016122299A (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2014261297A JP2016122299A (ja) 2014-12-24 2014-12-24 ステートマシン分割プログラム、情報処理装置およびステートマシン分割方法
US14/918,631 US9710583B2 (en) 2014-12-24 2015-10-21 Information processing apparatus, state machine dividing method, and computer-readable recording medium

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2014261297A JP2016122299A (ja) 2014-12-24 2014-12-24 ステートマシン分割プログラム、情報処理装置およびステートマシン分割方法

Publications (1)

Publication Number Publication Date
JP2016122299A true JP2016122299A (ja) 2016-07-07

Family

ID=56164469

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2014261297A Pending JP2016122299A (ja) 2014-12-24 2014-12-24 ステートマシン分割プログラム、情報処理装置およびステートマシン分割方法

Country Status (2)

Country Link
US (1) US9710583B2 (ja)
JP (1) JP2016122299A (ja)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11907634B2 (en) 2021-09-01 2024-02-20 International Business Machines Corporation Automating addition of power supply rails, fences, and level translators to a modular circuit design
US20230070516A1 (en) * 2021-09-07 2023-03-09 International Business Machines Corporation Logical clock connection in an integrated circuit design

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH08147338A (ja) * 1994-11-25 1996-06-07 Ricoh Co Ltd ハードウェア機能設計支援装置及びハードウェア機能設計支援方法
JP2012243211A (ja) * 2011-05-23 2012-12-10 Renesas Electronics Corp 回路設計支援システム、回路設計支援方法及びプログラム

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3370304B2 (ja) 2000-01-28 2003-01-27 シャープ株式会社 高位合成システム、高位合成方法、および、高位合成方法の実施に使用される記録媒体
JP4945360B2 (ja) * 2007-07-27 2012-06-06 株式会社日立製作所 設計装置、設計方法及びプログラム
JP6362318B2 (ja) 2012-12-28 2018-07-25 三菱電機株式会社 半導体集積回路設計支援装置、方法及びプログラム

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH08147338A (ja) * 1994-11-25 1996-06-07 Ricoh Co Ltd ハードウェア機能設計支援装置及びハードウェア機能設計支援方法
JP2012243211A (ja) * 2011-05-23 2012-12-10 Renesas Electronics Corp 回路設計支援システム、回路設計支援方法及びプログラム

Also Published As

Publication number Publication date
US20160188759A1 (en) 2016-06-30
US9710583B2 (en) 2017-07-18

Similar Documents

Publication Publication Date Title
US8205182B1 (en) Automatic synthesis of clock distribution networks
US20210103693A1 (en) Dynamic frequency boosting in integrated circuits
US7917882B2 (en) Automated digital circuit design tool that reduces or eliminates adverse timing constraints due to an inherent clock signal skew, and applications thereof
JP2002083001A (ja) 論理回路の設計方法及びそれに使用するセルライブラリ
JP2020507139A5 (ja)
CN106257467B (zh) 用于在设计编译流程中利用针对寄存器重定时的估计的方法和装置
EP3324317A1 (en) Methods for verifying retimed circuits with delayed initialization
US20230342531A1 (en) Methods and apparatus for profile-guided optimization of integrated circuits
US9836568B1 (en) Programmable integrated circuit design flow using timing-driven pipeline analysis
US9047434B2 (en) Clustering for processing of circuit design data
US8631364B1 (en) Constraining VLSI circuits
JP2016122299A (ja) ステートマシン分割プログラム、情報処理装置およびステートマシン分割方法
US8271922B2 (en) System and method for clock optimization to achieve timing signoff in an electronic circuit and electronic design automation tool incorporating the same
US7557606B1 (en) Synchronization of data signals and clock signals for programmable logic devices
JP2014001937A (ja) スキャンテスト方法、プログラムおよびスキャンテスト回路
JP6246445B1 (ja) 高位合成装置、高位合成方法及び高位合成プログラム
US9965581B1 (en) Fanout optimization to facilitate timing improvement in circuit designs
KR102440129B1 (ko) 저전력 모드 지원 컴퓨터 시스템 및 그것의 방법
US10318699B1 (en) Fixing hold time violations using hold time budgets and slacks of setup times
JP6173571B2 (ja) 回路設計装置および回路設計プログラム
Inagi et al. Inter-FPGA routing for partially time-multiplexing inter-FPGA signals on multi-FPGA systems with various topologies
JP2005165405A (ja) 半導体集積回路の設計装置および半導体集積回路の設計方法
JP2013036960A (ja) 遅延スキャンテスト方法、半導体装置及び半導体装置の設計方法
JP2008152329A (ja) 回路解析方法、及び回路解析プログラム、回路シミュレーション装置
Toi et al. Wire congestion aware synthesis for a dynamically reconfigurable processor

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20171113

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20180907

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20181023

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20190423