【事件の表示】
　特願２００３−５７５３２６「動作合成ツールにおける配列変換」拒絶査定不服審判事件〔平成１５年　９月１８日国際公開、ＷＯ０３／７７１８４、平成１７年　７月　７日国内公表、特表２００５−５２０２３８〕について、次のとおり審決する。
【結　論】
　本件審判の請求は、成り立たない。
【理　由】
第１　手続の経緯
　本願は、２００３年３月７日（パリ条約による優先権主張外国庁受理２００２年３月８日、米国）を国際出願日とする出願であって、平成２０年３月１４日付けの拒絶理由通知に対して平成２０年９月１日付けで手続補正がなされたが、平成２０年１０月６日付けで拒絶査定がなされ、これに対し、平成２１年１月６日に拒絶査定に対する審判請求がなされるとともに、平成２１年２月５日付けで手続補正がなされたものである。
　
第２　本願発明について
１．本願発明
　本願の請求項に係る発明は、平成２１年２月５日付け手続補正によって補正された特許請求の範囲の請求項１〜４６に記載された事項により特定されるものと認められるところ、その請求項１（以下、「本願発明」という。）に係る発明は以下のとおりのものである。なお、同手続補正によって、請求項１は補正されていない。
「【請求項１】
　集積回路を設計するために使用される動作合成ツールにおいて、配列レイアウトを再構成する方法であって、
　前記集積回路に関連するソースコード記述を前記動作合成ツールに読み込むステップであって、前記ソースコード記述は少なくとも１つの配列を有する、ステップと、
　前記ソースコード記述を前記動作合成ツール内の中間データ構造に記憶するステップであって、前記中間データ構造は、前記少なくとも１つの配列が第１のレイアウト形式に従って前記集積回路の１つ又は複数のメモリに割り当てられることを示す１つ又は複数のメモリ割り当て制約条件を含む、ステップと、
　前記第１のレイアウト形式に従って割り当てられる前記少なくとも１つの配列による回路の面積及び速度のレポートをユーザに対して表示するステップと、
　ユーザが前記メモリ割り当て制約条件の少なくとも１つを修正できるようにするステップと、
　ユーザの修正に応答して、前記少なくとも１つの配列についてレイアウト形式を前記第１のレイアウト形式から第２のレイアウト形式に変換するステップと、
　を含み、
　前記変換するステップは、前記修正されたメモリ割り当て制約条件を含むように前記中間データ構造を更新するステップを含み、
　前記表示するステップ、前記修正できるようにするステップ及び前記変換するステップは、前記ソースコード記述が前記動作合成ツール内に記憶される間であって前記ソースコード記述がレジスタ転送レベル記述へ合成される前に実行される方法。」
　
２．引用刊行物
　原査定の拒絶の理由に引用された、
Schmit, H. et al.“Synthesis of Application-Specific Memory Designs”, IEEE Transactions on Very Large Scale Integration (VLSI) Systems, IEEE, 平成9年3月，Vol.5, No.1, P.101〜P111
（以下、「引用刊行物」という。）には、以下の（１）〜（９）の事項が図面とともに記載されている。なお、下線は当審が付した。
　
（１）「I.INTRODUCTION
THE goal of behavioral synthesis is to automatically create, from a behavioral specification, a custom hardware implementation that meets the design goals of the user. For many applications, the design of the memory system is critical in determining the cost and performance of an implementation. The most commonly used data structure in declarative languages is the array, which is assumed here to have a single index. This paper discusses the problem of mapping arrays, which have been specified in the behavior, to physical memories in an implementation, with the objective of satisfying the cost and performance goals of the user.」
（I.イントロダクション
動作合成の目標は、動作仕様から、ユーザの設計目標に合致するようなカスタムハードウェアの実装を自動的に作成することである。多くのアプリケーションに対して、メモリシステムの設計は、実装についてのコストと性能を決めるにおいて重要である。宣言型言語中の最も一般に使用されるデータ構造は配列です。それは単一のインデックスを持つものと仮定されます。この論文は、配列をマッピングすることの問題を議論する。その配列は、実装における物理メモリのために、ユーザのコスト及び性能目標を満足する目的で、動作における仕様が規定される。）
　
（２）「Our approach to behavioral synthesis of memory structures has been implemented in a design tool named ASSASYN, and which fits into the behavioral synthesis design flow illustrated in Fig. 3. ASSASYN takes as input a behavioral specification including arrays and outputs a behavioral specification annotated with information regarding the memory design created for this behavior. The memory design created by ASSASYN is based on a library of memory components, a library of data path components, and a system cost function which reflects the design goals of the user.」（第１０１頁右欄第１３行〜第１０２頁左欄第６行）
（
メモリ構造の動作合成についての我々のアプローチは、図３に示された動作合成設計フローに適合するＡＳＳＡＳＹＮと名付けられた設計ツールで実施されてきた。ＡＳＳＡＳＹＮは、配列を含む動作仕様を入力し、この動作のために作成されたメモリ設計に関する情報で注釈された動作仕様を出力するようになされる。
　
（３）「III. ARRAY GROUPING AND TRANSFORMATION
The grouping of arrays from the behavioral specification is achieved using two fundamental operations, vertical concatenation and horizontal concatenation, which are depicted in Fig. 5. Vertical concatenation is the mapping of the data words of each array to different data words of the grouped array and horizontal concatenation is the mapping of data bits of each array to different data bits of the grouped array.」（第１０３頁右欄第１３行〜第２０行）
（III. 配列グルーピングおよび変形
　
動作仕様から配列をグルーピングすることは、図５に示された垂直連結と水平連結という２つの基本的なオペレーションを用いてなされる。
　
（４）「In an ASSASYN design state, every array is a leaf of a binary tree implying its groupings. An array can be the only node in the tree, implying the array does not share memory with any other arrays. Each array also has associated with it a signed integer, z. If z is positive the array has been widened by the factor of ,2z, and if z is negative, the array has been narrowed by a factor of 2z. ASSASYN creates an array-memory mapping by creating and manipulating these binary trees and binding them to memory components.」（第１０４頁右欄第３行〜第１１行）
（
ＡＳＳＡＳＹＮ設計状態において、すべての配列は、そのグルーピングを意味する２分木の葉である。配列は、その木の中でただ一つのノードになることができる。それは、その配列は他の配列とメモリを共有しないことを意味する。
　
（５）「The dimensions of an array, the word width and word depth, as specified in the behavioral description, should, in some cases, be transformed to create a better array-memory mapping. These transformation, which we call array widening and array narrowing, are illustrated in Fig. 7.」（第１０４頁左欄第１６行〜第２０行）
（
配列の次元、ワード幅およびワード深さは、動作記述で指定されたとともに、場合によっては、よりよい配列メモリマッピングを作成するために変形されるべきである。配列拡大・配列縮小と呼ぶ、これらの変形は、図７に示される。
　
（６）「The remainder of this section describes the models used to estimate memory cost and access time based on this assignment.」（第１０５頁左欄第３行〜第５行）
（
このセクションの残りの部分で、この割り当てに基づくメモリコストおよびアクセスタイムの評価に用いられたモデルを説明する。
　
（７）「D.Optimization by the MeSa Algorithm
 The algorithm created for the MeSa tool [7] works by creating an initial design state by mapping each array in the behavior to its own memory unit. The vertical concatenation of every possible pair of arrays is evaluated for its realestate and performance impact. The vertical concatenation that causes the greatest reduction in the system cost is performed on the design. After the best concatenation is performed, the behavior is rescheduled using a single list scheduling criterion. This process of evaluation, concatenation, and rescheduling is repeated until only one array group remains. The algorithm then backtracks to the design that had the lowest cost. In this way, the algorithm has limited hill-climbing ability.
 For the sake of comparison, the MeSa algorithm has been adapted to the ASSASYN framework. This adaptation is called AMeSa.」（第１０７頁左欄第１１行〜第２６行）
