Deprecated: The each() function is deprecated. This message will be suppressed on further calls in /home/zhenxiangba/zhenxiangba.com/public_html/phproxy-improved-master/index.php on line 456
JP5115056B2 - 論理回路の記述形式変換方法、プログラム及び装置 - Google Patents
[go: Go Back, main page]

JP5115056B2 - 論理回路の記述形式変換方法、プログラム及び装置 - Google Patents

論理回路の記述形式変換方法、プログラム及び装置 Download PDF

Info

Publication number
JP5115056B2
JP5115056B2 JP2007172070A JP2007172070A JP5115056B2 JP 5115056 B2 JP5115056 B2 JP 5115056B2 JP 2007172070 A JP2007172070 A JP 2007172070A JP 2007172070 A JP2007172070 A JP 2007172070A JP 5115056 B2 JP5115056 B2 JP 5115056B2
Authority
JP
Japan
Prior art keywords
logic circuit
library
assignment statement
format
instance
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
JP2007172070A
Other languages
English (en)
Other versions
JP2008033919A (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.)
Fujitsu Ltd
Original Assignee
Fujitsu 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 Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2007172070A priority Critical patent/JP5115056B2/ja
Publication of JP2008033919A publication Critical patent/JP2008033919A/ja
Application granted granted Critical
Publication of JP5115056B2 publication Critical patent/JP5115056B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Description

