【事件の表示】
　平成１１年特許願第２９０２７６号「シミュレーションモデルの生成方法、シミュレーション方法及びその記録媒体、シミュレーションモデル生成装置、シミュレーション装置」拒絶査定不服審判事件〔平成１３年　４月２０日出願公開、特開２００１−１０９７８８〕について、次のとおり審決する。
【結　論】
　本件審判の請求は、成り立たない。
【理　由】
１．手続の経緯・本願発明
　本願は、平成１１年１０月１２日の出願であって、その請求項１に係る発明は、特許請求の範囲の請求項１に記載された次のとおりのものと認める。（以下、「本願発明」という。）　
「【請求項１】機能合成部とクロックレベル検証部とを具備するシミュレーション装置において、資源の制約の下で、前記機能合成部が、回路モジュールを表現するアルゴリズム記述の複数機能を単位クロックの中で動作が可能である部分機能に分解するステップと、
前記単位クロックに相当する状態毎の前記アルゴリズム記述中の変数と前記資源のうちのレジスタの対応関係を示す変数／レジスタ／状態対応表を生成するステップと、
前記クロックレベル検証部が、前記回路モジュールと外部とのインターフェイス情報と前記部分機能と前記変数／レジスタ／状態対応表を組合わせることにより前記アルゴリズム記述からクロックレベル記述のクロックレベルアルゴリズムモデルを生成するステップと具備し、前記クロックレベル記述は、前記単位クロックでの前記資源のうちのレジスタの各々の動作を記述し、前記クロックレベルアルゴリズムモデルは、前記回路モジュールの前記クロックレベル記述であるシミュレーションモデルの生成方法。」
　
２．引用刊行物記載の発明
（１）これに対して、当審において平成１６年１０月１５日付けで通知した拒絶の理由に引用した、若林他、“伝送用ＬＳＩを動作合成で開発，機能設計の期間が１／１０に短縮”、日経エレクトロニクス、１９９６年２月１２日、Ｎｏ．６５５、日経ＢＰ社、ｐ．１４７〜１６９（以下、「刊行物１」という。）には、次の事項が記載されている。
　　ア　「大規模ディジタルＬＳＩやこれを利用した電子機器を設計するための「動作合成ツール」がいよいよ設計の現場に登場し始めている。
　動作合成ツールとは、ハードウエアの動作を表現するアルゴリズムから論理合成ツールに入力するＲＴＬ(register transfer level)記述を生成するＥＤＡツールである。」（１４８頁左欄１〜９行）
　　イ　「従来、アルゴリズム設計の良しあしを設計の早期に評価する効果的な手段がなかった。機能設計後のＲＴＬのシミュレーションで初めて確認していた。ここでアルゴリズムの間違いが見つかると、機能設計に戻って回路を修正し、さらにＲＴＬ記述を修正する必要がある。一方、動作合成を適用した場合には、動作レベルでアルゴリズムを直接シミュレーションできる。つまりアルゴリズムを設計しながら検証や修正ができる。」（１５０頁右欄３〜１４行）
　　ウ　「記述のしやすさという点でみても、動作記述はＲＴＬ記述よりも有利である。これは、(1)動作記述の方が逐次動作を自然に記述できる、(2)より抽象度の高いレベルで記述できるので記述量が少なくてすむ、(3)合成ツールに入力できる記述の制約が緩いなどの理由による。」（１５１頁中欄２行〜１５２頁左欄３行）
　　エ　「当社が開発したＣｙｂｅｒは、詳細なタイミングを記述できるように工夫した動作記述言語「ＢＤＬ(Behavior Description Language)を使用している。ＢＤＬの文法はＣ言語に似ている。逐次動作を流れに従って時間順に記述できる。」（１５２頁左欄１２行〜同中欄５行）
　　オ　「工程１：Ｃ言語の開発環境でデバグ
　まずＢＤＬの動作記述を使ってアルゴリズムを検証する。ＢＤＬはＣ言語の文法を拡張して、タイミング情報を記述できるようにした言語である。入出力端子の宣言やwait文、７ビットなどのデータ型があることを除けば、Ｃ言語とほぼ同じような記述でハードウエアの動作を表現できる。
　Ｃ言語とＢＤＬの違いを吸収するマクロを利用すれば、プリプロセサを使って、動作合成とＣコンパイラの両方に入力できる記述を作成できる。たとえば外部回路との間でデータをやりとりするＢＤＬの動作記述を、Ｃ言語の入出力動作に変換する。こうすれば、アルゴリズムの検証時に動作レベルでシミュレーションする必要がなくなる。ソフトウエア開発用のＣコンパイラとデバガを使ってＢＤＬ記述のデバグを進めることができる。」（１５７頁右欄１行〜１５８頁左欄９行）
　　カ　「クロック同期動作を記述しやすい
動作合成で自動的にスケジューリングを行う場合、動作の並列性などを設計者が明示する必要はない。しかし、スケジューリングを行わない場合、１ステップで並列に実行する動作群を明示する必要がある。通常、１相の同期回路を想定して、クロックの立ち上がりエッジのタイミングをステップの始まりと見なす。たとえばＶＨＤＬでは「wait until clock' event and clock='1';」というステートメントで、クロックの変化点（ＦＳＭの状態の遷移）を記述するＢＤＬはこれを記号「$」で示す（図５参照）。」（１６０頁右欄１行〜１６１頁中欄４行）
　　キ　「ＢＤＬであれば、ループや条件分岐の制御構造のままクロックのタイミングを記述できる（図５のelse $部分）。
　また、ＢＤＬはハンドシェークなどの同期回路を表現するためにwait文を用意している。さらに、演算器やマルチプレクサ、レジスタ、バスの接続関係といったデータパス回路の構造は意識せずに記述できる。
　変数は設計者が必要な数だけ宣言すればよい。これらは動作合成によって最適な数のレジスタに割り当てられる。論理合成では、設計者がハードウエアを意識して記述しないと、レジスタ数や演算器の数が増加してしまう、という問題があった。
　もちろん動作合成ツールを利用する場合、無理に抽象度の高い動作記述で書かなければならないというわけではない。データパス回路の構造を書いた方がわかりやすいときには、構造を詳細に記述してもよい。構造を詳細に記述した部分は、指定しない限り動作合成によって最適化されない。」（１６２頁左欄１〜２６行）
　　ク　「現在、Ｃｙｂｅｒは制約条件として以下の条件を設定できる。
　(1)クロック周期（単位はns）
　(2)使用する演算器（数、ビット幅、種類）
　(3)使用するメモリ（容量、ビット幅、種類）
　(4)使用する入出力端子（本数、ビット幅、種類）
　(5)動作記述の変数と入出力端子の対応などの情報」（１６２頁中欄１５〜２５行）
　
　これら記載事項及び図４（１５０頁）によると、刊行物１には、
「大規模ディジタルＬＳＩを設計するための動作合成ツールにおいて、動作レベルでアルゴリズムを直接シミュレーションでき、入出力端子の宣言を含み１ステップで並列に実行する動作群を明示してクロックの変化点を記述する動作記述言語を用い、変数は動作合成によって最適な数のレジスタに割り当てられるものである方法」の発明が記載されている。
　
（２）また、同じく当審における上記拒絶の理由に引用された特開平５−１０１１４１号公報（以下、「刊行物２」という。）には、図面とともに、次の事項が記載されている。
　　ア　「【従来の技術】近年、ＬＳＩの大規模化が進み、それに伴ってＬＳＩ設計の期間短縮のため、論理回路を自動的に合成する論理合成システムが用いられてきている。論理合成システムを用いて論理回路を設計する際には、機能記述言語により設計対象の動作を記述する必要がある。
【０００３】従来、機能記述言語はレジスタ転送レベルの言語であった。レジスタ転送レベルの言語では、設計対象のレジスタ、演算器などのハードウェア構成及び各動作周期（以下、クロック・サイクルという）毎のレジスタ間のデータの流れと処理を記述する。この言語を用いて論理回路を設計するには、レジスタ、演算器等のハードウェアに関する専門知識が必要とされる。
【０００４】このため、最近ではハードウェアの専門知識を必要としない設計対象の動作のみを記述する動作機能記述（ビヘイビア記述ともいう）から論理回路を合成する高位合成システムによる高位合成装置の開発が行われてきている。動作機能記述ではハードウェアの構成を意識せずに設計対象の動作仕様をプログラムと同様にアルゴリズミックに記述できる。
【０００５】アルゴリズミックに記述された動作を論理回路で実行可能にするためには、前記のように記述された動作を各クロック・サイクル毎に実行される動作に分割する処理、すなわちステート分割の処理が必要となる。１ステートにおける動作は１クロック・サイクルで実行され、異なるステート間における演算データの受け渡しにはレジスタが用いられる。
【０００６】この高位合成システムでは、動作機能記述で表わされた設計対象の動作のステート分割の処理を行い、ステート間で演算データの受け渡しがある場合、その演算データに対応した動作機能記述中の演算対象となる変数をレジスタに割付ける。」（２頁１欄４５行〜同２欄２６行）
　　イ　「【００４５】次に、図１で示した変数解析部３における、ステート分割後の各ステートで必要とされるレジスタの求め方を説明する。
【００４６】図２は、この変数解析部３による処理手順を示すフローチャートである。
【００４７】まず、最初のステート中の変数の解析を実行する（ステップ１０１）。その結果、次のステートに受け渡される変数を、変数名とステートの番号と変数の属する演算の組としてレジスタ・リスト記憶部４に登録する（ステップ１０２）。この操作を各ステートに渡り繰り返す（ステップ１０２〜１０４）。
（中略）
【００５９】以下、図１９で示したデータフローのマージ方法を、図４及びマージ規則を用いて説明する。
【００６０】まず、マージ規則１を適用する事により、１つの加算器で実行したい演算の入力変数ｘ２に対応したレジスタｘ２はステート１に、ｘ１はステート２に属しているので、これら２つのレジスタｘ１，ｘ２はマージ可能である（ステップ２０１〜２０３）。この結果、レジスタｘ１とｘ２がマージされる（ステップ２０４）。
【００６１】同様にステート１に属するレジスタｘ３とステート２に属するレジスタｙ１がマージ規則１によりマージ可能であるため、マージされる（ステップ２０１〜２０４）。
【００６２】次に、マージ規則２を適用する前に、ステート２に同一の変数ｙ１が現われているので、レジスタｘ３とｙ１とのマージ操作に関与しない、乗算への入力変数ｙ１をレジスタ・リスト記憶部４から削除する。そして、出力変数ｙ１とｚ１とに対応したレジスタをマージする（ステップ２０５，２０６）。
【００６３】さらに、マージ規則５，６を適用することにより、図５に示すレジスタ割付けの結果が得られる。図５から分かるように、ステート１で用いられるレジスタｘ２とステート２で用いられるレジスタｘ１とが共用化されている。他のレジスタも同様に共用化されている。」（５頁７欄８行〜同８欄２３行）
　
３．対比
　本願発明と刊行物１に記載された発明とを対比すると、刊行物１に記載された発明の「大規模ディジタルＬＳＩ」は、本願発明の「回路モジュール」に相当し、刊行物１に記載された発明の「動作合成ツール」はシミュレーションを行うものであるから「シミュレーション装置」ということができ、刊行物１記載の発明の「１ステップで並列に実行する動作群を明示してクロックの変化点を記述する」ことの、「１ステップ」は「単位クロック」に相当し、また、この記述はＣ言語による記述（本願発明の「アルゴリズム記述」に相当。）を前提としている（上記２．（１）オ参照。）から、同「１ステップで並列に実行する動作群を明示」とは、本願発明の「回路モジュールを実現するアルゴリズム記述の複数機能を単位クロックの中で動作が可能である部分機能に分解」に相当する。
　また、刊行物１記載の発明では、入出力端子の宣言（本願発明の「回路モジュールと外部とのインターフェイス情報」に相当。）を含む動作記述言語による記述（本願発明の「クロックレベル記述」に相当。）を用いてシミュレーションされ、シミュレーションのためにはモデルが必要なことは自明であるから、刊行物１に記載された発明も「回路モジュールと外部とのインターフェイス情報と前記部分機能により前記アルゴリズム記述からクロックレベル記述のクロックレベルアルゴリズムモデルを生成するステップ」を有するものと認められる。
　してみると、両者は、
「シミュレーション装置において、
回路モジュールを表現するアルゴリズム記述の複数機能を単位クロックの中で動作が可能である部分機能に分解するステップと、
前記回路モジュールと外部とのインターフェイス情報と前記部分機能とにより前記アルゴリズム記述からクロックレベル記述のクロックレベルアルゴリズムモデルを生成するステップと具備する、シミュレーションモデルの生成方法。」
である点で一致しているが、下記の点で相違する。
　
（相違点１）本願発明のシミュレーション装置は機能合成部を具備し、「回路モジュールを表現するアルゴリズム記述の複数機能を単位クロックの中で動作が可能である部分機能に分解するステップ」を、資源の制約の下で、前記機能合成部が具備するのに対し、刊行物１に記載された発明では、前記ステップを人手で行う点。
（相違点２）本願発明の前記機能合成部が、前記単位クロックに相当する状態毎の前記アルゴリズム記述中の変数と前記資源のうちのレジスタの対応関係を示す変数／レジスタ／状態対応表を生成するステップを具備し、さらにクロックレベル検証部を具備し、前記クロックレベル検証部が、前記変数／レジスタ／状態対応表をも組み合わせて前記クロックレベルアルゴリズムモデルを生成するステップを具備し、前記クロックレベル記述は、前記単位クロックでの前記資源のうちのレジスタの各々の動作を記述し、前記クロックレベルアルゴリズムモデルは、前記回路モジュールの前記クロックレベル記述であるのに対し、刊行物１に記載された発明では、シミュレーションの後の動作合成（１５０頁図４(a)参照。）で、変数を最適な数のレジスタに割り当てるが、その割り当てをどのように行うかは明示されていないし、クロックレベル記述はレジスタのおのおのの動作を記述するものではない点。
　　
４．当審の判断
　そこで、上記（相違点１）について検討すると、回路モジュール設計の分野において、人手による作業を自動化することは一般的な課題であるから、刊行物２（上記２．（２）ア参照。）に記載された高位合成システムによるステート分割の技術を適用して、刊行物１に記載された発明の前記「部分機能に分解するステップ」を自動的に行うようにすることは当業者が容易になし得ることである。そしてこの自動化の際に、刊行物１には資源を制約条件とすべきことが記載されている（上記２．（１）ク参照。）から、前記ステップを「資源の制約の下で」行うようにすることは当業者が容易に設計できることである。
　また、上記（相違点２）について検討すると、レジスタの各々の動作を記述しシミュレーションを行うことは従来技術であり（上記２．（１）イ参照。）、また、刊行物１記載の発明も結局変数をレジスタに割り当てるのであるから、シミュレーションの段階で変数をレジスタに割り当て変数の代わりにレジスタの動作を記述することは当業者が容易に考え得ることである。そして、刊行物２には変数をレジスタに割り当てるために変数／レジスタ／状態対応表を生成することが記載されている（上記２．（２）イ参照。）から、この技術を適用して、刊行物１に記載された発明の「クロックレベル記述」をレジスタの各々の動作を記述するものとすることは、当業者が容易になし得ることである。
　
５．むすび
　以上のとおり、本願発明は、刊行物１及び刊行物２に記載された発明に基づいて当業者が容易に発明をすることができたものであるから、特許法第２９条第２項の規定により特許を受けることができない。
　よって、結論のとおり審決する。