JP2016520895A - 二重構造クロックツリー合成(cts) - Google Patents

二重構造クロックツリー合成(cts) Download PDF

Info

Publication number
JP2016520895A
JP2016520895A JP2016504387A JP2016504387A JP2016520895A JP 2016520895 A JP2016520895 A JP 2016520895A JP 2016504387 A JP2016504387 A JP 2016504387A JP 2016504387 A JP2016504387 A JP 2016504387A JP 2016520895 A JP2016520895 A JP 2016520895A
Authority
JP
Japan
Prior art keywords
clock tree
clock
tree
upper clock
wiring
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.)
Granted
Application number
JP2016504387A
Other languages
English (en)
Other versions
JP6333948B2 (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.)
Synopsys Inc
Original Assignee
Synopsys Inc
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 Synopsys Inc filed Critical Synopsys Inc
Publication of JP2016520895A publication Critical patent/JP2016520895A/ja
Application granted granted Critical
Publication of JP6333948B2 publication Critical patent/JP6333948B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • 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/323Translation or migration, e.g. logic to logic, hardware description language [HDL] translation or netlist translation
    • 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/32Circuit design at the digital level
    • G06F30/33Design verification, e.g. functional simulation or model checking
    • G06F30/3308Design verification, e.g. functional simulation or model checking using simulation
    • G06F30/3312Timing analysis
    • 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/394Routing
    • 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/396Clock trees
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2117/00Details relating to the type or aim of the circuit design
    • G06F2117/04Clock gating
    • 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)
  • Computer Networks & Wireless Communication (AREA)
  • Design And Manufacture Of Integrated Circuits (AREA)
  • Semiconductor Integrated Circuits (AREA)

Abstract

二重構造クロックツリー合成(CTS)が説明されている。いくつかの実施形態は、一組の上位クロックツリーを構築することができ、各上位クロックツリーの各リーフは下位クロックツリーのルートである。各上位クロックツリーを、クロックスキューに対するチップ内ばらつきおよび/またはクロスコーナーばらつきの影響を減じるように最適化することができる。次に、本実施形態は、各上位クロックツリーのリーフごとに下位クロックツリーを構築し、クロック信号を上位クロックツリーのリーフから一組のクロックシンクに分配することができる。下位クロックツリーは、レイテンシ、消費電力、および/または面積を減じるように最適化することができる。

Description