本発明は、ハードウェア記述言語を用いて記述した論理回路の高速シミュレーションを可能とする論理回路の記述形式変換方法、プログラム及び装置に関し、特に、ネットリスト形式で記述された論理回路をRTL形式に変換して高速シミュレーションを可能とする論理回路の記述形式変換方法,プログラム及び装置に関する。
従来、大規模な論理回路については回路図に代わる設計手法としてVerilog−HDLなどのハードウェア記述言語(HDL; Hardware Description Language)を使用したテキストベースの設計作業が行われている。
HDLによる設計作業は、通常、次の手順で行われる。
(1)テキストエディタ上で回路モジュールの機能をハードウェア記述言語により記述してHDLファイル(機能記述ファイル)を作成。
(2)HDLファイルのHDLシミュレータを使用して動作を確認。
(3)動作が確認できたHDLファイルから論理合成ツールを使用してネットリストを作成。
このような従来のHDLを用いた論理設計にあっては、基本的にRTL(Register Transfer Level)記述として知られたRTL形式で記述されるが、ギガヘルツオーダーの超高速で動作する必要があるデータパス系の回路やDFT(Design For Test)の回路は、ゲートレベル記述として知られたネットリスト形式で記述されることが多い。
ここで、RTL形式と呼ばれるRTL記述は、実現する論理をレジスタとレジスタ間の論理機能で表現したHDLの記述であり、レジスタの値が遷移していく様子を記述したものである。
またネットリスト形式と呼ばれるゲートレベル記述は、ASIC内部のゲートやセルベース(下位モジュールを部品化してライブラリに登録したインスタンス)の接続関係で表現したリストで記述するレベルであり、RTL記述では実現できない高速性や高密度を要求する場合などに使う。
このようにLSI回路の論理設計はHDLを用いてRTL形式及びネットリスト形式で記述しており、設計時にHDLの論理回路が正しく機能が動作するかを論理シミュレータを用いて検証している。
ここで、HDLで記述された論理回路のシミュレーションに関連する従来技術として、次の特許文献1乃至6がある。
特許文献1は、トランジスタ/ゲートレベルのシミュレーションにおいて、トランジスタをゲートに変換し、組み合わせ回路と順序回路に区分し、RTLに変換することで、シミュレーションを高速化する装置である。
特許文献2は、ゲートレベルのシミュレーションにおいて、クロック信号を利用して順序回路をクロック同期化し、順序回路の起動タイミングを最適化してから、従来の最適化処理を行うことで、シミュレーションを高速化する装置である。
特許文献3は、論理回路のシミュレーションにおいて、イベント実行単位をまとめる操作を行うことで、シミュレーションを高速化する装置である。
特許文献4は、ゲートレベルのシミュレーションにおいて、削除可能なゲートを判定して削除することで、シミュレーションを高速化する装置である。
特許文献5は、RTLをネットリストに変換し、そのネットリストに対して回路の不活性部分の削除、レジスタの移動・統合化を行い、RTLに再変換することで、シミュレーションを高速化する装置である。
特許文献6は、RTLのシミュレーションにおいて、条件実行部とそれに続くデータ演算部を統合することで、シミュレーションを高速化する装置である。
特開平6−348775号 特開平7−129632号 特開平10−69505号 特開2006−4244号 特開平9−311822号 特開平11−85832号
しかしながら、ネットリスト形式で記述された回路を多く含んだ大規模なLSI回路の動作を論理シミュレータで検証する場合、ネットリスト形式で記述された部分の検証に多くの時間がとられるという問題がある。
これは一般的な論理シミュレータの場合、イベントドリブン方式でシミュレーションを行うが、ネットリスト形式の場合はイベント数がかなり多くなり、シミュレータの実行時間がかなり長くなる。
ここでイベントドリブン方式のシミュレーションとは、信号の変化(イベント)のある論理ゲートなどの素子に着目し、イベントの発生した素子の次段の素子のみ演算処理し、素子の出力が変化している場合に、信号の変化を次段に次々と伝え、論理値のみならず、イベント間の遅延も計算できる。
このネットリスト形式のシミュレーション実行時間の問題を解消する装置として以下のような装置がある。
(1)サイクルベース方式によるシミュレーション
サイクルベース方式のシミュレーションは、素子の遅延時間を無視して前処理で静的に演算順序を決定しておき、実行時にはクロックサイクルごとに1度だけ演算を行う。タイミング検証はできないが、イベントドリブン方式と比べて演算量が大幅に低減し、数十倍から百倍程度の高速動作が可能である。
(2)ハードウェアエミュレータを用いたシミュレーション
ハードウェアエミュレータによるシミュレーションは、イベントドリブン方式の論理シミュレータを専用ハードウェア化したもので、可能な限り処理の並列性を高めるように工夫され、イベントドリブン方式の論理シミュレータと比べ数十倍から数百倍も速く、対象回路の制約はなく、タイミング検証も可能である。
しかし、サイクルベース方式によるシミュレーションは、基本的に同期回路を対象としており、HDLの記述に制限があり、一般的ではない。またハードウェアエミュレータは大変高価であるため、コストの負担が大きい。
そのため、ネットリスト形式で記述された論理回路のシミュレーションを、HDLの記述の制限なしに、安価に実行する装置が求められている。
本発明は、ネットリスト形式で記述されたHDLに対してイベント数を減らしてRTL記述に変換することによってイベントドリブン方式での高速シミュレーションを可能とする論理回路の記述形式変換方法、プログラム及び装置を提供することを目的とする。
(方法)
本発明は論理回路の記述形式変換方法を提供する。本発明は、ハードウェア記述言語を用いてネットリスト形式で記述された論理回路をRTL形式で記述された論理回路に変換する論理回路の記述形式変換方法に於いて、
ネットリスト形式で記述された論理回路(モジュール)を読み込む論理回路読込ステップと、
論理回路中のインスタンスに対応するライブラリのRTL形式で記述された下位の論理回路(下位モジュール)を読み込むライブラリ読込ステップと、
論理回路中のインスタンスに対してライブラリの階層を展開する処理を行ってRTL形式に変換するライブラリ階層展開ステップと、
論理回路中の代入文を置換して削除する代入文削除ステップと、
論理回路をRTL形式で出力する論理回路出力ステップと、
を備えたことを特徴とする。
ここで、ライブラリの論理回路がネットリスト形式で記述されている場合、論理回路をRTL形式に変換するライブラリ記述形式変換ステップを備える。このライブラリ記述形式変換ステップは、
ライブラリ内のネットリスト形式で記述された論理回路を読み込む論理回路読込ステップと、
論理回路中のインスタンスに対してRTL形式で記述されたライブラリ内の下位の論理回路を読込む下位論理回路読込ステップと、
論理回路のインスタンスに対し下位論理回路との階層を展開する処理を行ってRTL形式に変換するライブラリ階層展開ステップと、
論理回路中の代入文を置換して削除する代入文削除ステップと、
論理回路をRTL形式で出力してライブラリを書き換えるモジュール出力ステップと、
を備える。
ライブラリ階層展開ステップは、
論理回路内のインスタンスに対応するライブラリ内の下位論理回路を特定するライブラリ特定ステップと、
論理回路内のインスタンスに対して、インスタンスピンとそれに対応するライブラリ内の下位論理回路のライブラリポートの結合関係を設定する結合ステップと、
ライブラリ内の下位論理回路から入出力を除くデータタイプ宣言を抽出してそのコピーを生成する宣言コピーステップと、
ライブラリ内の下位論理回路からファンクション記述を抽出してそのコピーを生成するファンクション記述コピーステップと、
ライブラリ内の下位論理回路からタスク記述を抽出してそのコピーを生成するタスク記述コピーステップと、
ライブラリ内の下位論理回路から動作記述を抽出してそのコピーを生成する動作記述コピーステップと、
を備える。
ハードウェア記述言語がVerilog−HDLの場合、結合ステップは、ライブラリポートが入力ポートの場合、インスタンスピンに対応して、
wire ライブラリポート名;
assign ライブラリポート名=インスタンスピンの式;
を生成し、
ライブラリポートが出力ポートの場合、インスタンスピンに対応して、
wire ライブラリポート名;
assign インスタンスピンの式=ライブラリポート名;
を生成し、
ライブラリポート名として、論理回路のインスタンス名をアンダースコアで変換前のライブラリポート名と連結した名前を生成する。
ハードウェア記述言語がVerilog−HDLの場合、
宣言コピーステップは、コピー先の宣言名として、論理回路のインスタンス名をアンダースコアで変換前の宣言名と連結した名前を生成し、
ファンクション記述コピーステップは、コピー先のファンクション名として、論理回路のインスタンス名をアンダースコアで変換前のファンクション名と連結した名前を生成し、
タスク記述コピーステップは、コピー先のタスク名として、論理回路のインスタンス名をアンダースコアで変換前のタスク名と連結した名前を生成し、
インスタンス記述コピーステップは、コピー先のインスタンス名として、論理回路のインスタンス名をアンダースコアで変換前のインスタンス名と連結した名前を生成し、インスタンスピンの式の中の変数名として、モジュールのインスタンス名をアンダースコアで変換前の変数名と連結した名前を生成し、
動作記述コピーステップは、動作記述文としてライブラリ内の下位論理回路からinitia1文、always文及びassign文を抽出してそのコピーを生成する。
代入文削除ステップは、代入文の左辺が他式で使われている場合、他式で使われている箇所を代入文の右辺に置き換えて代入文を削除する。更に、代入文削除ステップは、代入文の右辺で置き換えた他式が演算式の場合、予め定めた変換ルールに従って簡略化された演算式に変換する。
代入文削除ステップは、第1代入文の左辺に遅延が付加され、第1代入文の左辺のみが第2代入文の右辺に使われている場合、第1代入文の遅延を第2代入文に付加すると共に第2代入文の右辺を第1代入文の右辺で使われている箇所に置き換えて第1代入文を削除する。
(プログラム)
本発明は論理回路の記述形式変換のためのプログラムを提供する。本発明のプログラムは、コンピュータに、
ハードウェア記述言語を用いてネットリスト形式で記述されたれた論理回路を読み込む論理回路読込ステップと、
論理回路中のインスタンスに対応するライブラリのRTL形式で記述された下位の論理回路を読み込むライブラリ読込ステップと、
論理回路中のインスタンスに対して前記ライブラリの階層を展開する処理を行ってRTL形式に変換するライブラリ階層展開ステップと、
論理回路中の代入文を置換して削除する代入文削除ステップと、
論理回路をRTL形式で出力する論理回路出力ステップと、
を実行することを特徴とする。
(装置)
本発明は論理回路の記述形式変換装置を提供する。本発明は、ハードウェア記述言語を用いてネットリスト形式で記述された論理回路をRTL形式で記述された論理回路に変換する論理回路の記述形式変換装置に於いて、
ネットリスト形式で記述された論理回路を読み込む論理回路読込部と、
論理回路中のインスタンスに対応するライブラリのRTL形式で記述された下位の論理回路を読み込むライブラリ読込部と、
論理回路中のインスタンスに対して前記ライブラリの階層を展開する処理を行ってRTL形式に変換するライブラリ階層展開部と、
論理回路中の代入文を置換して削除する代入文削除部と、
論理回路をRTL形式で出力する論理回路出力部と、
を備えたことを特徴とする。
本発明によれば、ネットリスト形式のHDLをイベントドリブン方式のシミュレータでシミュレーションを行う場合に、ネットリスト形式で記述されたHDLを、ライブラリを参照して階層展開してRTL形式の記述に変換し、また冗長な代入文が含まれている場合は置換して削除し、これによってイベント数を減らし、シミュレーションを高速に行うことができる。
また本発明による形式変換の対象となるネットリスト形式によるHDLの記述に特に制限はなく、簡単且つ容易に、更に安価に実行することができる。
また、ライブラリがネットリスト形式で記述されている場合(マクロライブラリの場合)や、ライブラリ中に冗長な代入文が含まれている場合は、ライブラリをいったん最適なRTL形式のライブラリに変換することで、そのようなライブラリのインスタンスが設計した論理回路中に複数存在しても、同じ変換を何度も繰り返すことがなくなるので、この変換自体の高速化が期待できる。
図1は本発明による論理回路記述形式変換装置の実施形態を示した機能構成のブロック図である。本実施形態の機能構成は、本実施形態の論理回路記述形式変換プログラムをコンピュータで実行することにより実現される。
図1において、本実施形態の論理回路記述形式変換装置10は、論理回路読込部18、論理回路記憶部20、ライブラリ階層展開部22、代入文削除部24及び論理回路出力部26で構成される。
論理回路読込部18は、ネットリスト形式のHDLで記述された設計済みの論理回路(デザイン回路)を読み込んで論理回路記憶部20に記憶する。また論理回路読込部18は、論理回路14のHDL記述中のインスタンスに対応するライブラリ16のRTL形式で記述されたHDLを全て読み込む。
ライブラリ16には、ネットリスト形式のHDLで記述した論理回路14でモジュール内に部品として記述しているインスタンスに対応した下位モジュールが、RTL形式HDLにより記述されたモジュールとして登録されている。
尚、ライブラリ16として、ネットリスト形式HDLで記述されている場合については、後の説明で明らかにするように、ライブラリのネットリスト形式のHDLをRTL形式のHDLに変換して本実施形態の論理回路読込部18で読み込むことになる。
ライブラリ階層展開部22は、論理回路記憶部20に読み込まれたネットリスト形式HDLの論理回路内のそれぞれのインスタンスに対し、RTL形式で記述されたライブラリ16のHDLの下位モジュールを使用して階層を展開する処理を実行し、この階層展開処理により論理回路14はRTL形式に変換される。
代入文削除部24は、ライブラリ階層展開によりRTL形式に変換された論理回路のHDLに対し、代入文を置換して削除する代入文の削除処理を実行する。論理回路出力部26は、ライブラリ階層展開及び代入文削除処理の済んだRTL形式のHDLに変換された論理回路28を出力する。変換済のRTL形式のHDLでなる論理回路28を使用して、論理シミュレータによりイベントドリブン方式のシミュレーションを行うことになる。
図2はライブラリ記述形式変換装置と組み合わせた本実施形態のブロック図である。図2において、論理回路記述形式変換装置10は図1の実施形態と同じである。本実施形態は、オリジナルのライブラリ30がネットリスト形式のHDLで記述されている場合であり、ライブラリ記述形式変換装置12によりRTL形式のHDLに変換してライブラリ16に格納し、その後、論理回路記述形式変換装置10により設計済みのネットリスト形式のHDLからなる論理回路の変換処理を行うことになる。
図3は図2のライブラリ記述形式変換装置12の実施形態を示した機能構成のブロック図である。ライブラリ記述形式変換装置12は、論理回路読込部18−1、論理回路記憶部20−1、ライブラリ階層展開部22−1、代入文削除部24−1及び論理回路出力部26−1で構成され、この構成は基本的に、図1に示した論理回路記述形式変換装置10と同じである。
相違点としては、ネットリスト形式で記述されたHDLを格納しているライブラリ30から、部品として登録されているインスタンスに対応した各モジュールを変換対象の論理回路として読み込み、変換対象となる論理回路に含まれているインスタンスに対応した基本論理素子のRTL形式HDLを読み込んで階層展開している点である。
図4は本実施形態の機能を実現するプログラムを実行するコンピュータのハードウエア環境のブロック図である。図4において、CPU34のバス36に対し、RAM38、ROM40、ハードディスクドライブ42、キーボード46,マウス48及びディスプレイ50を接続したデバイスインタフェース44、及びネットワークアダプタ52を接続している。
ハードディスクドライブ42には本実施形態の論理回路及びライブラリの記述形式を変換するためのプログラムが格納されており、コンピュータを起動した際に、ブートアップ後のOSのRAM38への展開に続いて、記述形式変換プログラムがハードディスクドライブ42から読み出されてRAM38に展開され、CPU34により実行される。
図5は本実施形態で変換対象とするネットリスト形式HDLで記述された論理回路14の説明図である。この論理回路14にあっては、1行目のモジュール名が「DESIGN」であり、ポート名が「d,s,c,r,q」であり、2〜6行目にポート宣言が記述され、7〜8行目にwire宣言が記述され、9行目と10行目にインスタンスが記述されている。
ここで9行目のインスタンスはマルチプレクサMUXであり、ライブラリ30に登録されている下位モジュールである論理回路MUXを部品として記述してインスタンス化を行っている。
また10行目のインスタンスはリセット端子付のD−FFであり、同様にライブラリ16に登録されているD−FFの下位モジュールを部品として記述してインスタンス化を行っている。
図6は図5の論理回路14の9行目と10行目のインスタンスに対応して登録されたライブラリ30の説明図であり、ライブラリ30はネットリスト形式のHDLで記述されている。本実施形態における論理回路の記述形式変換にはネットリスト形式のライブラリ30はそのまま使用できず、図2及び図3の実施形態に示したように、ライブラリ記述形式変換装置12により図7に示すRTL形式のHDLで記述されたライブラリ16に変換して使用することになる。
図6のネットリスト形式で記述されたライブラリ30にあっては、図5の論理回路14の9行目のマルチプレクサMUXに対応した下位モジュールを1〜13行目に記述している。また1〜13行目のモジュールMUXは、9〜12行目にインスタンスとしてNOT i1,AND i2,AND i3,及びOR i4のインスタンスを含んでおり、これら4つのインスタンスに対応したモジュールを15〜32行目にそれぞれ記述している。
また図5の10行目のインスタンスDFFに対応した下位モジュールとして、34〜47行目にHDLを記述している。
この図6のネットリスト形式のHDLで記述されたライブラリ30を本実施形態により階層展開し且つ冗長な代入文を置換して削除すると、図7に示すRTL形式のライブラリ16を生成することができる。ライブラリ16は、1〜7行目がインスタンスMUXの変換部分であり、8〜21行目がインスタンスDFFの変換部分となる。
図8は図5のネットリスト形式の論理回路14を対象に、図7のRTL形式のライブラリ16を使用してライブラリ階層展開した後に、冗長な代入文を置換して削除して得た本実施形態の記述形式変換処理で得られたRTL形式の論理回路28の説明図である。
このRTL形式に変換された論理回路28は、図5と対比して明らかなように、ライブラリに登録した下位モジュールを部品として使用するインスタンスは存在せず、インスタンスは全て動作記述文に変換されている。
このようなRTL形式の論理回路28を論理シミュレータに投入してイベントドリブン方式でシミュレーションを行う場合には、イベント数を大幅に低減できたことで、シミュレーション速度を高速に実行することが可能になる。
図9は図5のHDLから記述した論理回路14の回路図であり、マルチプレクサ(MUX)64は入力ピンa,b,sと出力ピンoを備え、またリセット端子付のD−FF(DFF)66は入力ピンd,c,rと出力ピンq,qbを備えている。また、この論理回路14のポートとして入力ポートb,s,c,rが設けられ、出力ポートはポートqとなっている。
図10は図1の実施形態による論理回路記述形式変換処理のフローチャートであり、図1を参照して説明すると次のようになる。まずステップS1で、論理回路読込部18がネットリスト形式で記述されたHDLによる論理回路14を論理回路記憶部20に読み込む。続いてステップS2で、読み込んだ論理回路14中のインスタンスに対応するライブラリ16のRTL形式で記述されたHDLを論理回路記憶部20に読み込む。
続いてステップS3で、ライブラリ階層展開部22が論理回路記憶部20に格納されている論理回路14内のそれぞれのインスタンスに対し、ライブラリ16の階層を展開する処理を行って、論理回路14のネットリスト形式をRTL形式に変換する。
続いてステップS4で、代入文削除部24が論理回路記憶部20に格納されている冗長な代入文を置換して削除する。例えば論理回路中に置換え可能な代入文が存在している場合、代入文の左辺が他式で使われている場合、他式で使われている箇所を代入文の右辺で置き換え、元の代入文を削除することになる。
最終的にステップS5で、論理回路出力部26がRTL形式のHDLに変換された論理回路28を出力する。
図11は図2に示したライブラリの記述形式変換を含む論理回路記述形式変換処理のフローチャートである。この処理は図6に示したように、変換処理対象とするネットリスト形式の論理回路のインスタンスに対応するモジュールを登録したライブラリがネットリスト形式のHDLで記述されている場合に適用される。即ち、ステップS1でライブラリの記述形式をネットリスト形式からRTL形式に変換した後、ステップS2で論理回路をネットリスト形式からRTL形式に変換することになる。
図12は図11のステップS1におけるライブラリの記述変換処理の詳細を示したフローチャートである。このライブラリ記述変換処理は、図3の実施形態に示すライブラリ記述形式変換装置12で行われ、処理手順となるステップS1〜S5は基本的に、図10に示した論理回路に対する変換処理と同じになる。
図13は図10のステップS3におけるライブラリ展開処理を示したフローチャートである。図13において、ライブラリ展開処理は、ステップS1で論理回路内のモジュールを取り出し、ステップS2でモジュール内のインスタンスを取り出す。
次にステップS3でインスタンスに対応するライブラリがあるか否かチェックし、対応するライブラリがある場合には、ステップS4〜S10の処理によりライブラリを展開してインスタンスをネットリスト形式からRTL形式に変換する。ステップS3でインスタンスに対応するライブラリが存在しない場合には、ステップS4〜S10の処理はスキップする。
インスタンスに対応するライブラリが存在する場合、ステップS4でインスタンスに対応するライブラリを特定する。次にステップS5でインスタンスピンとライブラリポートとを結合する処理を実行する。次にステップS6でライブラリ内の宣言のコピー処理を行う。
続いてステップS7でライブラリ内のファンクション及びまたはタスクのコピー処理を行う。続いてステップS8でライブラリ内のインスタンスのコピー処理を行う。更にステップS9でライブラリ内の動作記述のコピー処理を行う。これによりインスタンスのライブラリ展開が済んだことから、ステップS10で、対象としているインスタンスを削除する。
続いてステップS11でモジュール内の全てのインスタンスの処理が済んだか否かチェックし、済んでいなければステップS2に戻り、次のインスタンスをモジュール内から取り出して、ステップS3からの処理を繰り返す。
ステップS11でモジュール内の全インスタンスの処理が済んだならば、ステップS12に進み、論理回路内の全モジュールの処理が済んだか否かチェックし、未処理であればステップS1に戻り、次のモジュールを論理回路内から取り出してステップ2からの処理を繰り返す。ステップ12で全モジュールの処理が済んだことが判別されると、一連のライブラリ展開処理を終了して図10のメインルーチンにリターンする。
図14は図13のステップS5におけるインスタンスピンとライブラリポートの結合処理の詳細を示したフローチャートである。図14において、ステップS1でインスタンスのピンを1つ抽出し、次にステップS2でインスタンスピンに対応するライブラリポートを抽出する。続いてステップS3で新ライブラリポート名を生成する。この新ライブラリポート名は
(新ライブラリポート名)=(インスタンス名+“_”+ライブラリポート名)
とする。なお、“_”はアンダースコアと呼ぶ。続いてステップS4で元のライブラリポート名と生成した新ライブラリポート名を連想配列に登録する。
次にステップS5でライブラリポートが入力ポートか否かチェックする。入力ポートであった場合にはステップS6に進んで、入力ポートに対応したポート宣言と代入文を生成する。このポート宣言と代入文は
wire 新ライブラリポート名;
assign 新ライブラリポート名=インスタンスピンの式;
とする。
一方、ステップS5でライブラリポートが入力ポートでなかった場合即ち出力ポートであった場合には、ステップS7に進み、出力ポートに対応したポート宣言と代入文を生成する。このポート宣言と代入文は
wire 新ライブラリポート名;
assign インスタンスピンの式=新ライブラリポート名;
とする。
次にステップS8で全インスタンスピンの処理が済んだか否かチェックし、未処理であればステップS1に戻り、次のインスタンスピンを抽出してステップS2からの処理を繰り返す。全てのインスタンスピンの処理が済むと一連の処理を終了し、図13のライブラリ展開処理にリターンする。
図15はインスタンスピンとライブラリポートの結合処理の具体例を示している。図15(A)は処理対象とするインスタンスを記述した論理回路14である。図15(B)は論理回路14のインスタンスに対応するライブラリ16である。
図15(A)のインスタンスにつき、図14のインスタンスピンとライブラリポートの結合処理を適用すると、図15(C)の階層展開ワーク60−1に示すようになる。即ち、図14のステップS1で図15(A)のインスタンスのピンaを抽出し、ステップS2でインスタンスピンaに対応する図15(B)のライブラリポート16の2行目を抽出し、ステップS3で新ライブラリポート名として
(新ライブラリポート名)=(インスタンス名)+“_”+(ライブラリポート名)
=i1_a
を生成し、ステップS4でライブラリポート名aと共に連想配列に登録する。
続いてステップS5でライブラリポートaは入力ポートであることから、ステップS6で図15(C)の1行目と2行目に示すようにポート宣言と代入文を生成する。
次のインスタンスピンのピンoについては、新ライブラリポート名「i1_o」が生成され、ライブラリポートは出力ポートであることから、図15(C)の3,4行目のように出力ポートを対象としたポート宣言と代入文が生成される。
図16はライブラリポートがレジスタと宣言されている場合のインスタンスピンとライブラリポートの結合処理の具体例を示している。図16(A)は処理対象とするインスタンスを記述した論理回路14である。図16(B)は論理回路14のインスタンスに対応するライブラリ16である。
図16(A)のインスタンスにつき、図14のインスタンスピンとライブラリポートの結合処理を適用すると、図16(C)の階層展開ワーク60−1Aに示すようになる。即ち、図14のステップS1で図16(A)のインスタンスピンqを抽出し、ステップS2でインスタンスピンqに対応する図16(B)のライブラリポート16の3行目を抽出し、ステップS3で新ライブラリポート名として「i2_q」を生成し、ライブラリポートは出力ポートであることから、図16(C)の出力ポートを対象としたポート宣言と代入文が生成される。
図17は図13のステップS6における宣言コピー処理の詳細を示したフローチャートである。この宣言コピー処理は、ライブラリ内の宣言に対し、その宣言のコピーを生成する。この場合、wireなどのデータタイプ宣言で、input/outputの宣言は処理対象から除く。またコピー先の新宣言名は
(新宣言名)=(インスタンス名)+“_”+(宣言名)
としている。
即ち、図17の宣言コピー処理にあっては、ステップS1でライブラリ内の宣言を抽出し、ステップS2で新宣言名を生成し、ステップS3で宣言名と新宣言名を連想配列に登録する。続いてステップS4で宣言のコピーを生成し、コピー先の名前を新宣言名に設定する。このステップS1〜S4の処理を、ステップS5で全宣言の処理が済むまで繰り返す。
図18は宣言コピー処理の具体例を示す。図18(A)に示す論理回路14のインスタンスに対応するライブラリが図18(B)のライブラリ16である場合、図17の宣言コピー処理により図18(C)の階層展開ワーク60−2に示す宣言コピーが生成される。
ここでライブラリ16の2行目のwire宣言の新宣言名は「i1_n」であり、またライブラリ16の3行目のwire宣言の新宣言名は「i1_qb」であり、これら新宣言名を使用して図18(C)の1,2行目に示す宣言コピーが生成される。
図19は図13のステップS7におけるファンクションコピー処理の詳細を示したフローチャートである。
ファンクションコピー処理は、ライブラリ内のそれぞれのファンクションに対しファンクションのコピーを生成する。このファンクションのコピーは全ステートメントのコピーとする。ファンクションコピー処理の際に、コピー先の新ファンクション名は
(新ファンクション名)=(インスタンス名)+“_”+(ファンクション名)
とする。
また、ファンクションの引き数(input/output)やファンクション内の宣言はそのままコピーする。更にファンクション内で使用されているライブラリポートやライブラリ内の宣言となる変数名は、コピー後の新たな変数名に変更する。更にまた、ファンクションの返り値は新ファンクション名とする。
このようなファンクションコピー処理を図19のフローチャートについて説明すると次のようになる。まずステップS1でライブラリ内にファンクションがあるか否かチェックし、ファンクションがあれば、ステップS2でファンクションを1つ抽出し、ステップS3で新ファンクション名を生成する。
続いてステップS4でファンクション名と新ファンクション名を連想配列に登録する。続いてステップS5でファンクションのコピーを生成し、コピー先の名前を新ファンクション名に設定する。
続いてステップS6で全ファンクションの処理済の有無をチェックし、未処理であればステップS2に戻り、次のファンクションを取り出して同様な処理を繰り返す。ステップS1でライブラリ内にファンクションがなかった場合、あるいはステップS6で全ファンクションの処理が済んだ場合は、図13の階層処理にリターンする。
図20はファンクションコピー処理の具体例を示した説明図である。図20において、まず図20(A)の論理回路14のインスタンスに対応する図20(B)のライブラリ16が存在する場合、図19のファンクションコピー処理により、図20(C)に示す階層展開ワーク62のファンクションコピーを生成する。
ここでライブラリ16の2行目のファンクション名「s1」に対する新ファンクション名は「i1_s1」であり、この新ファンクション名が図20(C)の1行目及び3行目で使用されている。それ以外のライブラリ16の2〜5行目については、ファンクションコピー処理の階層展開ワーク62に示すように1〜4行目としてそのままコピーされている。
図21は図13のステップS8におけるタスクコピー処理の詳細を示したフローチャートである。タスクコピー処理も基本的には図19のファンクションコピー処理と同じになる。
即ちタスクコピー処理にあっては、ライブラリ内のそれぞれのタスクに対しタスクのコピーを生成する。このタスクのコピーは全ステートメントをコピーする。コピー先の新タスク名は
(新タスク名)=(インスタンス名)+“_”+(タスク名)
とする。タスクの引き数input/outputやタスク内の宣言はそのままコピーする。またタスク内で使用されているライブラリポートやライブラリ内の宣言となる変数名はコピー後の新たな変数名に変更する。
このタスクコピー処理を図21について説明すると次のようになる。まずステップS1でライブラリ内にタスクがあるか否かチェックし、タスクがあればステップS2でタスクを1つ抽出し、ステップS3で新タスク名を生成し、ステップS4で連想配列に登録する。続いてステップS5でタスクのコピーを生成し、コピー先の名前を新タスク名に設定する。
続いてステップS6で全タスクの処理済の有無をチェックし、未処理であればステップS2に戻り、次のタスクを取り出して同様な処理を繰り返す。ステップS6で全タスクの処理済、もしくはステップS1でライブラリ内にタスクがなかった場合には、タスクコピー処理を終了し、図13の階層展開にリターンする。
図22は図13のステップS8におけるインスタンスコピー処理の詳細を示したフローチャートである。インスタンスコピー処理は、ライブラリ内のそれぞれのインスタンスに対し、そのインスタンスのコピーを生成する。コピー先の新インスタンス名は
(新インスタンス名)=(モジュールインスタンス名)+“_”+(ライブラリインスタンス名)
とする。またインスタンスピンの式の中の変数即ち、ライブラリポート、ライブラリ内の宣言、ライブラリ内のファンクションの名前は、新たな変数名に変更する。
このインスタンスコピー処理を図22について説明すると次のようになる。まずステップS1でライブラリ内にインスタンスがあるか否かチェックし、インスタンスがあれば、ステップS2でライブラリインスタンスを1つ抽出し、ステップS3で新ライブラリインスタンス名を生成する。
続いてステップS4でライブラリインスタンスのコピーを生成する。更にステップS5でコピー先のインスタンス名に新ライブラリインスタンス名を設定し、更にコピーした新インスタンスピンの式の中の変数名は連想配列から変換後の新変数名を求めて設定する。
続いてステップS6で全インスタンス処理済か否かチェックし、未処理であればステップS2に戻り、次のライブラリインスタンスを抽出して同様な処理を繰り返す。ステップS6で全インスタンスの処理済、またはステップS1でライブラリ内にインスタンスがなかった場合には、図13の階層展開にリターンする。
図23はインスタンスコピー処理の具体例を示した説明図である。図23において、図23(A)の論理回路14のインスタンスに対し、図23(B)のライブラリ16が対応する場合、インスタンスコピー処理により図23(C)の階層展開ワーク60−3に示すインスタンスコピーが生成される。
ここでライブラリ16の2行目のインスタンスをコピー先の新インスタンス名は「i1_i2」であり、これを図23(C)の新インスタンス名に設定している。またライブラリ16の2行目のインスタンスのカッコ内に示す変数名については、これまでのコピー処理で生成された連想配列から対応する新変数名「i1_a」、「i1_s」、「i1_a1」を求めて設定している。
図24は図13のステップS9における動作記述コピー処理の詳細を示したフローチャートである。この動作記述コピー処理は、ライブラリ内の動作記述であるinitial文、always文、assign文に対し、その動作記述のコピーを生成する。
コピーする際には、動作記述の文中の変数、即ちライブラリポート、ライブラリ内の宣言及びライブラリ内のファンクションは、連想配列からコピー後の新変数名を求めて変更する。
この動作記述コピー処理を図24について説明すると次のようになる。ステップS1でライブラリ内の動作記述を抽出し、ステップS2で動作記述のコピーを生成する。続いてステップS3で動作記述のコピーの中の変数、即ち、新連想配列から変換後の新変数名を求めて設定する。続いてステップS4で全動作記述の処理済の有無をチェックし、処理を終了するまでステップS1からの処理を繰り返す。
以上のような一連の処理を経てライブラリの階層展開が済んだならば、図13のステップS10で、展開の済んだインスタンスを削除することになる。
図25及び図26は、図10のステップS4の代入文削除処理を示したフローチャートである。この代入文削除処理は次の3つの処理からなる。
(1)代入文の置換処理
(2)代入文を置換した後の式の変換
(3)遅延が付加されている代入文の置換処理
まず前記(1)の代入文の置換処理を、図27の具体例を参照して説明する。図27(A)は処理対象となる代入文が記述されている階層展開ワーク60−4を示している。この階層展開ワーク60−4において、1行目の代入文に着目すると、この代入文の左辺「net1」は他式である3行目の代入文の右辺の式で使われている。そこで3行目の代入文の右辺の式における「net1」を1行目の代入文の右辺「〜(in1&in2)」で置き換える。
また2行目の代入文に着目すると、この代入文の左辺の「net2」は他式である3行目の代入文の右辺の式で使用されている。そこで、この場合についても3行目の代入文の右辺の式における「net1」を2行目の代入文の右辺「in1|in2」で置き換える。このような代入文の置換えにより、図27(B)の階層展開ワーク60−5に示す置換えが行われ、元の1行目、2行目の代入文は削除することができる。
次に前記(2)の代入文を置き換えた後の式の変換を説明する。本実施形態における代入文削除の際の置き換える過程で、置き換えた後の式の値に自明な演算があれば、その演算を更に簡略化された演算式に変換する。
この式の演算の変換には、図28(A)に示す変換ルールが存在する。図28(A)の変換ルール64にあっては、項番、上位式、変換式として17個の例を示している。変換ルール64において、上位式が代入文の置換え過程で発生する式であり、この上位式に該当する具体的な演算式については、これを右側の変換式に示す簡単な演算式に変換する。
図28(B)は変換ルール64の上位式及び変換式に示す記号の説明を示した記号一覧70である。もちろん記号一覧70は、これ以外にもVerilog−HDLで使用されている記号を用いることができる。
図29は図28(A)の変換ルール64を使用した具体例である。図29(A)の階層展開ワーク60−6に示す3つの代入文について代入文削除処理を行うと、図29(B)の階層展開ワーク60−7の代入文に置換することができる。
更に図29(B)の右辺の「〜in1&in1」は図28(A)の変換ルール64における矢印66で示す上位式「n&〜n」に該当し、この場合の変換式は「1’b0」となり、図29(C)の階層展開ワーク60−8に示すように右辺は「〜1’b0」となる。またこの演算は図28(A)の変換ルール64における矢印67で示す上位式「〜1’b0」に該当し、この場合の変換式は「1’b1」となる。したがって、変換ルール64に基づき図29(D)の階層展開ワーク60−9に示すように右辺の演算を「1’b1」に変換して簡略化することができる。
次に前記(3)の遅延が付加されている代入文の処理を、図30を参照して説明する。図30(A)は処理対象とする代入文が記述された階層展開ワーク60−10であり、1行目の代入文に遅延「#2」が付加され、また3行目の代入文に遅延「#3」が付加されている。
このような遅延が付加された代入文については、第1代入文である1行目の代入文の左辺の「net1」のみが第2代入文となる2行目及び3行目の右辺に使われている場合、図30(B)のように第2代入文に第1代入文の遅延「#2」を加算する。このため図30(B)の1行目の第2代入文の左辺は、図30(A)の1行目の第1代入文の遅延「#2」が加算されることで「#2 out1」となり、右辺の「〜net1」は「〜(〜in1)」で置き換えられる。
また図30(B)の2行目の第2代入文の左辺についは、図30(A)の1行目の第1代入文の遅延「#2」が加算されることで「#(3+2) out2」となり、右辺は同様に「〜in1」で置き換えられる。
この図30(B)の右辺の遅延「#2」の加算結果により得られた階層展開ワーク60−12を図30(C)に示している。更に図28(B)の置換え後の1行目の代入文の右辺の式「〜(〜in1)」は、図28(A)の変換ルール64における矢印68で示す上位式「〜〜n」に該当し、この場合の変換式は「n」となることから、図30(C)の1行目の代入文の右辺の式を「in1」に変換している。
このように、図27〜図30に示した代入文削除処理を実行する図25及び図26のフローチャートによる代入文削除処理を説明すると次のようになる。図25において、まずステップS1でライブラリ階層展開の済んだ論理回路内のモジュールを取り出し、ステップS2でモジュール内の代入文を抽出する。次にステップS3で代入文の左辺がinput/outputか否かチェックする。input/outputであれば対象外なので図26のステップS17に進む。
次にステップS4で代入文削除フラグを「true」にセットする。次にステップS5で代入文の左辺が他式で使われているか判定する。使われている場合には、ステップS6で代入文の左辺が使われている他式を抽出する。使われていない場合には図26のステップS15に進む。
次にステップS7で代入文に遅延が付加されているか否かチェックする。遅延が付加されていない場合には、図26のステップS10に進む。遅延が付加されていた場合には、ステップS8で代入文(第1代入文)の左辺が使われている他式が別の代入文(第2代入文)で、その第2代入文の右辺は第1代入文の左辺以外の変数を含まないか否かチェックする。
他式が別の代入文でその右辺は第一代入文の左辺以外の変数を含まない場合には、ステップS9で第2代入文の遅延に第1代入文の遅延を加算する。他式が別の代入文でないまたは第2代入文の右辺に第一代入文の左辺以外の変数が含まれている場合にはステップS14に進み、代入文削除フラグを「false」にセットし、図26のステップS15に進む。
続いて図26のステップS10で、他式で使われている箇所を代入文の右辺で置き換えた場合、上位式が変換ルールにマッチするか否かチェックする。変換ルールにマッチする場合には、ステップS11で上位式を変換ルールに従って置き換える。続いてステップS12で代入文の左辺が使われている箇所を代入文の右辺で置き換える。
続いてステップS13で代入文の左辺が使われている他式を全て処理済か否かチェックし、未処理であれば図25のステップS6に戻り、別の他式について同様な処理を繰り返す。ステップS13で代入文の左辺が使われている他式を全て処理済であれば、ステップS15に進み、代入文削除フラグが「true」か否かチェックし、そうであればステップS16で代入文を削除する。
続いてステップS17で全代入文を処理済か否かチェックし、未処理であれば図25のステップS2に戻り、モジュール内の次の代入文を抽出し、ステップS3からの処理を繰り返す。
図26のステップS17で全代入文の処理の終了を判別した場合には、ステップS18に進み、全モジュールの処理済の有無をチェックし、未処理であれば図25のステップS1に戻り、論理回路内の次のモジュールを取り出して、ステップS2からの処理を繰り返す。ステップS18で全モジュールの処理が済めば一連の処理を終了し、図10のメインルーチンにリターンする。
次に図1の論理回路記述形式変換装置10により図5に示したネットリスト形式のHDLの論理回路14を対象に図8に示すRTL形式の論理回路28に変換する処理を図31〜図52を参照して説明すると次のようになる。
図31は図5のネットリスト形式の論理回路14「module DESIGN」のインスタンスMUX i1,DFF i2のライブラリの階層展開72、74を示している。
このライブラリ階層展開は図13のフローチャートに従って行われている。図31の2つのインスタンスに対する階層展開結果を格納したモジュールワーク76−1は図32のようになる。このようなライブラリ階層展開の済んだモジュール76−1に対し、図25のフローチャートに示した代入文削除処理を行うと次のようになる。
図33は図32のモジュールワーク76−1に対する代入文削除処理であり、ステップS1〜S4の処理を行い、ステップS1〜S4の処理対象については図32のモジュールワーク76−1に対し矢印で処理箇所を示している。また代入文削除処理78における「ループ2、ループ3」は図25の代入文削除処理のフローチャートに対応している。
ここで図25の代入文削除処理は処理ループとして次の3つのループ1〜3にわけることができる。
ループ1:ステップS1〜S18の処理
ループ2:ステップS2〜S17の処理
ループ3:ステップS6〜S13の処理
図33の代入文削除処理78にあっては、まずステップS1でループ2の処理により図32のモジュールワーク76−1の10行目の代入文に着目し、ステップS2でこの代入文の左辺「i1_a」が使われている17行目の式に着目する。
続いてステップS3で17行目の式「(i1_a&i1_s)|(i1_b&〜i1_s)」を10行目の代入文により置き換えて「(d&i1_s)|(i1_b&〜i1_s)」とする。続いてステップS4で「i1_a」を使っているところが全て置換できたので、9行目のwire宣言と10行目の代入文を削除する。この図33の代入文削除処理78により図34のモジュールワーク76−2の内容となる。
次に図34のモジュールワーク76−2を対象に図35の代入文削除処理80を実行する。代入文削除処理80はステップS5でループ2の処理により図34の10行目の代入文に着目し、続いてステップS6でループ3の処理により10行目の代入文の左辺の「i1_b」が使われている15行目の式に着目する。
続いてステップS7で15行目の式「(d&i1_s)|(i1_b&〜i1_s)」を10行目の代入文により置き換えて「(d&i1_s)|(qb&〜i1_s)」とする。続いてステップS8で「i1_b」を使っているところが全て置換できたので9行目のwire宣言と10行目の代入文を削除する。この図35の代入文削除処理80により図36のモジュールワーク76−3の内容となる。
次に図37の代入文削除処理82により図36のモジュールワーク76−3を処理する。まずステップS9でループ2の処理により10行目の代入文に着目し、ステップS10でループ3の処理により10行目の代入文の左辺「il_s」が使われている13行目の式に着目する。
次にステップS11で13行目の式「(d&i1_s)|(qb&〜i1_s)」を10行目の代入文により置き換えて「(d&s)|(qb&〜s)」とする。続いてステップS12で「i1_s」を使っているところが全て置換できたので、9行目のwire宣言と10行目の代入文を削除する。この結果、図38のモジュールワーク76−4の内容となる。
次に図39の代入文削除処理84により図38のモジュールワーク76−4を処理する。まずステップS13でループ2の処理により10行目の代入文に着目し、ステップS10で10行目の代入文の左辺「n」が使われている13行目の式に着目する。次にステップS15で13行目の式「n」を10行目の代入文により置き換えて「i1_o」とする。
続いてステップS16で「n」を使っているところが全て置換できたので7行目のwire宣言と10行目の代入文を削除する。その結果、図40のモジュールワーク76−5に示す内容が得られる。
次に図40のモジュールワーク76−5を対象に図41の代入文削除処理86を行う。代入文削除処理86はステップS17でループ2の処理により9行目の代入文に着目し、ステップS18でループ3の処理により9行目の代入文の左辺「i1_o」が使われている11行目の式に着目する。
次にステップS19で11行目の式「i1_o」を9行目の代入文により置き換えて「(d&s)|(qb&〜s)」とする。続いてステップS20で「i1_o」を使っているところが全て置換できたので8行目のwire宣言と9行目の代入文を削除する。その結果、図42のモジュールワーク76−6の内容が得られる。
次に図43の代入文削除処理88を行う。まずステップS21でループ2の処理により図42の9行目の代入文に着目し、次のステップS22でループ3の処理により9行目の代入文の左辺「i2_d」が使われている22行目の式に着目する。
次にステップS23で22行目の式「i2_q」を9行目の代入文により置き換えて「(d&s)|(qb&〜s)」とする。そしてステップS24で「i2_d」を使っているところが全て置換できたので8行目のwire宣言と9行目の代入文を削除する。その結果、図44のモジュールワーク76−7が得られる。
次に図45の代入文削除処理90を行う。まずステップS25においてループ2の処理により図44の9行目の代入文に着目する。続いてステップS26でループ3の処理により9行目の代入文の左辺「i2_c」が使われている16行目の式に着目する。
次にS27で16行目の式「posedge i2_c or negedge i2_r」を9行目の代入文により置き換えて「posedge c or negedge i2_r」とする。次にステップS28で「i2_c」を使っているところが全て置換できたので、8行目のwire宣言と9行目の代入文を削除する。その結果、図46のモジュールワーク76−8が得られる。
次に図47の代入文削除処理92を行う。まずステップS29でループ2の処理により、図46の9行目の代入文に着目し、ステップS30でループ3の処理により、この代入文の左辺「i2_r」が使われている14行目の式と15行目の式に着目する。
次にステップS31で14行目の式「posedge c or negedge i2_r」を9行目の代入文により置き換えて「posedge c or negedge r」とする。15行目の式「i2_r==1’b0」も同様に置き換えて「r==1’b0」とする。次にステップS32で「i2_r」を使っているところが全て置換できたので、8行目のwire宣言と9行目の代入文を削除する。その結果、図58のモジュールワーク76−9が得られる。
次に図49の代入文削除処理94を行う。まずステップS33で図48の9行目の代入文に着目する。ステップS34でループ3の処理により図48の9行目の代入文の左辺の「q」は、input/outputなので、削除できない代入文であり、対象外とする。
次にステップS35でループ2の処理により11行目の代入文に着目し、ステップS36でループ3の処理によりこの代入文の左辺「qb」が使われている16行目の式に着目する。
次にステップS37で16行目の式「(d&s) |(qb&〜s)」を11行目の代入文により置き換えて「(d&s)|(i2_qb&〜s)」とする。最終的にステップS38で「qb」を使っているところが全て置換できたので、7行目のwire宣言と11行目の代入文を削除する。この結果、図50のモジュールワーク76−10が得られる。
次に図51の代入文削除処理96を行う。まずステップS39で図50の15行目の代入文に着目する。次にステップS40でループ2の処理により14行目の式に着目する。
次にステップS37で14行目の式「(d&s) |(i2_qb&〜s)」を15行目の代入文により置き換えて「(d&s)|(〜i2_q&〜s)」とする。
最終的にステップS42で「i2_qb」を使っているところが全て置換できたので、9行目のwire宣言と15行目の代入文を削除する。この結果、図52のモジュールワーク76−11が最終的に得られる。
この図52の最終的に得られたモジュールワーク76−11は図8のRTL形式の論理回路28と同じであり、この一連の処理により図5のネットリスト形式の論理回路14であるモジュールDESIGNがRTL形式に変換されたことがわかる。
次に図3のライブラリ記述形式変換装置12により図6に示したネットリスト形式のHDLのライブラリ30を対象に図7に示すRTL形式のHDLのライブラリ16に変換する処理を図53〜図82を参照して説明すると次のようになる。
図53は図6のライブラリ30における「module MUX」のインスタンスNOT i1,AND i2,AND i3及びOR i4のライブラリ階層展開100、102、104、106を示している。このライブラリ階層展開は図13のフローチャートに従って行われている。
図53の4つのインスタンスに対するライブラリ階層展開を格納したモジュールワーク108−1は図54のようになる。このようなライブラリ階層展開の済んだモジュールワーク108−1に対し、図25に示した代入文削除処理を行うと次のようになる。
図55は図54のモジュールワーク108−1に対する代入文削除処理であり、ステップS1〜S4の処理を行い、ステップS1〜S4の処理対象については図54のモジュールワーク108−1に対し矢印で処理箇所を示している。また代入文削除処理110における「ループ2、ループ3」は図25の代入文削除処理のフローチャートに対応している。更に図54のモジュールワーク108−1の左に示す数字は行数である。
ここで図25の代入文削除処理は処理ループとして次の3つのループ1〜3にわけることができる。
ループ1:ステップS1〜S18の処理
ループ2:ステップS2〜S17の処理
ループ3:ステップS6〜S13の処理
図55の代入文削除処理110にあっては、まずステップS1でループ2の処理により図54の10行目の代入文に着目し、ステップS2でこの代入文の左辺「i1_a」が使われている13行目の式に着目する。
続いてステップS3で13行目の式「〜i1_a」を10行目の代入文により置き換えて「〜s」とする。続いてステップS4で「i1_a」を使っているところが全て置換できたので、9行目のwire宣言と10行目の代入文を削除する。この図55の代入文削除処理110により図56のモジュールワーク108−2の内容となる。
次に図56のモジュールワーク108−2を対象に図57の代入文削除処理112を実行する。代入文削除処理112はステップS5でループ2の処理により図56の10行目の代入文に着目し、続いてステップS6でループ3の処理により10行目の代入文の左辺の「s1」が使われている22行目の式に着目する。
続いてステップS7で22行目の式「s1」を10行目の代入文により置き換えて「i1_o」とする。続いてステップS8で「s1」を使っているところが全て置換できたので8行目のwire宣言と10行目の代入文を削除する。この図57の代入文削除処理112により図58のモジュールワーク108−3の内容となる。
次に図59の代入文削除処理114により図58のモジュールワーク108−3を処理する。まずステップS9でループ2の処理により9行目の代入文に着目し、ステップS10でループ3の処理により9行目の代入文の左辺「il_o」が使われている20行目の式に着目する。
次にステップS11で20行目の式「i1_o」を9行目の代入文により置き換えて「〜s」とする。続いてステップS12で「i1_o」を使っているところが全て置換できたので、8行目のwire宣言と9行目の代入文を削除する。この結果、図60のモジュールワーク108−4の内容となる。
次に図61の代入文削除処理116により図60のモジュールワーク108−4を処理する。まずステップS13でループ2の処理により9行目の代入文に着目し、ステップS14で9行目の代入文の左辺「i2_a」が使われている14行目の式に着目する。次にステップS15で14行目の式「i2_a&i2_b」を9行目の代入文により置き換えて「a&i2_b」とする。
続いてステップ16で「i2_a」を使っているところが全て置換できたので8行目のwire宣言と9行目の代入文を削除する。その結果、図62のモジュールワーク108−5に示す内容が得られる。
次にこのモジュールワーク108−5を対象に図63の代入文削除処理118を行う。代入文削除処理118はステップS17でループ2の処理により9行目の代入文に着目し、ステップS18でループ3の処理により9行目の代入文の左辺「i2_b」が使われている12行目の式に着目する。
次にステップS19で12行目の式「a&i2_b」を9行目の代入文により置き換えて「a&s」とする。続いてステップS20で「i2_b」を使っているところが全て置換できたので8行目のwire宣言と9行目の代入文を削除する。その結果、図64のモジュールワーク108−6の内容が得られる。
次に図65の代入文削除処理120を行う。まずステップS21でループ2の処理により図52の9行目の代入文に着目し、次のステップS22でループ3の処理により9行目の代入文の左辺「a1」が使われている19行目の式に着目する。
次にステップS23で19行目の式「a1」を9行目の代入文により置き換えて「i2_o」とする。そしてステップS24で「a1」を使っているところが全て置換できたので6行目のwire宣言と9行目の代入文を削除する。その結果、図66のモジュールワーク108−7が得られる。
次に図67の代入文削除処理122を行う。まずステップS25においてループ2の処理により図66の8行目の代入文に着目する。続いてステップS26でループ3の処理により8行目の代入文の左辺「i2_o」が使われている17行目の式に着目する。
次にS27で17行目の式「i2_o」を8行目の代入文により置き換えて「a&s」とする。次にステップS28で「i2_o」を使っているところが全て置換できたので、7行目のwire宣言と8行目の代入文を削除する。その結果、図68のモジュールワーク108−8が得られる。
次に図69の代入文削除処理124を行う。まずステップS29でループ2の処理により、図68の8行目の代入文に着目し、ステップS30でループ3の処理により、この代入文の左辺「i3_a」が使われている13行目の式に着目する。
次にステップS31で13行目の式「i3_a&i3_b」を8行目の代入文により置き換えて「b&i3_b」とする。次にステップS32で「i3_a」を使っているところが全て置換できたので、7行目のwire宣言と8行目の代入文を削除する。その結果、図70のモジュールワーク108−9が得られる。
次に図71の代入文削除処理126を行う。まずステップS33で図70の8行目の代入文に着目し、ステップS34でこの代入文の左辺の「i3_b」が使われている11行目の式に着目する。
次にステップS35で11行目の式「b&i3_b」を8行目の代入文により置き換えて「b&〜s」とする。そしてステップS36で「i3_b」を使っているところが全て置換できたので、7行目のwire宣言と8行目の代入文を削除する。その結果、図72のモジュールワーク108−10が得られる。
次に図73の代入文削除処理128を行う。まずステップS37でループ2の処理により図72の8行目の代入文に着目し、ステップS38でこの代入文の左辺「b1」が使われている13行目の式に着目する。
次にステップS39で13行目の式「b1」を8行目の代入文により置き換えて「i3_o」とする。そしてステップS40で「b1」を使っているところが全て置換できたので、6行目のwire宣言と8行目の代入文を削除する。その結果、図74のモジュールワーク108−11が得られる。
次に図75の代入文削除処理130を行う。まずステップS41でループ2の処理により図74の7行目の代入文に着目し、ステップS42でこの代入文の左辺の「i3_o」が使われている11行目の式に着目する。
次にステップS43で11行目の式「i3_o」を7行目の代入文により置き換えて「b&〜s」とする。次にステップS44で「i3_o」を使っているところが全て置換できたので、6行目のwire宣言と7行目の代入文を削除する。その結果、図76のモジュールワーク108−12が得られる。
次に図77の代入文削除処理132を行う。まずステップS45でループ2の処理により図76の7行目の代入文に着目し、ステップS46でこの代入文の左辺「i4_a」が使われている12行目の式に着目する。
次にステップS47で12行目の式「i4_a|i4_b」を7行目の代入文により置き換えて「(a&s)|i4_b」とする。次にステップS48で「i4_a」を使っているところが全て置換できたので、6行目のwire宣言と7行目の代入文を削除する。その結果、図78のモジュールワーク108−13が得られる。
次に図79の代入文削除処理134を行う。まずステップS49でループ2の処理により図78の7行目の代入文に着目し、ステップS50でループ3の処理により、この代入文の左辺「i4_b」が使われている10行目の式に着目する。
次にステップS51で10行目の式「(a&s)|i4_b」を7行目の代入文により置き換えて「(a&s)|(b&〜s)」とする。次にステップS52で「i4_b」を使っているところが全て置換できたので、6行目のwire宣言と7行目の代入文を削除する。その結果、図80のモジュールワーク108−14が得られる。
次に図81の代入文削除処理136を行う。まずステップS53でループ2の処理により図80の7行目の代入文に着目する。ステップS54でループ3の処理により図68の7行目の代入文の左辺の「o」は、input/outputなので、削除できない代入文であり、対象外とする。
次にステップS55でループ2の処理により8行目の代入文に着目し、ステップS56でループ3の処理によりこの代入文の左辺「i4_o」が使われている7行目の式に着目する。
次にステップS57で7行目の式「i4_o」を8行目の代入文により置き換えて「(a&s)|(b&〜s)」とする。最終的にステップS58で「i4_o」を使っているところが全て置換できたので、6行目のwire宣言と8行目の代入文を削除する。この結果、図82のモジュールワーク108−15が最終的に得られる。
この図82の最終的に得られたモジュールワーク108−15は、図7のRTL形式のライブラリ16の1〜7行目と同じである。この一連の処理により図6のネットリスト形式のライブラリ30の1〜13行目のモジュールMUXがRTL形式に変換されたことがわかる。
また本発明は、コンピュータで読取可能な本実施形態によるHDL記述形式変換のためのプログラムを格納した記録媒体を提供する。ここで、記録媒体とは、CD−ROM、フロッピィ(R)ディスクFD、DVDディスク,光磁気ディスク、ICカードなどの可搬型記憶媒体やコンピュータシステムの内外に備えられたハードディスクHDDなどの記憶装置のほか、回線を介してプログラムを保持するデータベース、或いは,他のコンピュータシステムPC並びにそのデータベースや、更に回線上の伝送媒体を含むものである。
なお、本発明は上記の実施形態に限定されず、その目的と利点を損なうことのない適宜の変形を含む。更に上記の実施形態に示した数値による限定は受けない。
ここで本発明の特徴をまとめて列挙すると次の付記のようになる。
(付記)

