JP2007207176A - 半導体集積回路のシミュレーション方法 - Google Patents

半導体集積回路のシミュレーション方法 Download PDF

Info

Publication number
JP2007207176A
JP2007207176A JP2006028631A JP2006028631A JP2007207176A JP 2007207176 A JP2007207176 A JP 2007207176A JP 2006028631 A JP2006028631 A JP 2006028631A JP 2006028631 A JP2006028631 A JP 2006028631A JP 2007207176 A JP2007207176 A JP 2007207176A
Authority
JP
Japan
Prior art keywords
simulation
model
slave
simulation method
bus
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2006028631A
Other languages
English (en)
Inventor
Katsuya Shinohara
克哉 篠原
Kazuyoshi Takemura
和祥 竹村
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.)
Panasonic Holdings Corp
Original Assignee
Matsushita Electric Industrial Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Matsushita Electric Industrial Co Ltd filed Critical Matsushita Electric Industrial Co Ltd
Priority to JP2006028631A priority Critical patent/JP2007207176A/ja
Publication of JP2007207176A publication Critical patent/JP2007207176A/ja
Pending legal-status Critical Current

Links

Images

Landscapes

  • Design And Manufacture Of Integrated Circuits (AREA)

Abstract

【課題】バスを有する半導体集積回路について、シミュレーションを高速に行う。
【解決手段】半導体集積回路のシミュレーション方法であって、前記マスターブロックのモデルがその共通化ポートから共通化インタフェースを用いて前記バスのモデルにアクセスし、前記バスのモデルがその共通化ポートから前記共通化インタフェースを用いて前記スレーブブロックのモデルにアクセスするモデルについてシミュレーションを実行する高精度シミュレーションステップと、前記マスターブロックのモデルがその共通化ポートから前記共通化インタフェースを用いて前記バスのモデルを介さずに前記スレーブブロックのモデルにアクセスするモデルについてシミュレーションを実行する抽象化シミュレーションステップとを備える。シミュレーションに必要とされる精度に応じて、前記高精度シミュレーションステップ又は前記抽象化シミュレーションステップを選択して実行する。
【選択図】図1

Description

