(57)【要約】【課題】検証プロパティの意味内容を説明する自然言語文章を自動生成できるようにし、検証プロパティに説明が併記されておらず、また、検証プロパティ記述言語の知識がなくても、検証プロパティの意味内容を容易に理解することができるようにした文章生成方法を提供する。【解決手段】構文木生成手段３は、検証プロパティ入力手段２が入力した検証プロパティ１の文字列を木構造に展開して構文木を生成し、関連付け手段５は、構文木生成手段３が生成した構文木中の文法要素に辞書４内の辞書情報を関連付け、文章生成手段６は、関連付け手段５が辞書情報を関連付けた構文木を自然言語文章８に変換し、文章出力手段７は、文章生成手段６が生成した自然言語文章８を出力する。【選択図】図１
2008225723.tif 000002
【特許請求の範囲】
【請求項１】
構文木生成手段が、論理回路の検証プロパティを構文解析し、該構文解析の結果を木構造で表した構文木を生成する工程と、
検証プロパティ記述言語の文法要素と該文法要素に対応する自然言語とを関連付けた辞書情報を元に、関連付け手段が、前記構文木に前記辞書情報を関連付ける工程と、
文章生成手段が、前記辞書情報を関連付けた前記構文木を自然言語文章に変換する工程と
を含むことを特徴とする文章生成方法。
【請求項２】
登録手段が、少なくとも前記検証プロパティと前記自然言語文章とを組にしてプロパティ情報として記憶手段に登録する工程と、
検索手段が、入力された検索語を前記記憶手段から検索する工程と、
検索結果出力手段が、前記検索語を含むプロパティ情報を出力する工程と
を含むことを特徴とする請求項１に記載の文章生成方法。
【請求項３】
構文木生成手段が、論理回路の検証プロパティを構文解析し、該構文解析の結果を木構造で表した構文木を生成する工程と、
異常位置情報付加手段が、前記構文木に前記論理回路の論理シミュレーションにより得られる異常情報から異常位置情報を抽出して付加する工程と、
検証プロパティ記述言語の文法要素と該文法要素に対応する自然言語とを関連付けた辞書情報を元に、関連付け手段が、前記異常位置情報を付加した前記構文木に前記辞書情報を関連付ける工程と、
文章生成手段が、前記異常位置情報が付加され、前記辞書情報が関連付けられた前記構文木を自然言語文章に変換する工程と
を含むことを特徴とする文章生成方法。
【請求項４】
コンピュータを、
論理回路の検証プロパティを構文解析し、該構文解析の結果を木構造で表した構文木を生成する構文木生成手段、
検証プロパティ記述言語の文法要素と該文法要素に対応する自然言語とを関連付けた辞書情報を元に、前記構文木に前記辞書情報を関連付ける関連付け手段、および、
前記辞書情報を関連付けた前記構文木を自然言語文章に変換する文章生成手段
として機能させるプログラムを含む
ことを特徴とする文章生成プログラム。
【請求項５】
コンピュータを、
論理回路の検証プロパティを構文解析し、該構文解析の結果を木構造で表した構文木を生成する構文木生成手段、
前記構文木に前記論理回路の論理シミュレーションにより得られる異常情報から異常位置情報を抽出して付加する異常位置情報付加手段、
検証プロパティ記述言語の文法要素と該文法要素に対応する自然言語とを関連付けた辞書を元に、前記異常位置情報が付加された前記構文木に前記辞書情報を関連付ける関連付け手段、および、
前記異常位置情報が付加され、前記辞書情報が関連付けられた前記構文木を自然言語文章に変換する文章生成手段
として機能させるプログラムを含む
ことを特徴とする文章生成プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ハードウェア記述言語で記述された論理回路の動作を論理シミュレーションで検証する場合に、異常検出を行う目的で作成され、論理回路に組み込まれる、検証プロパティ記述言語で記述された検証プロパティを自然言語文章に変換して自然言語文章を生成する文章生成方法及び文章生成プログラムに関する。
【背景技術】
【０００２】
従来、論理回路の動作検証は、ハードウェア記述言語で記述された検証対象の論理回路を論理シミュレータでシミュレートすることで行われている。この場合、検証する動作を検証プロパティ記述言語で記述した検証プロパティを論理回路に組み込んでおくと、論理シミュレータは、検証プロパティにそぐわない動作を検出すると、使用者に注意を喚起したり、異常動作として記録を残したりする。そのため、論理回路の内部記述を直接調べたり、信号の波形を見たりしなくても、該当する検証プロパティとその異常個所を見れば、いつどのような異常が起きたかを知ることができ、効率的に論理回路の動作検証を行うことができる。
【０００３】
このように検証プロパティは、利便性が高いものであるが、専用の検証プロパティ記述言語を用いて記述する必要があるため、検証プロパティを作成するためには、検証プロパティ記述言語の知識や慣れが必要となる。そのため、出来るだけ簡単に検証プロパティを作成するための技術が開発されている（例えば、特許文献１、２参照。）。しかし、これらの技術では、作成される検証プロパティが定型であったり、使える記述の範囲が限られたりする場合が多い。
【０００４】
一方、検証プロパティ記述言語で直接記述すれば、定型でない様々な形式で、複雑な動作を表す検証プロパティを記述することが可能になる。その場合、記述する者によって、同じ動作でも表現方法が異なる場合や、記述内容によっては複雑になる場合がある。このため、検証プロパティを作成する者と検証プロパティを実際に使用する者は、ともに検証プロパティ記述言語に精通している必要がある。
【特許文献１】特開２００４−３２６６５０号公報
【特許文献２】特開２００６−１６３５９８号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
このように、論理回路の動作検証を行う者が検証プロパティを扱うためには、検証プロパティ記述言語に精通している必要があるが、論理回路の動作検証を行う者全てが、検証プロパティ記述言語に精通しているとは限らない。そのため、検証プロパティが表す内容の理解を助けるために、検証プロパティの記述の意味を別途説明として自然言語で併記する必要があった。
【０００６】
しかしながら、検証プロパティに自然言語による説明を併記すると言うことは、検証プロパティ作成者は、同じ内容を検証プロパティ記述言語と自然言語とで２度書く必要があり、検証プロパティの意味が分る者にとっては冗長であり、本来必要のない作業である。そのため、説明を追加する作業を後回しにしたまま忘れたり、検証プロパティを修正する際に説明の部分の修正を忘れたりすることもあり、検証プロパティに併記された説明自体の信頼性が低くなってしまい、きちんと記述された説明も確認が必要になり、説明を付けたことの効果が半減してしまうという問題点があった。
【０００７】
また、検証プロパティを論理回路に組み込んで論理シミュレーションを行い、異常を検出しても、論理シミュレータは、検証プロパティ自体と異常の位置情報程度しか出力しないため、ある程度検証プロパティに精通していないと、異常を特定することが難しいという問題点もあった。
【０００８】
また、検証プロパティは、仕様が同じならば、異なる実装の論理回路に対しても使える場合があるので、長期間にわたって様々な場面で使用することが考えられる。しかし、検証プロパティは論理回路に組み込まれて使用されるため、論理回路に組み込まれた形の検証プロパティしか存在せず、同一使用の検証プロパティを異なる実装の論理回路に使用する場合には、既に論理回路に組み込まれている検証プロパティを抽出し、記述と内容を確認して異なる実装の論理回路に組み込み直す必要があった。更に、説明が付属していない場合もあり、その場合は、検証プロパティ記述を解析して確認する必要があった。
【０００９】
そこで、本発明の第１の目的は、検証プロパティの意味内容を説明する自然言語文章を自動生成できるようにし、検証プロパティに説明が併記されておらず、また、検証プロパティ記述言語の知識がなくても、検証プロパティの意味内容を容易に理解することができるようにした文章生成方法及び文章生成プログラムを提供することにある。
【００１０】
本発明の第２の目的は、検証プロパティの意味内容を説明する自然言語文章を自動生成できるようにし、検証プロパティと自動生成した自然言語文章を容易に利用することができるようにすると共に、検証プロパティと自動生成した自然言語文章とを容易に利用することができるようにした文章生成方法及び文章生成プログラムを提供することにある。
【００１１】
本発明の第３の目的は、検証プロパティを組み込んだ論理回路に論理シミュレーションの結果、異常が存在した場合に、異常を容易に特定することができる自然言語文章を自動生成できるようにし、検証プロパティ記述言語の知識がなくても、異常を容易に特定することができるようにした文章生成方法及び文章生成プログラムを提供することにある。
【課題を解決するための手段】
【００１２】
本発明中、第１の発明は、文章生成方法の発明であり、構文木生成手段が、論理回路の検証プロパティを構文解析し、該構文解析の結果を木構造で表した構文木を生成する工程と、検証プロパティ記述言語の文法要素と該文法要素に対応する自然言語とを関連付けた辞書情報を元に、関連付け手段が、前記構文木に前記辞書情報を関連付ける工程と、文章生成手段が、前記辞書情報を関連付けた前記構文木を自然言語文章に変換する工程とを含むものである。
【００１３】
本発明中、第２の発明は、文章生成方法の発明であり、第１の発明において、登録手段が、少なくとも前記検証プロパティと前記自然言語文章とを組にしてプロパティ情報として記憶手段に登録する工程と、検索手段が、入力された検索語を前記記憶手段から検索する工程と、検索結果出力手段が、前記検索語を含むプロパティ情報を出力する工程を含むものである。
【００１４】
本発明中、第３の発明は、文章生成方法の発明であり、構文木生成手段が、論理回路の検証プロパティを構文解析し、該構文解析の結果を木構造で表した構文木を生成する工程と、異常位置情報付加手段が、前記構文木に前記論理回路の論理シミュレーションにより得られる異常情報から異常位置情報を抽出して付加する工程と、検証プロパティ記述言語の文法要素と該文法要素に対応する自然言語とを関連付けた辞書情報を元に、関連付け手段が、前記異常位置情報を付加した前記構文木に前記辞書情報を関連付ける工程と、文章生成手段が、前記異常位置情報が付加され、前記辞書情報が関連付けられた前記構文木を自然言語文章に変換する工程とを含むものである。
【００１５】
本発明中、第４の発明は、文章生成プログラムの発明であり、コンピュータを、論理回路の検証プロパティを構文解析し、該構文解析の結果を木構造で表した構文木を生成する構文木生成手段、検証プロパティ記述言語の文法要素と該文法要素に対応する自然言語とを関連付けた辞書情報を元に、前記構文木に前記辞書情報を関連付ける関連付け手段、および、前記辞書情報を関連付けた前記構文木を自然言語文章に変換する文章生成手段として機能させるプログラムを含むものである。
【００１６】
本発明中、第５の発明は、文章生成プログラムの発明であり、第４の発明において、前記コンピュータを、少なくとも前記検証プロパティと前記自然言語文章とを組にしてプロパティ情報として記憶手段に登録する登録手段、入力された検索語を前記記憶手段から検索する検索手段、および、前記検索語を含むプロパティ情報を出力する検索結果出力手段として機能させるプログラムを含むものである。
【００１７】
本発明中、第６の発明は、文章生成プログラムの発明であり、コンピュータを、論理回路の検証プロパティを構文解析し、該構文解析の結果を木構造で表した構文木を生成する構文木生成手段、前記構文木に前記論理回路の論理シミュレーションにより得られる異常情報から異常位置情報を抽出して付加する異常位置情報付加手段、検証プロパティ記述言語の文法要素と該文法要素に対応する自然言語とを関連付けた辞書を元に、前記異常位置情報が付加された前記構文木に前記辞書情報を関連付ける関連付け手段、および、前記異常位置情報が付加され、前記辞書情報が関連付けられた前記構文木を自然言語文章に変換する文章生成手段としてコンピュータを機能させるプログラムを含むものである。
【発明の効果】
【００１８】
本発明中、第１の発明の文章生成方法によれば、論理回路の検証プロパティは構文木に変換され、検証プロパティ記述言語の文法要素と該文法要素に対応する自然言語とを関連付けた辞書情報を元に、前記構文木に前記辞書情報が関連付けられ、前記辞書情報を関連付けた前記構文木は自然言語文章に変換され、検証プロパティの意味内容を説明する自然言語文章が自動生成される。したがって、検証プロパティに説明が併記されておらず、また、検証プロパティ記述言語の知識がなくても、検証プロパティの意味内容を容易に理解することができる。
【００１９】
本発明中、第２の発明の文章生成方法によれば、少なくとも前記検証プロパティと前記自然言語文章とが組とされてプロパティ情報として記憶手段に登録され、入力された検索語が前記記憶手段から検索され、前記検索語を含むプロパティ情報が出力される。したがって、第１の発明と同様の効果を得ることができると共に、検証プロパティと自動生成した自然言語文章とを容易に利用することができる。
【００２０】
本発明中、第３の発明の文章生成方法によれば、論理回路の検証プロパティは構文木に変換され、前記構文木に前記論理回路の論理シミュレーションにより得られる異常情報から異常位置情報が抽出されて付加され、検証プロパティ記述言語の文法要素と該文法要素に対応する自然言語とを関連付けた辞書情報を元に、前記異常位置情報を付加された前記構文木に前記辞書情報が関連付けられ、前記異常位置情報が付加され、前記辞書情報が関連付けられた前記構文木が自然言語文章に変換され、異常を容易に特定することができる自然言語文章が自動生成される。したがって、検証プロパティ記述言語の知識がなくても、異常を容易に特定することができる。
【００２１】
本発明中、第４の発明の文章生成プログラムによれば、論理回路の検証プロパティは構文木に変換され、検証プロパティ記述言語の文法要素と該文法要素に対応する自然言語とを関連付けた辞書情報を元に、前記構文木に前記辞書情報が関連付けられ、前記辞書情報を関連付けた前記構文木は自然言語文章に変換され、検証プロパティの意味内容を説明する自然言語文章が自動生成される。したがって、検証プロパティに説明が併記されておらず、また、検証プロパティ記述言語の知識がなくても、検証プロパティの意味内容を容易に理解することができる。
【００２２】
本発明中、第５の発明の文章生成プログラムによれば、少なくとも前記検証プロパティと前記自然言語文章とが組とされてプロパティ情報として記憶手段に登録され、入力された検索語が前記記憶手段から検索され、前記検索語を含むプロパティ情報が出力される。したがって、第１の発明と同様の効果を得ることができると共に、検証プロパティと自動生成した自然言語文章とを容易に利用することができる。
【００２３】
本発明中、第６の発明の文章生成プログラムによれば、論理回路の検証プロパティは構文木に変換され、前記構文木に前記論理回路の論理シミュレーションにより得られる異常情報から異常位置情報が抽出されて付加され、検証プロパティ記述言語の文法要素と該文法要素に対応する自然言語とを関連付けた辞書情報を元に、前記異常位置情報を付加された前記構文木に前記辞書情報が関連付けられ、前記異常位置情報が付加され、前記辞書情報が関連付けられた前記構文木が自然言語文章に変換され、異常を容易に特定することができる自然言語文章が自動生成される。したがって、検証プロパティ記述言語の知識がなくても、異常を容易に特定することができる。
【発明を実施するための最良の形態】
【００２４】
（第１実施形態）
本発明の文章生成方法の第１実施形態はコンピュータ・システム及び本発明の文章生成プログラムの第１実施形態を使用して実施されるものであり、図１は本発明の文章生成方法の第１実施形態を実施するためのコンピュータ・システムの機能ブロック図である。
【００２５】
図１中、１は所定の論理回路の動作検証の際に使用される検証プロパティ記述言語で記述された検証プロパティ、２は検証プロパティ１を入力する検証プロパティ入力手段、３は検証プロパティ入力手段２が入力した検証プロパティ１の文字列を構文解析し、その結果を木構造で表した構文木を生成する構文木生成手段である。
【００２６】
４は検証プロパティ記述言語の文法要素とそれに対応する自然言語の対を辞書情報として保存する辞書、５は構文木生成手段３が生成した構文木中の文法要素に辞書４内の辞書情報を関連付ける関連付け手段、６は関連付け手段５が辞書情報を関連付けた構文木を自然言語文章に変換する文章生成手段、７は文章生成手段６が生成した自然言語文章を出力する文章出力手段、８は文章出力手段７が出力した自然言語文章である。
【００２７】
本発明の文章生成方法の第１実施形態は、検証プロパティ入力手段２が検証プロパティ１を入力する工程と、構文木生成手段３が、検証プロパティ入力手段２が入力した検証プロパティ１の文字列を構文解析し、その結果を木構造で表した構文木を生成する工程と、関連付け手段５が、構文木生成手段３が生成した構文木中の文法要素に辞書４内の辞書情報を関連付ける工程と、文章生成手段６が、関連付け手段５が辞書情報を関連付けた構文木を自然言語文章に変換する工程と、文章出力手段７が、文章生成手段６が生成した自然言語文章を出力する工程を有するものである。
【００２８】
図２〜図２１は本発明の文章生成方法の第１実施形態の具体例を説明するための図である。図２において、１Ａは検証プロパティ１の具体例を示しており、本発明の文章生成方法の第１実施形態の具体例は、検証プロパティ入力手段２は、検証プロパティ１Ａを入力したとする場合である。なお、検証プロパティ１Ａの自然言語的意味は、「プロパティAは以下の通り。req，次に!ackならば0から3の間続く、次にackが常に成立する。!rstでアボートする。posedge clkのクロックで動作する。」である。
【００２９】
図３は辞書４の構成例を示す図である。図３中、４Ａは構文木生成手段３が生成する構文木中に含まれる文法要素が記述された欄、４Ｂは左側に記述された文法要素に対応する辞書情報が記述された欄であり、イタリック体で記載されている文字は、自然言語の文字に置き換えられる箇所を示している。
【００３０】
辞書４では、文法要素「property IDENTIFIER = Property」には辞書情報「プロパティIDENTIFIERは以下の通り。Property」が対応付けられており、文法要素「property IDNTIFIER = Property」は自然言語「プロパティ〜は以下の通り。」に置き換えられることが示されている。
【００３１】
また、文法要素「FL_Property @ CLOCK BOOLEAN」には「CLOCK BOOLEANのクロックで動作する。FL_Property」が対応付けられており、文法要素「FL_Property @ CLOCK BOOLEAN」は自然言語「〜のクロックで動作する。」に置き換えられることが示されている。
【００３２】
また、文法要素「FL_Property abort BOOLEAN」には辞書情報「BOOLEANでアボートする。FL_Property」が対応付けられており、文法要素「FL_Property abort BOOLEAN」は自然言語「でアボートする。」に置き換えられることが示されている。
【００３３】
また、文法要素「always FL_Property」には辞書情報「FL_Propertyが常に成り立つ。」が対応付けられており、文法要素「always FL_Property」は自然言語「〜が常に成立する。」に置き換えられることが示されている。
【００３４】
また、文法要素「Sequence |=> FL_Property」には辞書情報「Sequence1ならばFL_Property」が対応付けられており、文法要素「Sequence |=> FL_Property」は自然言語「〜ならば〜」に置き換えられることが示されている。
【００３５】
また、文法要素「SERE1 ; SERE2」には辞書情報「SERE1、次にSERE2」が対応付けられており、文法要素「SERE1 ; SERE2」は自然言語「〜、次に〜」に置き換えられることが示されている。
【００３６】
また、文法要素「[* COUNT]」には辞書情報「COUNT続く」が対応付けられており、文法要素「[* COUNT]」は自然言語「続く」に置き換えられることが示されている。
【００３７】
また、文法要素「NUMBER1 : NUMBER2」には辞書情報「NUMBER1からNUMBER2の間」が対応付けられており、文法要素「NUMBER1 : NUMBER2」は自然言語文章「〜から〜の間」に置き換えられることが示されている。
【００３８】
ここで、構文木生成の処理については、個々の構文要素を処理する方法が決められているが、一般的なフローチャートというものは無く、与えられた文を解析し、この解析によって判明した構成に従って順次個々の構文要素が処理され、さらに、この要素を解析すると言う処理が繰り返され、その結果として全体が処理される。
【００３９】
図４は構文木生成手段３で図２に示す検証プロパティ１Ａについて実行された構文木生成工程を示すフローチャートである。すなわち、構文木生成手段３においては、最初に与えられた文字列にPSL DECLと名前が付けられ、構文木生成手段３が生成する構文木の最上位の要素とされる（ステップＳ１）。この最初に与えられた文字列については、ＰＳＬ（構文木）解析（ステップＳ２）が行われる。
【００４０】
ＰＳＬ解析（ステップＳ２）においては、pslは構文木の宣言と解釈され、要素PSL DECLの文字列からpslを取り除いた文字列にはPROPERTY DECLと名前が付けられ、この文字列は、要素PROPERTY DECLとして、要素PSL DECLの子要素とされる。そして、要素PROPERTY DECLの文字列については、プロパティ宣言解析が行われる（ステップＳ３）。
【００４１】
プロパティ宣言解析（ステップＳ３）においては、要素PROPERTY DECLの文字列が、propertyから始まり、途中に=を含むならば、propertyと=との間の文字列にはPSL IDENTIFIERと名前が付けられ、この文字列は、要素PSL IDENTIFIERとして、要素PROPERTY DECLの子要素とされる。そして、要素PSL IDENTIFIERの文字列については、識別子解析が行われる（ステップＳ４）。
【００４２】
また、=より後ろの文字列にはFL_Propertyと名前が付けられ、この文字列は、要素FL_Propertyとして、要素PROPERTY DECLの子要素とされる。そして、要素FL_PROPERTYについては、プロパティ解析（ステップＳ５）が行われる。
【００４３】
識別子（IDENTIFIER）解析（ステップＳ４）においては、英数字からなる文字列は識別子と解析され、それ以下の解析は終了とされる。
【００４４】
プロパティ解析（ステップＳ５）においては、要素FL_Propertyの文字列に@が含まれている場合、@より前の文字列にはFL_Propertyと名前が付けられ、この文字列は、要素FL_Propertyとして、上位の要素FL_Propertyの子要素とされる。そして、要素FL_Propertyについては、プロパティ解析が行われる（ステップＳ５）。
【００４５】
また、@より後ろの文字列にはCLOCK BOOLEANと名前が付けられ、この文字列は、要素CLOCK BOOLEANとして、要素FL_Propertyの子要素とされる。そして、要素CLOCK BOOLEANについては、クロック解析が行われる（ステップＳ６）。
【００４６】
また、要素FL_Propertyの文字列にabortが含まれている場合、abortより前の文字列にはFL_Propertyと名前が付けられ、この文字列は、要素FL_Propertyとして、上位の要素FL_Propertyの子要素とされる。そして、下位の要素FL_Propertyについては、プロパティ解析が行われる（ステップＳ５）。
【００４７】
また、abortより後ろの文字列にはBOOLEANと名前が付けられ、この文字列は、要素BOOLEANとして、要素FL_Propertyの子要素とされる。そして、要素BOOLEANについては、ブーリアン（BOOLEAN）解析（ステップＳ７）が行われる。
【００４８】
また、要素FL_Propertyの文字列がalwaysから始まる場合、alwaysより後ろの文字列にはFL_Propertyと名前が付けられ、この文字列は、要素FL_Propertyとして、上位の要素FL_Propertyの子要素とされる。そして、下位の要素FL_Propertyについては、プロパティ解析が行われる（ステップＳ５）。
【００４９】
また、要素FL_Propertyの文字列が|=>で区切られている場合、|=>より前の文字列にはSEQUENCEと名前が付けられ、この文字列は、要素SEQUENCEとして、要素FL_Propertyの子要素とされる。そして、要素SEQUENCEについては、シーケンス解析が行われる（ステップＳ８）。
【００５０】
また、|=>より後ろの文字列にもSEQUENCEと名前が付けられ、この文字列も、要素SEQUENCEとして、要素FL_Propertyの子要素とされる。そして、要素SEQUENCEについては、シーケンス解析（ステップＳ８）が行われる。
【００５１】
クロック解析（ステップＳ６）においては、posedgeまたはnegedgeで始まる文字列にはHDL CLK EXPRと名前が付けられ、この文字列は、要素HDL CLK EXPRとして、要素CLOCK BOOLEANの子要素とされる。この場合、要素HDL CLK EXPRの下位には子要素が無いので、要素HDL CLK EXPRの下位の解析は終了とされる。
【００５２】
ブーリアン解析（ステップＳ７）においては、要素FL_Propertyの文字列が&&または||で区切られている場合には、&&または||の前の文字列には、BOOLEANと名前が付けられ、この文字列は、要素BOOLEANとして、要素FL_Propertyの子要素とされる。そして、要素BOOLEANについては、ブーリアン解析が行われる（ステップＳ７）。
【００５３】
また、&&または||の後ろの文字列にも、BOOLEANと名前が付けられ、この文字列も、要素BOOLEANとして、要素FL_Propertyの子要素とされる。そして、要素BOOLEANについては、ブーリアン解析が行われる（ステップＳ７）。
【００５４】
ここで、〜で始まり、アルファベットが数字からなる文字列はブーリアンと解析され、それ以下の解析は終了とされる。また、!で始まりアルファベット又は数字からなる文字列はブーリアンと解析され、それ以下の解析は終了とされる。また、アルファベット又は数字からなる文字列はブーリアンと解析され、それ以下の解析は終了とされる。
【００５５】
シーケンス解析（ステップＳ８）においては、要素SEQUENCEの文字列に{}で挟まれる文字列がある場合、{}で挟まれる文字列にはSEREと名前が付けられ、この文字列は、要素SEREとして、要素SEQUENCEの子要素とされる。そして、要素SEREについては、シア（SERE）解析が行われる（ステップＳ９）。
【００５６】
シア解析（ステップＳ９）においては、;で区切られる文字で[*  ]からなる文字列にはCOUNTと名前が付けられ、この文字列は、要素COUNTとして、要素SEREの子要素とされる。そして、要素COUNTについては、カウント解析が行われる（ステップＳ１０）。
【００５７】
また、;より前の文字列にはBOOLEANと名前が付けられ、この文字列は、要素BOOLEANとして、要素SEREの子要素とされる。そして、要素BOOLEANについては、ブーリアン解析が行われる（ステップＳ７）。
【００５８】
また、;より後ろの文字列にはBOOLEANと名前が付けられ、この文字列は、要素BOOLEANとして、要素SEREの子要素とされる。そして、要素BOOLEANについては、ブーリアン解析が行われる（ステップＳ７）。
【００５９】
カウント解析（ステップＳ１０）においては、[*  ]で構成される要素の中の文字列にはRANGEと名前が付けられ、この文字列は、要素RANGEとして、要素COUNTの子要素とされる。そして、要素RANGEについては、レンジ（RANGE）解析が行われる（ステップＳ１１）。
【００６０】
レンジ解析（ステップＳ１１）においては、要素RANGEの文字列が数字のみから構成されるならば、要素RANGEの文字列にはNUMBERと名前が付けられ、この文字列は、要素NUMBERとして、要素RANGEの子要素とされ、それ以下の解析は終了とされる。
【００６１】
また、文字列が:で区切られているならば、：の前の数字及び：の後ろの数字には、それぞれNUMBERと名前が付けられ、これらの数字は、それぞれ、要素NUMBERとして、要素RANGEの子要素とされ、それ以下の解析は終了とされる。
【００６２】
図５は構文木生成手段３が図２に示す検証プロパティ１Ａについて生成する構文木を示す図である。すなわち、構文木生成手段３は、検証プロパティ入力手段２が入力した検証プロパティ１Ａの文字列を図４に示す手順に従って木構造に展開して図５に示すような構文木を生成する。なお、構文木中の四角形の枠は、構文木の要素を示しているが、枠の下の欄には、その要素に属する検証プロパティ１Ａの文字列を記載し、上の欄には、下の欄に記載した文字列がどんな文法要素であるかが分るようにキーワードを記載している。
【００６３】
構文木生成手段３においては、まず、検証プロパティ入力手段２から与えられる検証プロパティ１Ａの文字列（最初に与えられた文字列）に、PSL DECLと名前が付けられ（ステップＳ１）、ＰＳＬ解析（ステップＳ２）が行われる。この結果、図６に示すように、要素１１と、検証プロパティ１Ａの文字列からpslを取り除いた文字列「property A = always ({req ; !ack} |=> {[*0:3];ack} abort !rst)@(posedge clk);」からなる要素１２（要素１１の子要素）が生成される。
【００６４】
次に、図６に示す要素１２の文字列は、PROPERTY DECLと名前が付けられているので、プロパティ宣言解析（ステップＳ３）の対象とされるが、propertyから始まり、途中に=を含むので、図７に示すように、propertyと=との間の英文字「A」は、PSL IDENTIFIERと名前が付けられ、要素１２の子要素１３とされる。また、=以降の文字列「always ({req ; !ack} |=> {[*0:3];ack} abort !rst)@(posedge clk);」は、FL_Propertyと名前が付けられ、要素１２の子要素１４とされる。
【００６５】
図７に示す要素１３の文字列は、PSL IDENTIFIERと名前が付けられているので、識別子解析（ステップＳ４）が行われるが、英文字「A」は識別子と解析され、それ以下の解析は終了とされる。
【００６６】
次に、図７に示す要素１４の文字列は、FL_Propertyと名前が付けられているので、プロパティ解析（ステップＳ５）の対象とされるが、@が含まれているので、図８に示すように、@より前の文字列「always ({req ; !ack} |=> {[*0:3];ack} abort !rst)」は、FL_Propertyと名前が付けられ、要素１４の子要素１５とされる。また、@より後ろの文字列「posedge clk」は、CLOCK BOOLEANと名前が付けられ、要素１４の子要素１６とされる。
【００６７】
次に、図８に示す要素１５の文字列は、FL_Propertyと名前が付けられているので、プロパティ解析（ステップＳ５）の対象とされるが、abortを含んでいるので、図９に示すように、abortより前の文字列「always ({req ; !ack} |=> {[*0:3];ack})」は、FL_Propertyと名前が付けられ、要素１５の子要素１７とされる。また、abortより後ろの文字列「!rst」は、BOOLEANと名前が付けられ、要素１５の子要素１８とされる。
【００６８】
次に、図９に示す要素１７の文字列は、FL_Propertyと名前が付けられているので、プロパティ解析（ステップＳ５）の対象とされるが、alwaysを含んでいるので、図１０に示すように、alwaysより後ろの文字列「{req ; !ack} |=> {[*0:3];ack}」は、FL_Propertyと名前が付けられ、要素１７の子要素１９とされる。
【００６９】
次に、図１０に示す要素１９の文字列は、FL_Propertyと名前が付けられているので、プロパティ解析（ステップＳ５）の対象とされるが、|=>を含んでいるので、図１１に示すように、|=>より前の文字列「{req ; !ack}」は、SEQUENCEと名前が付けられ、要素１９の子要素２０とされる。また、|=>より後ろの文字列「{[*0:3];ack}」は、SEQUENCEと名前が付けられ、要素１９の子要素２１とされる。
【００７０】
次に、図１１に示す要素２０の文字列は、SEQUENCEと名前が付けられているので、シーケンス解析（ステップＳ８）の対象とされるが、図１２に示すように、{}で挟まれた文字列「req ; !ack」は、SEREと名前が付けられ、要素２０の子要素２２とされる。
【００７１】
次に、図１２に示す要素２２の文字列は、SEREと名前が付けられているので、シア解析（ステップＳ９）の対象とされるが、；が含まれているので、図１３に示すように、;より前の文字列「req」は、BOOLEANと名前が付けられ、要素２２の子要素２３とされる。また、;より後ろの文字列「!ack」は、BOOLEANと名前が付けられ、要素２２の子要素２４とされる。
【００７２】
また、図１１に示す要素２１の文字列は、SEQUENCEと名前が付けられているので、シーケンス解析（ステップＳ８）の対象とされるが、図１４に示すように、{}で挟まれた文字列「[*0:3];ack」は、SEREと名前が付けられ、要素２１の子要素２５とされる。
【００７３】
次に、図１４に示す要素２５の文字列は、SEREと名前が付けられているので、シア解析（ステップＳ９）の対象とされるが、図１５に示すように、;で区切られる文字で[*  ]からなる文字列「[*0:3]」は、COUNTと名前が付けられ、要素２５の子要素２６とされる。また、;より後ろの文字列「ack」は、BOOLEANと名前が付けられ、要素２５の子要素２７とされる。
【００７４】
次に、図１５に示す要素２６の文字列は、COUNTと名前が付けられているので、カウント解析（ステップＳ１０）の対象とされるが、図１６に示すように、[*  ]で構成される要素の中の文字列「0:3」は、RANGEと名前が付けられ、要素２６の子要素２８とされる。
【００７５】
次に、図１６に示す要素２８の文字列は、RANGEと名前が付けられているので、レンジ解析（ステップＳ１１）の対象とされるが、：で区切られているので、図１７に示すように、：の前の数字「0」は、NUMBERと名前が付けられ、要素２８の子要素２９とされる。また、：の後ろの数字「3」は、NUMBERと名づけられ、要素２８の子要素３０とされる。
【００７６】
また、図８に示す要素１６の文字列は、CLOCK BOOLEANと名前が付けられているので、クロック解析（ステップＳ６）の対象とされるが、図１８に示すように、posedgeで始まる文字列「posedge clk」は、HDL CLK EXPRと名前が付けられ、要素１６の子要素３１とされる。以上のようにして、構文木生成手段３は、図５に示すような構文木を生成することになる。
【００７７】
図１９は関連付け手段５による関連付け動作例を説明するための図である。構文木生成手段３が図２に示す検証プロパティ１Ａについて図５に示す構文木を生成すると、関連付け手段５は、構文木生成手段３が生成した図５に示す構文木中の要素に辞書４内の辞書情報を関連付けする。
【００７８】
本例の場合、要素１２を最上位とする構文木は「property IDENTIFIER = Property」という構造になっているので、この構文木には、辞書４のNo.1欄の辞書情報「プロパティIDENITIFIERは以下の通り。Property」が対応する。したがって、要素１２には「プロパティ..は以下の通り。」が関連付けられる。
【００７９】
また、要素１４を最上位とする構文木は「FL_Property @ CLOCK BOOLEAN」という構造になっているので、要素１４には、辞書４のNo.2欄の辞書情報「CLOCK BOOLEANのクロックで動作する。FL_Property」が対応し、「〜のクロックで動作する。」が関連付けられる。
【００８０】
また、要素１５を最上位とする構文木は「FL_Property abort BOOLEAN」という構造になっているので、要素１５には、辞書４のNo.3欄の辞書情報「BOOLEANでアボートする。FL_Property」が対応し、「でアボートする。」が関連付けられる。
【００８１】
また、要素１７を最上位とする構文木は「always FL_Property」という構造になっているので、要素１７には、辞書４のNo.4欄の辞書情報「FL_Propertyが常に成り立つ。」が対応し、「〜が常に成立する。」が関連付けられる。
【００８２】
また、要素１９を最上位とする構文木は「SEQUENCE1 |=> FL_Property」という構造になっているので、この要素１９には、辞書４のNo.5欄の辞書情報「Sequence1ならばFL_Property」が対応し、「〜ならば〜」が関連付けられる。
【００８３】
また、要素２２を最上位とする構文木は「SERE1 ; SERE2」という構造になっているので、要素２２には、辞書４のNo.6欄の辞書情報「SERE1、次にSERE２」が対応し、「〜、次に」が関連付けられる。
【００８４】
また、要素２５を最上位とする構文木は「SERE1 ; SERE2」という構造になっているので、要素２５には、辞書４のNo.6欄の辞書情報「SERE1、次にSERE２」が対応し、「〜、次に」が関連付けられる。
【００８５】
また、要素２６を最上位とする構文木は「[*COUNT]」という構造になっているので、要素２６には、辞書４のNo.7欄の辞書情報「COUNT続く」が対応し、「続く」が関連付けられる。
【００８６】
また、要素２８を最上位とする構文木は「NUMBER1 : NUMBER2」という構造になっているので、要素２８には、辞書４のNo.8欄の辞書情報「NUMBER1からNUMBER2の間」が対応し、「〜から〜の間」が関連付けられる。なお、前の「〜」は、図上で左側の子要素２９に対応し、後ろの「〜」は図上で右側の子要素３０に対応している。
【００８７】
図２０は文章生成手段６による自然言語文章生成動作例を説明するための図である。関連付け手段５が図５に示す構文木に図１９に示すように辞書情報を関連付けると、文章生成手段６は、構文木の要素と辞書４との比較を行い、構文木の要素に対応する自然言語を辞書４から取り出して、構文木の要素を辞書４から取り出した自然言語と置き換え、自然言語に置き換えた末端の要素を一つ上の要素に組み込むという動作を構文木の上位に向けて繰り返し行うことにより、検証プロパティ１Ａに対応する自然言語文章を生成する。
【００８８】
なお、自然言語に置き換えた要素を一つ上位の要素に組み込む場合、組み込む位置は、置き換え済みの自然言語に示されているが、上の要素に、対応する自然言語がない場合には、下の要素がそのまま入る。
【００８９】
本例では、末端の要素２９に属する文字は数字「0」、同じく末端の要素３０に属する文字は数字「3」であるが、信号の名前や数字などは自然言語と対応付ける必要がないため、そのまま使用される。そこで、要素２８は、自然言語文章「0から3の間」に変換され、要素２６は、自然言語文章「0から3の間続く」に変換され、要素２５は、自然言語文章「0から3の間続く、次にack」に変換され、要素２１には、要素２５の自然言語文章「0から3の間続く、次にack」がそのまま入る。
【００９０】
また、要素２２は、自然言語文章「req、次に!ack」に変換され、要素２０には、要素２２の自然言語文章「req、次に!ack」がそのまま入る。そして、要素１９は、自然言語文章「req、次に!ackならば0から3の間続く、次にack」に変換され、要素１７は、自然言語文章「req、次に!ackならば0から3の間続く、次にackが常に成立する。」に変換される。
【００９１】
また、要素１５は、自然言語文章「req、次に!ackならば0から3の間続く、次にackが常に成立する。!rstでアボートする。」に変換される。また、要素１６には、要素３１の自然言語文章「posedge clk」がそのまま入る。そして、要素１４は、自然言語文章「req，次に!ackならば0から3の間続く、次にackが常に成立する。!rstでアボートする。posedge clkのクロックで動作する。」に変換される。
【００９２】
この結果、要素１２は、自然言語文章「プロパティAは以下の通り。req，次に!ackならば0から3の間続く、次にackが常に成立する。!rstでアボートする。posedge clkのクロックで動作する。」に変換される。したがって、文章出力手段７は、図２に示す検証プロパティ１Ａに対して、図２１に示すような自然言語文章８Ａを出力することになる。
【００９３】
図２２は本発明の文章生成方法の第１実施形態を実施するためのコンピュータ・システムの概略的構成図である。図２２中、３３はＣＰＵ（central processing unit）、３４はＲＯＭ（read only memory）、３５はＲＡＭ（random access memory）、３６はキーボード、マウス等の入力装置、３７は液晶表示装置などの表示装置、３８はプリンタ、３９はフレキシブルディスク装置（ＦＤＤ）、４０はフレキシブルディスク装置３９により駆動されるフレキシブルディスク（ＦＤ）、４１は通信装置である。
【００９４】
また、４２はハードディスク装置（ＨＤＤ）、４３はハードディスク装置４２により駆動されるハードディスク（ＨＤ）であり、ハードディスク４３は、本発明の文章生成プログラムの第１実施形態４４、検証プロパティ１、辞書４及び自然言語文章８などの格納に使用される。本発明の文章生成プログラムの第１実施形態４４には、構文木生成プログラム４５、関連付けプログラム４６及び文章生成プログラム４７が含まれる。
【００９５】
構文木生成プログラム４５は、ＣＰＵ３３を構文木生成手段３として機能させるものである。関連付けプログラム４６は、ＣＰＵ３３を関連付け手段５として機能させるものである。文章生成プログラム４７は、ＣＰＵ３３を文章生成手段６として機能させるものである。なお、検証プロパティ入力手段２は、入力装置３６、フレキシブルディスク装置３９又は通信手段４１とＣＰＵ３３とで構成され、文章出力手段４６は、表示装置３７、プリンタ３８又はフレキシブルディスク装置３９とＣＰＵ３３とで構成される。
【００９６】
以上のように、本発明の文章生成方法の第１実施形態においては、検証プロパティ入力手段２は、検証プロパティ１を入力し、構文木生成手段３は、検証プロパティ入力手段２が入力した検証プロパティ１の文字列を木構造に展開して構文木を生成し、関連付け手段５は、構文木生成手段３が生成した構文木中の文法要素に辞書４内の辞書情報を関連付け、文章生成手段６は、関連付け手段５が辞書情報を関連付けた構文木を自然言語文章８に変換し、文章出力手段７は、文章生成手段６が生成した自然言語文章８を出力するので、検証プロパティ１の意味内容を説明する自然言語文章８が自動生成される。
【００９７】
したがって、本発明の文章生成方法の第１実施形態によれば、検証プロパティ１に説明が併記されておらず、また、検証プロパティ記述言語の知識がなくても、検証プロパティ１の意味内容を容易に理解することができる。したがって、また、検証プロパティ作成者は、自然言語による説明を作成する必要がなく、説明の書き忘れや、説明の修正忘れを避け、説明の間違いという事態を避けることができる。
【００９８】
（第２実施形態）
本発明の文章生成方法の第２実施形態はコンピュータ・システム及び本発明の文章生成プログラムの第２実施形態を使用して実施されるものであり、図２３は本発明の文章生成方法の第２実施形態を実施するためのコンピュータ・システムの機能ブロック図である。図２３に示すコンピュータ・システムは、図１に示すコンピュータ・システムに登録手段５０と、検証プロパティ情報データベース５１と、検索語入力手段５２と、検索手段５３と、検索結果出力手段５４を付加したものである。
【００９９】
登録手段５０は、検証プロパティ１と、文章出力手段６が出力する検証プロパティ１に対応する自然言語文章８と、検証プロパティ１に関連する付加情報５５とを一組にしてなる検証プロパティ情報を生成し、これを検証プロパティ情報データベース５１に登録するものである。すなわち、検証プロパティ情報は、異なる検証プロパティごとに作成され、検証プロパティ情報データベース５１に登録される。なお、付加情報５５は、登録対象外としても良い。
【０１００】
図２４は登録手段５０が生成した検証プロパティ情報の一例を示す図であり、図２に示す検証プロパティ１Ａについて作成された検証プロパティ情報を示している。本例では、PROPERTYの欄には、図２に示す検証プロパティ１Ａの文字列が記述され、DESCRIPTIONの欄には、検証プロパティ１Ａについて生成された自然言語文章が記述されている。また、TYPE、SPEC、MEMOの各欄は、付加情報５５を記述する欄である。
【０１０１】
TYPEの欄はチェッカーの種類を記述する欄であり、本例では、INTERFACE CHECKER（インタフェース・チェッカー）と記述されているが、その他に、FIFOチェッカーや、レジスタ・チェッカーなどが記述されることが考えられる。SPECの欄は、対応する仕様を記述する欄であり、本例では、AHB MASTER（AHBマスタ・インタフェース）と記述されているが、その他に、AHB SLAVEやAXI MASTERなどが記述されることが考えられる。MEMOの欄は付記を記述する欄であり、本例では、RECOMMENDED（「使用を推奨する」の意味）と記述されているが、その他に、使用上の注意点などが記述されることが考えられる。
【０１０２】
また、検索語入力手段５２は、検索語５６を入力するためのものである。検索手段５３は、検証プロパティ情報データベース５１から、検索語入力手段５２が入力した検索語５６を検索するものである。検索結果出力手段５４は、検索語５６を含む検証プロパティ情報を検索結果５７として出力するものである。
【０１０３】
本発明の文章生成方法の第２実施形態は、本発明の文章生成方法の第１実施形態が行う工程の他に、登録手段５０が、検証プロパティ１と、文章出力手段７が出力する検証プロパティ１に対応する自然言語文章８と、検証プロパティ１に関連する付加情報５５とを一組の検証プロパティ情報として検証プロパティ情報データベース５１に登録する工程と、検索語入力手段５２が検索語５６を入力する工程と、検索手段５３が、検証プロパティ情報データベース５１から検索語５６を検索する工程と、検索結果出力手段５４が、検索語５６を含む検証プロパティ情報を検索結果５７として出力する工程を有するものである。
【０１０４】
図２５は、検索語入力手段５２から、検索語５６として、「AHB MASTER」及び「0から3」を入力した場合に検索結果出力手段５４から出力される検索結果５７の一例の一部分を示す図である。本実施形態では、検索語を含む検証プロパティ情報は全て出力される。
【０１０５】
図２６は本発明の文章生成方法の第２実施形態を実施するためのコンピュータ・システムの概略的構成図である。図２６に示すコンピュータ・システムは、図２２に示すコンピュータ・システムのハードディスク４３に、本発明の文章生成プログラムの第１実施形態４４の代わりに、本発明の文章生成プログラムの第２実施形態６０を格納し、その他については、図２２に示すコンピュータ・システムと同様に構成したものである。
【０１０６】
本発明の文章生成プログラムの第２実施形態６０は、本発明の文章生成プログラムの第１実施形態４４に、登録プログラム６１と検索プログラム６２を追加したものである。登録プログラム６１は、ＣＰＵ３３を登録手段５０として機能させるものである。検索プログラム６２は、ＣＰＵ３３を検索手段５３として機能させるものである。なお、検索語入力手段５２は、入力装置３６とＣＰＵ３３とで構成され、検索結果出力手段５４は、表示装置３７又はプリンタ３８とＣＰＵ３３とで構成される。
【０１０７】
本発明の文章生成方法の第２実施形態においては、検証プロパティ入力手段２は、検証プロパティ１を入力し、構文木生成手段３は、検証プロパティ入力手段２が入力した検証プロパティ１の文字列を木構造に展開して構文木を生成し、関連付け手段５は、構文木生成手段３が生成した構文木中の文法要素に辞書４内の辞書情報を関連付け、文章生成手段６は、関連付け手段５が辞書情報を関連付けた構文木を自然言語文章に変換し、文章出力手段７は、文章生成手段６が生成した自然言語文章を出力するので、検証プロパティの意味内容を説明する自然言語文章が自動生成される。
【０１０８】
また、登録手段５０は、検証プロパティ１と、文章出力手段７が出力する検証プロパティ１に対応する自然言語文章８と、検証プロパティ１に関連する付加情報５５とを一組の検証プロパティ情報として検証プロパティ情報データベース５１に登録して保存し、検索手段５３は、検証プロパティ情報データベース５１から検索語５６を検索し、検索結果出力手段５４は、検索語５６を含む検証プロパティ情報の全てを検索結果５７として出力する。
【０１０９】
したがって、本発明の文章生成方法の第２実施形態によれば、第１の発明と同様の効果を得ることができると共に、検証プロパティと自動生成した自然言語文章とを必要に応じて容易に利用することができる。したがって、また、同じ仕様で異なる実装の論理回路の動作検証を行う場合に、重複した検証プロパティを作成したり、同じ検証プロパティを探しても見つからなかったりという事態を回避することができる。
【０１１０】
（第３実施形態）
本発明の文章生成方法の第３実施形態はコンピュータ・システム及び本発明の文章生成プログラムの第３実施形態を使用して実施されるものであり、図２７は本発明の文章生成方法の第３実施形態を実施するためのコンピュータ・システムの機能ブロック図である。図２７に示すコンピュータ・システムは、図１に示すコンピュータ・システムに異常情報入力手段６５と、異常位置情報付加手段６６とを付加し、その他については、図１に示すコンピュータ・システムと同様に構成したものである。
【０１１１】
異常情報入力手段６５は、論理シミュレータが検証プロパティ１を組み込んだ論理回路について論理シミュレーションを実行して出力した異常情報６７を入力するものである。異常位置情報付加手段６６は、異常情報入力手段６５から入力された異常情報６７から異常位置情報を抽出し、この異常位置情報を構文木生成手段３が生成した構文木に付加するものである。
【０１１２】
本発明の文章生成方法の第３実施形態は、検証プロパティ入力手段２が検証プロパティ１を入力する工程と、構文木生成手段３が、検証プロパティ入力手段２が入力した検証プロパティ１の文字列を木構造に展開して構文木を生成する工程と、異常情報入力手段６５が、論理シミュレータが出力した異常情報６７を入力する工程と、異常位置情報付加手段６６が、構文木生成手段３が生成した構文木に、異常情報入力手段６５が入力した異常情報６７から異常位置情報を抽出して付加する工程と、関連付け手段５が、異常位置情報付加手段６６が出力する構文木中の文法要素に辞書４内の辞書情報を関連付ける工程と、文章生成手段６が、関連付け手段５が辞書情報を関連付けた構文木を自然言語文章に変換する工程と、文章出力手段７が、文章生成手段６が生成した自然言語文章を出力する工程を有するものである。
【０１１３】
図２８〜図３０は本発明の文章生成方法の第３実施形態の具体例を説明するための図である。本具体例では、図２に示す検証プロパティ１Ａが検証プロパティ入力手段２から入力されるものとする。すると、構文木生成手段３は、本発明の文章生成方法の第１実施形態の場合と同様に、図２８に示す構文木を生成する。そして、本実施形態では、構文木生成手段３は、更に、各要素に属する文字列の先頭の文字の位置情報を記録する。
【０１１４】
図２８において、各要素に付されている「1:1」や「1:5」などの「Ｘ：Ｙ」という記述は、各要素に属する文字列の先頭の文字の位置情報であり、Ｘは各要素に属する文字列の先頭の文字が存在する検証プロパティ１Ａ中の行の位置、Ｙは各要素に属する文字列の先頭の文字の行中の位置（行の先頭から文字数を数えた位置）を示している。したがって、例えば、要素１２については、「1:5」という位置情報が記録されているので、要素１２の文字列「property = 」の先頭の「p」は、検証プロパティ１Ａの１行目の５文字目にあることが分る。
【０１１５】
図２９は論理シミュレータが出力する異常情報６７の具体例を示す図である。この例では、検証プロパティ１Ａの文字列の一行下に「|」の文字があり、これが異常を検出した位置を表している。異常位置情報付加手段６６は、「|」の位置を検証プロパティ１Ａの文字列の先頭から数えることで、１行目の５３文字目「1:53」が異常検出箇所であることを抽出する。
【０１１６】
そして、異常位置情報付加手段６６は、異常検出箇所の位置情報「1:53」が図２８に示す構文木中のどこに対応するかを、構文木の要素の位置情報「Ｘ：Ｙ」を調べることで特定する。これは、上位の要素の位置情報から、下位の要素の位置情報を見て、上位の要素の位置情報が含まれる下位の要素を手繰っていくことで行うことができる。
【０１１７】
本具体例では、最上位の要素１１は下位に要素１２を持っているので、要素１２（位置情報「1:5」）を調べる。要素１２は、下位に要素１３（位置情報「1:14」）と要素１４（位置情報「1:68」）を持っているが、異常検出個所は、「1:53」の位置であるから、要素１４に含まれていることが分る。要素１４は、下位に要素１５（位置情報「1:57」）と要素１６（位置情報「1:70」）を持つが、要素１６の文字列の先頭箇所の数値は異常検出個所の数値より大きいので、異常検出箇所は、要素１５に含まれることが分る。
【０１１８】
要素１５は、下位に要素１７（位置情報「1:18」）と要素１８（位置情報「1:63」）を持つが、要素１８の文字列の先頭箇所の数値は異常検出個所の数値より大きいので、異常検出箇所は、要素１７に含まれることが分る。要素１７は、下位に要素１９（位置情報「1:40」）のみを持つので、要素１９（位置情報「1:40」）の下位の要素２０（位置情報「1:27」）と要素２１（位置情報「1:44」）を調べると、異常検出箇所は、要素２１に含まれていることが分る。
【０１１９】
要素２１は、下位に要素２５（位置情報「1:51」）のみを持つので、更に下位の要素２６（位置情報「1:45」）と要素２７（位置情報「1:52」）を調べる。ここで、異常検出個所は「1:53」であり、要素２７に下位の要素はないので、異常検出個所は、要素２７に含まれることが分る。そこで、異常位置情報付加手段６６は、要素２７に異常検出箇所があることを示す異常位置情報として所定のマークを付ける（図２８では説明の都合上、破線６８で囲んでいる）。
【０１２０】
このように、異常位置情報付加手段６６が異常検出箇所のある要素に所定のマークを付加すると、関連付け手段５は、異常位置情報付加手段６６が出力する構文木中の文法要素に辞書４内の辞書情報を関連付けるが、異常検出箇所があることを示す所定のマークが付加されている要素の場合には、例えば、“でない”といった否定形の自然言語を関連付ける。本具体例の場合、要素２７には、異常検出箇所が存在することを示す所定のマークが付加されているので、自然言語文章「ack“でない”」を関連付ける。
【０１２１】
図３０は文章生成手段６による図２に示す検証プロパティ１Ａ及び図２９に示す異常情報６７に対応する自然言語文章生成動作例を説明するための図である。本例では、末端の要素２９に属する文字は数字「0」、同じく末端の要素３０に属する文字は数字「3」であるが、信号の名前や数字などは自然言語と対応付ける必要がないため、そのまま使用される。
【０１２２】
そこで、要素２８は、自然言語文章「0から3の間」に変換され、要素２６は、自然言語文章「0から3の間続く」に変換され、要素２５は、自然言語文章「0から3の間続く、次にack“でない”」に変換され、要素２１には、要素２５の自然言語文章「0から3の間続く、次にack“でない”」がそのまま入る。
【０１２３】
要素２２は、自然言語文章「req、次に!ack」に変換され、要素２０には、要素２２の自然言語文章「req、次に!ack」がそのまま入る。この結果、要素１９は、自然言語文章「req、次に!ackならば0から3の間続く、次にack“でない”」に変換される。
【０１２４】
ここで、異常に関するメッセージは、全体を自然言語文章に変換する必要がないので、異常検出箇所が分る限度で自然言語文章への変換操作を終了する。本例では、要素１７の「always」の部分で自然言語文章への変換を終了している。したがって、この場合には、文章出力手段７は、自然言語文章８として、「req、次に!ackならば0から3の間続く、次にack“でない”」を出力することになる。
【０１２５】
図３１は本発明の文章生成方法の第３実施形態を実施するためのコンピュータ・システムの概略的構成図である。図３１に示すコンピュータ・システムは、図２２に示すコンピュータ・システムのハードディスク４３に、本発明の文章生成プログラムの第１実施形態４４の代わりに、本発明の文章生成プログラムの第３実施形態７０を格納し、その他については、図２２に示すコンピュータ・システムと同様に構成したものである。
【０１２６】
本発明の文章生成プログラムの第３実施形態７０は、本発明の文章生成プログラムの第１実施形態４４に異常位置情報付加プログラム７１を追加したものである。異常位置情報付加プログラム７１は、ＣＰＵ３３を異常位置情報付加手段６６として機能させるものである。なお、異常情報入力手段６５は、フレキシブルディスク装置３９又は通信装置４１とＣＰＵ３３とで構成される。
【０１２７】
本発明の文章生成方法の第３実施形態においては、構文木生成手段３は、検証プロパティ入力手段２が入力した検証プロパティの文字列を木構造に展開して構文木を生成し、異常位置情報付加手段６６は、構文木生成手段３が生成した構文木に、異常情報入力手段６５が入力した異常情報から異常位置情報を抽出して付加し、関連付け手段５は、異常位置情報付加手段６６が出力する構文木中の文法要素に辞書４内の辞書情報を関連付け、文章生成手段６は、異常位置情報が付加され、辞書情報が関連付けられた構文木を自然言語文章に変換し、文章出力手段７は、文章生成手段６が生成した自然言語文章を出力するので、異常を容易に特定することができる自然言語文章が自動生成される。
【０１２８】
したがって、本発明の文章生成方法の第３実施形態によれば、論理回路について論理シミュレーションを行う者が、検証プロパティ記述言語の知識を有していなくても、容易に異常を特定することができる。
【０１２９】
なお、本発明の文章生成方法の第３実施形態においては、異常検出個所を含む文字列に「“でない”」を付加するようにしたが、他の要素と区別することができるものであれば、記号やマークなどを付加するようにしても良い。また、本発明の文章生成方法の第３実施形態においては、構文木生成手段３により構文木を生成しているが、論理シミュレータの出力から構文木の要素を直接知ることができれば、構文木生成手段３による構文木の生成を実行しないようにしても良い。
【０１３０】
ここで、本発明を整理すると、本発明には、少なくとも、以下の文章生成方法および文章生成プログラムが含まれる。
【０１３１】
（付記１）構文木生成手段が、論理回路の検証プロパティを構文解析し、該構文解析の結果を木構造で表した構文木を生成する工程と、検証プロパティ記述言語の文法要素と該文法要素に対応する自然言語とを関連付けた辞書情報を元に、関連付け手段が、前記構文木に前記辞書情報を関連付ける工程と、文章生成手段が、前記辞書情報を関連付けた前記構文木を自然言語文章に変換する工程とを含むことを特徴とする文章生成方法。
【０１３２】
（付記２）登録手段が、少なくとも前記検証プロパティと前記自然言語文章とを組にしてプロパティ情報として記憶手段に登録する工程と、検索手段が、入力された検索語を前記記憶手段から検索する工程と、検索結果出力手段が、前記検索語を含むプロパティ情報を出力する工程とを含むことを特徴とする付記１に記載の文章生成方法。
【０１３３】
（付記３）構文木生成手段が、論理回路の検証プロパティを構文解析し、該構文解析の結果を木構造で表した構文木を生成する工程と、異常位置情報付加手段が、前記構文木に前記論理回路の論理シミュレーションにより得られる異常情報から異常位置情報を抽出して付加する工程と、検証プロパティ記述言語の文法要素と該文法要素に対応する自然言語とを関連付けた辞書情報を元に、関連付け手段が、前記異常位置情報を付加した前記構文木に前記辞書情報を関連付ける工程と、文章生成手段が、前記異常位置情報が付加され、前記辞書情報が関連付けられた前記構文木を自然言語文章に変換する工程とを含むことを特徴とする文章生成方法。
【０１３４】
（付記４）コンピュータを、論理回路の検証プロパティを構文解析し、該構文解析の結果を木構造で表した構文木を生成する構文木生成手段、検証プロパティ記述言語の文法要素と該文法要素に対応する自然言語とを関連付けた辞書情報を元に、前記構文木に前記辞書情報を関連付ける関連付け手段、および、前記辞書情報を関連付けた前記構文木を自然言語文章に変換する文章生成手段として機能させるプログラムを含むことを特徴とする文章生成プログラム。
【０１３５】
（付記５）前記コンピュータを、少なくとも前記検証プロパティと前記自然言語文章とを組にしてプロパティ情報として記憶手段に登録する登録手段、入力された検索語を前記記憶手段から検索する検索手段、および、前記検索語を含むプロパティ情報を出力する検索結果出力手段として機能させるプログラムを含むことを特徴とする付記４に記載の文章生成プログラム。
【０１３６】
（付記６）コンピュータを、論理回路の検証プロパティを構文解析し、該構文解析の結果を木構造で表した構文木を生成する構文木生成手段、前記構文木に前記論理回路の論理シミュレーションにより得られる異常情報から異常位置情報を抽出して付加する異常位置情報付加手段、検証プロパティ記述言語の文法要素と該文法要素に対応する自然言語とを関連付けた辞書を元に、前記異常位置情報が付加された前記構文木に前記辞書情報を関連付ける関連付け手段、および、前記異常位置情報が付加され、前記辞書情報が関連付けられた前記構文木を自然言語文章に変換する文章生成手段として機能させるプログラムを含むことを特徴とする文章生成プログラム。
【図面の簡単な説明】
【０１３７】
【図１】本発明の文章生成方法の第１実施形態を実施するためのコンピュータ・システムの機能ブロック図である。
【図２】図１に示すコンピュータ・システムを構成する検証プロパティ入力手段が入力する検証プロパティの例を示す図である。
【図３】図１に示すコンピュータ・システムを構成する辞書の構成例を示す図である。
【図４】図１に示すコンピュータ・システムを構成する構文木生成手段で図２に示す検証プロパティについて実行された構文木生成工程を示すフローチャートである。
【図５】図１に示すコンピュータ・システムを構成する構文木生成手段が図２に示す検証プロパティについて生成する構文木を示す図である。
【図６】図５に示す構文木の生成工程を示す図である。
【図７】図５に示す構文木の生成工程を示す図である。
【図８】図５に示す構文木の生成工程を示す図である。
【図９】図５に示す構文木の生成工程を示す図である。
【図１０】図５に示す構文木の生成工程を示す図である。
【図１１】図５に示す構文木の生成工程を示す図である。
【図１２】図５に示す構文木の生成工程を示す図である。
【図１３】図５に示す構文木の生成工程を示す図である。
【図１４】図５に示す構文木の生成工程を示す図である。
【図１５】図５に示す構文木の生成工程を示す図である。
【図１６】図５に示す構文木の生成工程を示す図である。
【図１７】図５に示す構文木の生成工程を示す図である。
【図１８】図５に示す構文木の生成工程を示す図である。
【図１９】図１に示すコンピュータ・システムを構成する関連付け手段による関連付け動作例を説明するための図である。
【図２０】図１に示すコンピュータ・システムを構成する文章生成手段による自然言語文章生成動作例を説明するための図である。
【図２１】図１に示すコンピュータ・システムを構成する文章出力手段が図２に示す検証プロパティについて出力する自然言語文章例を示す図である。
【図２２】本発明の文章生成方法の第１実施形態を実施するためのコンピュータ・システムの概略的構成図である。
【図２３】本発明の文章生成方法の第２実施形態を実施するためのコンピュータ・システムの機能ブロック図である。
【図２４】本発明の文章生成方法の第２実施形態で作成される検証プロパティ情報の一例を示す図である。
【図２５】本発明の文章生成方法の第２実施形態を構成する検索結果出力手段が出力する検索結果の一例の一部分を示す図である。
【図２６】本発明の文章生成方法の第２実施形態を実施するためのコンピュータ・システムの概略的構成図である。
【図２７】本発明の文章生成方法の第３実施形態を実施するためのコンピュータ・システムの機能ブロック図である。
【図２８】図２７に示すコンピュータ・システムを構成する構文木生成手段が図２に示す検証プロパティについて生成する構文木を示す図である。
【図２９】図２７に示すコンピュータ・システムを構成する異常情報入力手段が入力する異常情報の具体例（論理シミュレータが出力する異常情報の具体例）を示す図である。
【図３０】図２７に示すコンピュータ・システムを構成する文章生成手段による自然言語文章生成動作例を説明するための図である。
【図３１】本発明の文章生成方法の第３実施形態を実施するためのコンピュータ・システムの概略的構成図である。
【符号の説明】
【０１３８】
１、１Ａ…検証プロパティ
２…検証プロパティ入力手段
３…構文木生成手段
４…辞書
５…関連付け手段
６…文章生成手段
７…文章出力手段
８…自然言語文章
１１〜３１…構文木の要素
３３…ＣＰＵ
３４…ＲＯＭ
３５…ＲＡＭ
３６…入力装置
３７…表示装置
３８…プリンタ
３９…フレキシブルディスク装置
４０…フレキシブルディスク
４１…通信装置
４２…ハードディスク装置
４３…ハードディスク
４４…本発明の文章生成プログラムの第１実施形態
４５…構文木生成プログラム
４６…関連付けプログラム
４７…文章生成プログラム
５０…登録手段
５１…検証プロパティ情報データベース
５２…検索語入力手段
５３…検索手段
５４…検索結果出力手段
５５…付加情報
５６…検索語
５７…検索結果
６０…本発明の文章生成プログラムの第２実施形態
６１…登録プログラム
６２…検索プログラム
６５…異常情報入力手段
６６…異常位置情報付加手段
６７…異常情報
７０…本発明の文章生成プログラムの第３実施形態
７１…異常位置情報付加プログラム
【図１】
2008225723.tif 000003
【図２】
2008225723.tif 000004
【図３】
2008225723.tif 000005
【図４】
2008225723.tif 000006
【図５】
2008225723.tif 000007
【図６】
2008225723.tif 000008
【図７】
2008225723.tif 000009
【図８】
2008225723.tif 000010
【図９】
2008225723.tif 000011
【図１０】
2008225723.tif 000012
【図１１】
2008225723.tif 000013
【図１２】
2008225723.tif 000014
【図１３】
2008225723.tif 000015
【図１４】
2008225723.tif 000016
【図１５】
2008225723.tif 000017
【図１６】
2008225723.tif 000018
【図１７】
2008225723.tif 000019
【図１８】
2008225723.tif 000020
【図１９】
2008225723.tif 000021
【図２０】
2008225723.tif 000022
【図２１】
2008225723.tif 000023
【図２２】
2008225723.tif 000024
【図２３】
2008225723.tif 000025
【図２４】
2008225723.tif 000026
【図２５】
2008225723.tif 000027
【図２６】
2008225723.tif 000028
【図２７】
2008225723.tif 000029
【図２８】
2008225723.tif 000030
【図２９】
2008225723.tif 000031
【図３０】
2008225723.tif 000032
【図３１】
2008225723.tif 000033