(付記1)
ハードウェア記述言語を用いてネットリスト形式で記述された論理回路をRTL形式で記述された論理回路に変換する論理回路の記述形式変換方法に於いて、
前記ネットリスト形式で記述された論理回路を読み込む論理回路読込ステップと、
前記論理回路中のインスタンスに対応するライブラリのRTL形式で記述された下位の論理回路を読み込むライブラリ読込ステップと、
前記論理回路中のインスタンスに対して前記ライブラリの階層を展開する処理を行ってRTL形式に変換するライブラリ階層展開ステップと、
前記論理回路中の代入文を置換して削除する代入文削除ステップと、
前記論理回路をRTL形式で出力する論理回路出力ステップと、
を備えたことを特徴とする論理回路の記述形式変換方法。(1)
(付記2)
付記1記載の論理回路の記述形式変換方法に於いて、前記ライブラリの論理回路がネットリスト形式で記述されている場合、前記論理回路をRTL形式に変換するライブラリ記述形式変換ステップを備えたことを特徴とする論理回路の記述形式変換方法。(2)
(付記3)
付記2記載の論理回路の記述形式変換方法に於いて、前記ライブラリ記述形式変換ステップは、
ライブラリ内のネットリスト形式で記述された論理回路を読み込む論理回路読込ステップと、
前記論理回路中のインスタンスに対してRTL形式で記述されたライブラリ内の下位の論理回路を読込む下位論理回路読込ステップと、
前記論理回路のインスタンスに対し前記下位論理回路との階層を展開する処理を行ってRTL形式に変換するライブラリ階層展開ステップと、
前記論理回路中の代入文を置換して削除する代入文削除ステップと、
前記論理回路をRTL形式で出力して前記ライブラリを書き換えるモジュール出力ステップと、
を備えたことを特徴とする論理回路の記述形式変換方法。(3)
(付記4)
付記1記載の論理回路の記述形式変換方法に於いて、前記ライブラリ階層展開ステップは、
前記論理回路内のインスタンスに対応するライブラリ内の下位論理回路を特定するライブラリ特定ステップと、
前記論理回路内のインスタンスに対して、インスタンスピンとそれに対応するライブラリ内の下位論理回路のライブラリポートの結合関係を設定する結合ステップと、
ライブラリ内の下位論理回路から入出力を除くデータタイプ宣言を抽出してそのコピーを生成する宣言コピーステップと、
ライブラリ内の下位論理回路からファンクション記述を抽出してそのコピーを生成するファンクション記述コピーステップと、
ライブラリ内の下位論理回路からタスク記述を抽出してそのコピーを生成するタスク記述コピーステップと、
ライブラリ内の下位論理回路から動作記述を抽出してそのコピーを生成する動作記述コピーステップと、
を備えたことを特徴とする論理回路の記述形式変換方法。(4)
(付記5)
付記4記載の論理回路の記述形式変換方法に於いて、前記ハードウェア記述言語がVerilog−HDLの場合、
前記結合ステップは、前記ライブラリポートが入力ポートの場合、前記インスタンスピンに対応して、
wire ライブラリポート名;
assign ライブラリポート名=インスタンスピンの式;
を生成し、
前記前記ライブラリポートが出力ポートの場合、前記インスタンスピンに対し、
wire ライブラリポート名;
assign インスタンスピンの式=ライブラリポート名;
を生成し、
前記ライブラリポート名として、前記論理回路のインスタンス名をアンダースコアで変換前のライブラリポート名と連結した名前を生成することを特徴とする論理回路の記述形式変換方法。(5)
(付記6)
付記4記載の論理回路の記述形式変換方法に於いて、前記ハードウェア記述言語がVerilog−HDLの場合、
前記宣言コピーステップは、コピー先の宣言名として、前記論理回路のインスタンス名をアンダースコアで変換前の宣言名と連結した名前を生成し、
前記ファンクション記述コピーステップは、コピー先のファンクション名として、前記論理回路のインスタンス名をアンダースコアで変換前のファンクション名と連結した名前を生成し、
前記タスク記述コピーステップは、コピー先のタスク名として、前記論理回路のインスタンス名をアンダースコアで変換前のタスク名と連結した名前を生成し、
前記インスタンス記述コピーステップは、コピー先のインスタンス名として、前記論理回路のインスタンス名をアンダースコアで変換前のインスタンス名と連結した名前を生成し、前記インスタンスピンの式の中の変数名として、モジュールのインスタンス名をアンダースコアで変換前の変数名と連結した名前を生成し、
前記動作記述コピーステップは、前記動作記述分としてライブラリ内の下位論理回路からinitia1文、always文及びassign文を抽出してそのコピーを生成することを特徴とする論理回路の記述形式変換方法。
(付記7)
付記1記載の論理回路の記述形式変換方法に於いて、前記代入文削除ステップは、代入文の左辺が他式で使われている場合、前記他式で使われている箇所を前記代入文の右辺に置き換えて前記代入文を削除することを特徴とする論理回路の記述形式変換方法。(6)
(付記8)
付記7記載の論理回路の記述形式変換方法に於いて、前記代入文削除ステップは、前記代入文の右辺で置き換えた前記他式が演算式の場合、予め定めた変換ルールに従って簡略化された演算式に変換することを特徴とする論理回路の記述形式変換方法。(7)
(付記9)
付記1記載の論理回路の記述形式変換方法に於いて、前記代入文削除ステップは、第1代入文の左辺に遅延が付加され、前記第1代入文の左辺のみが第2代入文の右辺に使われている場合、前記第1代入文の遅延を前記第2代入文に付加すると共に前記第2代入文の右辺で使われている箇所を第1代入文の右辺に置き換えて前記第1代入文を削除することを特徴とする論理回路の記述形式変換方法。(8)
(付記10)
コンピュータに、
ハードウェア記述言語を用いてネットリスト形式で記述されたれた論理回路を読み込む論理回路読込ステップと、
前記論理回路中のインスタンスに対応するライブラリのRTL形式で記述された下位の論理回路を読み込むライブラリ読込ステップと、
前記論理回路中のインスタンスに対して前記ライブラリの階層を展開する処理を行ってRTL形式に変換するライブラリ階層展開ステップと、
前記論理回路中の代入文を置換して削除する代入文削除ステップと、
前記論理回路をRTL形式で出力する論理回路出力ステップと、
を実行することを特徴とするプログラム。(9)
(付記11)
付記10記載のプログラムに於いて、前記ライブラリの論理回路がネットリスト形式で記述されている場合、前記論理回路をRTL形式に変換するライブラリ記述形式変換ステップを備え、
前記ライブラリ記述形式変換ステップは、
ライブラリ内のネットリスト形式で記述された論理回路を読み込む論理回路読込ステップと、
前記論理回路中のインスタンスに対してRTL形式で記述されたライブラリ内の下位の論理回路を読込む下位論理回路読込ステップと、
前記論理回路のインスタンスに対し前記下位論理回路との階層を展開する処理を行ってRTL形式に変換するライブラリ階層展開ステップと、
前記論理回路中の代入文を置換して削除する代入文削除ステップと、
前記論理回路をRTL形式で出力して前記ライブラリを書き換えるモジュール出力ステップと、
を備えたことを特徴とするプログラム。
(付記12)
付記10記載のプログラムに於いて、前記ライブラリ階層展開ステップは、
前記論理回路内のインスタンスに対応するライブラリ内の下位論理回路を特定するライブラリ特定ステップと、
前記論理回路内のインスタンスに対して、インスタンスピンとそれに対応するライブラリ内の下位論理回路のライブラリポートの結合関係を設定する結合ステップと、
ライブラリ内の下位論理回路から入出力を除くデータタイプ宣言を抽出してそのコピーを生成する宣言コピーステップと、
ライブラリ内の下位論理回路からファンクション記述を抽出してそのコピーを生成するファンクション記述コピーステップと、
ライブラリ内の下位論理回路からタスク記述を抽出してそのコピーを生成するタスク記述コピーステップと、
ライブラリ内の下位論理回路から動作記述を抽出してそのコピーを生成する動作記述コピーステップと、
を備えたことを特徴とするプログラム。
(付記13)
付記12記載のプログラムに於いて、前記ハードウェア記述言語がVerilog−HDLの場合、
前記結合ステップは、前記ライブラリポートが入力ポートの場合、前記インスタンスピンに対応して、
wire ライブラリポート名;
assign ライブラリポート名=インスタンスピンの式;
を生成し、
前記前記ライブラリポートが出力ポートの場合、前記インスタンスピンに対し、
wire ライブラリポート名;
assign インスタンスピンの式=ライブラリポート名;
を生成し、
前記ライブラリポート名として、前記論理回路のインスタンス名をアンダースコアで変換前のライブラリポート名と連結した名前を生成することを特徴とするプログラム。
(付記14)
付記12記載のプログラムに於いて、前記ハードウェア記述言語がVerilog−HDLの場合、
前記宣言コピーステップは、コピー先の宣言名として、前記論理回路のインスタンス名をアンダースコアで変換前の宣言名と連結した名前を生成し、
前記ファンクション記述コピーステップは、コピー先のファンクション名として、前記論理回路のインスタンス名をアンダースコアで変換前のファンクション名と連結した名前を生成し、
前記タスクコピー記述ステップは、コピー先のタスク名として、前記論理回路のインスタンス名をアンダースコアで変換前のタスク名と連結した名前を生成し、
前記インスタンス記述コピーステップは、コピー先のインスタンス名として、前記論理回路のインスタンス名をアンダースコアで変換前のインスタンス名と連結した名前を生成し、前記インスタンスピンの式の中の変数名として、モジュールのインスタンス名をアンダースコアで変換前の変数名と連結した名前を生成し、
前記動作記述コピーステップは、前記動作記述分としてライブラリ内の下位論理回路からinitia1文、always文及びassign文を抽出してそのコピーを生成することを特徴とするプログラム。
(付記15)
付記10記載のプログラムに於いて、前記代入文削除ステップは、代入文の左辺が他式で使われている場合、前記他式で使われている箇所を前記代入文の右辺に置き換えて前記代入文を削除することを特徴とするプログラム。
(付記16)(代入文演算式の簡略化)
付記15記載のプログラムに於いて、前記代入文削除ステップは、前記代入文の右辺で置き換えた前記他式が演算式の場合、予め定めた変換ルールに従って簡略化された演算式に変換することを特徴とするプログラム。
(付記17)
付記10記載のプログラムに於いて、前記代入文削除ステップは、第1代入文の左辺に遅延が付加され、前記第1代入文の左辺のみが第2代入文の右辺に使われている場合、前記第1代入文の遅延を前記第2代入文に付加すると共に前記第2代入文の右辺を第1代入文の右辺で使われている箇所に置き換えて前記第1代入文を削除することを特徴とするプログラム。
(付記18)
ハードウェア記述言語を用いてネットリスト形式で記述された論理回路をRTL形式で記述された論理回路に変換する論理回路の記述形式変換装置に於いて、
前記ネットリスト形式で記述された論理回路を読み込む論理回路読込部と、
前記論理回路中のインスタンスに対応するライブラリのRTL形式で記述された下位の論理回路を読み込むライブラリ読込部と、
前記論理回路中のインスタンスに対して前記ライブラリの階層を展開する処理を行ってRTL形式に変換するライブラリ階層展開部と、
前記論理回路中の代入文を置換して削除する代入文削除部と、
前記論理回路をRTL形式で出力する論理回路出力部と、
を備えたことを特徴とする論理回路の記述形式変換装置。(10)
(付記19)
付記18記載の論理回路の記述形式変換装置に於いて、前記ライブラリの論理回路がネットリスト形式で記述されている場合、前記論理回路をRTL形式に変換するライブラリ記述形式変換部を備え、
前記ライブラリ記述形式変換部は、
ライブラリ内のネットリスト形式で記述された論理回路を読み込む論理回路読込部と、
前記論理回路中のインスタンスに対してRTL形式で記述されたライブラリ内の下位の論理回路を読込む下位論理回路読込部と、
前記論理回路のインスタンスに対し前記下位論理回路との階層を展開する処理を行ってRTL形式に変換するライブラリ階層展開部と、
前記論理回路中の代入文を置換して削除する代入文削除部と、
前記論理回路をRTL形式で出力して前記ライブラリを書き換えるモジュール出力部と、
を備えたことを特徴とする論理回路の記述形式変換装置。
(付記20)
付記18記載の論理回路の記述形式変換装置に於いて、前記ライブラリ階層展開部は、
前記論理回路内のインスタンスに対応するライブラリ内の下位論理回路を特定するライブラリ特定部と、
前記論理回路内のインスタンスに対して、インスタンスピンとそれに対応するライブラリ内の下位論理回路のライブラリポートの結合関係を設定する結合部と、
ライブラリ内の下位論理回路から入出力を除くデータタイプ宣言を抽出してそのコピーを生成する宣言コピー部と、
ライブラリ内の下位論理回路からファンクション記述を抽出してそのコピーを生成するファンクション記述コピー部と、
ライブラリ内の下位論理回路からタスク記述を抽出してそのコピーを生成するタスク記述コピー部と、
ライブラリ内の下位論理回路から動作記述を抽出してそのコピーを生成する動作記述コピー部と、
を備えたことを特徴とする論理回路の記述形式変換装置。
(付記21)
付記18記載の論理回路の記述形式変換装置に於いて、前記代入文削除部は、
代入文の左辺が他式で使われている場合、前記他式で使われている箇所を前記代入文の右辺に置き換えて前記代入文を削除し、
前記代入文の右辺で置き換えた前記他式が演算式の場合、予め定めた変換ルールに従って簡略化された演算式に変換し、
第1代入文の左辺に遅延が付加され、前記第1代入文の左辺のみが第2代入文の右辺に使われている場合、前記第1代入文の遅延を前記第2代入文に付加すると共に前記第2代入文の右辺で使われている箇所を第1代入文の右辺に置き換えて前記第1代入文を削除することを特徴とする論理回路の記述形式変換装置。
本発明による論理回路記述形式変換装置の実施形態を示した機能構成のブロック図 ライブラリ記述形式変換装置と組合わせた本実施形態のブロック図 ライブラリ記述形式変換装置の実施形態を示した機能構成のブロック図 本実施形態の機能を実現するプログラムを実行するコンピュータのハードウェア環境のブロック図 変換対象とするネットリスト形式HDLで記述された論理回路の説明図 ネットリスト形式HDLで記述されたライブラリの説明図 本実施形態によりRTL形式HDLに変換されたライブラリの説明図 本実施形態によりRTL形式HDLに変換された論理回路の説明図 図5のHDLから描画した論理回路の回路図 図1の実施形態による論理回路記述形式変換処理のフローチャート 図2のライブラリの記述形式変換を含む論理回路記述形式変換処理のフローチャート 図11のライブラリ記述形式変換処理の詳細を示したフローチャート 図10のステップS3のライブラリ展開処理を示したフローチャート 図13のステップS5におけるインスタンスピンとトライブラリポートの結合処理の詳細を示したフローチャート インスタンスピンとライブラリポートの結合処理の具体例を示した説明図 ライブラリポートがレジスタと宣言されている場合の結合処理の具体例を示した説明図 図13のステップS6における宣言コピー処理の詳細を示したフローチャート 宣言コピー処理の具体例を示した説明図 図13のステップS7におけるファンクションコピー処理の詳細を示したフローチャート ファンクションコピー処理の具体例を示した説明図 図13のステップS7におけるタスクコピー処理の詳細を示したフローチャート 図13のステップS8におけるインスタンスコピー処理の詳細を示したフローチャート インスタンスコピー処理の具体例を示した説明図 図13のステップS9における動作記述コピー処理の詳細を示したフローチャート 図10のステップS4の代入文削除処理を示したフローチャート 図25に続く代入文削除処理のフローチャート 代入文削除処理の具体例を示した説明図 上位式を変換する変換ルールの説明図 代入文の置き換えで生成した上位式の変換を伴う代入文削除処理の説明図 遅延が付加された代入文削除処理の具体例を示した説明図 図5のネットリスト形式の論理回路におけるインスタンスMUXi1とDFFi2をライブラリ階層展開した説明図 図31のライブラリ階層展開で生成されたモジュールワークの説明図 図32を対象とした代入文削除処理の説明図 図33の処理で生成されたモジュールワークの説明図 図34を対象とした代入文削除処理の説明図 図35の処理で生成されたモジュールワークの説明図 図36を対象とした代入文削除処理の説明図 図37の処理で生成されたモジュールワークの説明図 図38を対象とした代入文削除処理の説明図 図39の処理で生成されたモジュールワークの説明図 図40を対象とした代入文削除処理の説明図 図41のライブラリ階層展開で生成されたモジュールワークの説明図 図42を対象とした代入文削除処理の説明図 図43の処理で生成されたモジュールワークの説明図 図44を対象とした代入文削除処理の説明図 図45の処理で生成されたモジュールワークの説明図 図46を対象とした代入文削除処理の説明図 図47の処理で生成されたモジュールワークの説明図 図48を対象とした代入文削除処理の説明図 図49の処理で生成されたモジュールワークの説明図 図50を対象とした代入文削除処理の説明図 図51の処理で最終的にRTL形式に変換されたモジュールワークの説明図 図6のモジュールMUXのライブラリ階層展開の説明図 図53のライブラリ階層展開で生成されたモジュールワークの説明図 図54を対象とした代入文削除処理の説明図 図55の処理で生成されたモジュールワークの説明図 図56を対象とした代入文削除処理の説明図 図57の処理で生成されたモジュールワークの説明図 図58を対象とした代入文削除処理の説明図 図59の処理で生成されたモジュールワークの説明図 図60を対象とした代入文削除処理の説明図 図61の処理で生成されたモジュールワークの説明図 図62を対象とした代入文削除処理の説明図 図63の処理で生成されたモジュールワークの説明図 図64を対象とした代入文削除処理の説明図 図65の処理で生成されたモジュールワークの説明図 図66を対象とした代入文削除処理の説明図 図67の処理で生成されたモジュールワークの説明図 図68を対象とした代入文削除処理の説明図 図69の処理で生成されたモジュールワークの説明図 図70を対象とした代入文削除処理の説明図 図71の処理で生成されたモジュールワークの説明図 図72を対象とした代入文削除処理の説明図 図73の処理で生成されたモジュールワークの説明図 図74を対象とした代入文削除処理の説明図 図75の処理で生成されたモジュールワークの説明図 図76を対象とした代入文削除処理の説明図 図77の処理で生成されたモジュールワークの説明図 図78を対象とした代入文削除処理の説明図 図79の処理で生成されたモジュールワークの説明図 図80を対象とした代入文削除処理の説明図 図81の処理で最終的にRTL形式に変換されたモジュールワークの説明図
符号の説明
10:論理回路記述形式変換装置
12:ライブラリ記述形式変換装置
14,28:論理回路
16,30:ライブラリ
18,18−1:論理回路読込部
20,20−1:論理回路記憶部
22,22−1:ライブラリ階層展開部
24,24−1:代入文削除部
26,26−1:論理回路出力部
34:CPU
36:バス
38:RAM
40:ROM
42:ハードディスクドライブ
44:デバイスインタフェース
46:キーボード
48:マウス
50:ディスプレイ
52:ネットワークアダプタ
60−1〜60−12,62:階層展開ワーク
64:変換ルール
70:記号一覧
72:MUXi1階層展開
74:DFFi2階層展開
76−1〜76−11,108−1〜108−15 :モジュールワーク
78〜96,110〜136:代入文削除処理
100:NOTi1ライブラリ階層展開
102:ANDi2ライブラリ階層展開
104:ANDi3ライブラリ階層展開
106:ORi4ライブラリ階層展開