背景
この開示はクロックツリー合成(clock tree synthesis)(CTS)に関する。より具体的には、この開示は二重構造CTSに関する。
関連技術
CTSとは、1つの回路設計内の一組の順序回路素子にクロック信号を分配するためのクロック分配ネットワークを作成するプロセスのことである。1つの回路設計は複数のクロックドメインを含み得る。各クロックドメインは複数のクロックツリーを含み得る。CTSによって生成されたクロックツリーの品質は、EDAフローにおける下流段、特にタイミング収束に多大な影響を及ぼす可能性がある。したがって、必要なのは、高品質のクロックツリーを効率的に作成することができるCTSのためのシステムおよび技術である。
概要
本明細書に記載のいくつかの実施形態は、クロックツリーを構築するためのシステムおよび技術を提供する。いくつかの実施形態は、一組の上位クロックツリーを構築することができ、各上位クロックツリーの各リーフは下位クロックツリーのルートであり、各上位クロックツリーを、クロックスキューに対するチップ内ばらつき(on-chip-variation)(OCV)またはクロスコーナーばらつきの影響を減じるように最適化することができる。次に、本実施形態は、各上位クロックツリーのリーフごとに下位クロックツリーを構築することができ、下位クロックツリーは、クロック信号を上位クロックツリーのリーフから一組のクロックシンクに分配する。下位クロックツリーは、レイテンシ、消費電力、および/または面積を減じるように最適化することができる。
いくつかの実施形態において、上位クロックツリーにおける配線の幅は下位クロックツリーにおける配線の幅よりも広くてもよい。いくつかの実施形態において、所与の上位クロックツリーのすべての水平配線は同一金属層上でルーティングされてもよい。いくつかの実施形態において、所与の上位クロックツリーのすべての垂直配線は同一金属層上でルーティングされてもよい。いくつかの実施形態において、所与の上位クロックツリーにおけるすべてのバッファは同じサイズを有していてもよい。
本明細書に記載のいくつかの実施形態に従い、動作およびプロセス条件が1つのチップ上でどのように異なり得るかを示す。 本明細書に記載のいくつかの実施形態に従い、タイミング制約がどのようにOCVばらつきを説明し得るかを示す。 本明細書に記載のいくつかの実施形態に従い、クロックツリートポロジの変更がOCVクロックスキューにどのように影響し得るかを示す。 本明細書に記載のいくつかの実施形態に従い、クロックツリートポロジの変更がOCVクロックスキューにどのように影響し得るかを示す。 本明細書に記載のいくつかの実施形態に従い、OCVおよびタイミング臨界を意識したCTSを実行するためのプロセスを示す。 本明細書に記載のいくつかの実施形態に従い、二重構造クロックツリーの論理回路図を示す。 本明細書に記載のいくつかの実施形態に従い、上位クロックツリーの一部を示す。 本明細書に記載のいくつかの実施形態に従い、二重構造クロックツリーを構築するためのプロセスを示す。 本明細書に記載のいくつかの実施形態に従い、コンピュータシステムを示す。
詳細な説明
以下の説明は、当業者が本発明を実施し使用することを可能にするために示され、特定の応用例およびその必要条件との関連で行なわれる。開示される実施形態に対するさまざまな変更が当業者には容易に明らかになるであろう。また、本明細書で規定される一般原理は、本発明の精神および範囲から外れることなく他の実施形態および応用例に適用し得る。よって、本発明は、示される実施形態に限定されるのではなく、本明細書に開示される原理および特徴と矛盾しない最も広い範囲と一致するはずである。この開示では、「および/または」という用語が、列挙された構成要素ととともに使用される場合、これは、列挙された構成要素の可能なすべての組合わせを意味する。たとえば、「X、Y、および/またはZ」という表現は、以下の場合をカバーする。(1)Xのみ、(2)Yのみ、(3)Zのみ、(4)XおよびY、(5)XおよびZ、(6)YおよびZ、(7)X、Y、およびZ。加えて、この開示では、「〜に基づく」という用語は「〜のみにまたは〜の一部に基づく」を意味する。
電子設計自動化(electronic design automation)(EDA)フローの概要
EDAフローを用いて回路設計を作成することができる。回路設計が完成すると、製造、実装、および組立てを経て集積回路チップが生産される。EDAフローは複数の工程を含み得る。各工程は1つ以上のEDAソフトウェアツールの使用を伴ない得る。いくつかのEDA工程およびソフトウェアツールについて以下で説明する。これらEDA工程およびソフトウェアツールの例は、専ら例示を目的としており、実施形態を開示されている形態に限定することを意図しているのではない。
いくつかのEDAソフトウェアツールは、回路設計者が実現したい機能を回路設計者が説明できるようにする。これらツールはまた、回路設計者がwhat-if計画を実行することによって機能の改良、コストの確認等を行なえるようにする。論理設計および機能検証中に、システム内のモジュール用のHDL(hardware description language(ハードウェア記述言語))コード、たとえばSystemVerilogコードを書込むことができ、機能の正確さについて設計を検査することができ、たとえば、設計を検査することにより、これが正しい出力を生成することを保証できる。
合成およびテスト用の設計中に、1つ以上のEDAソフトウェアツールを用いてHDLコードをネットリストに変換することができる。さらに、このネットリストを対象技術に合わせて最適化することができ、完成したチップを検査するためにテストを設計し実行することができる。ネットリストの検証中に、ネットリストは、タイミング制約の遵守およびHDLコードとの対応について検査することができる。
設計の計画中に、チップの全体平面図を構築するとともにタイミングおよびトップレベルルーティングについて分析することができる。物理的な実装中に、回路素子をレイアウト内に置くことができ(配置)、電気的に連結することができる(ルーティング)。
分析および抽出中に、回路の機能をトランジスタレベルで検証することができ、寄生要素を抽出することができる。物理的な検証中に、設計を検査することにより、製造、電気的事項、リソグラフィに関する事項、および回路の正確さを保証することができる。
分解能強化中に、幾何学的操作をレイアウトに対して行なうことにより、設計の製造可能性を改善することができる。マスクデータの準備中に、設計を「テープアウト」し、製造中に使用されるマスクを作成することができる。
OCVおよびタイミング臨界を意識したCTS
OCVとは、1つのチップ上の動作およびプロセス条件のばらつきのことである。図1は、本明細書に記載のいくつかの実施形態に従い、動作およびプロセス条件が1つのチップ上でどのように異なり得るかを示す。電圧、温度、およびプロセスパラメータ(たとえばチャネル長)はチップ102上でばらつき得る。たとえば、領域104における電圧、温度、およびプロセスパラメータはそれぞれ、3.2V、72°F、および0.26μである場合がある。一方、領域106における電圧、温度、およびプロセスパラメータはそれぞれ、3.4V,68°F、および0.24μである場合がある。OCVは、回路素子の1つ以上の特性に影響し得る。たとえば、OCVが原因で、領域104内のセルのインスタンスが領域106内の同一セルのインスタンスと異なる遅延特性を有することがある。
一般的に、2つの場所間のOCVの量は、距離とともに増加する。たとえば、間の距離が大きい2つの同一セルは、それぞれの特性(たとえば遅延)の差が、間の距離が小さい2つの同一セルよりも大きいと予測される。加えて、OCVの量は一般的に、経路長の増加および/または経路内の回路素子の数の増加に伴って増加する。たとえば、長い配線は短い配線よりも顕著なOCV効果を有すると予測される。さらに、回路素子の数が多い経路は回路素子の数が少ない経路よりもOCV効果が大きいと予測される。
OCVはクロックスキューに影響し得る。なぜなら、OCVが原因で、回路素子および配線の遅延がそれぞれの公称値から変化することがあるからである。このため、タイミング制約はこの変化を説明する必要がある。図2は、本明細書に記載のいくつかの実施形態に従い、タイミング制約がどのようにOCVばらつきを説明し得るかを示す。回路200は、順序回路素子202、204、および206を含む。各順序回路素子は、クロック信号を受けるクロック入力「C」と、クロック信号に基づいてデータ信号を送出する出力「Q」と、クロック信号に基づいてデータ信号を捕捉する入力「D」とを有する。図2では順序回路素子の例として「Dフリップフロップ」が使用されているが、順序回路素子202、204、および206は一般的にはクロック信号を用いて時間調整される任意の回路であればよい。
組合せ論理クラウド214および216は、1本以上の配線および/または1つ以上の組合せ論理ゲートを含み得るが、これらは順序回路素子を含まない。ある順序回路素子の出力で送出されたデータ信号は、別の順序回路素子の入力で捕捉される前に組合せ論理クラウドを通過し得る。たとえば、順序回路素子202の出力「Q」によって送出されたデータ信号は、順序回路素子204の入力「D」で捕捉される前に、組合せ論理クラウド214(ここでこのデータ信号を他のデータ信号と論理的に組合わせることができる)を通過する。
クロック信号「CLK」は、バッファ208、210、および212を含むクロックツリーを用いて順序回路素子に分配することができる。このクロックツリーは分岐点BおよびBを含み、この分岐点でクロックツリートポロジは複数の方向に分岐する。先に説明したように、OCVが原因で同一セルまたは配線の異なるインスタンスが異なる遅延を有することがある。具体的には、ある回路素子に対して(1つの公称遅延を用いるのではなく)ある範囲の遅延を用いることにより、たとえば、回路素子に対してディレーティング係数を用いるかまたは高および低遅延値を用いることにより、OCVをモデル化することができる。同様に、経路については、その経路内の回路素子について、それぞれの高遅延値と低遅延値を集約することによって、高遅延値と低遅延値を計算することができる。
図2において、回路経路は点線で示されており、回路経路の高遅延値(すなわち低速経路)および低遅延値(すなわち高速経路)はそれぞれ大文字と小文字で示されている。たとえば、分岐点Bから順序顔路素子202のクロック入力「C」までの高遅延値および低遅延値はそれぞれXおよびxである。項「X」の下付き文字「1」は、この遅延値が分岐点Bからのものであることを示す。
データ経路遅延も図2に示されている。たとえば、順序回路素子202の出力「Q」からデータ信号が送出された時点から順序回路素子204の入力「D」でこのデータ信号が捕捉された時点までの高遅延および低遅延は、「A」(高遅延値)および「a」(低遅延値)である。
この開示では、高遅延値に相当する大文字をデータ経路自体にも使用している。たとえば、データ経路「A」は、組合せ論理クラウド214を通る、順序回路素子202から順序回路素子204までのデータ経路である。なお、点線が順序回路素子202の(出力「Q」から始まるのではなく)クロック入力「C」から始まっている理由は、点線で示されるデータ経路遅延が、クロック入力「C」に達したクロックエッジと出力「Q」から送出されるデータ信号との間の遅延である、送出遅延を含むことにある。
図2に示される経路遅延を用いて、OCVを意識したセットアップタイミング制約を次のように表わすことができる。
Figure 2016520895
式中、Δ、Δ、およびΔはセットアップタイミング要件である。同様に、OCVを意識したホールドタイミング制約を次のように表わすことができる。
Figure 2016520895
式中、δ、δ、およびδはホールドタイミング要件である。
高遅延値および低遅延値は、ディレーティング係数を用いて表わすことができる。dをディレーティング係数とし、プライム記号「´」が公称遅延値を示すものとする。たとえば、x´を、分岐点Bから順序回路素子202のクロック入力「C」までの公称経路遅延とする。そうすると、高遅延値および低遅延値はそれぞれ、X=x´+d・x´およびx=x´−d・xと表わすことができる。他の高遅延値および低遅延値についても同様の式を導くことができる。式(1)を用いてデータ経路「A」、「B」、および「C」それぞれのクロックスキューCS、CS、およびCSを次のように表わすことができる。
Figure 2016520895
なお、右辺の第1項、たとえば(x´−y´)は、公称クロックスキュー(すなわち公称経路遅延間の差)であり、第2項、たとえばd・(x´+y´)は、OCVの影響を表わす。ホールドタイミング制約についても同様にクロックスキューの式を導くことができる。
式(3)からいくつかの重要事項がわかる。第1に、OCVクロックスキュー成分は、分岐点からの総(すなわち送出+捕捉)経路レイテンシを最小にする、たとえば(x´+y´)を最小にすることによってしか、最小にすることができない。第2に、分岐点をクロックツリートポロジのルートに向かって動かすと、結果として分岐点からの総経路遅延が大きくなり、その結果、OCVクロックスキュー成分が大きくなる。第3に、挿入遅延を加えることによって公称クロックスキューを最小にしようとすると、OCVクロックスキュー成分が悪化する可能性が高い。なぜなら、挿入遅延を加えると、分岐点からの総経路遅延が増すからである。従来のCTSの手法は公称クロックスキューを最適化しようとするのが一般的であった。上記説明に基づくと、OCVクロックスキューを最適化する(すなわちクロックスキューに対するOCVの影響を減じる)ことは、従来のCTSで行なわれる従来のクロックスキュー最適化とは大きく異なることは明らかである。
図3A〜図3Bは、本明細書に記載のいくつかの実施形態に従い、クロックツリートポロジの変更がOCVクロックスキューにどのように影響し得るかを示す。明確にするためかつ開示を容易にするために、図3A〜図3Bにバッファは示されていない。図3Aに示される回路300は、分岐点Bがツリーのリーフからより遠く(したがってツリーのルートにより近く)分岐点Bがツリーのリーフにより近い(したがってツリーのルートからより遠い)クロックツリートポロジを含む。これに対し、図3Bに示される回路350では、分岐点Bはツリーのリーフからより遠く分岐点Bはツリーのリーフにより近い。
なお、回路300では、データ経路「A」のOCVクロックスキュー成分はデータ経路「B」および「C」のOCVクロックスキュー成分よりも大きい。なぜなら、図3Aでは(x´+y´)>(y´+z´)であるからである。逆に、回路350では、データ経路「A」のOCVクロックスキュー成分はデータ経路「B」および「C」のOCVクロックスキュー成分よりも小さい。なぜなら、図3Bでは(x´+y´)<(y´+z´)であるからである。
本明細書に記載のいくつかの実施形態は、臨界タイミング経路のクロックスキューに対するOCVの影響を減じるクロックツリートポロジを構築する。たとえば、データ経路「B」および「C」は臨界(たとえばタイミングスラックが負であるかゼロに近い)であるがデータ経路「A」は臨界でない場合、いくつかの実施形態は図3Aに示されるクロックツリートポロジを使用することができる。一方、データ経路「A」は臨界であるがデータ経路「B」および「C」は臨界でない場合、いくつかの実施形態は図3Bに示されるクロックツリートポロジを使用することができる。一般的に、所与のタイミング経路のOCVクロックスキューを減じること(すなわち所与のタイミング経路のクロックスキューに対するOCVの影響を減じること)は、最も近い分岐点(すなわち送出および捕捉順序回路素子に最も近い)から送出および捕捉順序回路素子までの総(すなわち送出+捕捉)経路レイテンシを減じることを含み得る。
図4は、本明細書に記載のいくつかの実施形態に従い、OCVおよびタイミング臨界を意識したCTSを実行するためのプロセスを示す。このプロセスは、一組の臨界経路にある順序回路素子の時間調整のために第1の組のクロックツリートポロジを構築することで始めることができ、この構築は、クロックスキューに対するOCVの影響を減じるように第1の組のクロックツリートポロジを最適化することを含む(動作402)。
タイミングスラックおよび対応するタイミング経路は、所要時間を回路設計によって後方に(すなわちタイミング終点からタイミング始点へ)伝搬し、到着時間を回路設計によって前方に(すなわちタイミング始点からタイミング終点へ)伝搬することによって求めることができる。次に、タイミングスラックの妨害に相当するタイミング経路、およびオプションとしてタイミングスラックのほぼ妨害に相当するタイミング経路を、一組の臨界経路として識別することができる。いくつかの実施形態において、このプロセスは、タイミング経路をこれらタイミング経路のスラック値に基づいて分類し最もスラックが小さい予め定められた数(または予め定められた割合)の経路を選択することによって、上記一組の臨界経路を求めてもよい。
先に説明したように、各臨界経路は、送出順序回路素子の出力(タイミング始点)で始まり、捕捉順序回路素子の入力(タイミング終点)で終わる。たとえば、図2において、臨界経路は、順序回路素子202の「Q」出力で始まり順序回路素子204の「D」入力で終わるものであってもよい。なお、一組の臨界経路は、一組の順序回路素子に対応する。たとえば、図2において、一組の臨界経路がデータ経路「B」および「C」を含む場合、この一組の臨界経路にある順序回路素子は、順序回路素子202、204、および206を含むであろう。一方、この一組の臨界経路がデータ経路「A」しか含まない場合、この一組の臨界経路にある順序回路素子は、順序回路素子202および204を含むであろうが順序回路素子206は含まないであろう。
一組のクロックツリートポロジは、1つ以上のクロックツリートポロジを含み得る。たとえば、図3Aの、クロック信号「CLK」を順序回路素子202、204、および206のクロック入力に分配するネットは、クロックツリートポロジを1つしか含まない「一組のクロックツリートポロジ」の一例である。「最適化する」、「最適化」、およびそれ以外のこのような用語は、所与の目的関数を最小化または最大化しようと試みるプロセスを意味する。なお、これら最適化プロセスは、目的関数のグローバル最小値または最大値を得る前に終了し得る。一組のクロックツリートポロジを、クロックスキューに対するOCVの影響を減じるように最適化することは、クロックツリートポロジにおける分岐点の最適化された位置を求めることを含み得る。具体的には、このプロセスは、所与の臨界経路の終点にある2つの順序回路素子にできるだけ近い分岐点を求めることができる。
図4を参照して、このプロセスは次に、一組の臨界経路にない順序回路素子の時間調整のために第2の組のクロックツリートポロジを構築することができ、この構築は、クロックレイテンシを減じるように第2の組のクロックツリートポロジを最適化することを含む(動作404)。いくつかの実施形態において、メトリクスの組合せを最適化することができる。たとえば、動作404において、このプロセスは、クロックツリートポロジの、レイテンシの最適化(たとえばクロックツリーのルートからクロックツリーのリーフまでの最大遅延の最小化)、消費電力(たとえばクロックツリーの動的および/または漏れ消費電力)の最適化、および/または面積(たとえばクロックツリーにおいて使用されているバッファの総セル面積)の最適化を試みることができる。
第2の組のクロックツリートポロジは、全く新しいクロックツリートポロジを含むものであってもよく、および/または既存のクロックツリートポロジの増分拡張部(たとえば動作402で作成されたクロックツリートポロジの増分拡張部)を含むものであってもよい。たとえば、図2において、データ経路「A」は臨界経路であるがデータ経路「B」および「C」は臨界経路でないと仮定する。動作402は、クロック信号「CLK」を順序回路素子202および204のクロック入力に分配するクロックツリートポロジを構築し得る。次に、動作404は、ポイントBから順序回路素子206のクロック入力までの分岐を作成することによってこのクロックツリートポロジを増分的に拡張し得る(なお、動作402は、順序回路素子206が臨界経路上になかったので、この分岐を作成しなかった)。
二重構造クロックツリー
従来のCTSの手法はツリーを下から上に構築する、すなわち、これら手法はクロックシンク(たとえば順序回路素子のクロック入力)から始めてツリーを次第にクロックソースに向けて構築する。あいにく、OCVが原因で、クロックスキューは、従来のCTSの手法を用いて構築されたクロックツリーにおいて大きく変動することがある。
従来のCTSの手法と異なり、本明細書に記載のいくつかの実施形態は、上位クロックツリーおよび下位クロックツリーと呼ばれる二種類のクロックツリーを用いて二重構造のクロックツリーを構築する。上位クロックツリーは、比較的長い距離を通してクロック信号をチップの異なる領域に分配するために構築され最適化される。上位クロックツリーは、たとえばクロックスキューに対するOCVおよび/またはクロスコーナーばらつきの影響を減じるようにこの上位クロックツリーを最適化することによって、耐OCVおよび/またはクロスコーナーにすることができる。上位クロックツリーのリーフ(アンカーバッファと呼ばれる)は、下位クロックツリーのルートとして機能する。具体的には、上位クロックツリーの各リーフから、下位クロックツリーを構築し最適化することによって、クロック信号を上位クロックツリーのリーフの近傍にあるクロックシンクに分配することができる。
図5は、本明細書に記載のいくつかの実施形態に従い、二重構造クロックツリーの論理回路図を示す。上位クロックツリー504は、クロック信号を、クロックツリールート502から、上位クロックツリー504のリーフ、たとえば上位クロックツリー504のリーフ508に、分配する。上位クロックツリーの各リーフはクロックバッファ(この開示ではアンカーバッファと呼ばれる)であってもよい。たとえば、リーフ508は下位クロックツリーを駆動するアンカーバッファであってもよい。
下位クロックツリー506は、クロック信号を、上位クロックツリーのリーフから一組のクロックシンクに分配する。具体的には、各上位クロックツリーの各リーフは、上位クロックツリーのリーフの近傍にあるクロックシンクにクロック信号を分配する、下位クロックツリーのルートとして機能する。たとえば、リーフ508は、クロックシンク、たとえばリーフ508の近傍にあるクロックシンク512にクロック信号を分配する下位クロックツリー510のルートとして機能する。
上記のように、上位クロックツリーは、たとえばクロックスキューに対するOCVの影響を減じるように上位クロックツリートポロジを最適化することによって、OCVに対する耐性を有するように最適化することができる。さらに、いくつかの実施形態において、上位クロックツリーで使用されるすべてのバッファは、同一セルのインスタンスであってもよく、または、同一種類でサイズが非常によく似たセルのインスタンスであってもよい(たとえばセルライブラリが大きな範囲のセルサイズのセルを含む場合は上位クロックツリーで使用されるセルを小さい範囲のセルサイズから選択してもよい)。同一サイズのバッファを使用することにより、クロックスキューに対するOCVの影響を減じることができる。なぜなら同一サイズにされたバッファはOCVから同じように影響を受けると予想されるからである。加えて、上位クロックツリーのクロックツリートポロジは、規則的な構造を有していてもよく、それは、クロックスキューに対するOCVの影響を減じるのに役立ち得る。いくつかの実施形態において、上位クロックツリーは、下位クロックツリーで使用される配線の幅よりも大きな配線の幅を使用することができる。幅がより大きな配線の電気的特性(たとえば容量および抵抗)は一般的に、幅が狭い配線よりもOCVに対する耐性が高い。加えて、すべての水平配線を同一金属層(たとえば金属層M4)上でルーティングし、同様に、すべての垂直配線を同一金属層(たとえば金属層M3)上でルーティングすることによって、金属層間のプロセスばらつきの影響を減じることができる。このようにして、上位クロックツリーを、クロックツリーの特性(たとえばクロックスキュー)に対するOCVの影響を減じるように最適化することができる。
なお、同一の装置および/または配線幅の使用は、OCVの影響を減じるのみならず、クロスコーナーばらつき(PVTばらつきとしても知られている)も減じる。先に説明したように、OCVとは1つのチップの異なる領域内のばらつきのことである。一方、クロスコーナーばらつきまたはPVTばらつきは、チップ全体に影響する、複数のコーナーに亘るプロセス、電圧、および温度のばらつきのことである。一般的に、チップは(たとえばタイミングに関して)複数のコーナー(各コーナーは公称プロセス、電圧、および温度値に関連する)に亘って検証され、同一の装置および/または配線幅の使用は、複数のPVTコーナーに亘るクロックスキューのばらつきを減じるのにも役立つ。
図6は、本明細書に記載の実施形態に従い、上位クロックツリーの一部を示す。図6に示される上位クロックツリーの一部は、配線604等の配線と、バッファ606等のバッファとを含む。ルーティンググリッド602を用いてクロックツリーの配線をルーティングすることができ、ルーティングおよび/または配置の阻止部、たとえば阻止部608をルーティンググリッド602内に指定することができる。配線604が阻止部608を避けるようにルーティングされていることが注目される。加えて、すべての水平配線が同一金属層、すなわち金属層M4においてルーティングされ、すべての垂直配線が同一金属層、すなわち金属層M3においてルーティングされていることが注目される。いくつかの実施形態において、これは、上位クロックツリーのすべての水平配線および垂直配線をそれぞれの金属層においてルーティングすることをルータに強制するルーティング規則を作成することによって可能になる。加えて、図6に示されるように、二重構造CTSは、できる限り共通経路を共有することによってクロックスキューに対するOCVの影響を減じようとしている。
図7は、本明細書に記載のいくつかの実施形態に従い、二重構造クロックツリーを構築するためのプロセスを示す。このプロセスは、一組の上位クロックツリーを構築することで始めることができ、各上位クロックツリーの各リーフは下位クロックツリーのルートであり、各上位クロックツリーは、クロックスキューに対するOCVおよび/またはクロスコーナーばらつきの影響を減じるように最適化される(動作702)。
一組の上位クロックツリーは、1つ以上の上位クロックツリーを含み得る。先に説明したように、上位クロックツリーは一般的に、下位クロックツリーよりも長い配線を有し、クロックバッファごとのファンアウトが少なく、クロックツリーの論理ゲートはほんのわずかであるか全くない。加えて、上位クロックツリーは、好ましくはより良好なOCV耐性のために規則的なトポロジを有していてもよく、装置ばらつきの影響を減じるためにクロックバッファのサイズが同一/同様であってもよい。さらに、上位クロックツリーは、ツリーの異なる分岐に対して一致する配線長および金属層を使用することにより相互接続のばらつきを制御することができる。上位クロックツリーを構築している間に、プロセスは、(1)異なるプロセス、電圧、および温度コーナーに亘るセル遅延および配線遅延のバランスを取ることができ、(2)クロックツリー全体において同一サイズのバッファを使用することができ、(3)分岐のルートを一致させることができる。
次に、プロセスは、各上位クロックツリーのリーフごとに下位クロックツリーを構築することができ、下位クロックツリーは、クロック信号を上位クロックツリーのリーフから一組のクロックシンクに分配し、下位クロックツリーは、レイテンシ、消費電力、および/または面積を減じるように最適化される(動作704)。
先に説明したように、下位クロックツリーは、一般的に、配線長が上位クロックツリーよりも短く、クロックバッファ/ゲートごとのファンアウトは中程度の数〜多数であり、クロックシンクの分布が不均一でありゲートのバッファサイズがばらついているので、構造の規則性は低い。一般的に、下位クロックツリーのレベル数が少ないほど、OCVに対するクロックツリーの耐性は高くなる。
いくつかの実施形態において、下位クロックツリーのバッファレベルの最大数は、OCVの影響を減じるために、制約を受けることがある。具体的には、最大バッファレベルの制約を満たすために、下位クロックツリーは、バッファの追加に加えて、既存のゲート(たとえばクロックゲーティングセル)の複製を作る必要があるかもしれない。いくつかの実施形態において、同じクラスタ化プロセスを、バッファリングおよびゲート複製に使用する。いくつかの実施形態において、このプロセスは、下位クロックツリーのレベルのバランスが取れておりそれによってOCV耐性をさらに改善できることを保証することができる。
いくつかの実施形態において、下位クロックツリーにおけるレベル数は、予め定められた最大数になるよう強制される、すなわち、下位クロックツリーのルートから下位クロックツリーのリーフまでの各経路のバッファの数は、予め定められた最大数よりも少なくまたはそれと等しくなるよう強制される。なお、この最大バッファレベルの制約は、下位クロックツリーのサイズも制限する。予め定められた最大バッファレベルの制約を受けて、プロセスは、回路設計においてクロックシンクをクラスタ化することによって一組の下位クロックツリーを構築することができる。このプロセスは次に、下位クロックツリーの一時的アンカーバッファ位置を識別することができる。一時的アンカーバッファ位置が求められると、プロセスは、1つ以上の上位クロックツリーを作成してクロック信号をアンカーバッファに分配することができる。一般的に、下位クロックツリーで許容されるレベル数が少なければ、下位クロックツリーの数は多くなる。逆に、下位クロックツリーで許容されるレベル数が多ければ、下位クロックツリーの数は少なくなる。
コンピュータシステム
図8は、本明細書に記載のいくつかの実施形態に従い、コンピュータシステムを示す。コンピュータシステム802は、プロセッサ804と、メモリ806と、記憶装置808とを含み得る。コンピュータシステム802は、表示装置814、キーボード810、およびポインティングデバイス812に結合し得る。記憶装置808は、オペレーティングシステム816、アプリケーション818、およびデータ820を格納し得る。データ820は、アプリケーション818が要求する入力、および/またはアプリケーション818が生成した出力を含み得る。
コンピュータシステム802は、自動的に(またはユーザとの対話により)、この開示において暗示的または明示的に記載されている1つ以上の動作を実行する。具体的には、動作中、コンピュータシステム802は、アプリケーション818をメモリ806にロードすることができる。次にアプリケーション818を用いてOCVおよびタイミング臨界を意識したCTSを実行することができ、および/または二重構造CTSを実行することができる。
結論
上記説明は、当業者が本実施形態を実施し使用することを可能にするために示されている。開示されている実施形態に対するさまざまな変更が当業者には容易に明らかになるであろう。また、本明細書で規定されている一般原理は、本開示の精神および範囲から外れることなく他の実施形態および応用例に適用可能である。よって、本発明は、示されている実施形態に限定されるのではなく、本明細書に開示されている原理および特徴と矛盾しない最も広い範囲に一致するはずである。
この開示に記載されているデータ構造およびコードは、その一部またはすべてを、コンピュータ読取可能な記憶媒体および/またはハードウェアモジュールおよび/またはハードウェア装置に格納することができる。コンピュータ読取可能な記憶媒体は、揮発性メモリ、不揮発性メモリ、磁気および光記憶装置たとえばディスクドライブ、磁気テープ、CD(コンパクトディスク)、DVD(デジタル多目的ディスクまたはデジタルビデオディスク)に、または、コードおよび/またはデータを格納することができる現在知られているまたは後に開発されるその他の媒体を含むが、これらに限定されない。この開示に記載されているハードウェアモジュールまたは装置は、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、専用または共用プロセッサ、および/または現在知られているまたは後に開発されるその他のハードウェアモジュールまたは装置を含むが、これらに限定されない。
この開示に記載されている方法およびプロセスは、その一部またはすべてを、コンピュータ読取可能な記憶媒体または装置に格納されたコードおよび/またはデータとして実現することにより、コンピュータシステムがこのコードおよび/またはデータを読出して実行したときにコンピュータシステムが関連する方法およびプロセスを実行するようにしてもよい。この方法およびプロセスはまた、その一部またはすべてを、ハードウェアモジュールまたは装置で実現することにより、ハードウェアモジュールまたは装置が起動されたときにこれらが関連する方法およびプロセスを実行するようにしてもよい。なお、これら方法およびプロセスは、コード、データ、およびハードウェアモジュールまたは装置の組合わせを用いて実施することができる。
本発明の実施形態の上記説明は、専ら例示と説明を目的として示されている。上記説明はすべてを網羅することを意図している訳でも、本発明を開示された形態に限定することを意図している訳でもない。したがって、数多くの変更および変形が当業者には明らかであろう。加えて、上記開示は本発明を限定することを意図したものではない。本発明の範囲は以下の請求項によって定義される。

