(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2022049470
(43)【公開日】2022-03-29
(54)【発明の名称】論理シミュレーション検証システム、論理シミュレーション検証方法、およびプログラム
(51)【国際特許分類】
G06F 30/3312 20200101AFI20220322BHJP
G06F 30/33 20200101ALI20220322BHJP
【FI】
G06F17/50 668E
G06F17/50 668U
G06F17/50 672A
【審査請求】未請求
【請求項の数】6
【出願形態】OL
(21)【出願番号】P 2020155694
(22)【出願日】2020-09-16
(71)【出願人】
【識別番号】318010018
【氏名又は名称】キオクシア株式会社
(74)【代理人】
【識別番号】100083806
【弁理士】
【氏名又は名称】三好 秀和
(74)【代理人】
【識別番号】100101247
【弁理士】
【氏名又は名称】高橋 俊一
(74)【代理人】
【識別番号】100095500
【弁理士】
【氏名又は名称】伊藤 正和
(74)【代理人】
【識別番号】100098327
【弁理士】
【氏名又は名称】高松 俊雄
(72)【発明者】
【氏名】坂本 敏行
【テーマコード(参考)】
5B046
5B146
【Fターム(参考)】
5B046AA08
5B046BA02
5B046GA01
5B046JA01
5B046JA05
5B046KA05
5B146AA22
5B146DL08
5B146GG04
5B146GG12
5B146GQ01
(57)【要約】
【課題】短時間に、論理シミュレータ毎に同じ論理シミュレーション結果を提供する。
【解決手段】論理シミュレーション検証システムは、信号の変化となる基準信号に対して、ライブラリ、回路記述、およびテストベンチに記述する信号の変化を検証する論理シミュレーション検証システムであって、基準信号と基準信号の変化情報とを指定する変化タイミング指定部と、変数に代入される第1の信号が変化する可能性のある第1の時刻を求める変化可能性時間計算部と、変数が参照される第2の信号が参照される可能性のある第2の時刻を求める参照可能性時間計算部と、異なった回路間の第1の信号が同じ第1の時刻を比較して第1の時刻が一致するかを判断する変化可能性時間判定部と、異なった回路間の一方の第1の信号と他方の第2の信号が同じで第1の時刻と第2の時刻が一致するかを判断する変化および参照可能性時間判定部とを備える。
【選択図】
図2
【特許請求の範囲】
【請求項1】
信号の変化となる基準信号に対して、ライブラリ、回路記述、およびテストベンチに記述する信号の変化を検証する論理シミュレーション検証システムであって、
前記基準信号と前記基準信号の変化情報とを指定する変化タイミング指定部と、
前記基準信号と前記基準信号の変化に対して、前記ライブラリ、回路記述、およびテストベンチに記述する変数に代入される第1の信号が変化する可能性のある第1の時刻を求める変化可能性時間計算部と、
前記基準信号と前記基準信号の変化に対して、前記ライブラリ、回路記述、およびテストベンチに記述する変数が参照される第2の信号が参照される可能性のある第2の時刻を求める参照可能性時間計算部と、
異なった回路間の前記第1の信号が同じ前記第1の時刻を比較して前記第1の時刻が一致するかを判断する変化可能性時間判定部と、
異なった前記回路間の一方の前記第1の信号と他方の前記第2の信号が同じで前記第1の時刻と前記第2の時刻が一致するかを判断する変化および参照可能性時間判定部と、
を備える論理シミュレーション検証システム。
【請求項2】
前記変化可能性時間計算部は、前記基準信号の変化の周期が複数ある場合、前記複数の変化の周期の最小公倍数を求め、基準信号の初期値から前記最小公倍数までの時刻に対して、前記第1の時刻を計算し、
前記参照可能性時間計算部は、基準信号の初期値から前記最小公倍数までの時刻に対して、前記第2の時刻を計算する、請求項1に記載の論理シミュレーション検証システム。
【請求項3】
前記変化タイミング指定部が、前記基準信号の周期を持たない場合、前記基準信号によって前記第1の信号と前記第2の信号が同時に変化した状態を想定することで電源が入った状態の信号の競合状態を確認することができる、
請求項1に記載の論理シミュレーション検証システム。
【請求項4】
前記変化タイミング指定部が、指定したタイミング制約条件の前記基準信号および前記基準信号の変化情報と、前記指定した条件の前記基準信号および前記基準信号の変化情報によって論理シミュレーションした結果情報とに基づいて、前記指定した条件の前記基準信号および前記基準信号の変化情報が論理シミュレーションで正しいかを確認する、請求項1に記載の論理シミュレーション検証システム。
【請求項5】
記憶媒体に格納されているタイミング情報格納部の情報に基づいて、変化の基準になる基準信号と前記基準信号の変化情報とを指定し、
前記記憶媒体に格納されている入力情報データ格納部の情報に基づいて、ライブラリ、回路記述、およびテストベンチに記述する変数に代入される第1の信号が前記基準信号と前記基準信号の変化に対して変化する可能性のある第1の時刻を求め、
前記記憶媒体に格納されている入力情報データ格納部の情報に基づいて、ライブラリ、回路記述、およびテストベンチに記述する変数が参照される第2の信号が変化の基準になる基準信号と前記基準信号の変化に対して参照する可能性のある第2の時刻を求め、
異なった回路間の前記第1の信号が同じで前記第1の時刻を比較して前記第1の時刻が一致するかを判断し、メッセージ格納部にメッセージを出力し、
異なった前記回路間の一方の前記第1の信号と他方の前記第2の信号が同じで前記第1の時刻と前記第2の時刻が一致するかを判断し、メッセージ格納部に前記メッセージを出力する、論理シミュレーション検証方法。
【請求項6】
論理シミュレーション検証システムに用いられるコンピュータのプログラムであって、
記憶媒体に格納されているタイミング情報格納部の情報に基づいて、基準信号と前記基準信号の変化情報とを指定すること、
前記記憶媒体に格納されている入力情報データ格納部の情報に基づいて、ライブラリ、回路記述、およびテストベンチに記述する変数に代入される第1の信号が前記基準信号と前記基準信号の変化に対して変化する可能性のある第1の時刻を求めること、
前記記憶媒体に格納されている入力情報データ格納部の情報に基づいて、ライブラリ、回路記述、およびテストベンチに記述する変数が参照される第2の信号が前記基準信号と前記基準信号の変化に対して参照される可能性のある第2の時刻を求めること、
異なった回路間の前記第1の信号が同じで前記第1の時刻を比較して前記第1の時刻が一致するかを判断し、メッセージ格納部にメッセージを出力すること、
異なった前記回路間の一方の前記第1の信号と他方の前記第2の信号が同じで前記第1の時刻と前記第2の時刻が一致するかを判断し、メッセージ格納部に前記メッセージを出力すること、を前記コンピュータに実行させる、プログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明の実施形態は、論理シミュレーション検証システム、論理シミュレーション検証方法、およびプログラムに関する。
【背景技術】
【0002】
論理シミュレーションにおいては、Verilog―HDL言語で記述されたライブラリ、回路記述、およびテストベンチファイルで記述された入力情報データで論理シミュレータを実行する。また、各信号の競合状態を回避するため、論理シミュレータが各信号の競合状態が発生していないか解析することがある。
【先行技術文献】
【特許文献】
【0003】
【発明の概要】
【発明が解決しようとする課題】
【0004】
実施形態が解決しようとする課題は、短時間に、論理シミュレータ毎に同じ論理シミュレーション結果を提供することにある。
【課題を解決するための手段】
【0005】
実施形態に係る論理シミュレーション検証システムは、信号の変化となる基準信号に対して、ライブラリ、回路記述、およびテストベンチに記述する信号の変化を検証する論理シミュレーション検証システムであって、基準信号と基準信号の変化情報とを指定する変化タイミング指定部と、基準信号と基準信号の変化に対して、ライブラリ、回路記述、およびテストベンチに記述する変数に代入される第1の信号が変化する可能性のある第1の時刻を求める変化可能性時間計算部と、基準信号と基準信号の変化に対して、ライブラリ、回路記述、およびテストベンチに記述する変数が参照される第2の信号が参照される可能性のある第2の時刻を求める参照可能性時間計算部と、異なった回路間の第1の信号が同じ第1の時刻を比較して第1の時刻が一致するかを判断する変化可能性時間判定部と、異なった回路間の一方の第1の信号と他方の第2の信号が同じで第1の時刻と第2の時刻が一致するかを判断する変化および参照可能性時間判定部と、を備える論理シミュレーション検証システム。
【図面の簡単な説明】
【0006】
【
図1】実施形態に係る論理シミュレーション検証システムの構成を示す模式図である。
【
図2】実施形態に係る論理シミュレーション検証システムのサーバ、および記憶媒体の詳細な機能ブロック構成図である。
【
図3】実施形態に係るタイミング情報格納部に格納されている信号と信号の変化情報をSDC(Synopsys Design Constraint Format)によって表現した記述例である。
【
図4】Verilog―HDL言語で記述されたライブラリのセル記述例である。
【
図5】複数の回路で代入される信号が変化する可能性がある具体的なライブラリのセル記述例である。
【
図6】実施形態に係る論理シミュレーション検証システムを用いたシステムのブロック図である。
【
図7】実施形態に係る論理シミュレーション検証システムの動作フロー図である。
【
図8】
図4のライブラリのセル記述の修正例である。
【
図9】周波数の基準信号をSDCによって表現した記述例である。
【
図10】ライブラリのセルの例に対して周期を持たない基準信号の変化タイミングをSDCによって表現した記述例である。
【
図11】テストベンチを記述例に対して基準信号の変化タイミングをSDCによって表現した記述例である。
【
図12】begin-endの回路ブロック中で変化可能性時間および参照可能性時時間が変わるテストベンチの記述例である。
【
図13】テストベンチを記述例に対して基準信号の変化タイミングをSDCによって表現した記述例である。
【
図14】SDCによって与えた制約条件が論理シミュレーションで守られているか検証する時のブロック図である。
【発明を実施するための形態】
【0007】
次に、図面を参照して、各実施形態について説明する。以下に説明する図面の記載において、同一又は類似の部分には同一又は類似の符号を付している。図面は模式的なものである。
【0008】
また、以下に示す実施の形態は、技術的思想を具体化するための装置や方法を例示するものである。実施の形態は、種々の変更を加えることができる。
【0009】
以下の説明において、SDC(Synopsys Design Constraint Format)、1(1‘b1)、0(1‘b0)を簡略化のため、SDC、1、0と表示することもある。SDCは、Synopsys社が公開しているタイミング制約を記述する基準フォーマットである。1‘b1は、例えば、1‘が1ビット幅であること、bがバイナリ(2進数)であること、1は値そのものを示している。
【0010】
[第1の実施形態]
図1は、実施形態に係る論理シミュレーション検証システム1の構成を示す模式図である。
図1に示すように、論理シミュレーション検証システム1は、コンピュータ装置10と、サーバ20と、ネットワーク30、記憶媒体40とを備える。
【0011】
論理シミュレーション検証システム1は、ネットワーク30を介して、ユーザが操作するコンピュータ装置10と、論理シミュレーション検証システム1に用いられるコンピュータのプログラムを格納するサーバ20と、記憶媒体40とを接続する。記憶媒体40は、論理シミュレーション検証に用いられるコンピュータのプログラムを実行するための必要となる入力情報データ、および検証結果のメッセージを格納する。
【0012】
コンピュータ装置10は、例えば、パソコン(PC)、シンクライアント端末、携帯端末、PDA(Personal Digital Assistant)でもよい。サーバ20は、例えば、エンジニアリングワークステーション、メインフレーム、スーパーコンピュータでもよい。ネットワーク30は、例えば、インターネット、イントラネット、LAN、電話通信網、専用線でもよい。記憶媒体40は、例えば、ハードディスクの外部記憶装置、メモリの半導体記憶装置、記憶媒体(メディア)でもよい。ただし、実際には、これらの例に限定されない。
【0013】
図2は、実施形態に係る論理シミュレーション検証システム1のサーバ20と記憶媒体40の詳細な構成例を示すブロック図である。
図2で示すように、サーバ20は、論理シミュレーション検証システム1に用いられるコンピュータのプログラムを実行する論理シミュレーション検証部21と、論理シミュレーションに用いられるコンピュータのプログラムを実行する論理シミュレータ22とを備える。
【0014】
なお、論理シミュレーション検証部21は、例えば、CPU(Central Processing Unit)やマイクロプロセッサ(Microprocessor)の処理装置、または、同様な機能をする半導体集積回路(Integrated Circuit(IC))でもよい。ただし、実際には、これらの例に限定されない。
【0015】
また、論理シミュレーション検証部21は、変化タイミング指定部211と、変化可能性時間計算部212と、参照可能性時間計算部213と、変化可能性時間判定部214と、ライトライトハザードメッセージ出力部215と、変化および参照可能性時間判定部216と、リードライトハザードメッセージ出力部217とを備える。以下の説明において、ライトライトハザード、リードライトハザードをWWハザード、RWハザードという。
【0016】
記憶媒体40は、タイミング情報格納部41と、入力情報データ格納部42と、メッセージ格納部43を備える。
【0017】
タイミング情報格納部41は、例えば、信号の変化の基準になる基準信号とその基準信号の変化情報をSDCによって表現したファイルを格納する。以下の説明において、基準信号とその基準信号の変化情報をSDCによって表現したファイルをSDCファイル41Aという。なお、信号の変化の基準になる基準信号とその基準信号の変化情報をタイミングの基準信号とその変化のタイミングとも称する。
【0018】
このSDCファイル41Aは、論理シミュレーション検証システム1に用いられるコンピュータのプログラムを実行するための必要となる入力情報データである。なお、このSDCファイル41Aは、論理シミュレータ22を実行するための必要となる入力情報データであってもよい。
【0019】
図3は、実施形態に係るタイミング情報格納部41に格納されている具体的な基準信号と基準信号の変化情報をSDCによって表現した記述例である。
【0020】
図3に示すように、タイミング情報格納部41は、Verilog―HDL言語で記述されたライブラリ、回路記述、およびテストベンチファイルに入力する信号の信号名、信号のクロック周期、および入力する信号のノード名を基準信号として情報を格納する。
【0021】
入力情報データ格納部42は、例えば、Verilog―HDL言語で記述されたライブラリ、回路記述、およびテストベンチファイルを格納する。以下の説明において、Verilog―HDL言語で記述されたライブラリ、回路記述、およびテストベンチファイルを入力情報データ42Aという。
【0022】
この入力情報データ42Aは、論理シミュレーション検証システム1に用いられるコンピュータのプログラムを実行するための必要となる入力情報データである。なお、この入力情報データ42Aは、論理シミュレータ22を実行するための必要となる入力情報データであってもよい。
【0023】
メッセージ格納部43は、論理シミュレーション検証部21内のライトライトハザードメッセージ出力部215またはリードライトハザードメッセージ出力部217から出力するメッセージを格納する。WWハザードおよびRWハザードについては、後述で説明する。
【0024】
この入力情報データにライブラリ、回路記述、およびテストベンチを含んだ場合、論理シミュレーションは、RWハザードとWWハザードの2種類の原因によって、信号の競合状態が発生し、論理シミュレータ22のシミュレータ毎によって異なるシミュレーション結果になる可能性がある。信号の競合状態とは、論理回路において、複数の信号が同時に変化して誤作動(設計者が意図としない動作)が生じる可能性のある信号状態をいう。
【0025】
次に、論理シミュレーションの結果が異なる原因となるRWハザードについて説明する。
【0026】
図4は、実施形態に係る入力情報データ格納部42に格納されている具体的なライブラリのセル記述例である。
【0027】
図4の図中のLineBからLineEまでのalwaysブロックの回路B1と、LineFからLineKまでのalwaysブロックの回路B2が記述されている。以下の説明において、
図4の図中のalwaysブロックの回路B1、alwaysブロックの回路B2を回路B1、回路B2という。
【0028】
回路B1は、CLK1の立ち上がりで起動し、変数CONDが1の場合、変数Aに1を代入する(LineC)。また、変数CONDが0の場合、変数Aに0を代入する(LineD)。
【0029】
回路B2は、CLK2の立ち上がりで起動し、変数Aが1の場合、変数CONDに1を代入する(LineG)。また、変数Aが0の場合、変数CONDに0を代入する(LineH)。
【0030】
ここで、以下の説明において、基準信号と基準信号の変化に対して、変数に代入される信号を第1の信号という。
【0031】
すなわち、上記の説明において、回路B1の変数Aに代入される1または0は、回路B1の出力信号であり第1の信号の一例である。同様に、回路B2の変数CONDに代入される1または0は、回路B2の出力信号であり第1の信号の一例である。
【0032】
さらに、以下の説明において、基準信号と基準信号の変化に対して、変数が参照される信号を第2の信号という。
【0033】
つまり、回路B1の変数CONDに参照される1または0は、回路B1の入力信号であり第2の信号の一例である。同様に、回路B2の変数Aに参照される1または0は、回路B2の入力信号であり第2の信号の一例である。
【0034】
この回路B1と回路B2は、
図3で示すように、基準信号であるCLK1とCLK2のクロック周期が同じである。このような基準信号と基準信号の変化に対し、回路B1および回路B2の第1の信号である回路B1の変数Aと回路B2の変数CONDは、CLK1およびCLK2の立ち上がりエッヂで変化する可能性がある。
【0035】
さらに、回路B1の第1の信号である変数Aと、回路B2の第2の信号の変数Aとが同じである。同様に、回路B2の第1の信号である変数CONDと、回路B1の第2の信号の変数CONDとが同じである。よって、回路B1と回路B2間において、回路B1を先に評価した場合と、回路B2を先に評価した場合で変数Aと変数CONDの結果が異なる。
【0036】
具体的には、回路B1を先に評価した場合、回路B1は、基準信号であるCLK1の立ち上がりエッヂで起動し、第2の信号である変数CONDが参照される可能性がある。回路B1は、第2の信号である変数CONDが1であるから、第1の信号である変数Aに1を代入する。
【0037】
次に、回路B2は、基準信号であるCLK2の立ち上がりエッヂで起動し、第2の信号である変数Aが参照される可能性がある。回路B2は、第2の信号である変数Aが1であるから、第1の信号の変数CONDに1を代入する。その結果、変数Aは1であり、変数CONDは1である。
【0038】
回路B2を先に評価した場合、回路B2は、基準信号であるCLK2の立ち上がりエッヂで起動し、第2の信号である変数CONDが参照される可能性がある。回路B2は、第2の信号である変数Aが0であるから、第1の信号である変数CONDに0を代入する。
【0039】
次に、回路B1は、基準信号であるCLK1の立ち上がりエッヂで起動し、第2の信号である変数CONDが参照される可能性がある。回路B1は、第2の信号である変数CONDが0であるから、第1の信号の変数Aに0を代入する。結果、変数Aは0であり、変数CONDは0である。
【0040】
上述のように、
図3で記述されたSDCファイル41Aと、
図4で記述されたライブラリを含む入力情報データ42Aとを用いて論理シミュレーションを実行すると、回路B1および回路B2のどちらかが先に評価されるかでシミュレーション結果が変わる。
このような基準信号が同じタイミングで、第2の信号を参照(リード)し、第1の信号を変化する(ライト)可能性のあることをRWハザードという。
【0041】
次に、論理シミュレーションの結果が異なる原因となるWWハザードについて説明する。
【0042】
図5は、実施形態に係る複数の回路間で変数に代入される信号が変化する可能性がある具体的なライブラリのセル記述例である。
【0043】
図5の図中のLineAからLineDまでのalwaysブロックの回路B3と、LineEからLineHまでのalwaysブロックの回路B4とが記述されている。以下の説明において、
図5の図中のalwaysブロックの回路B3、alwaysブロックの回路B4を回路B3、回路B4という。
【0044】
回路B3は、基準信号であるCLK1の立ち上がりで起動し、変数COND1が1の場合、変数Aに1を代入する(LineB)。また、変数COND1が0の場合、変数Aに0を代入する(LineC)。
【0045】
回路B4は、基準信号であるCLK2の立ち上がりで起動し、変数COND2が1の場合、変数Aに0を代入する(LineF)。また、変数COND2が0の場合、変数Aに1を代入する(LineG)。
【0046】
この回路B3および回路B4は、
図3で示すように、基準信号であるCLK1およびCLK2のクロック周期が同じである。さらに、
図5で示すように、回路B3および回路B4の第1の信号は、変数Aで同じである。
【0047】
このような基準信号に対し、回路B3および回路B4の第1の信号である変数Aは、CLK1およびCLK2の立ち上がりエッヂで変化する可能性がある。よって、回路B3と回路B4間において、回路B3を先に評価した場合と、回路B4を先に評価した場合で第1の信号の変数Aの結果が異なる。
【0048】
具体的には、回路B3を先に評価した場合、回路B3は、基準信号であるCLK1の立ち上がりエッヂで起動し、第2の信号である変数COND1が参照される可能性がある。回路B3は、第2の信号である変数COND1が1である場合、第1の信号である変数Aに1を代入する。
【0049】
次に、回路B4は、基準信号であるCLK2の立ち上がりエッヂで起動し、第2の信号である変数COND2が参照される可能性がある。回路B4は、第2の信号である変数COND2が1である場合、第1の信号の変数Aに0を代入する。その結果、第1の信号である変数Aは0である。
【0050】
回路B4を先に評価した場合、回路B4は、基準信号であるCLK2の立ち上がりエッヂで起動し、第2の信号である変数COND2が参照される可能性がある。回路B4は、第2の信号である変数COND2が1である場合、第1の信号である変数Aに0を代入する。
【0051】
次に、回路B3は、基準信号であるCLK1の立ち上がりエッヂで起動し、第2の信号である変数COND1が参照される可能性がある。回路B3は、第2の信号である変数COND1が1である場合、第1の信号の変数Aに1を代入する。その結果、第1の信号である変数Aは1である。
【0052】
上述のように、
図3で記述されたSDCファイル41Aと、
図5で記述されたライブラリを含む入力情報データ42Aを用いて論理シミュレーションを実行すると、回路B3および回路B4のどちらかが先に評価されるかでシミュレーション結果が変わる。
このような基準信号が同じタイミングで、第1の信号を変化する(ライト)可能性のあることをWWハザードという。
【0053】
実施形態に係る論理シミュレーション検証部21について説明する。
【0054】
図6は、実施形態に係る論理シミュレーション検証システム1を用いたシステムのブロック図である。
【0055】
論理シミュレーション検証部21は、
図6に示すように、入力情報データであるSDC41Aと、ライブラリ、回路記述、およびテストベンチを含む入力情報データ42Aとを用いて、静的な解析をする。
【0056】
この静的な解析とは、論理シミュレータ22を使用せず、基準信号と基準信号の変化に対して、第1の信号が変化するおよび第2の信号が参照される可能性を検証することをいう。
【0057】
変化タイミング指定部211は、記憶媒体40のタイミング情報格納部41に格納する基準信号と基準信号の変化の信号情報を指定する。すなわち、変化タイミング指定部211は、
図3の記述例で示すように、例えば、基準信号であるCLK1およびCLK2を指定する。
【0058】
変化可能性時間計算部212は、記憶媒体40の入力情報データ格納部42に格納するライブラリ、回路記述、およびテストベンチを含む入力情報データ42Aの入力情報データを読み込む。
【0059】
変化可能性時間計算部212は、この入力情報データ42Aの入力情報データに基づいて、基準信号の変化に対して第1の信号が変化する可能性のある変数に代入される信号の変化可能性時間を計算する。以下において、変数に代入される信号の変化可能性時間を第1の時刻という。
【0060】
具体的には、
図5で示すように、基準信号であるCLK1およびCLK2の立ち上がりエッヂに対して、回路B3の第1の時刻は、第1の信号である出力信号の変数Aに代入される可能性がある時刻である。同様に、回路B4の第1の時刻は、第1の信号である出力信号の変数Aに代入される可能性がある時刻である。
【0061】
参照可能性時間計算部213は、記憶媒体40の入力情報データ格納部42に格納するライブラリ、回路記述、およびテストベンチを含む入力情報データ42Aの入力情報データを読み込む。
【0062】
参照可能性時間計算部213は、この入力情報データ42Aの入力情報データに基づいて、基準信号の変化に対して第2の信号が参照され、変数に参照される信号の参照可能性時間を計算する。以下において、変数に参照される信号の参照可能性時間を第2の時刻という。
【0063】
具体的には、
図4で示すように、基準信号であるCLK1およびCLK2の立ち上がりエッヂに対して、回路B1の第2の時刻は、第2の信号である入力信号の変数CONDが参照され、第1の信号である出力信号の変数Aに代入される可能性がある時刻である。同様に、回路B2の第2の時刻は、第2の信号である入力信号の変数Aが参照され、第1の信号である出力信号の変数CONDに代入される可能性がある時刻である。
【0064】
変化可能性時間判定部214は、異なった回路間で基準信号の変化に対して第1の信号が同じとき、第1の信号が変化する可能性のあるそれぞれの第1の時刻を比較して第1の時刻が一致するかを判定する。
【0065】
この異なった回路間とは、例えば、
図5で示すLineAからLineDまでのalwaysブロックの回路B3と、LineEからLineHまでのalwaysブロックの回路B4のことである。
【0066】
ライトライトハザードメッセージ出力部215は、変化可能性時間判定部214によって異なった回路間の第1の時刻が一致した場合、WWハザードの可能性がある旨を記憶媒体40のメッセージ格納部43へ出力する。また、変化可能性時間判定部214によって異なった回路間の第1の時刻が一致しない場合、問題ない旨を記憶媒体40のメッセージ格納部43へ出力する。
【0067】
変化および参照可能性時間判定部216は、異なった回路間で一方の第1の信号と他方の第2の信号が同じとき、基準信号の変化に対して第1の信号が変化する可能性のある第1の時刻と、基準信号の変化に対して第2の信号が参照する可能性のある第2の時刻とが同時になる可能性があるかを判定する。
【0068】
リードライトハザードメッセージ出力部217は、変化および参照可能性時間判定部216によって、異なった回路間の第1の時刻と、第2の時刻が同じ時刻の場合、RWハザードの可能性がある旨を記憶媒体40のメッセージ格納部43へ出力する。また、変化および参照可能性時間判定部216によって、異なった回路間の第1の時刻と、第2の時刻が異なる場合、問題ない旨を記憶媒体40のメッセージ格納部43へ出力する。
【0069】
論理シミュレータ22は、例えば、タイミング情報格納部41と、入力情報データ格納部42とに格納する入力情報データを用いて動的な解析を行う。この動的な解析とは、論理シミュレータ22を使用し解析することである。なお、論理シミュレーション検証部21によって信号の競合状態を検証し、修正したライブラリ、回路記述、およびテストベンチを含む入力情報データ42Bの入力情報データを用いて動的な解析を行ってもよい。論理シミュレータ22の内部構成は、公知であるので内部構成の説明を省略する。
【0070】
図7は、実施形態に係る論理シミュレーション検証システム1の動作フロー図である。
【0071】
図2、
図6、
図7を参照して、実施形態に係る論理シミュレーション検証システム1の論理シミュレーション検証方法について説明する。
【0072】
ステップS11において、変化タイミング指定部211は、SDCファイル41Aを読み込む。そして、変化タイミング指定部211は、SDCファイル41Aから基準信号とその基準信号の変化情報を指定する。
【0073】
ステップS12において、変化可能性時間計算部212は、ライブラリ、回路記述、およびテストベンチを含む入力情報データ42Aを読み込む。そして、変化可能性時間計算部212は、この入力情報データ42Aに基づいて、ステップS11で指定した基準信号と基準信号の変化に対して、第1の信号が変化する可能性のある第1の時刻を計算する。
【0074】
ステップS13において、参照可能性時間計算部213は、ライブラリ、回路記述、およびテストベンチを含む入力情報データ42Aを読み込む。そして、参照可能性時間計算部213は、この入力情報データ42Aに基づいて、ステップS11で指定した基準信号と基準信号の変化に対して、第2の信号が参照される可能性のある第2の時刻を計算する。
【0075】
ステップS14において、変化可能性時間計算部212および参照可能性時間計算部213が全ての第1の時刻および第2の時刻を求め終わった場合、ステップS15に進む。変化可能性時間計算部212および参照可能性時間計算部213において、第1の時刻および第2の時刻が全て求め終わっていない場合、ステップ12に進む。
【0076】
ステップS15において、変化可能性時間判定部214は、異なった回路間で基準信号と基準信号の変化に対して第1の信号が同じとき、第1の信号が変化する可能性のあるそれぞれの第1の時刻を比較して第1の時刻が一致するかを判定する。そして、変化可能性時間判定部214は、第1の時刻が一致する場合には、処理はステップS16に進む。第1の時刻が一致しない場合には、処理はステップS17に進む。
【0077】
ステップS16において、ライトライトハザードメッセージ出力部215は、変化可能性時間判定部214によって第1の時刻が一致する場合、WWハザードの可能性がある旨を記憶媒体40のメッセージ格納部43へ出力する。そして、出力後には、処理はステップS18に進む。
【0078】
ステップS17において、ライトライトハザードメッセージ出力部215は、変化可能性時間判定部214によって第1の時刻が一致しない場合問題がない旨を記憶媒体40のメッセージ格納部43へ出力する。そして、出力後には、処理はステップS18に進む。
【0079】
ステップS18において、変化および参照可能性時間判定部216は、異なった回路間で一方の第1の信号と他方の第2の信号が同じとき、基準信号と基準信号の変化に対して第1の信号が変化する可能性のある第1の時刻と、基準信号と基準信号の変化に対して第2の信号が参照する可能性のある第2の時刻とが同時になる可能性があるかを判定する。
【0080】
そして、変化および参照可能性時間判定部216は、第1の時刻と、第2の時刻とが同時になる可能性がある場合には、処理はステップS19に進む。第1の時刻と、第2の時刻とが同時になる可能性がない場合には、処理はステップS20に進む。
【0081】
ステップS19において、リードライトハザードメッセージ出力部217は、変化および参照可能性時間判定部216によって異なった回路間の第1の時刻と、第2の時刻とが同時になる可能性がある場合、RWハザードの可能性がある旨を記憶媒体40のメッセージ格納部43へ出力する。そして、出力後には、処理は終了する。
【0082】
ステップS20において、リードライトハザードメッセージ出力部217は、変化および参照可能性時間判定部216によって、異なった回路間の第1の時刻と、第2の時刻が異なる場合、問題ない旨を記憶媒体40のメッセージ格納部43へ出力する。そして、出力後には、処理は終了する。
【0083】
なお、ユーザは、メッセージ格納部43に格納されたWWハザードおよびRWハザードの可能性がある旨の警告メッセージを参照し、入力情報データ42Aを修正する。この修正されたファイルを修正されたライブラリ、回路記述、およびテストベンチを含む入力情報データ42Bという。
【0084】
図8は、実施形態に係る具体的な
図4のライブラリのセル記述のRWハザードの修正例である。例えば、ユーザは、
図3のSDCファイル41Aの基準信号に対して、RWハザードの可能性のある
図4のライブラリのセル記述例を用いて論理シミュレーション検証システム1を実行する。そして、ユーザは、その実行した解析結果であるRWハザードの可能性のある旨のメッセージを参照する。
【0085】
この論理シミュレーション検証システム1の解析結果は、具体的には、
図3に示す基準信号と基準信号の変化に対して、
図4で示すライブラリで記述された回路B1の第1の信号である変数Aが、第1の時刻のとき(ここでの第1の時刻は、時刻を10で剰余して0となる時刻群である。)変化する可能性があることを
図4のライブラリに対して警告する。同様に、解析結果は、
図3に示す基準信号と基準信号の変化に対して、
図4で示すライブラリで記述された回路B2の第1の信号である変数CONDが、第1の時刻のとき(ここでの第1の時刻は、時刻を10で剰余して0となる時刻群である。)変化する可能性があることを
図4のライブラリに対して警告する。
【0086】
さらに、解析結果は、
図3に示す基準信号と基準信号の変化に対して、
図4で示すライブラリで記述された回路B1の第2の信号である変数CONDが、第2の時刻のとき(ここでの第2の時刻は、時刻を10で剰余して0となる時刻群である。)参照される可能性があることを
図4のライブラリに対して警告する。同様に、解析結果は、
図3に示す基準信号と基準信号の変化に対して、
図4で示すライブラリで記述された回路B2の第2の信号である変数Aが、第2の時刻のとき(ここでの第2の時刻は、時刻を10で剰余して0となる時刻群である。)参照される可能性があることを
図4のライブラリに対して警告する。
【0087】
上記のように、基準信号が同じタイミング(第1の時刻と第2の時刻が同じとなる時刻)で、異なる回路間において、第2の信号を参照(リード)し、第1の信号を変化する(ライト)可能性のあるため、信号の競合状態が起こることを解析結果によってメッセージする。
【0088】
ユーザは、RWハザードの可能性のある解析結果によるメッセージを参照し、
図8に示すように、回路B1および回路B2は、RWハザードの可能性があるため、LineCの代入をする記述である「A = 1‘b1 ;」を「A <= #1 1‘b1 ;」と修正する。同様に、ユーザは、LineGの代入をする記述である「COND = 1‘b1;」を「COND <= #1 1‘b1 ;」と修正する。
「A <= #1 1‘b1 ;」は、Aに1を代入する時刻を1だけ遅らせる文である。例えば、#は遅延させる時間を表す記号である。
【0089】
すなわち、第1の信号である変数に代入するときに、時刻を1だけ遅延させることによって、第1の信号が変化する第1の時刻は、時刻を10で剰余して1となる時刻群である。また、第2の信号が参照される第2の時刻は、時刻を10で剰余して0となる時刻群である。
よって、第1の時刻と第2の時刻が一致しないので、異なる回路間において、信号の競合状態が発生する可能性はないと判断される。
【0090】
上述のように、論理シミュレーション検証システム1は、論理シミュレーション検証システム方法により、基準信号と基準信号の変化に対する信号の競合状態を回避することができる。
また、論理シミュレーション検証システム1は、論理シミュレータ22を用いらず静的に解析することで短時間に、メモリを少なく実行することができる。
さらに、基準信号と基準信号の変化に対して、変数に代入される時刻および変数に参照される時刻を扱うことで遅延時間を扱うことができる。
【0091】
論理シミュレータ22は、論理シミュレーション検証システム1によって、修正したライブラリ、回路記述、およびテストベンチを含む入力情報データ42Bを用いて論理シミュレーションを実行することで、信号の競合状態のないシミュレーション結果44を得ることができる。
【0092】
[第2の実施形態]
第2の実施形態に係る論理シミュレーション検証システム1について説明する。
【0093】
図9は、第2の実施形態に係るタイミング情報格納部41に格納されている具体的な複数の周波数の基準信号をSDCによって表現した記述例である。
第2の実施形態に係る論理シミュレーション検証システム1は、複数の周波数の基準信号に対するライブラリを検証する例である。
【0094】
第2の実施形態に係る論理シミュレーション検証システム1は、
図9で示す複数の周波数の基準信号をSDCによって表現した記述例をタイミング情報格納部41に格納する。
【0095】
すなわち、第2の実施形態に係る論理シミュレーション検証システム1の変化可能性時間計算部212は、例えば、
図4に示すライブラリの記述例に対して、
図9の示す複数の周波数の基準信号の場合、
図7に示すステップS12において、複数の周波数の基準信号を最小公倍数の時刻まで第1の信号が変化する可能性のある第1の時刻を計算する。具体的には、
図9で示す、一方の基準信号CLK1の信号のクロック周期は、15nsであり、他方の基準信号CLK2の信号のクロック周期は、20nsである。
【0096】
つまり、CLK1およびCLK2の最小公倍数は、60である。この最小公倍数の60までの時刻は、0、15、20、30、40、45のとき信号の競合状態が発生する可能性がある。
【0097】
図4で示すライブラリの場合、回路B1の変数Aに対する第1の時刻は、基準信号のCLK1の時刻を60で割った剰余が0、15、30、45である。また、回路B2の変数CONDに対する基準時刻は、第1の信号のCLK2の時刻を60で割った剰余が0、20、40である。
ステップS13において、参照可能性時間計算部213は、基準信号を最小公倍数の時刻まで第2の信号が参照される可能性のある第2の時刻を計算する。
【0098】
すなわち、回路B1の変数CONDに対する第2の時刻は、基準信号のCLK1の時刻を60で割った剰余が0、15、30、45である。また、回路B2の変数Aに対する第2の時刻は、基準信号のCLK2の時刻を60で割った剰余が0、20、40である。
【0099】
ステップS18において、異なった回路B1およびB2間に対し、基準信号の時刻を60で割った剰余が0のとき、第1の信号が同時に変化する可能性があり、かつ、第2の信号が同時に参照される可能性があるため、基準信号の変化に対する信号の競合状態が発生すると判断する。
【0100】
他の構成、論理シミュレーション検証システム検証方法および効果は、
図1~
図8で示した第1の実施形態と同じである。
【0101】
[第3の実施形態]
第3の実施形態に係る論理シミュレーション検証システム1について説明する。
【0102】
図10は、第3の実施形態に係るタイミング情報格納部41に格納されている具体的なチェックしたいライブラリのセルの例に対して周期を持たない基準信号の変化タイミングをSDCによって表現した記述例である。
図10に示すように、第3の実施形態に係る論理シミュレーション検証システム1は、基準信号であるCLK1およびCLK2は時刻100のとき電源が入る例である。
【0103】
第3の実施形態に係る論理シミュレーション検証システム1は、
図10に示す周期を持たない基準信号の変化タイミングをSDCによって表現した記述例をタイミング情報格納部41に格納する。
【0104】
すなわち、第3の実施形態に係る論理シミュレーション検証システム1の変化可能性時間計算部212は、例えば、
図4に示すライブラリの記述例に対して、
図10の示す周期を持たない基準信号の場合、
図7で示すステップS12において、基準信号であるCLK1は、時刻100のとき、回路B1の第1の信号である変数Aが変化する可能性がある第1の時刻を計算する。同様に、基準信号であるCLK2は、時刻100のとき、回路B2の第1の信号である変数CONDが変化する可能性がある第1の時刻を計算する。
【0105】
ステップS13において、参照可能性時間計算部213は、基準信号であるCLK1は、時刻100のとき、回路B1の第2の信号である変数CONDが参照される可能性がある第2の時刻を計算する。同様に、基準信号であるCLK2は、時刻100のとき、回路B2の第2の信号である変数Aが参照される可能性がある第2の時刻を計算する。
【0106】
ステップS18において、異なった回路B1およびB2間に対し、基準信号が時刻100のとき、第1の信号が同時に変化する可能性があり、かつ、第2の信号が同時に参照される可能性があるため、基準信号の変化に対する信号の競合状態が発生すると判断する。
他の構成、論理シミュレーション検証システム検証方法および効果は、
図1~
図8で示した第1の実施形態と同じである。
【0107】
[第4の実施形態]
第4の実施形態に係る論理シミュレーション検証システム1について説明する。
【0108】
図11は、第4の実施形態に係るタイミング情報格納部41に格納されている具体的なチェックしたいテストベンチを記述例に対して基準信号の変化タイミングをSDCによって表現した記述例である。
【0109】
図12は、第4の実施形態に係る入力情報データ格納部42に格納されている具体的なbegin-endの回路ブロック中で「@」および「wait」によって変化可能性時間および参照可能性時時間が変わるテストベンチの記述例である。
【0110】
図11および
図12のように、第4の実施形態に係る論理シミュレーション検証システム1が対象とするのは、基準信号であるaxm.CLKに対して、テストベンチの記述に「@」および「wait」を含む場合、第1の時刻および第2の時刻が変わる例である。
【0111】
第4の実施形態に係る論理シミュレーション検証システム1は、
図11に示す基準信号の変化タイミングをSDCによって表現した記述例のSDCファイル41Aをタイミング情報格納部41に格納する。また、
図12に示すテストベンチを含む入力情報データ42Aを入力情報データ格納部42に格納する。
【0112】
図11は、基準信号の変化タイミングの情報である信号のクロック周期、および入力する信号のノード名、およびクロックに対する入力ピンの入力遅延情報である。下の行は、
axm.Readyの変化するタイミングが2だけ遅れる(例えば基準信号の時刻を100で割った剰余が2のとき)ことを指定している。
【0113】
図12の示すように、基準信号であるaxm.CLKは、axm.CLKの時刻を100で割った剰余が0のとき、立ち上がる(LineC)。次に、代入文で信号を遅延させる(LineD)。axm.ADDRは、CLKは、axm.CLKの時刻を100で割った剰余が1のとき、addrを代入する(LineE)。同じ時刻でaxm.READYが1なら次の行に進む。axm.READYが0なら1になるまで待ち、100で割った剰余が2の時刻に次の行へ進む(LineG)。次に、代入文で信号を遅延させる(LineH)。axm.DATAは、axm.CLKの時刻を100で割った剰余が2もしくは3のとき、dataを代入する(LineK)。
【0114】
図11および
図12の入力情報データを用いて論理シミュレーション検証システムを実行し、解析をした場合、
図7で示すステップS12において、変化可能性時間計算部212は、基準信号であるaxm.CLKの変化に対して、第1の信号であるaxm.ADDRが変化する可能性がある第1の時刻を計算する。また、変化可能性時間計算部212は、第1の信号であるaxm.DATAが変化する可能性がある第1の時刻を計算する。
【0115】
つまり、第1の信号であるaxm.ADDRは、axm.CLKの時刻を100で割った剰余が1のとき、変化する可能性がある。また、第1の信号であるaxm.DATAは、axm.CLKの時刻を100で割った剰余が2もしくは3のとき、変化する可能性がある。
【0116】
ステップS13において、参照可能性時間計算部213は、基準信号であるaxm.CLKの変化に対して、第2の信号であるaxm.READYが参照される可能性がある第2の時刻を計算する。
【0117】
つまり、第2の信号であるaxm.READYは、axm.CLKの時刻を100で割った剰余が1のとき、axm.READYの値が、1の場合同じ時刻で次の行に進む。また、第2の信号であるaxm.READYは、axm.CLKの時刻を100で割った剰余が1のとき、axm.READYの値が、0の場合は止まり、CLKの時刻を100で割った剰余が2のとき、axm.READYの値が、1になる可能性があり、その時刻で次の行へ進む。
【0118】
ステップS18において、基準信号の時刻を100で割った剰余が2の時axm.READYが変化する可能性がある。第2の信号として基準信号の時刻を100で割った剰余が1の時、axm.READYが参照される可能性がある。従ってaxm.READYに関して信号の競合状態はないと判断する。
他の構成、論理シミュレーション検証システム検証方法および効果は、
図1~
図8で示した第1の実施形態と同じである。
【0119】
[第5の実施形態]
第5の実施形態に係る論理シミュレーション検証システム1について説明する。
【0120】
図13は、第5の実施形態に係るタイミング情報格納部41に格納されている具体的なチェックしたいテストベンチを記述例に対して基準信号の変化タイミングをSDCによって表現した記述例である。下の行は、axm.Readyの変化するタイミングが1だけ遅れる(例えば基準信号の時刻を100で割った剰余が1のとき)ことを指定している。
【0121】
図11および
図13のように、第5の実施形態に係る論理シミュレーション検証システム1が対象とするのは、基準信号であるaxm.CLKに対して、テストベンチの記述に「@」および「wait」を含む場合、第1の時刻および第2の時刻が変わる例である。
【0122】
第5の実施形態に係る論理シミュレーション検証システム1は、
図13に示す基準信号の変化タイミングをSDCによって表現した記述例のSDCファイル41Aをタイミング情報格納部41に格納する。また、
図12に示すテストベンチを含む入力情報データ42Aを入力情報データ格納部42に格納する。
【0123】
第5の実施形態に係る論理シミュレーション検証システム1は、
図13に示すように、基準信号の情報であるSDCによって表現した記述例のクロックに対する入力ピンの入力遅延情報が2から1へ変更されている。
【0124】
図13および
図12の入力情報データを用いて論理シミュレーション検証システムを実行し、解析をした場合、
図7で示すステップS12において、変化可能性時間計算部212は、基準信号であるaxm.CLKの変化に対して、第1の信号であるaxm.ADDRが変化する可能性がある第1の時刻を計算する。また、変化可能性時間計算部212は、第2の信号であるaxm.DATAが変化する可能性がある第1の時刻を計算する。
さらに、変化可能性時間計算部212は、第1の信号であるaxm.READYが変化する可能性がある第1の時刻を計算する。
【0125】
つまり、第1の信号であるaxm.ADDRは、axm.CLKの時刻を100で割った剰余が1のとき、変化する可能性がある。また、第1の信号であるaxm.DATAは、axm.CLKの時刻を100で割った剰余が2のとき、変化する可能性がある。
さらに、axm.READYは、axm.CLKの時刻を100で割った剰余が1のとき、第2の信号であるaxm.READYが変化する可能性がある。
【0126】
ステップS13において、参照可能性時間計算部213は、基準信号であるaxm.CLKの変化に対して、第2の信号であるaxm.READYが参照される可能性がある第2の時刻を計算する。
【0127】
つまり、第2の信号であるaxm.READYは、axm.CLKの時刻を100で割った剰余が1のとき、axm.READYの値を参照されている可能性がある。
【0128】
ステップS18において、基準信号の時刻を100で割った剰余が1のとき、第1の信号が変化する可能性があり、かつ、第2の信号が参照される可能性があるため、基準信号の変化に対する信号の競合状態が発生すると判断する。
他の構成、論理シミュレーション検証システム検証方法および効果は、
図1~
図8で示した第1の実施形態と同じである。
【0129】
[第6の実施形態]
第6の実施形態に係る論理シミュレーション検証システム1について説明する。
【0130】
図14は、第6の実施形態に係る論理シミュレーション検証システム1でSDCによって与えた制約条件が論理シミュレーションで守られているか検証する時のブロック図である。
【0131】
図14で示すように、SDCファイル41Bは、SDCよって基準信号のタイミング制約を与えることができる。そこで、第6の実施形態に係る論理シミュレーション検証システム1の論理シミュレーション検証部21は、SDCによって表現されたタイミング制限を与えたSDCファイル41Bを読み込み、SDCに記述された信号のVCD(Value Change Dump)ファイルを出力するためのVerilog記述を出力する変換プログラム21Aを含んでもよい。
【0132】
SDCに記述された信号のVCDファイル45を出力するためのVerilog記述を41Cという。なお、VCDファイル45とは、Verilog-HDLの標準波形フォーマットのファイルである。このVCDファイルは、言語規定がある波形の変化を記述したテキストファイルのことである。
【0133】
論理シミュレータ22は、SDCファイルの信号をVCDに出すためのVerilog記述41Cと、ライブラリ、回路記述、およびテストベンチを含む入力情報データ42Aを入力情報データとして用いて、実行しVCDファイル45を出力する。
【0134】
第6の実施形態に係る論理シミュレーション検証システム1の論理シミュレーション検証部21は、SDCによって表現されたタイミング制限を与えたSDCファイル41Bと、VCDファイル45を比較して、SDCのタイミング制約が守られているかのチェックするプログラム21Bを含んでいてもよい。
【0135】
なお、SDCのタイミング制約が守られているかのチェックするプログラム21Bは、比較結果をたとえば、OKまたはNGと出力ファイル46で出力してもよい。
他の構成、論理シミュレーション検証システム検証方法および効果は、
図1~
図8で示した第1の実施形態と同じである。
【0136】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で嫉視されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【0137】
例えば、別の実施形態では、回路記述ファイルの回路記述をロジックコーン単位で記述していてもよい。
【符号の説明】
【0138】
1・・・論理シミュレーション検証システム、
10・・・コンピュータ装置、
20・・・サーバ、
21・・・論理シミュレーション検証部、
211・・・変化タイミング指定部、
212・・・変化可能性時間計算部、
213・・・参照可能性時間計算部、
214・・・変化可能性時間判定部、
215・・・ライトライトハザードメッセージ出力部、
216・・・変化および参照可能性時間判定部、
217・・・リードライトハザードメッセージ出力部、
30・・・ネットワーク、
40・・・記憶媒体、
41・・・タイミング情報格納部、
42入力情報データ格納部、
43・・・メッセージ格納部。