Claims (8)

  1. ハードウェア記述言語を用いてネットリスト形式で記述された論理回路をRTL形式で記述された論理回路に変換する論理回路の記述形式変換方法に於いて、
    コンピュータ
    前記ネットリスト形式で記述された論理回路を読み込む論理回路読込ステップと、
    前記論理回路中のインスタンスに対応するライブラリのRTL形式で記述された下位の論理回路を読み込むライブラリ読込ステップと、
    前記ライブラリ読込ステップで読み込んだライブラリのRTL形式で記述された下位の論理回路の情報を用いて、前記論理回路中のインスタンスに対して前記ライブラリの階層を展開する処理を行ってRTL形式に変換するライブラリ階層展開ステップと、
    前記ライブラリ階層展開ステップでRTL形式に変換した前記論理回路中の置換可能な代入文を置換して削除する代入文削除ステップと、
    前記代入文削除ステップで置換可能な代入文を置換して削除した、RTL形式に変換された前記論理回路を出力する論理回路出力ステップと、
    を実行
    前記ライブラリ階層展開ステップは、
    前記論理回路内のインスタンスに対応するライブラリ内の下位論理回路を特定するライブラリ特定ステップと、
    前記論理回路内のインスタンスに対して、インスタンスピンとそれに対応するライブラリ内の下位論理回路のライブラリポートの結合関係を設定する結合ステップと、
    ライブラリ内の下位論理回路から入出力を除くデータタイプ宣言を抽出してそのコピーを生成する宣言コピーステップと、
    ライブラリ内の下位論理回路からファンクション記述を抽出してそのコピーを生成するファンクション記述コピーステップと、
    ライブラリ内の下位論理回路からタスク記述を抽出してそのコピーを生成するタスク記述コピーステップと、
    ライブラリ内の下位論理回路から動作記述を抽出してそのコピーを生成する動作記述コピーステップと、
    を備え、
    ハードウェア記述言語がVerilog−HDLの場合、
    前記結合ステップは、前記ライブラリポートが入力ポートの場合、前記インスタンスピンに対応して、
    wire ライブラリポート名;
    assign ライブラリポート名=インスタンスピンの式;
    を生成し、
    前記ライブラリポートが出力ポートの場合、前記インスタンスピンに対し、
    wire ライブラリポート名;
    assign インスタンスピンの式=ライブラリポート名;
    を生成し、
    前記ライブラリポート名として、前記論理回路のインスタンス名をアンダースコアで変換前のライブラリポート名と連結した名前を生成することを特徴とする論理回路の記述形式変換方法。
  2. 請求項1記載の論理回路の記述形式変換方法に於いて、前記ライブラリの論理回路がネットリスト形式で記述されている場合、前記論理回路をRTL形式に変換するライブラリ記述形式変換ステップを備えたことを特徴とする論理回路の記述形式変換方法。
  3. 請求項2記載の論理回路の記述形式変換方法に於いて、前記ライブラリ記述形式変換ステップは、
    ライブラリ内のネットリスト形式で記述された論理回路を読み込む論理回路読込ステップと、
    前記論理回路中のインスタンスに対してRTL形式で記述されたライブラリ内の下位の論理回路を読込む下位論理回路読込ステップと、
    前記論理回路のインスタンスに対し前記下位論理回路との階層を展開する処理を行ってRTL形式に変換するライブラリ階層展開ステップと、
    前記論理回路中の代入文を置換して削除する代入文削除ステップと、
    前記論理回路をRTL形式で出力して前記ライブラリを書き換えるモジュール出力ステップと、
    を備えたことを特徴とする論理回路の記述形式変換方法。
  4. 請求項1記載の論理回路の記述形式変換方法に於いて、前記代入文削除ステップは、代入文の左辺が他式で使われている場合、前記他式で使われている箇所を前記代入文の右辺に置き換えて前記代入文を削除することを特徴とする論理回路の記述形式変換方法。
  5. 請求項記載の論理回路の記述形式変換方法に於いて、前記代入文削除ステップは、前記代入文の右辺で置き換えた前記他式が演算式の場合、予め定めた変換ルールに従って簡略化された演算式に変換することを特徴とする論理回路の記述形式変換方法。
  6. ハードウェア記述言語を用いてネットリスト形式で記述された論理回路をRTL形式で記述された論理回路に変換する論理回路の記述形式変換方法に於いて、
    コンピュータが、
    前記ネットリスト形式で記述された論理回路を読み込む論理回路読込ステップと、
    前記論理回路中のインスタンスに対応するライブラリのRTL形式で記述された下位の論理回路を読み込むライブラリ読込ステップと、
    前記ライブラリ読込ステップで読み込んだライブラリのRTL形式で記述された下位の論理回路の情報を用いて、前記論理回路中のインスタンスに対して前記ライブラリの階層を展開する処理を行ってRTL形式に変換するライブラリ階層展開ステップと、
    前記ライブラリ階層展開ステップでRTL形式に変換した前記論理回路中の置換可能な代入文を置換して削除する代入文削除ステップと、
    前記代入文削除ステップで置換可能な代入文を置換して削除した、RTL形式に変換された前記論理回路を出力する論理回路出力ステップと、
    実行し
    前記代入文削除ステップは、第1代入文の左辺に遅延が付加され、前記第1代入文の左辺のみが第2代入文の右辺に使われている場合、前記第1代入文の遅延を前記第2代入文に付加すると共に前記第2代入文の右辺で使われている箇所を第1代入文の右辺に置き換えて前記第1代入文を削除することを特徴とする論理回路の記述形式変換方法。
  7. コンピュータに、
    前記ネットリスト形式で記述された論理回路を読み込む論理回路読込ステップと、
    前記論理回路中のインスタンスに対応するライブラリのRTL形式で記述された下位の論理回路を読み込むライブラリ読込ステップと、
    前記ライブラリ読込ステップで読み込んだライブラリのRTL形式で記述された下位の論理回路の情報を用いて、前記論理回路中のインスタンスに対して前記ライブラリの階層を展開する処理を行ってRTL形式に変換するライブラリ階層展開ステップと、
    前記ライブラリ階層展開ステップでRTL形式に変換した前記論理回路中の置換可能な代入文を置換して削除する代入文削除ステップと、
    前記代入文削除ステップで置換可能な代入文を置換して削除した、RTL形式に変換された前記論理回路を出力する論理回路出力ステップと、
    を実行させ、
    前記ライブラリ階層展開ステップは、
    前記論理回路内のインスタンスに対応するライブラリ内の下位論理回路を特定するライブラリ特定ステップと、
    前記論理回路内のインスタンスに対して、インスタンスピンとそれに対応するライブラリ内の下位論理回路のライブラリポートの結合関係を設定する結合ステップと、
    ライブラリ内の下位論理回路から入出力を除くデータタイプ宣言を抽出してそのコピーを生成する宣言コピーステップと、
    ライブラリ内の下位論理回路からファンクション記述を抽出してそのコピーを生成するファンクション記述コピーステップと、
    ライブラリ内の下位論理回路からタスク記述を抽出してそのコピーを生成するタスク記述コピーステップと、
    ライブラリ内の下位論理回路から動作記述を抽出してそのコピーを生成する動作記述コピーステップと、
    を備え、
    前記ハードウェア記述言語がVerilog−HDLの場合、
    前記結合ステップは、前記ライブラリポートが入力ポートの場合、前記インスタンスピンに対応して、
    wire ライブラリポート名;
    assign ライブラリポート名=インスタンスピンの式;
    を生成し、
    前記ライブラリポートが出力ポートの場合、前記インスタンスピンに対し、
    wire ライブラリポート名;
    assign インスタンスピンの式=ライブラリポート名;
    を生成し、
    前記ライブラリポート名として、前記論理回路のインスタンス名をアンダースコアで変換前のライブラリポート名と連結した名前を生成することを特徴とするプログラム。
  8. ハードウェア記述言語を用いてネットリスト形式で記述された論理回路をRTL形式で記述された論理回路に変換する論理回路の記述形式変換装置に於いて、
    前記ネットリスト形式で記述された論理回路を読み込む論理回路読込部と、
    前記論理回路中のインスタンスに対応するライブラリのRTL形式で記述された下位の論理回路を読み込むライブラリ読込部と、
    前記ライブラリ読込で読み込んだライブラリのRTL形式で記述された下位の論理回路の情報を用いて、前記論理回路中のインスタンスに対して前記ライブラリの階層を展開する処理を行ってRTL形式に変換するライブラリ階層展開部と、
    前記ライブラリ階層展開でRTL形式に変換した前記論理回路中の置換可能な代入文を置換して削除する代入文削除部と、
    前記代入文削除で置換可能な代入文を置換して削除した、RTL形式に変換された前記論理回路を出力する論理回路出力部と、
    を備え、
    前記ライブラリ階層展開部は、
    前記論理回路内のインスタンスに対応するライブラリ内の下位論理回路を特定するライブラリ特定部と、
    前記論理回路内のインスタンスに対して、インスタンスピンとそれに対応するライブラリ内の下位論理回路のライブラリポートの結合関係を設定する結合部と、
    ライブラリ内の下位論理回路から入出力を除くデータタイプ宣言を抽出してそのコピーを生成する宣言コピー部と、
    ライブラリ内の下位論理回路からファンクション記述を抽出してそのコピーを生成するファンクション記述コピー部と、
    ライブラリ内の下位論理回路からタスク記述を抽出してそのコピーを生成するタスク記述コピー部と、
    ライブラリ内の下位論理回路から動作記述を抽出してそのコピーを生成する動作記述コピー部と、
    を備え、
    前記ハードウェア記述言語がVerilog−HDLの場合、
    前記結合部は、前記ライブラリポートが入力ポートの場合、前記インスタンスピンに対応して、
    wire ライブラリポート名;
    assign ライブラリポート名=インスタンスピンの式;
    を生成し、
    前記ライブラリポートが出力ポートの場合、前記インスタンスピンに対し、
    wire ライブラリポート名;
    assign インスタンスピンの式=ライブラリポート名;
    を生成し、
    前記ライブラリポート名として、前記論理回路のインスタンス名をアンダースコアで変換前のライブラリポート名と連結した名前を生成することを特徴とする論理回路の記述形式変換装置。