Claims (15)

  1. クロックツリー合成のための方法であって、前記方法は、
    一組の上位クロックツリーを構築することを含み、各上位クロックツリーの各リーフは下位クロックツリーのルートであり、各上位クロックツリーは、クロックスキューに対するチップ内ばらつきおよび/またはクロスコーナーばらつきの影響を減じるように最適化され、
    各上位クロックツリーのリーフごとに下位クロックツリーを構築することを含み、前記下位クロックツリーは、クロック信号を前記上位クロックツリーのリーフから一組のクロックシンクに分配し、前記下位クロックツリーは、レイテンシ、消費電力、および/または面積を減じるように最適化される、方法。
  2. 上位クロックツリーにおける配線の幅は下位クロックツリーにおける配線の幅よりも広い、請求項1に記載の方法。
  3. 所与の上位クロックツリーのすべての水平配線は同一金属層上でルーティングされる、請求項1に記載の方法。
  4. 所与の上位クロックツリーのすべての垂直配線は同一金属層上でルーティングされる、請求項1に記載の方法。
  5. 所与の上位クロックツリーにおけるすべてのバッファは同じサイズを有する、請求項1に記載の方法。
  6. 命令を格納する非一時的なコンピュータ読取可能な記憶媒体であって、前記命令はコンピュータによって実行されると前記コンピュータにクロックツリー合成のための方法を実行させ、前記方法は、
    一組の上位クロックツリーを構築することを含み、各上位クロックツリーの各リーフは下位クロックツリーのルートであり、各上位クロックツリーは、クロックスキューに対するチップ内ばらつきおよび/またはクロスコーナーばらつきの影響を減じるように最適化され、
    各上位クロックツリーのリーフごとに下位クロックツリーを構築することを含み、前記下位クロックツリーは、クロック信号を前記上位クロックツリーのリーフから一組のクロックシンクに分配し、前記下位クロックツリーは、レイテンシ、消費電力、および/または面積を減じるように最適化される、非一時的なコンピュータ読取可能な記憶媒体。
  7. 上位クロックツリーにおける配線の幅は下位クロックツリーにおける配線の幅よりも広い、請求項6に記載の非一時的なコンピュータ読取可能な記憶媒体。
  8. 所与の上位クロックツリーのすべての水平配線は同一金属層上でルーティングされる、請求項6に記載の非一時的なコンピュータ読取可能な記憶媒体。
  9. 所与の上位クロックツリーのすべての垂直配線は同一金属層上でルーティングされる、請求項6に記載の非一時的なコンピュータ読取可能な記憶媒体。
  10. 所与の上位クロックツリーにおけるすべてのバッファは同じサイズを有する、請求項6に記載の非一時的なコンピュータ読取可能な記憶媒体。
  11. 装置であって、
    プロセッサと、
    命令を格納する記憶媒体とを備え、前記命令は前記プロセッサによって実行されると前記装置にクロックツリー合成のための方法を実行させ、前記方法は、
    一組の上位クロックツリーを構築することを含み、各上位クロックツリーの各リーフは下位クロックツリーのルートであり、各上位クロックツリーは、クロックスキューに対するチップ内ばらつきおよび/またはクロスコーナーばらつきの影響を減じるように最適化され、
    各上位クロックツリーのリーフごとに下位クロックツリーを構築することを含み、前記下位クロックツリーは、クロック信号を前記上位クロックツリーのリーフから一組のクロックシンクに分配し、前記下位クロックツリーは、レイテンシ、消費電力、および/または面積を減じるように最適化される、装置。
  12. 上位クロックツリーにおける配線の幅は下位クロックツリーにおける配線の幅よりも広い、請求項11に記載の装置。
  13. 所与の上位クロックツリーのすべての水平配線は同一金属層上でルーティングされる、請求項11に記載の装置。
  14. 所与の上位クロックツリーのすべての垂直配線は同一金属層上でルーティングされる、請求項11に記載の装置。
  15. 所与の上位クロックツリーにおけるすべてのバッファは同じサイズを有する、請求項11に記載の装置。