（D.　ＭｅＳａアルゴリズムによる最適化
ＭｅＳａツールのために作成されたアルゴリズムは、それ自身のメモリユニットに対する動作におけるそれぞれの配列をマッピングすることによって初期設計状態を作ることによって動作する。配列のあらゆるペアの垂直連結は、実際の状態と性能インパクトのために評価される。
システムコストを大きく削減する垂直連結は、設計上で実施される。最良の連結が行われた後、動作は、単一のリストスケジュール基準を用いてリスケジューリングされる。ただ１つの配列グループが残るまで、評価、連結、リスケジューリングのプロセスが繰り返される。
比較のために、ＭｅＳａアルゴリズムは、ＡＳＳＡＳＹＮフレームワークに適応するようにされた。この適応は、ＡＭｅＳａと呼ばれる。）
　
（８）図３によれば、“動作仕様”がＡＳＳＡＳＹＮによって“改善した動作仕様”とされ、この“改善した動作仕様”を“従来の動作合成ツール”に入力している。動作合成ツールは、レジスタ転送レベル記述を合成するものであるから、上記“従来の動作合成ツール”からレジスタ転送レベル記述が合成されるものであることが読み取れる。
　
（９）図７には、配列をワード幅とワード深さが異なる配列に変換することが記載されている。
　
　上記（１）〜（９）を総合すれば、引用刊行物には、以下の発明（以下、「刊行物発明」という。）が記載されている。
「メモリ構造の動作合成設計フローに適合するＡＳＳＡＳＹＮは、配列を含む動作仕様を入力し、この動作のために作成されたメモリ設計に関する情報で注釈された動作仕様を出力するものであって、従来の動作合成ツールを介してレジスタ転送レベル記述が合成されるものであり、
　動作仕様から配列をグルーピングするものであり、
　すべての前記配列は、そのグルーピングを意味する２分木の葉であり、前記配列は、木の中でただ１つのノードになることができ、前記配列は他の配列とメモリを共有しないことを意味するものであり、
　前記配列の次元、ワード幅、ワード深さは、動作記述で指定され、その後に、前記配列が拡大・縮小されるものであり、
　メモリコストおよびアクセスタイムの評価を行うものであり、
　評価、連結、リスケジューリングのプロセスが繰り返される方法。」
　
３．対比・判断
（１）本願発明と刊行物発明との対比
　刊行物発明は、「配列の次元、ワード幅、ワード深さは、動作の記述で指定され、その後に、前記配列が拡大・縮小されるもの」であるので、配列レイアウトが再構成されるものであるということができ、また、刊行物発明が、集積回路を設計するために使用される動作合成ツールであることは明らかであるから、本願発明と刊行物発明とは、「集積回路を設計するために使用される動作合成ツールにおいて、配列レイアウトを再構成する方法」である点で一致する。
　
　刊行物発明は、「配列を含む動作仕様を入力し、この動作のために作成されたメモリ設計に関する情報で注釈された動作仕様を出力する」ものであるので、入力される動作仕様には少なくとも１つの配列が含まれ、刊行物発明における「動作仕様」は、本願発明の「ソースコード記述」に相当するから、本願発明と刊行物発明とは、「集積回路に関連するソースコード記述を前記動作合成ツールに読み込むステップであって、前記ソースコード記述は少なくとも１つの配列を有する」ものである点で一致する。
　
　一般に、動作合成ツールは、集積回路における配列のレイアウトを設計して、レジスタ転送レベル記述を合成するものであり、２分木は動作合成ツール内の中間データ構造であるということができる。刊行物発明において、２分木は、動作仕様として入力された配列がグルーピングされたものであって、「配列は、木の中でただ１つのノードとなる」ものであり、２分木に従ってレイアウトが定められるものであるから、レイアウト形式に従って１つ又は複数のメモリに割り当てられることを示す１つ又は複数のメモリ割り当て制約条件を含んだものであることが明らかである。
　それゆえ、本願発明と刊行物発明とは、「ソースコード記述を前記動作合成ツール内の中間データ構造に記憶するステップであって、前記中間データ構造は、前記少なくとも１つの配列が第１のレイアウト形式に従って前記集積回路の１つ又は複数のメモリに割り当てられることを示す１つ又は複数のメモリ割り当て制約条件を含む」点で一致する。
　
　したがって、本願発明と刊行物発明１とは、以下の点で一致し、相違する。
（一致点）
「　集積回路を設計するために使用される動作合成ツールにおいて、配列レイアウトを再構成する方法であって、
　前記集積回路に関連するソースコード記述を前記動作合成ツールに読み込むステップであって、前記ソースコード記述は少なくとも１つの配列を有する、ステップと、
　前記ソースコード記述を前記動作合成ツール内の中間データ構造に記憶するステップであって、前記中間データ構造は、前記少なくとも１つの配列が第１のレイアウト形式に従って前記集積回路の１つ又は複数のメモリに割り当てられることを示す１つ又は複数のメモリ割り当て制約条件を含む、ステップとを含む方法。」である点。
　
（相違点）
　本願発明は、
　前記第１のレイアウト形式に従って割り当てられる前記少なくとも１つの配列による回路の面積及び速度のレポートをユーザに対して表示するステップと、
　ユーザが前記メモリ割り当て制約条件の少なくとも１つを修正できるようにするステップと、
　ユーザの修正に応答して、前記少なくとも１つの配列についてレイアウト形式を前記第１のレイアウト形式から第２のレイアウト形式に変換するステップと、
　を含み、
　前記変換するステップは、前記修正されたメモリ割り当て制約条件を含むように前記中間データ構造を更新するステップを含み、
　前記表示するステップ、前記修正できるようにするステップ及び前記変換するステップは、前記ソースコード記述が前記動作合成ツール内に記憶される間であって前記ソースコード記述がレジスタ転送レベル記述へ合成される前に実行される
ものであるのに対して、
　刊行物発明は、メモリコスト及びアクセスタイムの評価を行い、評価、連結、リスケジューリングのプロセスを繰り返すものであるが、本願発明のように、評価を行ったレポートをユーザに対して表示するステップ、ユーザがメモリ割り当て制約条件を修正できるようにするステップ、ユーザの修正に応答してレイアウト形式を変換するステップの各ステップを含まず、そのような各ステップが、ソースコード記述が動作合成ツール内に記憶される間であってソースコード記述がレジスタ転送レベル記述へ合成される前に実行されるものではなく、また、変換するステップが中間データ構造を更新するステップを含むものではない点。
　
（２）相違点に対する当審の判断
　刊行物発明は、メモリコスト及びアクセスタイムの評価を行っているが、ここで、“アクセスタイム”を評価することは、速度のレポートをユーザに対して表示することと相違しない。
　また、チップ面積によって１枚の半導体ウエハーから製造できる半導体集積回路数が決まるものであるから、メモリコストがメモリの面積と大きな相関を持っていることはよく知られたことである。それゆえ、刊行物発明において、メモリコストを評価することは回路の面積を評価することと実質的に等価である。
　したがって、刊行物発明において、メモリコスト及びアクセスタイムの評価を行うことは、本願発明における「配列による回路の面積及び速度のレポートをユーザに対して表示する」ことと実質的に相違しない。
　
　刊行物発明は、ソースコードをレジスタ転送レベルに変換する過程で、評価と設計変更を自動的に繰り返して最適化を行うものである。
　ここで、刊行物発明における最適化は、ＡＳＳＡＳＹＮの中で行われるものであって、“従来の動作合成ツール”を介して、レジスタ転送レベル記述を合成した後に最適化を行うものではなく、レジスタ転送レベル記述を合成する前に行っているものである。
　そして、設計者が対話型ＣＡＤを用いて設計の最適化を行うことは慣用技術であることにかんがみれば、刊行物発明において、（レジスタ転送レベル記述を合成する前に）自動的に最適化を行うようにすることに代えて、設計者が対話を通じて設計の最適化を行えるように、
「　前記第１のレイアウト形式に従って割り当てられる前記少なくとも１つの配列による回路の面積及び速度のレポートをユーザに対して表示するステップと、
　ユーザが前記メモリ割り当て制約条件の少なくとも１つを修正できるようにするステップと、
　ユーザの修正に応答して、前記少なくとも１つの配列についてレイアウト形式を前記第１のレイアウト形式から第２のレイアウト形式に変換するステップと、
　を含み、
　前記変換するステップは、前記修正されたメモリ割り当て制約条件を含むように前記中間データ構造を更新するステップを含み、
　前記表示するステップ、前記修正できるようにするステップ及び前記変換するステップは、前記ソースコード記述が前記動作合成ツール内に記憶される間であって前記ソースコード記述がレジスタ転送レベル記述へ合成される前に実行される」ようにすることに、格別困難な点はない。
　
第３　むすび
　以上のとおり、本願発明は、刊行物発明及び周知技術に基いて当業者が容易に発明をすることができたものであるので、特許法第２９条第２項の規定により特許を受けることができない。
　したがって、他の請求項に係る発明について検討するまでもなく、本願は、拒絶すべきものである。
　よって、結論のとおり審決する。