本発明は、半導体集積回路のシミュレーション技術に関し、特に、複数のブロックと、これらのブロック間を接続するバスとを有する半導体集積回路を対象とするシミュレーション技術に関する。
システムLSIと呼ばれる半導体集積回路は、近年、大規模・複雑化している。そのアーキテクチャとしては、プロセッサ(例えばCPUやDSP(digital signal processor))、特定の処理(例えばMPEG(moving picture experts group)やJPEG(joint photographic experts group)のための処理)を行う専用ハードウェア、及びメモリ等の機能ブロックを複数有し、これらの機能ブロック間をバスが相互に接続するという形態が多くなっている。
このような、複数の機能ブロック間が単一又は複数のバスで相互に接続されるシステムオンチップ化に対応するため、設計の流れの上流におけるハードウェア/ソフトウェア/システムの検証、開発、評価を行うシステムシミュレーションが必要とされている。
例えば、非特許文献1には、ポートとインタフェースとを定義して、モジュール間の接続を行い、バスを含めたシミュレーション環境を構築する方法が開示されている。マスター−バス間とバス−スレーブ間とでは、異なるインタフェースが用いられている。マスター−バス間では、3つのインタフェースが用意され、その統合手順が説明されている。
また、異なる用途向けの、異なる抽象度のためのインタフェースを備えたモデルを想定したシミュレーション技術が、例えば特許文献1に開示されている。更に、CPU、DMAC(direct memory access controller)等のモデルが、バスインタフェースのシミュレーションモデルを介して、バス及びスレーブへのアクセスを行うシミュレーション技術が、例えば特許文献2に開示されている。
特開2004−310568号公報 特開2001−76027号公報 Thorsten Grotker他著,「SystemCを用いたシステム設計(System Design with SystemC)」,(米国),Kluwer Academic Publishers,2002年
バスは、アービトレーション、スレーブセレクション、アドレスデコードといった機能を有する。このため、複雑なバスや、大規模なバスを対象に含めて高精度なシミュレーションを行うと、精度がよい結果が得られる一方、シミュレーションが低速になるという問題があった。
OSの起動時等、周辺ハードウェアの初期設定のシミュレーションを行うだけの場合には、一般に精度よりも速度が重要視される。ところが、例えば非特許文献1に開示された技術では、マスター−バス間と、バス−スレーブ間とで異なるインタフェースを用いているので、バスを省略することができない。このため、シミュレーションをそれほど高速化することができない。また、アービトレーションを省略したとしても、バスへのアクセスを考慮するので、オーバーヘッドが発生してしまう。
本発明は、マスターブロックとスレーブブロックとの間を接続するバスを有する半導体集積回路について、シミュレーションを高速に行うことを目的とする。
前記課題を解決するため、本発明が講じた手段は、マスターブロックと、スレーブブロックと、前記マスターブロックと前記スレーブブロックとの間を接続するバスとを有する半導体集積回路を対象とするシミュレーション方法であって、前記マスターブロックを、共通化ポートを有するマスターモデルにモデル化するステップと、前記スレーブブロックを、共通化インタフェースでアクセス可能なスレーブモデルにモデル化するステップと、前記バスを、前記マスターモデルと同一の共通化ポートを有し、前記共通化インタフェースでアクセス可能なバスモデルにモデル化するステップと、前記マスターモデルがその共通化ポートから前記共通化インタフェースを用いて前記バスモデルにアクセスし、前記バスモデルがその共通化ポートから前記共通化インタフェースを用いて前記スレーブモデルにアクセスするモデルについてシミュレーションを実行する高精度シミュレーションステップと、前記マスターモデルがその共通化ポートから前記共通化インタフェースを用いて前記バスモデルを介さずに前記スレーブモデルにアクセスするモデルについてシミュレーションを実行する抽象化シミュレーションステップとを備え、シミュレーションに必要とされる精度に応じて、前記高精度シミュレーションステップ又は前記抽象化シミュレーションステップを選択して実行するものである。
これによると、シミュレーションの精度が高くなくてもよい場合には、シミュレーションの高速化を図り、かつ、必要に応じて高精度のシミュレーションを行うことができる。したがって、必要な精度のシミュレーション結果を得ながら、シミュレーションを高速化することができる。
本発明によれば、必要な精度を保ちながら、シミュレーションの高速化を図ることができる。また、モデルのポートやインタフェースを共通化するので、異なるシミュレータ間でモデルの共有化を図ることができ、大規模なシステムLSIのハードウェア/ソフトウェア協調設計が容易になる。
以下、本発明の実施の形態について、図面を参照しながら説明する。以下の実施形態においては、CPU等のプロセッサ(図示せず)が半導体集積回路のモデル化や半導体集積回路についてのシミュレーションを行う。
図1は、本発明の実施形態に係るシミュレーション方法が対象とする半導体集積回路の例を示すブロック図である。図1の半導体集積回路100は、マスターブロックとしてのCPU112と、バス114と、スレーブブロックとしてのハードウェア116とを備えている。CPU112は、ソフトウェア102を実行する。
CPU112は、ポート122を有しており、インタフェース124を利用してバス114にアクセスする。バス114は、ポート126を有しており、インタフェース128を利用してハードウェア116にアクセスする。
半導体集積回路200は、CPU112と、ハードウェア116とを備えている。CPU112は、インタフェース128を利用してハードウェア116にアクセスする。このようにすると、バス114を介さずにCPU112をハードウェア116に接続した場合のシミュレーションを行うことができる。
シミュレーションに必要とされる精度が高い場合には、プロセッサは、具体化された半導体集積回路100を対象にして高精度シミュレーションを行う。一方、シミュレーションの精度よりもシミュレーション速度を重視する場合には、プロセッサは、半導体集積回路100を抽象化し、得られた半導体集積回路200を対象にして抽象化シミュレーションを行う。
以下では、具体的な回路の記述例について説明する。図2は、共通化ポート及び共通化インタフェースの記述例を示す図である。図1の半導体集積回路200のように接続するためには、図1の半導体集積回路100において、ポート122が利用するインタフェース124と、ポート126が利用するインタフェース128とが同じでなければならない。そこで、共通化インタフェースcommon_intfと共通化ポートcommon_portとを用意する。
図2は、C++言語を用いた場合のこれらの例を示している。図2の共通化ポートcommon_portは、よく知られたSystemC言語(例えば、前記非特許文献1参照)でも利用されている標準的なポートの定義である。ポート122,126としては、共通化ポートcommon_portを利用し、インタフェース124,128としては、共通化インタフェースcommon_intfを利用するようにする。
このように、マスターブロック−バス間で利用するインタフェースの全関数と、バス−スレーブブロック間で利用するインタフェースの全関数とを、共通化インタフェースcommon_intfで定義する。このように定義することにより、バスを介さずに直接マスターブロックとスレーブブロックとを接続したモデルを得ることができる。
図3は、図2の共通化ポート及び共通化インタフェースを利用したマスターモデルの記述例を示す図である。プロセッサは、CPU112を、例えば図3のようにマスターモデル(クラスmasterA)にモデル化する。クラスmasterAは、共通化ポートcommon_portにより、共通化インタフェースcommon_intfへアクセス可能となる。このポートの名称をportとしている。
図3では、このマスターモデルから、バスモデル又はスレーブモデルへのアクセスを行う関数read,write,request,isGrant等を呼び出すことにより、バスへのアクセスをモデル化している。例えば、関数readはバスへのリードアクセスを行い、関数writeはライトアクセスを行う。関数requestはバス利用許可を要求し、関数isGrantはバスが利用できるか否かを確かめる。
これらの関数は基本的なものであり、マスターモデルが、バーストに対応した関数、エラーに対応した関数、性能解析用の関数、デバッグ用の関数等を含むようにしてもよい。
図4は、図2の共通化ポート及び共通化インタフェースを利用したバスモデルの記述例を示す図である。プロセッサは、バス114を、例えば図4のようにバスモデル(クラスbus)にモデル化する。クラスbusは、マスターモデルからアクセスされる共通化インタフェースcommon_intfを実装するために、共通化インタフェースcommon_intfを継承している。また、クラスbusは、スレーブモデルへアクセスするためのポートportを、図3のクラスmasterAと同様に具備している。
クラスbusは、共通化インタフェースcommon_intfで宣言される関数read,write,request,isGrantを実装している。これらの関数の具体的な内容については、ここでは省略している。スレーブモデルへのアクセスは、ポートを介して、クラスmasterAと同様に行う。
図5は、図2の共通化インタフェースを利用したスレーブモデルの記述例を示す図である。プロセッサは、ハードウェア116を、例えば図5のようにスレーブモデル(クラスslaveA)にモデル化する。クラスslaveAは、バスモデル又はマスターモデルからアクセスされる共通化インタフェースcommon_intfを実装するために、共通化インタフェースcommon_intfを継承している。
クラスslaveAは、共通化インタフェースcommon_intfで宣言される関数read,write,request,isGrantを実装している。クラスslaveAは、スレーブモデルに必要な関数だけではなく、本来スレーブモデルには不要な関数である関数request,isGrantをも実装している。バスモデルの記述と共通化させるためである。このように冗長な関数を実装することにより、バスを抽象化したアクセスが可能となる。
図3〜図5の記述は、SystemC言語等の公知の技術を用いることによって実現することができる。
図6は、図2の共通化ポート及び共通化インタフェースを利用した場合のマスターモデルとスレーブモデルとの間の接続の記述例を示す図である。図6の関数mainは、図1の半導体回路100のような通常接続をしたモデルを用いて高精度シミュレーションを行う場合のために、マスターモデル−バスモデル間の接続を表す記述(i_masterA->port(i_bus))と、バスモデル−スレーブモデル間の接続を表す記述(i_bus->port(i_slaveA))とを有している。また、関数mainは、図1の半導体回路200のような抽象化接続をしたモデルを用いて高速な抽象化シミュレーションを行う場合のために、マスターモデルとスレーブモデルとの間のバスモデルを介さないダイレクトな接続を表す記述(i_masterA->port(i_slaveA))をも有している。
プロセッサは、シミュレーションに必要とされる精度に応じて、高精度シミュレーション又は抽象化シミュレーションを選択して実行する。
以上のように、共通化ポート、及び共通化インタフェースを用いることにより、バスのアクセスを抽象化した抽象化シミュレーションを行うことができる。
なお、シミュレーション開始時に、高精度シミュレーション又は抽象化シミュレーションのいずれかを選択するようにしてもよいし、シミュレーション中に、条件に応じて高精度シミュレーション又は抽象化シミュレーションのいずれかを切り替えて行うようにしてもよい。
以上の例では、マスターモデル−バスモデル間で利用するインタフェースの方が、バスモデル−スレーブモデル間で利用するインタフェースよりも使用する関数が多く、複雑であった。以上の例と同様に、マスターモデル−バスモデル間で利用するインタフェースの全関数と、バスモデル−スレーブモデル間で利用するインタフェースの全関数とを、共通化インタフェースcommon_intfで定義するようにすれば、バスモデル−スレーブモデル間で利用するインタフェースの方が、マスターモデル−バスモデル間で利用するインタフェースよりも使用する関数が多く、複雑であったり、マスターモデル−バスモデル間で利用するインタフェースと、バスモデル−スレーブモデル間で利用するインタフェースとが、それぞれ独自の関数を使用するようにしてもよい。
また、スレーブモデルで冗長な関数を実装する例について説明したが、マスターモデルで冗長な関数を実装するようにしてもよい。
図7は、共通化ポート及び共通化インタフェースの他の記述例を示す図である。図7では、バスモデル−スレーブモデル間では不要な関数request,isGrantを実装している。このように、インタフェースで冗長な関数を実装するようにしてもよい。
図8は、図7の共通化ポート及び共通化インタフェースを利用したスレーブモデルの記述例を示す図である。マスターモデルの記述、バスモデルの記述、マスターモデルとスレーブモデルとの間の接続の記述は、それぞれ図3,図4,図6と同様である。関数request,isGrantを図7の共通化インタフェースにおいて実装しているので、図8のスレーブモデルには、これらの関数の実装をしなくてもよくなる。
図7においても、マスターモデル−バスモデル間で利用するインタフェースの全関数と、バスモデル−スレーブモデル間で利用するインタフェースの全関数とを、共通化インタフェースcommon_intfで実装している。このため、バスモデル−スレーブモデル間で利用するインタフェースの方が、マスターモデル−バスモデル間で利用するインタフェースよりも使用する関数が多く、複雑であってもよく、マスターモデル−バスモデル間で利用するインタフェースと、バスモデル−スレーブモデル間で利用するインタフェースとが、それぞれ独自の関数を使用するようにしてもよい。
図9は、本発明の実施形態に係るシミュレーション方法が対象とする、複数のマスターブロック及び複数のスレーブブロックを有する半導体集積回路の例を示すブロック図である。図9の半導体集積回路は、図1の半導体集積回路100において、マスターブロックとしてのCPU162と、スレーブブロックとしてのハードウェア166とを更に備えたものである。CPU162は、ソフトウェア152を実行する。
CPU162は、ポート172を有しており、インタフェース174を利用してバス114にアクセスする。バス114は、ポート176を有しており、インタフェース178を利用してハードウェア166にアクセスする。
ポート172及びインタフェース174は、ポート122及びインタフェース124とそれぞれ共通化される場合がある。これは、当業者であれば、比較的簡単に実現することができる(例えば、非特許文献1におけるsimple_bus_unified_master_ifに関する技術を参照)。
図10は、図9の半導体集積回路のシミュレーションを制御部を用いて行う場合の概念図である。図9のように、バスに複数のスレーブブロックが接続されている場合には、マスターブロックはスレーブブロックを選択する必要がある。そこで、シミュレーションを行う際に、プロセッサは、制御部22を用いる。
プロセッサは、図3〜図5を参照して説明したように、CPU112,162をマスターモデルに、バス114をバスモデルに、ハードウェア116,166をスレーブモデルにモデル化する。
プロセッサは、スレーブモデルへのアクセスのシミュレーションを次のように実行する。すなわち、マスターモデル(CPU112)に、まず、制御部22へのアクセス(抽象化アクセスAC1)を行わせる。このアクセスは、マスターモデルが共通化インタフェースから呼び出すことで実施できる。制御部22には、マスターモデルのアクセス先のアドレスに従って、複数のスレーブモデルからアクセス先のスレーブモデルを選択させ、選択されたスレーブモデルの機能を実現する関数を呼び出させる(抽象化アクセスAC2)。このとき用いられるアドレスは、ワードアドレス、ハーフワードアドレス、又はバイトアドレスのいずれかである。
制御部22には、アドレスと複数のスレーブモデルとの間の対応関係を示す情報や、各スレーブモデルの機能を実現する関数とスレーブモデルとの間の対応関係を示す情報を格納しておく。この対応関係を示す情報は、例えば、複数のスレーブモデル及び複数の関数のうちの少なくとも1つと、それぞれに対応するアドレスの範囲とを示す情報であってもよい。この場合、制御部22が管理する情報を削減することが可能となる。また、この対応関係を示す情報は、複数のスレーブモデル及び複数の関数のうちの少なくとも1つと、それぞれに対応する、所定のデータのビットフィールドとを示す情報であってもよい。
高精度シミュレーションと抽象化シミュレーションとの切り替えを行う場合には、切り替えの前後でつじつまがあうようにする必要がある。ハードウェア116がDMA機能を備えている場合を想定する。ソフトウェア102を実行するCPU112が、DMA転送を実施するための設定を抽象化アクセスAC1によって行うと、ハードウェア116では、DMA転送機能を実現する関数が、制御部22から抽象化アクセスAC2によって呼び出される。
転送元アドレスから転送先アドレスへ1ワード転送する場合、このことがアクセスASによって制御部22へ伝わり、転送元アドレスと転送先アドレスとの間のデータ転送が処理される。このとき、遅延値が制御部22に渡され、遅延時間後にその処理が実施される。
この遅延値は、静的又は動的に与えることができる。静的な与え方としては、シミュレーションの実行前に、例えば、関数毎に遅延値をユーザが設定してもよいし、転送元及び転送先のメモリの遅延情報をそれぞれのモデルから得て、これに基づいて遅延値を設定してもよい。また、動的な与え方としては、例えば、高精度シミュレーションをその時点から実施し、転送が完了するまでの時間を求め、得られた値を遅延値として用いるようにする。
静的に与える場合には、遅延値を与えることが高速に可能となる。動的に与える場合には、遅延値を得るために時間がかかるが、高精度なシミュレーションが実施可能となる。これらの与え方は、目的に応じて使い分けることができる。また、シミュレーション中に、遅延値の与え方を動的にするか静的にするかを決定するようにしてもよい。
次に、バスを介した高精度シミュレーションと、バスを介さない抽象化シミュレーションとを切り替えて、効率よくシミュレーションを実行する方法について説明する。
図11は、抽象化シミュレーション後、同じ区間の高精度シミュレーションを再度実行する場合について示すタイミングチャートである。図11では、シミュレーション時刻T0から高精度シミュレーションを実行して、シミュレーション結果RH1,RH2を得た後、時刻T1から精度を切り替えて抽象化シミュレーションを実行して、シミュレーション結果RL3,RL4を得ている。ところが、時刻T2で例えば不具合が発見され、時刻T1から時刻T2までの高精度なシミュレーション結果が必要になる場合がある。
このような場合、通常は、時刻T0から高精度シミュレーションを再度実行する必要がある。そこで、時刻T1におけるシミュレーションの状態を、時刻T2におけるシミュレーションの状態に基づいて、シミュレーション結果RL3,RL4を利用して復元し、その後、時刻T1から高精度シミュレーションを実行する。すると、時刻T1から時刻T2までの高精度なシミュレーション結果RH3,RH4を得ることができる。時刻T0と時刻T1との間のシミュレーション時間が長いほどこのような方法の効果が大きい。
図12は、システムのアドレス空間と、必要とされるシミュレーション精度との対応表である。図12の対応表のように、アクセス先のアドレスと、必要とされるシミュレーションの精度との対応関係を予め設定しておく。
例えば、RTL(register transfer level)モデル等は高精度シミュレーションが必要であるので、RTLモデルに割り当てられたアドレス空間を、高精度シミュレーションの対象とするアドレス空間として指定する。動作モデル等には高精度シミュレーションが必要ではないので、動作モデルが割り当てられたアドレス空間を、抽象化シミュレーションの対象とするアドレス空間として指定する。また、特に指定されていないアドレス空間については、シミュレーション時に指定する精度でシミュレーションを実行する。
図13は、図12の対応表を利用してシミュレーション精度を切り替える処理についてのフローチャートである。まず、シミュレーションを実行し(ステップS12)、マスターモデルからバスアクセスが発生したか否かを判定する(ステップS14)。発生した場合にはステップS16に進み、発生しなかった場合にはステップS20に進む。
ステップS16では、図12の対応表を参照し、ステップS18では、該当するアドレス空間に対して図12で指定されているシミュレーション精度でシミュレーションを実行する。ステップS20では、シミュレーションが完了しているか否かを判定する。完了している場合には処理を終了し、完了していない場合にはステップS12に戻る。
図14は、高精度のシミュレーション結果を必要とするハードウェアを有する半導体集積回路の例を示すブロック図である。図14の半導体集積回路300,400は、それぞれ、図1の半導体集積回路100,200において、ハードウェア116に代えてハードウェア146とアクセス変換部148とを備えるようにしたものである。その他の構成要素については、図1を参照して説明したものと同様である。
ハードウェア146は、例えばRTL回路であって、RTLモデルにモデル化されており、一般に高精度のシミュレーション結果を必要とする。アクセス変換部148は、RTL回路へアクセスするためのアクセス関数を実装している。
半導体集積回路300を対象として、ハードウェア146のモデルへバスを介さずにアクセスする抽象化シミュレーションが行われる。シミュレーション中にハードウェア146のモデルへのアクセスが検出されると、半導体集積回路400を対象とした高精度シミュレーションへ切り替える。これにより、図12のような対応表がなくても、動的にRTLモデルを検出して高精度シミュレーションに切り替えることが可能になる。
図15は、CPUにより実行されるソフトウェアから、精度を必要としない処理を検出して、抽象化シミュレーションを行うようにするための前処理についてのフローチャートである。図16は、図15の処理の対象とされるソフトウェアのソースコードの例を示す図である。図1、図15及び図16を参照して説明する。図15の処理は、CPU112がソフトウェア102を実行する前に行われる。
まず、ステップS32では、図16に示されたCPU112用のソフトウェア102のソースコードの中から基本ブロックを選択する。ステップS34では、その基本ブロックがループ処理であるか否かを判断する。ループ処理である場合にはステップS36に進み、ループ処理ではない場合にはステップS40に進む。
ステップS36では、選択された基本ブロックが抽象化シミュレーション可能であるか否かを判断する。例えば、ポーリング処理を行う場合には、シミュレーションには精度を必要とせず、抽象化シミュレーション可能であるので、ステップS36では、その基本ブロックでポーリング処理を行うか否かを判断する。すなわち、そのループを抜けるための条件として、特定アドレスのメモリの値を参照する処理以外に実質的な処理があるか否かを判断する。ここで、実質的な処理とは、直接シミュレーション結果に影響を与えない処理(例えばデバッグや表示用の処理)以外の処理である。
実質的な処理があると判断した場合(ポーリング処理を行わず、抽象化シミュレーション可能ではないと判断した場合)にはステップS40に進み、実質的な処理がないと判断した場合(ポーリング処理を行い、抽象化シミュレーション可能と判断した場合)にはステップS38に進む。図16の場合には、ステップS36において、基本ブロックBが抽象化シミュレーション可能であると判断される。
ステップS38では、抽象化シミュレーションを実行するための指定をソフトウェア102のコードに挿入する。図16においては、以後、抽象化シミュレーションを実行するように指定する関数を挿入している。ステップS40では、ソースコードの最終行まで処理を終えたか否かを判断する。最終行まで処理を終えた場合には処理を終了し、終えていない場合にはステップS32に戻る。
以上のようなソースコードの解析をシミュレーションの実行前に行っておき、ソフトウェアのどの部分を抽象化シミュレーションすべきであるかについての情報を取得しておく。シミュレーションの実行時には、例えばプログラムカウンタの値を参照して、基本ブロックBについては抽象化シミュレーションを行う。
図17は、CPUによるソフトウェアの実行中に、精度を必要としない処理を検出して、抽象化シミュレーションを行うようにするための処理についてのフローチャートである。ステップS52では、CPU112にソフトウェア102の1命令を実行させる。ステップS54では、実行された命令が、例えばNOP(no operation)命令のように精度を必要としない処理であるか否かを判断する。実行された命令がNOP命令である場合にはステップS56に進み、そうでない場合にはステップS58に進む。ステップS56では、NOP命令について抽象化シミュレーションを実行する。ステップS58では、シミュレーションが完了したか否かを判断する。完了した場合には処理を終了し、完了していない場合には、ステップS52に戻る。
図17の処理によると、高精度シミュレーションを行っている際に、動的に抽象化シミュレーションに切り替えることができる。
以上のように、本発明によると、シミュレーションの精度が高くなくてもよい場合には、シミュレーションの高速化を図り、かつ、必要に応じて高精度のシミュレーションを行うことができる。したがって、必要な精度のシミュレーション結果を得ながら、シミュレーションを高速化することができる。
以上の実施形態では、マスターブロックとしてCPUを用いる場合について説明したが、DMAC、ハードウェアコントローラ等のハードウェアエンジンをマスターブロックとして用いてもよい。
また、制御部22を備えるものとして説明したが、制御部22を備えず、ソフトウェアや、特定のハードウェアモデルによって同様の機能を実現するようにしてもよい。
以上説明したように、本発明は、半導体集積回路のシミュレーション等について有用である。
本発明の実施形態に係るシミュレーション方法が対象とする半導体集積回路の例を示すブロック図である。 共通化ポート及び共通化インタフェースの記述例を示す図である。 図2の共通化ポート及び共通化インタフェースを利用したマスターブロックの記述例を示す図である。 図2の共通化ポート及び共通化インタフェースを利用したバスの記述例を示す図である。 図2の共通化ポート及び共通化インタフェースを利用したスレーブブロックの記述例を示す図である。 図2の共通化ポート及び共通化インタフェースを利用した場合のマスターブロックとスレーブブロックとの間の接続の記述例を示す図である。 共通化ポート及び共通化インタフェースの他の記述例を示す図である。 図7の共通化ポート及び共通化インタフェースを利用したスレーブブロックの記述例を示す図である。 本発明の実施形態に係るシミュレーション方法が対象とする、複数のマスターブロック及び複数のスレーブブロックを有する半導体集積回路の例を示すブロック図である。 図9の半導体集積回路のシミュレーションを制御部を用いて行う場合の概念図である。 抽象化シミュレーション後、同じ区間の高精度シミュレーションを再度実行する場合について示すタイミングチャートである。 システムのアドレス空間と、必要とされるシミュレーション精度との対応表である。 図12の対応表を利用してシミュレーション精度を切り替える処理についてのフローチャートである。 高精度のシミュレーション結果を必要とするハードウェアを有する半導体集積回路の例を示すブロック図である。 CPUにより実行されるソフトウェアから、精度を必要としない処理を検出して、抽象化シミュレーションを行うようにするための前処理についてのフローチャートである。 図15の処理の対象とされるソフトウェアのソースコードの例を示す図である。 CPUによるソフトウェアの実行中に、精度を必要としない処理を検出して、抽象化シミュレーションを行うようにするための処理についてのフローチャートである。
符号の説明
22 制御部
112,162 CPU(マスターブロック)
114 バス
116,146,166 ハードウェア(スレーブブロック)
148 アクセス変換部
122,126,172,176 ポート

