JP7036814B2 - デバッギングシステム及び方法 - Google Patents

デバッギングシステム及び方法 Download PDF

Info

Publication number
JP7036814B2
JP7036814B2 JP2019520950A JP2019520950A JP7036814B2 JP 7036814 B2 JP7036814 B2 JP 7036814B2 JP 2019520950 A JP2019520950 A JP 2019520950A JP 2019520950 A JP2019520950 A JP 2019520950A JP 7036814 B2 JP7036814 B2 JP 7036814B2
Authority
JP
Japan
Prior art keywords
hardware
hll
state machine
debugging
finite state
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
JP2019520950A
Other languages
English (en)
Other versions
JP2019533252A (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.)
Xilinx Inc
Original Assignee
Xilinx 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 Xilinx Inc filed Critical Xilinx Inc
Publication of JP2019533252A publication Critical patent/JP2019533252A/ja
Application granted granted Critical
Publication of JP7036814B2 publication Critical patent/JP7036814B2/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/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/3632Software debugging of specific synchronisation aspects

Landscapes

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

Description

本開示は、一般に、ソフトウェアデバッガを使用してハードウェア記述に変換されたソフトウェアをデバッギングすることに関する。
ソフトウェアシステムの性能を改善するための1つの技術は、選択されたセクションをハードウェアアクセラレータとして実装することである。高い計算上の複雑さを示し、総ランタイムの大部分を消費するシステムのこれらのセクションは、ハードウェアアクセラレータとして実装するのに適した候補でありうる。ハードウェアアクセラレータは、例えば特定用途向け集積回路(ASIC)、グラフィック処理装置(GPU)、又はフィールドプログラマブルゲートアレイ(FPGA)上で動作する回路とすることができるだろう。ハードウェアアクセラレータを作成する際にソフトウェア設計者が採用する一般的な手法は、高水準合成(HLS)ツールを使用して、識別されたセクションの元の高水準言語(HLL)仕様を等価のレジスタ転送レベル(RTL)又は回路の他のハードウェア記述言語(HDL)仕様に変換することである。
生成されたRTL仕様はHLL仕様と機能的に同一でありうるが、ソフトウェア設計者は、システム開発の過程でRTL仕様をデバッグしなければならないことがある。タイミング、同時実行性、競合条件に関する問題は、HLL仕様の開発時には隠されていることがあり、ハードウェアシミュレーション中に浮上する可能性がある。また、ソフトウェアとハードウェアライブラリの実装の違い、誤った変換、又はメモリアクセスの違いにより、実装に問題が生じる可能性がある。
RTL実装のデバッギングは、XILINX、Inc.のVIVADO(登録商標)シミュレータ、又はやMentor Graphics CorporationのQUEST(登録商標)シミュレータなどのシミュレータを介して使って促進することができる。RTL実装のテストでは、ソフトウェア設計者が、低レベルの信号とレジスタをトレースし、波形を解釈する。
開示されるデバッギング方法は、コンピュータシステム上で実行されているハードウェアデバッグサーバによって、ブレークポイントをHLLソフトウェア仕様に設定するための高水準言語(HLL)デバッギングコマンドを受信することを含む。ハードウェアデバッグサーバは、HLLデバッギングコマンドを、ソフトウェア仕様の表示であるハードウェア有限状態機械の条件を指定するハードウェアデバッギングコマンドに変換する。ハードウェアデバッギングコマンドは、シミュレータに入力され、ハードウェアデバッギングコマンドに応じて、シミュレータが有限状態機械に条件付きブレークポイントを追加する。シミュレータは、有限状態機械表示のシミュレーションを実行し、有限状態機械における条件の検出に応じてシミュレーションの実行を中断する。
開示されたデバッギングシステムは、プロセッサと、プロセッサに結合されたメモリ装置とを含む。メモリ装置は、プロセッサによって実行されると、ハードウェアデバッグサーバによる、ブレークポイントをHLLソフトウェア仕様に設定するための高水準言語(HLL)デバッギングコマンドの受信を含む動作をプロセッサに実行させる命令で構成される。ハードウェアデバッグサーバは、HLLデバッギングコマンドを、ソフトウェア仕様の表示であるハードウェア有限状態機械の条件を指定するハードウェアデバッギングコマンドに変換する。ハードウェアデバッギングコマンドは、シミュレータに入力され、ハードウェアデバッギングコマンドに応じて、シミュレータが有限状態機械に条件付きブレークポイントを追加する。シミュレータは、有限状態機械表示のシミュレーションを実行し、有限状態機械における条件の検出に応じてシミュレーションの実行を中断する。
他の特徴は、以下の詳細な説明及び特許請求の範囲を考慮することから認識されるだろう。
他の特徴は、以下の詳細な説明及び特許請求の範囲の考察から認識されるであろう。
ソフトウェアデバッグ技法及び手法を使用してハードウェアアクセラレータのデバッギングをサポートするシステムの実施態様を示す。 HLLソースコード及びHLS生成RTLコードの等価部分の一例を示す。 ソフトウェアデバッガフロントエンドを使用してハードウェアアクセラレータをデバッギングする際にハードウェアデバッグサーバによって使用されるデータの生成を示すデータフロー図である。 ソフトウェアデバッガフロントエンドを用いてハードウェアアクセラレータをデバッギングする際にハードウェアデバッグサーバによって使用されるデータを生成するプロセス、及びハードウェアアクセラレータをデバッギングしている間のハードウェアデバッグサーバの動作のフローチャートである。 ハードウェアデバッグサーバ及びシミュレータカーネルを実装することができる例示的なデータ処理システムを示すブロック図である。
以下の説明では、本明細書に提示された特定の例を説明するために多数の特定の詳細が述べられる。しかしながら、当業者には、1つ又は複数の他の例及び/又はこれらの例の変形は、以下に与えられるすべての具体的な詳細がなくても実施されうることが当然明らかだろう。他の例では、本明細書の実施例の説明を不明瞭にしないために、周知の特徴は詳細に説明されていない。説明を容易にする目的で、同じ要素又は同じ要素の更なる例を指すために、異なる図において、同じ参照番号が使用されることがある。
ソフトウェア設計者が熟知している可能性のあるデバッギング環境は、RTLシミュレータが提供するデバッギング環境とは実質的に異なる。ソフトウェアデバッガは、プログラムコードを順次実行し、変数を検査し編集する特定の命令又は行にブレークポイントを設定するといった機能を提供し、その変数の値は、プログラム実行中にレジスタ又はメモリに格納されてもよい。ソフトウェアデバッガは、ソースコードレベルでデバッグ情報を表示し、これにより、ソフトウェア設計者は、ソフトウェアデバッガの望ましい動作と実行プログラムの状態をHLLプログラム名及びステートメントと容易に関連付けることができる。
RTLシミュレータのデバッギング環境は、信号レベルで動作する。RTLシミュレータは、信号状態に基づきブレークポイントを設定し、信号状態をトレースし、波形を表示し、レジスタを検査する性能を提供する。しかしながら、ソフトウェア設計者は、RTL構造、並びにンHLLプログラムの要素と信号名及び特にRTL構造内の特定のレジスタとの間の関連付けに馴染みがない可能性がある。したがって、ソフトウェア設計者が、ハードウェアアクセラレータをタイムリーにデバッギングすることを阻止される可能性がある。
開示された方法及びシステムは、ソフトウェア設計者に馴染みがあるソフトウェアデバッギング環境とハードウェア設計者に利用可能なRTLデバッギング環境との間のギャップを埋める。方法及びシステムは、HLLプログラムコードの特定の行にブレークポイントを設定し、変数のHLL名によって変数の値を検査し、メモリのコンテンツを検査するといった、ソフトウェアデバッガに見られるデバッグ機能をサポートする。システムは、HLL構成要素とRTL構成要素との間のマッピングを処理し、これにより、ソフトウェア設計者は、あたかもソフトウェアデバッガ環境で動作しているかのようにハードウェアアクセラレータをデバッグすることができる。
開示された実施態様では、コンピュータシステム上で実行されているハードウェアデバッグサーバは、ブレークポイントをHLLソフトウェア仕様に設定するためにソフトウェアデバッガフロントエンドからデバッギングコマンドを受信する。ハードウェアデバッグサーバは、デバッギングコマンドを、ソフトウェア仕様の表示であるハードウェア有限状態機械の条件を指定するハードウェアデバッギングコマンドに変換し、ハードウェアデバッギングコマンドをシミュレータに入力する。シミュレータは、ハードウェア有限状態機械に条件付きブレークポイントを追加し、有限状態機械表示のシミュレーションを実行する。シミュレータは、ハードウェア有限状態機械における条件の検出に応じてシミュレーションの実行を中断する。
図1は、ソフトウェアデバッッギング技法及び手法を使用してハードウェアアクセラレータのデバッッギングをサポートするシステム100の実施形態を示す。このシステムは、GDBなどのソフトウェアデバッガと、HLLソースコードから生成されたハードウェアアクセラレータのシミュレーションとの間の対話をサポートする。システムによって提供されるシミュレートされたハードウェアアクセラレータのビューは、HLLソースコードをデバッギングする際にソフトウェアデバッガによって提供される。システムは、デバッガフロントエンド102、ハードウェアデバッグサーバ106、及びシミュレータカーネル108を含む。シミュレータカーネルは、制御インターフェース112を含み、ハードウェアアクセラレータのハードウェアモデル110をシミュレートする。ハードウェアモデルは、例えば、レジスタ転送レベル(RTL)言語で指定されるようなハードウェア有限状態機械とすることができる。メモリ付きHLLモデル114は、ハードウェアモデル110によってアクセス可能なHLL設計のメモリ装置要素をシミュレートする。ハードウェアデバッグサーバ及びシミュレータカーネルは、コンピュータシステム104上で実行される。一実施態様では、デバッガフロントエンドもまた、コンピュータシステム104上で実行することができる。代替的には、デバッガフロントエンドは、LAN又はインターネットといった、ネットワークへのネットワークインターフェースを介してコンピュータシステム104に結合されている別のコンピュータシステム(図示せず)上で実行することができる。デバッガフロントエンド102及びハードウェアデバッグサーバ106は、TCP/IPなどのプロトコルを使用して通信可能に結合することができる。
デバッギングソフトウェアをサポートするがハードウェアアクセラレータをサポートしない従来のソフトウェアデバッガの中には、あるコンピュータシステム上で実行されるデバッガフロントエンドが別のコンピュータシステム上で実行されるソフトウェアのデバッギングを制御できるようにするソフトウェアデバッグサーバを含むものがある。一実装形態では、デバッガフロントエンド102は、GNBデバッガ、GDBといった、一般に入手可能なソフトウェアデバッガの一部とすることができる。デバッガフロントエンドは、元のHLLソースコードに関して実行中のプログラムの状態を提示する際に、標準フォーマットのデバッギング情報、例えばDWARF情報を使用する。HLLソースコード内の変数名は、ハードウェアレジスタから読み取られた対応する値と共に表示される。例示的な実施態様では、デバッガフロントエンド102は、ソフトウェアデバッグサーバとの通信に使用されるのと同じプロトコルを使用して、ハードウェアデバッグサーバ106と通信する。GDBからのデバッガフロントエンドを含む実施態様では、デバッガフロントエンドは、GDBからのデバッガフロントエンドがソフトウェアデバッグサーバとの通信に使用するのと同じプロトコルであるRemote Serial Protocol(RSP)を使用して、ハードウェアデバッグサーバと通信する。
ハードウェアデバッグサーバ106は、デバッガフロントエンド102とシミュレータカーネル108との間でコマンド及びデータを変換する。ハードウェアデバッグサーバは、例えばTCP/IPを使用して、制御インターフェース112を介してシミュレータカーネルに接続する。制御インターフェース112は、コマンドを処理し、シミュレートされたハードウェアモデル110の値を返すことによって、シミュレータカーネルに代わってハードウェアデバッグサーバとの通信を処理する。ハードウェアデバッグサーバは、ハードウェアモデル110デバッギングの際に、デバッガフロントエンドがデバッギングソフトウェアで実行するのと同じように、デバッガフロントエンドが実行できるようにする。ハードウェアデバッグサーバは、ハードウェアシミュレーションのセマンティクスと詳細を抽象化し、ソフトウェア指向のビューをユーザに提示する。シミュレータカーネル108は、本明細書に記載された適応を有する既知の回路設計シミュレータの一部とすることができる。
デバッギング状況では、ハードウェアデバッグサーバ106は、デバッガフロントエンドから、ブレークポイントをHLLソフトウェア仕様に設定するための高水準言語(HLL)デバッギングコマンドを受信する。ハードウェアアクセラレータをデバッギングする人員は、デバッガフロントエンドと対話して、ハードウェアモデル110が生成されたHLLソフトウェア仕様の中の特定の命令又は行番号を選択する。当業者は、HLLソースコードからシミュレーションに適した回路設計記述及び対応するハードウェアモデルを生成するために既知のHLSツールを使用することができることを認識するだろう。
HLLデバッギングコマンドの受信に応じて、ハードウェアデバッグサーバは、HLLデバッギングコマンドを、ソフトウェア仕様からHLSツールによって生成された、ハードウェア有限状態機械の条件を指定するハードウェアデバッギングコマンドに変換する。ハードウェアデバッグサーバはその後、シミュレータ108への入力のためにハードウェアデバッギングコマンドを制御インターフェース112に伝達する。シミュレータは、ハードウェアデバッギングコマンドに応じて、ハードウェア有限状態機械に条件付きブレークポイントを追加する。ハードウェア有限状態機械のシミュレーションを実行する際に、シミュレータは、有限状態機械における状態の検出に応じて、シミュレーションの実行を中断する。
ハードウェア有限状態機械の条件を検出してシミュレーションの実行が中断されると、シミュレータは中断をハードウェアデバッグサーバに伝達し、ハードウェアデバッグサーバは、RTL有限状態機械の条件に対応するHLLソフトウェア仕様の行番号、命令、又はステートメントを決定する。次に、ハードウェアデバッグサーバは、HLL行番号、HLLソフトウェア仕様の命令又はステートメント、及びブレークポイントの指示をデバッガフロントエンドに出力する。
場合によっては、シミュレートされたハードウェアアクセラレータは、グローバルメモリがハードウェアアクセラレータ及びシステムの他のハードウェア及び/又はソフトウェア構成要素によってアクセスされるシステム設計の一部とすることができる。大容量メモリは、直接プログラミングインターフェース(DPI)を介して、HLS生成構成要素(ハードウェアアクセラレータを含む)によってアクセスされるHLLコード(HLLメモリモデル114)を使用することによって、シミュレートされることが多い。デバッガフロントエンド102を操作している人員は、HLLメモリモデルに格納されたHLL変数の値を検査したいと思うかもしれない。しかしながら、たとえシミュレーションが実行されている間にHLS生成構成要素がHLLメモリにアクセスすることができるとしても、シミュレータカーネル108は、HLLメモリモデルに直接アクセスすることはできないだろう。シミュレータカーネル108によるHLLメモリモデル114への直接アクセスを提供するために、シミュレータカーネルは、メモリにアクセスする(すなわち、読み書きする)ためのコールバック機能を登録するよう適合される。ハードウェアデバッグサーバが、HLLソフトウェア仕様の変数の値を要求するHLLデバッギングコマンドを受信し、その変数がHLLメモリモデルに格納されると、シミュレータは、コールバック機能を実行して、シミュレータによってメモリから信号の値を読み出す。ハードウェアデバッグサーバは、変数の値とHLL変数名をデバッガフロントエンドに出力する。
図2は、HLLプログラム変数「カウンタ」を扱うHLLソースコード202及びHLS生成RTLコード204の等価セクションの一例を示す。HLLソースコードは、機能ステートメント、変数ステートメント、代入ステートメント、制御ステートメント、スコープ区切り文字、及び空行を含む12の番号付き行を有する。
HLL変数「カウンタ」は、RTL内の5ビットレジスタにマッピングされ、各レジスタは、生成されたFSM機械の様々な段階でアクティブになる。レジスタは以下を含む。
reg[4:0]vadd_counter_reg_95;
reg[4:0]ap_pipeline_reg_iter1_vadd_counter_reg_95;
reg[4:0]ap_pipeline_reg_iter2_vadd_counter_reg_95;
reg[4:0]ap_pipeline_reg_iter3_vadd_counter_reg_95;
reg[4:0]ap_pipeline_reg_iter4_vadd_counter_reg_95;
reg[4:0]ap_pipeline_reg_iter5_vadd_counter_reg_95;
reg[4:0]ap_pipeline_reg_iter6_vadd_counter_reg_95;
reg[4:0]ap_pipeline_reg_iter7_vadd_counter_reg_95;
reg[4:0]ap_pipeline_reg_iter8_vadd_counter_reg_95;
HLLステートメント、counter±=1は、常にブロック(always block)とRTLステートメントの「if」部分にマッピングし、
vadd_counter_reg_95<=p_reg2mem_0_i_i_fu_152
は、条件(ap_CS_fsm_pp0_stage0==1’b1)&(ap_enable_reg_pp0_iter0==1’b1)&(exitcond_fu_146_p2==1’b0)がメインクロックの立ち上がりエッジで成立するとき、シミュレーションで実行される。
HLLステートメント、counter=1は、常にブロックの「else if」部分と、RTLステートメントにマッピングし、
vadd_counter_reg_95<=ap_const_lv5_0;
は、条件(ap_CS_fsm_state1==1’b1)&(ap_start==1’b0)がメインクロックの立ち上がりエッジで成立するとき、シミュレーションで実行される。
デバッガフロントエンド102からHLL行6及び10を指定するブレークポイントコマンドを受信することに応じて、ハードウェアデバッグサーバは、HLLブレークポイントコマンドをRTL条件を指定する対応するRTLシミュレータブレークポイントコマンドに変換し、コマンドを制御インターフェース112に送信する。シミュレータカーネルの制御インターフェースは、RTLステートメントがシミュレーションで実行される前にシミュレーションを停止するためのブレークポイントを追加する。HLLコード行6にブレークポイントを設定するためのデバッガフロントエンドからのコマンドに応じて、ハードウェアデバッグサーバが、メインクロックの立ち上がりエッジで条件(ap_CS_fsm_state1==1’b1)&(ap_start==1’b0)が成立するときに、シミュレーションを停止させるブレークポイントを設定するシミュレータカーネルコマンドを生成するが、これはRTLステートメントvadd_counter_reg_95<=ap_const_lv5_0;の前に、シミュレーションで実行される。HLLコード行10にブレークポイントを設定するためのデバッガフロントエンドからのコマンドに応じて、ハードウェアデバッグサーバが、メインクロックの立ち上がりエッジで条件(ap_CS_fsm_pp0_stage0==1’b1)&(ap_enable_reg_pp0_iter0==1’b1)&(exitcond_fu_146_p2==1’b0)が成立するときに、シミュレーションを停止させるブレークポイントを設定するシミュレータカーネルコマンドを生成するが、これはRTLステートメント、vadd_counter_reg_95<=p_reg2mem_0_i_i_fu_152;の前に、シミュレーションで実行される。
図3は、ソフトウェアデバッガフロントエンドを使用してハードウェアアクセラレータをデバッギングする際にハードウェアデバッグサーバによって使用されるデータの生成を示すデータフロー図である。HLSツール304は、ハードウェアアクセラレータによって実施されるべき機能を指定するHLLプログラム302を入力する。HLSツールは、ハードウェアデバッグサーバ106によって使用されるデバッギング情報の複数のバージョンを生成する。HLSツールフローの始めに、フロントエンド解析の後であるが最適化の前に、HLS中間表示は、特定のCPUをターゲットにする実行可能プログラム(ハードウェアモデル110)を生成するために処理される。実行可能プログラムは、元のHLLプログラム302に関連するデバッガフロントエンド(図1、#102)シンボルに提供するために使用される関連する高水準のデバッギング情報306を有する。高水準デバッギング情報は、相互参照データベース310を構築する際にハードウェアデバッグサーバ106によっても使用される。一実施態様では、高水準デバッギング情報は、DWARFデバッギング情報である。
HLSツール304の最適化及びスケジューリングパスにおいて、HLSツールは、マッピング情報308を生成する。マッピング情報308は、HLLプログラム302の要素とハードウェアモデル110内の要素との間の関連付けを指定する。ハードウェアモデルは、アクティブ状態がシミュレーション中に同時に処理されるHLLプログラムのこれらのステートメントを指定する有限状態機械を指定する。マッピング情報を用いて、HLLプログラムの行番号、ステートメント、又は命令のブレークポイントは、ハードウェア状態機械の条件に対応するシミュレータ条件で実現することができる。
ハードウェアデバッグサーバ106は、高水準デバッギング情報306とマッピング情報308を入力し、高水準デバッギング情報306とマッピング情報308を相互参照する相互参照データベース310を生成する。データベース310は、ハードウェアモデルを用いたシミュレーション中にハードウェアデバッグサーバ106によって照会され、デバッガフロントエンド(図1、#102)からのコマンドで指定されたHLLプログラム要素に対応するハードウェアモデルの要素を検索し、かつシミュレータカーネル(図1、#108)から返されたデータ内で参照されるハードウェアモデルの要素に対応するHLLプログラム要素を検索する。
対応するハードウェア状態機械要素へのブレークポイントを適用することができるHLLプログラム302内の行のマッピングの構成は、HLS生成ハードウェアモデル110の構造に依存する。一実施態様では、ハードウェアモデルは、HLLステートメントがRTL信号の条件に対応する有限状態機械を含む。相互参照データベース310を照会することによって、ハードウェアデバッグサーバ106は、ソフトウェアデバッガフロントエンドからのブレークポイントコマンドをハードウェア有限状態機械上の等価の条件に変換することができる。ハードウェア有限状態機械上の条件は、ハードウェアモデル上に条件付きブレークポイントを追加するためにシミュレータカーネルに入力することができる。ハードウェアデバッグサーバは、相互参照データベースに照会することによって、コマンドが変数の値を要求するソフトウェアデバッガフロントエンドからのコマンドを、ハードウェア信号の値及びシミュレータカーネルからの変数の要求に変換することができる。
高水準言語レベルの変数は、言語によって定義された具体的な基本型から構築された複雑型システムを有する。高水準言語プログラムがHLSツールを使用して合成されると、生成されたハードウェアは、通常これらの型を最適化し、ビットベクトルに平坦化することになる。例えば、HLSツールは、高水準言語で「int」と宣言された変数が、17下位ビットのみを使用し、高水準言語により予想される32のビットレジスタとは対照的に、17ビットレジスタとビットベクトルを含むハードウェアを合成すると決定する。
HLSツールは、HLL構成体からRTL構成体に完全なマッピングを提供するために、型の変換をキャプチャする。表1は、HLL構成体からRTL構成体への型の変換、及びその逆の変換に使用されるマッピング情報の型のテキスト表示を示す。各RTL型を元の型に直接マッピングすることは、符号拡張やゼロ拡張などの変換規則を意味する。更に、HLSツールは、高水準言語構造体が多くの異なるRTLレジスタ又は信号に格納されるハードウェアを作成する決定を行うことがあり、マッピングは、これらの多くのRTL信号が元の高水準表示にどのように再び組み立てられるかを指定する。このマッピングの実施と格納は、バイナリエンコーディングを通して実行することができる。
Figure 0007036814000001
HLS生成RTLでは、HLL変数は、単一のレジスタとしてではなく、異なるクロックサイクルでアクティブでありうるか、又はHLSツールによって行われたパイプライン決定に基づいてすべて同時にアクティブでありうる複数のレジスタ及び信号として実施されうる。マッピング情報308は、有限状態機械のためのステートレジスタ及び任意のパイプラインステージ起動レジスタを構成するレジスタ及び信号のセットを指定する。表2は、HLL変数「カウンタ」に対する位置情報のマッピング位置の例を示す。
Figure 0007036814000002
すべてのHLL変数に対して、HLSツールは、これらのステートレジスタの様々な構成から、その変数がそのクロックサイクルに配置されるアクティブ信号を表す他のRTL信号のリストへのマッピングを作成する。表2に示すテキストの例は、HLSツールによって出力されたメタデータのバイナリエンコーディングを表し、特定のビットのすべての置換を単一のマッピングに対して有効であるものとして表すためのワイルドカードを含む。
元のHLLプログラムのソースコードの各行は、特定のFSM状態がアクティブなときにRTLコードで実行を開始する。FSM内の状態は、状態レジスタが特定の構成にあるとき及びメモリのフェッチが完了したときといった、特定のRTL条件が満たされたときにアクティブになる。
表3にテキストで示されるように、相互参照データベースは、任意の生成されたパイプライン情報を含め、FSM状態がいつ実行を開始するかを表す構成に対応する生成されたRTLモデル内の条件への元のHLLプログラム内の行のマッピングを維持する。利用可能なリソースを最大限に活用してスループットを最大にするために、生成されたRTLモデルが複数のステートメントを同時に又は順序を外れて開始する可能性があるため、マッピングは1対1ではない場合があることに留意されたい。
Figure 0007036814000003
図4は、ソフトウェアデバッガフロントエンドを用いてハードウェアアクセラレータをデバッギングする際にハードウェアデバッグサーバによって使用されるデータを生成するプロセス、及びハードウェアアクセラレータをデバッギングしている間のハードウェアデバッグサーバの動作のフローチャートである。ブロック402で、高水準合成(HLS)ツールは、HLLプログラムから高水準デバッギング情報を生成する。高水準デバッギング情報は、当技術分野で知られているようにDWARFデバッギング情報とすることができる。ブロック404において、HLSツールは、HLLプログラムのハードウェアモデルを生成する。ハードウェアモデルは、例えばRTL有限状態機械とすることができる。ブロック406において、HLSツールは、HLLプログラム要素のハードウェアモデルの要素へのマッピングを生成する。
ブロック408において、ハードウェアデバッグサーバがハードウェアモデルのシミュレーションに使用される前に、ハードウェアデバッグサーバは、ハードウェアモデルが生成されたHLLプログラムの高水準デバッギング情報を入力し、HLLプログラム要素のハードウェアモデルの要素へのマッピングを入力する。ハードウェアデバッグサーバは、高水準デバッギング情報と、HLLプログラム要素のハードウェアモデルの要素へのマッピングから相互参照データベースを生成する。
ブロック410で、1つ又は複数のコールバック機能がシミュレータカーネルに登録される。コールバック機能は、ハードウェアデバッグサーバを介して行われたデバッガフロントエンドからの要求に応じて、HLLメモリモデル(図1、#114)への読み書きのためにシミュレータカーネルによって実行することができる。
ブロック412において、シミュレータは、1つのコンピュータシステム上で実行されているハードウェアデバッグサーバ及びシミュレータカーネルと、同じ又は別のコンピュータシステム上で実行されているデバッガフロントエンドとで実行を開始する。ブロック414で、デバッガフロントエンドは、ユーザからソフトウェアデバッギングコマンドを入力し、デバッガフロントエンドは、コマンドをハードウェアデバッグサーバに送信する。ブロック416で、ハードウェアデバッグサーバは、ソフトウェアデバッギングコマンドを、シミュレータカーネルと互換性のあるハードウェアデバッギングコマンドに変換する。デバッガフロントエンドからのコマンドがHLLプログラムの要素を参照する場合、ハードウェアデバッグサーバは、その参照をハードウェアモデルの要素に変換する。
ブロック418で、変換されたコマンドが、シミュレータカーネルに入力される。決定ブロック420は、特定のコマンドに従って処理を切り替える。ブレークポイントを設定することを指定するコマンドの場合、ブロック422で、シミュレータカーネルが、ハードウェアモデルに条件付きブレークポイントを追加する。条件付きブレークポイントは、ハードウェアモデル内の信号の状態を指定することができる。ブロック422の後、プロセスはブロック414に戻り、別のコマンドを処理する。
信号又は変数の値の読み取りを指定するコマンドの場合、ブロック424で、シミュレータカーネルは、信号又は変数の値を読み取り、その値をハードウェアデバッグサーバに返す。
HLLメモリモデルから値を読み取るコマンドのために、ブロック426において、シミュレータカーネルは、値を読み取るためにコールバック機能を呼び出す。HLLメモリモデルから読み取られた値は、ハードウェアデバッグサーバに返される。
ブロック428で、シミュレータにハードウェアモデルの又はHLLメモリモデルからの信号の値を読み取らせるコマンドに対して、ハードウェアデバッグサーバは、相互参照データベースに照会を行い、シミュレータカーネルによって返された名前に対応するHLLプログラム内の名前を決定する。
シミュレーションを開始するコマンドのために、ブロック430において、シミュレータカーネルが、ハードウェアモデルのシミュレーションを開始する。ブロック432で、ハードウェア有限状態機械上の条件付きブレークポイントの満足度に応じて、シミュレータは、シミュレーションを中断し、制御インターフェース(図1、#112)を介してハードウェアデバッグサーバに中断及び条件付きブレークポイントを伝達する。ブロック434で、ハードウェアデバッグサーバは、相互参照データベース(図3、#310)に照会を行い、ハードウェア有限状態機械の要素上の条件付きブレークポイントに対応するHLLステートメントを決定する。
ブロック436において、ハードウェアデバッグサーバは、シミュレータカーネルから返されたデータを、デバッガフロントエンドと互換性のあるフォーマットにフォーマットを行い、フォーマットされたデータをデバッガフロントエンドに出力する。次に、処理はブロック414に戻り、デバッガフロントエンドからの別のコマンドを処理する。
図5は、ハードウェアデバッグサーバ106(図1)及びシミュレータカーネル(108)を実装することができる例示的なデータ処理システム(システム)500を示すブロック図である。高水準合成ツール(図3、#304)もまた、システム500上に実装することができる。システム500は、システムバス515又は他の適切な回路を介してメモリ及び記憶装置520に結合された中央処理装置(CPU)505といった、少なくとも1つのプロセッサ回路(又は「プロセッサ」)を含む。システム500は、シミュレータ550及びハードウェアモデル110を実装するプログラムコードをメモリ及び記憶装置520内に格納する。プロセッサ505は、システムバス515を介して、メモリ及び記憶装置520からアクセスされたプログラムコードを実行する。一態様では、システム500は、プログラムコードを記憶及び/又は実行するのに適したコンピュータ又は他のデータ処理システムとして実施される。しかしながら、システム500は、本開示内に記載される機能を実行することができるプロセッサ及びメモリを含む任意のシステムの形態で実施することができると理解すべきである。
メモリ及び記憶装置520は、例えばローカルメモリ(図示せず)及び永続的記憶装置(図示せず)といった、1つ又は複数の物理的メモリ装置を含む。ローカルメモリとは、プログラムコードの実際の実行中に一般に使用されるランダムアクセスメモリ又は他の非永続的メモリ装置を指す。固定記憶装置は、ハードディスクドライブ(HDD)、ソリッドステートドライブ(SSD)、又は他の固定データ記憶装置として実装することができる。システム500はまた、実行中にプログラムコード及びデータをローカルメモリ及び永続的記憶装置から検索しなければならない回数を減らすために、少なくともいくつかのプログラムコード及びデータを一時的に記憶する1つ又は複数のキャッシュメモリ(図示せず)を含んでもよい。
ユーザ入力装置530及び表示装置535などの入力/出力(I/O)装置が、オプションでシステム500に結合されてもよい。I/O装置は、直接又は介在するI/Oコントローラを介して、システム500に結合されうる。ネットワークアダプタ545はまた、介在するプライベート又はパブリックネットワークを介して、システム500を他のシステム、コンピュータシステム、リモートプリンタ、及び/又はリモート記憶装置に結合するために、システム500に結合することもできる。モデム、ケーブルモデム、イーサネット(登録商標)カード、及び無線送受信機は、システム500と共に使用することができる様々な種類のネットワークアダプタ545の例である。
メモリ及び記憶装置520は、電子設計自動化(EDA)アプリケーションの一部であるシミュレータ550を記憶しうる。実行可能プログラムコードの形態で実装されるシミュレータ550は、1つ又は複数のプロセッサ505によって実行される。そのため、シミュレータ550は、システム500の一部と見なされる。システム500は、シミュレータ550を実行しつつ、ハードウェアモデル110を受信して動作する。
シミュレータ550、ハードウェアモデル110、及びシミュレータ550によって使用、生成、及び/又は操作される任意のデータ項目は、システム500の一部として使用されるとき、又は派生物及び/又はその修正を含むそのような要素がプログラマブルICなどのICにロードされると、プログラマブルIC内の回路設計が実装及び/又は構成されるときに、機能性を付与する機能的データ構造である。
デバッギングの方法が提供されうる。そのような方法は、コンピュータシステム上で実行するハードウェアデバッグサーバによって、ブレークポイントをHLLソフトウェア仕様に設定するための第1の高水準言語(HLL)デバッギングコマンドを受信することと;ハードウェアデバッグサーバによって、第1のHLLデバッギングコマンドを、ソフトウェア仕様の表示であるハードウェア有限状態機械の条件を指定する第1のハードウェアデバッギングコマンドに変換することと;第1のハードウェアデバッギングコマンドを、コンピュータシステム上で実行するシミュレータ(108)に入力することと;第1のハードウェアデバッギングコマンドに応じて、シミュレータによって有限状態機械に条件付きブレークポイントを追加することと;有限状態機械の表示のシミュレーションを実行することと;有限状態機械における条件の検出に応じてシミュレーションの実行を中断することとを含みうる。
そのような方法は、シミュレーションの実行の中断に応じて、ハードウェア有限状態機械内の条件に対応するHLLソフトウェア仕様のステートメントを決定することと;HLLソフトウェア仕様のステートメントを示すデータを出力することとを更に含みうる。
そのような方法は、ハードウェアデバッグサーバによって、HLLソフトウェア仕様に関連するデバッギング情報を入力することと;ハードウェアデバッグサーバによって、HLLソフトウェア仕様の要素のハードウェア有限状態機械の要素へのマッピングを提供するデバッギング情報を入力することと;HLLソフトウェア仕様に関連するデバッギング情報を、データベースのHLLソフトウェア仕様の要素のハードウェア有限状態機械の要素へのマッピングと相互参照することとを更に含み;変換することが、データベースから、第1のHLLデバッギングコマンドで指定されたHLLステートメントと相互参照されるハードウェア有限状態機械の要素を決定することを含みうる。
いくつかのそのような方法では、HLLソフトウェア仕様のステートメントを決定することが、データベースから、発生した条件付きブレークポイントによって示されるハードウェア有限状態機械の要素と相互参照されるHLLソフトウェア仕様のステートメントを決定することを含みうる。
そのような方法は、ハードウェアデバッグサーバによって、HLLソフトウェア仕様の変数の値を要求する第2のHLLデバッギングコマンドを受信することと;ハードウェアデバッグサーバによって、第2のHLLデバッギングコマンドを、ハードウェア有限状態機械の信号の値を取得する第2のハードウェアデバッギングコマンドに変換することと;第2のハードウェアデバッギングコマンドをシミュレータに入力することと;シミュレータによって信号の値を読み取ることと;変数の名前に関連して信号の値を出力することとを更に含みうる。
そのような方法は、ハードウェアデバッグサーバによって、HLLソフトウェア仕様に関連するデバッギング情報を入力することと;ハードウェアデバッグサーバによって、HLLソフトウェア仕様の要素のハードウェア有限状態機械の要素へのマッピングを提供するデバッギング情報を入力することと;HLLソフトウェア仕様に関連するデバッギング情報を、データベースのHLLソフトウェア仕様の要素のハードウェア有限状態機械の要素へのマッピングと相互参照することとを更に含み;第2のHLLデバッギングコマンドを変換することが、データベースから、第2のHLLデバッギングコマンドで指定された変数の名前と相互参照されるハードウェア有限状態機械の信号を決定することを更に含みうる。
いくつかのそのような方法では、ハードウェア状態機械は、ハードウェア状態機械が指定されうるハードウェア記述言語以外の言語でモデル化されうるメモリ内の値を参照し;メモリにアクセスするコールバック機能をシミュレータに登録し;ハードウェアデバッグサーバによって、HLLソフトウェア仕様の変数の値を要求する第2のHLLデバッギングコマンドを受信し;ハードウェアデバッグサーバによって、第2のHLLデバッギングコマンドを、ハードウェア有限状態機械の信号の値を取得する第2のハードウェアデバッギングコマンドに変換し;第2のハードウェアデバッギングコマンドをシミュレータに入力し;コールバック機能を実行して、シミュレータによってメモリから信号の値を読み出し;変数の名前に関連して信号の値を出力する。
いくつかの方法では、受信することは、別のコンピュータシステム上で実行されているデバッガフロントエンドへのネットワークインターフェースを介して第1のHLLデバッギングコマンドを受信することを含む。
そのような方法は、シミュレーションの実行の中断に応じて、ハードウェア有限状態機械内の条件に対応するHLLソフトウェア仕様のステートメントを決定することと;HLLソフトウェア仕様のステートメントを示すデータを出力することと;ハードウェアデバッグサーバによって、HLLソフトウェア仕様の変数の値を要求する第2のHLLデバッギングコマンドを受信することと;ハードウェアデバッグサーバによって、第2のHLLデバッギングコマンドを、ハードウェア有限状態機械の信号の値を取得する第2のハードウェアデバッギングコマンドに変換することと;第2のハードウェアデバッギングコマンドをシミュレータに入力することと;シミュレータによって信号の値を読み取ることと;変数の名前に関連して信号の値を出力することと更に含みうる。
そのような方法は、ハードウェアデバッグサーバによって、HLLソフトウェア仕様に関連するデバッギング情報を入力することと;ハードウェアデバッグサーバによって、HLLソフトウェア仕様の要素のハードウェア有限状態機械の要素へのマッピングを提供するデバッギング情報を入力することと;HLLソフトウェア仕様に関連するデバッギング情報を、データベースのHLLソフトウェア仕様の要素のハードウェア有限状態機械の要素へのマッピングと相互参照することとを更に含み、HLLソフトウェア仕様のステートメントを決定することが、データベースから、発生した条件付きブレークポイントによって示されるハードウェア有限状態機械の要素と相互参照されるHLLソフトウェア仕様のステートメントを決定することを含み;第2のHLLデバッギングコマンドを変換することが、データベースから、第2のHLLデバッギングコマンドで指定された変数の名前と相互参照されるハードウェア有限状態機械の信号を決定することを更に含みうる。
デバッギングシステムが提供されうる。そのようなデバッギングシステムは、プロセッサと;プロセッサに結合されたメモリ装置とを含み、メモリは、プロセッサによって実行されると、プロセッサに、ハードウェアデバッグサーバによって、ブレークポイントをHLLソフトウェア仕様に設定するための第1の高水準言語(HLL)デバッギングコマンドを受信することと;ハードウェアデバッグサーバによって、第1のHLLデバッギングコマンドを、ソフトウェア仕様の表示でありうるハードウェア有限状態機械の条件を指定する第1のハードウェアデバッギングコマンドに変換することと;第1のハードウェアデバッギングコマンドをシミュレータに入力することと;第1のハードウェアデバッギングコマンドに応じて、シミュレータによって有限状態機械に条件付きブレークポイントを追加することと;有限状態機械の表示のシミュレーションを実行することと;有限状態機械における条件の検出に応じてシミュレーションの実行を中断することとを含む動作を実行させる命令で構成されうる。
いくつかのそのようなシステムでは、メモリ装置は、プロセッサによって実行されると、プロセッサに、シミュレーションの実行の中断に応じて、ハードウェア有限状態機械内の条件に対応するHLLソフトウェア仕様のステートメントを決定することと;HLLソフトウェア仕様のステートメントを示すデータを出力することとを含む動作を実行させる命令で更に構成されうる。
いくつかのそのようなシステムでは、メモリ装置は、プロセッサによって実行されるとき、プロセッサに、ハードウェアデバッグサーバによって、HLLソフトウェア仕様に関連するデバッギング情報を入力することと;ハードウェアデバッグサーバによって、HLLソフトウェア仕様の要素のハードウェア有限状態機械の要素へのマッピングを提供するデバッギング情報を入力することと;HLLソフトウェア仕様に関連するデバッギング情報を、データベースのHLLソフトウェア仕様の要素のハードウェア有限状態機械の要素へのマッピングと相互参照することとを含み;変換することが、データベースから、第1のHLLデバッギングコマンドで指定されたHLLステートメントと相互参照されるハードウェア有限状態機械の要素を決定することを含みうる動作を実行させる命令で更に構成されうる。
いくつかのそのようなシステムでは、HLLソフトウェア仕様のステートメントを決定するための命令が、データベースから、発生した条件付きブレークポイントによって示されるハードウェア有限状態機械の要素と相互参照されるHLLソフトウェア仕様のステートメントを決定するための命令を含む。
いくつかのそのようなシステムでは、メモリ装置は、プロセッサによって実行されるとき、プロセッサに、ハードウェアデバッグサーバによって、HLLソフトウェア仕様の変数の値を要求する第2のHLLデバッギングコマンドを受信することと;ハードウェアデバッグサーバによって、第2のHLLデバッギングコマンドを、ハードウェア有限状態機械の信号の値を取得する第2のハードウェアデバッギングコマンドに変換することと;第2のハードウェアデバッギングコマンドをシミュレータに入力することと;シミュレータによって信号の値を読み取ることと;変数の名前に関連して信号の値を出力することとを含む動作を実行させる命令で更に構成されうる。
いくつかのそのようなシステムでは、メモリ装置は、プロセッサによって実行されるとき、プロセッサに、ハードウェアデバッグサーバによって、HLLソフトウェア仕様に関連するデバッギング情報を入力することと;ハードウェアデバッグサーバによって、HLLソフトウェア仕様の要素のハードウェア有限状態機械の要素へのマッピングを提供するデバッギング情報を入力することと;HLLソフトウェア仕様に関連するデバッギング情報を、データベースのHLLソフトウェア仕様の要素のハードウェア有限状態機械の要素へのマッピングと相互参照することとを更に含み;第2のHLLデバッギングコマンドを変換することが、データベースから、第2のHLLデバッギングコマンドで指定された変数の名前と相互参照されるハードウェア有限状態機械の信号を決定することとを含む動作を実行させる命令で更に構成されうる。
いくつかのそのようなシステムでは、ハードウェア状態機械は、ハードウェア状態機械が指定されうるハードウェア記述言語以外の言語でモデル化されうるメモリ内の値を参照し、メモリ装置は、プロセッサによって実行されるとき、プロセッサに、メモリにアクセスするコールバック機能をシミュレータに登録することと;ハードウェアデバッグサーバによって、HLLソフトウェア仕様の変数の値を要求する第2のHLLデバッギングコマンドを受信することと;ハードウェアデバッグサーバによって、第2のHLLデバッギングコマンドを、ハードウェア有限状態機械の信号の値を取得する第2のハードウェアデバッギングコマンドに変換することと;第2のハードウェアデバッギングコマンドをシミュレータに入力することと;コールバック機能を実行して、シミュレータによってメモリから信号の値を読み出すことと;変数の名前に関連して信号の値を出力することとを含む動作を実行させる命令で更に構成されうる。
いくつかのそのようなシステムでは、受信するための命令は、別のコンピュータシステム上で実行されているデバッガフロントエンドへのネットワークインターフェースを介して第1のHLLデバッギングコマンドを受信するための命令を含む。
いくつかのそのようなシステムでは、メモリ装置は、プロセッサによって実行されるとき、プロセッサに、シミュレーションの実行の中断に応じて、ハードウェア有限状態機械内の条件に対応するHLLソフトウェア仕様のステートメントを決定することと;HLLソフトウェア仕様のステートメントを示すデータを出力することと;ハードウェアデバッグサーバによって、HLLソフトウェア仕様の変数の値を要求する第2のHLLデバッギングコマンドを受信することと;ハードウェアデバッグサーバによって、第2のHLLデバッギングコマンドを、ハードウェア有限状態機械の信号の値を取得する第2のハードウェアデバッギングコマンドに変換することと;第2のハードウェアデバッギングコマンドをシミュレータに入力することと;シミュレータによって信号の値を読み取ることと;変数の名前に関連して信号の値を出力することとを含む動作を実行させる命令で更に構成されうる。
いくつかのそのようなシステムでは、メモリ装置は、プロセッサによって実行されるとき、プロセッサに、ハードウェアデバッグサーバによって、HLLソフトウェア仕様に関連するデバッギング情報を入力することと;ハードウェアデバッグサーバによって、HLLソフトウェア仕様の要素のハードウェア有限状態機械の要素へのマッピングを提供するデバッギング情報を入力することと;HLLソフトウェア仕様に関連するデバッギング情報を、データベースのHLLソフトウェア仕様の要素のハードウェア有限状態機械の要素へのマッピングと相互参照することとを含み;HLLソフトウェア仕様のステートメントを決定するための命令が、データベースから、発生した条件付きブレークポイントによって示されるハードウェア有限状態機械の要素と相互参照されるHLLソフトウェア仕様のステートメントを決定するための命令を含み、第2のHLLデバッギングコマンドを変換するための命令が、データベースから、第2のHLLデバッギングコマンドで指定された変数の名前と相互参照されるハードウェア有限状態機械の信号を決定するための命令を含む動作を実行させる命令で更に構成されうる。
特定の実施態様は、これらの動作/活動を実行するためにコンピュータ(又は他の電子装置)によって実行されうる命令を記憶した機械又はコンピュータ可読媒体を含む、コンピュータプログラム製品(例えば、不揮発性メモリ装置)を対象にする。
態様及び特徴は、場合によっては個々の図に記載されることがあるが、組合せが明示的に示されていないか又は組合せとして明示的に説明されていなくても、1つの図からの特徴は別の図の特徴と組み合わせることができると理解されよう。
方法及びシステムは、回路設計をデバッギングするための様々なシステムに適用可能であると考えられる。他の態様及び特徴は、本明細書を考慮することから当業者には明らかだろう。方法及びシステムは、ソフトウェアを実行するように構成された1つ又は複数のプロセッサとして、特定用途向け集積回路(ASIC)として、又はプログラマブルロジック装置上のロジックとして実装されうる。明細書及び図面は例としてのみ考慮されることを意図しており、本発明の真の範囲は下記の特許請求の範囲によって示される。

Claims (11)

  1. デバッギングの方法であって、
    コンピュータシステム上で実行するハードウェアデバッグサーバによって、ブレークポイントをHLLソフトウェア仕様に設定するための第1の高水準言語(HLL)デバッギングコマンドを受信することと、
    前記ハードウェアデバッグサーバによって、前記第1のHLLデバッギングコマンドを、前記ソフトウェア仕様の表示であるハードウェア有限状態機械の条件を指定する第1のハードウェアデバッギングコマンドに変換することと、
    前記第1のハードウェアデバッギングコマンドを、前記コンピュータシステム上で実行するシミュレータに入力することと、
    前記第1のハードウェアデバッギングコマンドに応じて、前記シミュレータによって前記有限状態機械に条件付きブレークポイントを追加することと、
    前記有限状態機械の表示のシミュレーションを実行することと、
    前記有限状態機械における前記条件の検出に応じて、前記シミュレーションの実行を中断することと、
    前記シミュレーションの実行の中断に応じて、前記ハードウェア有限状態機械内の前記条件に対応する前記HLLソフトウェア仕様のステートメントを決定することと、
    前記HLLソフトウェア仕様の前記ステートメントを示すデータを出力することと、
    前記ハードウェアデバッグサーバによって、前記HLLソフトウェア仕様に関連するデバッギング情報を入力することと、
    前記ハードウェアデバッグサーバによって、前記HLLソフトウェア仕様の要素の前記ハードウェア有限状態機械の要素へのマッピングを提供するデバッギング情報を入力することと、
    前記HLLソフトウェア仕様に関連する前記デバッギング情報を、データベースの前記HLLソフトウェア仕様の前記要素の前記ハードウェア有限状態機械の前記要素への前記マッピングと相互参照することと
    を含み、
    前記変換することが、前記データベースから、前記第1のHLLデバッギングコマンドで指定されたHLLステートメントと相互参照される前記ハードウェア有限状態機械の要素を決定することを含む、デバッギングの方法。
  2. 前記HLLソフトウェア仕様の前記ステートメントを決定することが、前記データベースから、発生した前記条件付きブレークポイントによって示される前記ハードウェア有限状態機械の要素と相互参照される前記HLLソフトウェア仕様の前記ステートメントを決定することを含む、請求項1に記載の方法。
  3. 前記ハードウェアデバッグサーバによって、前記HLLソフトウェア仕様の変数の値を要求する第2のHLLデバッギングコマンドを受信することと、
    前記ハードウェアデバッグサーバによって、前記第2のHLLデバッギングコマンドを、前記ハードウェア有限状態機械の信号の値を取得する第2のハードウェアデバッギングコマンドに変換することと、
    前記第2のハードウェアデバッギングコマンドを前記シミュレータに入力することと、
    前記シミュレータによって前記信号の前記値を読み取ることと、
    前記変数の名前に関連して前記信号の前記値を出力することと
    を更に含む、請求項1に記載の方法。
  4. 前記ハードウェアデバッグサーバによって、前記HLLソフトウェア仕様に関連するデバッギング情報を入力することと、
    前記ハードウェアデバッグサーバによって、前記HLLソフトウェア仕様の要素の前記ハードウェア有限状態機械の要素へのマッピングを提供するデバッギング情報を入力することと、
    前記HLLソフトウェア仕様に関連する前記デバッギング情報を、データベースの前記HLLソフトウェア仕様の前記要素の前記ハードウェア有限状態機械の前記要素への前記マッピングと相互参照することと
    を更に含み、
    前記第2のHLLデバッギングコマンドを変換することが、前記データベースから、前記第2のHLLデバッギングコマンドで指定された前記変数の前記名前と相互参照される前記ハードウェア有限状態機械の前記信号を決定することを含む、請求項3に記載の方法。
  5. 前記シミュレーションの実行の中断に応じて、前記ハードウェア有限状態機械内の前記条件に対応する前記HLLソフトウェア仕様のステートメントを決定することと、
    前記HLLソフトウェア仕様の前記ステートメントを示すデータを出力することと、
    前記ハードウェアデバッグサーバによって、前記HLLソフトウェア仕様の変数の値を要求する第2のHLLデバッギングコマンドを受信することと、
    前記ハードウェアデバッグサーバによって、前記第2のHLLデバッギングコマンドを、前記ハードウェア有限状態機械の信号の値を取得する第2のハードウェアデバッギングコマンドに変換することと、
    前記第2のハードウェアデバッギングコマンドを前記シミュレータに入力することと、
    前記シミュレータによって前記信号の前記値を読み取ることと、
    前記変数の名前に関連して前記信号の前記値を出力することと
    を更に含む、請求項1に記載の方法。
  6. デバッギングシステムであって、
    プロセッサと、
    前記プロセッサに結合されたメモリ装置であって、前記プロセッサによって実行されるとき、前記プロセッサに、
    ハードウェアデバッグサーバによって、ブレークポイントをHLLソフトウェア仕様に設定するための第1の高水準言語(HLL)デバッギングコマンドを受信することと、
    前記ハードウェアデバッグサーバによって、前記第1のHLLデバッギングコマンドを、前記ソフトウェア仕様の表示であるハードウェア有限状態機械の条件を指定する第1のハードウェアデバッギングコマンドに変換することと、
    前記第1のハードウェアデバッギングコマンドをシミュレータに入力することと、
    前記第1のハードウェアデバッギングコマンドに応じて、前記シミュレータによって前記有限状態機械に条件付きブレークポイントを追加することと、
    前記有限状態機械の表示のシミュレーションを実行することと、
    前記有限状態機械における前記条件の検出に応じて、前記シミュレーションの実行を中断することと、
    前記シミュレーションの実行の中断に応じて、前記ハードウェア有限状態機械内の前記条件に対応する前記HLLソフトウェア仕様のステートメントを決定することと、
    前記HLLソフトウェア仕様の前記ステートメントを示すデータを出力することと、
    前記ハードウェアデバッグサーバによって、前記HLLソフトウェア仕様に関連するデバッギング情報を入力することと、
    前記ハードウェアデバッグサーバによって、前記HLLソフトウェア仕様の要素の前記ハードウェア有限状態機械の要素へのマッピングを提供するデバッギング情報を入力することと、
    前記HLLソフトウェア仕様に関連する前記デバッギング情報を、データベースの前記HLLソフトウェア仕様の前記要素の前記ハードウェア有限状態機械の前記要素への前記マッピングと相互参照することと
    を含む動作を実行させる命令で構成される、メモリ装置と
    を含み、
    前記変換することが、前記データベースから、前記第1のHLLデバッギングコマンドで指定されたHLLステートメントと相互参照される前記ハードウェア有限状態機械の要素を決定することを含む、デバッギングシステム。
  7. 前記HLLソフトウェア仕様の前記ステートメントを決定するための前記命令が、前記データベースから、発生した前記条件付きブレークポイントによって示される前記ハードウェア有限状態機械の要素と相互参照される前記HLLソフトウェア仕様の前記ステートメントを決定するための命令を含む、請求項6に記載のシステム。
  8. 前記メモリ装置が、前記プロセッサによって実行されるとき、前記プロセッサに、
    前記ハードウェアデバッグサーバによって、前記HLLソフトウェア仕様の変数の値を要求する第2のHLLデバッギングコマンドを受信することと、
    前記ハードウェアデバッグサーバによって、前記第2のHLLデバッギングコマンドを、前記ハードウェア有限状態機械の信号の値を取得する第2のハードウェアデバッギングコマンドに変換することと、
    前記第2のハードウェアデバッギングコマンドを前記シミュレータに入力することと、
    前記シミュレータによって前記信号の前記値を読み取ることと、
    前記変数の名前に関連して前記信号の前記値を出力することと
    を含む動作を実行させる命令で更に構成される、請求項6に記載のシステム。
  9. 前記メモリ装置が、前記プロセッサによって実行されるとき、前記プロセッサに、
    前記ハードウェアデバッグサーバによって、前記HLLソフトウェア仕様に関連するデバッギング情報を入力することと、
    前記ハードウェアデバッグサーバによって、前記HLLソフトウェア仕様の要素の前記ハードウェア有限状態機械の要素へのマッピングを提供するデバッギング情報を入力することと、
    前記HLLソフトウェア仕様に関連する前記デバッギング情報を、データベースの前記HLLソフトウェア仕様の前記要素の前記ハードウェア有限状態機械の前記要素への前記マッピングと相互参照することと
    を含む動作を実行させる命令で更に構成され、
    前記第2のHLLデバッギングコマンドを変換することが、前記データベースから、前記第2のHLLデバッギングコマンドで指定された前記変数の前記名前と相互参照される前記ハードウェア有限状態機械の前記信号を決定することを含む、請求項8に記載のシステム。
  10. 前記ハードウェア有限状態機械が、前記ハードウェア有限状態機械が指定されるハードウェア記述言語以外の言語でモデル化されるメモリ内の値を参照し、前記メモリ装置が、前記プロセッサによって実行されるとき、前記プロセッサに、
    前記メモリにアクセスするコールバック機能を前記シミュレータに登録することと、
    前記ハードウェアデバッグサーバによって、前記HLLソフトウェア仕様の変数の値を要求する第2のHLLデバッギングコマンドを受信することと、
    前記ハードウェアデバッグサーバによって、前記第2のHLLデバッギングコマンドを、前記ハードウェア有限状態機械の信号の値を取得する第2のハードウェアデバッギングコマンドに変換することと、
    前記第2のハードウェアデバッギングコマンドを前記シミュレータに入力することと、
    前記コールバック機能を実行して、前記シミュレータによって前記メモリから前記信号の前記値を読み出すことと、
    前記変数の名前に関連して前記信号の前記値を出力することと
    を含む動作を実行させる命令で更に構成される、請求項6に記載のシステム。
  11. 前記メモリ装置が、前記プロセッサによって実行されるとき、前記プロセッサに、
    前記シミュレーションの実行の中断に応じて、前記ハードウェア有限状態機械内の前記条件に対応する前記HLLソフトウェア仕様のステートメントを決定することと、
    前記HLLソフトウェア仕様の前記ステートメントを示すデータを出力することと、
    前記ハードウェアデバッグサーバによって、前記HLLソフトウェア仕様の変数の値を要求する第2のHLLデバッギングコマンドを受信することと、
    前記ハードウェアデバッグサーバによって、前記第2のHLLデバッギングコマンドを、前記ハードウェア有限状態機械の信号の値を取得する第2のハードウェアデバッギングコマンドに変換することと、
    前記第2のハードウェアデバッギングコマンドを前記シミュレータに入力することと、
    前記シミュレータによって前記信号の前記値を読み取ることと、
    前記変数の名前に関連して前記信号の前記値を出力することと
    を含む動作を実行させる命令で更に構成される、請求項6に記載のシステム。
JP2019520950A 2016-10-25 2017-10-24 デバッギングシステム及び方法 Active JP7036814B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US15/334,182 2016-10-25
US15/334,182 US10067854B2 (en) 2016-10-25 2016-10-25 System and method for debugging software executed as a hardware simulation
PCT/US2017/058116 WO2018081145A1 (en) 2016-10-25 2017-10-24 Debugging system and method

Publications (2)

Publication Number Publication Date
JP2019533252A JP2019533252A (ja) 2019-11-14
JP7036814B2 true JP7036814B2 (ja) 2022-03-15

Family

ID=60263127

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2019520950A Active JP7036814B2 (ja) 2016-10-25 2017-10-24 デバッギングシステム及び方法

Country Status (6)

Country Link
US (1) US10067854B2 (ja)
EP (1) EP3532936B1 (ja)
JP (1) JP7036814B2 (ja)
KR (1) KR102370667B1 (ja)
CN (1) CN109891395B (ja)
WO (1) WO2018081145A1 (ja)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2020186518A1 (en) * 2019-03-21 2020-09-24 Hangzhou Fabu Technology Co. Ltd Method and apparatus for debugging, and system on chip
US11442844B1 (en) 2020-06-01 2022-09-13 Xilinx, Inc. High speed debug hub for debugging designs in an integrated circuit
US11249872B1 (en) 2020-06-26 2022-02-15 Xilinx, Inc. Governor circuit for system-on-chip

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007052783A (ja) 2005-08-12 2007-03-01 Arm Ltd データ処理装置のシミュレーション
JP2010049630A (ja) 2008-08-25 2010-03-04 Fujitsu Ltd シミュレーション制御プログラム、シミュレーション制御装置、およびシミュレーション制御方法

Family Cites Families (52)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5920711A (en) * 1995-06-02 1999-07-06 Synopsys, Inc. System for frame-based protocol, graphical capture, synthesis, analysis, and simulation
US6212650B1 (en) 1997-11-24 2001-04-03 Xilinx, Inc. Interactive dubug tool for programmable circuits
US5995744A (en) 1997-11-24 1999-11-30 Xilinx, Inc. Network configuration of programmable circuits
US6182268B1 (en) * 1998-01-05 2001-01-30 Synplicity, Inc. Methods and apparatuses for automatic extraction of finite state machines
US6188975B1 (en) 1998-03-31 2001-02-13 Synopsys, Inc. Programmatic use of software debugging to redirect hardware related operations to a hardware simulator
US6240376B1 (en) 1998-07-24 2001-05-29 Mentor Graphics Corporation Method and apparatus for gate-level simulation of synthesized register transfer level designs with source-level debugging
US20060117274A1 (en) * 1998-08-31 2006-06-01 Tseng Ping-Sheng Behavior processor system and method
US9195784B2 (en) * 1998-08-31 2015-11-24 Cadence Design Systems, Inc. Common shared memory in a verification system
US6701491B1 (en) * 1999-06-26 2004-03-02 Sei-Yang Yang Input/output probing apparatus and input/output probing method using the same, and mixed emulation/simulation method based on it
US7240303B1 (en) * 1999-11-30 2007-07-03 Synplicity, Inc. Hardware/software co-debugging in a hardware description language
US6581191B1 (en) * 1999-11-30 2003-06-17 Synplicity, Inc. Hardware debugging in a hardware description language
US6931572B1 (en) * 1999-11-30 2005-08-16 Synplicity, Inc. Design instrumentation circuitry
US7072818B1 (en) * 1999-11-30 2006-07-04 Synplicity, Inc. Method and system for debugging an electronic system
US6584601B1 (en) * 2000-02-07 2003-06-24 National Instruments Corporation System and method for converting graphical programs into hardware implementations which utilize probe insertion
US6545549B2 (en) * 2000-03-02 2003-04-08 Texas Instruments Incorporated Remotely controllable phase locked loop clock circuit
US6594802B1 (en) * 2000-03-23 2003-07-15 Intellitech Corporation Method and apparatus for providing optimized access to circuits for debug, programming, and test
US6985980B1 (en) 2000-11-03 2006-01-10 Xilinx, Inc. Diagnostic scheme for programmable logic in a system on a chip
US7222315B2 (en) * 2000-11-28 2007-05-22 Synplicity, Inc. Hardware-based HDL code coverage and design analysis
US7165231B2 (en) * 2000-12-18 2007-01-16 Yardstick Research, Llc Method and system for incremental behavioral validation of digital design expressed in hardware description language
US6957371B2 (en) * 2001-12-04 2005-10-18 Intellitech Corporation Method and apparatus for embedded built-in self-test (BIST) of electronic circuits and systems
US7827510B1 (en) * 2002-06-07 2010-11-02 Synopsys, Inc. Enhanced hardware debugging with embedded FPGAS in a hardware description language
US7203632B2 (en) * 2003-03-14 2007-04-10 Xilinx, Inc. HDL co-simulation in a high-level modeling system
US7308564B1 (en) 2003-03-27 2007-12-11 Xilinx, Inc. Methods and circuits for realizing a performance monitor for a processor from programmable logic
US7171653B2 (en) 2003-06-03 2007-01-30 Hewlett-Packard Development Company, L.P. Systems and methods for providing communication between a debugger and a hardware simulator
US8180620B2 (en) 2004-01-27 2012-05-15 Arm Limited Apparatus and method for performing hardware and software co-verification testing
CN1312588C (zh) * 2004-04-02 2007-04-25 清华大学 基于目标机上的ejtag部件的交叉调试器实现方法
FR2870955B1 (fr) * 2004-05-26 2006-08-11 Temento Systems Debogueur d'un circuit electronique fabrique a partir d'un programme en langage de description de materiel
JP4481783B2 (ja) * 2004-09-30 2010-06-16 ルネサスエレクトロニクス株式会社 シミュレーションモデル作成装置及びシミュレーション装置とシステム並びに方法とプログラム
US7496895B1 (en) * 2004-12-29 2009-02-24 The Mathworks, Inc. Multi-domain unified debugger
US7805593B1 (en) 2005-03-24 2010-09-28 Xilinx, Inc. Real-time performance monitoring using a system implemented in an integrated circuit
US8683444B1 (en) * 2006-12-11 2014-03-25 Synopsys, Inc. System and method of debugging multi-threaded processes
US7823117B1 (en) * 2007-12-21 2010-10-26 Xilinx, Inc. Separating a high-level programming language program into hardware and software components
US8458667B2 (en) * 2008-01-30 2013-06-04 National Instruments Corporation Debugging a statechart for a real time target
JP2009193165A (ja) 2008-02-12 2009-08-27 Toshiba Corp デバッグ装置およびデバッグ方法
US8079013B1 (en) * 2008-12-19 2011-12-13 Xilinx, Inc. Hardware description interface for a high-level modeling system
US20100251208A1 (en) * 2009-03-31 2010-09-30 Fujitsu Limited Validating Behavioral Diagrams
US8327200B1 (en) 2009-04-02 2012-12-04 Xilinx, Inc. Integrated circuit providing improved feed back of a signal
US8214701B1 (en) * 2009-04-17 2012-07-03 Altera Corporation Hardware and software debugging
US20110307847A1 (en) * 2010-06-10 2011-12-15 Global Unichip Corporation Hybrid system combining TLM simulators and HW accelerators
US8595561B1 (en) 2010-10-27 2013-11-26 Xilinx, Inc. Integrated debugging within an integrated circuit having an embedded processor
US8595555B1 (en) 2011-01-13 2013-11-26 Xilinx, Inc. Debugging an integrated circuit with an embedded processor
EP2546767B1 (en) * 2011-07-11 2014-12-31 OneSpin Solutions GmbH Digital circuit verification monitor
US9032345B2 (en) * 2011-07-11 2015-05-12 Onespin Solutions Gmbh Digital circuit verification monitor
US8966457B2 (en) * 2011-11-15 2015-02-24 Global Supercomputing Corporation Method and system for converting a single-threaded software program into an application-specific supercomputer
US9378071B2 (en) * 2012-06-23 2016-06-28 Pmda Services Pty Ltd Computing device for state transitions of recursive state machines and a computer-implemented method for the definition, design and deployment of domain recursive state machines for computing devices of that type
US9110682B2 (en) * 2012-10-19 2015-08-18 Microsoft Technology Licensing Llc State machine control of a debugger
US8775986B1 (en) * 2013-02-25 2014-07-08 Xilinx, Inc. Software debugging of synthesized hardware
US9171115B2 (en) * 2013-04-10 2015-10-27 Nvidia Corporation System, method, and computer program product for translating a common hardware database into a logic code model
US9262305B1 (en) 2013-05-31 2016-02-16 Cadence Design Systems, Inc. Simulation observability and control of all hardware and software components of a virtual platform model of an electronics system
US9477579B2 (en) * 2013-08-09 2016-10-25 Freescale Semiconductor, Inc. Embedded software debug system with partial hardware acceleration
WO2016101090A1 (en) * 2014-12-22 2016-06-30 Intel Corporation Reconfigurable test access port with finite state machine control
US10331548B2 (en) * 2016-08-05 2019-06-25 Dspace Digital Signal Processing And Control Engineering Gmbh Method and computer system for compiling and testing a control program

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007052783A (ja) 2005-08-12 2007-03-01 Arm Ltd データ処理装置のシミュレーション
JP2010049630A (ja) 2008-08-25 2010-03-04 Fujitsu Ltd シミュレーション制御プログラム、シミュレーション制御装置、およびシミュレーション制御方法

Also Published As

Publication number Publication date
US10067854B2 (en) 2018-09-04
US20180113787A1 (en) 2018-04-26
WO2018081145A1 (en) 2018-05-03
KR102370667B1 (ko) 2022-03-03
CN109891395A (zh) 2019-06-14
JP2019533252A (ja) 2019-11-14
CN109891395B (zh) 2023-02-14
KR20190070960A (ko) 2019-06-21
EP3532936A1 (en) 2019-09-04
EP3532936B1 (en) 2020-09-02

Similar Documents

Publication Publication Date Title
CN110603528B (zh) 调试系统和方法
US10255400B1 (en) Debugging system and method
US7472361B2 (en) System and method for generating a plurality of models at different levels of abstraction from a single master model
EP1913410B1 (en) Method and system for debug and test using replicated logic
JP7036814B2 (ja) デバッギングシステム及び方法
US20070168741A1 (en) Method, system and program product for facilitating debugging of simulation results obtained for an optimized simulation model of a device design having hierarchically-connected components
JP2006285333A (ja) 動作合成装置及び方法
Poliakov et al. Workcraft–a framework for interpreted graph models
JP2017162130A (ja) ハードウェア/ソフトウェア協調検証装置およびハードウェア/ソフトウェア協調検証方法
US20060190882A1 (en) System and method for generating assertions using waveforms
JP2009140388A (ja) 性能評価モデル生成方法、システム性能評価方法、及び性能評価モデル生成装置
JP5040625B2 (ja) Lsiの電力見積方法及びその装置
Gao et al. Software and hardware co-verification technology based on virtual prototyping of RF SOC
US20070038431A1 (en) Data processing apparatus simulation
US10650174B1 (en) System and method for visualizing event sequences for expressions using both hardware and software state information
Bombieri et al. Correct-by-construction generation of device drivers based on RTL testbenches
Yang et al. HDLs modeling technique for burst-mode and extended burst-mode asynchronous circuits
US20240012629A1 (en) Compiler-based generation of transaction accurate models from high-level languages
Herdt et al. Register-Transfer Level Correspondence Analysis
Blake et al. One Compile to Rule Them All: An Elegant Solution for OVM/UVM Testbench Topologies
Zhong et al. The Optimization of Distributed Cloud Computing Network Routing Model Based on MDA
Andrews ARM SoC Verification Matrix Improves HW/SW Co-Verification
Dungan et al. Mixed-level modeling in VHDL using the watch-and-react interface
Wang et al. Uniform SystemC Co-Simulation Methodology for System-on-Chip Designs
JPH11149489A (ja) シミュレーション装置

Legal Events

Date Code Title Description
A529 Written submission of copy of amendment under article 34 pct

Free format text: JAPANESE INTERMEDIATE CODE: A529

Effective date: 20190614

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20201021

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20210915

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20210928

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20211217

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20220303

R150 Certificate of patent or registration of utility model

Ref document number: 7036814

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150