JP4945360B2 - 設計装置、設計方法及びプログラム - Google Patents

設計装置、設計方法及びプログラム Download PDF

Info

Publication number
JP4945360B2
JP4945360B2 JP2007196228A JP2007196228A JP4945360B2 JP 4945360 B2 JP4945360 B2 JP 4945360B2 JP 2007196228 A JP2007196228 A JP 2007196228A JP 2007196228 A JP2007196228 A JP 2007196228A JP 4945360 B2 JP4945360 B2 JP 4945360B2
Authority
JP
Japan
Prior art keywords
command
processing
data
data path
message
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 - Fee Related
Application number
JP2007196228A
Other languages
English (en)
Other versions
JP2009032086A (ja
JP2009032086A5 (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.)
Hitachi Ltd
Original Assignee
Hitachi 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 Hitachi Ltd filed Critical Hitachi Ltd
Priority to JP2007196228A priority Critical patent/JP4945360B2/ja
Priority to US11/970,568 priority patent/US7904856B2/en
Publication of JP2009032086A publication Critical patent/JP2009032086A/ja
Publication of JP2009032086A5 publication Critical patent/JP2009032086A5/ja
Application granted granted Critical
Publication of JP4945360B2 publication Critical patent/JP4945360B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Evolutionary Computation (AREA)
  • Geometry (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Design And Manufacture Of Integrated Circuits (AREA)

Description

本発明は、設計装置及び設計プログラムに関し、例えばストレージ装置に使用するLSI(Large Scale Integration circuit)論理回路を設計するための設計装置及び設計プログラムに適用して好適なものである。
従来、LSIの論理回路の設計は、RTL(Register Transfer Level)の抽象度で設計され、データフロー制御を行なうために状態遷移図を用いて行なわれていた。ここでRTLとは、LSI設計の抽象度を表す。RTLでは、レジスタ−レジスタ単位でデータの流れを記述するが、このRTLの記述には、VHDL(VHSIC Hardware Description Language)やVerilog−HDLといった抽象度の低いハードウェア記述言語(HDL:Hardware Description Language)が用いられる。そしてRTLで記述されたHDLのソースコードは、この後、論理合成ツールと呼ばれるソフトウェアを用いてIC(Integrated Circuit)セルを接続したネットリストと呼ばれる回路図に変換される。
上述のような状態遷移図を用いたLSI設計作業では、状態遷移図の作成後に人手により1つ1つの状態遷移の流れを検証してゆく必要があるが、ストレージ装置用途の高性能なLSIになると、複雑なデータフロー仕様から状態遷移図(FSM:Finite State Machine)で記述されたステートマシンの状態数や条件数が増加する。このため、このようなLSI設計作業では、状態遷移の流れを検証してゆく際に検証漏れや、バグの混入等による設計品質の低下が発生し易く、LSIの再製によるロストコストが増加する問題がある。
これに対して、近年では、品質改善や生産性の向上を目的として、RTLからコマンドごとに動作を切り出したビヘイビアレベルに抽象度を上げる方法が導入されつつある(例えば特許文献1参照)。ビヘイビアレベルを用いたLSI設計では、コマンドがC言語やSystem C(拡張C言語)といった高級言語を用いて記述される。そして、ビヘイビアレベルで記述されたコマンドは、この後、高位合成ツール(High Level Synthesis Tool)と呼ばれるソフトウェアを用いてRTLで記述されたHDLのソースコードに変換され、さらにこの後論理合成ツール(Logic Synthesis Tool)を用いてネットリスト(回路図)に変換される。
特開2007−42085号公報
ところで、ビヘイビアレベルの設計で利用される高位合成には、コマンドごとにデータパス回路が生成されるため、回路規模及びコストが従来のRTLによる設定手法よりも大きくなるという問題(第1の問題点)があり、また回路リソースシェアを機械的に行なうため、制御系資源とデータ系資源に分離した実用的な資源共有制御を行なえないという問題(第2の問題点)があった。
実際上、一般的な高位合成のアルゴリズムでは、1つのビヘイビア(ハードウェアの一連の処理の流れ)に対して1組のステートマシンとデータパスとを生成する。そして高位合成処理では、この1つのデータパスの中でリソースシェアを行なうため、1コマンドに対しては従来の設計手法よりも回路規模を削減することが可能である。
しかしながら、かかる第1の問題点について、従来の高位合成処理では、複数組のステートマシンとデータパスとに跨ってリソースシェアを行なうことができないため、コマンド数が増加すると、これに応じてデータパス回路が生成されることとなる。ストレージ装置に代表されるコンピュータ向けのLSIでは、単一データパス上に複数の命令が実行される特徴があることから、回路規模及びコスト面で高位合成は不向きであった。
また第2の問題点について、一般的な論理設計では、カウンタ回路や比較器など制御を司る論理回路については制御系資源とし、データレジスタやアドレスレジスタ、データ演算器などのデータ転送に特化した論理回路についてはデータ系資源として、これら制御系資源とデータ系資源とを分離して設計する。これは、制御系資源とデータ系資源を分離することで回路構造の可読性や保守性を高め、データエラーなどの障害に制御を巻き込まれないようにするためである。また制御系論理は、比較的小規模な回路で構成されることから、リソース共有による回路規模削減効果が小さいという理由もある。
これに対して高位合成処理では、ステートマシン以外はデータパスとして機械的にリソースシェアすることから、制御系資源とデータ系資源とが混在した回路が生成される。このため高位合成で生成されるRTLは、可読性や保守性又は回路品質の面から従来のRTL設計手法に対して劣っているという問題がある。
本発明は以上の点を考慮してなされたもので、回路規模が小さく、保守性及び品質の高い回路設計を行い得る設計装置、設計方法及びプログラムを提案しようとするものである。
かかる課題を解決するため本発明においては、回路を設計するための設計装置において
回路設計のためのハードウェアの一連の処理の流れがビヘイビアレベルで記述された複数のコマンドを、それぞれ制御に関する動作が記述された制御系ビヘイビアと、データ処理に関する動作が記述されたデータ系ビヘイビアとに分離するコマンド分離部と、各前記コマンドの前記データ系ビヘイビアを1又は複数のビヘイビアに統合する統合部と、各前記コマンドの前記制御系ビヘイビアと、各前記コマンドの前記データ系ビヘイビアの1又は複数を統合してなる前記ビヘイビアとをそれぞれ高位合成処理する高位合成処理部と、を備え、前記コマンド分離部は、ハードウェア記述言語を用いて記述された動作処理のうち前記コマンドが実行する処理内容の1構文を示す処理ノード及びハードウェア記述言語を用いて記述された動作処理のうち前記コマンドが実行する状態遷移処理の条件文を示す遷移条件ノードをそれぞれ字句分割した処理ノードトークン及び遷移条件ノードトークンに基づいて、当該コマンドを前記制御系ビヘイビアと前記データ系ビヘイビアとに分離することを特徴とする。
また本発明においては、設計プログラムにおいて、コンピュータが備えるコマンド分離部により、回路設計のためのハードウェアの一連の処理の流れがビヘイビアレベルで記述された複数のコマンドを、それぞれ制御に関する動作が記述された制御系ビヘイビアと、データ処理に関する動作が記述されたデータ系ビヘイビアとに分離する第1のステップと、
前記コンピュータが備える統合部により、各前記コマンドの前記データ系ビヘイビアを1又は複数のビヘイビアに統合する第2のステップと、前記コンピュータが備える高位合成処理部により、各前記コマンドの前記制御系ビヘイビアと、各前記コマンドの前記データ系ビヘイビアの1又は複数を統合してなる前記ビヘイビアとをそれぞれ高位合成処理する第3のステップと、からなる処理を実行させる設計プログラムであって、前記第1のステップでは、前記コマンド分離部が、ハードウェア記述言語を用いて記述された動作処理のうち前記コマンドが実行する処理内容の1構文を示す処理ノード及びハードウェア記述言語を用いて記述された動作処理のうち前記コマンドが実行する状態遷移処理の条件文を示す遷移条件ノードをそれぞれ字句分割した処理ノードトークン及び遷移条件ノードトークンに基づいて、当該コマンドを前記制御系ビヘイビアと前記データ系ビヘイビアとに分離することを特徴とする。
本発明によれば、カウンタ回路や比較器などの制御系資源と、データレジスタやアドレスレジスタ、データ演算器などのデータ系資源とが分離されて設計される。かくするにつき、最終的に得られる回路構造の可読性や保守性を高め、品質の高い回路設計を行なうことができる。
また本発明によれば、制御系ビヘイビアから分離した各コマンドのデータ系ビヘイビアを1つのビヘイビアに統合するようにしているため、複数のステートマシンに跨ってデータパス論理の中でのリソースシェアを行なうことができる。かくするにつき、最終的に得られる回路構造の規模を格段的に削減することができる。
以下図面について、本発明の一実施の形態を詳述する。
(1)本実施の形態による設計装置の構成
図1において、1は全体として本実施の形態によるLSI設計装置を示す。このLSI設計装置1は、ストレージ装置用途のLSIの設計に適したものであり、コンピュータ本体2、操作端末3及びディスプレイ4から構成される。
コンピュータ本体部2は、メモリ10、CPU(Central Processing Unit)11及び外部記憶装置12を備える。
メモリ10は、主としてLSI設計用ツールを保持するために用いられる。具体的には、LSI設計ツールとして、例えば特開2007−42085号公報に開示されているような仕様モデルを生成するための市販のソフトウェアである仕様モデル生成ツール(Spec Authoring Tool)13と、後述するデータパスシェアプログラム14と、高位合成処理を行うための市販のソフトウェアである高位合成ツール15と、高位合成ツール15により生成された回路図をディスプレイ4に表示するための市販のソフトウェアである回路図ビューア16となどがメモリ10に保持される。
またCPU11は、LSI設計装置1全体の動作制御を司るプロセッサである。CPU11がメモリ10に格納されたLSI設計用ツールを実行することにより、LSI設計装置1全体として後述のような各種の処理を実行する。さらに外部記憶装置12は、例えばハードディスク装置から構成されるもので、各LSI設計ツールが使用する各種パラメータが格納される。設計者が入力した入力データ17や、後述の設計データベース18、回路ライブラリ18及び設計データ20などもこの外部記憶装置12に保持される。
操作端末3は、ユーザがLSI設計装置1を操作するために用いられるもので、キーボードやマウスなどから構成される。またディスプレイ4は、各種のGUI(Graphical User Interface)や情報を表示するためのものであり、CRT(Cathode Ray Tube)や液晶パネルなどが適用される。
(2)本実施の形態によるLSI設計手法
(2−1)本実施の形態によるLSI設計手法の概要
図2は、従来のRTLを用いたLSI設計手法の概要を示す。このLSI設計手法では、状態遷移図でなる制御論理30及びデータパスでなるデータパス論理31を人手で作成する。そしてこのような作業により得られたRTLで記述されたHDLのソースコードを、論理合成ツール32を用いてネットリスト33に変換する。
また図3は、ビヘイビアレベルを用いたLSI設計手法の概要を示す。このLSI設計手法では、データフローを互いに排他動作する複数のコマンド34としてビヘイビアレベルで記述し、これらコマンド34を高位合成ツール35を用いてRTLで記述された制御論理35及びデータパス論理36にそれぞれ変換する。そして、この後、これらコマンド34ごとの制御論理35及びデータパス論理36をそれぞれ論理合成ツール37を用いてネットリスト38に変換する。
一方、図3との対応部分に同一符号を付した図4は、本実施の形態によるLSI設計手法の概要を示す。本実施の形態によるLSI設計手法は、基本的には上述のビヘイビアレベルを用いたLSI設計手法のアルゴリズムと同様であるが、高位合成の前処理として、各コマンド34を制御に関するビヘイビア(以下、これを制御系ビヘイビアと呼ぶ)とデータ転送に関するビヘイビア(以下、これをデータ系ビヘイビアと呼ぶ)とに分離し、各コマンド34のデータ系ビヘイビアを1つのビヘイビア(以下、適宜、これをデータパス階層と呼ぶ)41としてまとめる処理を行う点を特徴の1つとしている。
そして本実施の形態によるLSI設計手法では、このようにして得られた各コマンドの制御系ビヘイビア(以下、適宜、これらをコマンド階層と呼ぶ)40と、データパス階層41とを高位合成ツール35を用いてRTLで記述された制御論理42及び制御系論理(制御パス)43と、データ系論理(データパス)44とにそれぞれ変換する。そして、この後、これらコマンド34ごとの制御論理42及び制御系論理43並びにデータ系論理44をそれぞれ論理合成ツール37を用いてネットリスト45に変換する。
図5は、このような本実施の形態によるLSI設計手法を用いた設計作業のうち、高位合成処理までの作業の流れを示している。本実施の形態によるLSI設計手法を用いた設計作業では、まず、設計者がLSI設計装置1の仕様モデル生成ツール13(図1)を用いて必要なコマンド34をビヘイビアレベルで記述する(SP1)。また設計者は、この後この仕様モデル生成ツール13を用いて、コマンドをグルーピング(ポートシェアや排他制御論(アービタ)生成)して設計データベース18を生成する(SP2)。
続いて、設計者は、データパスシェアプログラム14(図1)を起動し、高位合成の前処理としてのデータパスシェア処理を実行させる。かくして、このときLSI設計装置1は、データパスシェアプログラム14に基づいて、各コマンドを制御系ビヘイビア40と、データ系ビヘイビアとに分離すると共に、各コマンドのデータ系ビヘイビアを1つのビヘイビア41としてまとめる。そしてLSI設計装置1は、このような処理により得られた新たな設計データにより設計データベース18を更新する(SP3)。
この後、設計者は、高位合成ツール15(図1)を起動して、ステップSP3において更新した設計データベース18と、LSI設計装置1の外部記憶装置12(図1)に予め格納されている回路ライブラリ19とに基づいて高位合成処理を実行させる(SP4)。
なお、図5のステップSP1において作成されるビヘイビアモデルの一例を図6及び図7に示す。図6は、マスタ50からの「0x0A」という命令コードで起動し、その後マスタ50から与えられるDIN0及びDIN1というデータを加算してメモリ52に書き込む処理を8回繰り返すというコマンド(「コマンドA」)51AをUML(Unified Modeling Language)表記したものである。また図7は、マスタ50からの「0x0B」という命令コードで起動し、その後マスタ50から送信されるDIN2及びDIN3というデータを加算してメモリ52に書き込む処理を8回繰り返すというコマンド(「コマンドB」)51BをUML表記したものである。
これら図6及び図7において、各コマンド51A,51Bの生存線54A,54B上に配置された活性化シンボル56A,56Bは、そのコマンド51A,51B内における1つのステート(状態)を表現している。また活性化シンボル56A,56Bの左側に表記された文字列は処理コードと呼ばれるもので、そのステートにおいて実行すべき処理内容を表している。
さらにマスタ50の生存線53から各コマンド51A,51Bの活性化シンボル56A,56Bに向かう矢印はそのコマンド51A,51Bへの入力メッセージを表し、これら活性化シンボル56A,56Bからマスタ50やメモリ52の生存線54A,54Bに向かう矢印はそのコマンド51A,51Bからの出力メッセージを表している。
これらの矢印上に表記されている文字列のうち、アンダーラインが引いてある文字列はフラグを表し、アンダーラインが引いていない文字列は変数値の受け渡しを表す。また図中「[CNT !=0x00]」は、同じ動作を連続する条件を示しており、ここではカウンタの値が「0x00」となるまで同じ動作を繰り返すことを表している。
このようなビヘイビアモデルのUML表記方法については、特開2007−42085号公報を参照されたい。なお、図6及び図7では、設計者により定義されたローカル変数を右上の枠57A,57B内に表記している。
図8は、図6及び図7のビヘイビアモデルに基づいて仕様モデル生成ツール13(図1)により作成される設計データベース18上でのビヘイビアモデルの構造例を示している。この図8に示すように、設計データベース18上のビヘイビアモデルでは、マスタ50と、設計対象のブロック60との間に、マスタ50及びブロック60間(ここではマスタ50及び「コマンドA」間と、マスタ50及び「コマンドB」間)でやり取りされる変数値にそれぞれ対応させてチャネル61A〜61Hが定義される。
またブロック60内には、例えば入力メッセージの振り分けを行なう受信ブロック62と、設計者が設計した各コマンド(ここでは「コマンドA」及び「コマンドB」)63A,63Bから構成される排他グループ63と、例えば出力メッセージの選択を行なう送信ブロック64と、排他グループ63内のコマンド階層63A,63B間の排他制御を行なうアービタ65とが定義される。
そして受信ブロック62と排他グループ63内の各コマンド階層63A,63Bとの間には、それぞれマスタ50及びそのコマンド階層63A,63B間でやり取りされる変数値にそれぞれ対応させてチャネル66A〜66Jが定義され、各コマンド階層63A,63B及び送信グループ64間には、それぞれそのコマンド階層63A,63B及びメモリ65間でやり取りされる変数値にそれぞれ対応させてチャネル67A〜67Lが定義される。また各コマンド階層63A,63B及びアービタ65間には、それぞれ送信用及び受信用のチャネル68A〜68Dが定義され、送信ブロック64及びメモリ52間には、各コマンド階層63A,63B及びメモリ52間でやり取りされる変数値にそれぞれ対応させてチャネル69A,69Bが定義される。なお、受信ブロック62及び送信ブロック64の構成をそれぞれ図9及び図10に示す。
図11は、図8のコマンドAの具体的な構成を示している。この図11において、「S0」〜「S4」はそれぞれ図6のいずれかの活性化シンボル56Aに対応するステートであり、「ABTBEGIN」及び「ABTEND」はアービタを取得し又は開放するためのステートである。
この図11では、ステートを表す枠70A〜70E内にそのステートの名称(1段目)と、そのステートに対する入力メッセージ及びその入力メッセージが入力されるチャネルの名称(2段目)と、そのステートにおける処理内容を表すステートアクション(3段目)とが表記されている。
またステートアクションを表す枠71A〜71K内には、そのステートアクションの名称(1段目)と、そのステートアクションが実行される条件(2段目)と、そのステートアクションの処理コード(3段目)と、そのステートアクションにおける出力値及びその出力値を出力するチャネルの名称(4段目)とが表記されている。
なお、「S2」というステートと「S3」というステートの間に表記されている「!(CNT!=0x00)」という文字列は遷移条件を表しており、ここではカウンタの値が「0x00」になったら「S2」というステートから「S3」というステートに遷移することを表している。
図12は、図5について上述した本実施の形態によるLSI設計手法を用いた設計作業のステップSP2において生成される設計データベース18の具体的な構成を示している。
この図12からも明らかなように、設計データベース18では、設計対象のブロック60(図8)の名称が格納された「Component」という名称のクラス18Aを最上位階層として、当該クラス18Aの下位階層に、そのブロック内に存在するコマンドや、アービタ、受信ブロック及び送信ブロック等の各ユニットの名称が格納された「Unit」という名称のクラス18Bと、そのブロック60内に存在する各チャネルのチャネル名及びチャネル属性が格納された「Channel」という名称のクラス18Cとが存在する。
また「Unit」というクラス18Bの下位階層には、かかる各ユニットの型、変数名及び初期値が格納された「Local Variable」という名称のクラス18Dがユニットごとに存在する。また「Unit」というクラス18Bの下位階層には、かかるユニットのうちの各コマンドとそれぞれ対応付けて、そのコマンド内に定義された各ステートの名称が格納された「State」という名称のクラス18Eが存在する。
さらに「State」という各クラス18Eの下位階層には、各ステートにそれぞれ対応させて、そのステートの型、変数名及び初期値が格納された「Local Variable」という名称のクラス18Fと、そのステート内に定義されたステートアクションの名称が格納された「State Action」という名称のクラス18Gとが存在する。
さらに「State Action」というクラス18Gの下位階層には、それぞれそのステートアクションにおけるフラグ条件値、データ入力値、データ/フラグ出力値、実行コード又は遷移条件がそれぞれ格納された「Condition」、「Input」、「Output」、「Text」及び「NextState Element」という名称のクラス18H〜18Lが存在する。
そして「State」というクラス18Eと「NextState Element」というクラス18Lとがリンクされ、「Channel」というクラス18Cと、「Condition」、「Input」及び「Output」という各クラス18H〜18Jとがリンクされている。
(2−2)データパスシェアプログラムのモジュール構成
図13は、データパスシェアプログラム14(図1)のモジュール構成を示している。データパスシェアプログラム14は、データパスシェア制御部80を最上位階層として、その下位階層に初期テーブル生成部81、データパス追出し設定部82及びデータパス階層生成部83が存在する。これら初期テーブル生成部81、データパス追出し設定部82及びデータパス階層生成部83は、必要時にデータパスシェア制御部80により呼び出される。
またデータパス追出し設定部82の下位階層には入力メッセージ初期化部84、出力メッセージ初期化部85及び処理ノードデータパス86が存在する。そしてこれら入力メッセージ初期化部84、出力メッセージ初期化部85及び処理ノードデータパス追出し部86は、必要時にデータパス追出し設定部82に呼び出される。さらにデータパス階層生成部83の下位階層には、処理ノード統合部87、入力メッセージ再構成部88及び出力メッセージ再構成部89が存在する。そしてこれら処理ノード統合部87、入力メッセージ再構成部88及び出力メッセージ再構成部89は、必要時にデータパス階層生成部83に呼び出される。
これら各モジュールの機能については、後述する。
(2−3)各内部テーブルの構成
図14は、データパスシェアプログラム14が管理する内部テーブルの関連を示している。この図14からも明らかなように、本実施の形態によるLSI設計装置1の場合、内部テーブルとしてローカル変数テーブル90、入力メッセージテーブル91、出力メッセージテーブル92、処理ノードテーブル93、処理ノードトークンテーブル94、遷移条件ノードテーブル95及び遷移条件ノードトークンテーブル96を備える。これら内部テーブルの関連性については、図31〜図34において説明する。
ローカル変数テーブル90は、図8について上述した排他グループ63内で使用されるローカル変数を管理するためのテーブルであり、図15に示すように、「コマンド階層」欄90A、「スコープ」欄90B、「変数名」欄90C、「型」欄90D、「初期値」欄90E、「データパス追出しフラグ」欄90Fから構成される。
このうち「コマンド階層」欄90Aには、そのローカル変数が定義されているコマンド階層の名称(「コマンドA」又は「コマンドB」)が格納され、「スコープ」欄90Bには、そのローカル変数が有効なスコープ範囲が格納される。例えば、そのローカル変数がコマンド階層内で有効な場合には「Unit」が格納され、そのローカル変数がそのコマンド内の個々のステート内でのみ有効な場合にはそのステート名が格納される。また「変数名」欄90Cには、そのローカル変数の名称が格納される。
また「型」欄90D及び「初期値」欄90Eには、それぞれそのローカル変数のタイプ及び初期値が格納され、「データパス追出しフラグ」欄90Fには、そのレコードに対応するローカル変数が制御系処理及びデータ系処理のいずれに対応するものであるかを表すデータパス追出しフラグが格納される。
また入力メッセージテーブル91は、コマンド階層に与えられる入力メッセージを管理するためのテーブルであり、図16に示すように、「コマンド階層」欄91A、「ステート名」欄91B、「接続先チャネル名」欄91C、「一時入力変数名」欄91D、「入力変数名」欄91E、「Input属性」欄91F、「接続先チャネル属性」欄91G、「メッセージ属性」欄91H及び「データパス追出しフラグ」欄91Iから構成される。
そして「コマンド階層」欄91Aには、その入力メッセージによってイベントが発生するコマンド階層の名称が格納され、「ステート名」欄には、そのコマンド階層内のステートのうち、その入力メッセージによって入力イベントが発生するステートの名称が格納される。また「接続先チャネル名」欄91Cには、その入力メッセージが入力されるチャネル61A〜61Hの名称が格納される。
また「一時入力変数名」欄91Dには、その入力メッセージが一時的に変換される変数の名称が格納され、「入力変数名」欄91Eには、その入力メッセージが変換される最終的なローカル変数の名称が格納される。ただし、入力変数名が定義されていないときには、「入力変数名」欄91Eに「NONE」が格納される。
「Input属性」欄91Fには、入力メッセージがデータ型メッセージ及びフラグ型メッセージのいずれであるかの情報が格納される。例えば、入力メッセージがデータ型メッセージのときには「input」、フラグ型メッセージのときには「condition」が格納される。この入力メッセージがデータ型メッセージ及びフラグ型メッセージのいずれであるかは、その入力メッセージが経由するチャネル66A〜66Jによって一意に定まる。また、各チャネル66A〜66Jに対して入力メッセージがデータ型メッセージ及びフラグ型メッセージのいずれであるかは予め定義される。
また「接続先チャネル属性」欄91Gには、その入力メッセージが経由するチャネル66A〜66Jの属性が格納される。このチャネル66A〜66Jの属性は、入力メッセージの種類に応じて予め定義されており、例えば、かかる入力メッセージがアービタ65(図8)からのものである場合には「arb」、かかる入力メッセージが受信ブロック62(図8)で振り分けられるタイプのものであるときには「share」、かかる入力メッセージが宛先(コマンド)を指定した通常メッセージのときには「normal」が格納される。
さらに「メッセージ属性」欄91Hには、その入力メッセージの属性が格納される。例えば、かかる入力メッセージが制御系メッセージのときには「ctl」、データ系メッセージのときには「data」、制御系メッセージ及びデータ系メッセージのいずれでもないときには「dummy」が格納される。後述のように、このメッセージの属性は、図17に示す判定仕様に従って判定される。
そして「データ追出しフラグ」欄91Iには、そのレコードに対応する入力メッセージが制御系処理及びデータ処理系処理のいずれに対応するかを表すデータ追出しフラグが格納される。なお、入力メッセージテーブル91におけるデータパス追出しフラグのデフォルト値は、対応する入力メッセージがデータ処理系メッセージであることを表す「TRUE」である。
一方、出力メッセージテーブル92は、各コマンドから出力される出力メッセージを管理するためのテーブルであり、図18に示すように、「コマンド階層」欄、92A「ステート名」欄92B、「ステートアクション名」欄92C、「接続先チャネル名」欄92D、「出力変数名」欄92E、「ビットサイズ」欄92F、「接続先チャネル属性」欄92G、「接続先チャネルサブ属性」欄92H、「接続先変数名」欄92I、「メッセージ属性」欄92J及び「データ追出しフラグ」欄92Kから構成される。
そして「コマンド階層」欄92Aには、その出力メッセージが出力されるコマンド階層の名称が格納され、「ステート名」欄92Bには、そのコマンド内の出力イベントが発生するステートの名称が格納される。また「ステートアクション名」欄92Cには、そのステート内のステートアクション(サブステート)のうちの出力イベントが発生するステートアクションの名称が格納され、「接続先チャネル名」欄92Dには、出力メッセージを出力するチャネル67A〜67L(図8)の名称が格納される。
また「出力変数名」欄92Eには、出力されるローカル変数の名称が格納され、「ビットサイズ」欄92Fには、そのローカル変数のビットサイズが格納される。さらに「接続先チャネル属性」欄92Gには、出力メッセージを出力するチャネル67A〜67Lの属性が格納される。この属性は、出力メッセージの種類に応じて異なり、例えば、かかる出力メッセージがアービタ65(図8)に対するものである場合には「arb」、かかる出力メッセージが送信ブロック64において振り分けられるタイプのものであるときには「share」、かかる出力メッセージが通常メッセージのときには「normal」が格納される。
「接続先チャネルサブ属性」欄92Hには、出力メッセージを出力するチャネル67A〜67Lのサブ属性が格納される。例えば、対応するチャネルのチャネル属性が「share」の場合、出力メッセージが送信ブロック64(図8)において選択される値のメッセージであるときには「data」、出力メッセージが送信ブロック64に選択を指示するフラグメッセージのときには「en」が格納される。なお対応するチャネル67A〜67Lのチャネル属性が「arb」の場合には「arb」、「normal」である場合には「data」となる。
さらに「接続先変数名」欄92Iには、接続先のコマンドで代入される変数名が格納され、「メッセージ属性」欄92Jには、その出力メッセージの属性が格納される。例えば、かかる出力メッセージが制御系メッセージのときには「ctl」、データ系メッセージのときには「data」が格納される。後述のように、このメッセージの属性は、図19に示す仕様書に従って判定される。
さらに「データパス追出しフラグ」欄92Kには、出力メッセージが制御系処理及びデータ処理系処理のいずれに対応するものであるかを表すデータ追出しフラグが格納される。具体的には、接続先のチャネル67A〜67Lの属性が「ctl」のときには「TRUE」、かかる属性が「data」のときには「FALSE」が格納される。なお、出力メッセージテーブル92におけるデータパス追出しフラグのデフォルト値は「TRUE」である。
他方、処理ノードテーブル93は、入力メッセージに応じてコマンドが実行する処理ノードを管理するためのテーブルであり、図20に示すように、「コマンド階層」欄93A、「ステート名」欄93B、「ステートアクション名」欄93C、「処理ノードID」欄93D、「処理ノード」欄93E及び「データパス追出しフラグ」欄93Fから構成される。
「処理ノード」欄93Eには、対応する処理ノードが格納され、「コマンド階層」欄93Aには、その処理ノードが実行されるコマンド階層の名称が格納される。また「ステート名」欄93Bには、そのコマンド階層内のその処理ノードが実行されるステートの名称が格納され、「ステートアクション名」欄93Cには、そのステート内のその処理ノードが実行されるステートアクションの名称が格納される。
また「処理ノードID」欄93Dには、その処理ノードに付与されたIDが格納され、「データパス追出しフラグ」欄93Fには、その処理ノードが制御系及びデータ系のいずれであるかを表すデータパス追出しフラグが格納される。なお、処理ノードテーブル93におけるデータパス追出しフラグのデフォルトは「TRUE」である。
さらに処理ノードトークンテーブル94は、処理ノードを字句分割することにより得られた処理ノードトークンを管理するためのテーブルであり、図21に示すように、「コマンド階層」欄94A、「ステート名」欄94B、「ステートアクション名」欄94C、「処理ノードID」欄94D、「処理ノードトークンID」欄94E、「処理ノードトークン」欄94F及び「データパス追出しフラグ」欄94Gから構成される。
このうち「処理ノードトークンID」欄94Eには、対応する処理ノードトークンに付与されたIDが格納され、「処理ノードトークン」欄94Fには、対応する処理ノードトークンが格納される。
また「コマンド階層」欄94A、「ステート名」欄94B、「ステートアクション名」欄94C、「処理ノードID」欄94D及び「データパス追出しフラグ」欄94Gには、処理ノードテーブル93(図20)の「コマンド階層」欄93A、「ステート名」欄93B、「ステートアクション名」欄93C、「処理ノードID」欄93D及び「データパス追出しチェック」欄93Fにそれぞれ格納される情報と同じ情報が格納される。
遷移条件ノードテーブル95は、状態遷移を行なうための条件文である遷移条件ノードを管理するためのテーブルであり、図22に示すように、「コマンド階層」欄95A、「ステート名」欄95B、「ステートアクション名」欄95C、「遷移条件ノードID」欄95D及び「遷移条件ノード」欄95Eから構成される。
そして「遷移条件ノード」欄95Eには、対応する遷移条件ノードが格納され、「コマンド階層」欄95Aには、その遷移条件ノードが実行されるコマンド階層の名称が格納される。また「ステート名」欄95Bには、そのコマンド階層内のその遷移条件ノードが実行されるステートの名称が格納され、「ステートアクション名」欄95Cには、そのステート内のその遷移条件ノードが実行されるステートアクションの名称が格納される。さらに「遷移条件ノードID」欄95Dには、その遷移条件ノードに付与されたIDが格納される。
また遷移条件ノードトークンテーブル96は、遷移条件ノードを字句分割することにより得られた遷移条件ノードトークンを管理するためのテーブルであり、図23に示すように、「コマンド階層」欄96A、「ステート名」欄96B、「ステートアクション名」欄96C、「遷移条件ノードID」欄96D及び「遷移条件ノードトークンID」欄96E及び「遷移条件ノードトークン」欄96Fから構成される。
そして「遷移条件ノードトークン」欄96Fには、遷移条件ノードトークンが格納され、「遷移条件ノートトークンID」欄96Eには、その遷移条件ノードトークンに付与されたIDが格納される。
また「コマンド階層」欄96A、「ステート名」欄96B、「ステートアクション名」欄96C及び「遷移条件ノードID」欄96Dには、遷移条件ノードテーブル95の「コマンド階層」欄95A、「ステート名」欄95B、「ステートアクション名」欄95C及び「遷移条件ノードID」欄95Dに格納された情報と同様の情報がそれぞれ格納される。
(2−4)データパスシェア処理
(2−4−1)データパスシェア処理の流れ
図24は、図5について上述した本実施の形態によるLSI設計手法を用いた設計作業において、高位合成の前処理として行なわれるデータパスシェア処理(SP3)に関するLSI設計装置1のCPU11(図1)の具体的な処理内容を示している。
CPU11は、図5のステップSP3に進むとデータパスシェア処理を開始し、まず、データパスシェア制御部80(図13)に基づいて初期テーブル生成部81(図13)を呼び出す。そしてCPU11は、この後、この初期テーブル生成部81に基づいて、設計データベース18から必要な情報を収集し、収集した情報を内部テーブルに展開することにより、初期状態の内部テーブルをそれぞれ生成する(SP10)。
続いてCPU11は、データパスシェア制御部80に基づいてデータパス追出し設定部82(図13)を呼び出し、このデータパス追出し設定部82と、その下位階層にある入力メッセージ初期化部84(図13)、出力メッセージ初期化部85(図13)及び処理ノードデータパス追出し部86(図13)とに基づいて、各内部テーブルのデータパス追出しフラグをそれぞれ設定する(SP11)。
この後CPU11は、データパスシェア制御部80に基づいてデータパス階層生成部83(図13)を呼び出し、このデータパス階層生成部83と、その下位階層にある処理ノード統合部87(図13)、入力メッセージ再構成部88(図13)及び出力メッセージ再構成部89(図13)とに基づいて、図8について上述した設計対象のブロック60内にデータパス階層40(図4)を生成し、ステップSP11において設定した各内部テーブルのデータパス追出しフラグを参照しながら、各コマンド34(図4)内の処理コードやメッセージをデータパス階層41に移動する(SP12)。
(2−4−2)初期テーブル生成処理
ここで、CPU11は、図24について上述したデータパスシェア処理のステップSP10に進むと図25に示す初期テーブル生成処理を開始し、まず、ローカル変数テーブル90(図15)を初期化する(SP20)。具体的には、CPU11は、設計データベース18から各コマンド階層について設定されたローカル変数の定義情報を収集し、これをローカル変数テーブル90に展開する。この際、CPU11は、ローカル変数テーブル90の各レコードのデータパス追出しフラグを一律に「TRUE」に設定する。
続いてCPU11は、入力メッセージテーブル91(図16)を初期化する(SP21)。具体的にCPU11は、設計データベース18から各コマンド階層への入力メッセージの情報を収集し、これを入力メッセージテーブル91に展開する。またCPU11は、各コマンド階層にそれぞれ接続された入力メッセージ用のチャネル66A〜66J(図8)のチャネル属性情報を設計データベース18から取得し、これを入力メッセージテーブル91に格納する。なおCPU11は、初期段階では、入力メッセージテーブル91上の各入力メッセージのメッセージ属性を「NULL」に設定し、データパス追出しフラグを一律に「TRUE」に設定する。
次いでCPU11は、出力メッセージテーブル92(図18)を初期化する(SP22)。具体的にCPU11は、設計データベース18から各コマンド階層からの出力メッセージの情報を収集し、これを出力メッセージテーブル92に展開する。またCPU11は、各コマンド階層にそれぞれ接続された出力メッセージ用のチャネル67A〜67Lのチャネル属性情報を設計データベース18から取得し、これを出力メッセージテーブル92に格納する。なおCPU11は、初期段階では、出力メッセージテーブル92上の各出力メッセージのメッセージ属性を「NULL」に設定し、データパス追出しフラグを一律に「TRUE」に設定する。
この後CPU11は、処理ノードテーブル93(図20)を初期化する(SP23)。具体的にCPU11は、設計データベース18から各コマンド階層内の各ステートアクションにそれぞれ含まれる処理コードの情報を取得する。この処理コードには、代入文や演算代入文及び関数呼び出しなどが含まれ、選択文や繰り返し文及び分岐文などは含まれない。また処理コードは、1構文ごとに分割されて処理ノードとして処理ノードテーブル93に格納される。例えば図26(A)に示すような処理コードの場合、図26(B)に示すように「WTDT=DIN0+DIN1;」という処理ノードと、「CNT--;」という処理ノードとに分割され、これら処理ノードが処理ノードテーブル93に格納される。なおCPU11は、処理ノードテーブル93上の各レコードのデータパス追出しフラグを一律「TRUE」に設定する。
続いてCPU11は、処理ノードトークンテーブル94(図21)を初期化する(SP24)。具体的にCPU11は、処理ノードテーブル93から1レコードずつ処理ノードを読み出し、読み出した処理ノードを字句分割する。そしてCPU11は、分割した字句(中間トークン)の中から変数部のみを処理ノードトークンとして処理ノードトークンテーブル94に格納する。従って、例えば図27に示すように、処理ノードが「WTDT=DIN0+DIN1;」であった場合(図27(A))、この処理ノードは「WTDT」、「=」、「DIN0」、「+」、「DIN0」及び「;」という字句に分割され(図27(B))、このうちの「WTDT」、「DIN0」及び「DIN0」という字句のみが処理ノードトークンとして処理ノードトークンテーブル94に格納されることになる(図27(C))。またCPU11は、この際、処理ノードトークンテーブル94上の各レコードのデータパス追出しフラグを一律「TRUE」に設定する。
次いでCPU11は、状態遷移ノードテーブル95(図22)を初期化する(SP25)。具体的にCPU11は、設計データベース18より各コマンドのステートアクションに含まれる遷移条件ノードを取得し、これを遷移条件ノードテーブル95に展開する。
この後CPU11は、状態遷移ノードトークンテーブル96(図23)を初期化する(SP26)。具体的にCPU11は、状態遷移ノードテーブル94から1レコードずつ遷移条件ノードを読み出し、読み出した遷移条件ノードを字句分割する。そしてCPU11は、分割した字句(中間トークン)の中から変数部のみを遷移条件ノードトークンとして状態遷移ノードトークンテーブル96に展開する。従って、例えば図28に示すように、遷移条件ノードが「CNT !=0x00」であった場合(図28(A))、この遷移条件ノードは「CNT」、「!=」及び「0x00」という字句に分割され(図28(B))、このうちの「CNT」という字句のみが遷移条件ノードトークンとして状態遷移ノードトークンテーブル96に格納されることとなる(図28(C))。
(2−4−3)データパス追出し設定処理
一方、CPU11は、この後、図24について上述したデータパスシェア処理のステップSP11に進むと図29に示すデータパス追出し設定処理を開始し、まず、入力メッセージ初期化部84(図13)に基づいて、入力メッセージテーブル91の各レコードについてメッセージ属性及びデータパス追出しフラグを設定する(SP30)。
具体的に、CPU11は、入力メッセージテーブル91から1レコードずつ入力メッセージを取り出し、取り出したレコードについて、図17に示したメッセージ属性判定様式に従ってメッセージ属性を設定することにより、接続先のチャネル66A〜66J(図8)をキー(key)とし、メッセージ属性を値(value)とするハッシュテーブルを生成する。
なお、同じチャネルが制御系処理及びデータ系処理の双方で使用されることがあるが、ハッシュテーブル上ではそれらのチャネルを1つにまとめ、その値を、その入力メッセージが制御系のものであることを意味する「ctl」、その入力メッセージがデータ系のものであることを意味する「data」、その入力メッセージが制御系及びデータ系のいずれでもないことを意味する「dummy」の優先順位で設定する。
この後CPU11は、生成したハッシュテーブルに従って、入力メッセージテーブル91の各レコードのメッセージ属性をそれぞれ設定する。またCPU11は、これと併せて、メッセージ属性が「ctl」のレコードについてはデータ追出しフラグとして「FALSE」、メッセージ属性が「data」のレコードについてはデータパス追出しフラグとして「TRUE」をそれぞれ設定する。
続いて、CPU11は、出力メッセージ初期化部85(図13)に基づいて、出力メッセージテーブル92(図18)の各レコードについてメッセージ属性及びデータパス追出しフラグを設定する(SP31)。
具体的に、CPU11は、出力メッセージテーブル92から1レコードずつ出力メッセージを取り出し、取り出したレコードについて、図19に示したメッセージ属性判定様式に従ってメッセージ属性を設定することにより、接続先のチャネル67A〜67L(図8)をキー(key)とし、メッセージ属性を値(value)とするハッシュテーブルを生成する。
なお、同じ名称のチャネルが制御系処理及びデータ系処理の双方で使用されることがあるが、ハッシュテーブル上ではそれらのチャネルを1つにまとめ、その値を、その出力メッセージが制御系のものであることを意味する「ctl」、その出力メッセージがデータ系のものであることを意味する「data」の優先順位で設定する。
この後CPU11は、生成したハッシュテーブルに従って、出力メッセージテーブル92の各レコードのメッセージ属性をそれぞれ設定する。またCPU11は、これと併せて、メッセージ属性が「ctl」のレコードについてはデータ追出しフラグとして「FALSE」、メッセージ属性が「data」のレコードについてはデータパス追出しフラグとして「TRUE」をそれぞれ設定する。
次いでCPU11は、処理ノードデータパス追出し部86に基づいて、図30に示す処理ノードデータパス追出し設定処理手順に従って、ローカル変数テーブル90、入力メッセージテーブル91、出力メッセージテーブル92、処理ノードテーブル93、処理ノードトークンテーブル94上の各レコードのうち、制御系の処理ノードに対応する各レコードのデータパス追出しフラグをそれぞれ「FALSE」に設定する(SP32)。
すなわちCPU11は、まず、図31(A)に示すように、入力メッセージテーブル91上のデータパス追出しフラグが「FALSE」のレコードについて、当該レコードの入力変数名又は一時入力変数名の少なくともいずれか一方と対応するローカル変数テーブル90上のレコードのデータパス追出しフラグを「FALSE」に更新する(SP40)。
続いてCPU11は、図31(B)に示すように、出力メッセージテーブル92上のデータパス追出しフラグが「FALSE」のレコードについて、当該レコードの出力変数名と対応するローカル変数テーブル90上のレコードのデータパス追出しフラグを「FALSE」に更新する(SP41)。
次いで、CPU11は、図31(C)に示すように、遷移条件ノードトークンテーブル96を参照して、当該遷移条件ノードトークンテーブル94に登録された遷移条件ノードトークンに対応するローカル変数テーブル90上のレコードのデータパス追出しフラグを「FALSE」に更新する(SP42)。
この後CPU11は、図32(A)に示すように、ローカル変数テーブル90を参照して、データパス追出しフラグが「FALSE」に設定されている各ローカル変数について、処理ノードトークンテーブル94上の対応するレコードのデータパス追出しフラグを「FALSE」に更新する(SP43)。
さらにCPU11は、図32(B)に示すように、処理ノードトークンテーブル94を参照して、データパス追出しフラグが「FALSE」に設定されているレコードの処理ノードIDと同じ処理ノードIDが登録された処理ノードテーブル93上のレコードのデータパス追出しフラグを「FALSE」に更新する(SP44)。
続いてCPU11は、図32(C)に示すように、処理ノードテーブル93を参照して、データパス追出しフラグが「FALSE」の処理ノードのレコードについて、その処理ノードの処理ノードIDと同じ処理ノードIDが登録された処理ノードトークンテーブル94上のレコードのデータパス追出しフラグを「FALSE」に更新する(SP45)。
次いでCPU11は、図33(A)に示すように、処理ノードトークンテーブル94を参照して、データパス追出しフラグが「FALSE」の処理ノードトークンについて、対応するローカル変数テーブル90上のレコードのデータパス追出しフラグを「FALSE」に更新する(SP46)。
さらにCPU11は、図33(B)に示すように、ローカル変数テーブル90を参照して、データパス追出しフラグが「FALSE」に設定されたエントリの変数名と同じ入力変数名又は一時入力変数名が登録された入力メッセージテーブル91のレコードのデータパス追出しフラグを「FALSE」に更新する。またCPU11は、これと併せて、入力メッセージテーブル91上のそのときデータパス追出しフラグを「FALSE」に更新したレコードの「接続先チャネル名」欄91Cに格納されたチャネル名と同じチャネル名が格納された当該入力メッセージテーブル91上のレコードを検索し、そのようなレコードが存在するときには、そのレコードのデータパス追出しフラグを「FALSE」に設定する(SP47)。
この後CPU11は、図33(C)に示すように、入力メッセージテーブル91を参照して、データパス追出しフラグが「FALSE」のレコードの入力変数名及び一時入力変数名の少なくとも一方と同じ変数名が登録されたローカル変数テーブル90上のレコードのデータパス追出しフラグを「FALSE」に更新する(SP48)。
続いてCPU11は、図34(A)に示すように、ローカル変数テーブル90を参照して、データパス追出しフラグが「FALSE」に設定されたレコードの変数名と同じ出力変数名が登録された出力メッセージテーブル92上のレコードのデータパス追出しフラグを「FALSE」に更新する。またCPU11は、これと併せて、出力メッセージテーブル92上のそのときデータパス追出しフラグを「FALSE」に更新したレコードの「接続先チャネル名」欄92Dに格納されたチャネル名と同じチャネル名が格納された当該出力メッセージテーブル92上のレコードを検索し、そのようなレコードが存在するときには、そのレコードのデータパス追出しフラグを「FALSE」に設定する(SP49)。
次いでCPU11は、図34(B)に示すように、出力メッセージテーブル92を参照して、データパス追出しフラグが「FALSE」に設定されたレコードの出力変数名と同じ変数名が登録されたローカル変数テーブル90上のレコードのデータパス追出しフラグを「FALSE」に更新する(SP50)。
この後CPU11は、すべてのデータパス抑止設定が完了したか否かを判断する(SP51)。具体的に、CPU11は、このステップSP51において、そのときのステップSP43〜ステップSP50までの処理でいずれかの内部テーブルのいずれかのレコードのデータ追出しフラグを「FALSE」に設定したか否かを判断する。そしてCPU11は、この判断において否定結果を得るとステップSP43に戻り、この後ステップSP51において肯定結果を得るまで同様の処理を繰り返す(SP43〜SP51−SP43)。
そしてCPU11は、やがてステップSP51において肯定結果を得ると、この処理ノードパス追出し設定処理を終了する。
(2−4−4)データパス階層生成処理
他方、CPU11は、図24について上述したデータパスシェア処理のステップSP12に進むと、データパス階層生成部83(図13)を呼び出し、このデータパス階層生成部83と、当該データパス階層生成部83の下位階層に存在する処理ノード統合部87(図13)、入力メッセージ再構成部88(図13)及び出力メッセージ再構成部89(図13)とに基づいて、図35に示すデータパス階層生成処理を実行する。
すなわちCPU11は、図24のデータパス処理のステップSP12に進むと、処理ノード統合部87を呼び出し、この処理ノード統括部87に基づいて、各コマンド階層のデータ系処理を格納するためのデータパス階層(図4の41を参照)を設計データベース18上に生成し、このデータパス階層に各コマンド階層から分離したデータ系ビヘイビアを移動させる(SP60)。
続いてCPU11は、入力メッセージ再構成部88を呼び出し、この入力メッセージ再構成部88に基づいて、入力メッセージテーブル91上でデータパス追出しフラグが「TRUE」のメッセージをデータパス階層に入力する(SP61)。
またCPU11は、出力メッセージ再構成部89を呼び出し、この出力メッセージ再構成部89に基づいて、出力メッセージテーブル92上でデータパス追出しフラグが「TRUE」のメッセージをデータパス階層に入力する(SP62)。
ここで図36は、図35のステップSP60におけるCPU11の具体的な処理内容を示すフローチャートである。
CPU11は、図24のデータパス処理のステップSP12に進むと、この図36に示す処理ノード統合処理を開始し、まず、処理ノードテーブル93(図20)を参照し、当該処理ノードテーブル93上のデータパス追出しフラグが「TRUE」のレコードの処理ノード情報を抽出する(SP70)。具体的にはCPU11は、かかる処理ノード情報として、対応するレコードのコマンド階層、ステート名及びステートアクション名を抽出する。
またCPU11は、これと併せて、出力メッセージテーブル92(図18)を参照し、当該出力メッセージテーブル92上のデータパス追出しフラグが「TRUE」のレコードの出力メッセージ情報を抽出する(SP70)。具体的にCPU11は、かかる出力メッセージ情報として、対応するレコードのコマンド階層、ステート名及びステートアクション名を抽出する。
続いてCPU11は、図37に示すように、設計データベース18上の排他グループ100内にデータパス階層101を新規生成すると共に、ステップSP70において処理ノードテーブル93から抽出した処理ノード情報と、出力メッセージテーブル92から抽出した出力メッセージ情報とに基づいて、排他グループ100内の各コマンド階層102A,102Bからデータパス階層101に内部制御フラグを送信するためのチャネル(以下、これらを内部制御フラグ用チャネルと呼ぶ)103A,103Bを生成する。またCPU11は、データパス階層101内にステート104を1つ生成すると共に、内部制御フラグに対応したステートアクション105A,105Bをこのステート内に生成する(SP71)。
次いでCPU11は、ローカル変数テーブル90(図15)からデータ追出しフラグが「TRUE」に設定されたレコードの変数名、型及び初期値をローカル変数情報として抽出し、抽出したローカル変数情報に基づいて、対応するローカル変数をデータパス階層101内において定義する。この際、CPU11は、コマンド階層102A,102B間で同名重複しているローカル変数を統合し、共通化する。またこの際、CPU11は、ローカル変数のスコープを考慮して、スコープが「Unit」である場合にはかかるローカル変数をデータパス階層101に定義し、スコープが「ステート」である場合にはかかるローカル変数をデータパス階層101内に生成した対応するステート104内に定義する(SP72)。
次いでCPU11は、処理ノードテーブル93からデータパス追出しフラグが「TRUE」に設定された処理ノードをデータパス階層101内の対応するステートアクション105A,105Bに移行する。またCPU11は、生成した処理ノードについて、対応するコマンド階層、ステート及びステートアクションから設定データベース18上の処理ノードを削除する(SP73)。
この後CPU11は、各コマンド階層102A,102Bからデータパス階層101への該当する内部制御フラグ用チャネル103A,103Bを介した接続を行う。なお、上述のようにコマンド階層102A,102Bからデータパス階層101に移行させた処理ノードを実行していたステートアクション105A,105Bについての内部制御フラグは「1」、それ以外は「0」とする。
一方、図38は、図35のステップSP61におけるCPU11の具体的な処理内容を示すフローチャートである。
CPU11は、データパス階層生成処理のステップSP61に進むと、この図38に示す入力メッセージ再構成処理を開始し、まず、入力メッセージテーブル91(図16)を参照して、データパス追出しフラグが「TRUE」に設定されたレコード(入力メッセージ)情報を抽出する(SP80)。
続いてCPU11は、ステップSP80において情報を抽出した入力メッセージについて、図39に示すように、設計データベース上でコマンド階層からデータパス階層への張替えを行なう(SP81)。
他方、図40は、図35のステップSP62におけるCPU11の具体的な処理内容を示すフローチャートである。
CPU11は、データパス階層生成処理のステップSP62に進むと、この図40に示す出力メッセージ再構成処理を開始し、まず、出力メッセージテーブル92(図18)を参照して、データパス追出しフラグが「TRUE」に設定されたレコード(出力メッセージ)の情報を抽出する(SP90)。
続いてCPU11は、ステップSP90において情報を抽出した出力メッセージについて、図39に示すように、設計データベース18上でコマンド階層からデータパス階層への張替えを行なう(SP91)。
以上のような処理の結果、図39に示すような新たな設計データベース18が生成される。そしてこの設計データベース18が高位合成されることにより、図41に示すような構造を有するRTLで記述されたHDLのソースコードが生成されることになる。
(3)本実施の形態の効果
以上のように本実施の形態によるLSI設計装置1では、高位合成処理の前処理として各コマンド34を制御系ビヘイビアとデータ系ビヘイビアとに分離するため、カウンタ回路や比較器などの制御系資源と、データレジスタやアドレスレジスタ、データ演算器などのデータ系資源とが分離されて設計される。かくするにつき、最終的に得られる回路構造の可読性や保守性を高め、品質の高い回路設計を行なうことができる。
また本実施の形態によるLSI設計装置1では、上述のように制御系ビヘイビアから分離した各コマンド34のデータ系ビヘイビアを1つのビヘイビアにまとめるようにしているため、高位合成処理の際に複数のステートに跨ってデータパス論理の中でのリソースシェアを行なうことができる。かくするにつき、最終的に得られる回路構造の規模を格段的に削減することができる。
(4)他の実施の形態
なお上述の実施の形態においては、本発明をストレージ用途のLSIの設計に適したLSI設計装置1に適用するようにした場合について述べたが、本発明はこれに限らず、この他種々の回路設計に用いる設計装置に広く適用することができる。
また上述の実施の形態においては、ビヘイビアレベルで記述された複数のコマンドを制御系ビヘイビアと、データ系ビヘイビアとに分離するコマンド分離部と、各コマンドのデータ系ビヘイビアを統合する統合部とを図13のように構成されたデータパスシェアプログラム14及びCPU11により構成するようにした場合について述べたが、本発明はこれに限らず、かかるコマンド分離部及び統合部の構成としては、この他種々の構成を広く適用することができる。
さらに上述の実施の形態においては、各コマンドのデータ系ビヘイビアを1つのビヘイビアに統合するようにした場合について述べたが、本発明はこれに限らず、かかる複数のデータ系ビヘイビアを2つ又は3つなど、複数のビヘイビアに統合するようにしても良い。
本発明は、種々の回路設計に用いる設計装置に広く適用することができる。
本実施の形態によるLSI設計装置の概略構成を示すブロック図である。 従来のRTLを用いたLSI設計手法の概要を示す概念図である。 ビヘイビアレベルを用いたLSI設計手法の概要を示す概念図である。 本実施の形態によるLSI設計手法の概要を示す概念図である。 本実施の形態によるLSI設計手法を用いた設計作業のうち、高位合成処理までの作業の流れを示すフローチャートである。 UML表記したビヘイビアモデルを示すシーケンス図である。 UML表記したビヘイビアモデルを示すシーケンス図である。 設計データベース18上でのビヘイビアモデルの構造例を示す概念図である。 受信ブロックの説明に供する概念図である。 送信ブロックの説明に供する概念図である。 図8のコマンドAの説明に供する状態遷移図である。 設計データベースの構造を示すクラス図である。 データパスシェアプログラムのモジュール構成を示すクラス図である。 内部テーブルの説明に供するクラス図である。 ローカル変数テーブルを示す図表である。 入力メッセージテーブルを示す図表である。 入力メッセージテーブルのメッセージ属性判定仕様を示す図表である。 出力メッセージテーブルを示す図表である。 出力メッセージテーブルのメッセージ属性判定仕様を示す図表である。 処理ノードテーブルを示す図表である。 処理ノードトークンテーブルを示す図表である。 遷移条件ノードテーブルを示す図表である。 遷移条件ノードトークンテーブルを示す図表である。 データパスシェア処理の説明に供するフローチャートである。 初期テーブル生成処理の説明に供するフローチャートである。 処理ノードテーブルの初期化処理の説明に供する図である。 処理ノードトークンテーブルの初期化処理の説明に供する図である。 遷移条件ノードトークンテーブルの初期化処理の説明に供する図である。 データパス追出し設定処理の説明に供するフローチャートである。 処理ノードデータパス追出し設定処理の説明に供するフローチャートである。 処理ノードデータパス追出し設定処理の説明に供する概念図である。 処理ノードデータパス追出し設定処理の説明に供する概念図である。 処理ノードデータパス追出し設定処理の説明に供する概念図である。 処理ノードデータパス追出し設定処理の説明に供する概念図である。 データパス階層生成処理の説明に供するフローチャートである。 処理ノード統合処理の説明に供するフローチャートである。 処理ノード統合処理の説明に供する概念図である。 入力メッセージ再構成処理の説明に供するフローチャートである。 入力メッセージ再構成処理及び出力メッセージ再構成処理の説明に供する概念図である。 出力メッセージ再構成処理の説明に供するフローチャートである。 図39のビヘイビアモデルを高位合成処理した後の構成の説明に供する概念図である。
符号の説明
1……LSI設計装置、2……コンピュータ本体、3……操作端末、4……ディスプレイ、10……メモリ、11……CPU、12……外部記憶装置、13……仕様モデル生成ツール、14……データパスシェアプログラム、15,35……高位合成ツール、16……回路図ビューア、18……設計データベース、19……回路ライブラリ、20……設計データ、32,38……論理合成ツール、40……データ系ブロック、41……コマンド階層、50……マスタ、51A,51B,63A,63B……コマンド、63,100……排他グループ、61A〜61H,66A〜66J,67A〜67L,68A〜68D,69A,69B,103A,103B……チャネル、70A〜70E,104……ステート、71A〜71K,105A,105B……ステートアクション、80……データパスシェア制御部、81……初期テーブル生成部、82……データパス追出し設定部、83……データパス階層生成部、84……入力メッセージ初期化部、85……出力メッセージ初期化部、86……処理ノードデータパス追出し部、87……処理ノード統合部、88……入力メッセージ再構成部、89……出力メッセージ再構成部、90……ローカル変数テーブル、91……入力メッセージテーブル、92……出力メッセージテーブル、93……処理ノードテーブル、94……処理ノードトークンテーブル、95……遷移条件ノードテーブル、96……遷移条件ノードトークンテーブル、101……データパス階層。

Claims (4)

  1. 回路を設計するための設計装置において、
    回路設計のためのハードウェアの一連の処理の流れがビヘイビアレベルで記述された複数のコマンドを、それぞれ制御に関する動作が記述された制御系ビヘイビアと、データ処理に関する動作が記述されたデータ系ビヘイビアとに分離するコマンド分離部と、
    各前記コマンドの前記データ系ビヘイビアを1又は複数のビヘイビアに統合する統合部
    と、
    各前記コマンドの前記制御系ビヘイビアと、各前記コマンドの前記データ系ビヘイビア
    の1又は複数を統合してなる前記ビヘイビアとをそれぞれ高位合成処理する高位合成処理部と、
    を備え
    前記コマンド分離部は、
    ハードウェア記述言語を用いて記述された動作処理のうち前記コマンドが実行する処理内容の1構文を示す処理ノード及びハードウェア記述言語を用いて記述された動作処理のうち前記コマンドが実行する状態遷移処理の条件文を示す遷移条件ノードをそれぞれ字句分割した処理ノードトークン及び遷移条件ノードトークンに基づいて、当該コマンドを前記制御系ビヘイビアと前記データ系ビヘイビアとに分離する
    ことを特徴とする設計装置。
  2. 前記コマンド分離部は、
    予め設定されたメッセージの属性判定仕様に基づいて各前記コマンドを前記制御系ビヘイビアと前記データ系ビヘイビアとに分離する
    ことを特徴とする請求項1に記載の設計装置。
  3. コンピュータが備えるコマンド分離部により、回路設計のためのハードウェアの一連の処理の流れがビヘイビアレベルで記述された複数のコマンドを、それぞれ制御に関する動作が記述された制御系ビヘイビアと、データ処理に関する動作が記述されたデータ系ビヘイビアとに分離する第1のステップと、
    前記コンピュータが備える統合部により、各前記コマンドの前記データ系ビヘイビアを1又は複数のビヘイビアに統合する第2のステップと、
    前記コンピュータが備える高位合成処理部により、各前記コマンドの前記制御系ビヘイビアと、各前記コマンドの前記データ系ビヘイビアの1又は複数を統合してなる前記ビヘイビアとをそれぞれ高位合成処理する第3のステップと、
    からなる処理を実行させる設計プログラムであって、
    前記第1のステップでは、前記コマンド分離部が、
    ハードウェア記述言語を用いて記述された動作処理のうち前記コマンドが実行する処理内容の1構文を示す処理ノード及びハードウェア記述言語を用いて記述された動作処理のうち前記コマンドが実行する状態遷移処理の条件文を示す遷移条件ノードをそれぞれ字句分割した処理ノードトークン及び遷移条件ノードトークンに基づいて、当該コマンドを前記制御系ビヘイビアと前記データ系ビヘイビアとに分離する
    ことを特徴とする設計プログラム。
  4. 前記第1のステップでは、
    予め設定されたメッセージの属性判定仕様に基づいて各前記コマンドを前記制御系ビヘイビアと前記データ系ビヘイビアとに分離する
    ことを特徴とする請求項に記載の設計プログラム。
JP2007196228A 2007-07-27 2007-07-27 設計装置、設計方法及びプログラム Expired - Fee Related JP4945360B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2007196228A JP4945360B2 (ja) 2007-07-27 2007-07-27 設計装置、設計方法及びプログラム
US11/970,568 US7904856B2 (en) 2007-07-27 2008-01-08 Arrangement handling commands as control system behaviors and data system behaviors

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2007196228A JP4945360B2 (ja) 2007-07-27 2007-07-27 設計装置、設計方法及びプログラム

Publications (3)

Publication Number Publication Date
JP2009032086A JP2009032086A (ja) 2009-02-12
JP2009032086A5 JP2009032086A5 (ja) 2010-04-15
JP4945360B2 true JP4945360B2 (ja) 2012-06-06

Family

ID=40296475

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2007196228A Expired - Fee Related JP4945360B2 (ja) 2007-07-27 2007-07-27 設計装置、設計方法及びプログラム

Country Status (2)

Country Link
US (1) US7904856B2 (ja)
JP (1) JP4945360B2 (ja)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8225244B2 (en) * 2008-11-06 2012-07-17 Hitachi, Ltd. Large scale integration device and large scale integration design method including both a normal system and diagnostic system
US9554815B2 (en) * 2012-08-08 2017-01-31 Shockwave Medical, Inc. Shockwave valvuloplasty with multiple balloons
US9645807B2 (en) 2012-08-28 2017-05-09 International Business Machines Corporation Automated deployment of a configured system into a computing environment
US9128724B2 (en) * 2012-08-28 2015-09-08 International Business Machines Corporation Configuring assembly of a system using supplied architectural artifacts
JP2016122299A (ja) * 2014-12-24 2016-07-07 富士通株式会社 ステートマシン分割プログラム、情報処理装置およびステートマシン分割方法
WO2018146727A1 (ja) 2017-02-07 2018-08-16 三菱電機株式会社 高位合成装置、高位合成方法および高位合成プログラム

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3129883B2 (ja) * 1993-07-12 2001-01-31 松下電器産業株式会社 レジスタ転送レベル設計支援装置
JPH11102381A (ja) * 1997-09-29 1999-04-13 Matsushita Electric Ind Co Ltd アーキテクチャ動作合成装置、アーキテクチャ動作合成方法、プロセッサの設計方法およびプロセッサのアーキテクチャ動作記述方法
US6145117A (en) * 1998-01-30 2000-11-07 Tera Systems Incorporated Creating optimized physical implementations from high-level descriptions of electronic design using placement based information
JP3765923B2 (ja) * 1998-02-26 2006-04-12 シャープ株式会社 ハードウェア合成方法およびハードウェア合成装置並びにハードウェア合成プログラムを記録した記録媒体
JP3370304B2 (ja) * 2000-01-28 2003-01-27 シャープ株式会社 高位合成システム、高位合成方法、および、高位合成方法の実施に使用される記録媒体
JP3852741B2 (ja) * 2000-10-31 2006-12-06 シャープ株式会社 高位合成方法および高位合成装置
US6728945B1 (en) * 2001-02-26 2004-04-27 Cadence Design Systems, Inc. Behavioral level observability analysis and its applications
JP4082653B2 (ja) * 2001-11-15 2008-04-30 松下電器産業株式会社 高位合成方法および高位合成装置
JP2005173648A (ja) * 2003-12-05 2005-06-30 Matsushita Electric Ind Co Ltd 高位合成方法及び高位合成装置
US7257802B2 (en) * 2003-12-29 2007-08-14 Mentor Graphics Corporation Method and system for hardware accelerated verification of digital circuit design and its testbench
US7260798B2 (en) * 2003-12-29 2007-08-21 Mentor Graphics Corporation Compilation of remote procedure calls between a timed HDL model on a reconfigurable hardware platform and an untimed model on a sequential computing platform
US7305650B1 (en) * 2004-06-21 2007-12-04 C2 Design Automation Data path synthesis apparatus and method for optimizing a behavioral design description being processed by a behavioral synthesis tool
JP2006285865A (ja) * 2005-04-04 2006-10-19 Nec Electronics Corp レジスタ転送レベル記述と動作記述間の対応関係特定方法、装置及びプログラム
JP2007042085A (ja) 2005-06-27 2007-02-15 Interdesign Technologies Inc 開発支援プログラム、開発支援装置および記憶媒体

Also Published As

Publication number Publication date
US20090031276A1 (en) 2009-01-29
US7904856B2 (en) 2011-03-08
JP2009032086A (ja) 2009-02-12

Similar Documents

Publication Publication Date Title
JP4945360B2 (ja) 設計装置、設計方法及びプログラム
ES2676739T3 (es) Sistema y procedimiento para enlace dinámico de controles y comandos de interfaz de usuario
US8549353B2 (en) Batch processing error handling modes
EP2343641B1 (en) Applying rules to data
US8464229B2 (en) Creation of form-based software application in a graphical user interface (GUI) environment
US7190363B2 (en) Method and system for processing graphics simulation data
EP2343644A1 (en) Transformation of data between hierarchical data formats
JP2007087215A (ja) ハードウェアモデルの変換処理に用いられるデータ構造、コンピュータプログラム、方法、及びシステム
US8527254B2 (en) Simulator engine development system and simulator engine development method
EP2357554A1 (en) Processing collections of data items
EP2348401A1 (en) Transformation of hierarchical data formats using graphical rules
EP2343653A2 (en) Generating and monitoring data items
JP4204039B2 (ja) 動作合成システム、動作合成方法、制御プログラム、可読記録媒体、論理回路の製造方法および論理回路
JP2007102631A (ja) 論理回路設計支援装置およびこれを用いた論理回路設計支援方法
US20030208727A1 (en) Failure path grouping method, apparatus, and computer-readable medium
US7207015B1 (en) Translation of an electronic integrated circuit design into hardware
JP3464159B2 (ja) テスト仕様書作成装置およびそのプログラムを格納した記憶媒体
JP2020160650A (ja) 高位合成方法、高位合成装置、及び高位合成システム
JP3373641B2 (ja) テスト系列生成装置
JP4308300B2 (ja) 画像データ処理装置及び方法
Burnett et al. A scalable method for deductive generalization in the spreadsheet paradigm
Bulakh et al. An Academic Framework for IC Physical Design Algorithms Development
US6035112A (en) Cell library generating method and apparatus
US20060129368A1 (en) Object-oriented interface to RTL model signals
JP2010152713A (ja) リコンフィギュラブル回路、設計方法及び設計装置

Legal Events

Date Code Title Description
RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20090219

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20100302

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20100302

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20110913

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110927

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20111118

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

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

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20150309

Year of fee payment: 3

LAPS Cancellation because of no payment of annual fees