Claims (14)

  1. マスターブロックと、スレーブブロックと、前記マスターブロックと前記スレーブブロックとの間を接続するバスとを有する半導体集積回路を対象とするシミュレーション方法であって、
    前記マスターブロックを、共通化ポートを有するマスターモデルにモデル化するステップと、
    前記スレーブブロックを、共通化インタフェースでアクセス可能なスレーブモデルにモデル化するステップと、
    前記バスを、前記マスターモデルと同一の共通化ポートを有し、前記共通化インタフェースでアクセス可能なバスモデルにモデル化するステップと、
    前記マスターモデルがその共通化ポートから前記共通化インタフェースを用いて前記バスモデルにアクセスし、前記バスモデルがその共通化ポートから前記共通化インタフェースを用いて前記スレーブモデルにアクセスするモデルについてシミュレーションを実行する高精度シミュレーションステップと、
    前記マスターモデルがその共通化ポートから前記共通化インタフェースを用いて前記バスモデルを介さずに前記スレーブモデルにアクセスするモデルについてシミュレーションを実行する抽象化シミュレーションステップとを備え、
    シミュレーションに必要とされる精度に応じて、前記高精度シミュレーションステップ又は前記抽象化シミュレーションステップを選択して実行する
    シミュレーション方法。
  2. 請求項1に記載のシミュレーション方法において、
    前記スレーブブロックをモデル化するステップは、
    複数のスレーブブロックを複数のスレーブモデルにそれぞれモデル化するものであり、
    前記抽象化シミュレーションステップは、
    アドレスと前記複数のスレーブモデルとの間の対応関係を示す情報に基づいて、前記マスターモデルがアクセスするアドレスに応じて、前記複数のスレーブモデルから選択を行い、選択されたスレーブモデルへのアクセスのシミュレーションを実行するものである
    ことを特徴とするシミュレーション方法。
  3. 請求項2に記載のシミュレーション方法において、
    前記対応関係を示す情報は、
    前記複数のスレーブモデルのうちの少なくとも1つと、それぞれに対応するアドレスの範囲とを示すものである
    ことを特徴とするシミュレーション方法。
  4. 請求項2に記載のシミュレーション方法において、
    前記対応関係を示す情報は、
    前記複数のスレーブモデルのうちの少なくとも1つと、それぞれに対応するビットフィールドとを示すものである
    ことを特徴とするシミュレーション方法。
  5. 請求項2に記載のシミュレーション方法において、
    前記アドレスは、
    ワードアドレス、ハーフワードアドレス、又はバイトアドレスのいずれかである
    ことを特徴とするシミュレーション方法。
  6. 請求項2に記載のシミュレーション方法において、
    前記半導体集積回路が実際に動作する際に処理に要する時間を設定するステップを更に備え、
    前記抽象化シミュレーションステップは、
    前記処理に要する時間を考慮してシミュレーションを実行するものである
    ことを特徴とするシミュレーション方法。
  7. 請求項6に記載のシミュレーション方法において、
    前記処理に要する時間を設定するステップは、
    前記高精度シミュレーションステップを行って、前記処理に要する時間を求め、得られた時間を設定するものである
    ことを特徴とするシミュレーション方法。
  8. 請求項1に記載のシミュレーション方法において、
    前記抽象化シミュレーションステップを行った後に、得られたシミュレーション結果に基づいて以前の時点におけるシミュレーション結果を求め、求められたその時点におけるシミュレーション結果を用いて前記高精度シミュレーションステップを実行する
    ことを特徴とするシミュレーション方法。
  9. 請求項1に記載のシミュレーション方法において、
    予め設定された、アクセス先のアドレスと必要とされるシミュレーション精度との対応関係に従って、前記高精度シミュレーションステップ又は前記抽象化シミュレーションステップを実行する
    ことを特徴とするシミュレーション方法。
  10. 請求項1に記載のシミュレーション方法において、
    RTL(register transfer level)モデルにアクセスする場合には、前記高精度シミュレーションステップを実行する
    ことを特徴とするシミュレーション方法。
  11. 請求項1に記載のシミュレーション方法において、
    前記マスターブロックにより実行されるソフトウェアから、精度を必要としない処理を検出して、前記精度を必要としない処理については抽象化シミュレーションを行うように指定する前処理ステップを更に備える
    ことを特徴とするシミュレーション方法。
  12. 請求項11に記載のシミュレーション方法において、
    前記前処理ステップは、
    前記精度を必要としない処理としてポーリング処理を検出するものである
    ことを特徴とするシミュレーション方法。
  13. 請求項1に記載のシミュレーション方法において、
    前記マスターブロックによるソフトウェアの実行をシミュレーションする際に、精度を必要としない処理を検出して、前記精度を必要としない処理については前記抽象化シミュレーションを行うようにする
    ことを特徴とするシミュレーション方法。
  14. 請求項13に記載のシミュレーション方法において、
    前記精度を必要としない処理としてNOP(no operation)命令を検出する
    ことを特徴とするシミュレーション方法。
