(57)【要約】【課題】内蔵の記憶装置の試験回路を自動的に作成し、その試験回路を用いて記憶装置の試験を自動的に行うことで、記憶装置の試験にかかる時間を短縮することが可能なプログラム可能論理デバイスを提供する。【解決手段】データを記憶する記憶部１を備える。論理回路記憶部２は、記憶部１への書き込み及び読み出しを伴うデータ処理を行う論理回路である内部回路を格納する。部品回路記憶部５は、記憶部１の試験のための部品回路を予め記憶しておく。ピン情報記憶部３は、記憶部１のピン情報を取得する。試験部４は、ピン情報及び部品回路を基にメモリ試験回路を生成し論理回路記憶部２に格納させ、メモリ試験回路を用いて記憶部１の試験を行う。【選択図】図１
2012009098.tif 000002
【特許請求の範囲】
【請求項１】
データを記憶する記憶部と、
前記記憶部への書き込み及び読み出しを伴うデータ処理を行う内部回路を記憶する論理回路記憶部と、
前記記憶部に対して試験を行う際に必要となる部品回路を記憶する部品回路記憶部と、
前記記憶部のピン情報を記憶するピン情報記憶部と、
前記ピン情報記憶部に記憶したピン情報及び前記部品回路記憶部に記憶した部品回路を用いてメモリ試験回路を生成するメモリ試験回路生成部と、
前記メモリ試験回路生成部で生成されたメモリ試験回路を用いて前記記憶部の試験を行い、試験結果を通知する試験部と
を備えたことを特徴とするプログラム可能論理デバイス。
【請求項２】
前記部品回路は、少なくともテストデータを生成するデータ生成回路及び前記記憶部から読み出したデータをチェックするデータチェック回路を含み、
前記メモリ回路生成部は、
前記ピン情報に含まれる各ピンに対応し、且つ入出力の方向が逆である入出力ピン及びテスト結果を外部に出力する結果出力ピンを作成し、前記データ生成回路で生成されたテストデータが外部に出力され、外部から前記データチェック回路にデータが入力され、前記データチェック回路によるチェック結果が前記結果出力ピンから出力されるように、前記入出力ピン及び前記結果出力ピンと前記部品回路とを接続して前記メモリ試験回路を生成し、
前記試験部は、
テストデータが前記記憶部に入力され、前記記憶部に記憶された該テストデータを読み出して得られる検証データが前記データチェック回路に入力されるように、前記メモリ試験回路を前記論理回路記憶部に記憶させ配置するメモリ試験回路配置部と、
前記データ生成回路で生成されたテストデータを前記記憶部に記憶させ、前記記憶部に記憶させた該テストデータを読み出して得られる検証データと前記テストデータとを前記データチェック回路に比較させるメモリ試験制御部と
を備えたことを特徴とする請求項１に記載のプログラム可能論理デバイス。
【請求項３】
前記試験部は、テストデータとしてランダムな複数のデータを使用することを特徴とする請求項１又は請求項２に記載のプログラム可能論理デバイス。
【請求項４】
前記記憶部の記憶領域における前記内部回路及び前記メモリ試験回路が使用する領域が固定されていることを特徴とする請求項１乃至請求項３のいずれか一つに記載のプログラム可能論理デバイス。
【請求項５】
前記試験部は、前記記憶部の障害を検出した場合、前記試験結果とともに前記記憶部における該障害が検出された位置を通知することを特徴とする請求項１乃至請求項４のいずれか一つに記載のプログラム可能論理デバイス。
【請求項６】
プログラム可能論理デバイスに内蔵されたメモリへの書き込み及び読み出しを伴うデータ処理を行う内部回路を前記メモリと接続させて論理ブロックに記憶させる内部回路記憶ステップと、
前記メモリに対して試験を行う際に必要となる部品回路を記憶する部品回路記憶ステップと、
前記メモリのピン情報を記憶するピン情報記憶ステップと、
前記ピン情報及び前記部品回路を用いてメモリ試験回路を自動生成するメモリ試験回路生成ステップと、  
前記メモリ試験回路生成ステップで生成された前記メモリ試験回路を前記メモリと接続させて論理ブロックに記憶させるメモリ試験回路記憶ステップと、
該メモリ試験回路を用いて前記メモリの試験を行うテストステップと、
前記試験結果を通知する試験結果通知ステップと
を含むことを特徴とするプログラム可能論理デバイスの試験方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プログラム可能論理デバイス及びその試験方法に関する。
【背景技術】
【０００２】
近年、論理回路の回路設計を行う場合に、プログラム可能論理デバイス（Programmable Logic Device、以下「PLD」と言う。）が用いられることが多い。このPLDとは、半導体集積回路のひとつであり、内部回路群の結線を外部からデザインできるものである。また、このPLDは、論理回路情報を格納する書き換え可能なメモリを搭載しているため、製造後であっても論理回路の動作を変更することができる。このPLDの代表的なものとしては、FPGA(Field Programmable Gate Array)やCPLD(Complex Programmable Logic Device)等が知られている。
【０００３】
また、かかるPLDは、論理回路情報を格納するメモリとは別に、論理回路以外のデータを記憶する大容量のメモリを内蔵する場合が多い。このメモリは、PLDの製造メーカが出荷時に試験を行うことでその正常性が保証されているため、原則としてはPLDのユーザはメモリの動作確認しか行わない。
【０００４】
ところが、最近の微細化技術の進歩に伴い、PLDの高集積化、高速化、低電圧化が顕著になってきたため、ユーザがPLDを利用する際にメモリの故障や動作不良が生じる状況が増えている。このような場合に、ユーザは、その原因が論理的な問題によるものなのか、メモリの故障によるものなのかを特定するのに多大の時間を要する結果となる。
【０００５】
このため、使用状況に合わせて作成した試験プログラムを予めPLD内部に記憶しておき、この試験プログラムを用いてメモリの試験を行う技術が提案されている。また、メモリ内の不良セルを特定し、特定した不良セルを除外した正常なセルのみを用いて所定の試験を行う従来技術が知られている。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開平１１−４４７４１号公報
【特許文献２】国際公開第００／６２３３９号
【発明の概要】
【発明が解決しようとする課題】
【０００７】
しかしながら、上記従来技術では、使用状況に合わせてメモリの試験回路を予め人が作成する必要があるため、この試験回路の作成に多大の人的労力を要するという問題がある。また、メモリの不良セルを特定する従来技術を用いる場合も、いかにして効率よく不良セルを特定するかが問題となる。
【０００８】
開示の技術は、上記に鑑みてなされたものであって、内蔵のメモリの正常性を試験する試験回路の生成にかかる人的労力を軽減するとともに、効率的なメモリの試験を行うことができるプログラム可能論理デバイス及びその試験方法を提供することを目的とする。
【課題を解決するための手段】
【０００９】
本願の開示するプログラム可能論理デバイスは、一つの態様において、まず、データを記憶する記憶部を備える。論理回路記憶部は、前記記憶部への書き込み及び読み出しを伴うデータ処理を行う内部回路を記憶する。部品回路記憶部は、前記記憶部に対して試験を行う際に必要となる部品回路を記憶する。ピン情報記憶部は、前記記憶部のピン情報を記憶する。メモリ試験回路生成部は、前記ピン情報記憶部に記憶したピン情報及び前記部品回路記憶部に記憶した部品回路を用いてメモリ試験回路を生成する。試験部は、前記メモリ試験回路生成部で生成されたメモリ試験回路を用いて前記記憶部の試験を行い、試験結果を通知する。
【発明の効果】
【００１０】
本願の開示するプログラム可能論理デバイス及びその試験方法の一つの態様によれば、内蔵のメモリの正常性を試験する試験回路の生成にかかる人的労力を軽減するとともに、効率的なメモリの試験を行うことができるという効果を奏する。
【図面の簡単な説明】
【００１１】
【図１】図１は、実施例１に係るプログラム可能論理デバイスのブロック図である。
【図２】図２は、実施例２に係るプログラム可能論理デバイスのブロック図である。
【図３】図３は、実施例２に係るプログラム可能論理デバイスにおける内部回路及びメモリの接続及びデータの流れを示したメモリ接続ブロック構成図である。
【図４】図４は、実施例２に係るプログラム可能論理デバイスにおけるメモリ試験回路を挿入した状態のメモリ接続ブロック構成図である。
【図５】図５は、実施例２におけるメモリのピン情報を表すピン情報ファイルの一例の図である。
【図６】図６は、実施例２における内部回路のピン情報を表すピン情報ファイルの一例の図である。
【図７】図７は、メモリ設定ファイルの一例の図である。
【図８】図８は、メモリ試験回路データベースの一例の図である。
【図９】図９は、メモリ試験回路のピン情報ファイルの一例の図である。
【図１０】図１０は、メモリ試験回路挿入後のメモリのピン情報ファイルの一例の図である。
【図１１】図１１は、メモリ試験回路内の各部品回路のピン情報ファイルの一例の図である。
【図１２】図１２は、実施例２に係るプログラム可能論理デバイスにおけるメモリ試験の処理のフローチャートである。
【図１３】図１３は、実施例２におけるメモリ試験回路データベースの作成の処理のフローチャートである。
【図１４】図１４は、実施例２におけるメモリ試験回路のピン情報ファイル及びメモリ試験回路挿入後のメモリのピン情報ファイルの作成の処理のフローチャートである。
【図１５】図１５は、メモリ配置情報ファイルの一例の図である。
【図１６】図１６は、実施例３に係るプログラム可能論理デバイスのブロック図である。
【図１７】図１７は、実施例３に係るプログラム可能論理デバイスにおける内部回路及びメモリの接続及びデータの流れを示したメモリ接続ブロック構成図である。
【図１８】図１８は、実施例３に係るメモリ及び内部回路のピン情報ファイルの一例の図である。
【図１９】図１９は、実施例３におけるメモリ試験回路データベースの一例の図である。
【図２０】図２０は、実施例３におけるメモリ試験回路挿入後のメモリ及びメモリ試験回路のピン情報ファイルの一例の図である。
【図２１】図２１は、実施例３に係るプログラム可能論理デバイスにおけるメモリ試験回路を挿入した状態のメモリ接続ブロック構成図である。
【図２２】図２２は、実施例４に係るプログラム可能論理デバイスにおけるメモリ試験回路を挿入した状態のメモリ接続ブロック構成図である。
【図２３】図２３は、故障メモリのアドレス出力タイミングを説明するための図である。
【発明を実施するための形態】
【００１２】
以下に、本願の開示するプログラム可能論理デバイス及びその試験方法の実施例を図面に基づいて詳細に説明する。なお、以下の実施例により本願の開示するプログラム可能論理デバイス及びその試験方法が限定されるものではない。
【実施例１】
【００１３】
図１は、実施例１に係るプログラム可能論理デバイスのブロック図である。図１に示すように、本実施例１に係るプログラム可能論理デバイスは、記憶部１、論理回路記憶部２、ピン情報記憶部３、試験部４、部品回路記憶部５及びメモリ試験回路生成部６を備えている。
【００１４】
記憶部１は、メモリなどの記憶装置である。記憶部１は、後述する論理回路記憶部２に記憶された内部回路からデータの入力を受けて、入力されたデータを記憶する。また、記憶部１に記憶されているデータは、論理回路記憶部２に記憶された内部回路により読み出される。
【００１５】
論理回路記憶部２は、構成を入力することでプログラム可能な論理素子である。論理回路記憶部２は、入力された構成を有する論理回路である内部回路を記憶する。ここで、論理回路を記憶するとは、論理回路記憶部２に含まれる論理ブロックの配置や配線を入力された構成に対応するように変更し、その変更した配置配線を保持することである。そして、論理回路記憶部２に記憶された内部回路は、記憶部１への書き込み及び読み出しを伴うデータ処理を行う部分として動作する。以下では、論理回路記憶部２に記憶された論理回路である内部回路を、単に「内部回路」と呼ぶことがある。
【００１６】
部品回路記憶部５は、メモリやハードディスクなどの記憶装置である。そして、部品回路記憶部５は、メモリ試験回路を構成する要素となる部品回路を予め記憶している。具体的には、部品回路は、記憶部１の試験を行う際に実際にデータを処理するための回路である。部品回路は、予めメモリなどのテストに用いるための論理回路として開発され、そのように予め開発された部品回路を部品回路記憶部５は記憶している。
【００１７】
ピン情報記憶部３は、記憶部１のピン情報を記憶する。ここで、ピン情報とは、例えば、データの入力端子かデータの出力端子かの情報や、接続元の情報などの情報である。
【００１８】
メモリ試験回路生成部６は、記憶部１のピン情報の入力をピン情報記憶部３から取得する。さらに、メモリ試験回路生成部６は、部品回路を部品回路記憶部５から取得する。そして、メモリ試験回路生成部６は、メモリのピン情報及び部品回路を用いてメモリ試験回路を生成する。
【００１９】
試験部４は、メモリ試験回路生成部６が生成したメモリ試験回路を用いて記憶部１の試験を行う。試験部４は、試験によってメモリの故障を検出した場合には、検出した故障を操作者に通知する。
【００２０】
以上に説明したように、本実施例１に係るプログラム可能論理デバイスは、プログラム可能論理デバイスに内蔵された記憶部をテストするための論理回路であるメモリ試験回路を自動的に生成することができる。さらに、本実施例１に係るプログラム可能論理デバイスは、生成したメモリ試験回路を用いて記憶部のテストを自動的に行うことができる。これにより、試験回路を生成するためにかかる手間を削減することができ、記憶部の試験にかかる時間を短縮することができる。さらに、プログラム可能論理デバイスにおける動作不良が論理的な問題なのかメモリ故障によるものなのかを短時間で特定することが可能となる。
【実施例２】
【００２１】
図２は、実施例２に係るプログラム可能論理デバイスのブロック図である。本実施例２では、プログラム可能論理デバイスとして、FPGAを用いた場合で説明する。図２に示すように、本実施例２に係るFPGAは、論理回路記憶部２、ピン情報記憶部３、試験部４、部品回路記憶部５、メモリ試験回路６、クロック発生部７、リセット信号発生部８及びメモリ１０を備えている。ここで、図２に示すように、メモリ１０は、本実施例２に係るFPGAに内蔵される記憶部の一例である。図２において図１と同様の符号を有するものは特に説明のない限り同様の機能を有するものとする。また、図３は、実施例２に係るプログラム可能論理デバイスにおける内部回路及びメモリの接続及びデータの流れを示したメモリ接続ブロック構成図である。さらに、図４は、実施例２に係るプログラム可能論理デバイスにおけるメモリ試験回路を挿入した状態のメモリ接続ブロック構成図である。ここで、図３及び図４は、メモリ試験回路２１０の挿入前後のメモリ１０及び内部回路２００の動作やメモリ試験回路２１０の挿入状態を説明することを目的としている。そのため、図３及び図４では、図１における各部を省略して記載している。また、図３及び図４における内部回路２００及びメモリ試験回路２１０は、論理回路記憶部２に記憶されている状態である。
【００２２】
クロック発生部７は、論理回路記憶部２に記憶された内部回路などの論理回路及びメモリ１０における処理に用いるためのクロックを発生する。そして、クロック発生部７は、発生したクロックを論理回路記憶部２及びメモリ１０へ出力する。すなわち、内部回路とメモリ１０とは同じクロックで動作する。以下では、クロック発生部７が発生したクロックを、「CLK」と表すことがある。
【００２３】
リセット信号発生部８は、内部回路などのFPGA内の論理回路を再コンフィグレーションするためのリセット信号を発生する。そして、リセット信号発生部８は、発生したリセット信号を論理回路記憶部２へ出力する。本実施例２で使用するリセット信号を「XRST」(The Xilinx Reconfigurable Self-Test)と表すことがある。
【００２４】
論理回路記憶部２は、SRAM(Static Random Access Memory)やEPROM(Erasable Programmable Read Only Memory)などで構成された論理ブロックを有している。さらに、論理回路記憶部２は、各論理ブロックの接続を切り替えるスイッチを有している。そして、論理回路記憶部２は、入力された構成に従い、自己が有する論理ブロックの中のLUT(Look Up Table)の書き換え、及びスイッチの切り替えを実施することで論理回路を構成する。以下では、論理ブロック及びスイッチを変更することにより、論理回路の合成、配置、配線を行い、それを保持することを、「論理回路の記憶」と言うことがある。本実施例２では、論理回路記憶部２は、データ処理を行う論理回路として図３に示す内部回路２００を記憶する。さらに、論理回路記憶部２は、メモリ試験を行う場合には、後述する試験部４からの入力を受けて、内部回路２００に加えて図４に示すメモリ試験回路２１０を記憶する。
【００２５】
内部回路２００は、メモリ１０に対するデータの書き込み及びデータの読み込みを伴うデータ処理を行う。
【００２６】
ここで、図３を参照して、メモリ試験回路２１０が挿入される前の内部回路２００及びメモリ１０の動作を説明する。内部回路２００は、クロック発生部７から入力されたクロックで動作を行う。同様に、メモリ１０も、クロック発生部７から入力されたクロックで動作を行う。また、内部回路２００は、リセット信号発生部８から入力されたリセット信号によってリセットが実行される。そして、内部回路２００は、メモリ１０にデータの書き込みを行う。さらに、内部回路２００は、メモリ１０に記憶されているデータを読み込む。
【００２７】
メモリ試験回路２１０は、後述するメモリ試験回路生成部６によって生成され論理回路記憶部２に記憶される。本実施例２に係るメモリ試験回路２１０は、図４においてPN23GEN２１１、ADGEN２１２、PN23CHK２１３及びSEL２１４で表される論理回路を含んでいる。PN23GEN２１１は、テストデータを生成するデータ生成回路である。また、ADGEN２１２は、メモリ制御タイミング生成回路である。また、PN23CHK２１３は、メモリ１０から読み出したデータの整合性をチェックするチェック回路である。さらに、SEL２１４は、内部回路２００からのデータ又はPN23CHK２１３からのデータのいずれのデータをメモリ１０に出力するかを選択するための選択回路である。
【００２８】
ここで、図４を参照して、メモリ試験回路２１０が挿入された後の内部回路２００、メモリ試験回路２１０及びメモリ１０の動作を説明する。メモリ試験回路２１０は、クロック発生部７からクロックの入力を受けて動作する。すなわち、メモリ試験回路２１０は、内部回路２００と同じクロックで動作する。また、メモリ試験回路２１０は、リセット信号発生部８から入力されたリセット信号によってリセットが実行される。
【００２９】
内部回路２００は、メモリ１０に書き込むデータをメモリ試験回路２１０へ出力する。また、内部回路２００は、メモリ１０が記憶しているデータをメモリ１０から読み込む。
【００３０】
PN23GEN２１１は、テストデータを生成する。そして、PN23GEN２１１は、生成したデータをSEL２１４へ出力する。
【００３１】
ADGEN２１２は、書き込み信号及びメモリ１０のアドレスの指定を含む制御データを生成する。そして、ADGEN２１２は、生成した制御データをSEL２１４へ出力する。
【００３２】
SEL２１４は、メモリ１０へ書き込むデータの入力を内部回路２００から受ける。また、SEL２１４は、テストデータの入力をPN23GEN２１１及びADGEN２１２から受ける。SEL２１４は、メモリ１０の試験の実施命令が入力されていない場合には、内部回路２００から入力されたデータをメモリ１０へ書き込む。これに対し、SEL２１４は、メモリ１０の試験の実施命令が入力されている場合には、PN23GEN２１１及びADGEN２１２から入力されたテストデータをメモリ１０へ書き込む。
【００３３】
PN23CHK２１３は、SEL２１４が書き込んだテストデータをメモリ１０から取得する。以下では、PN23CHK２１３がメモリ１０から取得したデータを検証データという。そして、PN23CHK２１３は、メモリ１０から取得した検証データとPN23GEN２１１が生成したデータを比較する。そして、PN23CHK２１３は、メモリ１０に故障が発生しているか否かを判定する。PN23CHK２１３は、故障を検知した場合には故障が発生した旨の信号（以下では、NG信号ということがある。）を試験部４へ出力する。
【００３４】
ピン情報記憶部３は、メモリやハードディスクなどの記憶装置である。そして、ピン情報記憶部３は、メモリ１０及び内部回路２００のピン情報が記載されたピン情報ファイルを予め記憶している。図５は、実施例２におけるメモリのピン情報を表すピン情報ファイルの一例の図である。図５の接続元ブロックとは、メモリやＩ／Ｏや各回路といった入出力の対象をブロックとし、各ピンの接続先となるブロックを示している。また、図６は、実施例２における内部回路のピン情報を表すピン情報ファイルの一例の図である。
【００３５】
部品回路記憶部５は、メモリ試験回路２１０の構成要素となる部品回路を予め記憶している。本実施例２では、部品回路記憶部５は、テストデータを生成するデータ生成回路、メモリ制御タイミング生成回路、データの整合性をチェックするチェック回路及びメモリ１０へ出力するデータの選択を行う選択回路を記憶している。例えば、部品回路記憶部５は、図４に示す、PN23GEN２１１、ADGEN２１２、PN23CHK２１３及びSEL２１４を記憶している。
【００３６】
メモリ試験回路生成部６は、メモリ１０の設定及びメモリ１０の試験の設定を予め記憶している。ここで、図７は、メモリ設定ファイルの一例の図である。図７のメモリ設定ファイル３００には、メモリ１０の設定及びメモリ１０の試験の設定が記載されている。例えば、メモリ試験回路生成部６は、図７に示すメモリ設定ファイル３００を記憶することにより、メモリ１０の設定及びメモリ１０の試験の設定を記憶する。
【００３７】
ここで、メモリ設定ファイル３００について説明する。本実施例２はテストデータとしてランダムな複数のデータを用いる。メモリ設定ファイル３００には、メモリ種別設定３０１、ランダムパターン種別設定３０２、ランダムパターン並列数設定３０３、メモリのワード数設定３０４、メモリ試験回路挿入方法設定３０５及び未使用出力ピン設定３０６という項目が含まれる。
【００３８】
メモリ種別設定３０１は、メモリがいくつのポートを持つかを設定する項目である。また、メモリのワード数設定３０４は、メモリの使用可能なワード数を設定する項目である。メモリ種別設定３０１及びメモリのワード数設定３０４により、メモリ１０の設定が特定できる。
【００３９】
ランダムパターン種別設定３０２は、生成多項式の次数を設定する項目である。ランダムパターン並列数設定３０３は、１度の実行で用いるランダムパターンの数を設定する項目である。ランダムパターン種別設定３０２及びランダムパターン並列数設定３０３により、テストデータの生成方法が決定される。本実施例２ではランダムな複数のテストデータを用いることで、メモリ１０の全体をテストすることができる。ここで、メモリ１０の全体をテストできる複数のデータであれば、テストデータはランダムなデータでなくともよい。また、本実施例２ではテストデータとしてランダムパターンを用いたが、故障検出の確度よりもテストの速さを要求するなどの場合、単一のテストデータでのテストを行ってもよい。本実施例２ではランダムパターン種別設定３０２としてPN23を選択した場合で説明する。
【００４０】
メモリ試験回路挿入方法設定３０５は、生成したメモリ試験回路２１０を挿入する方法を設定する項目である。例えば、既存回路である内部回路２００を残して、内部回路２００とメモリ１０との間にメモリ試験回路２１０を挿入する方法がある。また、既存回路である内部回路２００は消去してしまい、メモリ試験回路２１０のみを挿入し、メモリ１０のテストを行う方法がある。図４のように内部回路２００を残した場合には、メモリ試験回路２１０を挿入したまま通常のデータ処理を行うことが可能である。本実施例２では、既存回路を残してメモリ試験回路を挿入する方法を選択したものとする。
【００４１】
未使用出力ピン設定３０６は、メモリ１０の試験を行う際に使用しないピンから出力する値を設定する項目である。未使用出力ピン設定３０６によりメモリ試験回路生成時の未使用ピンからの出力を決定できる。
【００４２】
そして、メモリ試験回路生成部６は、ランダムパターン種別設定３０２及びランダムパターン並列数設定３０３で決定されるテストデータのデータ生成回路、メモリ制御タイミング生成回路及びチェック回路を部品回路記憶部５から取得する。本実施例２ではランダムパターン種別設定３０２としてPN23を選択しているので、メモリ試験回路生成部６は、図４に示すPN23GEN２１１、ADGEN２１２及びPN23CHK２１３を取得する。
【００４３】
また、メモリ試験回路生成部６は、ピン情報記憶部３からメモリ１０のピン情報ファイル及び内部回路２００のピン情報ファイルを取得する。メモリ試験回路生成部６は、メモリ１０及び内部回路２００のピン情報ファイルに問題が有るか否かを判定する。具体的には、メモリ試験回路生成部６は、ピン情報ファイルに記載漏れが無いか、記入方法が正しいかを確認する。情報ファイルに問題が有る場合には、メモリ試験回路生成部６は、情報ファイルの設定の変更を操作者に要求する。
【００４４】
さらに、メモリ試験回路生成部６は、メモリ１０と内部回路２００との仮合成を行い、データの流れに矛盾が発生していないかをチェックする。例えば、メモリ１０と内部回路２００との間で出力同士の衝突などの接続エラーの有無などを確認する。仮合成に問題がある場合には、メモリ試験回路生成部６は、エラーを通知する。そして、仮合成に問題が無ければ、メモリ試験回路生成部６は、メモリ試験回路データベースの作成などのメモリ試験回路の作成の処理に入る。
【００４５】
メモリ試験回路生成部６は、メモリ１０のピン情報ファイル及び内部回路２００のピン情報ファイルの中で試験回路グループが１となっているピン情報を抽出する。そして、メモリ試験回路生成部６は、抽出したピン情報をまとめて図８に示すメモリ試験回路データベースを作成する。図８は、メモリ試験回路データベースの一例の図である。
【００４６】
次に、メモリ試験回路生成部６は、メモリ試験回路データベースを用いてメモリ試験回路のピン情報ファイルを作成する。図９は、メモリ試験回路のピン情報ファイルの一例の図である。ここで、メモリ試験回路生成部６によるメモリ試験回路のピン情報ファイルの具体的な作成方法について説明する。まず、メモリ試験回路生成部６は、図８のメモリ試験回路データベースから各ピンの名前であるPort_nameを取得し、取得した各ピンに対応するメモリ試験回路２１０のピンの名前をそれぞれ生成し、メモリ試験回路データベースのPot_nameを置き換える。そして、メモリ試験回路生成部６は、メモリ試験回路データベースにおけるI/Oの項目のデータの入出力を逆にする。すなわち、メモリ試験回路生成部６は、メモリ試験回路データベースの各ピンの入出力を、入力端子であれば出力端子に、逆に出力端子であれば入力端子に変更する。これにより、図９のメモリ試験回路のピン情報ファイルの項目４０１が生成される。また、メモリ試験回路生成部６は、メモリ試験回路２１０のクロックとリセット信号を内部回路２００と同じものとする。これにより、図９のメモリ試験回路のピン情報ファイルの項目４０２が生成される。さらに、メモリ試験回路生成部６は、メモリ試験回路２１０にメモリ試験結果を出力する端子を追加する。これにより、図９のメモリ試験回路２１０のピン情報ファイルの項目４０３が生成される。このようにして、メモリ試験回路生成部６は、図９に示すメモリ試験回路２１０のピン情報ファイルを生成する。
【００４７】
また、図１０は、メモリ試験回路挿入後のメモリのピン情報ファイルの一例の図である。メモリ試験回路生成部６は、メモリ１０のピン情報のうち接続元の情報を内部回路２００からメモリ試験回路２１０に変更する。さらに、メモリ試験回路生成部６は、メモリ１０のピン情報のうち出力端子であるピンの接続先の情報にメモリ試験回路２１０を加える。これにより、メモリ試験回路２１０の挿入後のメモリ１０のピン情報ファイルは、図１０に示すように、点線４０４で囲われた部分が図５の挿入前のピン情報ファイルと異なるピン情報ファイルとなる。
【００４８】
そして、メモリ試験回路生成部６は、PN23GEN２１１、ADGEN２１２、PN23CHK２１３及びSEL２１４の端子情報を取得し、PN23GEN２１１で生成されたテストデータとADGEN２１２で生成されたメモリ制御タイミングとがSEL２１４に入力されるように接続する。また、メモリ試験回路生成部６は、内部回路２００からのデータ及びメモリ制御タイミングがSEL２１４に入力されるように各ピンを接続する。そして、メモリ試験回路生成部６は、SEL２１４からの出力がメモリ１０に入力されるように各ピンを接続する。また、メモリ試験回路生成部６は、メモリ１０から読み出したデータが内部回路２００及びPN23CHK２１３に入力されるように各ピンを接続する。さらに、メモリ試験回路生成部６は、PN23CHK２１３での試験結果が外部に出力されるように各ピンを接続する。そして、メモリ試験回路生成部６は、図１１で表されるPN23GEN２１１、ADGEN２１２、PN23CHK２１３及びSEL２１４のピン情報ファイルを各ピンの接続関係から生成する。図１１は、メモリ試験回路内の各部品回路のピン情報ファイルの一例の図である。ピン情報ファイル５０１は、PN23GEN２１１のピン情報ファイルである。ピン情報ファイル５０２は、ADGEN２１２のピン情報ファイルである。ピン情報ファイル５０３は、PN23CHK213のピン情報ファイルである。ピン情報ファイル５０４は、SEL２１４のピン情報ファイルである。
【００４９】
メモリ試験回路生成部６は、以上で説明した各ピンの接続情報をまとめてメモリ試験回路２１０を生成する。そして、メモリ試験回路生成部６は、生成したメモリ試験回路２１０の情報及び変更したメモリ１０のピンの情報をメモリ試験回路配置部４１へ出力する。
【００５０】
試験部４は、メモリ試験回路配置部４１及びメモリ試験制御部４２を有している。
【００５１】
メモリ試験回路配置部４１は、メモリ試験回路生成部６から、メモリ試験回路２１０の情報及びメモリ１０のピンの情報の入力を受ける。そして、メモリ試験回路配置部４１は、入力された各ピンの接続の情報に合わせてメモリ試験回路２１０を論理回路記憶部２に記憶（合成、配置、配線など）する。
【００５２】
メモリ試験制御部４２は、メモリ試験回路２１０にメモリ１０の試験を開始させる。具体的には、メモリ試験制御部４２は、PN23GEN２１１にテストデータを生成させメモリ１０に記憶させる。さらに、メモリ試験制御部４２は、PN23CHK２１３にメモリ１０が記憶しているテストデータを読み込ませ検証データを取得させ、テストデータと検証データとを比較させる。
【００５３】
そして、試験部４は、メモリ試験回路２１０のPN23CHK２１３からの入力を受けて、試験結果を取得する。そして、試験部４はメモリ１０の試験結果の通知を行う。例えば、試験部４は、図４におけるNG信号２１５が「High」の場合、メモリ１０の試験結果がＮＧと判定し、NG信号２１５が「Low」の場合、メモリ１０の試験結果がＯＫと判定する。
【００５４】
次に、図１２を参照して、実施例１に係るプログラム可能論理デバイスにおけるメモリ試験の処理について説明する。図１２は、実施例１に係るプログラム可能論理デバイスにおけるメモリ試験の処理のフローチャートである。
【００５５】
操作者はピン情報ファイル、部品回路及び設定ファイルを入力する。そして、操作者からの入力を受けて、ピン情報記憶部３はピン情報ファイルを記憶し、部品回路記憶部５は生成回路やチェック回路などの部品回路を記憶し、メモリ試験回路生成部６は設定ファイルを記憶する（ステップＳ１０１）。
【００５６】
メモリ試験回路生成部６は、メモリ１０及び内部回路２００のピン情報ファイルをピン情報記憶部３から取得する。そして、メモリ試験回路生成部６は、設定情報に問題が無いか否かを判定する（ステップＳ１０２）。設定情報に問題がある場合（ステップＳ１０２否定）、メモリ試験回路生成部６は、設定情報を変更するか否かを問い合わせる（ステップＳ１１０）。設定変更を行わない場合（ステップＳ１１０否定）、メモリ試験回路生成部６はエラー発生の通知をするなどのエラー処理を行い（ステップＳ１１１）、メモリ試験の処理を終了する。これに対して、設定変更を行う場合（ステップＳ１１０肯定）、操作者は新たな設定値を入力する（ステップＳ１１２）。そして、ステップＳ１０２に戻る。
【００５７】
これに対して、設定情報に問題がない場合（ステップＳ１０２肯定）、メモリ試験回路生成部６は仮合成を行う（ステップＳ１０３）。すなわち、メモリ試験回路生成部６は、メモリ１０と内部回路２００との接続を確認する。
【００５８】
そして、メモリ試験回路生成部６は、仮合成に問題が無いか否かを判定する（ステップＳ１０４）。仮合成に問題がある場合（ステップＳ１０４否定）、メモリ試験回路生成部６はエラー発生の通知をするなどのエラー処理を行い（ステップＳ１１１）、メモリ試験の処理を終了する。
【００５９】
これに対して、仮合成に問題が無い場合（ステップＳ１０４肯定）、メモリ試験回路生成部６は、メモリ試験回路データベースを作成する（ステップＳ１０５）。
【００６０】
そして、メモリ試験回路生成部６は、RTL(Register Transfer Level)設計、並びにメモリ試験回路２１０のピン情報ファイル及びメモリ試験回路２１０の挿入後のメモリ１０のピン情報ファイルを作成する（ステップＳ１０６）。
【００６１】
メモリ試験回路配置部４１は、メモリ試験回路生成部６により生成されたメモリ試験回路２１０の情報ファイルなどにしたがってメモリ試験回路２１０を論理回路記憶部２に記憶させる（ステップＳ１０７）。
【００６２】
メモリ試験制御部４２は、メモリ１０の試験を実施させる（ステップＳ１０８）。そして、試験部４は、メモリ１０の試験結果を通知する（ステップＳ１０９）。
【００６３】
次に、図１３を参照して、メモリ試験回路データベースの作成の処理について説明する。この説明は、図１２のフローチャートのステップＳ１０５の詳細な説明である。図１３は、メモリ試験回路データベースの作成の処理のフローチャートである。
【００６４】
まず、メモリ試験回路生成部６は、未検索のピン情報ファイルのうちの一つを検索対象とする（ステップＳ２０１）。ここで、メモリ試験回路データベースの作成の開始直後は、いずれのピン情報ファイルの検索も行っていないので、全てのピン情報ファイルが未検索の状態である。本実施例２では、図５に示すメモリ１０のピン情報ファイル及び図６に示す内部回路２００のピン情報ファイルのいずれかが検索の対象となる。
【００６５】
次に、メモリ試験回路生成部６は、検索対象としたピン情報ファイルの中で未検索の行の一つを検索対象とする（ステップＳ２０２）。ここで、行とは例えば図５に示すメモリ１０のピン情報ファイルの各行を指す。そして、メモリ試験回路データベースの作成の開始直後は、いずれのピン情報ファイルの検索も行っていないので、全てのピン情報ファイルの全ての行が未検索の状態である。
【００６６】
そして、メモリ試験回路生成部６は、検索対象とした行のメモリグループ番号を検索し、検索対象の行に試験回路グループの番号があるか否かを判定する（ステップＳ２０３）。例えば、図５のメモリ１０のPort_nameがM_Dである行の場合、試験回路グループは１番であり、メモリ試験回路生成部６は、試験回路グループの番号があると判定する。試験回路グループ番号がある場合（ステップＳ２０３肯定）、メモリ試験回路生成部６は、検索対象としている行をメモリ試験回路データベースに加える（ステップＳ２０４）。これに対して、試験回路グループ番号がない場合（ステップＳ２０３否定）、ステップＳ２０５へ進む。
【００６７】
メモリ試験回路生成部６は、検索対象としているピン情報ファイルに未検索の行があるか否かを判定する（ステップＳ２０５）。この判定は、例えばメモリ試験回路生成部６が検索をした行にフラグを立てていき、各行のフラグの有無を確認することで行うことができる。未検索の行がある場合（ステップＳ２０５肯定）、ステップＳ２０２へ戻る。
【００６８】
これに対して、未検索の行がない場合（ステップＳ２０５否定）、メモリ試験回路生成部６は、検索していないピン情報ファイルがあるか否かを判定する（ステップＳ２０６）。検索していないピン情報ファイルがある場合（ステップＳ２０６肯定）、ステップＳ２０１へ戻る。これに対して、検索していないピン情報ファイルがない場合（ステップＳ２０６否定）、言い換えれば、全てのピン情報ファイルを検索し終えた場合、メモリ試験回路生成部６はメモリ試験回路データベースの作成を終了する。
【００６９】
次に、図１４を参照して、メモリ試験回路のピン情報ファイル及びメモリ試験回路挿入後のメモリのピン情報ファイルの作成の処理について説明する。この説明は、図１２のフローチャートのステップＳ１０６の詳細な説明である。図１４は、メモリ試験回路のピン情報ファイル及びメモリ試験回路挿入後のメモリのピン情報ファイルの作成の処理のフローチャートである。
【００７０】
メモリ試験回路生成部６は、メモリ設定ファイルを用いてメモリ試験回路で使用する構成要素の選択を行う。そして、メモリ試験回路生成部６は、選択した部品回路を部品回路記憶部５から取得する（ステップＳ３０１）。
【００７１】
次に、メモリ試験回路生成部６は、メモリ試験回路データベースからメモリ試験回路挿入前のメモリ１０及び内部回路２００のピンの名前を取得する。そして、メモリ試験回路生成部６は、取得したピンに対応するメモリ試験回路２１０のピン名を作成する（ステップＳ３０２）。
【００７２】
次に、メモリ試験回路生成部６は、作成したピン名を有する各ピンの入出力を対応するメモリ１０又は内部回路２００のピンの入出力と逆にする。さらに、メモリ試験回路生成部６は、作成したピン名を有する各ピンを取得した部品回路と接続することで、メモリ試験回路を生成する（ステップＳ３０３）。
【００７３】
次に、メモリ試験回路生成部６は、メモリ１０の各ピンの接続元を内部回路２００からメモリ試験回路２１０に変更する。また、メモリ試験回路生成部６は、メモリ１０の出力ピンの接続先にメモリ試験回路２１０を加える（ステップＳ３０４）。
【００７４】
次に、メモリ試験回路生成部６は、クロック及びリセット信号を内部回路２００と同様のものを使用するようにピン情報を加える。また、メモリ試験回路生成部６は、試験結果を外部に出力できるようにピン情報を加える（ステップＳ３０５）。
【００７５】
次に、メモリ試験回路生成部６は、メモリ設定ファイルを用いて内部回路２００を使用するか否かを判定する（ステップＳ３０６）。内部回路２００を使用しない場合（ステップＳ３０６否定）、ステップＳ３０８に進む。これに対して、内部回路２００を使用する場合（ステップＳ３０６肯定）、メモリ試験回路生成部６は、未使用ピンに対して入力オープン処理及び出力ピンの固定処理を行う（ステップＳ３０７）。
【００７６】
そして、メモリ試験回路生成部６は、生成したピン情報をまとめ、メモリ試験回路２１０の挿入後の構成要路回路の情報及びピン情報ファイルを生成する（ステップＳ３０８）。
【００７７】
以上に説明したように、本実施例２に係るＦＰＧＡは、予め入力されたピン情報ファイル、部品回路及びメモリ設定ファイルから自動的にメモリ試験回路を生成することができる。さらに、生成したメモリ試験回路を用いて、ＦＰＧＡに内蔵されたメモリの試験を自動的に行うことができる。これにより、メモリ試験回路を作成する手間を省くことができ、メモリ試験に係る時間を短縮することができる。また、ＦＰＧＡの動作不良が内部ロジックに起因するものか、メモリの故障に起因するものかの判定が容易になるとともに、その判定をするのにかかる時間を短縮することができる。
【００７８】
また、本実施例２に係るＦＰＧＡは、ランダムな複数のテストデータを用いて試験を行うため、全てのメモリ空間の検査を行うことができ、メモリの故障検出の確度を向上させることが可能となる。
【００７９】
さらに、本実施例２に係るＦＰＧＡは、ＦＰＧＡを用いた製品を製造するメーカにおいても容易に内蔵メモリの試験を行うことができるため、本実施例２に係るＦＰＧＡを用いた製品の品質向上に寄与することができる。
【００８０】
また、本実施例２では、内部回路とメモリとの間にメモリ試験回路を挿入する構成としている。これにより、メモリ試験回路を記憶したままの状態で、内部回路によるデータ処理を行うことができる。そのため、メモリ試験回路を記憶したままの状態でＦＰＧＡを用いた製品を出荷することもでき、実際にその製品を使用するユーザがメモリ試験回路を用いてメモリの試験を行うことも可能である。ただし、メモリの試験を行うためには、内部回路は無くてもよく、内部回路を外してメモリ試験回路を挿入しメモリの試験を行ってもよい。内部回路を外してメモリ試験回路を挿入することは、例えば、図７のメモリ設定ファイル３００のメモリ試験回路挿入方法設定３０５において「既存回路を外してメモリ試験回路挿入」を設定することで実現できる。このように内部回路を外すことで、試験における消費電力が抑えることができる。また、実際に内部回路がデータ処理を行うときメモリ試験回路が無いことで、内部回路によるデータ処理における電力消費を抑えることができる。
【００８１】
（変形例）
本変形例に係るプログラム可能論理デバイスは、確保するメモリの領域を固定することが実施例２のプログラム可能論理デバイスと異なるものである。そこで、以下の説明では、確保するメモリの領域を固定する動作について主に説明する。本変形例の説明においても、プログラム可能論理デバイスの一例としてＦＰＧＡを用いて説明する。
【００８２】
本変形例に係るＦＰＧＡのメモリ試験回路生成部６は、確保するメモリの領域の情報が記載されたメモリ配置情報ファイルを予め記憶している。ここで、図１５は、メモリ配置情報ファイルの一例の図である。図１５に示すように、メモリ配置情報ファイルには、確保するメモリ１０の領域を示すメモリ座標６０１、メモリのＩＤ番号６０２及びインスタンス名６０３が記載されている。すなわち、インスタンス名６０３で表される所定のインスタンスに対して割り当てられるメモリ１０の領域がメモリ座標６０１及びＩＤ番号６０２で規定されている。
【００８３】
そして、メモリ試験回路配置部４１は、生成したメモリ試験回路２１０を論理回路記憶部２に記憶させた後に、メモリ配置情報ファイルで規定されたメモリ１０の領域を確保するようメモリ試験回路２１０とメモリ１０とが配置されているか否かを判定する。メモリ試験回路配置部４１は、位置情報ファイルで規定されたメモリ１０の領域の確保がなされない場合、メモリ試験回路２１０の再配置を行う。そして、位置情報ファイルで規定されたメモリ１０の領域の確保がなされると、メモリ試験制御部４２は、試験を実施する。
【００８４】
論理回路記憶部２に記憶された内部回路２００は、メモリ配置情報ファイルで指定されているメモリ１０における領域を予め記憶している。そして、内部回路２００は、メモリ配置情報で指定されているメモリ１０の領域を用いてデータ処理を行う。
【００８５】
以上に説明したように、本変形例に係るＦＰＧＡは、ＦＰＧＡの内蔵のメモリにおける使用領域を固定した状態で試験を行うことが可能である。そして、内部回路がデータ処理においてメモリを使用する場合にも、試験が行われたメモリの使用領域を用いることができる。これにより、ＦＰＧＡの内蔵のメモリの一部の領域のみの試験を行えば十分となり、全メモリ空間を試験する必要が無くなるので、メモリの試験に係る時間を短縮することが可能となる。
【実施例３】
【００８６】
図１６は、実施例３に係るプログラム可能論理デバイスのブロック図である。本実施例３に係るプログラム可能論理デバイスは、複数のメモリを有していることが実施例２と異なるものである。ここで、図１６において図２と同じ符号を有する各部は、特に説明のない限り同じ機能を有するものとする。以下の説明では、プログラム可能論理デバイスとしてＦＰＧＡを用いた場合で説明する。また、本実施例３では、内部回路を外してメモリ試験回路を挿入する場合で説明する。
【００８７】
本実施例３に係るＦＰＧＡは、図１６に示すように、第１メモリ１１及び第２メモリ１２という２つのメモリを有している。
【００８８】
論理回路記憶部２には、第１内部回路２０１及び第２内部回路２０２が記憶されている。図１７は、実施例３に係るプログラム可能論理デバイスにおける内部回路及びメモリの接続及びデータの流れを示したメモリ接続ブロック構成図である。図１７に示すように、第１内部回路２０１は第１メモリ１１に対するデータの読み書きを伴うデータ処理を行う。また、第２内部回路２０２は第２メモリ１２に対するデータの読み書きを伴うデータ処理を行う。
【００８９】
図１８は、実施例３に係るメモリ及び内部回路のピン情報ファイルの一例の図である。ピン情報ファイル７０１が第１メモリ１１のピン情報ファイルである。ピン情報ファイル７０２が第２メモリ１２のピン情報ファイルである。ピン情報ファイル７０３が第１内部回路２０１のピン情報ファイルである。ピン情報ファイル７０４が第２内部回路２０２のピン情報ファイルである。そして、ピン情報記憶部３は、ピン情報ファイル７０１〜７０４を予め記憶している。本実施例３では、メモリが２つあるため、それぞれの試験を行うために試験回路グループが分かれている。具体的には、第１メモリ１１を試験する試験回路グループ１と、第２メモリ１２を試験する試験回路グループ２とに分かれている。そして、本実施例３では、第１内部回路２０１及び第２内部回路２０２を外した状態で試験を行うため、ピン情報ファイル７０３及び７０４には試験回路グループの番号が割り振られている項目は存在しない。
【００９０】
メモリ試験回路生成部６は、ピン情報ファイル７０１及び７０２をピン情報記憶部３から取得する。そして、メモリ試験回路生成部６は、各ピン情報ファイルの試験回路グループを確認して、図１９に示すようなメモリ試験回路データベースを生成する。ここで、図１９は、実施例３におけるメモリ試験回路データベースの一例の図である。図１９に示すように、本実施例３におけるメモリ試験回路データベースには第１メモリ１１及び第２メモリ１２の両方のピン情報が含まれる。
【００９１】
メモリ試験回路生成部６は、メモリ試験回路データベースのピンに対応するメモリ試験回路のピンの名前を作成する。本実施例３では２つのメモリがあるので、メモリ試験回路も２つ作成される。ここで、第１メモリ１１を試験するメモリ試験回路を第１メモリ試験回路とし、第２メモリ１２を試験するメモリ試験回路を第２メモリ試験回路とする。そして、メモリ試験回路生成部６は、第１メモリ１１及び第２メモリ１２の各ピンに対応するピンの入出力を、その対応するピンと逆にする。また、メモリ試験回路生成部６は、クロック及びリセット信号の入力ピンを作成する。さらに、メモリ試験回路生成部６は、試験結果を出力するピンを作成する。また、メモリ試験回路生成部６は、第１メモリ１１及び第２メモリ１２の接続元をそれぞれ第１メモリ試験回路２２１及び第２メモリ試験回路２３１に変更する。図２０は、実施例３におけるメモリ試験回路挿入後のメモリ及びメモリ試験回路のピン情報ファイルの一例の図である。そして、メモリ試験回路生成部６は、作成したピン情報をまとめて、図２０に示す第１メモリ試験回路のピン情報ファイル８０３及び第２メモリ試験回路のピン情報ファイル８０４を作成する。また、メモリ試験回路生成部６は、第１メモリ試験回路及び第２メモリ試験回路挿入後の第１メモリ１１のピン情報ファイル８０１及び第２メモリ１２のピン情報ファイル８０２を作成する。ピン情報ファイル８０１及びピン情報ファイル８０２は、点線で囲われた部分が図１８におけるピン情報ファイル７０１及びピン情報ファイル７０２と異なるものである。
【００９２】
さらに、メモリ試験回路生成部６は、部品回路記憶部５から部品回路を取得する。
【００９３】
そして、メモリ試験回路生成部６は、ピン情報ファイル８０１〜８０４及び部品回路を用いて、第１メモリ試験回路及び第２メモリ試験回路を生成する。この時、メモリ試験回路生成部６は、クロック及びリセット信号以外の入力信号が有る場合には、その信号は入力オープンにする。また、メモリ試験回路生成部６は、試験結果を出力する以外に出力ピンがある場合には、固定した出力が行われるようにする。
【００９４】
そして、メモリ試験回路配置部４１は、図２１に示すように生成した第１メモリ試験回路２２１及び第２メモリ試験回路２３１を論理回路記憶部２に記憶する。図２１は、実施例３に係るプログラム可能論理デバイスにおけるメモリ試験回路を挿入した状態のメモリ接続ブロック構成図である。そして、試験部４は、第１メモリ試験回路２２１及び第２メモリ試験回路２３１からの試験結果を受け取り、試験結果がＮＧの場合、故障が発生しているメモリの情報を通知する。
【００９５】
ここで、本実施例３では、第１内部回路２０１及び第１内部回路２０２を外して試験を行う設定になっているため、メモリ試験回路生成部６はピン情報ファイル７０１及び７０２のみを取得している。ただし、メモリ試験回路生成部６は、ピン情報ファイル７０３及び７０４も取得して、試験回路グループの番号が記載されていないことを確認することで、第１内部回路２０１及び第２内部回路２０２のピン情報を除くようにしても良い。
【００９６】
以上に説明したように、本実施例３に係るＦＰＧＡは、複数のメモリがある場合にも、各メモリに対するメモリ試験回路を自動的に生成し、その生成したメモリ試験回路を用いて各メモリの試験を自動的に行うことができる。複数のメモリがあるＦＰＧＡにおいて各メモリに対する試験回路作成の時間を削減することができ、効率的にメモリ試験を行うことができ、また、複数のメモリがあるＦＰＧＡの動作不良の原因の特定を効率的に行うことができる。
【実施例４】
【００９７】
図２２は、実施例４に係るプログラム可能論理デバイスにおけるメモリ試験回路を挿入した状態のメモリ接続ブロック構成図である。本実施例４に係るプログラム可能論理デバイスは、故障が発生したメモリのアドレスを特定し通知することが、実施例２又は実施例３と異なるものである。以下では、実施例３に故障が発生したメモリのアドレスを特定し通知する機能を加えたものを例に説明する。以下の説明における、本実施例４にかかるプログラム可能論理デバイスのブロック図も図１６で表される。
【００９８】
部品回路記憶部５は、データ生成回路、メモリ制御タイミング生成回路及びチェック回路に加えて、アドレス特定回路及び出力回路を記憶している。本実施例４では、部品回路記憶部５は、アドレス特定回路として図２２に示すLATCH２１６を記憶している。また、部品回路記憶部５は、出力回路としてPS２１７を記憶しいている。本実施例４では、PS２１７は、シリアル出力を行う回路である。
【００９９】
メモリ試験回路生成部６は、メモリ設定ファイルから利用する部品回路を特定する。本実施例４は、PN23GEN２１１、ADGEN２１２、PN23CHK２１３、LATCH２１６及びPS２１７を利用する構成回路として特定する。そして、メモリ試験回路生成部６は、PN23GEN２１１、ADGEN２１２、PN23CHK２１３、LATCH２１６及びPS２１７を部品回路記憶部５から取得する。
【０１００】
そして、メモリ試験回路生成部６は、ピン情報ファイルを用いてメモリ試験回路データベースを作成する。そして、メモリ試験回路生成部６は、メモリ試験回路データベースから第１メモリ試験回路２２１、第２メモリ試験回路２３１、第１メモリ１１及び第２メモリ１２のピン情報ファイルを作成する。
【０１０１】
メモリ試験回路生成部６は、PN23GEN２１１、ADGEN２１２、PN23CHK２１３、LATCH２１６及びPS２１７を備えた第１メモリ試験回路２２１及び第２メモリ試験回路２３１をそれぞれ生成する。ここで、第１メモリ試験回路２２１及び第２メモリ試験回路２３１のいずれも同じ動作を行うため、以下では、図２２の第１メモリ試験回路２２１を用いて説明する。
【０１０２】
具体的には、メモリ試験回路生成部６は、PN23CHK２１３から出力される試験結果がLATCH２１６に入力されるように配線する。また、メモリ試験回路生成部６は、ADGEN２１２で指定されたメモリアドレスがLATCH２１６に入力されるように配線する。さらに、メモリ試験回路生成部６は、LATCH２１６からの出力がPS２１７に入力されるように配線する。そして、メモリ試験回路生成部６は、PS２１７からの出力が外部に出力されるように配線する。本実施例４では、PS２１７からの出力は試験部４に出力されるものとする。
【０１０３】
さらに、LATCH２１６及びPS２１７の動作の詳細を説明する。LATCH２１６は、PN23CHK２１３からの入力を受けるまで、ADGEN２１２から入力されたメモリアドレスを保持しておく。そして、LATCH２１６は、PN23CHK２１３から入力された試験結果がＯＫの時には、保持しているメモリアドレスを破棄する。これに対して、LATCH２１６は、PN23CHK２１３から入力された試験結果がＮＧの時には、保持しているメモリアドレスをPS２１７へ出力する。すなわち、LATCH２１６は、故障メモリのアドレスをPS２１７へ出力することになる。このLATCH２１６の動作はラッチと呼ばれることもある。そして、PS217は、LATCH２１６から入力された故障メモリのアドレスを試験部４へ出力する。
【０１０４】
次に、図２３を参照して、故障メモリのアドレスの出力タイミングを説明する。図２３は、故障メモリのアドレス出力タイミングを説明するための図である。グラフ９０１は第１メモリ試験回路２２１及び第２メモリ試験回路２３１の動作クロックを表す。グラフ９０２は、第１メモリ試験回路２２１のPN23CHK２１３からの出力であり、第１メモリ１１のアドレス有効領域を示す。そして、グラフ９０３は、第１メモリ試験回路２２１のLATCH２１６でラッチしたアドレスをPS217でパラレルシリアル変換した出力を示す。また、グラフ９０４は、第２メモリ試験回路２３１のPN23CHK２１３からの出力であり、第２メモリ１２のアドレス有効領域を示す。グラフ９０５は、第２メモリ試験回路２３１のLATCH２１６でラッチしたアドレスをPS217でパラレルシリアル変換した出力を示す。
【０１０５】
PN23CHK２１３は、メモリの故障がある場合には”High”を出力し、メモリの故障がない場合には”Low”を出力する。すなわち、グラフ９０２の点９２１から点９２２までが、第１メモリ試験回路２２１のPN23CHK２１３がメモリ故障を検知した場合である。また、グラフ９０４の点９４１から点９４２までが、第２メモリ試験回路２３１のPN23CHK２１３がメモリ故障を検知した場合である。そして、PN23CHK２１３から”High”の信号が入力されると、LATCH２１６はそのときのメモリアドレスを取得する。グラフ９０３で示すように、第１メモリ試験回路２２１のLATCH２１６は、第１メモリ１１における故障メモリのアドレスとして、PN23CHK２１３から”High”の信号が入力されている間のＡＤ０〜ＡＤ７までを取得し、そのアドレスを出力する。そして、第１メモリ試験回路２２１のLATCH２１６は、取得したアドレスを出力する。また、グラフ９０５で示すように、第２メモリ試験回路２３１のLATCH２１６は、第２メモリ１２における故障メモリのアドレスとして、PN23CHK２１３から”High”の信号が入力されている間のＡＤ０〜ＡＤ３までを取得する。そしてこれに対して、PN23CHK２１３から”Low”の信号が入力されている場合には、グラフ９０３及びグラフ９０４のようにLATCH２１６は、”Low”を出力する。
【０１０６】
試験部４は、PN23CHK２１３から試験結果の入力を受ける。さらに、試験結果がＮＧの場合には、試験部４は、故障メモリのアドレスの入力をPS２１７から受ける。そして、入力された試験結果がＮＧの場合には、試験部４は、メモリの故障発生の通知とともに、PS２１７から入力された故障メモリアドレスを通知する。
【０１０７】
以上に説明したように、本実施例４に係るＦＰＧＡでは、試験によって内蔵のメモリの故障が検出された、その故障したメモリのアドレスを通知することができる。これにより、メモリの故障箇所を特定することができるので、その故障した箇所を使用しないように内部回路を配置しなおすなどの対応を迅速に行うことが可能となる。
【０１０８】
以上の各実施例を含む実施形態に関し、さらに以下の付記を開示する。
【０１０９】
（付記１）データを記憶する記憶部と、
前記記憶部への書き込み及び読み出しを伴うデータ処理を行う内部回路を記憶する論理回路記憶部と、
前記記憶部に対して試験を行う際に必要となる部品回路を記憶する部品回路記憶部と、
前記記憶部のピン情報を記憶するピン情報記憶部と、
前記ピン情報記憶部に記憶したピン情報及び前記部品回路記憶部に記憶した部品回路を用いてメモリ試験回路を生成するメモリ試験回路生成部と、
前記メモリ試験回路生成部で生成されたメモリ試験回路を用いて前記記憶部の試験を行い、試験結果を通知する試験部と
を備えたことを特徴とするプログラム可能論理デバイス。
【０１１０】
（付記２）前記部品回路は、少なくともテストデータを生成するデータ生成回路及び前記記憶部から読み出したデータをチェックするデータチェック回路を含むことを特徴とする付記１に記載のプログラム可能論理デバイス。
【０１１１】
（付記３）前記メモリ試験回路生成部は、前記ピン情報に含まれる各ピンに対応し、且つ入出力の方向が逆である入出力ピン及びテスト結果を外部に出力する結果出力ピンを作成し、前記データ生成回路で生成されたテストデータが外部に出力され、外部から前記データチェック回路にデータが入力され、前記データチェック回路によるチェック結果が前記結果出力ピンから出力されるように、前記入出力ピン及び前記結果出力ピンと前記部品回路とを接続して前記メモリ試験回路を生成することを特徴とする付記２に記載のプログラム可能論理デバイス。
【０１１２】
（付記４）前記試験部は、
テストデータが前記記憶部に入力され、前記記憶部に記憶された該テストデータを読み出して得られる検証データが前記データチェック回路に入力されるように、生成した前記メモリ試験回路を前記論理回路記憶部に格納し配置するメモリ試験回路配置部と、
前記データ生成回路で生成されたテストデータを前記記憶部に記憶させ、前記記憶部に記憶させた該テストデータを読み出して得られる検証データと前記テストデータとを前記データチェック回路に比較させるメモリ試験制御部と
を備えたことを特徴とする付記２又は付記３に記載のプログラム可能論理デバイス。
【０１１３】
（付記５）前記ピン情報記憶部は、前記記憶部のピン情報ともに前記内部回路のピン情報を記憶し、
前記試験部は、前記メモリ試験回路を前記内部回路と前記記憶部との間に配置して試験を行うことを特徴とする付記１乃至付記４のいずれか一つに記載のプログラム可能論理デバイス。
【０１１４】
（付記６）前記試験部は、テストデータとしてランダムな複数のデータを使用することを特徴とする付記１乃至付記５のいずれか一つに記載のプログラム可能論理デバイス。
【０１１５】
（付記７）前記記憶部の記憶領域における前記内部回路及び前記メモリ試験回路が使用する領域が固定されていることを特徴とする付記１乃至付記６のいずれか一つに記載のプログラム可能論理デバイス。
【０１１６】
（付記８）前記試験部は、前記記憶部の障害を検出した場合、前記記憶部における該障害が検出された位置を通知することを特徴とする付記１乃至付記７のいずれか一つに記載のプログラム可能論理デバイス。
【０１１７】
（付記９）前記記憶部が、複数あることを特徴とする付記１乃至付記８のいずれか一つに記載のプログラム可能論理デバイス。
【０１１８】
（付記１０）プログラム可能論理デバイスに内蔵されたメモリへの書き込み及び読み出しを伴うデータ処理を行う内部回路を前記メモリと接続させて論理ブロックに記憶させる内部回路記憶ステップと、
前記メモリに対して試験を行う際に必要となる部品回路を記憶する部品回路記憶ステップと、
前記メモリのピン情報を記憶するピン情報記憶ステップと、
前記ピン情報及び前記部品回路を用いてメモリ試験回路を自動生成するメモリ試験回路生成ステップと、  
前記メモリ試験回路生成ステップで生成された前記メモリ試験回路を前記メモリと接続させて論理ブロックに記憶させるメモリ試験回路記憶ステップと、
該メモリ試験回路を用いて前記メモリの試験を行うテストステップと、
前記試験結果を通知する試験結果通知ステップと
を含むことを特徴とするプログラム可能論理デバイスの試験方法。
【符号の説明】
【０１１９】
１  記憶部
２  論理回路記憶部
３  ピン情報記憶部
４  試験部
５  部品回路記憶部
６  メモリ試験回路生成部
７  クロック発生部
８  リセット信号発生部
１０  メモリ
１１  第１メモリ
１２  第２メモリ
４１  メモリ試験回路生成部
４２  メモリ試験回路配置部
４３  メモリ試験制御部
２００  内部回路
２０１  第１内部回路
２０２  第２内部回路
２１０  メモリ試験回路
２２１  第１メモリ試験回路
２３１  第２メモリ試験回路
【図１】
2012009098.tif 000003
【図２】
2012009098.tif 000004
【図３】
2012009098.tif 000005
【図４】
2012009098.tif 000006
【図５】
2012009098.tif 000007
【図６】
2012009098.tif 000008
【図７】
2012009098.tif 000009
【図８】
2012009098.tif 000010
【図９】
2012009098.tif 000011
【図１０】
2012009098.tif 000012
【図１１】
2012009098.tif 000013
【図１２】
2012009098.tif 000014
【図１３】
2012009098.tif 000015
【図１４】
2012009098.tif 000016
【図１５】
2012009098.tif 000017
【図１６】
2012009098.tif 000018
【図１７】
2012009098.tif 000019
【図１８】
2012009098.tif 000020
【図１９】
2012009098.tif 000021
【図２０】
2012009098.tif 000022
【図２１】
2012009098.tif 000023
【図２２】
2012009098.tif 000024
【図２３】
2012009098.tif 000025