JP2016504387A 2013-03-21 2014-03-21 二重構造クロックツリー合成(cts) Active JP6333948B2 (ja)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201361804107P 2013-03-21 2013-03-21
US61/804,107 2013-03-21
US14/221,139 US9053281B2 (en) 2013-03-21 2014-03-20 Dual-structure clock tree synthesis (CTS)
US14/221,139 2014-03-20
PCT/US2014/031497 WO2014153538A1 (en) 2013-03-21 2014-03-21 Dual-structure clock tree synthesis (cts)

Publications (2)

Publication Number Publication Date
JP2016520895A true JP2016520895A (ja) 2016-07-14
JP6333948B2 JP6333948B2 (ja) 2018-05-30

Family

ID=51570118

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2016504387A Active JP6333948B2 (ja) 2013-03-21 2014-03-21 二重構造クロックツリー合成(cts)

Country Status (5)

Country Link
US (1) US9053281B2 (ja)
JP (1) JP6333948B2 (ja)
CN (1) CN105359149B (ja)
DE (1) DE112014000616T5 (ja)
WO (1) WO2014153538A1 (ja)

Families Citing this family (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9330220B1 (en) * 2014-08-25 2016-05-03 Xilinx, Inc. Clock region partitioning and clock routing
US9922157B1 (en) * 2014-09-30 2018-03-20 Altera Corporation Sector-based clock routing methods and apparatus
US10089428B2 (en) * 2015-05-04 2018-10-02 Samsung Electronics Co., Ltd. Intelligent cell swapping based on ceiling determination, floor determination, and cell attribute weighting criteria
US20180006653A1 (en) * 2016-06-29 2018-01-04 Altera Corporation Integrated circuits with hybrid fixed/configurable clock networks
US10325046B2 (en) * 2016-09-20 2019-06-18 Synopsys, Inc. Formal method for clock tree analysis and optimization
CN107342762B (zh) * 2017-05-31 2019-10-25 北京时代民芯科技有限公司 一种抗单粒子瞬态时钟树结构
CN107831824B (zh) * 2017-10-16 2021-04-06 北京比特大陆科技有限公司 时钟信号传递方法、装置、复用芯片和电子设备
CN107817870A (zh) * 2017-10-16 2018-03-20 算丰科技(北京)有限公司 时钟信号传递方法和装置、时钟树、芯片、电子设备
US11176293B1 (en) * 2018-03-07 2021-11-16 Synopsys, Inc. Method and system for emulation clock tree reduction
US10860761B1 (en) * 2018-06-11 2020-12-08 Ansys, Inc. Systems and methods for enhanced clock tree power estimation at register transfer level
CN111950215B (zh) * 2020-07-21 2023-04-28 中国科学院计算技术研究所 生成面向超导rsfq电路的多扇出时钟信号的方法
KR20220055808A (ko) * 2020-10-27 2022-05-04 삼성전자주식회사 클럭 트리의 배치 방법, 집적 회로 및 집적 회로의 설계 방법
CN112217707B (zh) * 2020-11-10 2022-03-04 北京百瑞互联技术有限公司 集成电路时钟树网络质量评估方法、装置和介质
CN114818595B (zh) * 2022-06-24 2022-09-13 飞腾信息技术有限公司 芯片模块接口时钟构建方法、装置、存储介质及电子设备
US20240143880A1 (en) * 2022-11-01 2024-05-02 Taiwan Semiconductor Manufacturing Company, Ltd. Integrated circuit design method and system

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010211302A (ja) * 2009-03-06 2010-09-24 Toshiba Corp クロック配線方法
JP2012063886A (ja) * 2010-09-14 2012-03-29 Ricoh Co Ltd 半導体集積回路の自動配置配線方法、レイアウト装置、自動配置配線プログラム、及び半導体集積回路
JP2012094065A (ja) * 2010-10-28 2012-05-17 Fujitsu Semiconductor Ltd クロックツリー生成装置及びクロックツリー生成方法
JP2012194888A (ja) * 2011-03-17 2012-10-11 Toshiba Corp クロックツリー設計装置及びクロックツリー設計方法

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7039891B2 (en) * 2003-08-27 2006-05-02 Lsi Logic Corporation Method of clock driven cell placement and clock tree synthesis for integrated circuit design
JP2007072995A (ja) 2005-09-09 2007-03-22 Ricoh Co Ltd レイアウト装置、自動配置配線方法および半導体集積回路製造方法
JP4314233B2 (ja) 2005-11-07 2009-08-12 富士通株式会社 設計支援装置、設計支援方法、設計支援プログラム、および記録媒体
US7509609B2 (en) 2006-03-15 2009-03-24 Agere Systems Inc. Methods and apparatus for reducing timing skew
JP2007336003A (ja) * 2006-06-12 2007-12-27 Nec Electronics Corp クロック分配回路、半導体集積回路、クロック分配回路の形成方法及びそのプログラム
US8640066B1 (en) * 2007-01-10 2014-01-28 Cadence Design Systems, Inc. Multi-phase models for timing closure of integrated circuit designs
US8365113B1 (en) * 2007-01-10 2013-01-29 Cadence Design Systems, Inc. Flow methodology for single pass parallel hierarchical timing closure of integrated circuit designs
JP5167740B2 (ja) 2007-09-20 2013-03-21 富士通セミコンダクター株式会社 設計支援プログラム、設計支援装置、および設計支援方法
JP2009288890A (ja) 2008-05-27 2009-12-10 Panasonic Corp 半導体集積回路、および半導体集積回路のレイアウト方法

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010211302A (ja) * 2009-03-06 2010-09-24 Toshiba Corp クロック配線方法
JP2012063886A (ja) * 2010-09-14 2012-03-29 Ricoh Co Ltd 半導体集積回路の自動配置配線方法、レイアウト装置、自動配置配線プログラム、及び半導体集積回路
JP2012094065A (ja) * 2010-10-28 2012-05-17 Fujitsu Semiconductor Ltd クロックツリー生成装置及びクロックツリー生成方法
JP2012194888A (ja) * 2011-03-17 2012-10-11 Toshiba Corp クロックツリー設計装置及びクロックツリー設計方法

Also Published As

Publication number Publication date
CN105359149B (zh) 2019-05-17
JP6333948B2 (ja) 2018-05-30
US9053281B2 (en) 2015-06-09
DE112014000616T5 (de) 2015-10-29
CN105359149A (zh) 2016-02-24
US20140289694A1 (en) 2014-09-25
WO2014153538A1 (en) 2014-09-25

Similar Documents

Publication Publication Date Title
JP6333948B2 (ja) 二重構造クロックツリー合成(cts)
US11480993B2 (en) Methods for optimizing circuit performance via configurable clock skews
US7546567B2 (en) Method and apparatus for generating a variation-tolerant clock-tree for an integrated circuit chip
TWI521370B (zh) 用於產生時鐘網路拓撲之暫存器叢集方法、系統及其電腦可讀取記錄媒體
US10318684B2 (en) Network flow based framework for clock tree optimization
KR102103617B1 (ko) 자동 클럭 트리 라우팅 규칙 생성
US8797096B2 (en) Crosstalk compensation for high speed, reduced swing circuits
US20170083661A1 (en) Integrated circuit chip design methods and systems using process window-aware timing analysis
US9298872B2 (en) Apportioning synthesis effort for better timing closure
US20140289690A1 (en) On-chip-variation (ocv) and timing-criticality aware clock tree synthesis (cts)
US9147030B2 (en) Multiple-instantiated-module (mim) aware pin assignment
US10073944B2 (en) Clock tree synthesis based on computing critical clock latency probabilities
US9734268B2 (en) Slack redistribution for additional power recovery
US8826215B1 (en) Routing centric design closure
Lim et al. An optimal allocation algorithm of adjustable delay buffers and practical extensions for clock skew optimization in multiple power mode designs
US10776543B2 (en) Automated region based optimization of chip manufacture
KR102129649B1 (ko) 자동 클록 트리 합성 예외 생성
US20180330032A1 (en) Independently projecting a canonical clock
US8769461B1 (en) Replicating a driver of a net in a circuit design
Anirudh et al. An Enhanced Clock Tree Synthesis Methodology for Optimizing Power in Physical Design
US10599804B1 (en) Pin cloning and subway creation on automatically generated design physical hierarchy
US9710594B2 (en) Variation-aware timing analysis using waveform construction
Gangadharan et al. Other Clock Characteristics

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20161115

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20171109

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20171121

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20180207

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20180403

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20180425

R150 Certificate of patent or registration of utility model

Ref document number: 6333948

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