JP5376509B2 - 実行履歴トレース方法 - Google Patents

実行履歴トレース方法 Download PDF

Info

Publication number
JP5376509B2
JP5376509B2 JP2009063164A JP2009063164A JP5376509B2 JP 5376509 B2 JP5376509 B2 JP 5376509B2 JP 2009063164 A JP2009063164 A JP 2009063164A JP 2009063164 A JP2009063164 A JP 2009063164A JP 5376509 B2 JP5376509 B2 JP 5376509B2
Authority
JP
Japan
Prior art keywords
trace
information
data
execution
access
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2009063164A
Other languages
English (en)
Other versions
JP2010218139A (ja
Inventor
周平 佐藤
崇 佐藤
Original Assignee
スパンション エルエルシー
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 スパンション エルエルシー filed Critical スパンション エルエルシー
Priority to JP2009063164A priority Critical patent/JP5376509B2/ja
Priority to US12/721,667 priority patent/US8578216B2/en
Publication of JP2010218139A publication Critical patent/JP2010218139A/ja
Priority to US14/068,652 priority patent/US9507688B2/en
Application granted granted Critical
Publication of JP5376509B2 publication Critical patent/JP5376509B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3466Performance evaluation by tracing or monitoring
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3466Performance evaluation by tracing or monitoring
    • G06F11/3471Address tracing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/362Software debugging
    • G06F11/3636Software debugging by tracing the execution of the program
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/362Software debugging
    • G06F11/3648Software debugging using additional hardware
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/362Software debugging
    • G06F11/3648Software debugging using additional hardware
    • G06F11/3656Software debugging using additional hardware using a specific debug interface

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • General Engineering & Computer Science (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Debugging And Monitoring (AREA)

Description

本願開示は、一般にプログラムの正しさを検査するデバッグ手法に関し、詳しくはCPUによるプログラムの実行履歴をトレースするトレース方法に関する。
MCU(Micro Controller Unit)などのCPU(Central Processing Unit)を搭載する半導体装置において、CPUにより実行するプログラムを開発する際に、デバッグシステムを用いる。デバッグシステムは、開発対象のプログラムを実行するCPU動作に関する情報を表示したり、開発対象プログラムに対して特定の操作を行う機能を提供したりすることで、デバッグ作業を支援する。
プログラム実行するCPUの動作履歴を示す各種実行履歴情報(トレース情報)は、分岐実行の履歴を示す分岐トレース情報、及び、データアクセス実行の履歴を示すデータトレース情報を含む。CPUによるプログラム実行においては、これらトレース情報を生成するイベントが複数同時に発生し得る。例えば、プログラムを構成する命令列中の1つの命令が、分岐先の命令であると同時にそこから更に分岐を指定する分岐元の命令でもある場合が考えられる。また例えば、分岐命令やデータアクセス命令の実行と同時に、既に実行済みのリードアクセス命令に対するリードデータ(データトレース情報の一部)がメモリからCPUに供給される場合が考えられる。トレース情報の記録においては、このように複数のイベントが同時発生する場合であっても全ての記録対象の情報を失うことなく記録することが望ましい。またプログラム実行時に複数のイベントが錯綜したり同時に発生したりしていても、デバッグシステム内で取り扱われるトレース情報は、ユーザに分かり易い形式のデータであることが望ましい。即ち、プログラム実行時に複数のイベントが錯綜したり同時に発生したりしていても、各分岐実行及び各データアクセス実行毎に整理したデータ形式でトレース情報を生成することが望ましい。これにより、デバッグシステムは、トレース情報を分かり易い形でユーザに提示することができる。
特開2003−85000号公報 特開2008−65441号公報 特開平11−312098号公報
以上を鑑みると、全ての記録対象の情報を失うことなく記録し、且つ各分岐実行及び各データアクセス実行毎に整理したデータ形式のトレース情報を生成するトレース方法が望まれる。
CPUを含む半導体装置において前記CPUによりプログラムを実行したときの前記CPUの実行に関する実行履歴を、1つ又は複数のトレース対象命令に関して、ソフトウェアを介して前記半導体装置の外部からトレースするトレース方法は、前記実行履歴として記録対象の情報が発生した命令実行サイクル毎に、前記発生した記録対象の情報を前記1つ又は複数のトレース対象命令の実行に関するトレース情報として、命令毎に整理することなくそのままバッファに記録し、前記命令実行サイクル毎に記録された前記1つ又は複数のトレース対象命令の実行に関するトレース情報において少なくとも1つのトレース対象命令のトレース情報が異なるサイクルに分けて格納されており、前記ソフトウェアにより、前記トレース情報を前記1つ又は複数のトレース対象命令毎に纏めるようにデータ並べ替えを実行することにより、異なるサイクルに分かれているトレース情報を命令実行毎に1つに纏めたデータ形式のトレース情報に再構成する各段階を含む。
本願開示の少なくとも1つの実施例によれば、各命令実行サイクルで発生したトレース情報を、命令実行サイクル毎にそのまま格納するので、実行履歴情報が喪失することがない。また更に、トレースバッファに記録したトレース情報に基づいて、ソフトウェアによりトレース対象の各命令実行毎に纏めたデータ形式のトレース情報を生成できるので、トレース情報を分かり易い形でユーザに提示することができる。
デバッグシステムの構成の一例を示す図である。 トレース方法におけるトレースフレームフォーマットの一例を示す。 トレース情報を図2に示すフォーマットで記録する際のデバッグ回路の動作の一例を示す図である。 トレースバッファに記録されたトレース情報からユーザに提示するトレースリストを抽出する処理を示す図である。 トレース方法におけるサイクルフレームフォーマットの一例を示す。 デバッグ回路の構成の一例を示す図である。 トレース情報を図5に示すサイクルフレームフォーマットで記録する際のデバッグ回路の動作の一例を示す図である。 分岐トレース情報を構築する処理の一例を示すフローチャートである。 データトレース情報を構築する処理の一例を示すフローチャートである。 トレースバッファに記録されたトレース情報からユーザに提示するトレースリストを抽出する処理を示す図である。 ソフトウェアによるデータ並べ替え処理を実行する装置の構成を示す図である。
以下に、本発明の実施例を添付の図面を用いて詳細に説明する。
図1は、デバッグシステムの構成の一例を示す図である。デバッグシステム10は、MPU等の半導体装置11、外部デバッグ装置12、及びホストコンピュータ13を含む。半導体装置11はデバッグ対象の装置であり、CPU21、デバッグ回路22、RAM23、ROM24、周辺回路25、内部バス26を含む。CPU21は、RAM23やROM24に格納されたプログラムを実行する。CPU21は、プログラム実行時に適宜必要に応じてRAM23をアクセスし、RAM23をワークエリアとして用いる。CPU21はデバッグ回路22に接続されており、各種の実行履歴情報をデバッグ回路22に供給する。またデバッグ回路22は、CPU21にデバッグプログラムを実行させることにより、所望のデバッグ機能を実現する。
外部デバッグ装置12は、デバッグ回路22とデバッグ端子28を介して結合され、デバッグ回路22とホストコンピュータ13との間のインターフェースとして機能する。ホストコンピュータ13ではデバッガソフトウェア15が実行されている。ユーザは、ホストコンピュータ13でデバッガソフトウェア15を操作することにより、半導体装置11のCPU21が実行するプログラムのデバッグ作業を行なう。デバッグ回路22はトレースバッファ16を含む。トレースバッファ16は、CPU21の実行履歴に関する各種の情報を格納する。
デバッグシステム10を用いたプログラムデバッグにおけるトレース情報の取得は、例えば、次のようなフローで行われる。まずCPU21のプログラム実行を一旦中断するために、CPU21をブレークする。プログラムの実行が中断された状態をデバッグステートと呼ぶ。このデバッグステートにおいて、デバッガソフトウェア15よりデバッグ回路22のトレース設定を行う。このトレース設定では、例えば、トレース情報としてどのような情報を取得するかを設定し、また、プログラム中のトレースの開始ポイントと終了ポイントとを設定する。必要なトレース設定を行った後、デバッガソフトウェア15よりブレークリターン指示を与えることで、CPU21はプログラムの実行を再開する。デバッグ回路22は、CPU21のプログラム実行過程において、事前に設定されたトレース設定に従って、CPU21の各種実行履歴をトレースバッファ16に格納する。トレース情報の取得が完了し、あらかじめブレーク要因として設定していたイベントが発生すると、CPU21は再度ブレーク処理を行ない、プログラムの実行を中断してデバッグステートへと移行する。以上の処理によって得られたトレース情報を、デバッガソフトウェア15によりトレースバッファ16から読み出し解析することで、ユーザはプログラムの実行履歴を知ることができる。
前述のように、各分岐実行及び各データアクセス実行毎に整理したデータ形式でトレース情報を生成することが望ましい。その目的のためには、そのように整理したデータ形式でトレース情報をトレースバッファに記録するように、デバッグ回路を構成することが考えられる。そのように整理したデータ形式を、以下においてトレースフレームフォーマットと呼ぶ。
図2は、トレース方法におけるトレースフレームフォーマットの一例を示す。例えばCPUが32ビット構成の場合、トレースバッファを68ビットのデータ幅とする。bit67は、2進数“0b0”のときに当該トレースフレームが分岐トレースフレームであることを示し、2進数“0b1”のときに当該トレースフレームがデータトレースフレームであることを示す。分岐トレースフレームの場合、bit66−64に分岐要因を示すデータが格納され、bit63−32に分岐先PC値(CPUのプログラムカウンタ値)、bit31−0に分岐元PC値が格納される。データトレースフレームの場合、bit66にリードアクセスかライトアクセスかを示すビット値が格納され、bit65−64にアクセスサイズ、bit63−32にアクセスアドレス、bit31−0にアクセスデータが格納される。
図3は、CPUの実行履歴に関するトレース情報を図2に示すトレースフレームフォーマットで記録する際のデバッグ回路の動作の一例を示す図である。t1乃至t9は、CPUの連続した9つの命令実行サイクルを示す。実行PCには各サイクルでのPC値(CPUのプログラムカウンタ値)を示し、分岐情報には分岐元か分岐先かを示す。またデータアクセスにはリード/ライトアクセスを示し、ライトデータにはライトアクセスに対応するライトデータを示し、リードデータにはリードアクセスに対応するリードデータを示す。ロスト対策バッファは、FIFOで構成され、CPUの実行情報がトレースバッファへ格納できない場合に情報を一時格納するために用いられる。トレースバッファは、発生順に下段から上段に向かって新しいトレース情報を示す。ここで、トレースバッファの図で下線が引かれた情報は、当該サイクルで新たに格納された情報を示す。図3に示す動作例では、t1、t2でロード命令、t4で分岐命令、t5、t6でストア命令が実行されている。
t1及びt2では、それぞれリードアクセスRA0及びリードアクセスRA1が発生して、リードアクセスを示すトレース情報がトレースバッファへ格納される。即ち、図2に示すデータトレースフレームが、bit66に値“0b0”が設定されて、トレースバッファに格納される。このデータトレースフレームのアクセスサイズ及びアクセスアドレスには当該リードアクセスに対応した値が格納される。但し、アクセスデータについては、この時点ではリードデータが入手されていないので、何ら値が設定されない。
t4で実行した分岐命令についてはt5で分岐先の情報が得られる。従ってt5において、図2に示す分岐トレースフレームが、分岐要因を示す値、分岐先PC値(PC5)、分岐元PC値(PC4)とともにトレースバッファに格納される。図3に示す例では、t5において更に、PC5の命令実行によりライトアクセスWA0とライトデータWD0とが発生し、また同時にPC1のリードアクセスRA0に対応するリードデータRD0が受信される。トレースバッファへのデータ格納は、一度に1つのトレースフレームについてのみ実行できる。t5においては分岐トレースフレームをトレースバッファへ格納しているので、WA0/WD0とRD0とについては、ロスト対策バッファに一時格納する。
t6では、t5でロスト対策バッファに一時格納されたWA0/WD0の情報をデータトレースフレームとしてトレースバッファに格納する。t6では更に、PC6の命令実行によりライトアクセスWA1とライトデータWD1とが発生し、また同時にPC2のリードアクセスRA1に対応するリードデータRD1が受信される。これらWA1/WD1とRD1とについては、t6において、ロスト対策バッファに一時格納する必要がある。しかしながら、この例におけるロスト対策バッファは2段のFIFOであるため、RD1はロスト対策バッファよりあふれてしまい、読出しデータRD1に関する情報は失われてしまう。
t7では、t5でロスト対策バッファに一時格納されたRD0を、トレースバッファ中のRA0を格納したトレースフレームに格納する。t8では、t6でロスト対策バッファに一時格納したWA1/WD1の情報をトレースバッファに格納する。以降同様に、CPUの実行情報を発生した順にトレースバッファに格納していき、格納できない情報はロスト対策バッファへ一時格納する。
上記のようにしてトレースバッファに記録されたトレース情報は、各分岐実行を示す分岐トレースフレーム及び各データアクセス実行を示すデータトレースフレームとして格納されている。即ち、トレースフレームフォーマットを用いることにより、各分岐実行及び各データアクセス実行毎に整理したデータ形式でトレース情報を記録・格納している。従って、データ並び替え等の変換処理をすることなく、トレースフレームフォーマットからデータを抽出して、ユーザに分かり易い形でデータを提示することができる。
図4は、トレースバッファに記録されたトレース情報からユーザに提示するトレースリストを抽出する処理を示す図である。図4の左側がトレースバッファに格納される各トレースフレームであり、図3に示す実行履歴の例に対応する。図4の右側が各トレースフレームから抽出したトレースリストの情報である。例えば、t8でトレースバッファに格納したWA1/WD1のトレースフレームのデータから、書込みアドレスWA1に書込みデータWD1を書き込む命令を示す命令表記Write(WA1,WD1)を生成することができる。同様にして、各トレースフレームについて、1つのトレースフレームから1つの命令表記を生成することができる。なお読出し命令Read(RA1,―――)は、読出しデータに関する履歴情報が失われたことを示している。
上記のように分岐トレース情報とデータトレース情報とを別々のフレームとしてトレースバッファに格納する方法では、1つのトレースフレームに属するトレース情報が複数のサイクルに渡り発生することを考慮してデバッグ回路を構成する必要がある。その結果、デバッグ回路の回路構成が複雑で大規模となってしまう。また記録すべきトレース情報が1つの命令実行サイクルで複数個同時に発生する場合があるので、ロスト対策バッファを用意する必要がある。しかしながら、トレース情報が同時発生する命令実行サイクルが複数回連続するような場合には、少なくともサイクルが連続する回数分の段数のロスト対策バッファが必要となる。サイクルが連続する回数はプログラムによって異なり、いかにロスト対策バッファの段数を多くしても、確実にデータ損失を防ぐことはできない。
以上説明したように、デバッグ回路において、各分岐実行及び各データアクセス実行毎に整理したデータ形式でトレース情報を記録していく方式には、幾つか問題点がある。従って、デバッグ回路において各命令実行サイクル毎にトレース情報を記録する時にはそのように整理したデータ形式を用いることなく記録し、トレース情報記録後の後処理により、整理したデータ形式のデータにトレース情報を変換することが好ましい。
図1に示すデバッグシステム10では、CPU21を含む半導体装置11において、CPU21によりプログラムを実行したときのCPU21の実行に関する実行履歴をトレースする。その際、1つ又は複数のトレース対象に関して、デバッガソフトウェア15を介して半導体装置11の外部からトレースする。まず、実行履歴として記録対象の情報が発生した命令実行サイクル毎に、それら発生した記録対象の情報を1つ又は複数のトレース対象の実行に関するトレース情報としてトレースバッファ16に記録する。例えば、図3のt5のように、複数のトレース対象(PC4の分岐命令、PC5の書込み命令、PC1の読出し命令)の実行に関して、そのサイクルで発生したトレース情報(PC5、WA0/WD0、RD0)をトレースバッファ16に記録する。この状態では、発生した情報を命令実行サイクル毎にトレースバッファ16に記録したのみであり、例えば各分岐実行及び各データアクセス実行毎に整理したデータ形式とはなっていない。次に、命令実行サイクル毎に記録された1つ又は複数のトレース対象の実行に関するトレース情報を、デバッガソフトウェア15により、1つ又は複数のトレース対象毎に纏めるようにデータ並べ替えを実行する。即ち、発生した情報を命令実行サイクル毎にトレースバッファ16に単に記録したトレース情報に対して、データの並び替えを実行することにより、例えば各分岐実行及び各データアクセス実行毎に整理したデータ形式のデータを生成する。
上記のように、発生した情報を命令実行サイクル毎にトレースバッファ16に単に記録した場合、1命令実行サイクルにおいて発生し記録されたトレース情報(以下、サイクルフレームと呼ぶ)では、1纏まりの完全なトレース情報を構成しないことがある。例えば、分岐トレース情報は、分岐元PCが判明する次のサイクルで分岐先PCが判明するため、分岐元PCが格納されたサイクルフレームと分岐先PCが格納されたサイクルフレームとに分けて格納される。データトレース情報においても、アドレスとデータが同時に判明しない場合は、2つのサイクルフレームに分けて格納される。デバッガソフトウェア15では、トレース情報をトレースバッファ16から読み出した時に、トレース情報のデ―タを並び替えることにより、異なるサイクルフレームに分かれているトレース情報を1つに纏めて再構成する。なお、トレースバッファ16でのトレース情報の再構成に必要となる情報も、あらかじめ各サイクルフレーム内に格納しておく。
図5は、トレース方法におけるサイクルフレームフォーマットの一例を示す。図5に示すサイクルフレームフォーマット例では、32ビット構成のCPUの場合、1サイクルフレームは140ビット幅で構成される。bit139は分岐元を示すフラグを格納するためのビットであり、同様にbit138は分岐先を示すフラグ、bit137−135は分岐要因を示す値を格納するためのビットである。またbit134−103には実行PC値が格納される。bit102は、リードデータが有効か否かを示すフラグを格納するためのビットであり、同様にbit101−100はリードデータID、bit99−68はリードデータを格納するためのビットである。またbit67はデータアクセスが有効か否かを示すフラグを格納するためのビットである。bit66はリードかライトかを示す値、bit65−66はデータアクセスサイズ、bit63−32はアクセスアドレス、更にbit31−0はライトデータを格納するためのビットである。
ここで、分岐要因には3ビット(bit137−135)が割り当てられているが、このビット幅は分岐要因となる種類の数に依存する。また、リードデータIDには2ビット(bit101−100)が割り当てられているが、このビット幅はCPUが後続のリードアクセスを未受領のリードデータに先行していくつ発行できるかに依存する。2ビット構成の場合、あるリードアクセスのIDを“00”とすると、このリードアクセスに対応するリードデータを受信する前に、IDが“01”、“10”、“11”の3つのリードアクセスを発行できる。リードアクセスIDが“00”のリードアクセスにより読み出されたリードデータは、同じ値“00”のリードデータIDとともに記録される。またこの例ではbit31−0はライトデータの格納領域としているが、リードアクセス時にはライトデータが存在しないので、そのうちの一部のビットbit1−0をリードアクセスID格納用のビットとして併用している。代りに、リードアクセスIDを示す値を格納するための専用のビットを設けてもよい。
図5に示すサイクルフレームフォーマットは一例であり、本技術はこの構成に限定されるものではない。本技術によるトレース方法では、1命令実行サイクルで同時発生し得る記録対象の全ての実行履歴情報及び後処理としてのデータ並べ替えに用いる情報(リードアクセスIDとリードデータID等)を含めるようなサイクルフレームフォーマットであればよい。
図6は、デバッグ回路の構成の一例を示す図である。図6において図1と同一の構成要素は同一の番号で参照し、その説明は省略する。デバッグ回路22は、トレースバッファ16、トレース制御部17、及び通信手段18を含む。トレース制御部17は、CPU21から分岐情報、実行PC値、データアクセス属性、データアクセスアドレス、リードデータ、及びライトデータを受け取る。図5に示すサイクルフレームに格納する情報は、CPU21から受け取る上記情報の中に含まれている。例えば、リードデータ有効、リードデータID、データアクセス有効、リード/ライト、アクセスサイズ、及びリードアクセスIDの情報は、CPU21から受信するデータアクセス属性の中に含まれてよい。同様に、分岐元フラグ、分岐先フラグ、及び分岐要因の情報は、CPU21から受信する分岐情報の中に含まれてよい。
トレース制御部17は、書込み制御部31、取得トレース情報設定部32、及びライトポインタ制御部33を含む。取得トレース情報設定部32には、複数のトレース対象を指定する。これにより書込み制御部31は、取得トレース情報設定部32に指定したトレース対象に関する記録対象の情報が発生した命令実行サイクル毎に、トレース情報をトレースバッファ16に記録する。例えば、分岐イベント及びデータアクセスイベントをトレース対象として指定した場合、分岐及びデータアクセスに関する記録対象の情報が発生した命令実行サイクルについてのみ、サイクルフレームがトレースバッファ16に記録される。また例えば、データアクセス情報をトレース対象として指定した場合、データアクセスに関する記録対象の情報が発生した命令実行サイクルについてのみ、サイクルフレームがトレースバッファ16に記録される。この場合、トレース対象として指定されていない分岐に関する記録対象の情報のみが発生した命令実行サイクルについては、トレースバッファ16への記録は行なわれない。これにより、トレース対象として指定した情報を発生する動作の実行に関する履歴のみを記録して、トレースバッファ16の記憶スペースを有効に利用することができる。
書込み制御部31は、サイクルフレームを記録する場合、書込み指示信号をアサートする。書込み指示信号はトレースバッファ16に供給されるとともに、ライトポインタ制御部33に供給される。ライトポインタ制御部33は、書込み指示信号がアサートされる度にライトポインタカウンタをインクリメントする。このライトポインタカウンタの値が書込みアドレスを表すことになる。トレースバッファ16は、書込み指示信号がアサートされたときに、書込み制御部31から供給されるサイクルフレームを、ライトポインタ制御部33から供給される書込みアドレスに格納する。通信手段18は、外部デバッグ装置12を介して供給されるホストコンピュータ13からの読出し要求に応じて、トレースバッファ16の記録内容を読み出し、外部デバッグ装置12を介してホストコンピュータ13に送信する。
図7は、CPUの実行履歴に関するトレース情報を図5に示すサイクルフレームフォーマットで記録する際のデバッグ回路の動作の一例を示す図である。t1乃至t9は、CPU21の連続した9つの命令実行サイクルを示す。実行PCには各サイクルでのPC値(CPU21のプログラムカウンタ値)を示し、分岐情報には分岐元か分岐先かを示す。またデータアクセスにはリード/ライトアクセスを示し、ライトデータにはライトアクセスに対応するライトデータを示し、リードデータにはリードアクセスに対応するリードデータを示す。トレースバッファは、トレースバッファ16に記録されるトレース情報を、その記録順に下段から上段に向けて順番に示す。ここで、トレースバッファの図で下線が引かれた情報は、当該サイクルで新たに格納された情報を示す。図7に示す動作例では、t1、t2でロード命令、t4で分岐命令、t5、t6でストア命令が実行されている。
t1及びt2では、それぞれリードアクセスRA0及びリードアクセスRA1が発生して、リードアクセスを示すトレース情報がトレースバッファへ格納される。即ち、図5に示すサイクルフレームにおいて、bit134−103に実行PC値、bit66に値“0b0”を設定し、そのサイクルフレームをトレースバッファ16に格納する。その他に、データアクセス有効を示すビットやリードアクセスIDを示すビットも設定される。またアクセスサイズ及びアクセスアドレスには当該リードアクセスに対応した値が格納される。但し、アクセスデータについては、この時点ではリードデータが入手されていないので、何ら値が設定されない。
t4で実行した分岐命令については、分岐元情報のみが発生しているため、分岐元情報と実行PC値とをトレースバッファ16に格納する。即ち、図6に示すサイクルフレームにおいて、bit139の分岐元を示すフラグをセットし、bit134−103に実行PC値を設定し、そのサイクルフレームをトレースバッファ16に格納する。
t5で分岐先の情報が得られる。従ってt5において、図6に示すサイクルフレームのbit138の分岐先を示すフラグをセットし、bit137−135に分岐要因を示す値を設定するとともにbit134−103に実行PC値を設定し、そのサイクルフレームをトレースバッファ16に格納する。また図3に示す例では、t5において更に、PC5の命令実行によりライトアクセスWA0とライトデータWD0とが発生し、また同時にPC1のリードアクセスRA0に対応するリードデータRD0が受信される。従ってt5においてトレースバッファ16に格納されるサイクルフレームにおいては、これらのデータアクセスに関するトレース情報も、上記分岐先情報とともに適宜設定されることになる。
t6では、PC6の命令実行によりライトアクセスWA1とライトデータWD1とが発生し、また同時にPC2のリードアクセスRA1に対応するリードデータRD1が受信される。従って、ライトアクセスを示すトレース情報とリードデータに関するトレース情報とが、1つのサイクルフレームとして、トレースバッファ16に格納される。即ち、図5に示すサイクルフレームにおいて、bit134−103に実行PC値、bit66に値“0b1”、bit67にデータアクセス有効を示すビットが格納される。またアクセスサイズ、アクセスアドレス、及びライトデータには、当該ライトアクセスに対応した値が格納される。またリードデータIDとリードデータとには、受信したリードデータに対応する値が格納される。以降同様に、CPUの実行情報を発生した順にトレースバッファ16に格納していく。
図8は、分岐トレース情報を構築する処理の一例を示すフローチャートである。このフローチャートの処理は、ホストコンピュータ13のデバッガソフトウェア15により、トレースバッファ16に記録されたサイクルフレームフォーマットのトレース情報に対して実行される。
ステップS1で、最新のサイクルフレームを着目フレームとする。ステップS2で、着目サイクルフレームの分岐先フラグがH(分岐先であることを示す値)に設定されているか否かを判定する。NOの場合には、次のサイクルフレームに移動する(次のサイクルフレームを着目フレームとする)。これを繰り返し、分岐先フラグが設定されているサイクルフレームを検出すると(S2でYES)、ステップS3で、着目フレームから分岐要因及び分岐先PCの情報を取り出す。ステップS4で次のサイクルフレームに進む(次のサイクルフレームを着目フレームとする)。ステップS5で、着目フレームにおいて分岐元フラグが立っていることを確認し、そのサイクルフレームから分岐元PCを取り出す。ステップS6で、ステップS3で取得した分岐要因及び分岐先PCとステップS5で取得した分岐元PCとを用いて、1つの分岐トレース情報を構築する。ステップS7で、着目フレーム内において更に分岐先フラグも立っているか否かを判定する。YESの場合、ステップS3に戻り以降の処理を繰り返す。これは、着目している実行命令が分岐先かつ分岐元である場合に相当する。分岐先フラグが立っていない場合(S7でNO)、ステップS8で、着目フレームが最後のサイクルフレームであるか否かを判定する。最後のサイクルフレームでない場合には、ステップS9で次のサイクルフレームに移動し(次のサイクルフレームを着目フレームとし)、ステップS2に戻り以降の処理を繰り返す。最後のサイクルフレームの場合(S8でYES)、分岐トレース情報構築処理を終了する。
図9は、データトレース情報を構築する処理の一例を示すフローチャートである。このフローチャートの処理は、ホストコンピュータ13のデバッガソフトウェア15により、トレースバッファ16に記録されたサイクルフレームフォーマットのトレース情報に対して実行される。
ステップS1で、最新のサイクルフレームを着目フレームとする。ステップS2で、着目サイクルフレームのリードデータ有効フラグがH(有効であることを示す値)に設定されているか否かを判定する。リードデータ有効フラグが設定されていない場合(S2でNO)、処理はステップS4に進む。またリードデータ有効フラグが設定されている場合(S2でYES)、ステップS3で、着目フレームからリードデータID(RDID)とリードデータ(RDATA)とを取り出す。次にステップS4で、着目フレームにおいてデータアクセス有効フラグが立っているか否かを判定する。データアクセス有効フラグがたっていない場合(S4でNO)、処理はステップS9に進む。データアクセス有効フラグがたっている場合(S4でYES)、ステップS5で、データアクセスはライトであるか否かが判定される。
データアクセスがライトである場合(S5でYES)、ステップS6で、実行PC、アクセスサイズ(SIZE)、アクセスアドレス(ADR)、及びライトデータ(WDATA)を着目フレームから取得する。続くステップS8で、ステップS6で取得した実行PC、アクセスサイズ、アクセスアドレス、及びライトデータを用いて、1つのライトデータトレース情報を構築する。またデータアクセスがライトでない場合(S5でNO)、ステップS7で、実行PC、アクセスサイズ(SIZE)、アクセスアドレス(ADR)、及びリードアクセスID(RAID)を着目フレームから取得する。続くステップS8で、ステップS7で取得した実行PC、アクセスサイズ、及びアクセスアドレスと、S7で取得したリードアクセスIDに対応するS3で取得したリードデータとを用いて、1つのリードデータトレース情報を構築する。
ステップS9で、着目フレームが最後のサイクルフレームであるか否かを判定する。最後のサイクルフレームでない場合には、ステップS10で次のサイクルフレームに移動し(次のサイクルフレームを着目フレームとし)、ステップS2に戻り以降の処理を繰り返す。最後のサイクルフレームの場合(S9でYES)、データトレース情報を構築する処理を終了する。
上記の処理において、ステップS5の判定は、データアクセス有効フラグとリードかライトかを示すフラグとに基づいて行なうことができる。なおリードデータトレース情報は、2つのサイクルフレームにまたがっていることもあれば、1つのサイクルフレームにリードデータとリードアクセス情報とが格納されていることもある。ライトデータトレース情報については、1つのサイクルフレームに全ての情報が格納されている。なお上記の処理において、リードデータトレース情報のみ取得するよう設定した場合は、ライトデータ関連のトレース情報はなく、また、ライトデータトレース情報のみ取得するよう設定した場合は、リードデータ関連のトレース情報はない。
図10は、トレースバッファに記録されたトレース情報からユーザに提示するトレースリストを抽出する処理を示す図である。図10の左側がトレースバッファに格納される各サイクルフレームであり、図7に示す実行履歴の例に対応する。図10の右側が各サイクルフレームから抽出したトレースリストの情報である。例えば、t6でトレースバッファに格納したサイクルフレームの情報の一部に基づいて、PC6で書込みアドレスWA1に書込みデータWD1を書き込む命令を示す命令表記Write(PC6/WA1,WD1)が生成される。またこのt6でトレースバッファに格納したサイクルフレームの情報の残りの部分とt2でトレースバッファに格納したサイクルフレームの情報とに基づいて、PC2での読出し命令を示す命令表記Read(PC2/RA1,RD1)が生成される。同様にして、各サイクルフレームに記録されるデータを並べ替えことにより、各トレースリストの命令表記を生成する。即ち、複数のサイクルフレームに分散して記録されたデータを1つに纏めることにより、1つのトレースリストの命令表記を生成する。
以上説明した技術に基づけば、各命令実行サイクルで発生したトレース情報を、命令実行サイクル毎にそのまま格納するので、デバッグ回路22による複雑なフレーム形成処理が必要ない。またトレースバッファ16は、1サイクルで発生し得る全ての情報を格納できるビット幅を持つため、実行履歴情報が喪失することがない。また更に、CPUの実行履歴に関する情報は、命令実行サイクル毎に、実行PC値とともにトレースバッファ16へ格納されるので、全てのトレース情報に対して実行PCの値が得られる。トレースバッファ16に記録したトレース情報には、各命令実行毎にデータを纏めるためのID情報等を含めてあるので、後でデバッガソフトウェア15によりトレース対象の各命令実行毎に纏めたデータ形式のトレース情報を生成できる。
図11は、ソフトウェアによるデータ並べ替え処理を実行する装置の構成を示す図である。図11に示されるように、ソフトウェアによるデータ並べ替え処理を実行する装置は、例えばパーソナルコンピュータやエンジニアリングワークステーション等のコンピュータにより実現される。図11の装置は、コンピュータ510と、コンピュータ510に接続されるディスプレイ装置520、通信装置523、及び入力装置よりなる。入力装置は、例えばキーボード521及びマウス522を含む。コンピュータ510は、CPU511、RAM512、ROM513、ハードディスク等の二次記憶装置514、可換媒体記憶装置515、及びインターフェース516を含む。コンピュータ510が、図1のホストコンピュータ13に相当する。
キーボード521及びマウス522は、ユーザとのインターフェースを提供するものであり、コンピュータ510を操作するための各種コマンドや要求されたデータに対するユーザ応答等が入力される。ディスプレイ装置520は、コンピュータ510で処理された結果等を表示すると共に、コンピュータ510を操作する際にユーザとの対話を可能にするために様々なデータ表示を行う。通信装置523は、遠隔地との通信を行なうためのものであり、例えばモデムやネットワークインターフェース等よりなる。
本発明によるソフトウェアによるデータ並べ替え処理は、コンピュータ510が実行可能なコンピュータプログラムとして提供される。このコンピュータプログラムは、可換媒体記憶装置515に装着可能な記憶媒体Mに記憶されており、記憶媒体Mから可換媒体記憶装置515を介して、RAM512或いは二次記憶装置514にロードされる。或いは、このコンピュータプログラムは、遠隔地にある記憶媒体(図示せず)に記憶されており、この記憶媒体から通信装置523及びインターフェース516を介して、RAM512或いは二次記憶装置514にロードされる。
キーボード521及び/又はマウス522を介してユーザからプログラム実行指示があると、CPU511は、記憶媒体M、遠隔地記憶媒体、或いは二次記憶装置514からプログラムをRAM512にロードする。CPU511は、RAM512の空き記憶空間をワークエリアとして使用して、RAM512にロードされたプログラムを実行し、適宜ユーザと対話しながら処理を進める。なおROM513は、コンピュータ510の基本動作を制御するための制御プログラムが格納されている。
上記コンピュータプログラムを実行することにより、コンピュータ510が、上記実施例で説明されたようにソフトウェアによるデータ並べ替え処理を実行する。
以上、本発明を実施例に基づいて説明したが、本発明は上記実施例に限定されるものではなく、特許請求の範囲に記載の範囲内で様々な変形が可能である。
10 デバッグシステム
11 半導体装置
12 外部デバッグ装置
13 ホストコンピュータ
15 デバッガソフトウェア
16 トレースバッファ
21 CPU
22 デバッグ回路
23 RAM
24 ROM
25 周辺回路
26 内部バス

Claims (5)

  1. CPUを含む半導体装置において前記CPUによりプログラムを実行したときの前記CPUの実行に関する実行履歴を、1つ又は複数のトレース対象命令に関して、ソフトウェアを介して前記半導体装置の外部からトレースするトレース方法であって、
    前記実行履歴として記録対象の情報が発生した命令実行サイクル毎に、前記発生した記録対象の情報を前記1つ又は複数のトレース対象命令の実行に関するトレース情報として、命令毎に整理することなくそのままバッファに記録し、
    前記命令実行サイクル毎に記録された前記1つ又は複数のトレース対象命令の実行に関するトレース情報において少なくとも1つのトレース対象命令のトレース情報が異なるサイクルに分けて格納されており、前記ソフトウェアにより、前記トレース情報を前記1つ又は複数のトレース対象命令毎に纏めるようにデータ並べ替えを実行することにより、異なるサイクルに分かれているトレース情報を命令実行毎に1つに纏めたデータ形式のトレース情報に再構成する
    各段階を含むことを特徴とする実行履歴トレース方法。
  2. 前記半導体装置に含まれるデバッグ回路が前記トレース情報を前記バッファに記録し、前記半導体装置に結合されるコンピュータ上で実行される前記ソフトウェアにより前記データ並び替えを実行することを特徴とする請求項1記載の実行履歴トレース方法。
  3. 前記トレース情報を前記バッファに記録する段階は、1つの前記命令実行サイクルで発生し得る前記記録対象の情報を漏れなく格納するビット幅を用いて前記トレース情報を前記バッファに記録することを特徴とする請求項1又は2に記載の実行履歴トレース方法。
  4. 前記1つ又は複数のトレース対象命令は命令実行の履歴を示す分岐情報とデータアクセス実行の履歴を示すデータアクセス情報とを含み、前記命令実行サイクル毎に前記バッファに記録する前記トレース情報は、分岐元を示すデータ格納用ビット、分岐先を示すデータ格納用ビット、分岐要因を示すデータ格納用ビット、実行プログラムカウンタ値を示すビット、リードデータ値の有効を示すデータ格納用ビット、リードデータID格納用ビット、リードデータ値格納用ビット、データアクセスの有効を示すデータ格納用ビット、リード又はライトアクセスを示すデータ格納用ビット、アクセスサイズを示すデータ格納用ビット、アクセスアドレス格納用ビット、ライトデータ格納用ビット、リードアクセスID格納用ビットを含むことを特徴とする請求項1乃至3の何れか一項記載の実行履歴トレース方法。
  5. 前記1つ又は複数のトレース対象命令を指定する段階を更に含み、前記トレース情報を前記バッファに記録する段階は、前記指定した記録対象の情報が発生した命令実行サイクル毎に前記トレース情報を前記バッファに記録することを特徴とする請求項1乃至4の何れか一項記載の実行履歴トレース方法。
JP2009063164A 2009-03-16 2009-03-16 実行履歴トレース方法 Active JP5376509B2 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP2009063164A JP5376509B2 (ja) 2009-03-16 2009-03-16 実行履歴トレース方法
US12/721,667 US8578216B2 (en) 2009-03-16 2010-03-11 Execution history tracing method
US14/068,652 US9507688B2 (en) 2009-03-16 2013-10-31 Execution history tracing method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2009063164A JP5376509B2 (ja) 2009-03-16 2009-03-16 実行履歴トレース方法

Publications (2)

Publication Number Publication Date
JP2010218139A JP2010218139A (ja) 2010-09-30
JP5376509B2 true JP5376509B2 (ja) 2013-12-25

Family

ID=42731674

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2009063164A Active JP5376509B2 (ja) 2009-03-16 2009-03-16 実行履歴トレース方法

Country Status (2)

Country Link
US (2) US8578216B2 (ja)
JP (1) JP5376509B2 (ja)

Families Citing this family (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5376509B2 (ja) 2009-03-16 2013-12-25 スパンション エルエルシー 実行履歴トレース方法
US9304844B2 (en) * 2013-02-27 2016-04-05 Qualcomm Incorporated System and method for preserving critical debug data in a portable computing device
RU2635044C2 (ru) 2013-06-27 2017-11-08 Интел Корпорейшн Режим слежения в устройстве обработки в системах трассировки команд
US9703667B2 (en) * 2015-02-22 2017-07-11 International Business Machines Corporation Hardware-based edge profiling
US9443192B1 (en) 2015-08-30 2016-09-13 Jasmin Cosic Universal artificial intelligence engine for autonomous computing devices and software applications
US9582762B1 (en) 2016-02-05 2017-02-28 Jasmin Cosic Devices, systems, and methods for learning and using artificially intelligent interactive memories
US9864933B1 (en) 2016-08-23 2018-01-09 Jasmin Cosic Artificially intelligent systems, devices, and methods for learning and/or using visual surrounding for autonomous object operation
US10452974B1 (en) 2016-11-02 2019-10-22 Jasmin Cosic Artificially intelligent systems, devices, and methods for learning and/or using a device's circumstances for autonomous device operation
US10607134B1 (en) 2016-12-19 2020-03-31 Jasmin Cosic Artificially intelligent systems, devices, and methods for learning and/or using an avatar's circumstances for autonomous avatar operation
US10387298B2 (en) * 2017-04-04 2019-08-20 Hailo Technologies Ltd Artificial neural network incorporating emphasis and focus techniques
US11615297B2 (en) 2017-04-04 2023-03-28 Hailo Technologies Ltd. Structured weight based sparsity in an artificial neural network compiler
US10102449B1 (en) 2017-11-21 2018-10-16 Jasmin Cosic Devices, systems, and methods for use in automation
US10474934B1 (en) 2017-11-26 2019-11-12 Jasmin Cosic Machine learning for computing enabled systems and/or devices
US10402731B1 (en) 2017-12-15 2019-09-03 Jasmin Cosic Machine learning for computer generated objects and/or applications
CN108255732B (zh) * 2018-01-24 2022-03-18 广东乐心医疗电子股份有限公司 跟踪单片机系统运行状态的方法
CN108647131B (zh) * 2018-04-08 2021-04-27 广州视源电子科技股份有限公司 运行日志的输出系统
JP6978458B2 (ja) * 2019-02-28 2021-12-08 ファナック株式会社 シーケンスプログラムのトレースに用いるシーケンスプログラム処理装置
US11811421B2 (en) 2020-09-29 2023-11-07 Hailo Technologies Ltd. Weights safety mechanism in an artificial neural network processor
US11874900B2 (en) 2020-09-29 2024-01-16 Hailo Technologies Ltd. Cluster interlayer safety mechanism in an artificial neural network processor
US11947439B2 (en) * 2020-11-30 2024-04-02 International Business Machines Corporation Learning from distributed traces for anomaly detection and root cause analysis

Family Cites Families (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS607080U (ja) * 1983-06-28 1985-01-18 横河電機株式会社 マイクロプロセツサアナライザ
JPH0844587A (ja) * 1994-07-28 1996-02-16 Hitachi Ltd トレース装置
US6314530B1 (en) * 1997-04-08 2001-11-06 Advanced Micro Devices, Inc. Processor having a trace access instruction to access on-chip trace memory
JP3542463B2 (ja) * 1997-07-29 2004-07-14 Necエレクトロニクス株式会社 集積回路装置、その動作制御方法
JP3116901B2 (ja) 1998-04-28 2000-12-11 日本電気株式会社 プログラム検査方法、プログラム検査装置及びプログラム検査プログラムを記録した記録媒体
JP3506609B2 (ja) 1998-06-30 2004-03-15 京セラ株式会社 積層型圧電アクチュエータ
JP2000222228A (ja) * 1999-01-29 2000-08-11 Hitachi Ltd リソース占有順序の検証によるデッドロック防止方法
JP2000222243A (ja) * 1999-02-03 2000-08-11 Nec Corp デバッグ装置及びデバッグ方法
JP2002318734A (ja) * 2001-04-18 2002-10-31 Teamgia:Kk 通信ログ処理方法及びシステム
JP2003085000A (ja) * 2001-09-10 2003-03-20 Mitsubishi Electric Corp トレース情報生成装置およびその方法
US6615371B2 (en) * 2002-03-11 2003-09-02 American Arium Trace reporting method and system
JP2003296136A (ja) * 2002-04-04 2003-10-17 Mitsubishi Electric Corp トレース装置
US20030212937A1 (en) * 2002-05-07 2003-11-13 Marc Todd System and method for exposing state based logic signals within an electronics system over an existing network conduit
JP2008523456A (ja) * 2004-05-12 2008-07-03 コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ トレースコプロセッサを備えたデータ処理システム
JP2006012064A (ja) * 2004-06-29 2006-01-12 Toshiba Corp トレース装置
US7810075B2 (en) * 2005-04-29 2010-10-05 Sap Ag Common trace files
US7689867B2 (en) * 2005-06-09 2010-03-30 Intel Corporation Multiprocessor breakpoint
US20060294343A1 (en) * 2005-06-27 2006-12-28 Broadcom Corporation Realtime compression of microprocessor execution history
JP4847734B2 (ja) * 2005-10-31 2011-12-28 ルネサスエレクトロニクス株式会社 半導体集積回路装置、それのデバッグシステム及びデバッグ方法。
US20070234306A1 (en) * 2006-03-31 2007-10-04 Klinger Uwe D Tracing performance of machine-readable instructions
JP2008033849A (ja) * 2006-08-01 2008-02-14 Hitachi Ltd 障害解析システム
JP2008059515A (ja) * 2006-09-04 2008-03-13 Hitachi Software Eng Co Ltd プログラム実行過程の表示方法及びシステム並びにプログラム
JP4846493B2 (ja) * 2006-09-05 2011-12-28 富士通セミコンダクター株式会社 デバッグシステム及びデバッグ回路
JP5376509B2 (ja) 2009-03-16 2013-12-25 スパンション エルエルシー 実行履歴トレース方法

Also Published As

Publication number Publication date
US9507688B2 (en) 2016-11-29
US20100235686A1 (en) 2010-09-16
US8578216B2 (en) 2013-11-05
JP2010218139A (ja) 2010-09-30
US20140075249A1 (en) 2014-03-13

Similar Documents

Publication Publication Date Title
JP5376509B2 (ja) 実行履歴トレース方法
CN110603528B (zh) 调试系统和方法
JP5679989B2 (ja) デバッグパイプライン
CN109144515B (zh) Dcs图形化算法组态的离线仿真方法和装置
JPS6116100B2 (ja)
CN103093005A (zh) 一种遥信数据处理方法和装置
CN111078217A (zh) 脑图生成方法、装置和计算机可读存储介质
JP2007310565A (ja) システムlsi検証装置及びシステムlsi検証プログラム
US8966323B2 (en) Monitoring multiple data transfers
US8468393B2 (en) Triggering diagnostic operations within a data processing apparatus
CN102597965B (zh) 动作检验装置及动作检验方法
US10816600B1 (en) Protocol analysis and visualization during simulation
JP4472557B2 (ja) プログラム作成装置
CN113874802B (zh) 控制系统、可编程逻辑控制器以及信息处理方法
JP6510430B2 (ja) トレースデータ編集装置及び方法
CN111008133B (zh) 粗粒度数据流架构执行阵列的调试方法及装置
JP3892873B2 (ja) プログラマブルコントローラ
JP5702265B2 (ja) プログラム自動生成装置およびプログラム自動生成方法
JPH08180094A (ja) アーキテクチャ・シミュレータ
JP2005165825A (ja) トレース情報記録装置
JP2007018313A (ja) 回路設計プログラム、回路設計装置、回路設計方法
JP2001166969A (ja) プログラム動作情報表示システム及びプログラムを記録したコンピュータ読み取り可能な記録媒体
US20020062208A1 (en) Method and apparatus for visualization of microprocessor pipeline operation
CN102782657B (zh) 动作检验装置及动作检验方法
JP5034867B2 (ja) ソフトウェア検証支援プログラム、該プログラムを記録した記録媒体、ソフトウェア検証支援装置、およびソフトウェア検証支援方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20111125

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20130213

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20130219

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20130422

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20130521

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20130718

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: 20130820

A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A711

Effective date: 20130822

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20130918

R150 Certificate of patent or registration of utility model

Ref document number: 5376509

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313111

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

R360 Written notification for declining of transfer of rights

Free format text: JAPANESE INTERMEDIATE CODE: R360

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250