JP2006268862A - Asicとプログラマブル・ロジックデバイスのコンカレント開発システム、開発プログラム及び開発方法 - Google Patents
Asicとプログラマブル・ロジックデバイスのコンカレント開発システム、開発プログラム及び開発方法 Download PDFInfo
- Publication number
- JP2006268862A JP2006268862A JP2006089040A JP2006089040A JP2006268862A JP 2006268862 A JP2006268862 A JP 2006268862A JP 2006089040 A JP2006089040 A JP 2006089040A JP 2006089040 A JP2006089040 A JP 2006089040A JP 2006268862 A JP2006268862 A JP 2006268862A
- Authority
- JP
- Japan
- Prior art keywords
- asic
- logic synthesis
- data
- programmable logic
- design
- 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
Links
Images
Landscapes
- Design And Manufacture Of Integrated Circuits (AREA)
- Logic Circuits (AREA)
Abstract
【課題】ASICとFPGAの設計品質を確保するとともに開発期間を短縮すること。
【解決手段】インターネットからのアクセスを監視するファイアウォールと、ユーザが使用するWebクライアントと通信するWebサーバと、ユーザの認証を行なう認証サーバと、ユーザを管理するユーザ管理サーバと、ASICとFPGAの開発用プログラムを実行する論理合成サーバと、Projectの関係者にメールを配信するメールサーバと、設計情報を格納するファイルサーバと、ASICのインプリメント設計用プログラムを実行するアプリケーションサーバと、ASICとFPGAの開発状況を監視する監視サーバとから構成されるASICとFPGAのコンカレント開発システム。
【選択図】 図13
【解決手段】インターネットからのアクセスを監視するファイアウォールと、ユーザが使用するWebクライアントと通信するWebサーバと、ユーザの認証を行なう認証サーバと、ユーザを管理するユーザ管理サーバと、ASICとFPGAの開発用プログラムを実行する論理合成サーバと、Projectの関係者にメールを配信するメールサーバと、設計情報を格納するファイルサーバと、ASICのインプリメント設計用プログラムを実行するアプリケーションサーバと、ASICとFPGAの開発状況を監視する監視サーバとから構成されるASICとFPGAのコンカレント開発システム。
【選択図】 図13
Description
本発明は、ネットワークに接続されたコンピュータからユーザが利用するASICとプログラマブル・ロジックデバイスのコンカレント開発システム、開発プログラム及び開発方法に関する。
更に詳しくは、集積回路の開発におけるプログラマブル・ロジックデバイス構成方法に係り、回路アーキテクチャ検討結果であり論理設計ドキュメントの一部であるブロックのポート仕様の接続情報のみを用いてデバイス・テクノロジに依存しないブロックのポートとポート間を結ぶネットからなるコア(論理コア)と呼ぶネットリストを生成し、コア(論理コア)から対象ブロックを選択、グループ化し、グループ化したコア(論理コア)のデータを使用し、集積回路の開発を行なう集積回路の開発方法、ならびにASICとプログラマブル・ロジックデバイスのシームレスなコンカレント開発を可能とし、設計品質確保と開発期間短縮を両立するとともに、開発にかかる人的資源とコストを低減することができるASICとプログラマブル・ロジックデバイスのコンカレント開発システム、開発プログラム及び開発方法に関する。
集積回路の手順では、先ず仕様を決定する際、もれ等がないか慎重に検討した後、その仕様に従い設計を行なうようになっている。第11図は集積回路設計の手順を示すフローチャートである。先ず、製品仕様からASIC(特定用途向けIC)のスペックを取得する(g1)。次に、回路アーキテクチャを検討する(g2)。次に、回路アーキテクチャ検討結果に基づいて回路設計を行なう(g3)。この回路設計は、論理検証(g4)を行ないながら行なう。
次に、回路設計が終了したら回路の論理合成を行なう(g5)。論理合成が終了したら、論理合成結果に基づいてレイアウト展開する(g6)。この段階で回路が設計できたことになる。回路が設計できたら、当該回路を製造し(g7)、製造した回路を用いて実機の評価を行なう(g8)。以上のシーケンスの内、本発明に係る部分は、ステップg5の論理合成に係る部分である。
集積回路開発において、仕様を入力として実現する機能の検討、機能を実現する回路構成の検討を行なう回路アーキテクチャ検討を以下のような流れで実施している。通常、集積回路の開発では、製品の仕様から製品を実現する機能を洩れなく洗い出し、洗い出した機能を実現する回路の構成の検討や、IP(Intellectual Property:知的財産)等のマクロの検討を行なう。ここで、マクロとはIPも含むRAM、ROM等の変更しなくても使えるものをいう。
構成を検討した回路やIPの実現規模の初期見積りを行ない、この時予め判っていればゲート数で算出し、ゲート数が判らない場合は必要な信号数と処理に必要な時間からフリップフロップ数を算出して実現規模を見積もっている。ここで、見積もった規模と各機能の入出力信号(以降ポートと称する)本数を基に複数の機能をグループ化し1つのブロックとする。このグループ化を全機能について行なう。
論理設計では、前述の機能と見積り規模を基にHDL(ハードウェア記述言語)等の手段によりプログラマブル・ロジックデバイスを対象に回路設計を行ない、オンボードでの機能評価が行なわれる。評価完了後、ASIC化する場合に再設計及び再検証が行なわれていた。
機能評価の完了後、ASIC化によるコストダウンが実施される場合、プログラマブル・ロジックデバイス(例えばFPGA)を対象に設計する時点からASICを考慮した設計を施されることが少なく、I/Oバッファ、デバイス用試験回路、メモリ等のマクロなど、プログラマブル・ロジックデバイスとASIC間の違いのためASICを対象にプログラマブル・ロジックデバイスの設計データを基に再設計が発生し、再設計することによる設計データの二重管理、再設計と機能の再検証による開発期間の長期化と開発コストの増大が表面化してきている。
ここで、ASICは開発期間が長いがコストが安いという特徴があり、一方、プログラマブル・ロジックデバイス(FPGA)は開発期間は短いがコストが高いという特徴がある。
本発明はこのような課題に鑑みてなされたものであって、大規模ASICの開発における論理設計と、論理合成、レイアウトのコンカレント(並行した)開発に適用している回路アーキテクチャ検討において、チップを機能的に分割したブロックのポート情報と、チップのポート情報とからポート間の接続情報としてブロック間ネットリストを生成する方法(特開2000−90142号に記載)を応用した、集積回路の開発方法及び該集積回路の開発方法によって開発する集積回路を構成するブロックとブロック間ネットをブロック間ネットリストから任意の規模と個数生成するよう論理合成ツールを制御する装置を提供し、アーキテクチャの共有化を実現し、再設計と再検証を極力回避することができる集積回路の開発方法及び集積回路の開発方法を記憶したプログラム記憶媒体を提供することを目的としている。
また、近年、半導体の微細化により10Mゲートを超すASICも開発可能となっているが、電子機器の高機能化と複雑化に伴い、仕様設計,論理設計およびフロアプラン、論理合成,レイアウト設計、タイミング検証を行なうインプリメント設計が長期化すると共に設計品質の確保が困難となってきている。特に、ASIC開発のリメイクは、電子機器の開発期間の長期化のみならずコストの増大、市場投入の機会損失を招いている。
このため、開発TAT(Turn Around Time)が短く、設計変更が容易なプログラマブル・ロジックデバイスが多用されつつあるが、プログラマブル・ロジックデバイスはコストがかかり、小型化が困難であることから、まずプログラマブル・ロジックデバイスで機能を実現し、プロトタイピングにてデバッグした後、量産時期にASIC化することが多い。
しかしながら、ASIC化を前提にプログラマブル・ロジックデバイスのプロトタイピングにより検証したとしても、プログラマブル・ロジックデバイスからASICへとシリアルな開発では、総開発手番を短くする事は難しいという問題がある。特に、ASIC開発時のインプリメント設計においてタイミング問題が発生すると、プログラマブル・ロジックデバイスの再設計からやり直しとなる可能性があり、半導体ベンダなど社外に依託している場合は、依託先の人的リソースの確保、人的リソースの確保に伴うコストの増大を招く。
更には、プログラマブル・ロジックデバイスとASICデバイス間の構造の違いからASIC専用に再設計が発生した場合は、プログラマブル・ロジックデバイスによるデバッグが無意味になるばかりでなく、開発期間が長期化してコストも増大する。どちらにしても市場投入の機会損失になる。
なお、ASICの大規模化に伴う開発期間の長期化の対策として、特開2000−90142号公報に記載のとおり、回路アーキテクチャ検討、論理設計・検証、インプリメント設計をコンカレントに行っているが、電子機器の機能の複雑化と市場の動きの早さによって、仕様設計、論理の設計、検証が長期化し開発手番を短くする事が困難となってきている。さらに、コンカレントに開発を進める場合には、ASIC開発の知識を有した人的資源と開発ツールが必要であり、半導体技術の進歩に伴い複雑化する開発ツールの教育も必要となるという問題が生ずる。
従って、この発明は、ASICとプログラマブル・ロジックデバイスのシームレスなコンカレント開発を可能とし、設計品質確保と開発期間短縮を両立するとともに、開発にかかる人的資源とコストを低減することができるASICとプログラマブル・ロジックデバイスのコンカレント開発システム、開発プログラム及び開発方法を提供することも目的とする。
上述した課題を解決し、目的を達成するため、本発明は、ASICとプログラマブル・ロジックデバイスのコンカレント開発方法であって、ASICを構成する機能ブロックをポート間接続情報に基づいてグループ化し、該グループ化した機能ブロックのポートとポート間接続情報からなるネットリストをプログラマブル・ロジックデバイスのコア(論理コア)として生成するネットリスト生成工程と、前記ASICを構成する機能ブロックの回路データからASIC用論理合成データ及びプログラマブル・ロジックデバイス用論理合成データを作成する論理合成工程と、前記グループ化した機能ブロックについてのプログラマブル・ロジックデバイス用論理合成データを前記ネットリスト生成工程により生成されたネットリストに填め込んでプログラマブル・ロジックデバイスの回路を記録した実機評価用ROMデータを生成するROMデータ生成工程と、前記論理合成工程により作成されたASIC用論理合成データを用いてASICのレイアウト作成およびタイミング検証を前記ROMデータ生成工程による実機評価用ROMデータの生成とコンカレントに行なうレイアウト作成工程と、前記ROMデータ生成工程により生成されたROMデータを用いた実機評価結果に基づく回路データの変更を前記ASICのレイアウト作成およびタイミング検証に反映する差分反映工程と、を含んだことを特徴とする。
また、本発明は、ASICとプログラマブル・ロジックデバイスのコンカレント開発プログラムであって、ASICを構成する機能ブロックをポート間接続情報に基づいてグループ化し、該グループ化した機能ブロックのポートとポート間接続情報からなるネットリストをプログラマブル・ロジックデバイスのコア(論理コア)として生成するネットリスト生成手順と、前記ASICを構成する機能ブロックの回路データからASIC用論理合成データ及びプログラマブル・ロジックデバイス用論理合成データを作成する論理合成手順と、前記グループ化した機能ブロックについてのプログラマブル・ロジックデバイス用論理合成データを前記ネットリスト生成手順により生成されたネットリストに填め込んでプログラマブル・ロジックデバイスの回路を記録した実機評価用ROMデータを生成するROMデータ生成手順と、前記論理合成手順により作成されたASIC用論理合成データを用いてASICのレイアウト作成およびタイミング検証を前記ROMデータ生成手順による実機評価用ROMデータの生成とコンカレントに行なうレイアウト作成手順と、前記ROMデータ生成手順により生成されたROMデータを用いた実機評価結果に基づく回路データの変更を前記ASICのレイアウト作成およびタイミング検証に反映する差分反映手順と、をコンピュータに実行させることを特徴とする。
かかる発明によれば、ASICを構成する機能ブロックをポート間接続情報に基づいてグループ化し、グループ化した機能ブロックのポートとポート間接続情報からなるネットリストをプログラマブル・ロジックデバイスのコア(論理コア)として生成し、ASICを構成する機能ブロックの回路データからASIC用論理合成データ及びプログラマブル・ロジックデバイス用論理合成データを作成し、グループ化した機能ブロックについてのプログラマブル・ロジックデバイス用論理合成データを生成したネットリストに填め込んでプログラマブル・ロジックデバイスの回路を記録した実機評価用ROMデータを生成し、作成したASIC用論理合成データを用いてASICのレイアウト作成およびタイミング検証を実機評価用ROMデータの生成とコンカレントに行ない、生成したROMデータを用いた実機評価結果に基づく回路データの変更をASICのレイアウト作成およびタイミング検証に反映することとしたので、ASICとプログラマブル・ロジックデバイスの効率的なコンカレント開発が可能になり、ASICの開発期間を短縮することができる。
また、本発明は、ASICとプログラマブル・ロジックデバイスのコンカレント開発システムであって、ASICを構成する機能ブロックをポート間接続情報に基づいてグループ化し、該グループ化した機能ブロックのポートとポート間接続情報からなるネットリストをプログラマブル・ロジックデバイスのコア(論理コア)として生成するネットリスト生成手段と、前記ASICを構成する機能ブロックの回路データからASIC用論理合成データ及びプログラマブル・ロジックデバイス用論理合成データを作成する論理合成手段と、前記グループ化した機能ブロックについてのプログラマブル・ロジックデバイス用論理合成データを前記ネットリスト生成手段により生成されたネットリストに填め込んでプログラマブル・ロジックデバイスの回路を記録した実機評価用ROMデータを生成するROMデータ生成手段と、前記論理合成手段により作成されたASIC用論理合成データを用いてASICのレイアウト作成およびタイミング検証を前記ROMデータ生成手段による実機評価用ROMデータの生成とコンカレントに行なうレイアウト作成手段と、を備えたことを特徴とする。
この発明によれば、ASICを構成する機能ブロックをポート間接続情報に基づいてグループ化し、グループ化した機能ブロックのポートとポート間接続情報からなるネットリストをプログラマブル・ロジックデバイスのコア(論理コア)として生成し、ASICを構成する機能ブロックの回路データからASIC用論理合成データ及びプログラマブル・ロジックデバイス用論理合成データを作成し、グループ化した機能ブロックについてのプログラマブル・ロジックデバイス用論理合成データを生成したネットリストに填め込んでプログラマブル・ロジックデバイスの回路を記録した実機評価用ROMデータを生成し、作成したASIC用論理合成データを用いてASICのレイアウト作成およびタイミング検証を実機評価用ROMデータの生成とコンカレントに行なうこととしたので、ASICとプログラマブル・ロジックデバイスの効率的なコンカレント開発が可能になり、ASICの開発期間を短縮することができる。
また、本発明は、ネットワークに接続されたコンピュータからユーザが利用するASICとプログラマブル・ロジックデバイスのコンカレント開発システムにおいて、前記ユーザの要求に応じてASICの論理合成を実行するASIC論理合成手段と、前記ASIC論理合成手段により作成されたASICの論理合成結果が前記ユーザの要求する速度性能を満足したか否かを判断するASIC論理合成結果判断手段と、前記ASIC論理合成結果判断手段による判断結果に基づいてプログラマブル・ロジックデバイスの論理合成を実行するプログラマブル・ロジックデバイス論理合成手段と、前記ASIC論理合成手段によるASIC論理合成の実行結果及び前記プログラマブル・ロジックデバイス論理合成手段によるプログラマブル・ロジックデバイス論理合成の実行結果を前記コンピュータに表示する論理合成結果表示手段と、前記ASIC論理合成手段によるASIC論理合成の実行開始と実行結果及び前記プログラマブル・ロジックデバイス論理合成手段によるプログラマブル・ロジックデバイス論理合成の実行開始と実行結果を前記ユーザに電子メールで通知する論理合成通知手段と、を備えたことを特徴とする。
また、本発明は、ネットワークに接続されたコンピュータからユーザが利用するASICとプログラマブル・ロジックデバイスのコンカレント開発方法において、前記ユーザの要求に応じてASICの論理合成を実行するASIC論理合成工程と、前記ASIC論理合成工程により作成されたASICの論理合成結果が前記ユーザの要求する速度性能を満足したか否かを判断するASIC論理合成結果判断工程と、前記ASIC論理合成結果判断工程による判断結果に基づいてプログラマブル・ロジックデバイスの論理合成を実行するプログラマブル・ロジックデバイス論理合成工程と、前記ASIC論理合成工程によるASIC論理合成の実行結果及び前記プログラマブル・ロジックデバイス論理合成工程によるプログラマブル・ロジックデバイス論理合成の実行結果を前記コンピュータに表示する論理合成結果表示工程と、前記ASIC論理合成工程によるASIC論理合成の実行開始と実行結果及び前記プログラマブル・ロジックデバイス論理合成工程によるプログラマブル・ロジックデバイス論理合成の実行開始と実行結果を前記ユーザに電子メールで通知する論理合成通知工程と、を含んだことを特徴とする。
かかる発明によれば、ユーザの要求に応じてASICの論理合成を実行し、作成したASICの論理合成結果がユーザの要求する速度性能を満足したか否かを判断し、判断結果に基づいてプログラマブル・ロジックデバイスの論理合成を実行し、ASIC論理合成の実行結果及びプログラマブル・ロジックデバイス論理合成の実行結果をコンピュータに表示し、ASIC論理合成の実行開始と実行結果及びプログラマブル・ロジックデバイス論理合成の実行開始と実行結果をユーザに電子メールで通知することとしたので、ユーザは、論理合成の専任者を設置する必要がなく、いつでも論理合成が実行でき、専任者が実行したが如く論理合成品質を均一に保つことができるとともに、電子メールで論理合成の開始と結果の通知を受けることができ、論理合成の進捗を定期的にコンピュータで確認する必要がなくなる。
また、本発明は、前記ユーザの要求に応じて前記ASICを構成する機能ブロックから前記ユーザが指定する複数の機能ブロックのポート間接続情報から成るネットリストを生成するネットリスト生成手段と、前記ネットリスト生成手段により生成されたネットリストに論理合成済み対象機能ブロックのデータを填め込んでプログラマブル・ロジックデバイスの回路を記録したROMデータを生成するROMデータ生成手段と、前記ROMデータ生成手段により生成されたROMデータの生成結果を前記コンピュータに表示するROMデータ生成結果表示手段と、前記ROMデータ生成手段により生成されたROMデータの生成結果を前記ユーザに電子メールで通知するROMデータ生成結果通知手段とをさらに備えたことを特徴とする。
この発明によれば、ユーザの要求に応じてASICを構成する機能ブロックからユーザが指定する複数の機能ブロックのポート間接続情報から成るネットリストを生成し、生成したネットリストに論理合成済み対象機能ブロックのデータを填め込んでプログラマブル・ロジックデバイスの回路を記録したROMデータを生成し、生成したROMデータの生成結果をコンピュータに表示するとともに、ユーザに電子メールで通知することとしたので、ユーザは、プログラマブル・ロジックデバイス専用の開発環境が必要なく、プログラマブル・ロジックデバイスの回路を記録したROMデータを作成する負荷と、時間と、かかるコストとを削減することができる。
また、本発明は、前記ユーザが指定した前記ASICを構成する機能ブロックの設計が未完了で回路データが存在しない場合に、当該機能ブロックの入力端子及び出力端子に仮のフリップ・フロップなどを用いた回路を挿入したネットリストを生成する仮ネットリスト生成手段をさらに備えたことを特徴とする。
この発明によれば、ユーザが指定したASICを構成する機能ブロックの設計が未完了で回路データが存在しない場合に、当該機能ブロックの入力端子及び出力端子に仮のフリップ・フロップなどを用いた回路を挿入したネットリストを生成することとしたので、プログラマブル・ロジックデバイスのプロトタイピングによる検証において、検証対象ではない機能ブロックの設計が完了していなくとも、プロトタイピングによる検証を進めることができ、検証の効率化を図ることができる。
また、本発明は、前記ユーザが持つ最新の回路データとインプリメント設計者がインプリメント設計に取り込んでいる回路データ間の変更の規模を監視する監視手段と、前記監視手段による監視結果及びレイアウト設計にかかる時間に基づいて計画された日時に到達すると前記変更を前記ASICのインプリメント設計への反映のタイミングにあることを前記ユーザ及び前記ASICのインプリメント設計者に電子メールで通知する変更タイミング通知手段と、前記変更タイミング通知手段に応答して前記ユーザが前記反映の日付を変更することで停止を要求する反映停止要求手段とをさらに備えたことを特徴とする。
この発明によれば、ユーザが持つ最新の回路データとインプリメント設計者がインプリメント設計に取り込んでいる回路データ間の変更の規模を監視し、監視結果及びレイアウト設計にかかる時間に基づいて計画された日時に到達すると変更をASICのインプリメント設計へ反映するタイミングにあることをユーザ及びASICのインプリメント設計者に電子メールで通知し、この通知に応答してユーザが反映の日付を変更することで停止を要求することとしたので、発生した変更を効率よくASICのレイアウト設計に反映することができるとともに、変更を反映するタイミングを設定することで、ユーザはいつまで変更することが可能かを判断することができ、早い段階でスケジュールの見直しができる。
また、本発明は、一方では、複数の機能ブロックの全部又は一部の機能ブロックを含むFPGAの端子情報が記述された第1デザインと、該第1デザインの下位層として記述された該FPGAと同様の端子情報が記述された第2デザインとから、該第1デザイン、第2デザインにおける同一端子間が接続され、かつ、該端子間にFPGA対応のバッファが挿入されたFPGA用デザイン情報を生成し、他方では、該複数の機能ブロックを含むASICの端子情報が記述された第3デザインと、該第3デザインの下位層として記述された該ASICと同様の端子情報が記述された第4デザインとから、該第3デザイン、第4デザイン間における同一端子間が接続され、かつ、該端子間にASIC対応のバッファが挿入されたASIC用デザイン情報を生成し、前記第2デザイン、第4デザインのそれぞれを、各デザインが含む機能ブロックの接続情報に基づいて生成された回路情報で置き換える、ことでFPGA及びASICのネットリストを生成することを特徴とする。
この発明によれば、一方では、複数の機能ブロックの全部又は一部の機能ブロックを含むFPGAの端子情報が記述された第1デザインと、第1デザインの下位層として記述されたFPGAと同様の端子情報が記述された第2デザインとから、第1デザイン、第2デザインにおける同一端子間が接続され、かつ、端子間にFPGA対応のバッファが挿入されたFPGA用デザイン情報を生成し、他方では、複数の機能ブロックを含むASICの端子情報が記述された第3デザインと、第3デザインの下位層として記述されたASICと同様の端子情報が記述された第4デザインとから、第3デザイン、第4デザイン間における同一端子間が接続され、かつ、端子間にASIC対応のバッファが挿入されたASIC用デザイン情報を生成し、第2デザイン、第4デザインのそれぞれを、各デザインが含む機能ブロックの接続情報に基づいて生成された回路情報で置き換える、ことでFPGA及びASICのネットリストを生成することとしたので、ASICとプログラマブル・ロジックデバイスの効率的なコンカレント開発が可能になり、ASICの開発期間を短縮することができる。
本発明によれば、ASICを構成する機能ブロックをポート間接続情報に基づいてグループ化し、グループ化した機能ブロックのポートとポート間接続情報からなるネットリストをプログラマブル・ロジックデバイスのコア(論理コア)として生成し、ASICを構成する機能ブロックの回路データからASIC用論理合成データ及びプログラマブル・ロジックデバイス用論理合成データを作成し、グループ化した機能ブロックについてのプログラマブル・ロジックデバイス用論理合成データを生成したネットリストに填め込んでプログラマブル・ロジックデバイスの回路を記録した実機評価用ROMデータを生成し、作成したASIC用論理合成データを用いてASICのレイアウト作成およびタイミング検証を実機評価用ROMデータの生成とコンカレントに行ない、生成したROMデータを用いた実機評価結果に基づく回路データの変更をASICのレイアウト作成およびタイミング検証に反映することとしたので、ASICとプログラマブル・ロジックデバイスの効率的なコンカレント開発が可能になり、ASICの開発期間を短縮することができるという効果を奏する。
また、本発明によれば、ASICを構成する機能ブロックをポート間接続情報に基づいてグループ化し、グループ化した機能ブロックのポートとポート間接続情報からなるネットリストをプログラマブル・ロジックデバイスのコア(論理コア)として生成し、ASICを構成する機能ブロックの回路データからASIC用論理合成データ及びプログラマブル・ロジックデバイス用論理合成データを作成し、グループ化した機能ブロックについてのプログラマブル・ロジックデバイス用論理合成データを生成したネットリストに填め込んでプログラマブル・ロジックデバイスの回路を記録した実機評価用ROMデータを生成し、作成したASIC用論理合成データを用いてASICのレイアウト作成およびタイミング検証を実機評価用ROMデータの生成とコンカレントに行なうよう構成したので、ASICとプログラマブル・ロジックデバイスの効率的なコンカレント開発が可能になり、ASICの開発期間を短縮することができるという効果を奏する。
また、本発明によれば、ユーザの要求に応じてASICの論理合成を実行し、作成したASICの論理合成結果がユーザの要求する速度性能を満足したか否かを判断し、判断結果に基づいてプログラマブル・ロジックデバイスの論理合成を実行し、ASIC論理合成の実行結果及びプログラマブル・ロジックデバイス論理合成の実行結果をコンピュータに表示し、ASIC論理合成の実行開始と実行結果及びプログラマブル・ロジックデバイス論理合成の実行開始と実行結果をユーザに電子メールで通知する構成としたので、ユーザは、論理合成の専任者を設置する必要がなく、いつでも論理合成が実行でき、専任者が実行したが如く論理合成品質を均一に保つことができるとともに、電子メールで論理合成の開始と結果の通知を受けることができ、論理合成の進捗を定期的にコンピュータで確認する必要がなくなるという効果を奏する。
また、本発明によれば、ユーザの要求に応じてASICを構成する機能ブロックからユーザが指定する複数の機能ブロックのポート間接続情報から成るネットリストを生成し、生成したネットリストに論理合成済み対象機能ブロックのデータを填め込んでプログラマブル・ロジックデバイスの回路を記録したROMデータを生成し、生成したROMデータの生成結果をコンピュータに表示するとともにユーザに電子メールで通知する構成としたので、ユーザは、プログラマブル・ロジックデバイス専用の開発環境が必要なく、プログラマブル・ロジックデバイスの回路を記録したROMデータを作成する負荷と、時間と、かかるコストとを削減することができるという効果を奏する。
また、本発明によれば、ユーザが指定したASICを構成する機能ブロックの設計が未完了で回路データが存在しない場合に、当該機能ブロックの入力端子及び出力端子に仮のフリップ・フロップなどを用いた回路を挿入したネットリストを生成することとしたので、プログラマブル・ロジックデバイスのプロトタイピングによる検証において、検証対象ではない機能ブロックの設計が完了していなくとも、プロトタイピングによる検証を進めることができ、検証の効率化を図ることができるという効果を奏する。
また、本発明によれば、ユーザが持つ最新の回路データとインプリメント設計者がインプリメント設計に取り込んでいる回路データ間の変更の規模を監視し、監視結果及びレイアウト設計にかかる時間に基づいて計画された日時に到達すると変更をASICのインプリメント設計へ反映するタイミングにあることをユーザ及びASICのインプリメント設計者に電子メールで通知し、この通知に応答してユーザが反映の日付を変更することで停止を要求することとしたので、発生した変更を効率よくASICのレイアウト設計に反映することができるとともに、変更を反映するタイミングを設定することでユーザはいつまで変更することが可能かを判断することができ、早い段階でスケジュールの見直しができるという効果を奏する。
また、本発明によれば、一方では、複数の機能ブロックの全部又は一部の機能ブロックを含むFPGAの端子情報が記述された第1デザインと、第1デザインの下位層として記述されたFPGAと同様の端子情報が記述された第2デザインとから、第1デザイン、第2デザインにおける同一端子間が接続され、かつ、端子間にFPGA対応のバッファが挿入されたFPGA用デザイン情報を生成し、他方では、複数の機能ブロックを含むASICの端子情報が記述された第3デザインと、第3デザインの下位層として記述されたASICと同様の端子情報が記述された第4デザインとから、第3デザイン、第4デザイン間における同一端子間が接続され、かつ、端子間にASIC対応のバッファが挿入されたASIC用デザイン情報を生成し、第2デザイン、第4デザインのそれぞれを、各デザインが含む機能ブロックの接続情報に基づいて生成された回路情報で置き換える、ことでFPGA及びASICのネットリストを生成することとしたので、ASICとプログラマブル・ロジックデバイスの効率的なコンカレント開発が可能になり、ASICの開発期間を短縮することができるという効果を奏する。
以下、図面を参照して本発明の実施の形態例を詳細に説明する。第1図は本発明方法の原理を示すフローチャートである。本発明は、ブロックのポートとポートの接続情報なるASICのコア(論理コア)から、接続関係のある任意のブロックを選択しグループ化する手段により任意の規模、個数のブロックのポートとポートの接続情報からなる、論理合成ツールが読み込み可能なHDLフォーマットのコア(論理コア)を生成し(ステップ1)、チップの端子情報から論理合成ツールで仮のチップデザインを作成し、このデザインに端子を発生させ(ステップ2)、作成したデザイン内部にステップ2と同一のデザインをセルとして発生させ(ステップ3)、デザインとセル間の同一名称のポートを接続し(ステップ4)、接続したポート間のネットに対し、デバイス・テクノロジに依存するI/Oバッファを挿入し(ステップ5)、ステップ1で作成したコア(論理コア)とセルを入れ替え、トップ階層であるデザインの階層を展開し、ネットリストを生成する(ステップ6)、ことを特徴とする。
本発明では、ポート名、レンジ、入出力定義からブロックのポート仕様であるエンティティを作成しファイルに出力する(ファイルに書き込む)。入出力で出力定義されているポートに関して出力信号ファイルを作成する手段により、あるブロックの入力ポートに指定された、出力元インスタンスの出力ポート名に間違いがないかチェックし、出力元インスタンス名にデバイスのパッケージの端子と接続する旨のI/O等、キーワードの定義がある場合に、出力元インスタンスの出力ポート名にある名称をデバイスのパッケージの端子名とし、該端子が1本なのか複数(ベクタ)なのかをレンジの定義から判断する手段と、該端子が入力なのか出力なのかを入出力の定義から判断する手段と、該端子が双方向なのかを種別の定義から判断する手段により、コア(論理コア)のポート仕様であるエンティティを作成し、ファイルに出力する。ここで、インスタンスとは回路ユニットのことである。
ブロックのポートが入出力定義で入力定義されている場合、該ポートの出力元インスタンス名と出力元インスタンスの出力ポート名の組が前述の出力信号ファイルに存在するかチェックする手段と、前記チェック結果、インスタンス間のポートの接続が可能と判断した場合、インスタンス間を接続する信号を生成し、ファイルに出力する。全インスタンスのチェックを含め、処理が完了した時、前述のコア(論理コア)のエンティティとインスタンス間ネットを読み込み、コア(論理コア)を生成しファイルに出力する。
チェック結果が問題なければ、ブロックの入出力ポート仕様とインスタンス間の接続ネットとインスタンスとデバイスパッケージの端子となる外部端子間の接続ネットからなり、論理設計部分を全く持たないHDL(ハードウェア記述言語)のファイル(以降コア(論理コア)と称する)を出力する。
チェック結果が問題なければ、ブロックの入出力ポート仕様とインスタンス間の接続ネットとインスタンスとデバイスパッケージの端子となる外部端子間の接続ネットからなり、論理設計部分を全く持たないHDL(ハードウェア記述言語)のファイル(以降コア(論理コア)と称する)を出力する。
従って、本発明のコア(論理コア)を生成する手法によれば、集積回路開発において、RTL設計の入力となるブロックのポート仕様の品質を事前に確保できる効果があり、更に機能ブロックが多く存在し、設計リソースも多い大規模集積回路の開発においても、事前にブロック間の接続が確認できていることにより、必ずチップが組み上がることを保証することができる。
実施の形態1.
第2図は本発明の実施の形態1の動作説明図である。この図は、回路アーキテクチャ検討結果を入力とし、設計データを共通化し、回路アーキテクチャを共有しつつ集積回路を開発するものである。
第2図は本発明の実施の形態1の動作説明図である。この図は、回路アーキテクチャ検討結果を入力とし、設計データを共通化し、回路アーキテクチャを共有しつつ集積回路を開発するものである。
実現する機能をHDLを手段として設計する場合、製品自身であるチップは、ある機能を持つインスタンスで構成される。このインスタンスは、HDLで設計された複数の機能で構成されるブロックを参照するものであり、特定のブロックがチップの機能を実現する上で必要であれば、該ブロックを複数参照するものである。
第2図に従い本発明の流れを説明する。X、Y、Zは、回路アーキテクチャ検討結果から作成されるブロックのポート仕様を、定義済みのフォーマットに従って定義したテーブルである。これらテーブルX、Y、Zは、ブロックを設計する際、必ず作成されるものであり、ブロック名、インスタンス名、ポート名、レンジ、入出力、種別、出力元インスタンス名、出力元インスタンスの出力ポート名等からなる。これらデータは、ユーザがマニュアルで入力するものである。このように、各テーブルを予め作成しておくことが本発明のポイントである。
S1は、前述の全インスタンスのテーブルデータを入力とし、インスタンス間及びインスタンスとデバイスパッケージの端子として定義された外部端子間が矛盾なく接続されているかをチェックする手段と、インスタンス間のネットを定義する手段とによりブロックのポートとブロック間接続情報のみからなるコア(論理コア)を生成するステップである。ステップS1でエラーがあった場合、エラーをユーザに返し、ユーザはデータ入力をやり直す(図中に示す円状の矢印1は繰り返しを示している)。
S2はFPGAテーブル2を参照し、ステップS1出力のコア(論理コア)を論理合成ツールに読み込み、プログラマブル・ロジックデバイスとするインスタンスのグループを論理合成ツールの機能を制御して選択し、階層情報を維持した状態で新たなコア(論理コア)を生成し、デバイス・テクノロジに依存するI/Oバッファ等を含まないステップS1出力と同様のコア(論理コア)のネットリストを出力するステップである。この図で、X、Yはユーザが指定するものである。
S3は、定義済みフォーマットであるデバイスパッケージの端子仕様テーブルデータの端子名から仮のコア(論理コア)を生成し、テーブルデータで指定のデバイス・テクノロジに依存するI/Oバッファを仮のコア(論理コア)のポートに挿入後、ステップS2出力のネットリストと入れ替えるステップであり、本発明のポイントである。この処理によって対象とするデバイスのチップのネットリストができた後、論理合成ツールの機能を制御して対象のデバイス・テクノロジで論理合成済みの回路データをFPGA合成結果のライブラリ3から読み込み、対応するブロックに填め込み、所望のデバイスのネットリストを完成させるものである。FPGAとして生成したネットリストは、FPGAのレイアウトツールでフィッティングし、ROMデータ化される。
また、ステップS2から、ASIC合成結果ライブラリ4を参照することによってASIC化している。
この実施の形態1によれば、集積回路開発において、RTL設計の入力となるブロックのポート仕様の品質を事前に確保できる効果があり、更に機能ブロックが多く存在し、設計リソースも多い大規模集積回路の開発においても、事前にブロック間の接続が確認できていることにより、必ずチップが組み上がることを保証することができる。
第3図は本発明の論理合成ツール制御装置の一実施の形態例を示すブロック図である。図において、22は全体の動作を制御する制御装置、24は各種情報を表示するCRT、21は制御装置22に各種のコマンド等を入力する入力装置、23は制御装置22と接続され、各種の情報を記憶する記憶装置である。
入力装置21は、コア(論理コア)生成プログラムの起動コマンド、論理合成ツール制御コマンドを入力するものであり、記憶装置23には論理合成ツール、コア(論理コア)生成プログラム、論理合成制御プログラムが記憶されている。
入力装置21からブロックのテーブルファイルを指定してコア(論理コア)生成プログラム起動コマンドを入力すると、コア(論理コア)生成プログラムはテーブルファイルを読み込み、コア(論理コア)を生成し、記憶装置23にファイル出力する。この処理中にエラーがあれば、そのエラー情報を表示装置であるCRT24に表示する。
設計者は、エラーがあった場合、テーブルファイルを修正後、再度コマンドを実行する。論理合成ツールの制御では、先ず制御用の必要なデータをファイルとして用意し、コア(論理コア)生成プログラムで生成したコア(論理コア)ファイルと一緒に記憶装置23内の所定の場所に格納する。そして、論理合成ツールの制御コマンドを入力装置21から入力すると、論理合成ツールが起動し、処理結果がCRT24に表示される。途中、処理に失敗した場合は、失敗した時の状態がCRT24に表示される。
第4図は第3図の制御装置22の一実施の形態例を示すブロック図である。第3図と同一のものは、同一の符号を付して示す。図において、31は全体の動作を制御するCPU、32は各種の情報を記憶するメモリ、21は各種のコマンド等を入力するキーボード、24は表示装置としてのCRTである。23は記憶装置であり、コア(論理コア)生成プログラム36、論理合成ツール制御プログラム35、論理合成ツール34及びオペレーティングシステム(OS)33より構成されている。37は各構成要素間を接続するバスである。記憶装置23としては、例えばハードディスク装置が用いられる。
このように構成されたシステムにおいて、CPU31はキーボード21からのコマンドを入力すると、記憶装置23を検索して、該当するプログラムを呼び出し、該当するプログラムを実行する。
第5図、第6図はコア(論理コア)生成プログラムを示すフローチャートである。ここでは、第2図のX、Y、Zのテーブルデータを使用して説明する。テーブルデータX、Y、Z(インスタンスもX、Y、Z)のファイルを読み込み、1ファイルずつ処理を行なう。F1でXのデータを読み込み、F2でポートAのテーブルの全データを抽出してメモリに記憶し、このメモリのデータを参照しながら次の処理を行なう。F2'でポートは出力であるか否かをチェックする。
ポートAは入力であるので、インスタンス名とポート名をファイルAに出力するステップF3はスキップし、F3'に進む。F3'では、パッケージ端子との接続キーワードがあるか否かをチェックする。次に、パッケージ端子の接続キーワードはないため、パッケージ端子情報をメモリに格納するF4はスキップし、次のポートBの全データをメモリに記憶する。
ポートBは出力であるので、F3のステップにより"XB"を記憶装置23のファイルAに出力する。ここで、Xはファイル名、Bはポート名である。次に、パッケージ端子の接続キーワードはないためF4をスキップして次のポートZの全データをメモリに記憶する。ポートZは出力であるので、F3のステップにより"XZ[2:0]"を前記ファイルAに出力する。ここで、[2:0]は、2、1、0を示す。
次に、パッケージ端子の接続キーワードはないため、F4をスキップし、次のポートIの全データをメモリに記憶する。ポートIは入力であるのでF3をスキップし、次にパッケージ端子の接続キーワード"IO"があるため、"INPUT,in,2:0"をコア(論理コア)のポート名としてメモリに記憶する。次に、全ポート終了であるかどうかチェックする(F4')。全ポートが終了していない場合には、ステップF2に戻る。
これで、Xの全ポートの処理が終了し、VHDLであれば、以下のような情報を持ったエンティティファイルを記憶装置23に出力する。
A:in std_logic;
B:out std_logic;
Z:out std_logic vector(2 downto 0);
I:in std_logic;
A:in std_logic;
B:out std_logic;
Z:out std_logic vector(2 downto 0);
I:in std_logic;
上記の処理をY,Zのデータについても行ない、全ファイルが終了すると(F5')、F6のステップによりVHDLであれば、以下のような情報を持ったコア(論理コア)のエンティティファイルを記憶装置23に出力する。
INPUT:in std_logic;
OUT :out std_logic;
また、ファイルAには以下のようなデータが記録されている。
XB,XZ[2:0],YC[1:0],YO,ZF
INPUT:in std_logic;
OUT :out std_logic;
また、ファイルAには以下のようなデータが記録されている。
XB,XZ[2:0],YC[1:0],YO,ZF
次に、F7のステップで上記ファイルAのデータを読み込み、F8のステップでメモリに記憶し、1ファイルずつ処理を行なう。F8'のステップでは、ポートは入力であるかどうかチェックする。ここで、Xのテーブルデータを例に説明する。ポートAは入力であるので、F9のステップにより出力元のYとポート名のCを抽出し、続くF10のステップによりYC[1:0]をF8で記憶したデータで検索する。そして、F10'で一致するかどうかチェックする。
検索の結果、存在するので、F12のステップにより以下のような接続情報をファイルBに出力する。結果が一致しない場合は、ポートの名称又はレンジが異なっている等のエラー情報を記憶装置23のログファイルに出力すると共に、CRT24にも表示する。
A=>YC
次に、同様にしてポートBは出力であるので、F11のステップにより、以下のような接続情報をファイルBに出力する。
B=>XB
次に、同様にしてポートZは出力であるので、F11のステップにより、以下のような接続情報をファイルBに出力する。
Z=>XZ
A=>YC
次に、同様にしてポートBは出力であるので、F11のステップにより、以下のような接続情報をファイルBに出力する。
B=>XB
次に、同様にしてポートZは出力であるので、F11のステップにより、以下のような接続情報をファイルBに出力する。
Z=>XZ
次に、ポートIは入力であるが、F10のステップの検索で"IOINPUT"が発見できず、F13のステップでエラーとしてログファイルに出力されると共に、CRT24にも表示する。但し、パッケージの端子と接続されるポートの場合は問題ではなく、逆にログに出力されたエラー情報からどのインスタンスのどのポートがパッケージのどの端子と接続したかの確認ができる。次に、F12のステップにより、以下のような接続情報をファイルBに出力する。
I=>IOINPUT
ステップF12'では、全テーブルの全ポートが終了したかどうかをチェックし、終了していない場合には、ステップF8'に戻る。
I=>IOINPUT
ステップF12'では、全テーブルの全ポートが終了したかどうかをチェックし、終了していない場合には、ステップF8'に戻る。
以上の処理をY,Zのテーブルデータについても行ない、終了すると、F14のステップにより、接続情報が作成できなかったポートをログファイルに出力し、F15のステップによりF6のステップで出力したコア(論理コア)のエンティティリストとF11とF12のステップで出力した接続情報を結合し、コア(論理コア)のネットリストを生成し、記憶装置23に出力してプログラムを終了する。
次に、図を用いて本発明の実施の形態1の詳細手順について説明する。第7図は本発明の実施の形態1の詳細手順を示すフローチャートである。このフローチャートは、第2図で説明した実施の形態1のうち、S1で出力したコア(論理コア)を入力とするS2以降の処理を詳細に示すものである。図中、実線は処理の流れを示し、破線はデータの流れを示す。処理の実行前に、入力装置を操作してステップS2で出力したコア(論理コア)と必要があれば、以降の説明で出てくる制御ファイルを制御プログラムが参照する記憶装置内の場所へ複写等の手段によって準備する。
先ず、コア(論理コア)デザインをチェックする(a1)。そして、該コア(論理コア)デザインがOKかどうかチェックする(a1')。OKでない場合には、第2図説明のテーブルデータをチェック後、再実行する(a10)。OKである場合、ファイル12、13を参照してグループ化し(a2)、コア(論理コア)10として格納する。次に、端子名とバッファ名からなるテーブル14を参照してダミーコア(論理コア)を生成する(a3)。この結果、ダミーコア(論理コア)11が生成される。
次に、このダミーコア(論理コア)11及びテーブル14を基にしてI/Oバッファを挿入する(a4)。次に、コア(論理コア)10とダミーコア(論理コア)11とを比較チェックする(a5)。そして、OKであるかどうかチェックする(a5')比較の結果、OKである場合には終端処理を行なう(a6)。OKでない場合には、デバイスパッケージの端子仕様をチェックし(a9)、第2図説明のテーブルデータをチェック後、再実行する(a10)。
ステップa6の終端処理が終了したら、合成結果ファイル15を参照して回路データを填め込み(a7)、ファイル16を参照してDFT回路を挿入する(a8)。
次に、第7図で説明した各ステップの更に詳細な説明をする。第8図はコア(論理コア)デザインチェック制御を示すフローチャートである。先ず、コア(論理コア)のファイルがあるかどうかチェックし(a11)、ある場合には、論理合成ツールで読み込ませる(a12)。ない場合には、何もしない。ステップa1(第7図参照)では、ステップS2で出力したコア(論理コア)を入力とし、コア(論理コア)のHDL記述文法、空き入力ポート等をチェックするステップで、コア(論理コア)のファイルが存在すれば、ステップa12で論理合成ツールにコア(論理コア)を読み込ませる。論理合成ツールは、読み込んだ際、文法等のチェックを行なう機能を持っており、結果がエラーであればCRTで内容を確認し、ステップa10に示す通りブロックのポート仕様を記述したテーブルデータを見直し、再度デザインチェックを実行する。
第9図はグループ化制御を示すフローチャートで、第7図のステップa2の詳細を示している。先ず、コア(論理コア)のファイルがあるかどうかチェックし(a13)、ある場合にはグループ化するインスタンスのファイルがあるかどうかチェックする(a14)。ある場合には、即ち、ステップa1の結果に問題がない場合、プログラマブル・ロジックデバイス化する対象のブロック名を1行に1ブロックずつ記載されたファイル13があればそれを読み込み(a21)、対象のブロックの階層情報を維持した状態で新たなコア(論理コア)として論理合成ツールのグルーピング機能を制御してグループ化する(a22)。
グルーピング機能を使用する場合、コア(論理コア)のポート名がインスタンス間を接続しているネット名となるため、コア(論理コア)の全てのポートに対してコア(論理コア)内部へネットをトレースし、最初に発見したインスタンスのポート名でコア(論理コア)に新規ポートを発生させネットの名前となっているコア(論理コア)のポートに接続されているネットを発生させた新規ポートに接続し、ネット名となっているポートを削除する(a23)。新しいポートを作成して古いポートを消すためである。
次に、モニタポート情報があるかないかチェックする(a23')。ある場合には、コア(論理コア)に指定のインスタンスのポート名でポートを発生させ、ブロックの端子と接続する(a24)。ない場合には、デバイス・テクノロジに依存するI/Oバッファ等を含まないネットリストを記憶装置10(第7図参照)に出力する(a25)。この場合、表示装置においては、論理合成ツールの表示機能を使用して確認することができる。
このステップa2では、他に必要があれば、グループ化したブロックのポートをコア(論理コア)のポートとして発生させる(a24)こともできる。この機能は、プログラマブル・ロジックデバイスの機能評価時にモニタしたいポートがある場合に使用する。指定方法は、ファイル12に示すように、ポート名を1行に1ポートずつ記載したファイルをグルーピングとポート名称変更後に読み込ませることで行なう。
ここまでは、設計者自身がブロックのポート仕様を決めるデータを用いてコア(論理コア)を生成するため、コア(論理コア)内のブロック間のポート接続に間違いはないはずである。しかしながら、ステップS1(第2図参照)で生成するコア(論理コア)をそのまま使用するASICの場合、コア(論理コア)内ブロックのテーブルデータに定義するデバイスパッケージの端子名称はデバイスパッケージの端子仕様を参照するのが普通であり、従って単純なミスやプリント基板設計からの変更等で相違がある可能性がある。これとは逆に、ステップa2(第7図参照)で生成したコア(論理コア)のポートがデバイスパッケージの端子となる場合、該ポートが仕様となるため、前述と同様に相違がある可能性がある。この問題をステップa3からa5のステップで解消している。
第10図はI/Oバッファ挿入制御を示すフローチャートと処理のイメージを示す図である。このフローチャートは、第7図のステップa4の処理を示している。以下の説明では、a3からa5は別としているが、処理は1つのコマンドで一連の処理である。
先ず、外部端子情報及びコア(論理コア)のファイルがあるかどうかチェックする(a15)。ある場合には、以下の処理を行なう。a3では、a2と違い第7図の14で示すように第1カラムに端子名称、第2カラムに使用するデバイステクノロジに依存するI/Oバッファ名を定義したデバイスパッケージの端子仕様のテーブルデータが存在すれば、それを読み込ませ、ダミーのチップのデザイン(第1カラムの名称の端子情報を記述した第1デザイン)を作成し(a31)、この内部に前記ダミーチップのデザインをセル(第1デザインの下位層として記述した第1デザインと同様の端子情報を記述した第2デザイン)として発生させ、前記デザインと前記セル間の同一名称のポートを接続し、記憶装置11にダミーのコア(論理コア)を出力する。
ステップa4では、記憶装置11のダミーのコア(論理コア)を読み込み、デバイスパッケージの端子仕様テーブルデータ14の第2カラムにあるI/Oバッファをダミーのコア(論理コア)のネットに対しチップの端子情報からデバイス・テクノロジに依存するI/Oバッファを挿入する(a32)。
ステップa5では、上記ダミーコア(論理コア)のポートのうち機能に関係のない論理に係わらないデバイス特有でテスト用等のポートを削除し、内部のセルとして記憶装置10のコア(論理コア)と入れ替え(a33)、端子名の不一致があるかどうかチェックする(a33')。2つのコア(論理コア)間のポート名が全て一致すれば、填め込みに成功である。こうすることで、デバイスパッケージの端子仕様テーブルデータの端子名称とコア(論理コア)のポート名称をクロスチェックでき、上記の問題を解消できる。ある場合は処理は終了し、ない場合にはネットリストを出力する。
失敗した場合には、ステップa9に示す通り、デバイスパッケージの端子仕様をチェックし、a3のステップから再実行するか、ステップa10に示す通りブロックの端子仕様を定義したテーブルデータをチェックし、ステップS1(第2図参照)から再実行する。成功した場合、コア(論理コア)の階層を展開することでチップと化す。
ステップa6では、前記チップの全ブロックの入出力ポートにフリップフロップをブロック内部に接続し、終端する。この終端処理は、仮に回路設計が完了していないブロックが存在したとしても問題なくネットリストを生成し、レイアウト作業を可能とするためのものである。
ステップa7では、論理合成済みの回路データを合成結果のライブラリから読み込み、対応するブロックに填め込む。この時、チップ内部のブロックに対する合成結果が存在せず、且つ該ブロックのデザイン名称又はセル名称が名前付け規則に従ったものであれば、該ブロックの入力ポートと出力ポートを予め規則に従って該ブロック内部で接続処理する。
この処理は、プログラマブル・ロジックデバイスの場合には、存在せず、プログラマブル・ロジックデバイスのDLL等特有のブロックをASICとする場合に施す。このブロックを削除せずブロック内部で接続する処理によって、アーキテクチャが保持できる。また、ブロック内部にメモリ等のマクロが存在する場合は、デバイス特有のメモリの回路データに入れ替える。
a8はASICの場合の処理で、デバイスをテストするSCANテスト回路の自動挿入、又はSCANテスト回路を接続するブロックの順序を定義したファイル16を入力し、定義順に接続する。
以上、述べたように、本実施の形態1によれば、設計ドキュメントからのデータからコア(論理コア)を生成し、このコア(論理コア)から階層構造及び接続情報を保持した状態でプログラマブル・ロジックデバイス用に新たにコア(論理コア)を生成することによって、回路アーキテクチャを共有できる効果があり、このコア(論理コア)に対して回路データを填め込み機能を検証したインスタンス内のデバイス・テクノロジに依存しない回路データ及びインスタンス間のネットは、ASIC化した場合に再検証を回避することが可能となる。よって、ASICとプログラマブル・ロジックデバイスのコンカレント開発を効率よく進めることを可能にできる効果もある。
実施の形態2.
次に、本発明に係るASICとFPGAのコンカレント開発システムについて詳細に説明する。なお、論理の設計言語には、C言語、UMLなどがあるが、本実施の形態2では、HDLを設計言語として説明する。
次に、本発明に係るASICとFPGAのコンカレント開発システムについて詳細に説明する。なお、論理の設計言語には、C言語、UMLなどがあるが、本実施の形態2では、HDLを設計言語として説明する。
まず、本実施の形態2に係るASICとFPGAのコンカレント開発の概念について説明する。第12図は、本実施の形態2に係るASICとFPGAのコンカレント開発の概念を説明するための説明図である。同図に示すように、このASICとFPGAのコンカレント開発の特徴は、FPGAによるプロトタイピング検証をASICのインプリメント設計とコンカレントに進めるために、プロトタイピング検証に必要なFPGAの回路を記録したROMデータをASICのインプリメント設計から提供し、FPGAとASIC開発をシームレスにできることである。
このASICとFPGAのコンカレント開発では、回路アーキテクチャ検討においてFPGAによるプロトタイピング検証を考慮し、適当な予想規模の実現回路での実現機能の分割、ASICとFPGA間の構造的違いに係る機能の階層化などを行ない、ASICとFPGA設計間の共通の機能ブロック構成及び機能ブロックのポート仕様を作成する。この機能ブロック構成及び機能ブロックのポート仕様データは、ASICのインプリメント設計のフロアプラン、論理合成、レイアウト設計の共通のデータとなる。
RTL設計・検証では、回路アーキテクチャ検討結果の構造に従ってASICとFPGA共通のRTL設計を行ない、機能毎にコーナーケースを重点に論理検証ツールを用いてソフト検証を行なう。このRTL設計・検証とコンカレントにASICの論理合成を実施し、ASICとしての特性が確保できれば、次にFPGAの論理合成を実施し、逐次プロトタイピング用基板上のFPGAに回路を形成し、FPGAのプロトタイピングによる検証を可能にする。
一方、ASICのレイアウトでは、ASICとFPGA設計間の共通の機能ブロック構成を基に、ソフト検証とプロトタイピングによる検証結果を随時コンカレントに反映させることによって、FPGAのプロトタイピングによる検証の完了からASIC開発完了までの期間を短縮する。
次に、本実施の形態2に係るASICとFPGAのコンカレント開発システムのシステム構成について説明する。第13図は、本実施の形態2に係るASICとFPGAのコンカレント開発システムのシステム構成を示す機能ブロック図である。同図に示すように、このASICとFPGAのコンカレント開発システム200は、ファイアウォール210と、Webサーバ220と、ユーザ認証サーバ230と、ユーザ管理サーバ240と、論理合成サーバ250と、メールサーバ260と、ファイルサーバ270と、アプリケーションサーバ280と、監視サーバ290とを有する。また、このASICとFPGAのコンカレント開発システム200は、インターネットを介してWebクライアント100から利用することができる。
ファイアウォール210は、インターネットからのアクセス要求に対し、設定された通信手順に従ったアクセス要求のみを受入れるコンピュータであり、ASICとFPGAのコンカレント開発システム200への外部からの不正なアクセスを防ぐ。
Webサーバ220は、インターネットを通じて成されるWebクライアント100からの要求に対して情報送信を行なうコンピュータであり、ASIC又はFPGAを構成する機能ブロックのポートと機能ブロックのポート間の接続情報のみから論理COREを生成する論理CORE生成インタフェースプログラム221、論理合成インタフェースプログラム222、フィッティングインタフェースプログラム223、状況表示インタフェースプログラム224、論理CORE生成に必要なフォーマットファイルと論理合成に必要なフォーマットファイルとを有し、このコンピュータがWebクライアント100からの要求に応じてこれらのプログラムを実行し、Webクライアント100に結果を送信する。
ユーザ認証サーバ230は、ユーザの認証を行なうコンピュータであり、契約に基づいて使用するユーザ名とパスワードが登録されている。ユーザ管理サーバ240は、ユーザの登録、削除を行なうコンピュータであり、契約に基づいて使用するユーザ名と後述するProject名とメールアドレスが登録されている。
論理合成サーバ250は、ASIC論理CORE生成プログラム251と、FPGA論理CORE生成プログラム252と、ASIC論理合成プログラム253と、FPGA論理合成プログラム254と、FPGAのレイアウトであるフィッティングプログラム255とを有するコンピュータであり、この論理合成サーバ250にある論理合成及びフィッティングのプログラムは、論理合成インタフェースプログラム222から起動され、ファイルサーバ270に格納されているRTLソースを読込み、ASIC及びFPGAの論理合成とFPGAのフィッティングを実行する。
メールサーバ260は、メール送受信ソフトウェアを有するコンピュータであり、Webサーバ220から実行された処理情報、Webクライアント100からの情報をユーザとシステム内へメール配信する。
ファイルサーバ270は、論理合成対象RTLソース、論理合成結果、FPGAのROMデータなどを格納する記憶媒体である。第14図は、ファイルサーバ内にデータを格納するためのディレクトリ構成の一例を示す図である。同図に示すProject41とは、ASIC及びFPGAを開発するProject名あるいはASICのニックネームのディレクトリであり、この名称は契約に基づいて設定される。
IO42は、論理COREを生成するためのデータを格納するディレクトリであり、ASICを構成する機能ブロック単位に、第15図に示す機能ブロックのポート仕様を記載した論理CORE生成用テーブルのファイルを格納するディレクトリASIC48と、論理CORE生成インタフェースプログラム221がユーザの指定に従ってディレクトリASIC48内の論理CORE生成用テーブルのファイルを複写して格納するディレクトリFPGA49とをもつ。また、ディレクトリFPGA49の下に、ユーザが指定するFPGAの番号の数のディレクトリが存在する。なお、論理CORE生成用テーブル及び論理CORE生成インタフェースプログラム221の詳細については後述する。
CORE43は、論理CORE生成プログラムが生成した論理COREを格納するディレクトリであり、ASICを構成する機能ブロックのポート仕様から生成したASICの論理COREを格納するディレクトリASIC50と、FPGAを構成する機能ブロックのポート仕様からFPGAの論理COREを格納するディレクトリFPGA51をもつ。
RTL44は、後述する論理合成インタフェースからユーザがアップロードするHDL(ハードウェア記述言語)で表現された回路設計データ(以降RTL)を格納するディレクトリであり、ASICの論理COREを構成する機能ブロック単位に格納するディレクトリASIC52と、ユーザの指定に従ってASICディレクトリ内のRTLを複写して格納するディレクトリFPGA53とをもつ。
SYNTHESIS45は、論理合成サーバ250がRTLを論理合成した結果を格納するディレクトリであり、ASICの論理合成結果をASICの論理COREを構成する機能ブロック単位に格納するディレクトリをもつディレクトリASIC54と、それぞれのFPGAの論理合成結果を格納するディレクトリをもつディレクトリFPGA55をもつ。
ROM46は、FPGAの論理合成結果を基にFPGAのレイアウトであるフィッティング後生成されるFPGAの回路データを記憶するROMデータを格納するディレクトリであり、FPGA毎に格納するディレクトリをもつ。LAYOUT47は、ASICのレイアウト設計担当者がASICのレイアウト設計を行なう作業ディレクトリである。
アプリケーションサーバ280は、ASICのフロアプラン、レイアウト設計、タイミング検証を行なうプログラムを有するコンピュータである。このコンピュータでインプリメント設計者がASICのフロアプラン、レイアウト設計、タイミング検証を行なう。
監視サーバ290は、ユーザ管理サーバ240に登録されているユーザ名とProject名を取得し、それぞれのProject名のディレクトリ内にあるデータにおいて、インプリメント設計者が管理するディレクトリLAYOUT47内のデータとその他のディレクトリ内のデータとの比較、論理合成、レイアウト処理にツールが要した時間の収集を1日に1回ずつ2回に分けて行ない、1回目がインプリメント設計者への変更内容の通知を行ない、2回目に収集した時間を基に変更を反映するスケジュールを更新するコンピュータである。
次に、本実施の形態2のASICとFPGAのコンカレント開発システム200の処理手順について説明する。第16図は、本実施の形態2のASICとFPGAのコンカレント開発システム200の処理手順を示すフローチャートである。
同図に示すように、このASICとFPGAのコンカレント開発システム200にWebクライアント100を用いてアクセスすると、Webサーバ220は、第17図に示すログイン画面の表示制御データをWebクライアント100へ送り、Webクライアント100は、受取ったデータに基づいて画面を表示する。ユーザは、このログイン画面で契約に基づいて登録しているユーザ名とパスワードを入力してLoginボタンを押すと、Webクライアント100は、ユーザ名とパスワードをWebサーバ220に送る。
Webサーバ220は、受取ったユーザ名とパスワードをユーザ認証サーバ230に問い合わせる。ユーザ認証サーバ230は、ユーザ名とパスワードが登録されているか否かを確認し(ステップS501)、その結果をWebサーバ220に返す。Webサーバ220は、ユーザ認証サーバ230から拒絶された場合、ログイン拒否画面の表示制御データをWebクライアント100へ送り、Webクライアント100は、受取ったデータに基づいてログイン拒否を画面に表示して終了する(ステップS502)。
Webサーバ220は、ユーザ認証サーバ230からログインを受け付けられた場合、第18図に示す手順画面の表示制御データをWebクライアント100へ送り、Webクライアント100は受取ったデータに基づいて手順画面を表示する(ステップS503)。
ユーザは、第18図に示した手順画面に従いメニューを選択し、ASICとFPGAのコンカレント開発を行なう。ユーザが「フォーマット1」及び「フォーマット2」を選択すると(ステップS504の肯定)、Webサーバ220内にある対象の設計に必要なフォーマットファイルがWebクライアント100にダウンロードされる(ステップS505)。
「フォーマット1」は、第15図に示した論理CORE生成用テーブルのフォーマットデータである。「フォーマット2」は、後述するASICの論理合成で使用するASICのパッケージの端子名称と端子番号割り付け、及びASICと外部デバイス間を電気的にインタフェースするIOバッファを定義したテーブルのフォーマットデータである。
ユーザが論理CORE生成を選択すると(ステップS506の肯定)、Webクライアント100は論理CORE生成が選択された事をWebサーバ220へ送り、Webサーバ220は論理CORE生成インタフェースプログラム221を起動する(ステップS507)。
ユーザが論理合成を選択すると(ステップS508の肯定)、Webクライアント100は論理合成が選択された事をWebサーバ220へ送り、Webサーバ220は論理合成インタフェースプログラム222を起動する(ステップS509)。
ユーザがフィッティングを選択すると(ステップS510の肯定)、Webクライアント100はフィッティングが選択された事をWebサーバ220へ送り、Webサーバ220はフィッティングインタフェースプログラム223を起動する(ステップS511)。
ユーザが状況表示を選択すると(ステップS512の肯定)、Webクライアント100は状況表示が選択された事をWebサーバ220へ送り、Webサーバ220は状況表示インタフェースプログラム224を起動する(ステップS513)。
次に、論理CORE生成インタフェースプログラム221の処理手順について説明する。第19図は、論理CORE生成インタフェースプログラム221の処理手順を示すフローチャートである。同図に示すように、この論理CORE生成インタフェースプログラム221は、第20図に示す論理CORE生成インタフェース画面の表示制御データをWebサーバ220へ送り、Webサーバ220は受取った論理CORE生成インタフェース画面の表示制御データをWebクライアント100へ送り、Webクライアント100は受取った論理CORE生成インタフェース画面の表示制御データに基づいて論理CORE生成インタフェース画面を表示する(ステップS801)。
ユーザは、Project名を入力して実行ボタンを選択し、Webクライアント100によって表示されるファイル選択画面に従ってASICの論理COREを生成するためのASICを構成する機能ブロックのIO仕様を定義した第15図に示す論理CORE生成用テーブルのファイルを指定する。
Webクライアント100は、Projectの指定データとIOの論理CORE生成用テーブルのファイルをWebサーバ220へ送り、Webサーバ220は、ファイルサーバ270内に、第14図に示したIO42,CORE43,RTL44,SYNTHESIS45,ROM46,LAYOUT47などのディレクトリを作成し(ステップS802)、IO42下のディレクトリASIC48に論理CORE生成用テーブルのファイルを格納し、Project名を指定し、ASIC論理CORE生成プログラム251を実行し、実行プロセスIDをメモリに格納する(ステップS803)。
ここで、ASIC論理CORE生成プログラム251の処理手順について説明する。第21図及び第22図は、ASIC論理CORE生成プログラム251の処理手順を示すフローチャートである。第21図に示すように、このASIC論理CORE生成プログラム251は、第15図に示した論理CORE生成用テーブルX、Y、Zを、第14図のディレクトリASIC48から読込み、1ファイルずつ処理を行なう。
論理CORE生成用テーブルX、Y、Zは、回路アーキテクチャ検討結果から作成される機能ブロックのポート仕様を、定義済みの「フォーマット1」に従って定義したテーブルである。このテーブルは、機能ブロックを設計する際必ず作成されるものであり、機能ブロック名、インスタンス名、ポート名、レンジ、入出力、種別、出力元インスタンス名、出力元インスタンスの出力ポート名などから成る。インスタンスとは、ASICを構成する機能ブロックを参照するものであり、同一機能の機能ブロックを複数使用する場合はこのインスタンスの名称を変えて組込まれる。
まず、Xのデータを読込み(ステップS1001)、ポートAのテーブルの全データを抽出してメモリに格納し(ステップS1002)、ポートAが出力か否かを調べる(ステップS1003)。その結果、ポートAは入力であるので、次にパッケージ端子の接続キーワード"IO"の有無を調べる(ステップS1005)。その結果、接続キーワード"IO"はないので、次のポートBの全データをメモリに格納する。
ポートBは出力であるので、"XB"を第14図のディレクトリASIC50にAの名称でファイル出力する(ステップS1004)。次にパッケージ端子の接続キーワード"IO"はないので、次のポートZの全データをメモリに格納する。ポートZは出力であるので、"XZ[2:0] "をファイルAに出力する。次にパッケージ端子の接続キーワード"IO"はないので、次のポートIの全データをメモリに格納する。
ポートIは入力であり、次にパッケージ端子の接続キーワード"IO"があるので"INPUT,in,2:0"を論理COREのポート名としてメモリに格納する(ステップS1006)。これでXの全ポートの処理が終了し(ステップS1007の肯定)、HDLの文法に従ってポート名と入出力とレンジ情報を定義したエンティティファイルを第14図のディレクトリASIC50にXの名称でファイル出力する(ステップS1008)。出力される内容は、VHDLであれば以下のようなものである。
A: in std_logic;
B: out std_logic;
Z: out std_logic vector(2 downto 0);
I: in std_logic;
A: in std_logic;
B: out std_logic;
Z: out std_logic vector(2 downto 0);
I: in std_logic;
そして、上記の処理をY、Zのデータについても行なう。また、この段階でファイルAには次のようなデータが記録されている。
XB,XZ[2:0],YC[1:0],YO,ZF
XB,XZ[2:0],YC[1:0],YO,ZF
上記X、Y、Zの全ファイルの処理が終了すると(ステップS1009の肯定)、上記ファイルA(ステップS1010)のデータを読込み、メモリに格納し(ステップS1011)、1ファイルずつ処理を行なう。ここでは、Xのテーブルデータを例に説明する。まず、ポートAが入力であるか否かを調べ(ステップS1012)、その結果、ポートAは入力であるので、出力元のYとポート名のCを抽出する(ステップS1013)。そして、メモリをYC[1:0]で検索し(ステップS1014)、一致するデータの有無を調べる(ステップS1016)。その結果、一致するデータがメモリに存在するので、以下のような接続情報を第14図のディレクトリASIC50にBの名称でファイル出力する(ステップS1018)。結果が一致しない場合は、ポートの名称またはレンジが異なっているなどのエラー情報をディレクトリASIC50のログファイルに出力する(ステップS1017)。
A => YC
A => YC
同様にして、ポートBは出力であるので、以下のような接続情報をディレクトリASIC50のファイルBに出力する(ステップS1015)。
B => XB
B => XB
同様にして、ポートZは出力であるので、以下のような接続情報をディレクトリASIC50のファイルBに出力する。
Z => XZ
Z => XZ
同様にして、ポートIは入力であり、検索で"IOINPUT"が発見できないので、エラーとしてディレクトリASIC50のログファイルに出力する。ただし、パッケージの端子と接続されるポートの場合は問題ではなく、逆にログに出力されたエラー情報からどのインスタンスのどのポートがパッケージのどの端子と接続したかの確認ができる。次に、以下のような接続情報をディレクトリASIC50のファイルBに出力する。
I=> IOINPUT
I=> IOINPUT
以上の処理をY,Zのテーブルデータについても行って終了すると(ステップS1019の肯定)、接続情報が作成できなかったポートをログファイルに出力し(ステップS1020)、VHDLであれば、以下のような情報をもつたASICの論理COREのエンティティファイルをディレクトリASIC50に出力する(ステップS1021)。
INPUT: in std_logic;
OUT : out std_logic;
INPUT: in std_logic;
OUT : out std_logic;
また、論理COREのエンティティファイルと接続情報を結合し、ASICの論理COREをディレクトリASIC50に第17図で指定されたProject名でファイル出力して処理を終了し、第19図に示した論理CORE生成インタフェースプログラム221に戻る(ステップS1022)。
論理CORE生成インタフェースプログラム221は、ディレクトリASIC50内のログファイルにエラーがないかを検索する。もしエラーが記録されていれば(ステップS804の肯定)、エラーを読み込み(ステップS805)、Project名と、ユーザ管理サーバ240にProject名で問い合わせて得たユーザのメールアドレスと、エラー情報と、プロセスIDとをメールサーバ260へ送り、メールサーバ260からユーザへメールを送信する(ステップS806)。ユーザは、このメールでエラー内容を確認し、エラーがなくなるまで論理CORE生成の処理を繰り返す。
一方、ログファイルにエラーが記録されていなければ(ステップS804の否定)、Project名と、ユーザ管理サーバ240にProject名で問い合わせて得たユーザのメールアドレスと、プロセスIDと、論理CORE生成終了メッセージとをメールサーバ260へ送り(ステップS807)、メールサーバ260からユーザへメールを送信する。
また、ディレクトリASIC50に"CORE+プロセスID+日時"の名称でディレクトリを作成し、ディレクトリASIC50にProject名で生成した論理COREとログファイルとをこのディレクトリに移動し、このディレクトリにIOの名称でディレクトリを作成し、論理COREの生成に使用したディレクトリASIC48にあるテーブルデータをこのIOディレクトリに移動し、論理合成サーバ250内の論理COREチェックプログラムにこのProject名と"CORE+プロセスID+日時"の名称で作成した論理COREのディレクトリ名を指定し、論理COREチェックプログラムを起動する(ステップS808)。
この論理COREチェックプログラムは、ASICの論理COREの文法チェック、論理COREを構成する各インスタンスの入出力ポートの未接続チェックを行ない、レポートを出力するように論理合成ツールのコマンドが記述されている。
ここで、論理COREチェックプログラムの処理手順について説明する。第23図は、論理COREチェックプログラムの処理手順を示すフローチャートである。この論理COREチェックプログラムは、受取ったProject名のディレクトリ下にあり、第14図のディレクトリASIC50に対象とするASICの論理COREのディレクトリがあるかを調べ(ステップS1201)、もしあれば、その論理COREのディレクトリがあるASICディレクトリ内にWORKディレクトリを作成し(ステップS1202)、論理合成ツールにチェックを実行させる(ステップS1203)。
実行が終了すると、WORKディレクトリ内にあるレポートファイル内からエラー情報を抽出し、ユーザ管理サーバ240にProject名で問い合わせて得たユーザのメールアドレスと論理COREのディレクトリ名から抽出したプロセスIDと共にメールサーバ260へ送り、メールサーバ260からユーザへメール送信する(ステップS1204)。ユーザはこの送られたメールの内容でエラー情報が意図したものか確認する。
この一連のフローで生成された論理COREは、ユーザの論理設計においてASICを構成するインスタンス間の結線ミスが無い限り必ずASICとして組み上がることを保証するものである。この効果は、論理検証にて現れる。ASICを構成する複数のインスタンスの機能検証において期待と違った動作をした場合、インスタンス間の接続は保証できていることからインスタンスを構成する各機能に絞ったデバッグが可能となる。
次に、ユーザが第18図の手順画面において状況表示を選択した場合の処理について説明する。ユーザが第18図の手順画面において状況表示を選択すると、状況表示インタフェースプログラム224が起動される。この状況表示インタフェースプログラム224は、第24図に示す状況表示選択画面の表示制御データをWebサーバ220へ送り、Webサーバ220は受取った状況表示選択画面の表示制御データをWebクライアント100へ送り、Webクライアント100は受取った状況表示選択画面の表示制御データに基づいて画面を表示する。
この画面でユーザが論理CORE作成を選択すると、今度は状況表示インタフェースプログラム224が第25図に示す論理CORE生成状況画面の論理COREの名称表示がない表示制御データを生成してWebサーバ220へ送り、Webサーバ220は受取った論理CORE生成状況画面の表示制御データをWebクライアント100へ送り、Webクライアント100は受取った論理CORE生成状況画面の表示制御データに基づいて画面を表示する。
この画面でユーザがProject名を入力し表示ボタンを選択すると、Project名をWebクライアント100がWebサーバ220に送り、Webサーバ220からProject名を受取った状況表示インタフェースプログラム224は、指定のProject名のディレクトリから第14図のディレクトリASIC50にある論理COREのディレクトリ名称を抽出し、論理CORE生成状況画面の表示制御データを更新してWebサーバ220へ送り、Webサーバ220は受取った論理CORE生成状況画面の表示制御データをWebクライアント100へ送り、Webクライアント100は受取った論理CORE生成状況画面の表示制御データに基づいて画面を表示する。この画面には先に生成されたASICの論理COREのディレクトリ名称が表示される。
ここで、ASICの論理CORE生成状況表示画面での処理手順について説明する。第26図は、ASICの論理CORE生成状況表示画面での処理手順を示すフローチャートである。同図に示すように、ユーザが、表示された論理COREのどれかを選びダウンロードを選択すると(ステップS1501)、対象の論理COREをWebクライアント100にダウンロードすることができる(ステップS1502)。このダウンロードした論理COREは、ASICのチップレベルのネットリストとして論理検証に使用することができ、先に述べたようにインスタンスを構成する機能に絞ったデバッグが可能となる。
一方、ユーザが論理CORE名称を指定してFPGA化ボタンを選択すると(ステップS1503)、Webクライアント100は、Project名と論理CORE名称とFPGA化が選択されたこととをWebサーバ220に送り、Webサーバ220は受取ったデータを状況表示インタフェースプログラム224へ送る。状況表示インタフェースプログラム224は、第14図のディレクトリASIC50内にある、対象とする論理CORE名称のディレクトリ下のIOディレクトリ内にあるテーブルデータのファイル名を抽出し、その結果、第27図に示すようなFPGA論理CORE生成インタフェース画面の表示制御データを作成しWebサーバ220へ送る。
Webサーバ220は受取ったFPGA論理CORE生成インタフェース画面の表示制御データをWebクライアント100へ送り、Webクライアント100は受取ったFPGA論理CORE生成インタフェース画面の表示制御データに基づいて画面を表示する(ステップS1504)。この画面では、指定されたProject名と、論理CORE名と、論理COREを構成するインスタンス名のリストが左側のリストボックスにリストされる。また、この画面では、対象の論理COREを変えることも可能であり、ユーザがProject名と論理CORE名を指定すると第25図で指定した同様の処理によって画面が更新される。
さらに、この画面は、対象のASICの論理COREを構成するインスタンスのテーブルデータからFPGAの論理COREを生成するインタフェースであって、ユーザは、左のリストボックスからインスタンスを指定し追加ボタンを選択することで右のリストボックスにインスタンスを追加する。この右のリストボックスにリストされたインスタンスが1つのFPGAとなる。ユーザがインスタンスを選択し、FPGA名と管理のための追い番号である1以上の一意の整数であるFPGA番号を設定して実行ボタンを選択すると、Webクライアント100が、対象のProject名と、ASICの論理CORE名と、FPGA名と、FPGAとするインスタンス名のリストと、FPGAの番号とをWebサーバ220へ送り、Webサーバ220は、受取ったデータを状況表示インタフェースプログラム224へ送る。
そして、状況表示インタフェースプログラム224は、受取ったインスタンス名のリストに従って第14図のディレクトリFPGA49に指定されたFPGAの番号でディレクトリを作成し、第14図のディレクトリASIC50にある、CORE名称のディレクトリ下のIOディレクトリから名称の一致するテーブルデータを前記番号のディレクトリへ複写し、テーブルデータ名のリストを引数としてFPGA論理CORE生成プログラム252を実行する。
ここで、FPGA論理CORE生成プログラム252の処理手順について説明する。第28図及び第29図は、FPGA論理CORE生成プログラム252の処理手順を示すフローチャートである。第28図は第21図に示した処理と同じであり、また、第29図は第22図に示した処理とステップS1717及びステップS1720を除いて同じであるので、この2つのステップについて説明する。
第22図のステップS1017では、対象のインスタンスの入力であるポートに定義してある接続相手のインスタンス名とその出力ポート名が、メモリに格納している情報にない場合、エラーとしてログファイルに出力しているが、第29図のステップS1717では、元々ASICの論理COREとしてインスタンスのポート間接続は保証できているので、このステップS1717ではエラーではなくパッケージの入力端子情報としてメモリに追加格納する。
また、第22図のステップS1020では、最終的に残った未接続のポート情報をログファイルに出力している。一方、ステップS1720では、第14図のディレクトリASIC50下の"CORE+プロセスID+日付"で作成している対象とするASICの論理COREのディレクトリにあるログファイルとステップS1720で出力したログファイルとを比較し、ステップS1020で出力したログファイルにない出力ポートをパッケージの出力端子情報としてメモリに追加格納する。後は、ステップS1020の処理と同様にして第14図のディレクトリFPGA51の下の指定された番号のディレクトリ内に指定されたFPGA名称で論理COREをファイル出力する。
そして、状況表示インタフェースプログラム224は、FPGAの論理COREファイルを読込み、パッケージの入出力となる端子数をカウントし、第30図に示す互換パッケージのテーブルの第2カラムにあるIO数に占める割合を全て計算し、割合が最大のパッケージとその互換パッケージデータを抽出し、第27図に示したFPGA論理CORE生成インタフェース画面のパッケージ名、IO使用率の画面表示制御データを更新し、Webサーバ220へ送る。Webサーバ220は受取ったFPGA論理CORE生成インタフェース画面の表示制御データをWebクライアント100へ送り、Webクライアント100は受取ったFPGA論理CORE生成インタフェース画面の表示制御データに基づいて入力画面を更新する。
ユーザは、この結果に満足できなければ再度FPGA論理CORE生成をやり直す。ユーザが決定を選択すると、Webクライアント100は決定が選択されたことと、FPGA番号とパッケージ名とIO使用率のデータとをWebサーバ220に送り、Webサーバ220からこれらのデータを受取った状況表示インタフェースプログラム224は、第14図のディレクトリFPGA55に指定された番号のディレクトリを作成し、例えばplistの名称で受取ったデータをファイル出力する。
次に、論理合成インタフェースプログラム222の処理手順について説明する。第31図は、論理合成インタフェースプログラム222の処理手順を示すフローチャートである。同図に示すように、この論理合成インタフェースプログラム222は、第32図に示すような論理合成インタフェース画面の表示制御データをWebサーバ220へ送り、Webサーバ220は受取った論理合成インタフェース画面の表示制御データをWebクライアント100へ送り、Webクライアント100は受取った論理合成インタフェース画面の表示制御データに基づいて画面を表示する(ステップS2001)。
ユーザがProject名、第25図で表示されている対象の論理CORE名、論理合成する対象の機能ブロック名、組込むFPGAの番号を指定し、かつ面積優先か速度優先かの指定と、Debug(FPGAの論理合成を実行しない)かFix(FPGAの論理合成を実行する)かを指定し(ステップS2002)、実行ボタンを選択すると(ステップS2003)、Webクライアント100はデータ選択画面を表示する。
ユーザがこの画面に従って論理合成するRTLソースを選択すると、これらのデータをWebクライアント100はWebサーバ220に送り、Webサーバ220からデータを受取った論理合成インタフェースプログラム222は、RTLソースを第14図のディレクトリASIC52に指定の機能ブロック名でディレクトリを作成し、RTLを格納する(ステップS2004)。そして、RTLソースを1ファイルずつ読込み、RTLソース内の変更履歴、版数などを記載するヘッダー部分にユーザが定義している動作周波数データを抽出し、抽出した値に対して20%増した周波数値とユーザに指定された速度優先または面積優先の論理合成条件を論理合成の制約として論理合成対象の機能ブロック名を指定してASICの論理合成ツールのASIC論理合成プログラム253を実行する(ステップS2005)。
ASICの論理合成が終了すると、論理合成インタフェースプログラム222は、第14図のディレクトリASIC54下にある指定の機能ブロックのディレクトリにASIC論理合成プログラム253が出力した結果のレポートファイルと、ユーザ管理サーバ240にProject名で問い合わせて得たユーザのメールアドレスとブロック名とをメールサーバ260に送り、メールサーバ260からユーザにメールを送信する(ステップS2006)。
そして、論理合成インタフェースプログラム222は、この処理過程を第14図のディレクトリASIC52下に指定の機能ブロック名で作成したディレクトリに存在する全RTLソースに対して実行する。全RTLソースの論理合成が終了すると(ステップS2007の肯定)、論理合成インタフェースプログラム222は、速度優先指定の場合は(ステップS2008の肯定)、全RTLの論理合成結果のレポートを検索し、RTLソースに定義された動作周波数を満足しているか否かを判断する(ステップS2009〜ステップS2010)。面積重視の場合は何もしない。
次に、Fix指定を調べ(ステップS2011)、Fix指定されていれば、論理合成インタフェースプログラム222は、指定されたFPGA番号で第14図のディレクトリFPGA55下にディレクトリを作成し、この中に第14図のディレクトリASIC52下にある指定された機能ブロックディレクトリ内のRTLを複写して格納し、指定されたProject名とFPGA番号とを引数としてFPGA論理合成インタフェースプログラムを実行する(ステップS2012)。
そして、論理合成インタフェースプログラム222は、論理合成ツールを起動し、第14図のディレクトリASIC50にある指定の論理COREのディレクトリからASICの論理COREを論理合成ツールにコマンドを投入して読込ませ、ユーザからアップロードされ第14図のディレクトリASIC54に存在するASICのパッケージ端子割付けとASICと接続される外部デバイスと電気的にインタフェースするバッファとを定義したファイルを読込み、定義に従って論理合成ツールにコマンドを投入することでASICのバッファとスキャンなどテスト回路をASICの論理COREの端子とパッケージの端子と接続されるチップのパッド間に挿入し接続させ、そして、論理合成済みである第14図のディレクトリASIC52下の全ディレクトリにある機能ブロックのデータを論理合成ツールにコマンドを投入して読込んで論理COREに填め込ませ、レイアウト設計用にASICのネットリストを生成させ、第14図のディレクトリASIC54にProject名でファイル出力させる(ステップS2013)。
次に、FPGA論理合成インタフェースプログラムの処理手順について説明する。第33図は、FPGA論理合成インタフェースプログラムの処理手順を示すフローチャートである。同図に示すように、このFPGA論理合成インタフェースプログラムは、ASICの論理合成インタフェースプログラムから指定されたFPGA番号で第14図のディレクトリFPGA55にディレクトリを作成し、第14図のディレクトリFPGA53下にある指定された番号のディレクトリ内のRTLソースを1ファイルずつ読込み、RTLソース内の変更履歴、版数などを記載するヘッダー部分にユーザが定義している動作周波数データを抽出し、抽出した値に対して20%増した周波数値を論理合成の制約として論理合成対象の機能ブロック名を指定してFPGAの論理合成ツールのFPGA論理合成プログラム254を実行する(ステップS2201)。
FPGAの論理合成が終了すると、FPGA論理合成プログラム254は、第14図のディレクトリFPGA55にある対象とする番号のディレクトリに論理合成結果を機能ブロックの名称で出力する。こうすることでユーザは、後述する第34図の論理合成状況表示でゲート使用率を確認しつつ設計作業を進めることができる。そして、FPGA論理合成インタフェースプログラムは、論理合成の終了メッセージと、FPGAの番号と、ブロック名と、Project名でユーザ管理サーバ240に問い合わせ得たユーザのメールアドレスとをメールサーバ260に送り、メールサーバ260からユーザにメールを送信する(ステップS2202)。
次に、FPGA論理合成インタフェースプログラムは、指定された番号のFPGAを構成する機能ブロックの論理合成がすべて終了しているか確認する(ステップS2203)。この確認は、第14図のディレクトリFPGA51の対象とする番号のディレクトリにある機能ブロックの名称を抽出し、前記論理合成が終了した機能ブロック名と比較することで行なう。差分がなければ、次にFPGA論理合成インタフェースプログラムは、今度は、第14図のディレクトリFPGA51にある対象の番号のディレクトリにあるFPGA名である論理COREのファイル名を抽出し、この名称で第14図のディレクトリFPGA55にFPGAのレイアウトである、フィッティングに使用するFPGAの論理COREのポート名と同一であるパッケージの端子名と端子番号の対応、動作周波数、などを定義したフィッティング制御ファイルが、ユーザからアップロードされ存在しているかチェックする(ステップS2206)。
存在していれば、FPGA論理合成インタフェースプログラムは、FPGAを構成する全機能ブロックと第14図のディレクトリFPGA51下の、対象の番号のディレクトリにあるFPGAの論理COREとを指定し、FPGA論理合成プログラム254を実行する。そしてFPGAの論理合成が終了すると、FPGA論理合成インタフェースプログラムは、フィッティングプログラム255を起動し、論理合成結果のネットリストをフィッティングプログラム255に投入してレイアウトを行ない、FPGAのレイアウト結果であり回路情報を記録したROMデータを生成し、第14図のディレクトリROM46下の対象とする番号のディレクトリにFPGA名で出力させる(ステップS2207)。そして、ROMデータ生成の終了メッセージと、FPGAの番号と、Project名と、ユーザ管理サーバ240に問い合わせて得たユーザのメールアドレスとをメールサーバ260へ送り、メールを送信する(ステップS2208)。
差分があれば、後述するフィッティングデータの投入と実行画面で実行ボタンが選択されていないか判断し(ステップS2204)、選択されていなければ終了するが、選択されていれば論理合成が未の機能ブロック全てに対し、第14図のディレクトリFPGA51下にある対象の番号のディレクトリにある、FPGAの論理CORE内の各機能ブロック内部で、入出力ポート全てにフリップ・フロップを接続し、入力側の全フリップ・フロップの出力ポートを適当なゲート、例えば2入力NANDの入力ポートに接続し、全NANDゲートの出力を新たな2入力のNANDゲートの入力ポートに接続し、前述のように2入力NANDの多段接続を繰り返し、最終段の2入力NANDの出力を出力側の全フリップ・フロップの入力ポートに接続するHDL記述を挿入して論理合成可能な状態にする(ステップS2205)。
後は、差分がない場合と同一の処理となる。開発着手時点の検証戦略にも依るが、回路アーキテクチャ検討にて機能的に上りと下りに大きく分割できる機能ブロック構成となっている場合、上述のフリップ・フロップなどを用いたダミー回路を挿入することによって、上りの機能の設計が完了していれば、下りの機能の設計が未完であっても検証が可能であり、検証の効率化に貢献するところが大きい。
次に、第34図の論理合成状況表示画面について説明する。この画面は、ユーザがWebクライアント100で第24図の状況表示画面にある論理合成を選択すると、Webクライアント100は論理合成を選択されたことをWebサーバ220に送り、Webサーバ220からデータを受取った状況表示インタフェースプログラム224は、ログインしたユーザの名称でユーザ管理サーバ240に問い合わせて得たProject名全てに対し、第14図のディレクトリFPGA55下の、全番号のディレクトリにある論理合成結果からゲート規模を抽出する。
そして、先に説明したFPGA論理CORE生成で作成された同一ディレクトリにあるplistからパッケージ情報を抽出し、このパッケージ情報を基に第30図のテーブル内でゲート規模の割合が75%以下になるパッケージを選び出し、第34図の論理合成状況表示画面の表示制御データを生成し、Webサーバ220に送る。Webサーバ220は、論理合成状況表示画面の表示制御データをWebクライアント100に送り、Webクライアント100は、受取った論理合成状況表示画面の表示制御データに基づいて画面を表示する。
ここで、ゲート規模の割合75%について簡単に説明しておく。通常FPGAの論理合成ツールは、論理合成の結果のゲート規模を基に論理合成ツールがもつデータベースから適当なパッケージとゲート使用率を示唆してくれる。しかしながら、FPGAのフィッティングにおいては、セルの配置過程において配線の効率を上げるため、FPGAで論理を実現する単位ブロックを配線に使用する。従って、論理合成結果よりゲート規模が大きくなることを考慮し、フィッティング後ゲート使用率が100%を超えないように75%に設定しているものであり、FPGAで異なることもある。このためにも先に説明したFPGAの論理合成を機能ブロック毎に実行させることは有効である。
次に、フィッティングデータの投入と実行画面について説明する。第35図は、フィッティングデータの投入と実行画面の一例を示す図である。ユーザがWebクライアント100で第18図に示した手順画面にあるフィッティングを選択すると、Webクライアント100はフィッティングが選択されたことをWebサーバ220に送り、Webサーバ220からデータを受取ったフィッティングインタフェースプログラム223は、ログインしたユーザの名称でユーザ管理サーバ240に問い合わせて得たProject名全てに対し、第14図のディレクトリFPGA55下の、全ディレクトリの番号名と、それぞれのディレクトリにある論理合成結果であるネットリストのファイル名即ちFPGA名を抽出し、第35図に示すフィッティングデータの投入と実行画面の表示制御データを生成し、Webサーバ220に送る。
Webサーバ220はフィッティングデータの投入と実行画面の表示制御データをWebクライアント100に送り、Webクライアント100は、受取ったフィッティングデータの投入と実行画面の表示制御データに基づいて画面を表示する。この画面の条件データ投入を選択すると、Webクライアント100によりデータ選択画面が表示される。
この画面に従い、ユーザが先に述べたフィッティング制御ファイルを選択すると、Webクライアント100は、選択したFPGAの番号とフィッティング制御ファイルをWebサーバ220に送り、Webサーバ220からデータを受取ったフィッティングインタフェースプログラム223は、第14図のディレクトリFPGA55下の、対象の番号のディレクトリにフィッティング制御ファイルを格納する。
また、ユーザが実行ボタンを選択すると、Webクライアント100は、選択したFPGAの番号と、Project名と、実行が選択されたことをWebサーバ220に送り、Webサーバ220からデータを受取ったフィッティングインタフェースプログラム223は、Project名とFPGA番号とを引数としてFPGA論理合成インタフェースプログラムを実行する。FPGA論理合成インタフェースプログラムの処理は先に説明した通りである。
次に、ROMデータ生成状況画面について説明する。第36図は、ROMデータ生成状況画面の一例を示す図である。ユーザがWebクライアント100で第24図に示した状況表示選択画面にあるROMデータを選択すると、Webクライアント100はROMデータを選択されたことをWebサーバ220に送る。
Webサーバ220からデータを受取った状況表示インタフェースプログラム224は、ログインしたユーザの名称でユーザ管理サーバ240に問い合わせて得たProject名全てに対し、第14図のディレクトリROM46下の、全ディレクトリの番号名と、それぞれのディレクトリにあるフィッティング結果であるROMデータ名即ちFPGA名を抽出し、第36図に示したROMデータ生成状況画面の表示制御データを生成し、Webサーバ220に送る。
Webサーバ220は、ROMデータ生成状況画面の表示制御データをWebクライアント100に送り、Webクライアント100は、受取ったROMデータ生成状況画面の表示制御データに基づいて画面を表示する。ユーザは、この画面で対象とするFPGAの日付部分を選択すると、ROMデータをダウンロードすることができる。
次に、監視サーバ290の処理について説明する。先ず、監視サーバ290が監視するものは、RTLの変更有無と、論理合成、フィッティング、レイアウト設計ツールの処理に要した時間と、設計者が定義する機能ブロックの変更規模を基にインプリメント設計に使用するツールの処理時間以外にかかる、変更反映に必要な手作業の時間である。
インプリメント設計者が管理する第14図のディレクトリLAYOUT47には、Project毎にProject名のディレクトリがあり、その中で作業を進める。各Project名のディレクトリにはレイアウト設計データが格納されるLAYディレクトリとRTLソースを格納するRTLディレクトリが存在し、RTLディレクトリ以下は、第14図のディレクトリASIC52以下と同一のディレクトリ構成となっている。
監視サーバ290は、LAYとRTLディレクトリ内を監視する。時間を集計した結果を反映するスケジュールは、Project名のディレクトリにScheduleの名称で格納されており、初期状態では、契約に基づいて、1stRTLの予定日とSign Offの予定日が設定されている。1stRTLとは、レイアウト設計が着手できる、その時点で大きな変更の見込みがなく、機能検証が80%程度終了しているRTLであると定義する。Sign Offとは、ASICのレイアウト設計完了後、ASIC製造データをデバイスベンダに渡す日である。
第37図は、予定と実績画面の一例を示す図である。同図は、Scheduleファイルを画面表示制御データに変換し、Webクライアント100によって表示される。すなわち、ユーザが第24図の状況表示画面で実績と予定を選択すると、Webクライアント100は、実績と予定が選択されたことをWebサーバ220経由で状況表示インタフェースプログラム224に送る。実績と予定が選択されたことを受け取った状況表示インタフェースプログラム224は、Scheduleファイルを画面表示制御データに変換し、Webサーバ220経由でWebクライアント100に送る。画面表示制御データを受け取ったWebクライアント100は、画面表示制御データに基づいて画面表示する。
また、第38図は、レイアウト設計者が設定する作業時間の設定ファイルの一例を示す図である。このファイルは、Scheduleファイルと同一ディレクトリにManualの名称で格納される。
監視サーバ290は、監視時間になると、ユーザ管理サーバ240からユーザ名とユーザが所属するProject名とメールアドレスを獲得する。そして、Scheduleファイルを読みこみ1stRTLの予定日を抽出する。この予定日が監視の実行年月日より未来であれば何もせず終了する。予定日が監視の実行年月日より以前であれば、以降の処理を実行する。
まず、インプリメント設計者が管理するLAYOUTディレクトリ下の、Project名のディレクトリにあるRTLディレクトリにRTLソースがなければ処理を中断する。RTLソースがあれば、第14図のディレクトリASIC52下の、各ブロックのディレクトリにあるRTLソース間で比較する。
差分があれば、差分のあるブロック名とProject名とインプリメント設計者のメールアドレスをメールサーバ260に送り、メールサーバ260からインプリメント設計者に送信する。インプリメント設計者は、このメールによって変更の反映にかかる時間の見積り作業を行なう。見積りの結果、インプリメント設計者は、必要があればScheduleファイルの時間データを更新または追加、削除する。
次に、監視サーバ290は、第14図のディレクトリASIC50下の、作成時間が一番新しいASICの論理COREからASICを構成するブロック名を抽出し、メモリに格納する。そして、第14図のディレクトリASIC54下の、各ブロックのディレクトリにある論理合成結果のレポートファイルから論理合成処理時間を抽出する。先にメモリに格納したブロック名に対するレポートファイルが存在しない、つまり未だ論理合成されていない場合は、存在するレポートファイルから抽出した時間の平均時間を適用し、合計時間を算出しメモリに格納する。
そして今度は、インプリメント設計者が管理する第14図のディレクトリLAYOUT47下の、Project名のディレクトリ内にあるレイアウト設計結果のうち、レイアウト設計工程の最終工程であるタイミング検証結果のファイルが存在すれば、レイアウト設計の全行程で使用するツールが出力した処理結果ファイルから処理時間を抽出し、先にメモリに格納した時間と合せて合計時間を算出する。タイミング検証結果のファイルが存在しない場合は、契約時点にレイアウト設計者が仮に見積り予め監視サーバに設定した時間を適用する。
次に、監視サーバ290は、この合計時間と先に説明したManualに設定されている時間の合計をとり、1日を12時間として日数を算出し、Scheduleファイルを必要であれば更新する。つまり、最初の状態では、Scheduleファイルには1stRTLの予定日しかなく、この予定日に対して合計時間を加算し、第37図に示したように反映開始日としてインプリメント設計への変更取り込みの予定日を追加する。
次の監視では、反映開始日が監視の実行年月日より未来であれば、反映開始日の一つ前である1stRTL予定日から反映開始日として設定した予定日までの日数を比較対照とし、算出したインプリメント設計にかかる日数より長ければ反映開始日は更新しない。反映開始日が監視の実行年月日以前の時、監視サーバ290は、ユーザとインプリメント設計者のメールアドレスと反映開始の機会であるメッセージとをメールサーバ260へ送り、メールサーバ260からユーザとインプリメント設計者にメールを送信する。この時監視サーバ290は、一番新しい反映開始日が監視実行の年月日以前である時、反映開始日の実績日に年月日がなければScheduleファイルの更新はしない。
反映開始の機会であるメッセージのメールに対してユーザ及びインプリメント設計者双方から承認または拒絶のメールが監視サーバ290に届いた時、双方共承認であれば直ちにScheduleファイルの反映開始日の実績日にメールを受けた年月日を設定し、次回の監視では、一番新しい反映予定日が監視実施の年月日以前であり、反映予定日の実績日に年月日があれば、実績日を基にインプリメント設計の日数を算出し、新たに反映開始日を追加する。この処理を続けて行くと反映開始日がSign Off日に近づく。
反映開始日の予定日を算出し、Sign Off日を超えた場合、監視サーバ290は、反映開始の予定日の設定が不可能な年月日にきているメッセージとユーザとインプリメント設計者のメールアドレスをメールサーバ260へ送り、メールサーバ260から双方へメールを送信する。
反映開始の機会であるメッセージのメールに対してユーザが拒絶している場合、ユーザに対しWebクライアント100から予定日を設定する旨のメッセージとユーザとインプリメント設計者のメールアドレスをメールサーバ260へ送り、メールサーバ260から双方へメールを送信する。
次に、予定と実績画面ついて説明する。第37図は、予定と実績画面の一例を示す図である。同図の論理Fixボタンと変更ボタンは、監視サーバ290の監視の実行年月日以前であり、一番新しい反映開始日のよこに配置される。ユーザがこのボタンの下にある年月日の設定欄に年月日を指定し変更ボタンを選択すると、Webクライアント100は、設定された年月日と変更が選択されたことをWebサーバ220に送り、Webサーバ220からデータを受取った状況表示インタフェースプログラム224は、Scheduleファイル内の一番新しい反映開始日の予定日を指定された年月日に変更し、変更された旨のメッセージとユーザとインプリメント設計者のメールアドレスをメールサーバ260へ送り、メールサーバ260から双方へメールを送信する。
第37図内の論理Fixボタンが年月日の指定とともに選択された場合は、状況表示インタフェースプログラム224は、変更ボタンを選択された場合と同一の処理を実行後、監視サーバ290の監視を停止する処理を行なう。こうする事でユーザとインプリメント設計者双方の短期間の目標が明確となることと、インプリメント設計の試行回数が多いほど変更開始日の予定日の確度があがり、これに対してユーザ及びインプリメント設計者双方共に進め方を考える契機を与える事が可能となり、結果として効率の向上に大きく貢献する。
上述してきたように、本実施の形態2では、Webクライアント100からのユーザの要求に基づいてASIC論理合成プログラム253がASICの論理合成を行ない、FPGA論理合成プログラム254がFPGAの論理合成を行ない、論理合成インタフェースプログラム222がWebクライアント100にASIC及びFPGAの論理合成の結果を表示し、メールサーバ260がASIC及びFPGAの論理合成の開始と結果をユーザに電子メールで通知することとしたので、ユーザは、論理合成の専任者を設置する必要がなく、いつでも論理合成が実行でき、専任者が実行したが如く論理合成品質を均一に保つことができるとともに、電子メールで論理合成の開始と結果の通知を受けることができ、論理合成の進捗を定期的にコンピュータで確認する必要がなくなる。
また、本実施の形態2では、Webクライアント100からのユーザの要求に基づいて、ASIC論理CORE生成プログラム251がASICを構成する機能ブロックからユーザが指定する複数の機能ブロックのポート間接続情報のみから成るネットリストを生成し、FPGA論理CORE生成プログラム252が生成したネットリストに論理合成済み対象機能ブロックのデータを填め込んでプログラマブル・ロジックデバイスの回路を記録したROMデータを生成し、論理CORE生成インタフェースプログラム221が生成したROMデータの生成結果をコンピュータに表示するとともにメールサーバ260がユーザに電子メールで通知する構成としたので、ユーザは、プログラマブル・ロジックデバイス専用の開発環境が必要なく、プログラマブル・ロジックデバイスの回路を記録したROMデータを作成する負荷と、時間と、かかるコストとを削減することができる。
また、本実施の形態2では、ユーザが指定したASICを構成する機能ブロックの設計が未完了で回路データが存在しない場合に、FPGA論理CORE生成プログラム252が当該機能ブロックの入力端子及び出力端子に仮のフリップ・フロップなどを用いた回路を挿入したネットリストを生成することとしたので、プログラマブル・ロジックデバイスのプロトタイピングによる検証において、検証対象ではない機能ブロックの設計が完了していなくとも、プロトタイピングによる検証を進めることができ、検証の効率化を図ることができる。
また、本実施の形態2では、監視サーバ290が、ユーザが持つ最新の回路データとインプリメント設計者がインプリメント設計に取り込んでいる回路データ間の変更の規模を監視し、監視結果及びレイアウト設計にかかる時間に基づいて計画された日時に到達すると、メールサーバ260が変更をASICのインプリメント設計へ反映するタイミングにあることをユーザ及びASICのインプリメント設計者に電子メールで通知し、この通知に応答してユーザが反映の日付を変更することで停止を要求することとしたので、発生した変更を効率よくASICのレイアウト設計に反映することができるとともに、変更を反映するタイミングを設定することで、ユーザはいつまで変更することが可能かを判断することができ、早い段階でスケジュールの見直しができる。
以上説明したように、本発明によれば以下の効果が得られる。本発明のコア(論理コア)を生成する手法をコンピュータに実行させるプログラムを記憶したプログラム記憶媒体によれば、集積回路開発において、RTL設計の入力となるブロックのポート仕様の品質を事前に確保できる効果があり、更に機能ブロックが多く存在し、設計リソースも多い大規模集積回路の開発においても、事前にブロック間の接続が確認できていることにより、必ずチップが組み上がることを保証することができる。
また、本発明によれば、ASICのコア(論理コア)からプログラマブル・ロジックデバイスのコア(論理コア)としてブロック間接続を保持したまま切り出すため、本コア(論理コア)を用いたプログラマブル・ロジックデバイスの検証を実施すれば、ASICにおいては、少なくとも同一の構成での検証の重複を回避することができる。よって、ASICとプログラマブル・ロジックデバイスのコンカレント開発を効率よく進めることができる。
また、I/Oバッファを挿入する際、チップの端子情報から仮のコア(論理コア)を生成し、ブロックから生成したコア(論理コア)と入れ替える手段によって、ブロックに定義されているチップのポート情報とチップの端子情報をクロスチェックでき、ブロックのポート仕様とチップ端子仕様の両者の品質を確保することができる。
また、本発明によれば、任意の規模、個数のブロックのポートとポートの接続情報からなるネットリストを生成することができる。
また、本発明によれば、任意の規模、個数のブロックのポートとポートの接続情報からなるネットリストから、チップネットリストを生成することができる。
また、本発明によれば、プログラマブル・ロジックデバイスのコア(論理コア)を生成する手法を論理合成ツールに実行させるプログラムを記憶した記憶媒体によれば、ポートの機能を判断することが難しいネット名がポートの名称となる場合の論理検証等デバッグの効率の低下を防ぐことができる。
上述のようにして、設計ドキュメントのデータからコア(論理コア)を生成し、該コア(論理コア)から階層構造及び接続情報を保持した状態でプログラマブル・ロジックデバイス用に新たにコア(論理コア)を生成することで、回路アーキテクチャを共有することができ、回路データを填め込み、機能検証したインスタンス内のデバイス・テクノロジに依存しない回路データ及びインスタンス間のネットは、ASIC化した場合に再検証を回避することが可能となり、ASICとプログラマブル・ロジックデバイス間の違いによる再設計も回避することが可能となる。
このように、本発明によれば、アーキテクチャの共有化を実現し、再設計と再検証を極力回避することができる集積回路の開発方法及び集積回路の開発方法を記憶したプログラマブル記憶媒体を提供することができる。
以上のように、本発明に係るASICとプログラマブル・ロジックデバイスのコンカレント開発システム、開発プログラム及び開発方法は、集積回路の開発、特にASICとプログラマブル・ロジックデバイスの開発に適している。
Claims (11)
- ASICを構成する機能ブロックをポート間接続情報に基づいてグループ化し、該グループ化した機能ブロックのポートとポート間接続情報からなるネットリストをプログラマブル・ロジックデバイスのコア(論理コア)として生成するネットリスト生成工程と、
前記ASICを構成する機能ブロックの回路データからASIC用論理合成データ及びプログラマブル・ロジックデバイス用論理合成データを作成する論理合成工程と、
前記グループ化した機能ブロックについてのプログラマブル・ロジックデバイス用論理合成データを前記ネットリスト生成工程により生成されたネットリストに填め込んでプログラマブル・ロジックデバイスの回路を記録した実機評価用ROMデータを生成するROMデータ生成工程と、
前記論理合成工程により作成されたASIC用論理合成データを用いてASICのレイアウト作成およびタイミング検証を前記ROMデータ生成工程による実機評価用ROMデータの生成とコンカレントに行なうレイアウト作成工程と、
前記ROMデータ生成工程により生成されたROMデータを用いた実機評価結果に基づく回路データの変更を前記ASICのレイアウト作成およびタイミング検証に反映する差分反映工程と、
を含んだことを特徴とするASICとプログラマブル・ロジックデバイスのコンカレント開発方法。 - 前記レイアウト作成工程は、前記ROMデータ生成工程より前か同時に始まり、前記差分反映工程は、前記レイアウト作成工程開始後におこなわれた前記回路データの変更をASICのレイアウト作成およびタイミング検証に反映することを特徴とする請求の範囲第1項に記載のASICとプログラマブル・ロジックデバイスのコンカレント開発方法。
- 前記ROMデータ生成工程は、前記グループ化した機能ブロックのうち前記論理合成工程によりプログラマブル・ロジックデバイス用論理合成データが作成されていない機能ブロックに対して、入力端子及び出力端子にダミー回路を挿入したプログラマブル・ロジックデバイス用論理合成データを前記ネットリスト生成工程により生成されたネットリストに填め込んでプログラマブル・ロジックデバイスの回路を記録した実機評価用ROMデータを生成することを特徴とする請求の範囲第1項または第2項に記載のASICとプログラマブル・ロジックデバイスのコンカレント開発方法。
- ASICを構成する機能ブロックをポート間接続情報に基づいてグループ化し、該グループ化した機能ブロックのポートとポート間接続情報からなるネットリストをプログラマブル・ロジックデバイスのコア(論理コア)として生成するネットリスト生成手段と、
前記ASICを構成する機能ブロックの回路データからASIC用論理合成データ及びプログラマブル・ロジックデバイス用論理合成データを作成する論理合成手段と、
前記グループ化した機能ブロックについてのプログラマブル・ロジックデバイス用論理合成データを前記ネットリスト生成手段により生成されたネットリストに填め込んでプログラマブル・ロジックデバイスの回路を記録した実機評価用ROMデータを生成するROMデータ生成手段と、
前記論理合成手段により作成されたASIC用論理合成データを用いてASICのレイアウト作成およびタイミング検証を前記ROMデータ生成手段による実機評価用ROMデータの生成とコンカレントに行なうレイアウト作成手段と、
を備えたことを特徴とするASICとプログラマブル・ロジックデバイスのコンカレント開発システム。 - ASICを構成する機能ブロックをポート間接続情報に基づいてグループ化し、該グループ化した機能ブロックのポートとポート間接続情報からなるネットリストをプログラマブル・ロジックデバイスのコア(論理コア)として生成するネットリスト生成手順と、
前記ASICを構成する機能ブロックの回路データからASIC用論理合成データ及びプログラマブル・ロジックデバイス用論理合成データを作成する論理合成手順と、
前記グループ化した機能ブロックについてのプログラマブル・ロジックデバイス用論理合成データを前記ネットリスト生成手順により生成されたネットリストに填め込んでプログラマブル・ロジックデバイスの回路を記録した実機評価用ROMデータを生成するROMデータ生成手順と、
前記論理合成手順により作成されたASIC用論理合成データを用いてASICのレイアウト作成およびタイミング検証を前記ROMデータ生成手順による実機評価用ROMデータの生成とコンカレントに行なうレイアウト作成手順と、
前記ROMデータ生成手順により生成されたROMデータを用いた実機評価結果に基づく回路データの変更を前記ASICのレイアウト作成およびタイミング検証に反映する差分反映手順と、
をコンピュータに実行させることを特徴とするASICとプログラマブル・ロジックデバイスのコンカレント開発プログラム。 - ネットワークに接続されたコンピュータからユーザが利用するASICとプログラマブル・ロジックデバイスのコンカレント開発システムにおいて、
前記ユーザの要求に応じてASICの論理合成を実行するASIC論理合成手段と、
前記ASIC論理合成手段により作成されたASICの論理合成結果が前記ユーザの要求する速度性能を満足したか否かを判断するASIC論理合成結果判断手段と、
前記ASIC論理合成結果判断手段による判断結果に基づいてプログラマブル・ロジックデバイスの論理合成を実行するプログラマブル・ロジックデバイス論理合成手段と、
前記ASIC論理合成手段によるASIC論理合成の実行結果及び前記プログラマブル・ロジックデバイス論理合成手段によるプログラマブル・ロジックデバイス論理合成の実行結果を前記コンピュータに表示する論理合成結果表示手段と、
前記ASIC論理合成手段によるASIC論理合成の実行開始と実行結果及び前記プログラマブル・ロジックデバイス論理合成手段によるプログラマブル・ロジックデバイス論理合成の実行開始と実行結果を前記ユーザに電子メールで通知する論理合成通知手段と、
を備えたことを特徴とするASICとプログラマブル・ロジックデバイスのコンカレント開発システム。 - 前記ユーザの要求に応じて前記ASICを構成する機能ブロックから前記ユーザが指定する複数の機能ブロックのポート間接続情報から成るネットリストを生成するネットリスト生成手段と、前記ネットリスト生成手段により生成されたネットリストに論理合成済み対象機能ブロックのデータを填め込んでプログラマブル・ロジックデバイスの回路を記録したROMデータを生成するROMデータ生成手段と、前記ROMデータ生成手段により生成されたROMデータの生成結果を前記コンピュータに表示するROMデータ生成結果表示手段と、前記ROMデータ生成手段により生成されたROMデータの生成結果を前記ユーザに電子メールで通知するROMデータ生成結果通知手段とをさらに備えたことを特徴とする請求の範囲第6項に記載のASICとプログラマブル・ロジックデバイスのコンカレント開発システム。
- 前記ユーザが指定した前記ASICを構成する機能ブロックの設計が未完了で回路データが存在しない場合に、当該機能ブロックの入力端子及び出力端子にダミー回路を挿入したネットリストを生成する仮ネットリスト生成手段をさらに備えたことを特徴とする請求の範囲第7項に記載のASICとプログラマブル・ロジックデバイスのコンカレント開発システム。
- 前記ユーザが持つ最新の回路データとインプリメント設計者がインプリメント設計に取り込んでいる回路データ間の変更の規模を監視する監視手段と、前記監視手段による監視結果及びレイアウト設計にかかる時間に基づいて計画された日時に到達すると前記変更を前記ASICのインプリメント設計への反映のタイミングにあることを前記ユーザ及び前記ASICのインプリメント設計者に電子メールで通知する変更タイミング通知手段と、前記変更タイミング通知手段に応答して前記ユーザが前記反映の日付を変更することで停止を要求する反映停止要求手段とをさらに備えたことを特徴とする請求の範囲第6項、第7項または第8項に記載のASICとプログラマブル・ロジックデバイスのコンカレント開発システム。
- ネットワークに接続されたコンピュータからユーザが利用するASICとプログラマブル・ロジックデバイスのコンカレント開発方法において、
前記ユーザの要求に応じてASICの論理合成を実行するASIC論理合成工程と、
前記ASIC論理合成工程により作成されたASICの論理合成結果が前記ユーザの要求する速度性能を満足したか否かを判断するASIC論理合成結果判断工程と、
前記ASIC論理合成結果判断工程による判断結果に基づいてプログラマブル・ロジックデバイスの論理合成を実行するプログラマブル・ロジックデバイス論理合成工程と、
前記ASIC論理合成工程によるASIC論理合成の実行結果及び前記プログラマブル・ロジックデバイス論理合成工程によるプログラマブル・ロジックデバイス論理合成の実行結果を前記コンピュータに表示する論理合成結果表示工程と、
前記ASIC論理合成工程によるASIC論理合成の実行開始と実行結果及び前記プログラマブル・ロジックデバイス論理合成工程によるプログラマブル・ロジックデバイス論理合成の実行開始と実行結果を前記ユーザに電子メールで通知する論理合成通知工程と、
を含んだことを特徴とするASICとプログラマブル・ロジックデバイスのコンカレント開発方法。 - 一方では、複数の機能ブロックの全部又は一部の機能ブロックを含むFPGAの端子情報が記述された第1デザインと、該第1デザインの下位層として記述された該FPGAと同様の端子情報が記述された第2デザインとから、該第1デザイン、第2デザインにおける同一端子間が接続され、かつ、該端子間にFPGA対応のバッファが挿入されたFPGA用デザイン情報を生成し、
他方では、該複数の機能ブロックを含むASICの端子情報が記述された第3デザインと、該第3デザインの下位層として記述された該ASICと同様の端子情報が記述された第4デザインとから、該第3デザイン、第4デザイン間における同一端子間が接続され、かつ、該端子間にASIC対応のバッファが挿入されたASIC用デザイン情報を生成し、
前記第2デザイン、第4デザインのそれぞれを、各デザインが含む機能ブロックの接続情報に基づいて生成された回路情報で置き換える、
ことでFPGA及びASICのネットリストを生成する方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2006089040A JP2006268862A (ja) | 2002-04-17 | 2006-03-28 | Asicとプログラマブル・ロジックデバイスのコンカレント開発システム、開発プログラム及び開発方法 |
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2002115273 | 2002-04-17 | ||
JP2002147930 | 2002-05-22 | ||
JP2006089040A JP2006268862A (ja) | 2002-04-17 | 2006-03-28 | Asicとプログラマブル・ロジックデバイスのコンカレント開発システム、開発プログラム及び開発方法 |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2003584963A Division JP3860812B2 (ja) | 2002-04-17 | 2003-04-15 | Asicとプログラマブル・ロジックデバイスのコンカレント開発支援プログラム、開発支援方法及び開発支援装置 |
Related Child Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2006352784A Division JP4127720B2 (ja) | 2002-04-17 | 2006-12-27 | Fpga及びasicのネットリストを生成する方法 |
JP2006352783A Division JP4127719B2 (ja) | 2002-04-17 | 2006-12-27 | Asicとプログラマブル・ロジックデバイスのコンカレント開発システム及び開発方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2006268862A true JP2006268862A (ja) | 2006-10-05 |
Family
ID=37204673
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2006089040A Pending JP2006268862A (ja) | 2002-04-17 | 2006-03-28 | Asicとプログラマブル・ロジックデバイスのコンカレント開発システム、開発プログラム及び開発方法 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2006268862A (ja) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2008102043A (ja) * | 2006-10-19 | 2008-05-01 | Fujitsu Ltd | データ生成方法、結線チェックシステム、およびデータ生成プログラム |
CN110837488A (zh) * | 2019-07-15 | 2020-02-25 | 华为技术有限公司 | 报文传输方法和装置 |
CN112181745A (zh) * | 2020-09-28 | 2021-01-05 | 上海国微思尔芯技术股份有限公司 | 一种fpga原型验证的云服务平台系统及方法 |
-
2006
- 2006-03-28 JP JP2006089040A patent/JP2006268862A/ja active Pending
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2008102043A (ja) * | 2006-10-19 | 2008-05-01 | Fujitsu Ltd | データ生成方法、結線チェックシステム、およびデータ生成プログラム |
US8078423B2 (en) | 2006-10-19 | 2011-12-13 | Fujitsu Limited | Data generating method, connection checking system, and computer product |
CN110837488A (zh) * | 2019-07-15 | 2020-02-25 | 华为技术有限公司 | 报文传输方法和装置 |
US11226928B2 (en) | 2019-07-15 | 2022-01-18 | Huawei Technologies Co., Ltd. | Packet transmission method and apparatus |
US11726951B2 (en) | 2019-07-15 | 2023-08-15 | Huawei Technologies Co., Ltd. | Packet transmission method and apparatus |
CN112181745A (zh) * | 2020-09-28 | 2021-01-05 | 上海国微思尔芯技术股份有限公司 | 一种fpga原型验证的云服务平台系统及方法 |
CN112181745B (zh) * | 2020-09-28 | 2022-09-09 | 上海国微思尔芯技术股份有限公司 | 一种fpga原型验证的云服务平台系统及方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP3860812B2 (ja) | Asicとプログラマブル・ロジックデバイスのコンカレント開発支援プログラム、開発支援方法及び開発支援装置 | |
KR100846089B1 (ko) | 설계 블록들 사이에 다수의 글루 로직 엘리먼트들을 분배하는 방법 및 글루 로직 분배 효율을 증가시키는 방법 | |
EP1129483A1 (de) | Dram-zellenanordnung und verfahren zu deren herstellung | |
JP2006268862A (ja) | Asicとプログラマブル・ロジックデバイスのコンカレント開発システム、開発プログラム及び開発方法 | |
JP4127719B2 (ja) | Asicとプログラマブル・ロジックデバイスのコンカレント開発システム及び開発方法 | |
JP4127720B2 (ja) | Fpga及びasicのネットリストを生成する方法 | |
Patterson et al. | Slotless module-based reconfiguration of embedded FPGAs | |
CN101131713B (zh) | Asic和可编程逻辑器件并行开发系统和开发方法 | |
Gajski et al. | A system-level specification & design methodology | |
Vahid | A System-Level Specification & Design Methodology |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20061031 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20061227 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20070130 |