JP2007172070A 2006-06-29 2007-06-29 論理回路の記述形式変換方法、プログラム及び装置 Expired - Fee Related JP5115056B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2007172070A JP5115056B2 (ja) 2006-06-29 2007-06-29 論理回路の記述形式変換方法、プログラム及び装置

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
JP2006179015 2006-06-29
JP2006179015 2006-06-29
JP2007172070A JP5115056B2 (ja) 2006-06-29 2007-06-29 論理回路の記述形式変換方法、プログラム及び装置

Publications (2)

Publication Number Publication Date
JP2008033919A JP2008033919A (ja) 2008-02-14
JP5115056B2 true JP5115056B2 (ja) 2013-01-09

Family

ID=39123211

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2007172070A Expired - Fee Related JP5115056B2 (ja) 2006-06-29 2007-06-29 論理回路の記述形式変換方法、プログラム及び装置

Country Status (1)

Country Link
JP (1) JP5115056B2 (ja)

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0480876A (ja) * 1990-07-23 1992-03-13 Hitachi Ltd シミュレーション方法
JPH07129632A (ja) * 1993-11-08 1995-05-19 Hitachi Ltd ハイレベルモデル自動生成方法
JPH09311882A (ja) * 1996-05-23 1997-12-02 Mitsubishi Electric Corp 論理回路検証支援装置
JPH10105579A (ja) * 1996-09-30 1998-04-24 Toshiba Corp 論理シミュレーション方法およびシステム
JPH1185832A (ja) * 1997-09-16 1999-03-30 Toshiba Corp 回路変換方法および回路設計支援装置および記録媒体
JP2002288258A (ja) * 2001-03-23 2002-10-04 Ricoh Co Ltd 半導体集積回路シミュレーション方法及び装置、並びに、半導体集積回路シミュレーション用セルライブラリ生成方法及び装置

