JP4202673B2 - システムlsi開発環境生成方法及びそのプログラム - Google Patents
システムlsi開発環境生成方法及びそのプログラム Download PDFInfo
- Publication number
- JP4202673B2 JP4202673B2 JP2002127381A JP2002127381A JP4202673B2 JP 4202673 B2 JP4202673 B2 JP 4202673B2 JP 2002127381 A JP2002127381 A JP 2002127381A JP 2002127381 A JP2002127381 A JP 2002127381A JP 4202673 B2 JP4202673 B2 JP 4202673B2
- Authority
- JP
- Japan
- Prior art keywords
- instruction
- system lsi
- unit
- register
- configuration
- 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.)
- Expired - Lifetime
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F30/00—Computer-aided design [CAD]
- G06F30/30—Circuit design
- G06F30/32—Circuit design at the digital level
- G06F30/33—Design verification, e.g. functional simulation or model checking
- G06F30/3308—Design verification, e.g. functional simulation or model checking using simulation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F30/00—Computer-aided design [CAD]
- G06F30/30—Circuit design
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F30/00—Computer-aided design [CAD]
- G06F30/30—Circuit design
- G06F30/32—Circuit design at the digital level
- G06F30/33—Design verification, e.g. functional simulation or model checking
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Evolutionary Computation (AREA)
- Geometry (AREA)
- Software Systems (AREA)
- Debugging And Monitoring (AREA)
- Stored Programmes (AREA)
- Devices For Executing Special Programs (AREA)
Description
【発明の属する技術分野】
本発明は、例えばコンフィグラブル(configurable)プロセッサを含むシステムLSIの設計開発に利用される開発環境(development environment)に係り、特に、システムLSIの設計開発環境を生成する方法及びそのプログラムに関する。
【0002】
【従来の技術】
近年、例えばマルチメディア処理等に適用されるLSIに対するニーズが多様化している。さらに、このLSIの市場サイクルは短期化している。このため、アプリケーションに最適なLSIを短期に開発するためのシステムLSIの設計開発環境が望まれている。ここで、開発環境とは、システムLSIを構築する際に必要となるハードウェアやシステム開発支援ツールなどのソフトウェアを意味する。
【0003】
一般に、LSI内に汎用プロセッサを搭載した場合、ハードウェアの設計コストは殆んどゼロに等しい。しかし、このような構成のLSIはアプリケーションに最適化されていないため、アプリケーションの性能をフルに引き出すことが困難である。このため、最近では、命令やメモリ構成等が選択可能なコンフィグラブル・プロセッサが提供されている。また、コンフィグラブル・プロセッサの提供者は、コンフィグレーションを指定して論理合成可能なハードウェア記述を出力するシステムを提供している。このようなプロセッサ及びシステムによれば、オプション命令やメモリサイズを指定することによって、アプリケーションに最適な構成のプロセッサを短期間で開発することが可能となる。
【0004】
一方、通常、命令セット等を変えた場合、コンパイラやシミュレータ等のソフトウェア開発ツールも変更しなければならない。このため、コンフィグレーションを指定することにより、ハードウェア記述と同時に、ソフトウェア開発ツールを生成するシステムも提供されるようになっている。このようなシステムによれば、ソフトウェア開発ツールの設計に要する労力及び時間を大幅に削減することができる。
【0005】
【発明が解決しようとする課題】
従来、RISC(Reduced Instruction Set Computer)コアに対してコンフィグラブルなDSP(Digital Signal Processor)コプロセッサが開発されている。しかし、このDSPコプロセッサは予め用意されたISA(Instruction Set Architecture)のみ使用可能とされ、それ以外は使用できない。また、新たな命令を追加できるコンフィグラブル・プロセッサも有るが、固定されたタイプの命令のみが追加可能である。このため、例えばVLIW(Very Long Instruction Word)モード等のアーキテクチャに対応することが困難であり、フレキシビリティが十分ではない。
【0006】
さらに、追加の命令を記述するために、例えばVerilogのようなハードウェア記述言語(HDL:Hardware Description Language)が用いられており、効率良く命令を追加することができない。
【0007】
さらに、ユーザが定義した命令より必要な開発環境を生成することが困難であった。
【0008】
本発明は、上記課題を解決するためになされたものであり、その目的とするところは、高性能なハードウェアを有するLSIの開発環境を十分なフレキシビリティで、簡単に生成することが可能なシステムLSI開発環境生成方法及びそのプログラムを提供しようとするものである。
【0009】
【課題を解決するための手段】
本発明のシステムLSI開発環境生成方法は、コンパイラカスタマイズ部、アセンブラカスタマイズ部、及びシミュレータカスタマイズ部を含むコンピュータにより、前記コンピュータに接続された記憶装置に記憶されたシステムLSIのコンフィグレーションが記述されたコンフィグレーション指定ファイルに基づきシステムLSIの開発環境を生成する方法であって、前記コンピュータは、前記コンパイラカスタマイズ部により、前記記憶装置から入力された前記コンフィグレーション指定ファイルに含まれるシステムLSIの命令セットのオプション情報、ユーザ定義命令及びレジスタの構成を定義するレジスタ定義に基づき、前記システムLSI上で動作するソフトウェアを開発するためのコンパイラを構築させ、前記アセンブラカスタマイズ部により、前記コンフィグレーション指定ファイルに含まれる前記システムLSIの命令セットのオプション情報、ユーザ定義命令及びレジスタの構成を定義するレジスタ定義に基づき、前記システムLSI上で動作するソフトウェアを開発するためのアセンブラを構築させ、前記シミュレータカスタマイズ部により、前記コンフィグレーション指定ファイルに含まれるオプション情報、ユーザ定義命令及びレジスタの構成を定義するレジスタ定義に基づき、コンフィグレーションに沿った命令動作を実行するシミュレータを構築させ、前記コンフィグレーション指定ファイルは、コアプロセッサに対してコプロセッサを定義するコプロセッサ定義を含み、前記コプロセッサ定義は、コプロセッサがVLIW(ベリー・ロング・インストラクション・ワード)モードであることを示す記述、及び命令を並列化する際、どのスロットに置かれる命令かを区別するためのスロット情報を含むことを特徴とする。
【0010】
すなわち、本発明に係る方法の特徴は、システムLSIのコンフィグレーションが記述されたコンフィグレーション指定ファイルの情報を入力し、且つコンフィグレーション指定ファイルが命令を実行するハードウェアの指定を含んでいることである。ここで、コンフィグレーション指定ファイルは、特に、ユーザ定義命令の命令記述であり、具体的には、以下に述べるアーキテクチャ・データ・ベース・ファイルである。
【0011】
また、本発明のシステムLSI開発環境生成プログラムは、コンピュータに、コマンドインタープリタにより、入力されたコマンドを解析させ、前記解析したコマンドに応じて、コンパイラカスタマイズ部により、前記コンピュータに接続された記憶装置から入力されたコンフィグレーション指定ファイルに含まれるシステムLSIの命令セットのオプション情報、ユーザ定義命令及びレジスタの構成を定義するレジスタ定義、コアプロセッサに対してコプロセッサを定義するコプロセッサ定義、及び命令を並列化する際、どのスロットに置かれる命令かを区別するためのスロット情報、さらに、前記コプロセッサ定義は、コプロセッサがVLIW(ベリー・ロング・インストラクション・ワード)モードであることを示す記述に基づき、前記システムLSI上で動作するソフトウェアを開発するためのコンパイラを構築させ、前記アセンブラカスタマイズ部により、前記コンフィグレーション指定ファイルの前記システムLSIの命令セットのオプション情報、ユーザ定義命令及びレジスタの構成を定義するレジスタ定義に基づき、前記システムLSI上で動作するソフトウェアを開発するためのアセンブラを構築させ、前記シミュレータカスタマイズ部により、前記コンフィグレーション指定ファイルに含まれるオプション情報、ユーザ定義命令及びレジスタの構成を定義するレジスタ定義に基づき、前記コンフィグレーションに沿った命令動作を実行するシミュレータを構築させることを実現する。
【0012】
【発明の実施の形態】
以下、本発明の実施の形態について図面を参照して説明する。
【0013】
先ず、図1乃至図10を用いて、本実施形態に適用されるシステムLSI開発装置について概略的に説明する。
【0014】
(システムLSI開発装置の構成)
図1は、システムLSI開発装置1を示している。システムLSI開発装置1は、設定ファイル生成部2、ユーザ定義モジュール・ユーザ定義命令記憶部3、システムLSI開発環境生成部4、性能評価部5、終了判定部6、変更項目設定部7、入出力インターフェース部8及び制御部9を有している。
【0015】
システムLSI開発装置1には、装置1内に各種情報を入力するための入力部10と、装置1からの各種情報を出力するための出力部11とが接続されている。入力部10としては、例えばキーボード、マウスポインタ、テンキー、タッチパネル等を用いることができる。出力部11としては、例えばディスプレイ装置や印刷装置等が適用される。
【0016】
図2乃至図13は、上記システムLSI開発装置1内の各部の構成を示している。
【0017】
(設定ファイル生成部の構成)
図2は、設定ファイル生成部2の構成を示している。設定ファイル生成部2は、入力解析部21、ローカルメモリマップ生成部22、オプション情報記憶部23、デバイス構成記憶部24、キャッシュ構成記憶部25及びローカルメモリマップ記憶部26を備えている。設定ファイル生成部2は、システムLSIの設計上のコンフィグレーションを記述したコンフィグレーション指定ファイル(以下において、アーキテクチャ・データ・ベース・ファイルとも言う)、可変値設定情報、最優先項目設定情報、目標性能指定情報、及び変更項目設定部7から供給される変更項目リスト情報に基づいて、システムLSI設計上のコンフィグレーションを生成し、格納する。前記目標性能指定情報は、ハードウェア性能、ソフトウェア性能の一方又は両方を含む。ハードウェアの性能指標としては、面積、周波数、消費電力を含む。ソフトウェアの性能指標としては、コードサイズ、実効命令数、実行サイクル数を含む。
【0018】
前記入力解析部21は、コンフィグレーション指定ファイルの内容を解析し、コンフィグレーション指定ファイル内に記述されたコンフィグレーションの内容をオプション情報記憶部23、デバイス構成記憶部24、及びキャッシュ構成記憶部25の各部に分割する。
【0019】
前記コンフィグレーション指定ファイル内には、オプション命令の有無、デバイスの有無、キャッシュの有無、キャッシュサイズ、ユーザ定義命令、ユーザ定義ハードウェアモジュール、LSI内部のメモリマップ、マルチプロセッサ構成(マルチプロセッサの数など)等の情報を記述するものとする。なお、ユーザ定義命令やユーザ定義ハードウェアモジュールの記述部分には、ユーザ定義命令やユーザ定義モジュールを記述したファイル名の記憶位置(この実施の形態においては、ユーザ定義モジュール、ユーザ定義命令記憶部3の位置)を絶対パスや相対パス等の記述によって指定する。
【0020】
前記デバイスの有無において、デバイスには、命令メモリ、データメモリ、コプロセッサが含まれ、命令メモリ、データメモリの可変項目には、サイズ、アドレスが含まれる。前記メモリマップにおいて、メモリマップには、外部メモリ領域、内部メモリ領域、入出力領域が含まれ、外部メモリ領域には、キャッシュアクセス領域の指定項目も含まれる。また、各メモリ領域にはレイテンシ情報も含まれる。
【0021】
また、コンフィグレーション指定ファイルからシステムLSI設計上のコンフィグレーションを指定する際、ユーザは、設定ファイル生成部2内の各記憶部23〜26で定義されている可変値の中から1つの値を選択する。この選択した値を、例えば図3に示すようなコンフィグレーション指定ファイル内に記述する。
【0022】
すなわち、例えば、以下に示すSIZE記述において、内蔵データメモリのサイズは、例えば1、2、4、8、16、32[KB]のいずれかを選択することが可能である。このSIZE記述を省略した場合、サイズは、デフォルト値の8[KB]になることを示している。
【0023】
DMEM:
SIZE Ptype={1,2,4,8,16,32},default=8,comment=“内蔵データメモリのサイズ”;
また、以下に示すISA_DEFINE記述においては、ユーザ定義命令のISA定義ファイル名として任意の文字列を記述しなければならないことを示す。
【0024】
UCI:
ISA_DEFINE Ptype=string, default=“”,comment=“ユーザ定義命令のISA定義ファイル名”;
なお、上記のコンフィグレーションの設定作業は、入出力インタフェイス部8を介した対話的な処理によって行なうようにしても良い。コンフィグレーションの設定を対話的に行なうようにすることにより、ユーザは、コンフィグレーション指定ファイルの文法等を意識せずに、コンフィグレーションを容易に設定することができる。このため、コンフィグレーションの設定に要する時間を直接ファイルに記述する場合と比べて短縮することができる。さらに、全てのコンフィグレーションの設定を対話的に処理できる。このため、コンフィグレーションの1つを設定し忘れる等の間違いを防止することができる。
【0025】
また、コンフィグレーションに可変値を設定するようにしても良い。コンフィグレーションに可変値を設定した場合、設定ファイル生成部2は、基本設定、可変値の測定用に作られたテンプレート、ユーザが設定した値のいずれかを用いて自動的に他のコンフィグレーションの設定値を導出するようにする。コンフィグレーションに可変値を設定することにより、ユーザは、コンフィグレーションの可変範囲に応じた複数の開発環境、検証環境を同時に得ることができる。このため、LSI開発サイクルの短縮を実現することが可能となる。
【0026】
さらに、コンフィグレーションの中で最優先項目を設定するようにしても良い。コンフィグレーションの中で最優先項目が設定された場合、設定ファイル生成部2は、最優先項目以外の部分の設定値について、最優先項目が最適となるようなコンフィグレーションを生成する。この生成には、基本設定、及び最優先項目に基づいてテンプレート又はユーザが指定した設定値が使用される。コンフィグレーションの中に最優先項目を指定することにより、ユーザはシステムLSIの構成を認識することなく、優先項目に適した構成を開発環境、検証環境を作成し、それを評価できる。
【0027】
(ローカルメモリマップ生成部の構成)
ローカルメモリマップ生成部22は、コンフィグレーション指定ファイルから指定されるグローバルマップと、システムLSI内の個々のプロセッサのローカルメモリ情報とを統合し、システムLSI内のプロセッサ毎のローカルメモリマップを生成する。前記グローバルマップは、例えば図4(a)に示すような全プロセッサに共通のメモリ領域である。また、前記ローカルメモリ情報としては、例えば命令メモリ、データメモリ、命令キャッシュ、データキャッシュを含む。図4(b)は、生成されたローカルメモリマップの一例を示している。この生成されたローカルメモリマップは、ローカルメモリマップ記憶部26内に格納される。
【0028】
ここで、プロセッサのローカルメモリ領域は、個々のローカルメモリ毎に予約されているグローバルマップ中のメモリ領域に対して、コンフィグレーション指定ファイルにより指定されるメモリサイズを反映させることによって生成することができる。また、予めグローバルマップ中に各プロセッサのシャドウメモリ情報を指定することにより、各プロセッサのローカルマップに他のプロセッサのローカルメモリを含むシャドウメモリを作ることもできる。
【0029】
オプション情報記憶部23は、入力解析部21によるコンフィグレーション指定ファイルの解析結果に基づいて、システムLSIに内蔵されるプロセッサの命令セット内のオプション命令のON/OFF(オン/オフ)の種別に関する情報を格納する。
【0030】
デバイス構成記憶部24は、入力解析部21によるコンフィグレーション指定ファイルの解析結果に基づいて、システムLSIに内蔵されるデバイスのON/OFFの種別に関する情報とそのサイズに関する情報、アドレス情報、プロセッサの命令メモリやデータメモリに関する情報、及びコプロセッサ等のオプションハードウェアに関する情報を格納する。
【0031】
(キャッシュ構成記憶部の構成)
キャッシュ構成記憶部25は、入力解析部21によるコンフィグレーション指定ファイルの解析結果に基づいて、システムLSIのキャッシュのON/OFFの種別、キャッシュのタイプ(direct, 2-way, 4-way, n-way)に関する情報、及びサイズに関する情報を格納する。
【0032】
(ローカルメモリマップ記憶部の構成)
ローカルメモリマップ記憶部26は、ローカルメモリマップ生成部22が生成したローカルメモリマップに関する情報を格納する。
【0033】
(ユーザ定義モジュール・ユーザ定義命令記憶部の構成)
ユーザ定義モジュール・ユーザ定義命令記憶部3は、ユーザ定義のハードウェアモジュール及びシステムLSIに内蔵するプロセッサの命令セットにおけるユーザ定義命令に関する情報を格納する。ここで、ユーザ定義のハードウェアモジュールに関する情報はRTL(Register Transfer Level)記述又は動作記述、及び命令の動作に関する情報は、Cモデル又はC++モデルで記述して記憶部3内に格納することが望ましい。動作記述とCモデル又はC++モデル記述は同一でも良い。また、ユーザ定義命令に関する情報は、コンフィグレーション指定ファイルから指定される、図4(c)に示すようなISA定義ファイルに記述して格納することが望ましい。
【0034】
(システムLSI開発環境生成部の構成)
システムLSI開発環境生成部4は、図5に示すように、RTL生成部41、シミュレータカスタマイズ部42、コンパイラカスタマイズ部43、アセンブラカスタマイズ部44及び検証ベクトル生成部45を備えている。このシステムLSI開発環境生成部4は、設定ファイル生成部2内に格納されているコンフィグレーションの全ての組み合わせについて、システムLSIのハードウェア、検証環境及び開発設計ツールを生成する。
【0035】
以下、このシステムLSI開発環境生成部の内部構成について詳細に説明する。
【0036】
(RTL生成部の構成)
RTL生成部41は、設定ファイル生成部2の記憶部内に記憶されているコンフィグレーションに基づいて、システムLSIに内蔵されるプロセッサのRTL記述を生成する。
【0037】
図6は、RTL生成部41の一実施例を示している。ブロック接続部41dは、デバイス構成記憶部24とキャッシュ構成記憶部25内に格納されたコンフィグレーションを参照して、RTLテンプレート41a、41bからユーザにより設定されたコンフィグレーションに対応するテンプレートを選択する。高位合成処理部41eは、ユーザ定義モジュール・ユーザ定義命令記憶部6内に格納されたユーザ定義命令又はユーザ定義モジュールの仕様である動作記述を高位合成することによりRTL記述を生成する。さらに、接続部41dは、プロセッサコア部のRTL記述41cに対して、前記選択したRTLテンプレートと、高位合成処理部41eからのRTL記述とを接続することにより、プロセッサのRTL記述を生成する。なお、記憶部3内の仕様がRTL記述である場合、そのままインターフェース信号が合うように接続する。
【0038】
なお、マルチプロセッサ構成が定義された場合、ブロック接続部41dは、複数のプロセッサ記述を生成し、それらをバスで接続したマルチプロセッサのRTL記述を生成するものとする。
【0039】
また、RTLテンプレート41a、41b内に含まれる命令メモリ、データメモリ、オプションハードウェア、命令キャッシュ及びデータキャッシュは、ユーザが選択可能なメモリサイズの各々についてRTL記述が予め用意されている。これらRTL記述は、指定されたコンフィグレーションに応じて選択的に接続可能とされている。また、オプション命令については、オプション命令に対応するハードウェアのテンプレートをオプション命令のON/OFF全ての組み合わせについて用意する。
【0040】
図7は、RTLテンプレートの一例を示している。図7において、オプション命令ユニットのRTLテンプレートは、除算オプション命令(DIV)のON/OFF、及び最大最小値オプション命令(MINMAX)のON/OFFの4通りの組み合わせについて、RTL記述がそれぞれテンプレートとして用意されている。これらテンプレートは、デバイス構成記憶部24とキャッシュ構成記憶部25内に格納されたコンフィグレーションに合わせて、コアRTL記述に選択的に接続される。また、コプロセッサ等のオプションハードウェアについても、コンフィグレーションで有効と指定されている場合、既定義のRTL記述がコアRTL記述に接続される。さらに、ユーザ定義のハードウェアがある場合、ユーザが記述したハードウェア記述がコアRTL記述に接続される。
【0041】
以上の接続処理によって、RTL生成部41は、設定されたコンフィグレーションに対応したプロセッサのRTL記述を生成する。例えば、プロセッサ1を最初に構築する場合、ユーザは、コンフィグレーションのパラメータ指定として、プロセッサコアに4[KB]の命令メモリと、4[KB]のデータメモリを追加すれば、プロセッサ1のRTL記述を自動的に得ることができる。
【0042】
また、プロセッサ2を構築する場合、ユーザは、コンフィグレーションのパラメータ指定として、プロセッサコアに例えば、2[KB]の命令メモリ、4[KB]のデータメモリ、2[KB]の命令キャッシュ、4[KB]のデータキャッシュを追加する。さらに、コプロセッサと幾つかのオプション命令とユーザ定義命令のRTL記述を追加することにより、プロセッサ2のRTL記述を得ることができる。
【0043】
また、複数のRTLテンプレートを用意しておくのではなく、可変項目をパラメータ表現したRTLテンプレートにコンフィグレーションで設定された値を反映させることによっても同等の効果を得ることができる。さらに、このようなパラメータ化されたRTLテンプレートは、メモリ、キャッシュ等の部分モジュール毎でも良く、それらを含んだプロセッサ全体のものでも良い。また、全てのパラメータを包含した1つのRTLテンプレートでも良い。
【0044】
(シミュレータカスタマイズ部の構成)
図8は、シミュレータカスタマイズ部42の一例を示している。このシミュレータカスタマイズ部42は、コンフィグレーションに沿った命令動作を実行するシミュレータを生成する。
【0045】
図8において、再コンパイル部42cは、シミュレータテンプレート42aにユーザ定義モジュール・ユーザ定義命令記憶部3内に格納されたユーザ定義ハードウェアのCモデルを組み込んで再コンパイルすることにより、C又はC++のシミュレータを再構築する。また、起動オプション情報抽出部42dは、設定ファイル生成部内の前記デバイス構成記憶部24とキャッシュ構成記憶部25に格納されているデータを参照して、起動時のオプションを指定するシミュレータ起動オプションファイル(図9(a)参照)を生成する。
【0046】
組み合わせ処理部42eは、再コンパイル部42cから供給される再構築したシミュレータと、起動オプション情報抽出部42dから供給されるシミュレータ起動オプションファイルとを組み合わせることにより、コンフィグレーションに従った命令動作を実行するシミュレータを生成する。
【0047】
なお、シミュレータは、特定アドレス通過時に、デバッグ指令の実行結果を出力する手段を備えることが望ましい。従来、実行途中で誤りが起きた場合、エラーを出力するアサーションエラープログラム等がある。しかし、デバイスが正常に実行している時、途中経過を調べるためには、途中結果を出力する命令をアプリケーションに埋め込んでおくか、デバッガ等で実行を停止させて途中経過を読み取るしがなかった。これに対して、起動時に指定されるアドレスを通過した際に所定の情報を出力するようにすれば、シミュレータでアプリケーションを実行している途中に途中経過を調べることが可能となる。例えば、次に示すようなコマンドでシミュレータを起動する。
【0048】
sim -load test。hex -printx mem(0x400) at 0x1200
ここで、simは、システムLSIのシミュレータを示し、 -load test。hexは、test。hexという16進数のファイルをロードするという命令、 -printx mem(0x400) at 0x1200は、0x1200番地を通過したときにメモリの0x400番地の内容を出力する命令を示す。
【0049】
すなわち、シミュレータは、この引数で指定された指示を記憶し、プログラムカウンタが0x1200番地を通過する度に0x400番地の内容を16進数でコンソールに出力する。このとき、アプリケーションプログラムには観測用のコードが埋め込まれているわけではない。このため、シミュレーションは、命令数やサイクル数等の統計情報には全く影響を及ぼすことなく、アプリケーションプログラムの実行を観測できる。また、特定アドレスで実行を停止させ、人手を介してメモリの値を読み出し表示させる等の作業が必要ない。このため、統計情報を正確に取りながら、特に注目したい途中結果を確認しながらアプリケーションプログラムのシミュレーションをすることができる。このため、効率良くLSIを開発することができる。
【0050】
また、シミュレータは、指定された以外の領域に対してメモリアクセスが起きた場合、実行を停止することが望ましい。設定されたコンフィグレーションに従ってシミュレータを起動した時、使用可能なメモリが明確に与えられている。仮に、基板上で実装されていない領域のメモリをアクセスすると、例えばバスエラーとなり、それ以後の動作は保証されない。動作が保証されないプログラムは、シミュレータ実行時に間違いを指摘することにより、早期に修正しておく必要がある。そこで、シミュレータは存在するメモリ領域を指定し、明示的に指定されない領域はアクセス禁止とする。さらに、シミュレータは、このアクセス禁止領域がアクセスされた場合、警告しプログラムの動作を停止する。また、シミュレータは対話モード(デバッグモード)を有し、対話モードに移行した場合、どこでエラーが発生したかが解析できるようになっている。すなわち、シミュレータがデバッガと通信して動作している場合、シミュレーション動作を中断してデバッガのコマンド待ちに移行する。さらに、無効な領域をアクセスしたというエラーを表示し、プログラムの誤りを早期に確実にユーザに伝える。
【0051】
また、メモリのデコード回路は、上位のアドレス信号線の接続を省略されて構成される場合がある。この場合、ターゲットでアドレスを間違えたプログラムを実行してもバスエラーにはならない。しかし、アクセスが書き込みであった場合、意図しないアドレスの内容を書き換えてしまい、後の実行結果が期待通りにならないことがある。この間違ったプログラムをRTLシミュレータで実行した場合、誤りを直ぐに発見することができない。しかし、シミュレータに正しいアドレスのみをアクセスできるよう、正確なマッピング情報を与えて実行させた場合、指定範囲以外のアドレスをアクセスしたことを即座に警告できる。しがたって、ユーザは間違ったプログラムを早期に検出することができ、無駄な解析時間を節約できる。このため、開発サイクルの短縮を図ることができる。
【0052】
なお、デバッガは、デバイス構成記憶部24とキャッシュ構成記憶部25内に格納されているデータを参照して、図9(b)に示すようなデバッガ起動オプションファイルを生成する。デバッガ起動オプションファイルを利用することにより、デバッガはコンフィグレーションに従った動作を行なうことが可能となる。
【0053】
また、デバッガは、シミュレータの統計情報を仮想的なレジスタ若しくは変数として読み出す手段を有することが望ましい。デバッガは、$profileという変数を特殊な変数として予約してある。統計情報は、領域毎に管理されている。この統計情報は、デバッガの変数読み出しコマンドprintによって表示される。例えば領域の3番目の情報を表示させるためには、print $profile[3]のように入力する。
【0054】
dbg> print$profile[3]
profile3:Count:7 Inst=123 Cycle=145
dbg>
さらに、言語ツールは、シミュレータ用のデバッグ用指令をアドレスと共にシンボルやソース行と同等なデバッグ情報として出力する手段を有することが望ましい(ターゲットの機械命令には反映されない)。コンパイラには、シミュレータ等で標準出力に途中結果等を出力するための拡張が施されている。#pragma cosoleoutに続く文は、ターゲットの機械語には翻訳されず、シンボル名や行番号と同様、デバッグ情報としてファイルに格納される。シミュレータは、デバッグ情報付きのオブジェクトファイルを読み込んだとき、#pragma文が定義されたアドレス情報を記憶すると共に、デバッグ出力情報であるprintf(“a=%d\n”,a)を記憶する。シミュレータが該当アドレスを実行しようとしたときに、デバッグ情報を出力しなければならないと判断し、printf文をパーサーに送りデバッグ情報を出力する。
【0055】
このように、ターゲットの機械命令に影響を与えずに、シミュレータ実行時にデバッグ情報を出力し、シミュレータの実行も中断せずに内容を確認することもできる。このとき、シミュレータ実行時に収集される統計情報は、ターゲットで実行されるものと同一の情報である。別の表現をすれば、ターゲットとシミュレータで同一のオブジェクトコードを用いることができることになる。したがって、実行環境の違いによる再コンパイルなどの時間が発生しなくなる分だけ開発サイクルを短縮できる。また、単一のオブジェクトファイルを共有できるため、管理が容易になることは明白である。
【0056】
func(int b){
float a;
for(I=1;I<20; i++){
A=b/I;
#pragma consoleout printf(“a=%d\n”,a);
}
(コンパイラカスタマイズ部の構成)
コンパイラカスタマイズ部43は、オプション情報記憶部23とユーザ定義モジュール・ユーザ定義命令記憶部3内に格納されたデータを参照して、機械命令関数宣言を含む、図9(c)に示すような機械命令関数宣言ヘッダファイルを生成する。なお、ここでいう機械命令関数宣言とは、プロセッサ固有の命令を高級言語から直接指定するために、プロセッサ固有の命令を高級言語の関数宣言として記述したものである。
【0057】
図10は、コンパイラカスタマイズ部43の一実施例を示している。図10において、機械命令関数宣言抽出部43cは、ユーザ定義モジュール・ユーザ定義命令記憶部3内に格納されたユーザ定義命令を参照して、対応する機械命令関数宣言を抽出する。また、結合処理部43dは、オプション情報記憶部23内に格納されたデータを参照して、既定義のテンプレート43bから有効なオプション命令に対応する機械命令関数宣言を選択する。さらに、結合処理部43dは、前記テンプレート43bと機械命令関数宣言抽出部43cから供給される機械命令関数宣言を結合することにより、機械命令関数宣言ヘッダファイルを生成する。この機械命令関数宣言ヘッダファイルには、コンフィグレーションで有効になったオプション命令とユーザ定義命令に対応する機械命令関数宣言が含まれる。
【0058】
これにより、ユーザは、高級言語プログラムからコンフィグレーションで指定したオプション命令とユーザ定義命令を直接指定し、利用することが可能となる。
【0059】
さらに、コンパイラカスタマイズ部43は、オプション命令抽出部43aを有している。オプション命令抽出部43aは、オプション情報記憶部23内に格納されたデータを参照して、最適化に利用することができるオプション命令の情報を取得する。このオプション命令の情報に従って、コンパイラカスタマイズ部43は、コンパイラ起動時のオプションを指定するコンパイラ起動オプションファイル(図11(a)参照)を生成する。
【0060】
これにより、利用可能なオプション命令の情報をコンパイラの最適化に反映させることができる。また、コンパイラの関数ライブラリは、起動オプションファイルを使用してソースから再コンパイルされるので、利用可能なオプション命令を組み込んだライブラリを生成することができる。
【0061】
(アセンブラカスタマイズ部の構成)
アセンブラカスタマイズ部44は、利用可能なオプション命令とユーザ定義命令のニーモニックと命令形式の情報を組み込んでアセンブラを再構築する。このアセンブラカスタマイズ部44によれば、利用可能な全ての命令の組み合わせからなるアセンブラプログラムについて、対応するオブジェクトコードを生成することができる。
【0062】
(検証ベクトル生成部の構成)
検証ベクトル生成部45は、設定ファイル生成部2内の各記憶部内で指定されたコンフィグレーションを参照して、指定されたシステムLSIの構成を検証する検証ベクトルを生成する。ここで、システムLSIの規模が大きい場合、限られた時間内で検証を終えるため、基本となる構成から変更された部分を重点的に検証することが必要となる。そこで、指定されたオプション命令や指定されたサイズのキャッシュ等を重点的に検証するように、検証ベクトルは、命令セット記述に基づいて、各命令に対応する検証ベクトル郡を生成することが望ましい(図11(b)は検証ベクトル生成用のユーザ定義命令ファイルの一例を示す)。
【0063】
次に、本実施形態について、さらに具体的に説明する。
【0064】
本実施形態の環境は、プロセッサの命令動作を記述したコンフィグレーション指定ファイル(アーキテクチャDBファイル)から、RTL、コンパイラ、アセンブラ、シミュレータ、検証ベクトル、デバッガが自動的に構築される。このコンフィグレーション指定ファイルは、予め複数定義されているアーキテクチャの中の1つを指定する記述(アーキテクチャ型の指定)を含む。ここで言う、アーキテクチャ型の例としては、VLIWモードで実行されること(特定のパイプ(VLIWスロット)で実行されること)、DSP命令を含む。このアーキテクチャ型の指定に基づいて、コンパイラの命令スケジューリング、及びVLIWの並列化機能が制御される。また、命令セット・シミュレータにおける性能見積値が調整させる。この環境を用いることにより、ユーザはアプリケーションに応じて、独自に命令を定義することができる。このユーザが定義した命令をユーザ定義命令と呼ぶ。また、高水準言語によりプログラムを作成し、そのプログラムの性能をシミュレータを用いて評価することが可能となる。
【0065】
さらに、基本的な構成要素として、ユーザ定義命令に対して、機械命令関数の環境が自動的に構築される。機械命令関数を用いることにより、コンパイラの持つ機能、例えば命令スケジューリング、VLIWの並列化、レジスタ割付等を使用することが可能となる。
【0066】
以下、各実施形態において、具体的に説明する。
【0067】
(第1の実施形態)
図12は、本発明の第1の実施形態を示している。図12は、図1に示すシステムLSI開発環境生成部3のプログラム構成を概略的に示しており、ほぼ図5に示す構成と同様である。
【0068】
設定ファイル生成部2から供給されるアーキテクチャDBファイルとしてのコンフィグレーション指定ファイルは、コマンドインタープリタに供給される。コマンドインタープリタは、ユーザが指定するコマンドを解析し、解析したコマンドの内容に応じて、例えばRTL生成部、シミュレータ生成部、コンパイラカスタマイズ部、アセンブラカスタマイズ部、検証ベクトル生成部、デバッガ生成部の実行順序を制御する。実行方式としては、予め一連の処理を登録しておき、これら処理を連続して実行させるバッチ処理や、会話型処理等が選択可能とされている。ユーザが指定するコマンドは、例えばGUI(Graphical User Interface)、或はCUI(Character Base User Interface)等を用いて入力される。
【0069】
図13は、アーキテクチャDBファイルとしてのコンフィグレーション指定ファイルの一例を示している。コンフィグレーション指定ファイルには、例えばプロセッサの指定、レジスタ定義、命令定義等が記述可能とされている。プロセッサの指定には、例えばプロセッサの名前、及びタイプが記述可能とされている。図13において、プロセッサは、アーキテクチャ型としてタイプ(2_WAY_VLIW)が記述されている。つまり、予め定義されているアーキテクチャのうち、2−WAYのVLIWを選択することを表している。
【0070】
また、命令定義は、命令のニーモニック、ビットパターン、及び動作記述からなる。ここで、ビットパターンは、オペコード及びオペランドのビット情報を含む。
【0071】
動作記述は、通常のプログラムの動作記述の他、ビット分割、ビット結合、サイン/ゼロ拡張、オーバーフロー動作などを記述することができる。また、SWAP動作等を実現するために必要な一時変数を使用することもできる。
【0072】
尚、図13には、一部のみを記載している。
【0073】
第1の実施形態によれば、コマンドインタープリタにより、解析したコマンドの内容に応じて、RTL生成部、シミュレータ生成部、コンパイラカスタマイズ部、アセンブラカスタマイズ部、検証ベクトル生成部、デバッガ生成部の実行順序が制御される。このため、ユーザは、開発環境の生成順序を任意に設定することができる。したがって、アプリケーションの開発順序に応じて任意に開発環境を生成することができる。
【0074】
(第2の実施形態)
第2の実施形態は、前記レジスタ定義部に関する。
【0075】
図14は、図13に示すレジスタ定義部の記載例を具体的に示している。レジスタ定義部には、汎用レジスタの個数、コンパイラのレジスタ使用法(関数の戻り値用レジスタ、引数用レジスタ、関数コールによりコールされた関数に引き継がれるレジスタ、関数コールによりコールされた関数に引き継がれないレジスタ、スタックポインタ用レジスタ、グローバルポインタ用レジスタ、タイニーボインタ用レジスタ、0レジスタ等)、汎用レジスタの別名定義、及び制御レジスタ定義を指定する。レジスタ使用法は省略可能であり、省略した場合、デフォルトの使用法が適用されたコンパイラが生成される。
【0076】
図14において、汎用レジスタの数GPRは16個、コンパイラのレジスタの使い方として、関数の戻り値用レジスタRETはレジスタ0、関数引数用レジスタARGはレジスタ1、2、3、4、ゼロ専用レジスタZEROはレジスタ12、スタックポインタレジスタSPはレジスタ15と定義されている。また、制御レジスタとしてリンクポインタLPが定義されている。
【0077】
別名(alias)定義において、レジスタの別名を定義することができる。別名を必要としない場合は省略する。別名定義を利用することで、ユーザが直接アセンブリコードを記述する場合、自分の好みに合わせて記述することかできる。例えばスタックポインタSPに対応するレジスタがレジスタ15である場合、レジスタ15の別名としてSPを定義したとする。すると、アセンブリコード内でSPと記述すると、アセンブラはSPをレジスタ15と認識することができる。
【0078】
また、レジスタ数が少ない場合、一部の特殊使用レジスタ、例えばタイニーポインタ用レジスタTP(図示せず)を汎用レジスタとして扱う場合がある。このとき、このレジスタをタイニーポインタとして使用する場合、“TP”と記述し、このレジスタを汎用レジスタとして使用する場合は、レジスタ番号を記述する。このように記述すればアセンブリコードにより、このレジスタがタイニーポインタとして使用されているのか、汎用レジスタとして使用されているかを区別することができる。したがって、保守性の高いアセンブリコードを構築できる。
【0079】
上記コンフィグレーション指定ファイルに記述された情報に基づき、コンパイラ、アセンブラ、シミュレータ、デバッガ、検証ベクトル等がカスタマイズされる。すなわち、図12に示すように、コンパイラカスタマイズ部にはレジスタの使用法及びレジスタの別名が供給され、アセンブラカスタマイズ部にはレジスタ名とレジスタの別名、RTL生成部、シミュレータカスタマイズ部、検証ベクトル生成部、デバッガ生成部にはレジスタ名が渡される。
【0080】
例えばコンパイラカスタマイズ部は、レジスタ定義部内で定義された汎用レジスタと制御レジスタの情報を元に、コンパイラを生成する。このコンパイラは各レジスタに直接アクセスすることが可能なレジスタ擬似変数の定義を有している。このレジスタ擬似変数を用いることにより、ユーザは高水準言語でプロセッサの持つ各レジスタに直接アクセスすることができる。
【0081】
また、コンフィグレーション指定ファイルにおいて、アキュムレータ及びシフトアマウントレジスタを定義することも可能である。
【0082】
図15は、アキュムレータの定義の一例を示している。この例は、256bitのアキュムレータが2個有ることを示している。
【0083】
図16は、シフトアマウントレジスタの定義の一例を示している。この例は、シフトアマウントレジスタが2本あることを示している。
【0084】
上記第2の実施形態によれば、ユーザはアプリケーションに合わせてコンパイラのレジスタの使い方を変更することができる。例えば、アプリケーション内で頻繁に即値“0”を使う場合、常に“0”を値とするレジスタを用意することにより、即値“0”を作るための命令を生成する必要がなくなる。このため、コードサイズ、及び実行性能をともに向上することができる。
【0085】
また、アプリケーション内で即値“0”をあまり使わない場合、常に“0”を値とするレジスタを用意しないことにより、他の用途のためのレジスタ数を増加できる。このため、レジスタ不足によるメモリアクセスの頻度を低減でき、コードサイズ及び実行性能をともに向上することができる。
【0086】
さらに、レジスタ定義は、デフォルトを有し、ユーザがレジスタの使用法を省略した場合、デフォルトの使用法が設定される。このように、コンパイラのデフォルトの使用法を採用したとき、ユーザはアプリケーションの性能を計測することができる。この計測した性能を参考とすることにより,より良いレジスタ使用法を指定可能となる。
【0087】
また、コンパイラはレジスタ擬似変数の定義を有している。このため、ユーザはレジスタ定義に記述したすべてのレジスタに高水準言語内でアクセスするためのレジスタ擬似変数を使用することが可能になる。このレジスタ擬似変数は、高水準言語内で制御レジスタ等の特別なレジスタにアクセスする場合に有益であり、コンパイラのインラインアセンブル機能とあわせて利用することも考えられる。したがって、全てのレジスタのレジスタ擬似変数を用意する機能は効果があると言える。
【0088】
さらに、レジスタ定義部は別名定義を有し、ユーザの好みに合わせてレジスタ名を定義することができる。したがって、使い勝手がよく、保守性の高いアセンブリコードを構築できる。
【0089】
(第3の実施形態)
次に、本発明の第3の実施形態について説明する。第3の実施形態はVLIWに関する。
【0090】
VLIWに関する命令の動作定義は、コンフィグレーション指定ファイル内の命令定義部で行なう。命令定義部には命令の仕様、オペランド(OP)コード、及び動作内容を記述する。命令の仕様、及びOPコードの情報に基づき、アセンブラの動作を定義するアセンブラ定義ファイルを生成する。また、動作内容の定義に基づき、命令の仕様定義に記述されていない命令を動作させる際、データの読み込みや書き込みが必要なレジスタの情報を集め、機械命令関数定義に適用する。これにより、コンパイラはより良いレジスタ割付と命令スケジューリングが可能になる。
【0091】
コンフィグレーション指定ファイルには、コプロセッサに関しても定義することができる。すなわち、図7に示すプロセッサ2のように、例えばRISCコアのようなプロセッサコアに対して、コプロセッサが接続可能とされている。このコプロセッサとしては、例えばVLIW(Very Long Instruction Word)モード、DSP(Digital Signal Processor)がある。
【0092】
図17は、コプロセッサ定義の一例を示している。コア命令と区別するため、コプロセッサ定義であることを示す情報をアーキテクチャ型として持っている。すなわち、コプロセッサの名前、及びコプロセッサのタイプが記述される。この記述の後にコプロセッサ定義の関連情報として、レジスタ定義と命令定義を定義する。コプロセッサ定義の関連情報は、上記レジスタ定義と命令定義のほかに、VLIWモードの実装の有無(無し、2並列、3並列)、演算データ幅定義(コプロセッサ演算途中で保証されるデータの幅)を持っている。
【0093】
VLIWモードが実装される場合、コプロセッサ命令がVLIWモードのスロットのどこに入るべきかを表す情報(図17のV3)が命令セット定義に含まれる。このスロットの定義は、プロセッサの使用に依存して決定され、命令を並列化する際、どのスロットに入る命令であるかを示す情報となる。
【0094】
この情報を元にコプロセッサ命令に関する前記機械命令関数定義ファイルが生成される。前記コンパイラカスタマイズ部は、この機械命令関数定義ファイルに基づき、ユーザが定義したコプロセッサ命令を並列化することができる。また、アセンブラカスタマイズ部は、この機械命令関数定義ファイルに基づき、並列化が使用上正しいかどうかをチェックできるようになる。
【0095】
スロットの情報は、検証ベクトル生成部に供給される。検証ベクトル生成部は、スロットの情報に基づき、並列化した命令に対するプロセッサの動作を検証するために必要な検証ベクトルを生成する。
【0096】
演算定義幅情報は、命令の動作定義内に一時変数がある場合、あるいは符号拡張演算がある場合、その一時変数のビット幅と符号拡張後のビット幅をシミュレータが何ビットとして扱うかの情報である。この幅情報は、コプロセッサのレジスタ定義部内で定義されたレジスタのビット幅に依存する。例えば、コプロセッサのレジスタの演算幅が64ビットと指定された場合、演算定義幅情報は最大で64ビットまで指定することができるようになる。この演算定義幅情報はシミュレータカスタマイズ部に供給され、シミュレータに反映される。
【0097】
上記第3の実施形態によれば、ユーザは定義した全ての命令に対する機械命令関数の定義ファイルを持つことができる。このため、機械命令関数を使用することにより、ユーザはコンパイラのレジスタ割付、命令スケジューリング、VLIWの並列化機能を得ることができる。したがって、アプリケーションの開発上大変有益である。
【0098】
また、スロット定義は、命令を並列化する際、どのスロットに入る命令であるかを示す情報を有している。このため、機械命令関数のカスタマイズ、アセンブラのカスタマイズが可能となり、ユーザのアプリケーション開発を促進できる。
【0099】
さらに、命令を並列化する際に使うスロット定義の情報を機械命令関数定義に反映させている。このため、VLIWモードが実装されている場合、ユーザ定義のコプロセッサ命令を並列化する際、どのスロットに入る命令かを示す情報が機械命令関数定義に供給される。このため、コンパイラは機械命令関数に対して正しくVLIWの並列化を行なうことができる。機械命令関数は高水準言語内で使用することができるため、ユーザのアプリケーションの開発を促進できる。
【0100】
また、演算定義幅情報は、シミュレータに反映される。このため、シミュレータは命令の動作をプロセッサの仕様にあわせることができる。したがって、シミュレータの動作と実際のプロセッサの動作を一致させることができる。
【0101】
さらに、スロット情報はアセンブラに反映される。このため、アセンブラにおいて、ユーザが直接手で記述したアセンブリコード内における命令の並列化部分が、仕様通りであるかどうかをチェックすることができる。
【0102】
また、スロット情報は検証ベクトルに反映される。このため、並列化した命令に対するプロセッサの動作を検証するために必要な検証ベクトルを得ることができる。
【0103】
(第4の実施形態)
次に、本発明の第4の実施形態について説明する。第4の実施形態は、DSPに関する。
【0104】
DSPをユーザ定義モジュールとして組み込むための機能として、コンフィグレーション指定ファイルは、他のモジュールと区別するための識別子を持っている。この識別子内にDSP関連の定義が記述される。DSPの命令定義では、任意のビット幅の命令を定義することができる。また、レジスタ定義では任意のビット幅のレジスタを定義することができる。
【0105】
図18は、DSPモジュール用コンフィグレーション指定ファイルの例を示している。先頭にDSP_NAMEというアーキテクチャ区別用識別子が記述されている。また、レジスタ定義部<dsp_register>にレジスタ幅定義REG_WIDTHが付加されている。この例の場合、レジスタ幅が20bitsに設定されている。また、命令定義部<dsp_ISA>では20bitsの命令が定義されている。
【0106】
さらに、DSPモジュール用コンフィグレーション指定ファイルは、図示せぬ固定小数点ライブラリの小数点の位置を指定する情報を記述可能とされている。この情報は、コンパイラカスタマイズ部に供給され、コンパイラの固定小数点ライブラリに反映される。
【0107】
また、コンパイラのDSPに特化した機能を記述可能とされている。この機能は、例えば複素データ型、X/Yメモリ、循環バッファ、固定小数点データ型、ビット反転、異種レジスタセットの対応のうちの少なくとも1つである。
【0108】
上記第4の実施形態によれば、コンフィグレーション指定ファイルは、プロセッサがDSP型であり、ハードウェアの指定がDSP命令形式である記述を含んでいる。さらに、DSP命令形式において、命令のビット幅が設定可能とされている。このため、ユーザはアプリケーションの用途に合わせてフレキシブルに命令のビット幅を設定することができる。したがって、ユーザは要求性能にあったDSPを設定でき、不要なコストを削減することができる。
【0109】
また、DSP命令形式において、レジスタ幅が設定可能とされている。このため、ユーザはアプリケーションの用途に合わせて,フレキシブルにレジスタのビット幅を設定することができる。したがって、ユーザは要求性能にあったDSPを設定でき、不要なコストを削減することができる。
【0110】
さらに、コンパイラの固定小数点ライブラリは,一般に固定少数点の位置にフレキシブルに対応する。このため、性能が低下してしまう。しかし、本実施形態において、固定小数点ライブラリの小数点の位置を指定する情報は、コンパイラの固定小数点ライブラリに反映されるため、性能低下を防ぐことができる。
【0111】
また、ユーザはコンパイラのDSP向けに特化した機能を仕様することができる。このため、アプリケーションの開発期間を短縮できるとともに、アプリケーションの性能を向上できる。
【0112】
(第5の実施形態)
第5の実施形態は、SIMD(Single Instruction Multiple Data)に関する。第5の実施形態は、SIMDの複数データの処理を1つにまとめて記述し、この記述からシミュレータを生成したり、マルチメディア・データ型への対応を可能とする。
【0113】
すなわち、命令がSIMDデータを扱うことができる場合、コンフィグレーション指定ファイル内の命令定義部にSIMDデータを扱うことを示す情報が記述される。この情報としては、例えば命令が扱うデータ長と、各命令オペランドのデータ長である。この情報は、SIMDデータ幅を指定し、機械命令関数定義と高水準言語のSIMDデータ用拡張宣言子の生成に適用される。これにより、ユーザはSIMDデータを容易に扱うことが可能になる。次に、記述例を示す。
【0114】
CPPACK.B: CRo,CRq,CRp:
…
Cop:”SIMD=B,Pack=B:H:H”:
…
上記例は、“CPPACK.B”命令のデータ長が8ビットであることを示している。すなわち、レジスタが64ビットである場合、8並列であること、このレジスタ幅はレジスタ定義部内のコプロセッサレジスタ幅と同じであることを示している。“B”の他に“H”(half word 、すなわち、16ビット)、“W”(word、すなわち、32ビット)も指定可能とされている。さらに、“U”の有無に応じて符号無しと、符号付きのデータを区別する。例えば“BU”と記述した場合、8ビットの符号無しデータを示す。
【0115】
また、“Pack=B:H:H”という指定により、“CPPACK.B”命令のオペランド“CRo,CRq,CRp”がそれぞれ符号付き8ビット、符号付き16ビット、符号付き16ビットのデータであることを示している。
【0116】
図19は、SIMD命令における“CPADD.H”の命令定義の例を示している。この命令が定義されるコプロセッサのコプロセッサレジスタが例えば64ビット幅であるとする。この命令のデータ長は“SIMD=H”すなわち、符号付き16ビットである。換言すれば、この命令は、16ビット幅のデータを4並列で計算する。また、“PACK=H,H,H”により、この命令のオペランド“CRl,CRm,CRn”がそれぞれ符号付き16ビットのデータであることを示している。さらに、動作定義により、この命令が符号付き16ビットのデータの加算を4並列で行なうことを示している。これらの情報は、コンパイラカスタマイズ部、及びシミュレータカスタマイズ部に供給される。コンパイラカスタマイズ部では、これらの情報がコンパイラの高水準言語用拡張宣言子の生成、機械命令関数の生成、レジスタ割付、命令スケジューリング機能へ反映される。また、シミュレータカスタマイズ部では、これらの情報がシミュレートの動作、シミュレート結果の出力機能に反映される。
【0117】
図19に示す例は、符号付き16ビットのデータの加算を4並列で行なうSIMD命令の動作記述を4行で示している。しかし、この動作記述を1行で記述することが可能である。
【0118】
以下に、記述の例を示す。
【0119】
CRl.h=CRm.h+CRn.h; …(1)
上記例(1)において、“.h”は“PACK=H,H,H”に対応した記述である。
【0120】
図20は、上記1行による記述例を示している。
【0121】
“PACK”の記述が例えば“PACK=HU,B,BU”である場合、上記例(1)は次のように記述される。
【0122】
CRl.hu=CRm.b+CRn.bu; …(2)
図21は、上記1行による記述例を示している。
【0123】
さらに、指標(添え字)“i”を用いることにより、次に示すようなデータの並びが一致していない記述を簡略化できる。
【0124】
CRl[15:0] = CRm[63:48] + CRn[63:48];
CRl[31:16] = CRm[47:32] + CRn[47:32];
CRl[47:32] = CRm[31:16] + CRn[31:16];
CRl[63:48] = CRm[15:0] + CRn[15:0];
簡略化した記述例を次に示す。
【0125】
CRl[i]=CRm[3-i]+CR[3-i]; …(3)
例(3)の場合、指標“i”は、命令のデータ幅とコプロセッサレジスタのはばに依存する値をとる。“SIMD=H”、コプロセッサレジスタのデータ幅が64ビットの場合、指標“i”の値は0〜3となる。
【0126】
図22は、上記指標を用いた記述例を示している。
【0127】
上記第5の実施形態によれば、コンフィグレーション指定ファイルの命令定義部にSIMD命令に関する情報を記述している。このため、コンパレータカスタマイズ部は、SIMD命令に関する情報に基づき、SIMD命令を生成するための機械命令関数の定義ファイルを生成できる。機械命令関数は高水準言語内で使用することができるため、ユーザのアプリケーション開発を促進できる。
【0128】
また、高水準言語内でSIMDデータを宣言するための特殊な修飾詞を使用できる。このため、ユーザのアプリケーション開発を促進できる。
【0129】
さらに、シミュレータカスタマイズ部は、入力されたSIMD命令に関する情報に基づき、シミュレータの動作をカスタマイズする。このため、SIMD命令に対して正しく動作するシミュレータを生成することができる。
【0130】
また、シミュレータカスタマイズ部は、入力されたSIMD命令に関する情報に基づき、シミュレータの結果出力機能をカスタマイズする。このため、SIMD命令に対して解析し易いシミュレータの出力結果を生成することができる。
【0131】
さらに、SIMD命令の動作記述は、複数命令をまとめて1命令で記述したり、指標を用いて記述することができる。このため、SIMD命令の命令動作の記述を簡略化することができる。したがって、SIMD命令の命令動作の記述を、ユーザにとって、直感的に分かり易い記述とすることができる。
【0132】
(第6の実施形態)
第6の実施形態は、命令ライブラリに関する。
【0133】
ユーザは、コンフィグレーション指定ファイルの仕様に合った命令を追加することが可能である。本システムLS1開発環境生成システムは、定義済みの命令を保持し、ライブラリ化している。これを以下、命令ライブラリと称す。この命令ライブラリは、命令の種類毎にグループ化されている。ユーザは命令ライブラリから必要な命令を選択することにより、アプリケーションに特化した開発環境を生成することができる。
【0134】
図23は、SIMD命令ライブラリの例を示している。SIMD命令ライブラリにおけるこれら命令はオプションであり、これに対するコンフィグレーション指定ファイルと、RTLは、基本命令とは別に予め用意されている。ユーザは、これら命令の全部、あるいは特定のデータ型の命令を選んで使用することができる。
【0135】
図23において、“.xx”には、命令が用いるデータ型としてニーモニック“UB,B,UH,H,UW,W”のいずれかが記述される。この記述は、ユーザにより選択可能とされている。また、図23に示すように、ニーモニックの記述を省略することも可能である。ニーモニックが“UB,B,UH,H,UW,W”のいずれかに固定されている場合、例えば次のように明示することも可能である。この例はニーモニックが“H”に固定されている。
【0136】
CPADD.H //2-operand 32bit addition (A<-A+B)
上記のように記述された場合でも、ニーモニックの記述を変更すれば、その変更に対応することが可能である。
【0137】
図24は、命令ライブラリからコンパイラ等のツールを生成する方法を示している。ユーザが命令ライブラリの命令を使用する場合、例えば複数の命令ライブラリADB1、ADB2から該当する中間ファイルIF1、IF2が生成される。この中間ファイルIF1、IF2は、基本命令の中間ファイルIF3とマージされる。このマージされた中間ファイルをコンパイラ等に組み込むことにより、全体の環境が構築される。
【0138】
上記例は、各命令ライブラリからそれぞれ中間ファイルを生成し、これら中間ファイルをマージした。しかし、中間ファイルの生成は省略可能であり、各命令ライブラリから選択した必要な命令を直接マージしてもよい。
【0139】
また、指定された命令ライブラリの命令の機能を失うことなく、ユーザが要求するアプリケーションに対して最適なスケジューリング性能を得ることができるよう、命令にタイプを割当てる機能を設定しても良い。
【0140】
さらに、例えばコアプロセッサとコプロセッサとの間のデータ転送命令はコプロセッサを定義する際、必ず必要となる。このように、メインとなる命令に必ず付随する命令を自動的にマージするように設定すれば、コンパイラが高水準言語のソースレベルから命令ライブラリの命令を効率よく生成できる。このため、命令ライブラリ内に予約命令を記述してもよい。
【0141】
さらに、上記例は、マージしたファイルをコンパイラに反映させる場合について説明した。しかし、これに限らず、マージしたファイルをRTL生成部に供給することにより、指定された命令ライブラリの命令の機能を失うことなく、サイズ優先でRTLテンプレートを生成することも可能である。このような構成とすることにより、アプリケーションの性能を維持して、生成されるRTLのサイズを最小とすることができる。したがって、チップサイズの増大を抑えることができ、コストを低減できる。
【0142】
また、指定された命令ライブラリの命令の機能を失うことなく、性能優先でRTLテンプレートを生成することも可能である。このような構成とすることにより、アプリケーションのレイテンシを小さくできるなど、性能を向上することができる。
【0143】
上記第6の実施形態によれば、命令ライブラリに記述された命令が扱うデータ型をアプリケーションに対応して設定可能とされている。このため、アプリケーションに適した命令を有するプロセッサを開発することが可能となる。
【0144】
また、命令ライブラリに記述された命令のデータ型が決められている場合においても、データ型を変更することができる。このため、アプリケーションに適した命令に変更することが可能となる。
【0145】
さらに、複数の命令ライブラリから必要な命令を選択し、これら選択した命令をマージすることにより、一つのプロセッサの設定が可能となる。このため、よりアプリケーションの性質に適したプロセッサの生成が可能となる。
【0146】
(第7の実施形態)
第7の実施形態は、コンフィグレーション指定ファイル内の高位な動作記述について説明する。
【0147】
コンフィグレーション指定ファイル内の高位な動作記述は、ほぼC言語の「文」に相当する記述が可能である。しかし、“!!”(ビット連結)、“[]”(部分ビット切り出し)、論理演算子がC言語と異なる。さらに、本実施形態の高位な動作記述は、式の左辺にビット連結が書けるという特徴を有している。また、本実施形態の高位な動作記述は、クロックの概念は含まず、命令実行前のレジスタやメモリの値と、命令実行後のレジスタやメモリの値の関係を記述したものである。
【0148】
以下に、本実施形態における高位な動作記述の相違や制約を示す。
【0149】
・データ型は存在しない。
【0150】
・使える変数の規則がある。
【0151】
・ビット定数が書ける。
【0152】
・!!をビット連結を示す。
【0153】
・[msb:lsb]は部分ビット切り出しを示す。
【0154】
・and,or,xor,nor,nandはビット論理演算子を示す。
【0155】
・(Signed),(Unsigned)はキャスト演算子を示す。
【0156】
・ストア演算ではMem Word()などの関数が左辺に書ける。
【0157】
(変数として使えるもの)
・オペランド変数
・レジスタ変数
・一時変数
(オペランド変数)
オペランド変数は、命令定義のオペランド(<オペランド>)に記述されるものであり、次のような記述ができる。
【0158】
<レジスタ指定>
<(abs)型><(abs)型>
<disp型><disp()型>
<cpx>(実数部)(虚数部) …複素数
<int> …整数
<flt> …浮動小数点
<即値型>
これらは、直前のオペランドに記述された命令の仕様と、レジスタのパラメータを表すアルファベット、及び指定子のビット幅が一致していなければならない。
【0159】
(レジスタ変数)
レジスタ変数はオペランド変数以外のレジスタであり、次のような記述が可能である。
【0160】
・特定表記(名前指定、数値でのインデックス表記)
例:PC,SRRO,CCR3
・配列指定
例:識別文字列+‘[’式‘]’
例:CTR[Imm4]
注1:識別文字列+インデックス+‘[’数値‘]’は、部分ビット切り出しとなる。
【0161】
例:CTRn[4]は部分ビット。CTR[4]はCTR4と同じ。CTR[Rn][3:0]なども記述可能。
【0162】
注2:不定表記(パラメータによるインデックス表記、Rmなど)はオペランド変数に分類する。オペランド変数以外の不定表記はエラーとする。
【0163】
(一時変数)
一時変数は、オペランド変数、レジスタ変数でない変数を一時変数という。一時変数の名前には次のものが使える。
【0164】
・C言語の変数名の名前付け規則に合うもの。
【0165】
・定義済みレジスタ名に重複しないもの。
【0166】
・オペランド変数の各指定子のprefixで始まらないもの。
【0167】
abs-,imm-,Imm-,disp-,code-,target-で始まらないもの。
【0168】
(定数):
Verilog と同じく、ss…s’fnn…nとする。ss…sビット数を示す。ビット数が省略された場合は32bitとする。fは基数。D:10進、h:16進、o:8進、b:2進、これらの記述が省略された場合は10進とする。nn…nは定数値。定数値がビット数に足りないときは上位ビットを0で補う。定数値がビット数より大い場合、ビット数を無視する。nn…nの中で区切り文字‘_’を使用することはできない。基数および定数値には大文字のアルファベットも使用できる。
【0169】
例:
3’b001:3ビットの2進数
32’Hff:32ビットの16進数(上位ビットは0拡張される)
‘o1234:32ビットの16進数(ビット数を省略、32‘o1234と同じ)
1:32ビットの10進数(ビット数及び基数を省略、32‘d1と同じ)
10’5:10ビットの10進数(基数を省略、10’d5と同じ)
(補足)
次のようなことが記述できる。
【0170】
a=b=c+d;
・関数呼出も書ける。
【0171】
・左辺に関数呼出が書ける。
【0172】
MemWord(Rn)=a;
CTR[Imm4]=b;
・連接演算子
!! : ビット連接
・部分ビット切り出し
[msb:lsb]で指定
・予約関数名
メモリアクセス関数
MemWord
MemDoubleWord
MemByte
MemHWord
MemDefaultSize
ControlBus
・ビット拡張関数
SignExtension
ZeroExtension
・条件判定関数
Overflow
(左辺連結)
・左辺にビット連結を書く場合は、全体を()で括る。
【0173】
(HI!!LO)=Rn*Rm;
(SIMD記述)
第5の実施形態を参照。
【0174】
(エラーチェック機能)
エラーチェック機能の代表的なものを示す。
【0175】
(1)オペコードの重複チェック
(2)命令形式毎に定まっている、レジスタ・オペランドのRO/RWと動作記述の整合性
(3)SIMD記述、Pack記述と動作記述の整合性:SIMD,Packで指定したデータ幅に相当する動作記述がない場合、ワーニングを出力する。具体的には、SIMD/Packで指定されたデータ幅毎に動作記述を調べ、それぞれ以下のビット幅の部分ビット参照/代入が存在しない場合にワーニングを出す。データ幅とビット幅の関係を以下に示す。
【0176】
データ幅 ビット幅(msb-lsb+1)
B,UB 8
H,UH 16
W,UW 32
A 8,16,32
(4)値未定義の一時変数の参照
動作記述中で、一時変数が最初に登場した式が右辺にある場合、ワー二ングを出力する。
【0177】
(5)値を定義した一時変数が参照されていない場合、ワー二ングを出力する。
【0178】
図25は、コンフィグレーション指定ファイル内の命令セット定義部の例を示している。この例は、LW命令とSWAP命令の定義を示している。LW命令の動作記述({}で囲まれた部分)において、“Rn”はレジスタ指定のオペランド変数、“disp8”はdisp型のオペランド変数、“SP”はレジスタ変数である。“ZeroExtension”及び“MemWord”はそれぞれビット拡張とメモリアクセスを行なう予約関数である。また,SWAP命令における“tmp1”と“tmp2”は一時変数である。
【0179】
上記第7の実施形態によれば、コンフィグレーション指定ファイル内の命令動作記述に高位な記述が可能とされている。このため、新たな命令の追加が容易であり、且つ既存の命令を容易に解析できる。したがって、命令の改良、保守を容易に行なうことができ、ユーザのアプリケーション開発を促進できる。
【0180】
(第8の実施形態)
第8の実施形態は、パイプライン記述に関する。
【0181】
下記のパイプライン記述から、コンパイラのスケジューリングのための情報、およびハザード検証ベクトルを自動生成のための情報が生成される。
【0182】
パイプライン記述は、「パイプラインタイプ定義」及び「ハザード情報」の2つを含む。
【0183】
(1)パイプラインタイプ定義
パイプラインタイプ定義に関する書式は以下の通りである。
【0184】
PTYPE:<タイプ名>:<リソース>,<操作>,<タイミング>,<引数>[:<リソース>,<操作>,<タイミング>,<引数>:....];
各PTYPE行には、“<リソース>,<操作>,<タイミング>,<引数>”の四つの変数が最低1つ必要である。四つの変数は、“:”で区切って任意の数だけ続けて記述できる。
【0185】
PTYPE行における四つの変数の意味は次の通りである。すなわち、リソースはレジスタなどを示し、操作はリード/ライト等を示し、タイミングはパイプラインのステージを示している。引数は、オペランド(レジスタ等)に対する指標である。つまり、PTYPE行はリソースに対する、操作が、パイプラインのステージにて生じることを表している。
【0186】
図26は、PTYPE行の記述例を示している。
【0187】
(2)ハザード情報
ハザード情報の書式は以下の通りである。
【0188】
HAZARD:<リソース>:<動作1>(タイプ名1),<動作2>(タイプ名2)=<サイクル数>;
リソースにおいて、タイプ1の先行命令が動作1を行い、タイプ2の後続の命令が動作2を行った場合のストール数を表す。
【0189】
図27は、ハザード情報の記述例を示している。このハザード情報の場合、あるコプロセッサの汎用レジスタにパイプラインタイプ“pt1”の命令で書き込みが行なわれた後、パイプラインタイプ“pt2”の命令で同じレジスタを読み出す場合、2サイクル待たなければならない。
【0190】
ハザード情報と、各命令に指定されたパイプライン定義により、ハザードが発生する命令列をシミュレータ上で実行した際のストール数が決まる。
【0191】
例えば、図28は、命令“cinst1”がパイプラインタイプ“pt1”、 命令“cinst1”がパイプラインタイプ“pt2”である場合の動作を示している。
【0192】
図27に示すハザード情報の場合、あるコプロセッサの汎用レジスタにパイプラインタイプ“pt1”の命令で書き込みが行なわれた後、パイプラインタイプ“pt2”の命令で同じレジスタを読み出す場合、2サイクル待たなければならない。図28に示す例の場合、ステージ“t”において命令“cinst1”でコプロセッサの汎用レジスタ“$cr1”に書き込みが行なわれた後、1サイクル待った後、命令“cinst2”で同じレジスタの読み出しを行なおうとしている。このような場合、シミュレータで命令“cinst2”は1サイクルストールすることになる。
【0193】
(コンパイラのためのスケジューリング情報)
図29は、コンパイラのためのスケジューリング情報の例を示す。
【0194】
図29に示す例は、PTYPE1の命令の直後のPTYPE2の命令は3サイクルストールし、PTYPE2の命令の直後のPTYPE3の命令は4サイクルストールすることを示している。この情報から、コンパイラは、極力PTYPE1とPTYPE2の間に3命令空くようにスケジューリングし、PTYPE1とPTYPE3の間に4命令空くようにスケジューリングする。
【0195】
(ハザード検証ベクトル生成のためのパイプライン動作記述)
図30は、パイプライン動作記述の例を示している。
【0196】
この動作記述は、パイプライン定義と明示的なストールの指定からなる。この記述及びこれからの検証ベクトルの生成の詳細については、省略する。
【0197】
上記第8の実施形態によれば、コンフィグレーション指定ファイルは、パイプライン定義の記述を含めることができる。このため、パイプラインを構築することができる。また、パイプライン定義には、パイプラインタイプの定義、及びハザード情報を含めることができる。
【0198】
また、コンフィグレーション指定ファイルは、パイプラインに関してコンパイラのためのスケジューリング情報を含めることができる。このため、コンパイラはスケジューリング情報に基づきパイプラインの動作をスケジューリングできる。
【0199】
さらに、コンフィグレーション指定ファイルは、パイプラインに関してハザード検証ベクトル生成のための記述を含めることができる。このため、パイプラインのハザードを確実に検証することが可能となる。
【0200】
(第9の実施形態)
第9の実施形態は、RTLの合成に関する。
【0201】
図31は、図6に示すRTL生成部におけるユーザ定義モジュールの高位合成を示している。すなわち、図31に示すユーザカスタム命令の高位合成は、通常のハードウェアリソース割り当てとスケジューリングの他、コア部及び制御パスとメモリとのインターフェース(I/F)の整合及び生成を行なう。
【0202】
図32は、ユーザカスタム命令の合成における、インターフェースの整合方法を示している。図31に示す高位合成により命令本体のRTLが生成される。この場合、命令本体部分とコア部との間に別途インターフェース回路を生成する。コア部とインターフェース回路間の接続は、入出力のレジスタ・フィールドの信号、16bitのオペランド信号、ストール信号により表現される。命令本体は、このインターフェース回路から呼び出される形式で記述される。命令本体とインターフェース回路の間の接続は、moduleの引数で表現される。
【0203】
上記第9の実施形態によれば、通常のハードウェアリソース割り当てとスケジューリング、さらに、コア部及び制御パスとメモリとのインターフェースを整合することにより、ユーザカスタム命令の高位合成を行なうことができる。
【0204】
(第10の実施形態)
第10の実施形態は、検証ベクトル生成に関する。
【0205】
ここでは、前述したコンフィグレーション指定ファイルからアーキテクチャ検証プログラム(AVP:Architecture Verification Program)の生成用データを生成する方法について説明する。
【0206】
(AVP生成に必要なデータ)
ここでは、特にプロセッサの命令単体の機能を検証するための、検証プログラムをAVPと呼ぶ。このAVP生成するためにISA情報を使用する。ISA情報には以下に述べるデータが必要である。
【0207】
・ニーモニック
・オペランド並び
・オペランド情報
・ オペランドの種類(レジスタ/即値)
・ オペランドのビット幅
・ オペランドがレジスタの場合、参照/代入の有無
(ISA情報の生成方法)
ISA情報をアーキテクチャデータベースファイルから生成する方法について説明する。レジスタ定義部にはレジスタ種類毎にレジスタの数、レジスタのビット幅等が定義されている。命令定義部は、ニーモニック、オペランド並び、及び命令動作定義部等から構成されている。命令動作定義部は、前記オペランド並びに表れるオペランド、レジスタ並びには現れないレジスタ、一時変数、定数等を使用した文を記述することにより命令動作を定義する。
【0208】
図33は、例えば命令CPXOR3に関する命令定義を示している。命令CPXOR3は、レジスタオペランドとして、CRo,CRq,CRpを記述する必要があることを表している。レジスタ名はレジスタの種類によってその接頭語が違っており、“CR”で始まるレジスタはコプロセッサの汎用レジスタを表す。‘{’と‘}’で囲われた部分は命令動作記述部である。この例の場合、2つのコプロセッサ汎用レジスタCRp,CRqのビット毎の排他的論理和を計算した結果をCRoへ代入する命令であることが判る。
【0209】
前述した通り、命令定義部はニーモニックの情報及びオペランド並びの情報を有している。これらの情報は、直接ISA情報のニーモニックの情報及びオペランド並びの情報となる。オペランド並びには、オペランド名のリストが記される。オペランド名のうち、Imm*,Imm*は即値であり、それ以外はレジスタである。この規則を使用することにより、各オペランドの種類をオペランド並びから取得することができる。
【0210】
各オペランドの情報は以下のように取得する。オペランドがレジスタの場合、レジスタ定義情報からレジスタのビット幅を取得する。オペランドが即値の場合、オペランドコードから即値のビット幅を取得する。具体的には、オペランドコードの文字列のうち、‘i’の個数が即値のビット幅となる。
【0211】
オペランドがレジスタの場合、オペランドの参照/代入の有無は、命令動作記述の構文を解析することにより取得する。
【0212】
上記方法をプログラムで実装することにより、図33に示す命令定義部、及び図14に示すレジスタ情報から、自動的に図34に示すISA情報を作成することができる。
【0213】
(データの使用方法)
ISA情報は、アセンブラにより記述される検証プログラムを生成するために使用される。まず、ニーモニック及びオペランド並びは、検証プログラム中の検査対象命令コードを生成する目的で使用する。各オペランドのオペランド情報は下記の目的のために使用される。
【0214】
オペランドが即値オペランドの場合、ビット幅の情報を用いて検査用の即値データを生成する。オペランドがレジスタオペランドでありそのレジスタの値が参照される場合、ビット幅の情報などからレジスタに与える値を生成する。この生成した値からレジスタに設定するコードを生成する。値を生成する方法は幾つか有る。
【0215】
第1の方法は、設定可能なビット幅(符号を含めた数値)の中でランダムに値を生成する方法。
【0216】
第2の方法は、入力の設定可能な領域(2入力なら2次元平面上の領域)を求め、その領域を順次細分化する。この細分化された領域の重心座標を入力値とする方法。
【0217】
第2の方法により、領域の点を確実に選択することができる。また境界上および境界付近の点を重点的に入力データとして生成することにより、境界条件の検査をすることが可能となる。
【0218】
ISA情報から個々の命令動作を検証するための検証プログラムを生成する方法の詳細に関しては、説明の都合上省略する。
【0219】
オペランドがレジスタオペランドであり、そのレジスタへ値が代入される場合、レジスタに代入された命令の演算結果をログファイルへ出力するコードを生成する。図34に示すISA情報から、図35に示す検証プログラムを自動生成する。
【0220】
上記第10の実施形態によれば、検証ベクトル生成部は、前記コンフィグレーション指定ファイルの動作命令からプロセッサの検証ベクトルを生成することができる。このため、プロセッサの動作を確実に検証することが可能となり、ユーザのLSI開発に寄与できる。
【0221】
(第11の実施形態)
第11の実施形態は、シミュレータの生成に関する。
【0222】
ここでは、コンフィグレーション指定ファイルからシミュレータを生成する方法について説明する。
【0223】
図36は、前記シミュレータ生成部の動作を概略的に示している。シミュレータ生成部は、コンフィグレーション指定ファイルと予め用意したC++モデルテンプレートに基づき、シミュレータを生成する。すなわち、シミュレータ生成部は、C++モデルテンプレートに必要な情報を組み込むことにより、シミュレータのメイン部、シミュレータのデコードテーブル及び命令定義部を生成する。メイン部は、コンフィグレーション指定ファイルのヘッダ部とレジスタ宣言部に基づき生成される。デコードテーブルと命令定義部は、コンフィグレーション指定ファイルのISA部に基づき生成される。
【0224】
ここで、デコードテーブルとは、プログラム中のコード部のビットパターンを、命令列に変換するための変換テーブルである。また、C++モデルテンプレートとは、シミュレータのC++ソースコードを生成するためのテンプレートであり、シミュレータ生成部が必要な情報をこのテンプレートに代入することにより、C++モデルが生成される。
【0225】
メイン部には、利用可能な命令フォーマットや、汎用レジスタや制御レジスタの数及びサイズ、命令間ハザードというようなシミュレータ全体に関する情報が格納されている。
【0226】
デコードテーブルは、コンフィグレーション指定ファイルのISA部の各命令定義のオペコード部を格納している。シミュレー夕における命令デコードは、このテーブルのオペレーションコード部分と、命令のオペレーションコード部とを比較し、命令を識別することにより生成される。
【0227】
命令定義部は、主にコンフィグレーション指定ファイルの動作記述をこれと等価な動作のC++記述に変換することにより生成される。また、命令定義部には、パイプラインのタイプ、トレース出力のフォーマット、即値オペランドの符号拡張の有無、コアプロセッサのレジスタとコプロセッサのレジスタ間においてデータを転送する場合における転送方向などの情報も付加される。
【0228】
転送方向の情報を付加する方法は、以下の通りである。
【0229】
転送方向の情報は、各命令定義に対する属性の1つとして定義されている。シミュレータ生成部のコプロセッサ・モデルファイル(=mkcopの入力)では、以下のように記述される
{name =>‘ICMOV’,
cname =>‘CMOV_1’,
instType =>‘t64c_al’,
instSubType=>‘core_cop’, #<=コプロ汎用レジスタからコア汎用レジスタへ転送
regsbit =>‘true’,
opcodeA =>‘0xf’,
opcodeB =>‘0x0’,
opcodeC =>‘0x0’,
opcodeD =>‘0x1’,
func=>‘
#動作記述
‘,
},
動作記述は,基本的に変数をC++変数へ変換し、演算子をこれと等価なC++演算子に1対1に変換して生成する。レジスタやメモリの読み書きや予約関数は、予め用意したシミュレータのAPI関数を呼び出して生成する。
【0230】
C++にない一部の表現については、C++への変換を行なう前に動作記述を変換する。例えば式の左辺に記載したビット連結は以下のように変換する。
【0231】
(変換前)
(A!!B)=Expression;
(変換後)
TMP=Expression;
B=TMP[(B最上位・B最下位・1):0];
A=TMP[(A最上位+B最上位・1):(B最上位・B最下位)];
(TMPは一時変数)
またSIMD表記に関しては、第5の実施形態において説明したように展開する。
【0232】
トレース出力には、その命令動作によって値が書き込まれるレジスタを出力する。レジスタヘの書き込みの有無は、そのレジスタが命令の動作記述の左辺部に出現するか否かを解析して判定する。レジスタ間のデータ転送も,同様に左辺部に出現したレジスタを書き込み用レジスタ、右辺部に出現したレジスタを読み出し用レジスタと判断する。読み出されたレジスタから書き込まれたレジスタへデータが転送されたと見なす。
【0233】
上記第11の実施形態によれば、コンフィギュレーション指定ファイルの記述に従って必要なシミュレータを生成することができる。したがって、ユーザはアプリケーションをシミュレートすることができ、アプリケーションの性能を短時間で知ることができる。このため、システムLSIの開発を期間を短縮することが可能となる。
【0234】
(第12の実施形態)
第12の実施形態は、デバッグ環境の構築に関する。
【0235】
デバッグ環境構築のための対応項目は次の3つである。
【0236】
(1)レジスタ定義:
デバッガは、表示及び書き換え可能なレジスタとしてどの様なものがあるかについての情報が必要である。この情報は、コンフィグレーション指定ファイルのレジスタ定義部から生成される。表示できるレジスタは、定義されている全レジスタである。書き換えができるレジスタ、あるいはレジスタのフィールド(レジスタの一部)は、図14に示すレジスタ定義において、例えば“rw”と記述されたレジスタである。“r”と記述されたレジスタは、デバッガにて書き換えることはできない。
【0237】
(2)逆アセンブラ:
デバッガは、実行プログラムに対し、逆アセンブラを行い、表記する。逆アセンブラは、シミュレータのデコード部と同じ方法で命令を認識し、そのニーモニックを表示する。
【0238】
(3)デバッグ・モニタ:
デバッグ・モニタは、デバッグの開始時にレジスタの初期値を設定する。この初期値を設定すべきレジスタ(存在するレジスタ)の情報を、コンフィグレーション指定ファイルのレジスタ定義部から得る。
【0239】
上記第12の実施形態によれば、コンフィグレーション指定ファイルからデバッグ環境が構築される。このため、ユーザはLSI開発に必要なデバッグ環境を得ることができる。したがって、ユーザはアプリケーションをデバッグすることができ、アプリケーションの開発を期間を短縮することが可能となる。
【0240】
尚、本発明は、上記各実施形態に限定されるものではない。
【0241】
図37は、上記各実施形態が適用されるシステムLSI開発環境生成装置の概観を示している。このシステムLSI開発環境生成装置50は、いわゆる汎用計算機、ワークステーション、PC(Personal Computer)、NC(Network Computer)等が含まれる。システムLSI開発環境生成装置50は、図示せぬハードディスク装置50aを有している。
【0242】
さらに、システムLSI開発環境生成装置50は、例えばフロッピーディスクドライブ52及び光ディスクドライブ54を備えている。フロッピーディスクドライブ52にはフロッピーディスク53が装着され、光ディスクドライブ54には光ディスク55が装着される。
【0243】
また、システムLSI開発環境生成装置50に接続されたドライブ装置57は、例えばメモリカード58のリーダライタ、あるいは磁気テープカートリッジ59のリーダライタである。このドライブ装置57により、メモリカード58、あるいは磁気テープカートリッジ59をアクセスすることができる。
【0244】
前述したコマンドインタープリタ、RTL生成部、シミュレータカスタマイズ部、コンパイラカスタマイズ部、アセンブラカスタマイズ部、検証ベクトル生成部、及びデバッガ生成部等のプログラムや、コンフィグレーション指定ファイル等のファイルは、フロッピーディスク53、光ディスク55、メモリカード58及び磁気テープカートリッジ59等の記録媒体に記憶される。これらプログラム及びファイルを読み出し、前記ハードディスク装置50aにインストールすることにより、上述した動作を実行できる。また、記録媒体としては伝送媒体を用いることも可能である。
【0245】
その他、本発明の要旨を変えない範囲において種々変形実施可能なことは勿論である。
【0246】
【発明の効果】
以上、詳述したように本発明によれば、高性能なハードウェアを有するLSIの開発環境を十分なフレキシビリティで、簡単に生成することが可能なシステムLSI開発環境生成方法及びそのプログラムを提供できる。
【図面の簡単な説明】
【図1】本発明が適用されるシステムLSI開発装置を概略的に示す構成図。
【図2】設定ファイル生成部を示す構成図。
【図3】コンフィグレーション指定ファイルの記述例を示す図。
【図4】図4(a)は全プロセッサに共通のメモリ領域の記述例を示す図、図4(b)は生成されたローカルメモリマップの一例を示す図、図4(c)はISA定義ファイルの記述例を示す図。
【図5】システムLSI開発環境生成部の構成を示す図。
【図6】図5に示すRTL生成部の一実施例を示す構成図。
【図7】RTLテンプレートの一例を示す図。
【図8】図5に示すシミュレータカスタマイズ部の一例を示す構成図。
【図9】図9(a)は、シミュレータ起動オプションファイルの一例を示す図、図9(b)は、デバッガ起動オプションファイルの一例を示す図、図9(c)は、機械命令関数宣言ヘッダファイルの一例を示す図。
【図10】図5に示すコンパイラカスタマイズ部43の一実施例を示す構成図。
【図11】図11(a)は、コンパイラ起動オプションファイルの一例を示す図、図11(b)は検証ベクトル生成用のユーザ定義命令ファイルの一例を示す図。
【図12】本発明のシステムLSI開発環境生成部3のプログラム構成を示す構成図。
【図13】コンフィグレーション指定ファイルの一例を示す図。
【図14】図13に示すレジスタ定義部の記載例を具体的に示す図。
【図15】アキュムレータの定義の一例を示す図。
【図16】シフトアマウントレジスタの定義の一例を示す図。
【図17】コプロセッサ定義の一例を示す図。
【図18】DSPモジュール用コンフィグレーション指定ファイルの例を示す図。
【図19】SIMD命令の定義の一例を示す図。
【図20】1行による記述例を示す図。
【図21】1行による記述例を示す図。
【図22】指標を用いた記述例を示す図。
【図23】SIMD命令ライブラリの例を示す図。
【図24】命令ライブラリからコンパイラ等のツールを生成方法を示す構成図。
【図25】コンフィグレーション指定ファイル内の命令セット定義部の例を示す図。
【図26】PTYPE行の記述例を示す図。
【図27】ハザード情報の記述例を示す図。
【図28】ハザード情報とパイプラインの動作を示す図。
【図29】コンパイラのためのスケジューリング情報の例を示す図。
【図30】パイプライン動作記述の例を示す図。
【図31】RTL生成部におけるユーザ定義モジュールの高位合成の例を示す図。
【図32】インターフェースの整合方法を示す構成図。
【図33】ISA情報の生成方法を示すものであり、命令CPXOR3に関する命令定義の例を示す図。
【図34】自動的に生成されたISA情報を示す図。
【図35】命令CPXOR3の検証プログラムを示す図。
【図36】シミュレータ生成部の概略的な動作を示す図。
【図37】システムLSI開発環境生成システムの概観の一例を示す斜視図。
【符号の説明】
1…システムLSI開発環境生成装置、
2…設定ファイル生成部、
3…ユーザ定義モジュール・ユーザ定義命令記憶部、
4…システムLSI開発環境生成部、
9…制御部、
21…入力解析部、
41…RTL生成部、
41a、41b…RTLテンプレート、
41c…コアRTL記述、
41d…ブロック接続部、
41e…高位合成処理部、
42…シミュレータカスタマイズ部、
42a…オプション命令・Cモデルテンプレート、
42b…シミュレータテンプレート、
43…コンパイラカスタマイズ部、
43a…オプション命令情報抽出部、
43b…オプション命令・機械命令関数宣言テンプレート、
43c…機械命令関数宣言抽出部、
43d…結合処理部、
44…アセンブラカスタマイズ部、
45…検証ベクトル生成部、
50…コンピュータシステム、
51…ディスプレイ、
52…フロッピーディスクドライブ、
53…フロッピーディスク、
54…光ディスクドライブ、
55…光ディスク、
56…キーボード、
57…ドライブ装置、
58…メモリカード、
59…磁気テープカートリッジ
Claims (38)
- コンパイラカスタマイズ部、アセンブラカスタマイズ部、及びシミュレータカスタマイズ部を含むコンピュータにより、前記コンピュータに接続された記憶装置に記憶されたシステムLSIのコンフィグレーションが記述されたコンフィグレーション指定ファイルに基づきシステムLSIの開発環境を生成する方法であって、
前記コンピュータは、前記コンパイラカスタマイズ部により、前記記憶装置から入力された前記コンフィグレーション指定ファイルに含まれるシステムLSIの命令セットのオプション情報、ユーザ定義命令及びレジスタの構成を定義するレジスタ定義に基づき、前記システムLSI上で動作するソフトウェアを開発するためのコンパイラを構築させ、
前記アセンブラカスタマイズ部により、前記コンフィグレーション指定ファイルに含まれる前記システムLSIの命令セットのオプション情報、ユーザ定義命令及びレジスタの構成を定義するレジスタ定義に基づき、前記システムLSI上で動作するソフトウェアを開発するためのアセンブラを構築させ、
前記シミュレータカスタマイズ部により、前記コンフィグレーション指定ファイルに含まれるオプション情報、ユーザ定義命令及びレジスタの構成を定義するレジスタ定義に基づき、コンフィグレーションに沿った命令動作を実行するシミュレータを構築させ、
前記コンフィグレーション指定ファイルは、コアプロセッサに対してコプロセッサを定義するコプロセッサ定義を含み、前記コプロセッサ定義は、コプロセッサがVLIW(ベリー・ロング・インストラクション・ワード)モードであることを示す記述、及び命令を並列化する際、どのスロットに置かれる命令かを区別するためのスロット情報を含む
ことを特徴とするシステムLSI開発環境生成方法。 - コンピュータに、コマンドインタープリタにより、入力されたコマンドを解析させ、
前記解析したコマンドに応じて、コンパイラカスタマイズ部により、前記コンピュータに接続された記憶装置から入力されたコンフィグレーション指定ファイルに含まれるシステムLSIの命令セットのオプション情報、ユーザ定義命令及びレジスタの構成を定義するレジスタ定義、コアプロセッサに対してコプロセッサを定義するコプロセッサ定義、及び命令を並列化する際、どのスロットに置かれる命令かを区別するためのスロット情報、さらに、前記コプロセッサ定義は、コプロセッサがVLIW(ベリー・ロング・インストラクション・ワード)モードであることを示す記述に基づき、前記システムLSI上で動作するソフトウェアを開発するためのコンパイラを構築させ、
前記アセンブラカスタマイズ部により、前記コンフィグレーション指定ファイルの前記システムLSIの命令セットのオプション情報、ユーザ定義命令及びレジスタの構成を定義するレジスタ定義に基づき、前記システムLSI上で動作するソフトウェアを開発するためのアセンブラを構築させ、
前記シミュレータカスタマイズ部により、前記コンフィグレーション指定ファイルに含まれるオプション情報、ユーザ定義命令及びレジスタの構成を定義するレジスタ定義に基づき、前記コンフィグレーションに沿った命令動作を実行するシミュレータを構築させる
ことを実現するシステムLSI開発環境生成プログラム。 - 前記レジスタ定義は、前記コンパイラにおけるレジスタ使用方法の情報を有することを特徴とする請求項1記載のシステムLSI開発環境生成方法。
- 前記レジスタ定義は、前記コンパイラのレジスタの使用方法を定義する情報を有し、この情報が省略された場合、前記コンピュータは、前記コンパイラカスタマイズ部により、コンパイラのデフォルトのレジスタの使用方法を設定させることを特徴とする請求項3記載のシステムLSI開発環境生成方法。
- 前記コンピュータは、前記コンパイラカスタマイズ部により、前記レジスタ定義の情報に基づき、各レジスタに直接アクセスできるレジスタ擬似変数の情報を生成させることを特徴とする請求項4記載のシステムLSI開発環境生成方法。
- 前記レジスタ定義は、レジスタの別名定義を有し、前記コンピュータは、前記アセンブラカスタマイズ部により、前記レジスタの別名定義を受けることを特徴とする請求項4記載のシステムLSI開発環境生成方法。
- 前記コンピュータは、RTL(レジスタ・トランスファー・レベル)生成部、検証ベクトル生成部、及びデバッガ生成部をさらに具備し、前記コンピュータは、前記RTL生成部により、前記コンフィグレーション指定ファイルに基づき、システムLSIに内蔵されるプロセッサのRTL記述を生成させ、前記検証ベクトル生成部により、前記コンフィグレーション指定ファイルに基づき、システムLSIの構成を検証する検証ベクトルを生成させ、前記デバッガ生成部により、前記コンフィグレーション指定ファイルに基づき、前記システムLSI上で動作するソフトウェアをデバッグするデバッガを生成させることを特徴とする請求項1記載のシステムLSI開発環境生成方法。
- 前記コンフィグレーション指定ファイルに含まれるレジスタ定義は、レジスタ名を含み、前記コンピュータは、前記RTL生成部、検証ベクトル生成部、及びデバッガ生成部のうち少なくとも1つにより、レジスタ名を受けることを特徴とする請求項7記載のシステムLSI開発環境生成方法。
- 前記コンフィグレーション指定ファイルは、命令定義部を含み、前記命令定義部は、命令のニーモニック、オペランドコード、動作内容を含むことを特徴とする請求項1記載のシステムLSI開発環境生成方法。
- 前記コンピュータは、前記コンパイラカスタマイズ部により、前記命令定義部の情報を元に機械命令関数定義を生成させることを特徴とする請求項9記載のシステムLSI開発環境生成方法。
- 前記スロット情報は機械命令関数定義ファイルに反映され、前記コンパイラカスタマイズ部により、前記機械命令関数定義ファイルに基づき、コプロセッサ命令を並列化させることを特徴とする請求項1記載のシステムLSI開発環境生成方法。
- 前記シミュレータカスタマイズ部は、前記コプロセッサの仕様に応じた、命令の動作記述内の一時変数、あるいは符号拡張後の値のビット幅を受け、前記シミュレータに反映させることを特徴とする請求項1記載のシステムLSI開発環境生成方法。
- 前記アセンブラカスタマイズ部は、前記スロット情報を受け、前記アセンブラに反映させることを特徴とする請求項1記載のシステムLSI開発環境生成方法。
- 前記検証ベクトル生成部は、前記スロット情報を受け、前記検証ベクトルに反映させることを特徴とする請求項1記載のシステムLSI開発環境生成方法。
- コマンドインタープリタ、コンパイラカスタマイズ部、アセンブラカスタマイズ部、シミュレータカスタマイズ部を含むコンピュータは、前記コマンドインタープリタにより、入力されたコマンドを解析し、
前記解析したコマンドに応じて、前記コンパイラカスタマイズ部により、前記コンピュータに接続された記憶装置から入力されたプロセッサがDSP(デジタル・シグナル・プロセッサ)型であり、ハードウェアの指定がDSP命令形式である記述を含むシステムLSIのコンフィグレーションを記述したコンフィグレーション指定ファイルの情報に基づき、前記システムLSI上で動作するソフトウェアを開発するためのコンパイラを構築させ、前記アセンブラカスタマイズ部により、前記コンフィグレーション指定ファイルの情報に基づき、前記システムLSI上で動作するソフトウェアを開発するためのアセンブラを構築させ、前記シミュレータカスタマイズ部により、コンフィグレーションに沿った命令動作を実行するシミュレータを構築させる
ことを特徴とするシステムLSI開発環境生成方法。 - 前記コンフィグレーション指定ファイルは、命令定義部及びレジスタ定義部を含むことを特徴とする請求項15記載のシステムLSI開発環境生成方法。
- 前記命令定義部は、命令のビット幅を指定する情報を含むことを特徴とする請求項16記載のシステムLSI開発環境生成方法。
- 前記レジスタ定義部は、レジスタのビット幅を定義する情報を含むことを特徴とする請求項16記載のシステムLSI開発環境生成方法。
- 前記コンフィグレーション指定ファイルは、固定小数点ライブラリの小数点の位置を指定する情報を含み、前記コンピュータは、前記コンパイラカスタマイズ部により、この情報をコンパイラの固定小数点ライブラリに反映させることを特徴とする請求項16記載のシステムLSI開発環境生成方法。
- 前記コンフィグレーション指定ファイルは、プロセッサがDSP型である場合、前記コンパイラのDSPに対応した機能を含むことを特徴とする請求項16記載のシステムLSI開発環境生成方法。
- 前記コンパイラのDSPに対応した機能は、複素データ型、X/Yメモリ領域、循環バッファ、固定小数点データ型、ビット反転、異種レジスタセットのうちの少なくとも1つを含むことを特徴とする請求項20記載のシステムLSI開発環境生成方法。
- 前記コンフィグレーション指定ファイルは、ハードウェアの指定が、SIMD(シングル・インストラクション・マルチプル・データ)命令形式である記述を含むことを特徴とする請求項1記載のシステムLSI開発環境生成方法。
- コマンドインタープリタ、コンパイラカスタマイズ部、アセンブラカスタマイズ部、シミュレータカスタマイズ部を含むコンピュータは、前記コマンドインタープリタにより、入力されたコマンドを解析させ、
前記解析したコマンドに応じて、前記コンパイラカスタマイズ部により、前記コンピュータに接続された記憶装置から入力されたプロセッサがSIMD(シングル・インストラクション・マルチプル・データ)型であり、ハードウェアの指定がデータ長を含むSIMD命令形式である記述を含むシステムLSIのコンフィグレーションを記述したコンフィグレーション指定ファイルの情報に基づき、前記システムLSI上で動作するソフトウェアを開発するためのコンパイラを構築させ、
前記アセンブラカスタマイズ部により、前記コンフィグレーション指定ファイルに基づき、前記システムLSI上で動作するソフトウェアを開発するためのアセンブラを構築させ、
前記シミュレータカスタマイズ部により、前記コンフィグレーション指定ファイルに基づき、コンフィグレーションに沿った命令動作を実行するシミュレータを構築させる
ことを実現するシステムLSI開発環境生成プログラム。 - 前記コンピュータは、前記コンパイラカスタマイズ部により、入力されたSIMD命令に関する情報に基づき、SIMDデータ用拡張宣言子の情報を生成させることを実現する請求項23記載のシステムLSI開発環境生成プログラム。
- 前記コンピュータは、前記シミュレータカスタマイズ部により、入力されたSIMD命令に関する情報に基づき、シミュレータの動作をカスタマイズさせることを実現する請求項23記載のシステムLSI開発環境生成プログラム。
- 前記コンピュータは、前記シミュレータカスタマイズ部により、入力されたSIMD命令に関する情報に基づき、シミュレータの結果出力機能をカスタマイズさせることを実現する請求項23記載のシステムLSI開発環境生成プログラム。
- 前記SIMD命令の命令定義部における動作記述は、複数命令がまとめて1命令で記述されることを実現する請求項23記載のシステムLSI開発環境生成プログラム。
- 前記SIMD命令の命令定義部における動作記述は、指標を用いて記述されることを実現する請求項23記載のシステムLSI開発環境生成プログラム。
- コンパイラカスタマイズ部、アセンブラカスタマイズ部、シミュレータカスタマイズ部を含むコンピュータにより、定義済みの複数の命令を含む複数の命令ライブラリから必要な命令を選択して複数のファイルを生成し、
前記生成された複数のファイルをマージし、
前記コンピュータは、コンパイラカスタマイズ部により、前記マージされたファイルに基づき、システムLSI上で動作するソフトウェアを開発するためのコンパイラを構築させ、前記アセンブラカスタマイズ部により、前記マージされたファイルに基づき、システムLSI上で動作するソフトウェアを開発するためのアセンブラを構築させ、前記シミュレータカスタマイズ部により、前記マージされたファイルに基づき、システムLSI上で命令動作を実行するシミュレータを構築させる
ことを特徴とするシステムLSI開発環境生成方法。 - コンパイラカスタマイズ部、アセンブラカスタマイズ部、シミュレータカスタマイズ部を含むコンピュータにより、定義済みの複数の命令を含む複数の命令ライブラリから必要な命令を選択して複数のファイルを生成させ、
前記生成された複数のファイルをマージさせ、
前記コンピュータは、前記コンパイラカスタマイズ部により、前記マージされたファイルに基づき、システムLSI上で動作するソフトウェアを開発するためのコンパイラを構築させ、前記アセンブラカスタマイズ部により、前記マージされたファイルに基づき、システムLSI上で動作するソフトウェアを開発するためのアセンブラを構築させ、前記シミュレータカスタマイズ部により、前記マージされたファイルに基づき、システムLSI上で命令動作を実行するシミュレータを構築させる
ことを実現するシステムLSI開発環境生成プログラム。 - 前記複数のファイルを、基本命令を含むファイルとマージし、前記コンパイラに組み込む
ことを特徴とする請求項29記載のシステムLSI開発環境生成方法。 - 前記マージされたファイルより、RTL(レジスタ・トランスファー・レベル)生成部により、RTLテンプレートを生成する
ことを特徴とする請求項29記載のシステムLSI開発環境生成方法。 - 前記命令ライブラリ内の命令に対して、命令が用いるデータ型を選択し、アプリケーションに対応した開発環境を生成することを特徴とする請求項29記載のシステムLSI開発環境生成方法。
- 前記命令ライブラリ内の命令に対して、命令が用いるデータ型を変更し、アプリケーションに対応した開発環境を生成することを特徴とする請求項29記載のシステムLSI開発環境生成方法。
- 前記コンピュータに、前記コンフィグレーション指定ファイルに記載された動作命令に基づき、スケジューリング部によりハードウェアリソースの割り当てとスケジューリングを行なわせ、前記コンフィグレーション指定ファイルに記載された動作命令に基づき、インターフェース整合部により、コア部及び制御バスとメモリとのインターフェースを整合させ、RTL(レジスタ・トランスファー・レベル)生成部により、C言語を Verilog (ベリログ)に変換させる
ことを実現する請求項2記載のシステムLSI開発環境生成プログラム。 - 前記コンピュータに、インターフェース整合部により、前記動作命令からハードウェアリソースの割り当てとスケジューリング、コア部及び制御バスとメモリとのインターフェースを整合させ、RTL(レジスタ・トランスファー・レベル)記述を生成することを実現する請求項35記載のシステムLSI開発環境生成プログラム。
- 前記コンピュータは、前記コンフィグレーション指定ファイルの動作命令に基づき、前記検証ベクトル生成部により、プロセッサの検証ベクトルを生成させることを特徴とする請求項1記載のシステムLSI開発環境生成方法。
- 前記コンピュータは、前記検証ベクトル生成部により、前記コンフィグレーション指定ファイルのレジスタ情報からISA(インストラクション・セット・アーキテクチャ)情報を生成させることを特徴とする請求項37記載のシステムLSI開発環境生成方法。
Priority Applications (7)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2002127381A JP4202673B2 (ja) | 2002-04-26 | 2002-04-26 | システムlsi開発環境生成方法及びそのプログラム |
US10/197,891 US7168060B2 (en) | 2002-04-26 | 2002-07-19 | Method of generating development environment for developing system LSI and medium which stores program therefor using VLIW designating description |
EP02016338A EP1357485A3 (en) | 2002-04-26 | 2002-07-25 | Method of generating development environment for developing system LSI and medium which stores program therefor |
TW091123691A TW571237B (en) | 2002-04-26 | 2002-10-15 | Method of generating development environment for developing system chip and medium which stores program therefor |
KR10-2002-0066498A KR100533307B1 (ko) | 2002-04-26 | 2002-10-30 | 시스템 온 칩을 개발하기 위한 개발 환경의 생성 방법 및 그 프로그램을 기억한 매체 |
CNB021482489A CN100338568C (zh) | 2002-04-26 | 2002-10-31 | 开发片上系统用的开发环境的生成方法 |
US11/556,817 US20070061763A1 (en) | 2002-04-26 | 2006-11-06 | Method of generating development environment for developing system lsi and medium which stores program therefor |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2002127381A JP4202673B2 (ja) | 2002-04-26 | 2002-04-26 | システムlsi開発環境生成方法及びそのプログラム |
Publications (3)
Publication Number | Publication Date |
---|---|
JP2003323463A JP2003323463A (ja) | 2003-11-14 |
JP2003323463A5 JP2003323463A5 (ja) | 2005-02-17 |
JP4202673B2 true JP4202673B2 (ja) | 2008-12-24 |
Family
ID=28786839
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2002127381A Expired - Lifetime JP4202673B2 (ja) | 2002-04-26 | 2002-04-26 | システムlsi開発環境生成方法及びそのプログラム |
Country Status (6)
Country | Link |
---|---|
US (2) | US7168060B2 (ja) |
EP (1) | EP1357485A3 (ja) |
JP (1) | JP4202673B2 (ja) |
KR (1) | KR100533307B1 (ja) |
CN (1) | CN100338568C (ja) |
TW (1) | TW571237B (ja) |
Families Citing this family (46)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB0215033D0 (en) * | 2002-06-28 | 2002-08-07 | Critical Blue Ltd | Instruction set translation method |
US7392368B2 (en) * | 2002-08-09 | 2008-06-24 | Marvell International Ltd. | Cross multiply and add instruction and multiply and subtract instruction SIMD execution on real and imaginary components of a plurality of complex data elements |
AU2003256870A1 (en) * | 2002-08-09 | 2004-02-25 | Intel Corporation | Multimedia coprocessor control mechanism including alignment or broadcast instructions |
US6986023B2 (en) | 2002-08-09 | 2006-01-10 | Intel Corporation | Conditional execution of coprocessor instruction based on main processor arithmetic flags |
US7302380B2 (en) * | 2002-12-12 | 2007-11-27 | Matsushita Electric, Industrial Co., Ltd. | Simulation apparatus, method and program |
US6986110B1 (en) * | 2003-01-02 | 2006-01-10 | Hewlett-Packard Development Company, L.P. | Automated method and system for backtracing of instruction parameters from specified instruction in test cases |
US7707566B2 (en) * | 2003-06-26 | 2010-04-27 | Microsoft Corporation | Software development infrastructure |
US7086041B2 (en) * | 2003-06-27 | 2006-08-01 | Microsoft Corporation | Extensible type system for representing and checking consistency of program components during the process of compilation |
US7685581B2 (en) * | 2003-06-27 | 2010-03-23 | Microsoft Corporation | Type system for representing and checking consistency of heterogeneous program components during the process of compilation |
US7559050B2 (en) * | 2003-06-30 | 2009-07-07 | Microsoft Corporation | Generating software development tools via target architecture specification |
US7788652B2 (en) * | 2003-06-27 | 2010-08-31 | Microsoft Corporation | Representing type information in a compiler and programming tools framework |
US7278122B2 (en) * | 2004-06-24 | 2007-10-02 | Ftl Systems, Inc. | Hardware/software design tool and language specification mechanism enabling efficient technology retargeting and optimization |
US7675509B2 (en) * | 2005-01-13 | 2010-03-09 | Sony Corporation | Methods and apparatus for optical wireless communication |
KR100638476B1 (ko) * | 2004-12-22 | 2006-10-26 | 삼성전자주식회사 | 버추얼 플랫폼 기반의 시스템 온 칩 개발 환경 및 개발 방법 |
JP2006243838A (ja) * | 2005-02-28 | 2006-09-14 | Toshiba Corp | プログラム開発装置 |
JP2006243839A (ja) * | 2005-02-28 | 2006-09-14 | Toshiba Corp | 命令生成装置及び命令生成方法 |
CN100468327C (zh) * | 2005-11-10 | 2009-03-11 | 鸿富锦精密工业(深圳)有限公司 | 量测程序生成系统及方法 |
US7836435B2 (en) * | 2006-03-31 | 2010-11-16 | Intel Corporation | Checking for memory access collisions in a multi-processor architecture |
JP2007310565A (ja) | 2006-05-17 | 2007-11-29 | Toshiba Corp | システムlsi検証装置及びシステムlsi検証プログラム |
US7486096B2 (en) * | 2006-10-31 | 2009-02-03 | International Business Machines Corporation | Method and apparatus for testing to determine minimum operating voltages in electronic devices |
US8935512B2 (en) | 2006-11-21 | 2015-01-13 | Nec Corporation | Instruction operation code generation system |
US7809925B2 (en) * | 2007-12-07 | 2010-10-05 | International Business Machines Corporation | Processing unit incorporating vectorizable execution unit |
JP5116624B2 (ja) * | 2008-09-29 | 2013-01-09 | ルネサスエレクトロニクス株式会社 | シミュレーション装置及びシミュレーション方法 |
JP2010160622A (ja) * | 2009-01-07 | 2010-07-22 | Toshiba Corp | シミュレータ |
KR101603202B1 (ko) * | 2009-09-21 | 2016-03-14 | 삼성전자주식회사 | 이기종 멀티프로세서 시스템 온 칩에서의 rpc 데이터 배치 방법 및 장치 |
US20110137922A1 (en) * | 2009-12-07 | 2011-06-09 | International Business Machines Corporation | Automatic generation of a query lineage |
JP2013517565A (ja) * | 2010-01-12 | 2013-05-16 | グーグル インコーポレイテッド | オペレーティングシステム自動更新手順 |
US8370784B2 (en) * | 2010-07-13 | 2013-02-05 | Algotochip Corporation | Automatic optimal integrated circuit generator from algorithms and specification |
US8423929B2 (en) | 2010-10-18 | 2013-04-16 | Algotochip Corp. | Intelligent architecture creator |
KR20120077164A (ko) | 2010-12-30 | 2012-07-10 | 삼성전자주식회사 | Simd 구조를 사용하는 복소수 연산을 위한 사용하는 장치 및 방법 |
US20120185820A1 (en) * | 2011-01-19 | 2012-07-19 | Suresh Kadiyala | Tool generator |
US20130290693A1 (en) * | 2012-04-27 | 2013-10-31 | Esencia Technologies Inc. | Method and Apparatus for the Automatic Generation of RTL from an Untimed C or C++ Description as a Fine-Grained Specialization of a Micro-processor Soft Core |
US9734263B2 (en) * | 2012-12-20 | 2017-08-15 | Intel Corporation | Method and apparatus for efficient pre-silicon debug |
US9244683B2 (en) * | 2013-02-26 | 2016-01-26 | Nvidia Corporation | System, method, and computer program product for implementing large integer operations on a graphics processing unit |
JP6214455B2 (ja) * | 2014-04-11 | 2017-10-18 | 三菱電機株式会社 | 命令テーブル生成装置、命令デコードプログラム生成装置、命令テーブル生成方法、命令デコードプログラム生成方法、およびプログラム |
US9747084B2 (en) * | 2014-09-09 | 2017-08-29 | Google Inc. | Offline shader compilation |
CN104965687B (zh) * | 2015-06-04 | 2017-12-08 | 北京东方国信科技股份有限公司 | 基于指令集生成的大数据处理方法及装置 |
GB2554096B (en) * | 2016-09-20 | 2019-03-20 | Advanced Risc Mach Ltd | Handling of inter-element address hazards for vector instructions |
US11475197B2 (en) * | 2018-09-25 | 2022-10-18 | Synopsys, Inc. | Hardware simulation systems and methods for identifying state-holding loops and oscillating loops |
JP7024679B2 (ja) * | 2018-10-05 | 2022-02-24 | オムロン株式会社 | 開発支援プログラム、開発支援装置、および開発支援方法 |
CN111400979A (zh) * | 2020-03-24 | 2020-07-10 | 杭州博雅鸿图视频技术有限公司 | Soc的仿真方法、系统、电子设备及存储介质 |
CN111522583A (zh) * | 2020-04-08 | 2020-08-11 | 芯海科技(深圳)股份有限公司 | 一种生成配置文件的方法、装置、计算机设备及存储介质 |
CN111913097B (zh) * | 2020-08-26 | 2022-11-29 | 西安微电子技术研究所 | 一种用于测试SoC功能的测试电路、测试方法和SoC |
CN112100954A (zh) * | 2020-08-31 | 2020-12-18 | 北京百度网讯科技有限公司 | 验证芯片的方法、装置和计算机存储介质 |
CN112486906B (zh) * | 2020-12-18 | 2024-06-11 | 清华大学 | 格式化的可重构处理器汇编指令处理方法及装置 |
TWI764581B (zh) * | 2021-02-22 | 2022-05-11 | 群聯電子股份有限公司 | 記憶體檢查方法、記憶體檢查裝置及記憶體檢查系統 |
Family Cites Families (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5623684A (en) * | 1994-05-17 | 1997-04-22 | Commquest Technologies, Inc. | Application specific processor architecture comprising pre-designed reconfigurable application elements interconnected via a bus with high-level statements controlling configuration and data routing |
JP2869379B2 (ja) | 1996-03-15 | 1999-03-10 | 三菱電機株式会社 | プロセッサ合成システム及びプロセッサ合成方法 |
GB2320111A (en) * | 1996-12-06 | 1998-06-10 | Jba Holdings Plc | Data processing system and method for software development/configuration |
JPH10222548A (ja) * | 1997-02-05 | 1998-08-21 | Hitachi Ltd | 設計支援方法 |
US6112018A (en) * | 1997-12-18 | 2000-08-29 | Advanced Micro Devices, Inc. | Apparatus for exchanging two stack registers |
US6477683B1 (en) * | 1999-02-05 | 2002-11-05 | Tensilica, Inc. | Automated processor generation system for designing a configurable processor and method for the same |
AU3484100A (en) | 1999-02-05 | 2000-08-25 | Tensilica, Inc. | Automated processor generation system for designing a configurable processor andmethod for the same |
US7036106B1 (en) * | 2000-02-17 | 2006-04-25 | Tensilica, Inc. | Automated processor generation system for designing a configurable processor and method for the same |
JP2001249826A (ja) * | 2000-03-03 | 2001-09-14 | Rooran:Kk | システムlsi開発支援システムとその開発支援用プログラムを記録した記録媒体 |
US20010025363A1 (en) * | 2000-03-24 | 2001-09-27 | Cary Ussery | Designer configurable multi-processor system |
JP2002230065A (ja) * | 2001-02-02 | 2002-08-16 | Toshiba Corp | システムlsi開発装置およびシステムlsi開発方法 |
JP3764405B2 (ja) * | 2002-05-27 | 2006-04-05 | 株式会社東芝 | デバッグ装置及びデバッグ方法 |
JP2006243839A (ja) | 2005-02-28 | 2006-09-14 | Toshiba Corp | 命令生成装置及び命令生成方法 |
-
2002
- 2002-04-26 JP JP2002127381A patent/JP4202673B2/ja not_active Expired - Lifetime
- 2002-07-19 US US10/197,891 patent/US7168060B2/en not_active Expired - Fee Related
- 2002-07-25 EP EP02016338A patent/EP1357485A3/en not_active Withdrawn
- 2002-10-15 TW TW091123691A patent/TW571237B/zh not_active IP Right Cessation
- 2002-10-30 KR KR10-2002-0066498A patent/KR100533307B1/ko not_active IP Right Cessation
- 2002-10-31 CN CNB021482489A patent/CN100338568C/zh not_active Expired - Fee Related
-
2006
- 2006-11-06 US US11/556,817 patent/US20070061763A1/en not_active Abandoned
Also Published As
Publication number | Publication date |
---|---|
US20030204819A1 (en) | 2003-10-30 |
TW571237B (en) | 2004-01-11 |
KR100533307B1 (ko) | 2005-12-05 |
CN100338568C (zh) | 2007-09-19 |
US20070061763A1 (en) | 2007-03-15 |
JP2003323463A (ja) | 2003-11-14 |
CN1453699A (zh) | 2003-11-05 |
KR20030084554A (ko) | 2003-11-01 |
EP1357485A2 (en) | 2003-10-29 |
EP1357485A3 (en) | 2008-10-22 |
US7168060B2 (en) | 2007-01-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP4202673B2 (ja) | システムlsi開発環境生成方法及びそのプログラム | |
US7340692B2 (en) | System LSI development apparatus and the method thereof for developing a system optimal to an application | |
TW539965B (en) | Automated processor generation system for designing a configurable processor and method for the same | |
Cardoso et al. | Performance‐driven instrumentation and mapping strategies using the LARA aspect‐oriented programming approach | |
US7702499B1 (en) | Systems and methods for performing software performance estimations | |
Cardoso et al. | Compilation and Synthesis for Embedded Reconfigurable Systems | |
Chow | Intermediate representation: The increasing significance of intermediate representations in compilers | |
Hohenauer et al. | C Compilers for ASIPs | |
dos Santos | Acceleration of applications with fpga-based computing machines: Code restructuring | |
Kirner | Integration of static runtime analysis and program compilation | |
JP4801210B2 (ja) | 拡張プロセッサを設計するシステム | |
Himmelbauer et al. | The Vienna Architecture Description Language | |
Schützenhöfer | Cycle-Accurate simulator generator for the VADL processor description language | |
dos Santos | C Compiler and Tools for P3 Educational Processor | |
Wagstaff | From high level architecture descriptions to fast instruction set simulators | |
Brandner et al. | Automatic generation of compiler backends | |
Graf | Compiler backend generation using the VADL processor description language | |
Schnarr | Applying Programming Language Implementation Techniques to Processor Simulation | |
Prikryl et al. | Fast Translated Simulation of ASIPs | |
Seng et al. | PD-XML: extensible markup language for processor description | |
Daverveldt | LLVM-based ρ-VEX compiler | |
Malm et al. | Towards automated analysis of executable models | |
Wahlen | C Compiler Aided Design of Application-Specific Instruction-Set Processors Using the Machine Description Language LISA | |
Nobre et al. | Hardware/Software Compilation | |
Gückel | Synthesis of state space generators for model checking microcontroller code |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20040309 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20050808 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20050823 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20051024 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20051129 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20060203 |
|
A911 | Transfer to examiner for re-examination before appeal (zenchi) |
Free format text: JAPANESE INTERMEDIATE CODE: A911 Effective date: 20060223 |
|
A912 | Re-examination (zenchi) completed and case transferred to appeal board |
Free format text: JAPANESE INTERMEDIATE CODE: A912 Effective date: 20060324 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20080909 |
|
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20081009 |
|
R151 | Written notification of patent or utility model registration |
Ref document number: 4202673 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R151 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20111017 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20111017 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20121017 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20131017 Year of fee payment: 5 |
|
EXPY | Cancellation because of completion of term |