JP2006028631A 2006-02-06 2006-02-06 半導体集積回路のシミュレーション方法 Pending JP2007207176A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2006028631A JP2007207176A (ja) 2006-02-06 2006-02-06 半導体集積回路のシミュレーション方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2006028631A JP2007207176A (ja) 2006-02-06 2006-02-06 半導体集積回路のシミュレーション方法

Publications (1)

Publication Number Publication Date
JP2007207176A true JP2007207176A (ja) 2007-08-16

Family

ID=38486558

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2006028631A Pending JP2007207176A (ja) 2006-02-06 2006-02-06 半導体集積回路のシミュレーション方法

Country Status (1)

Country Link
JP (1) JP2007207176A (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010097493A (ja) * 2008-10-17 2010-04-30 Fujitsu Ltd 設計支援プログラム、設計支援装置、およびシミュレーションモデル

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010097493A (ja) * 2008-10-17 2010-04-30 Fujitsu Ltd 設計支援プログラム、設計支援装置、およびシミュレーションモデル

Similar Documents

Publication Publication Date Title
US7246052B2 (en) Bus master and bus slave simulation using function manager and thread manager
US6571204B1 (en) Bus modeling language generator
US20140149728A1 (en) Data driven hardware chips initialization via hardware procedure framework
JP2005518575A (ja) Edaシミュレーション環境における複数のシミュレーション領域に関する同期
JP6005392B2 (ja) ルーティングのための方法及び装置
US20120029900A1 (en) Simulation method and system for simulating a multi-core hardware platform
EP3532936B1 (en) Debugging system and method
JP2001184226A (ja) メモリブロックを有するデジタルシステムおよびメモリのブロックのエミュレーティング方法
JP2004334410A (ja) 情報処理装置及びプロセッサ
US7761280B2 (en) Data processing apparatus simulation by generating anticipated timing information for bus data transfers
JP2007207176A (ja) 半導体集積回路のシミュレーション方法
US11392406B1 (en) Alternative interrupt reporting channels for microcontroller access devices
JP2007052783A (ja) データ処理装置のシミュレーション
JP2004021907A (ja) 性能評価用シミュレーションシステム
JP3214459B2 (ja) シミュレーション方法及び装置
JPH03656B2 (ja)
JP5630886B2 (ja) 半導体装置
JP5464676B2 (ja) 半導体装置
US11656796B2 (en) Adaptive memory consistency in disaggregated datacenters
US20230401082A1 (en) Multi-gpu device pcie topology retrieval in guest vm
JP2007328539A (ja) バスシステムおよびバススレーブならびにバス制御方法
JP2000293396A (ja) システム性能見積もり方法及びシステム性能見積もり装置
JP2007018440A (ja) アーキテクチャ検証装置
JP2007156728A (ja) 論理検証方法及び論理検証システム
JP2006155488A (ja) データ処理装置およびデータ処理方法