Also Published As

Publication number Publication date
JP2008033919A (ja) 2008-02-14

Similar Documents

Publication Publication Date Title
US7958470B1 (en) Method and system for false path analysis
JP2011512602A (ja) 同期から非同期への論理変換
JP2001142937A (ja) 回路のスケジューリング正当性チェック方法及びスケジュール検証方法
Amarú et al. SAT-sweeping enhanced for logic synthesis
JP4147842B2 (ja) 論理検証システム及び方法、論理コーン抽出装置及び方法、論理検証及び論理コーン抽出プログラム
WO1999009497A1 (fr) Procede d'extraction de caracteristiques de synchronisation de circuits a transistors, support de stockage stockant une bibliotheque de caracteristiques de synchronisation, procede de conception de lsi et procede d'extraction par grille
CN101395609B (zh) 用于保护eda工具设计视图中的信息的方法和系统
US12073159B2 (en) Computing device and method for detecting clock domain crossing violation in design of memory device
US10643012B1 (en) Concurrent formal verification of logic synthesis
JP4492803B2 (ja) 動作合成装置及びプログラム
US10430535B2 (en) Verification support program medium, verification support method, and information processing device for verification of a circuit
JP5115003B2 (ja) 論理設計支援システム及びプログラム
US7472371B2 (en) Description style conversion method, program, and system of logic circuit
CN113919256A (zh) 一种布尔可满足性验证方法、系统、cnf生成方法及存储装置
JP5115056B2 (ja) 論理回路の記述形式変換方法、プログラム及び装置
JP2010257003A (ja) 論理等価性検証システム、論理等価性検証方法、半導体集積回路の製造方法、制御プログラムおよび可読記憶媒体
JP2008123056A (ja) 論理回路のタイミング制約生成システムおよび論理回路のタイミング制約生成方法、制御プログラム、可読記録媒体
Singh et al. Cross-correlation of specification and rtl for soft ip analysis
Plassan et al. Improving the efficiency of formal verification: the case of clock-domain crossings
US6877140B1 (en) Method and system for generating a schematic representing bus structures
JP5146369B2 (ja) 回路設計プログラム、回路設計方法および回路設計装置
JP2009237913A (ja) プロパティ抽出装置及び方法
JP2845154B2 (ja) 論理シミュレーション用モデルの作成方法
Barbhaya et al. An Open-Source Static Timing Analysis EDA Tool for Digital System Design
JP2000137745A (ja) 論理回路のタイミング仕様入力システムおよび論理回路のタイミング仕様入力方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20100316

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20111115

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20111122

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120123

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20120321

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120621

A911 Transfer to examiner for re-examination before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20120628

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20120828

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120830

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

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

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

Year of fee payment: 3

LAPS Cancellation because of no payment of annual fees