(57)【要約】【課題】同一アドレスに異なるデータを書き込む処理を禁止することができる記憶装置を提供することを課題とする。【解決手段】記憶装置は、第１の保持部（４０１）に保持された書き込みイネーブル信号が有効状態である複数の書き込みアドレスのうちの少なくとも２つの書き込みアドレスが一致していない場合には、書き込みイネーブル信号をそのまま出力する第１の無効部（４０２〜４０５）と、第１の保持部の複数の書き込みアドレスと第１の無効部が出力する複数の書き込みイネーブル信号との組みを保持する第２の保持部（５０１）と、テストモードでは、第２の保持部の複数の書き込みイネーブル信号のうちの１つの書き込みイネーブル信号をそのまま出力する第２の無効部（６００）と、第２の保持部の複数の書き込みアドレスと、第２の無効部が出力する複数の書き込みアドレスとの組みに応じて、書き込みを行う第３の保持部（２０２）とを有する。【選択図】図６
2019050073.tif 000002
【特許請求の範囲】
【請求項１】
複数組みの書き込みアドレス及び書き込みイネーブル信号を保持する第１の保持部と、
前記第１の保持部に保持された書き込みイネーブル信号が有効状態である複数の書き込みアドレスのうちの少なくとも２つの書き込みアドレスが一致していない場合には、前記書き込みイネーブル信号をそのまま出力する第１の無効部と、
前記第１の保持部に保持された複数の書き込みアドレスと、前記第１の無効部が出力する複数の書き込みイネーブル信号との組みを保持する第２の保持部と、
テストモードでは、前記第２の保持部に保持された複数の書き込みイネーブル信号のうちの１つの書き込みイネーブル信号をそのまま出力し、その他の書き込みイネーブル信号を無効状態にして出力し、又はすべての書き込みイネーブル信号を無効状態にして出力し、通常モードでは、前記第２の保持部に保持された複数の書き込みイネーブル信号をそのまま出力する第２の無効部と、
前記第２の保持部に保持された複数の書き込みアドレスと、前記第２の無効部が出力する複数の書き込みアドレスとの組みに応じて、書き込みデータの書き込みを行う第３の保持部とを有し、
前記テストモードでは、前記第１の保持部及び前記第２の保持部が相互に接続され、前記第１の保持部及び前記第２の保持部にテストデータが書き込まれることを特徴とする記憶装置。
【請求項２】
前記第１の無効部は、前記複数の書き込みアドレスのうちの少なくとも２つの書き込みアドレスが一致している場合には、前記書き込みイネーブル信号を無効状態にして出力することを特徴とする請求項１に記載の記憶装置。
【請求項３】
前記第２の無効部は、前記テストモードでは、マスクデータに応じて、前記第２の保持部に保持された複数の書き込みイネーブル信号のうちの１つの書き込みイネーブル信号をそのまま出力し、その他の書き込みイネーブル信号を無効状態にして出力し、又はすべての書き込みイネーブル信号を無効状態にして出力することを特徴とする請求項１又は２に記載の記憶装置。
【請求項４】
前記記憶装置はさらに、前記マスクデータを保持する第４の保持部を有し、
前記テストモードでは、前記第４の保持部は、前記第２の保持部に接続されることを特徴とする請求項３に記載の記憶装置。
【請求項５】
前記テストモードでは、前記第３の保持部は、前記第４の保持部に接続されることを特徴とする請求項４に記載の記憶装置。
【請求項６】
前記テストモードでは、前記第３の保持部は、前記第２の保持部に接続されることを特徴とする請求項１〜４のいずれか１項に記載の記憶装置。
【請求項７】
前記記憶装置はさらに、読み出しアドレスに応じて、前記第３の保持部に保持されたデータを読み出す読み出し部と、
前記読み出し部が読み出したデータを保持する第５の保持部とを有することを特徴とする請求項４に記載の記憶装置。
【請求項８】
前記テストモードでは、前記第５の保持部は、前記第４の保持部に接続されることを特徴とする請求項７に記載の記憶装置。
【請求項９】
前記テストモードでは、前記第５の保持部は、前記第２の保持部に接続されることを特徴とする請求項７に記載の記憶装置。
【請求項１０】
記憶部と、
前記記憶部に接続される演算部とを有し、
前記記憶部は、
複数組みの書き込みアドレス及び書き込みイネーブル信号を保持する第１の保持部と、
前記第１の保持部に保持された書き込みイネーブル信号が有効状態である複数の書き込みアドレスのうちの少なくとも２つの書き込みアドレスが一致していない場合には、前記書き込みイネーブル信号をそのまま出力する第１の無効部と、
前記第１の保持部に保持された複数の書き込みアドレスと、前記第１の無効部が出力する複数の書き込みイネーブル信号との組みを保持する第２の保持部と、
テストモードでは、前記第２の保持部に保持された複数の書き込みイネーブル信号のうちの１つの書き込みイネーブル信号をそのまま出力し、その他の書き込みイネーブル信号を無効状態にして出力し、又はすべての書き込みイネーブル信号を無効状態にして出力し、通常モードでは、前記第２の保持部に保持された複数の書き込みイネーブル信号をそのまま出力する第２の無効部と、
前記第２の保持部に保持された複数の書き込みアドレスと、前記第２の無効部が出力する複数の書き込みアドレスとの組みに応じて、書き込みデータの書き込みを行う第３の保持部とを有し、
前記テストモードでは、前記第１の保持部及び前記第２の保持部が相互に接続され、前記第１の保持部及び前記第２の保持部にテストデータが書き込まれることを特徴とする演算処理装置。
【請求項１１】
記憶装置の制御方法であって、
前記記憶装置が有する第１の保持部が、複数組みの書き込みアドレス及び書き込みイネーブル信号を保持し、
前記記憶装置が有する第１の無効部が、前記第１の保持部に保持された書き込みイネーブル信号が有効状態である複数の書き込みアドレスのうちの少なくとも２つの書き込みアドレスが一致していない場合には、前記書き込みイネーブル信号をそのまま出力し、
前記記憶装置が有する第２の保持部が、前記第１の保持部に保持された複数の書き込みアドレスと、前記第１の無効部が出力する複数の書き込みイネーブル信号との組みを保持し、
前記記憶装置が有する第２の無効部が、テストモードでは、前記第２の保持部に保持された複数の書き込みイネーブル信号のうちの１つの書き込みイネーブル信号をそのまま出力し、その他の書き込みイネーブル信号を無効状態にして出力し、又はすべての書き込みイネーブル信号を無効状態にして出力し、通常モードでは、前記第２の保持部に保持された複数の書き込みイネーブル信号をそのまま出力し、
前記記憶装置が有する第３の保持部が、前記第２の保持部に保持された複数の書き込みアドレスと、前記第２の無効部が出力する複数の書き込みアドレスとの組みに応じて、書き込みデータの書き込みを行い、
前記テストモードでは、前記第１の保持部及び前記第２の保持部が相互に接続され、前記第１の保持部及び前記第２の保持部にテストデータが書き込まれることを特徴とする記憶装置の制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、記憶装置、演算処理装置及び記憶装置の制御方法に関する。
【背景技術】
【０００２】
外部装置及び直列入／ 出力インターフェースを支援する複数のポートと、ポートと並列にデータの送受信を行う複数のバンクとを有するマルチポートメモリ素子が知られている（特許文献１参照）。複数のグローバルデータバスは、バンクとポートとの間にデータの送受信を支援する。テスト入／ 出力制御部は、バンクのコア領域をテストするテストモード時、複数のパッドからポートに入力されるテスト信号と入力データ信号とをポートを経由せずにバイパスさせ、グローバルデータバスを介してバンクに伝達する。テスト入／ 出力制御部は、テスト信号に対応して、バンクから出力された出力データ信号をグローバルデータバスを介してパッドに出力する。
【０００３】
また、マルチポートラッチを含むデータ記憶部と、クロック、及び複数組の書き込み制御信号、書き込みアドレス及び書き込みデータから、データ記憶部への書き込み信号を生成する書き込み部とを有するレジスタファイル装置が知られている（特許文献２参照）。書き込み部は、アドレス一致検出回路と、変更回路とを有する。アドレス一致検出回路は、複数組の書き込みアドレスの少なくとも２つのアドレスが一致することを検出し、一致したアドレスについてアドレス一致信号を出力する。変更回路は、アドレス一致信号が出力されると、一致したアドレスの書き込みデータを同一データに変更する。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００７−２８７３０７号公報
【特許文献２】特開２０１４−１８２８４６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
特許文献２は、同一アドレスに異なるデータを同時に書き込む処理を禁止することができる。しかし、特許文献２は、レジスタファイル装置をテストする方法を開示していない。レジスタファイル装置をテストする場合には、同一アドレスに異なるデータを同時に書き込む処理が行われる可能性がある。
【０００６】
１つの側面では、本発明の目的は、通常モードのみならず、テストモードにおいても、同一アドレスに異なるデータを同時に書き込む処理を禁止することができる記憶装置、演算処理装置及び記憶装置の制御方法を提供することである。
【課題を解決するための手段】
【０００７】
記憶装置は、複数組みの書き込みアドレス及び書き込みイネーブル信号を保持する第１の保持部と、前記第１の保持部に保持された書き込みイネーブル信号が有効状態である複数の書き込みアドレスのうちの少なくとも２つの書き込みアドレスが一致していない場合には、前記書き込みイネーブル信号をそのまま出力する第１の無効部と、前記第１の保持部に保持された複数の書き込みアドレスと、前記第１の無効部が出力する複数の書き込みイネーブル信号との組みを保持する第２の保持部と、テストモードでは、前記第２の保持部に保持された複数の書き込みイネーブル信号のうちの１つの書き込みイネーブル信号をそのまま出力し、その他の書き込みイネーブル信号を無効状態にして出力し、又はすべての書き込みイネーブル信号を無効状態にして出力し、通常モードでは、前記第２の保持部に保持された複数の書き込みイネーブル信号をそのまま出力する第２の無効部と、前記第２の保持部に保持された複数の書き込みアドレスと、前記第２の無効部が出力する複数の書き込みアドレスとの組みに応じて、書き込みデータの書き込みを行う第３の保持部とを有し、前記テストモードでは、前記第１の保持部及び前記第２の保持部が相互に接続され、前記第１の保持部及び前記第２の保持部にテストデータが書き込まれる。
【発明の効果】
【０００８】
１つの側面では、通常モードのみならず、テストモードにおいても、同一アドレスに異なるデータを同時に書き込む処理を禁止することができる。
【図面の簡単な説明】
【０００９】
【図１】図１は、第１の実施形態による演算処理装置の構成例を示す図である。
【図２】図２は、レジスタファイル装置の基本構成例を示す図である。
【図３】図３は、書き込み部及びラッチ部の構成例を示す回路図である。
【図４】図４は、第１の基本技術によるレジスタファイル装置の構成例を示す図である。
【図５】図５は、第２の基本技術によるレジスタファイル装置の構成例を示す図である。
【図６】図６は、第１の実施形態によるレジスタファイル装置の構成例を示す図である。
【図７】図７は、ラッチ部の構成例を示す図である。
【図８】図８は、書き込み無効部の入出力の真理値表を示す図である。
【図９】図９は、第１の実施形態によるレジスタファイル装置の制御方法を示すフローチャートである。
【図１０】図１０は、第１の実施形態によるレジスタファイル装置の制御方法を示すタイミングチャートである。
【図１１】図１１は、第２の実施形態による書き込み無効部の構成例を示す図である。
【図１２】図１２は、書き込み無効部の入出力の真理値表を示す図である。
【図１３】図１３は、第３の実施形態によるレジスタファイル装置の構成例を示す図である。
【発明を実施するための形態】
【００１０】
（第１の実施形態）
図１は、第１の実施形態による演算処理装置の構成例を示す図である。演算処理装置は、プロセッサであり、レジスタファイル装置１００と、３個の算術論理演算ユニット（ＡＬＵ：Arithmetic and Logic Unit）１０１〜１０３とを有する。レジスタファイル装置１００は、記憶装置であり、複数のアドレスにデータをそれぞれ記憶する。ＡＬＵ１０１〜１０３は、演算部であり、レジスタファイル装置１００に接続され、高速化のため、データの算術論理演算を並列に行う。レジスタファイル装置１００は、例えば６個の読み出しアドレスのデータＲＤ０〜ＲＤ５をそれぞれ読み出すことができる。ＡＬＵ１０１は、データＲＤ０及びＲＤ１を入力し、演算を行い、データＷＤ＿Ａを出力する。ＡＬＵ１０２は、データＲＤ２及びＲＤ３を入力し、演算を行い、データＷＤ＿Ｂを出力する。ＡＬＵ１０３は、データＲＤ４及びＲＤ５を入力し、演算を行い、データＷＤ＿Ｃを出力する。レジスタファイル装置１００は、データＷＤ＿Ａ，ＷＤ＿Ｂ，ＷＤ＿Ｃの書き込みを行うことができる。ここで、レジスタファイル装置１００は、同一アドレスに異なるデータを同時に書き込む処理を禁止する必要がある。
【００１１】
図２は、レジスタファイル装置１００の基本構成例を示す図である。レジスタファイル装置１００は、デコーダ２０１と、保持部２０２と、読み出し部２０３と、読み出しラッチ部２０４とを有する。レジスタファイル装置１００は、書き込みイネーブル信号ＷＥ＿Ａが有効状態である場合には、書き込みアドレスＷＡ＿Ａに書き込みデータＷＤ＿Ａを書き込む。また、レジスタファイル装置１００は、書き込みイネーブル信号ＷＥ＿Ｂが有効状態である場合には、書き込みアドレスＷＡ＿Ｂに書き込みデータＷＤ＿Ｂを書き込む。また、レジスタファイル装置１００は、書き込みイネーブル信号ＷＥ＿Ｃが有効状態である場合には、書き込みアドレスＷＡ＿Ｃに書き込みデータＷＤ＿Ｃを書き込む。書き込みデータＷＤ＿Ａ、ＷＤ＿Ｂ及びＷＤ＿Ｃは、それぞれ、ｎビット（１ワード）のデータである。
【００１２】
デコーダ２０１は、書き込みアドレスＷＡ＿Ａと書き込みイネーブル信号ＷＥ＿Ａの組みと、書き込みアドレスＷＡ＿Ｂと書き込みイネーブル信号ＷＥ＿Ｂの組みと、書き込みアドレスＷＡ＿Ｃと書き込みイネーブル信号ＷＥ＿Ｃの組みとを入力し、書き込みイネーブル信号ＷＥＡ１〜ＷＥＡｍ，ＷＥＢ１〜ＷＥＢｍ，ＷＥＣ１〜ＷＥＣｍを出力する。
【００１３】
まず、書き込みイネーブル信号ＷＥ＿Ａが有効状態である場合を説明する。その場合、書き込みアドレスＷＡ＿Ａが第１のアドレスである場合には、書き込みイネーブル信号ＷＥＡ１が有効状態になる。書き込みアドレスＷＡ＿Ａが第２のアドレスである場合には、書き込みイネーブル信号ＷＥＡ２が有効状態になる。書き込みアドレスＷＡ＿Ａが第ｍのアドレスである場合には、書き込みイネーブル信号ＷＥＡｍが有効状態になる。
【００１４】
次に、書き込みイネーブル信号ＷＥ＿Ｂが有効状態である場合を説明する。その場合、書き込みアドレスＷＡ＿Ｂが第１のアドレスである場合には、書き込みイネーブル信号ＷＥＢ１が有効状態になる。書き込みアドレスＷＡ＿Ｂが第２のアドレスである場合には、書き込みイネーブル信号ＷＥＢ２が有効状態になる。書き込みアドレスＷＡ＿Ｂが第ｍのアドレスである場合には、書き込みイネーブル信号ＷＥＢｍが有効状態になる。
【００１５】
次に、書き込みイネーブル信号ＷＥ＿Ｃが有効状態である場合を説明する。その場合、書き込みアドレスＷＡ＿Ｃが第１のアドレスである場合には、書き込みイネーブル信号ＷＥＣ１が有効状態になる。書き込みアドレスＷＡ＿Ｃが第２のアドレスである場合には、書き込みイネーブル信号ＷＥＣ２が有効状態になる。書き込みアドレスＷＡ＿Ｃが第ｍのアドレスである場合には、書き込みイネーブル信号ＷＥＣｍが有効状態になる。
【００１６】
保持部２０２は、ｍ個の３ポートラッチ部ＷＯＲＤ１〜ＷＯＲＤｍを有する。３ポートラッチ部ＷＯＲＤ１は、書き込み部２１１と、ｎ個のラッチ部２２１−１〜２２１−ｎとを有し、第１のアドレスのｎビット（１ワード）のデータを記憶する。書き込み部２１１は、クロック信号ＣＫを用いて、ｎ個のラッチ部２２１−１〜２２１−ｎへの書き込みを制御する。具体的には、書き込み部２１１は、書き込みイネーブル信号ＷＥＡ１が有効状態である場合には、ｎ個のラッチ部２２１−１〜２２１−ｎにｎビットの書き込みデータＷＤ＿Ａ（Ａ１１〜Ａ１ｎ）を書き込む。また、書き込み部２１１は、書き込みイネーブル信号ＷＥＢ１が有効状態である場合には、ｎ個のラッチ部２２１−１〜２２１−ｎにｎビットの書き込みデータＷＤ＿Ｂ（Ｂ１１〜Ｂ１ｎ）を書き込む。また、書き込み部２１１は、書き込みイネーブル信号ＷＥＣ１が有効状態である場合には、ｎ個のラッチ部２２１−１〜２２１−ｎにｎビットの書き込みデータＷＤ＿Ｃ（Ｃ１１〜Ｃ１ｎ）を書き込む。
【００１７】
３ポートラッチ部ＷＯＲＤ２は、書き込み部２１２と、ｎ個のラッチ部２２２−１〜２２２−ｎとを有し、第２のアドレスのｎビット（１ワード）のデータを記憶する。書き込み部２１２は、クロック信号ＣＫを用いて、ｎ個のラッチ部２２２−１〜２２２−ｎへの書き込みを制御する。具体的には、書き込み部２１２は、書き込みイネーブル信号ＷＥＡ２が有効状態である場合には、ｎ個のラッチ部２２２−１〜２２２−ｎにｎビットの書き込みデータＷＤ＿Ａ（Ａ２１〜Ａ２ｎ）を書き込む。また、書き込み部２１２は、書き込みイネーブル信号ＷＥＢ２が有効状態である場合には、ｎ個のラッチ部２２２−１〜２２２−ｎにｎビットの書き込みデータＷＤ＿Ｂ（Ｂ２１〜Ｂ２ｎ）を書き込む。また、書き込み部２１２は、書き込みイネーブル信号ＷＥＣ２が有効状態である場合には、ｎ個のラッチ部２２２−１〜２２２−ｎにｎビットの書き込みデータＷＤ＿Ｃ（Ｃ２１〜Ｃ２ｎ）を書き込む。
【００１８】
３ポートラッチ部ＷＯＲＤｍは、書き込み部２１ｍと、ｎ個のラッチ部２２ｍ−１〜２２ｍ−ｎとを有し、第ｍのアドレスのｎビット（１ワード）のデータを記憶する。書き込み部２１ｍは、クロック信号ＣＫを用いて、ｎ個のラッチ部２２ｍ−１〜２２ｍ−ｎへの書き込みを制御する。
【００１９】
読み出し部２０３は、セレクタ２３０〜２３５を有する。セレクタ２３０は、読み出しアドレスＲＡ０に応じて、３ポートラッチ部ＷＯＲＤ１〜ＷＯＲＤｍのいずれかに記憶されているデータを読み出し、データＲＤ０として出力する。例えば、読み出しアドレスＲＡ０が第１のアドレスである場合、セレクタ２３０は、ラッチ部２２１−１〜２２１−ｎに記憶されているｎビットデータＱ１１〜Ｑ１ｎをデータＲＤ０として出力する。また、読み出しアドレスＲＡ０が第２のアドレスである場合、セレクタ２３０は、ラッチ部２２２−１〜２２２−ｎに記憶されているｎビットデータＱ２１〜Ｑ２ｎをデータＲＤ０として出力する。
【００２０】
同様に、セレクタ２３１は、読み出しアドレスＲＡ１に応じて、３ポートラッチ部ＷＯＲＤ１〜ＷＯＲＤｍのいずれかに記憶されているデータを読み出し、データＲＤ１として出力する。セレクタ２３２は、読み出しアドレスＲＡ２に応じて、３ポートラッチ部ＷＯＲＤ１〜ＷＯＲＤｍのいずれかに記憶されているデータを読み出し、データＲＤ２として出力する。セレクタ２３３は、読み出しアドレスＲＡ３に応じて、３ポートラッチ部ＷＯＲＤ１〜ＷＯＲＤｍのいずれかに記憶されているデータを読み出し、データＲＤ３として出力する。セレクタ２３４は、読み出しアドレスＲＡ４に応じて、３ポートラッチ部ＷＯＲＤ１〜ＷＯＲＤｍのいずれかに記憶されているデータを読み出し、データＲＤ４として出力する。セレクタ２３５は、読み出しアドレスＲＡ５に応じて、３ポートラッチ部ＷＯＲＤ１〜ＷＯＲＤｍのいずれかに記憶されているデータを読み出し、データＲＤ５として出力する。読み出しラッチ部２０４は、保持部であり、データＲＤ０〜ＲＤ５を保持する。
【００２１】
図３は、図２の書き込み部２１１及びラッチ部２２１−１の構成例を示す回路図である。図２の書き込み部２１２〜２１ｍは、書き込み部２１１と同様の構成を有する。図２のラッチ部２２１−２〜２２１−ｎ，２２２−１〜２２２−ｎ，２２ｍ−１〜２２ｍ−ｎは、ラッチ部２２１−１と同様の構成を有する。
【００２２】
書き込み部２１１は、インバータ３０１，３０５〜３０７及び否定論理積（ＮＡＮＤ）回路３０２〜３０４を有する。インバータ３０１は、クロック信号ＣＫの論理反転信号を出力する。ＮＡＮＤ回路３０２は、インバータ３０１の出力信号と書き込みイネーブル信号ＷＥＡ１との否定論理積信号を、クロック信号ＷＡ１＿ＣＫとして出力する。インバータ３０５は、クロック信号ＷＡ１＿ＣＫの論理反転信号を、クロック信号ＷＡ１＿ＸＣＫとして出力する。ＮＡＮＤ回路３０３は、インバータ３０１の出力信号と書き込みイネーブル信号ＷＥＢ１との否定論理積信号を、クロック信号ＷＢ１＿ＣＫとして出力する。インバータ３０６は、クロック信号ＷＢ１＿ＣＫの論理反転信号を、クロック信号ＷＢ１＿ＸＣＫとして出力する。ＮＡＮＤ回路３０４は、インバータ３０１の出力信号と書き込みイネーブル信号ＷＥＣ１との否定論理積信号を、クロック信号ＷＣ１＿ＣＫとして出力する。インバータ３０７は、クロック信号ＷＣ１＿ＣＫの論理反転信号を、クロック信号ＷＣ１＿ＸＣＫとして出力する。
【００２３】
ラッチ部２２１−１は、インバータ３１１〜３１３と、トランスファゲート３１４〜３１６と、インバータ３１７〜３１９とを有する。インバータ３１１は、書き込みデータＡ１１の論理反転データを出力する。トランスファゲート３１４は、ｐチャネル電界効果トランジスタ及びｎチャネル電界効果トランジスタを有し、クロック信号ＷＡ１＿ＣＫがローレベルの場合には、インバータ３１１の出力端子をノードＮ１に接続し、クロック信号ＷＡ１＿ＣＫがハイレベルの場合には、インバータ３１１の出力端子をノードＮ１に対して切断する。
【００２４】
インバータ３１２は、書き込みデータＢ１１の論理反転データを出力する。トランスファゲート３１５は、ｐチャネル電界効果トランジスタ及びｎチャネル電界効果トランジスタを有し、クロック信号ＷＢ１＿ＣＫがローレベルの場合には、インバータ３１２の出力端子をノードＮ１に接続し、クロック信号ＷＢ１＿ＣＫがハイレベルの場合には、インバータ３１２の出力端子をノードＮ１に対して切断する。
【００２５】
インバータ３１３は、書き込みデータＣ１１の論理反転データを出力する。トランスファゲート３１６は、ｐチャネル電界効果トランジスタ及びｎチャネル電界効果トランジスタを有し、クロック信号ＷＣ１＿ＣＫがローレベルの場合には、インバータ３１３の出力端子をノードＮ１に接続し、クロック信号ＷＣ１＿ＣＫがハイレベルの場合には、インバータ３１３の出力端子をノードＮ１に対して切断する。
【００２６】
インバータ３１７は、ｐチャネル電界効果トランジスタ及びｎチャネル電界効果トランジスタを有し、ノードＮ１のデータの論理反転データをノードＮ２に出力する。インバータ３１８は、ｐチャネル電界効果トランジスタ及びｎチャネル電界効果トランジスタを有し、ノードＮ２のデータの論理反転データをノードＮ１に出力する。インバータ３１７及び３１８は、ラッチ部であり、データを保持する。インバータ３１９は、ｐチャネル電界効果トランジスタ及びｎチャネル電界効果トランジスタを有し、ノードＮ１のデータの論理反転データを、データＱ１１として出力する。
【００２７】
書き込みイネーブル信号ＷＥＡ１がハイレベル（有効状態）である場合、クロック信号ＣＫが負パルスになると、クロック信号ＷＡ１＿ＣＫがローレベルになり、トランスファゲート３１４がオンする。すると、ノードＮ１には、書き込みデータＡ１１の論理反転データが保持され、インバータ３１９は、書き込みデータＡ１１をデータＱ１１として出力する。
【００２８】
書き込みイネーブル信号ＷＥＢ１がハイレベル（有効状態）である場合、クロック信号ＣＫが負パルスになると、クロック信号ＷＢ１＿ＣＫがローレベルになり、トランスファゲート３１５がオンする。すると、ノードＮ１には、書き込みデータＢ１１の論理反転データが保持され、インバータ３１９は、書き込みデータＢ１１をデータＱ１１として出力する。
【００２９】
書き込みイネーブル信号ＷＥＣ１がハイレベル（有効状態）である場合、クロック信号ＣＫが負パルスになると、クロック信号ＷＣ１＿ＣＫがローレベルになり、トランスファゲート３１６がオンする。すると、ノードＮ１には、書き込みデータＣ１１の論理反転データが保持され、インバータ３１９は、書き込みデータＣ１１をデータＱ１１として出力する。
【００３０】
ここで、書き込みイネーブル信号ＷＥＡ１〜ＷＥＣ１のうちの２つ以上がハイレベルになると、クロック信号ＣＫが負パルスになったときに、トランスゲート３１４〜３１６のうちの２つ以上が同時にオンし、インバータ３１７及び３１８のラッチ部でバスファイト（ショート）が起きる可能性がある。バスファイトが起きると、ラッチ部で記憶する値が決まらず、最悪、大電流が流れ、ラッチ部の半導体デバイスを破壊してしまうという課題が発生する。以下、バスファイトを防止するためのレジスタファイル装置１００を、図４を参照しながら説明する。
【００３１】
図４は、第１の基本技術によるレジスタファイル装置１００の構成例を示す図である。図４のレジスタファイル装置１００は、図２のレジスタファイル装置１００に対して、ラッチ部４０１、一致検出部４０２と、論理積（ＡＮＤ）回路４０３〜４０５と、スキャン経路４０６を追加したものである。レジスタファイル装置１００は、通常モードとテストモードを有する。
【００３２】
まず、通常モードについて説明する。通常モードでは、ラッチ部４０１及び保持部２０２は、スキャン経路４０６に対して切断されている。ラッチ部４０１は、保持部であり、書き込みイネーブル信号ＷＥ＿Ａ〜ＷＥ＿Ｃ及び書き込みアドレスＷＡ＿Ａ〜ＷＡ＿Ｃを保持し、書き込みイネーブル信号ＷＥ＿Ａ〜ＷＥ＿Ｃ及び書き込みアドレスＷＡ＿Ａ〜ＷＡ＿Ｃを出力する。
【００３３】
一致検出部４０２は、書き込みイネーブル信号ＷＥ＿Ａ〜ＷＥ＿Ｃ及び書き込みアドレスＷＡ＿Ａ〜ＷＡ＿Ｃを入力し、不一致信号ＭＴを出力する。ＡＮＤ回路４０３は、書き込みイネーブル信号ＷＥ＿Ａと不一致信号ＭＴとの論理積信号を、書き込みイネーブル信号ＷＥ１＿Ａとして出力する。ＡＮＤ回路４０４は、書き込みイネーブル信号ＷＥ＿Ｂと不一致信号ＭＴとの論理積信号を、書き込みイネーブル信号ＷＥ１＿Ｂとして出力する。ＡＮＤ回路４０５は、書き込みイネーブル信号ＷＥ＿Ｃと不一致信号ＭＴとの論理積信号を、書き込みイネーブル信号ＷＥ１＿Ｃとして出力する。デコーダ２０１は、図２の場合と同様に、書き込みイネーブル信号ＷＥ１＿Ａ〜ＷＥ１＿Ｃ及び書き込みアドレスＷＡ＿Ａ〜ＷＡ＿Ｃを基に、書き込みイネーブル信号ＷＥＡ１〜ＷＥＡｍ，ＷＥＢ１〜ＷＥＢｍ，ＷＥＣ１〜ＷＥＣｍを出力する。
【００３４】
一致検出部４０２は、書き込みイネーブル信号ＷＥ＿Ａ及びＷＥ＿Ｂがハイレベル（有効状態）であり、かつ書き込みアドレスＷＡ＿Ａ及びＷＡ＿Ｂが同じである場合には、ローレベルの不一致信号ＭＴを出力する。この場合、ＡＮＤ回路４０３〜４０５は、各々がローレベル（無効状態）の書き込みイネーブル信号ＷＥ１＿Ａ〜ＷＥ１＿Ｃを出力する。
【００３５】
また、一致検出部４０２は、書き込みイネーブル信号ＷＥ＿Ｂ及びＷＥ＿Ｃがハイレベルであり、かつ書き込みアドレスＷＡ＿Ｂ及びＷＡ＿Ｃが同じである場合には、ローレベルの不一致信号ＭＴを出力する。この場合、ＡＮＤ回路４０３〜４０５は、各々がローレベルの書き込みイネーブル信号ＷＥ１＿Ａ〜ＷＥ１＿Ｃを出力する。
【００３６】
また、一致検出部４０２は、書き込みイネーブル信号ＷＥ＿Ａ及びＷＥ＿Ｃがハイレベルであり、かつ書き込みアドレスＷＡ＿Ａ及びＷＡ＿Ｃが同じである場合には、ローレベルの不一致信号ＭＴを出力する。この場合、ＡＮＤ回路４０３〜４０５は、各々がローレベルの書き込みイネーブル信号ＷＥ１＿Ａ〜ＷＥ１＿Ｃを出力する。
【００３７】
また、一致検出部４０２は、書き込みイネーブル信号ＷＥ＿Ａ、ＷＥ＿Ｂ及びＷＥ＿Ｃがハイレベルであり、かつ書き込みアドレスＷＡ＿Ａ、ＷＡ＿Ｂ及びＷＡ＿Ｃが同じである場合には、ローレベルの不一致信号ＭＴを出力する。この場合、ＡＮＤ回路４０３〜４０５は、各々がローレベルの書き込みイネーブル信号ＷＥ１＿Ａ〜ＷＥ１＿Ｃを出力する。
【００３８】
また、一致検出部４０２は、上記以外の場合には、ハイレベルの不一致信号ＭＴを出力する。この場合、ＡＮＤ回路４０３は、書き込みイネーブル信号ＷＥ＿Ａを書き込みイネーブル信号ＷＥ１＿Ａとして出力する。ＡＮＤ回路４０４は、書き込みイネーブル信号ＷＥ＿Ｂを書き込みイネーブル信号ＷＥ１＿Ｂとして出力する。ＡＮＤ回路４０５は、書き込みイネーブル信号ＷＥ＿Ｃを書き込みイネーブル信号ＷＥ１＿Ｃとして出力する。
【００３９】
以上のように、一致検出部４０２がローレベルの不一致信号ＭＴを出力する場合、書き込みイネーブル信号ＷＥ１＿Ａ〜ＷＥ１＿Ｃがすべてローレベルになる。これにより、バスファイトを防止することができる。
【００４０】
保持部２０２は、図２の場合と同様に、書き込みイネーブル信号ＷＥＡ１〜ＷＥＡｍ，ＷＥＢ１〜ＷＥＢｍ，ＷＥＣ１〜ＷＥＣｍに応じて、書き込みデータを書き込み、書き込みデータを保持する。読み出し部２０３及び読み出しラッチ部２０４の動作は、図２の場合と同様である。
【００４１】
次に、テストモードについて説明する。テストモードでは、スキャンテストが行われる。ラッチ部４０１は、スキャンテストのためのスキャン入力端子ＳＩ及びスキャン出力端子ＳＯを有する。保持部２０２は、スキャンテストのためのスキャン入力端子ＳＩ及びスキャン出力端子ＳＯを有する。テストモードでは、ラッチ部４０１のスキャン出力端子ＳＯは、スキャン経路４０６を介して、保持部２０２のスキャン入力端子ＳＩに接続される。ラッチ部４０１のスキャン入力端子ＳＩにテストデータを入力し、ラッチ部４０１及び保持部２０２のラッチ部をシフト動作させることにより、ラッチ部４０１及び保持部２０２のラッチ部にテストデータを書き込む。その後、レジスタファイル装置１００は、そのテストデータを基に、１サイクルの動作を行う。すると、保持部２０２には、そのテストデータに基づくデータが保持される。次に、ラッチ部４０１及び保持部２０２のラッチ部をシフト動作させることにより、保持部２０２のスキャン出力端子ＯＵＴから、保持部２０２のラッチ部のデータを読み出す。その読み出したデータを期待値と比較することにより、レジスタファイル装置１００のテスト結果を判定することができる。
【００４２】
ここで、レジスタファイル装置１００の１サイクルは、ラッチ部４０１が書き込みイネーブル信号ＷＥ＿Ａ〜ＷＥ＿Ｃ及び書き込みアドレスＷＡ＿Ａ〜ＷＡ＿Ｃを出力してから、保持部２０２のラッチ部がデータを保持するまでの期間である。この１サイクルの期間は、一致検出部４０２、ＡＮＤ回路４０３〜４０５及びデコーダ２０１の動作期間を含むため、比較的長い。１サイクルの期間が長い場合には、レジスタファイル装置１００のクロック信号の周波数を高くすることが困難である。以下、１サイクルの期間を短縮するためのレジスタファイル装置１００を、図５を参照しながら説明する。
【００４３】
図５は、第２の基本技術によるレジスタファイル装置１００の構成例を示す図である。図５のレジスタファイル装置１００は、図４のレジスタファイル装置１００に対して、ラッチ部５０１を追加したものである。
【００４４】
まず、通常モードについて説明する。通常モードでは、ラッチ部４０１、ラッチ部５０１及び保持部２０２は、スキャン経路５０２及び５０３に対して、切断されている。第１のサイクルでは、ラッチ部４０１は、書き込みイネーブル信号ＷＥ＿Ａ〜ＷＥ＿Ｃ及び書き込みアドレスＷＡ＿Ａ〜ＷＡ＿Ｃを出力する。ラッチ部５０１は、保持部であり、書き込みイネーブル信号ＷＥ１＿Ａ〜ＷＥ１＿Ｃ及び書き込みアドレスＷＡ＿Ａ〜ＷＡ＿Ｃを保持する。次に、第２のサイクルでは、ラッチ部５０１は、保持している書き込みイネーブル信号及び書き込みアドレスを、書き込みイネーブル信号ＷＥ２＿Ａ〜ＷＥ２＿Ｃ及び書き込みアドレスＷＡ２＿Ａ〜ＷＡ２＿Ｃとして出力する。保持部２０２は、書き込みイネーブル信号ＷＥＡ１〜ＷＥＡｍ，ＷＥＢ１〜ＷＥＢｍ，ＷＥＣ１〜ＷＥＣｍに基づくデータを保持する。
【００４５】
上記のように、ラッチ部５０１を設けることにより、ラッチ部４０１の出力からラッチ部５０１の入力までの第１のサイクルの期間が短くなり、ラッチ部５０１の出力から保持部２０２の入力までの第２のサイクルの期間も短くなる。これにより、１サイクルの期間が短くなるので、レジスタファイル装置１００の周波数を高くし、レジスタファイル装置１００の動作を高速化させることができる。
【００４６】
次に、テストモードについて説明する。テストモードでは、スキャンテストが行われる。ラッチ部５０１は、スキャンテストのためのスキャン入力端子ＳＩ及びスキャン出力端子ＳＯを有する。テストモードでは、ラッチ部４０１のスキャン出力端子ＳＯは、スキャン経路５０２を介して、ラッチ部５０１のスキャン入力端子ＳＩに接続される。ラッチ部５０１のスキャン出力端子ＳＯは、スキャン経路５０３を介して、保持部２０２のスキャン入力端子ＳＩに接続される。ラッチ部４０１のスキャン入力端子ＳＩにテストデータを入力し、ラッチ部４０１、ラッチ部５０１及び保持部２０２のラッチ部をシフト動作させることにより、ラッチ部４０１、ラッチ部５０１及び保持部２０２のラッチ部にテストデータを書き込む。その後、レジスタファイル装置１００は、そのテストデータを基に、１サイクルの動作を行う。すると、ラッチ部５０１及び保持部２０２には、そのテストデータに基づくデータが保持される。次に、ラッチ部４０１、ラッチ部５０１及び保持部２０２のラッチ部をシフト動作させることにより、保持部２０２のスキャン出力端子ＯＵＴから、ラッチ部５０１及び保持部２０２のラッチ部のデータを読み出す。その読み出したデータを期待値と比較することにより、レジスタファイル装置１００のテスト結果を判定することができる。
【００４７】
ここで、ラッチ部５０１には、任意のテストデータの書き込みが可能である。そのため、テストモードでは、バスファイトが発生する可能性がある。また、バスファイトが発生しないようなテストデータを生成する場合、テストデータのパターン数が増加してしまい、テスト時間が増加してしまう課題がある。以下、通常モードのみならず、テストモードにおいても、バスファイトを防止することができるレジスタファイル装置１００を、図６を参照しながら説明する。
【００４８】
図６は、第１の実施形態によるレジスタファイル装置１００の構成例を示す図である。図６のレジスタファイル装置１００は、図５のレジスタファイル装置１００に対して、書き込み無効部６００及びラッチ部６１４を追加したものである。図６のレジスタファイル装置１００は、図２と同様に、デコーダ２０１、保持部２０２、読み出し部２０３及び読み出しラッチ部２０４を有する。さらに、図６のレジスタファイル装置１００は、図５と同様に、ラッチ部４０１、一致検出部４０２、ＡＮＤ回路４０３〜４０５、及びラッチ部５０１を有する。さらに、図６のレジスタファイル装置１００は、書き込み無効部６００及びラッチ部６１４を有し、通常モード及びテストモードを有する。
【００４９】
図７は、保持部２０２のラッチ部２２１−１の構成例を示す図である。図７のラッチ部２２１−１は、図３のラッチ部２２１−１の代わりに、設けられる。図２のラッチ部２２１−２〜２２１−ｎ，２２２−１〜２２２−ｎ，２２ｍ−１〜２２ｍ−ｎは、ラッチ部２２１−１と同様の構成を有する。図７のラッチ部２２１−１は、図３のラッチ部２２１−１に対して、トランスファゲート７０１，７０２及びインバータ７０３〜７０５を追加したものである。なお、図７のラッチ回路２２１−１は、図３のラッチ回路２２１−１と同様に、インバータ３１２，３１３及びトランスファゲート３１５，３１６を有する。
【００５０】
トランスファゲート７０１は、ｐチャネル電界効果トランジスタ及びｎチャネル電界効果トランジスタを有し、テストクロック信号ＡＣＫに応じて、スキャン入力端子ＳＩをノードＮ１に接続する。トランスファゲート７０２は、ｐチャネル電界効果トランジスタ及びｎチャネル電界効果トランジスタを有し、テストクロック信号ＢＣＫに応じて、ノードＮ２をノードＮ３に接続する。
【００５１】
インバータ７０４は、ｐチャネル電界効果トランジスタ及びｎチャネル電界効果トランジスタを有し、ノードＮ３のデータの論理反転データをノードＮ４に出力する。インバータ７０５は、ｐチャネル電界効果トランジスタ及びｎチャネル電界効果トランジスタを有し、ノードＮ４のデータの論理反転データをノードＮ３に出力する。インバータ７０４及び７０５は、ラッチ部であり、データを保持する。インバータ７０３は、ｐチャネル電界効果トランジスタ及びｎチャネル電界効果トランジスタを有し、ノードＮ３のデータの論理反転データをスキャン出力端子ＳＯに出力する。
【００５２】
通常モードでは、トランスファゲート７０１及び７０２がオフし、図７のラッチ部２２１−１は、図３のラッチ部２２１−１と同様に動作する。テストモードでは、トランスファゲート３１４〜３１６（図３）がオフし、トランスファゲート７０１がオンすることにより、スキャン入力端子ＳＩのテストデータがノードＮ１及びＮ２に保持される。テストモードでは、その後、トランスファゲート７０２がオンすることにより、ノードＮ２のデータの論理反転データがスキャン出力端子ＳＯに出力される。
【００５３】
なお、図６のラッチ部４０１，５０１及び６１４は、図７のラッチ部２２１−１と同様の構成を有する。ただし、ラッチ部４０１，５０１及び６１４は、図３のインバータ３１２，３１３及びトランスファゲート３１５，３１６を有しない。ラッチ部４０１のスキャン出力端子ＳＯは、スキャン経路６１５を介して、ラッチ部５０１のスキャン入力端子ＳＩに接続される。ラッチ部５０１のスキャン出力端子ＳＯは、スキャン経路６１６を介して、ラッチ部６１４のスキャン入力端子ＳＩに接続される。ラッチ部６１４のスキャン出力端子ＳＯは、スキャン経路６１７を介して、保持部２０２内のラッチ部２２１−１のスキャン入力端子ＳＩに接続される。保持部２０２内の複数のラッチ部２２１−１〜２２ｍ−ｎは、スキャン入力端子ＳＩ及びスキャン出力端子ＳＯを介して、直列に接続される。
【００５４】
まず、通常モードについて説明する。ラッチ部４０１は、保持部であり、複数組みの書き込みアドレスＷＡ＿Ａ〜ＷＡ＿Ｃ及び書き込みイネーブル信号ＷＥ＿Ａ〜ＷＥ＿Ｃを保持する。一致検出部４０２は、上記と同様に、書き込みイネーブル信号ＷＥ＿Ａ〜ＷＥ＿Ｃ及び書き込みアドレスＷＡ＿Ａ〜ＷＡ＿Ｃを基に、不一致信号ＭＴを出力する。ＡＮＤ回路４０３は、書き込みイネーブル信号ＷＥ＿Ａ及び不一致信号ＭＴの論理積信号を、書き込みイネーブル信号ＷＥ１＿Ａとして出力する。ＡＮＤ回路４０４は、書き込みイネーブル信号ＷＥ＿Ｂ及び不一致信号ＭＴの論理積信号を、書き込みイネーブル信号ＷＥ１＿Ｂとして出力する。ＡＮＤ回路４０５は、書き込みイネーブル信号ＷＥ＿Ｃ及び不一致信号ＭＴの論理積信号を、書き込みイネーブル信号ＷＥ１＿Ｃとして出力する。
【００５５】
一致検出部４０２及びＡＮＤ回路４０３〜４０５は、書き込み無効部であり、ラッチ部４０１に保持されている書き込みイネーブル信号が有効状態である複数の書き込みアドレスのうちの少なくとも２つの書き込みアドレスが一致している場合には、書き込みイネーブル信号を無効状態にして出力し、一致していない場合には、書き込みイネーブル信号をそのまま出力する。
【００５６】
ラッチ部５０１は、保持部であり、ラッチ部４０１に保持されている複数の書き込みアドレスＷＡ＿Ａ〜ＷＡ＿Ｃと、ＡＮＤ回路４０３〜４０５が出力する複数の書き込みイネーブル信号ＷＥ１＿Ａ〜ＷＥ１＿Ｃとの組みを保持し、複数の書き込みアドレスＷＡ２＿Ａ〜ＷＡ２＿Ｃ及び複数の書き込みイネーブル信号ＷＥ２＿Ａ〜ＷＥ２＿Ｃの組みとして出力する。
【００５７】
書き込み無効部６００は、インバータ６０１〜６０４、ＡＮＤ回路６０５〜６０７、論理和（ＯＲ）回路６０８〜６１０、及びＡＮＤ回路６１１〜６１３を有する。インバータ６０１は、マスクデータＴＭＷＭ［１］の論理反転データを出力する。インバータ６０３は、インバータ６０１の出力データの論理反転データを出力する。インバータ６０２は、マスクデータＴＭＷＭ［０］の論理反転データを出力する。インバータ６０４は、インバータ６０２の出力データの論理反転データを出力する。ＡＮＤ回路６０５は、インバータ６０１及び６０２の出力データの論理積データを出力する。ＡＮＤ回路６０６は、インバータ６０１及び６０４の出力データの論理積データを出力する。ＡＮＤ回路６０７は、インバータ６０２及び６０３の出力データの論理積データを出力する。ＯＲ回路６０８は、ＡＮＤ回路６０５の出力データ及びモード信号ＴＭの論理和データを出力する。ＯＲ回路６０９は、ＡＮＤ回路６０６の出力データ及びモード信号ＴＭの論理和データを出力する。ＯＲ回路６１０は、ＡＮＤ回路６０７の出力データ及びモード信号ＴＭの論理和データを出力する。ＡＮＤ回路６１１は、ＯＲ回路６０８の出力データ及び書き込みイネーブル信号ＷＥ２＿Ａの論理積信号を、書き込みイネーブル信号ＷＥ３＿Ａとして出力する。ＡＮＤ回路６１２は、ＯＲ回路６０９の出力データ及び書き込みイネーブル信号ＷＥ２＿Ｂの論理積信号を、書き込みイネーブル信号ＷＥ３＿Ｂとして出力する。ＡＮＤ回路６１３は、ＯＲ回路６１０の出力データ及び書き込みイネーブル信号ＷＥ２＿Ｃの論理積信号を、書き込みイネーブル信号ＷＥ３＿Ｃとして出力する。
【００５８】
通常モードでは、モード信号ＴＭは、ハイレベルである。この場合、ＯＲ回路６０８〜６１０は、ハイレベルを出力する。ＡＮＤ回路６１１は、書き込みイネーブル信号ＷＥ２＿Ａを書き込みイネーブル信号ＷＥ３＿Ａとして出力する。ＡＮＤ回路６１２は、書き込みイネーブル信号ＷＥ２＿Ｂを書き込みイネーブル信号ＷＥ３＿Ｂとして出力する。ＡＮＤ回路６１３は、書き込みイネーブル信号ＷＥ２＿Ｃを書き込みイネーブル信号ＷＥ３＿Ｃとして出力する。
【００５９】
デコーダ２０１は、図２と同様に、書き込みイネーブル信号ＷＥ３＿Ａ〜ＷＥ３＿Ｃ及び書き込みアドレスＷＡ２＿Ａ〜ＷＡ２＿Ｃを基に、書き込みイネーブル信号ＷＥＡ１〜ＷＥＡｍ，ＷＥＢ１〜ＷＥＢｍ，ＷＥＣ１〜ＷＥＣｍを出力する。保持部２０２は、図２と同様に、書き込みイネーブル信号ＷＥＡ１〜ＷＥＡｍ，ＷＥＢ１〜ＷＥＢｍ，ＷＥＣ１〜ＷＥＣｍを基に、書き込みデータの書き込みを行う。読み出し部２０３は、図２と同様に、読み出しアドレスＲＡ０〜ＲＡ５を基に、データＲＤ０〜ＲＤ５を読み出す。読み出しラッチ部２０４は、図２と同様に、データＲＤ０〜ＲＤ５を保持する。
【００６０】
次に、テストモードについて説明する。テストモードでは、スキャンテストを行うため、トランスファゲート７０１及び７０２（図７）をオンすることにより、ラッチ部４０１、ラッチ部５０１、ラッチ部６１４及び保持部２０２のラッチ部が相互に接続される。ラッチ部４０１のスキャン入力端子ＳＩにテストデータを入力し、ラッチ部４０１、ラッチ部５０１、ラッチ部６１４及び保持部２０２のラッチ部をシフト動作させることにより、ラッチ部４０１、ラッチ部５０１、ラッチ部６１４及び保持部２０２のラッチ部にテストデータを書き込む。ラッチ部４０１は、保持したテストデータを、書き込みイネーブル信号ＷＥ＿Ａ〜ＷＥ＿Ｃ及び書き込みアドレスＷＡ＿Ａ〜ＷＡ＿Ｃとして出力する。ラッチ部５０１は、保持したテストデータを、書き込みイネーブル信号ＷＥ２＿Ａ〜ＷＥ２＿Ｃ及び書き込みアドレスＷＡ２＿Ａ〜ＷＡ２＿Ｃとして出力する。ラッチ部６１４は、保持部であり、テストデータをマスクデータＴＭＷＭ［０］及びＴＭＷＭ［１］として保持して出力する。保持部２０２は、保持したテストデータを出力する。
【００６１】
次に、レジスタファイル装置１００は、トランスファゲート７０１及び７０２（図７）がオフし、そのテストデータを基に、１サイクルの動作を行う。ラッチ部５０１は、書き込みイネーブル信号ＷＥ１＿Ａ〜ＷＥ１＿Ｃ及び書き込みアドレスＷＡ＿Ａ〜ＷＡ＿Ｃを保持する。保持部２０２は、書き込みイネーブル信号ＷＥＡ１〜ＷＥＡｍ，ＷＥＢ１〜ＷＥＢｍ，ＷＥＣ１〜ＷＥＣｍを基に、書き込みデータの書き込みを行い、書き込みデータを保持する。
【００６２】
次に、ラッチ部４０１、ラッチ部５０１、ラッチ部６１４及び保持部２０２のラッチ部をシフト動作させることにより、ラッチ部４０１、ラッチ部５０１、ラッチ部６１４及び保持部２０２のラッチ部のデータを、保持部２０２のスキャン出力端子ＳＯから読み出す。その読み出したデータを期待値と比較することにより、レジスタファイル装置１００のテスト結果を判定することができる。
【００６３】
図８は、図６の書き込み無効部６００の入出力の真理値表を示す図である。値「１」はハイレベルを示し、値「０」はローレベルを示す。通常モードでは、モード信号ＴＭは、１である。モード信号ＴＭが１である場合、マスクデータＴＭＷＭ［０］及びＴＭＷＭ［１］にかかわらず、書き込みイネーブル信号ＷＥ３＿Ａは、書き込みイネーブル信号ＷＥ２＿Ａと同じ信号になる。書き込みイネーブル信号ＷＥ３＿Ｂは、書き込みイネーブル信号ＷＥ２＿Ｂと同じ信号になる。書き込みイネーブル信号ＷＥ３＿Ｃは、書き込みイネーブル信号ＷＥ２＿Ｃと同じ信号になる。
【００６４】
テストモードでは、モード信号ＴＭは、０である。モード信号ＴＭが０であり、マスクデータＴＭＷＭ［１］が０であり、マスクデータＴＭＷＭ［０］が０である場合を説明する。その場合、書き込みイネーブル信号ＷＥ３＿Ａは、書き込みイネーブル信号ＷＥ２＿Ａと同じ信号になる。書き込みイネーブル信号ＷＥ３＿Ｂは、０になる。書き込みイネーブル信号ＷＥ３＿Ｃは、０になる。
【００６５】
次に、モード信号ＴＭが０であり、マスクデータＴＭＷＭ［１］が０であり、マスクデータＴＭＷＭ［０］が１である場合を説明する。その場合、書き込みイネーブル信号ＷＥ３＿Ａは、０になる。書き込みイネーブル信号ＷＥ３＿Ｂは、書き込みイネーブル信号ＷＥ２＿Ｂと同じ信号になる。書き込みイネーブル信号ＷＥ３＿Ｃは、０になる。
【００６６】
次に、モード信号ＴＭが０であり、マスクデータＴＭＷＭ［１］が１であり、マスクデータＴＭＷＭ［０］が０である場合を説明する。その場合、書き込みイネーブル信号ＷＥ３＿Ａは、０になる。書き込みイネーブル信号ＷＥ３＿Ｂは、０になる。書き込みイネーブル信号ＷＥ３＿Ｃは、書き込みイネーブル信号ＷＥ２＿Ｃと同じ信号になる。
【００６７】
次に、モード信号ＴＭが０であり、マスクデータＴＭＷＭ［１］が１であり、マスクデータＴＭＷＭ［０］が１である場合を説明する。その場合、書き込みイネーブル信号ＷＥ３＿Ａは、０になる。書き込みイネーブル信号ＷＥ３＿Ｂは、０になる。書き込みイネーブル信号ＷＥ３＿Ｃは、０になる。
【００６８】
以上のように、書き込み無効部６００は、テストモード（ＴＭ＝０）では、マスクデータＴＭＷＭ［０］及びＴＭＷＭ［１］に応じて、ラッチ部５０１に保持されている複数の書き込みイネーブル信号ＷＥ２＿Ａ〜ＷＥ２＿Ｃのうちの１つの書き込みイネーブル信号をそのまま出力し、その他の書き込みイネーブル信号を０（無効状態）にして出力し、又はすべての書き込みイネーブル信号を０（無効状態）にして出力する。また、書き込み無効部６００は、通常モード（ＴＭ＝１）では、ラッチ部５０１に保持されている複数の書き込みイネーブル信号ＷＥ２＿Ａ〜ＷＥ２＿Ｃをそのまま出力する。
【００６９】
モード信号ＴＭが１の場合には、図６の一致検出部４０２及びＡＮＤ回路４０３〜４０５が、複数の書き込みイネーブル信号のうちの２つ以上が１になるバスファイトを防止することができる。また、モード信号ＴＭが０の場合には、書き込み無効部６００が、複数の書き込みイネーブル信号のうちの２つ以上が１になるバスファイトを防止することができる。これにより、通常モードのみならず、テストモードにおいても、同一アドレスに異なるデータを同時に書き込むバスファイトを禁止することができる。
【００７０】
また、テストモードにおいては、マスクデータＴＭＷＭ［０］及びＴＭＷＭ［１］を用いることにより、種々のパターンの書き込みイネーブル信号ＷＥ３＿Ａ〜ＷＥ３＿Ｃのテストデータを生成することができる。
【００７１】
図９は、本実施形態によるレジスタファイル装置１００の制御方法を示すフローチャートである。ステップＳ９０１において、レジスタファイル装置１００は、動作モードがテストモード及び通常モードのいずれであるのかを判定する。レジスタファイル装置１００は、動作モードが通常モードであると判定した場合には、ステップＳ９０２に処理を進め、動作モードがテストモードであると判定した場合には、ステップＳ９０７に処理を進める。
【００７２】
ステップＳ９０２において、レジスタファイル装置１００は、モード信号ＴＭを１にする。次に、ステップＳ９０３において、レジスタファイル装置１００は、通常動作を行う。書き込み無効部６００は、モード信号ＴＭが１であるので、オフ状態になる。次に、ステップＳ９０４において、レジスタファイル装置１００は、不一致信号ＭＴが０（ローレベル）であるか否かを判定する。レジスタファイル装置１００は、不一致信号ＭＴが０である場合には、バスファイトが発生するので、ステップＳ９０６に処理を進め、不一致信号ＭＴが１である場合には、バスファイトが発生しないので、ステップＳ９０５に処理を進める。
【００７３】
ステップＳ９０５において、バスファイトが発生しないので、ＡＮＤ回路４０３〜４０５は、書き込みイネーブル信号ＷＥ＿Ａ〜ＷＥ＿Ｃを書き込みイネーブル信号ＷＥ１＿Ａ〜ＷＥ１＿Ｃとして出力する。書き込み無効部６００は、書き込みイネーブル信号ＷＥ２＿Ａ〜ＷＥ２＿Ｃを書き込みイネーブル信号ＷＥ３＿Ａ〜ＷＥ３＿Ｃとして出力する。
【００７４】
ステップＳ９０６において、ＡＮＤ回路４０３〜４０５は、各々が０の書き込みイネーブル信号ＷＥ１＿Ａ〜ＷＥ１＿Ｃを出力する。これにより、バスファイトを防止することができる。
【００７５】
ステップＳ９０７において、レジスタファイル装置１００は、モード信号ＴＭを０にする。次に、ステップＳ９０８において、レジスタファイル装置１００は、スキャンテスト動作を行う。書き込み無効部６００は、モード信号ＴＭが０であるので、オン状態になる。次に、ステップＳ９０９において、レジスタファイル装置１００は、スキャン経路６１５〜６１７を介して、ラッチ部４０１、ラッチ部５０１、ラッチ部６１４及び保持部２０２のラッチ部にテストデータを書き込む。次に、ステップＳ９１０において、レジスタファイル装置１００は、クロック信号ＣＫにより、回路を動作させる。次に、ステップＳ９１１において、レジスタファイル装置１００は、マスクデータＴＭＷＭ［０］及びＴＭＷＭ［１］の値を判定する。
【００７６】
レジスタファイル装置１００は、マスクデータＴＭＷＭ［１］が１であり、マスクデータＴＭＷＭ［０］が１である場合には、ステップＳ９１２に進む。ステップＳ９１２において、書き込み無効部６００は、各々が０の書き込みイネーブル信号ＷＥ３＿Ａ〜ＷＥ３＿Ｃを出力する。これにより、バスファイトを防止することができる。
【００７７】
また、レジスタファイル装置１００は、マスクデータＴＭＷＭ［１］が０であり、マスクデータＴＭＷＭ［０］が０である場合には、ステップＳ９１３に進む。ステップＳ９１３において、書き込み無効部６００は、書き込みイネーブル信号ＷＥ２＿Ａのみを書き込みイネーブル信号ＷＥ３＿Ａとして出力する。これにより、バスファイトを防止することができる。
【００７８】
また、レジスタファイル装置１００は、マスクデータＴＭＷＭ［１］が０であり、マスクデータＴＭＷＭ［０］が１である場合には、ステップＳ９１４に進む。ステップＳ９１４において、書き込み無効部６００は、書き込みイネーブル信号ＷＥ２＿Ｂのみを書き込みイネーブル信号ＷＥ３＿Ｂとして出力する。これにより、バスファイトを防止することができる。
【００７９】
また、レジスタファイル装置１００は、マスクデータＴＭＷＭ［１］が１であり、マスクデータＴＭＷＭ［０］が０である場合には、ステップＳ９１５に進む。ステップＳ９１５において、書き込み無効部６００は、書き込みイネーブル信号ＷＥ２＿Ｃのみを書き込みイネーブル信号ＷＥ３＿Ｃとして出力する。これにより、バスファイトを防止することができる。
【００８０】
図１０は、本実施形態によるレジスタファイル装置１００の制御方法を示すタイミングチャートである。通常モードである場合には、モード信号ＴＭがハイレベルになる。この場合、書き込み無効部６００は、書き込みイネーブル信号ＷＥ２＿Ａ〜ＷＥ２＿Ｃを書き込みイネーブル信号ＷＥ３＿Ａ〜ＷＥ３＿Ｃとしてそれぞれ出力する。この場合、一致検出部４０２及びＡＮＤ回路４０３〜４０５が、バスファイトを防止することができる。
【００８１】
次に、テストモードである場合には、モード信号ＴＭがローレベルになる。ラッチ部５０１には、各々がローレベルの書き込みイネーブル信号ＷＥ２＿Ａ〜ＷＥ２＿Ｃが書き込まれる。ラッチ部６１４には、各々がハイレベルのマスクデータＴＭＷＭ［０］及びＴＭＷＭ［１］が書き込まれる。クロック信号ＣＫが負パルスになると、レジスタファイル装置１００の回路が動作する。書き込み無効部６００は、各々がローレベルの書き込みイネーブル信号ＷＥ３＿Ａ〜ＷＥ３＿Ｃを出力する。
【００８２】
次に、ラッチ部５０１には、各々がハイレベルの書き込みイネーブル信号ＷＥ２＿Ａ〜ＷＥ２＿Ｃが書き込まれる。ラッチ部６１４には、各々がローレベルのマスクデータＴＭＷＭ［０］及びＴＭＷＭ［１］が書き込まれる。クロック信号ＣＫが負パルスになると、レジスタファイル装置１００の回路が動作する。書き込み無効部６００は、ハイレベルの書き込みイネーブル信号ＷＥ３＿Ａ及び各々がローレベルの書き込みイネーブル信号ＷＥ３＿Ｂ，ＷＥ３＿Ｃを出力する。これにより、バスファイトを防止することができる。
【００８３】
なお、ラッチ部５０１のスキャン出力端子ＳＯは、スキャン経路６１７を介して、保持部２０２のスキャン入力端子ＳＩに接続してもよい。テストモードでは、保持部２０２は、スキャン経路６１７を介して、ラッチ部５０１に接続される。
【００８４】
（第２の実施形態）
図１１は、第２の実施形態による書き込み無効部６００の構成例を示す図である。第１の実施形態では、３組みの書き込みイネーブル信号及び書き込みアドレスの例を説明した。第２の実施形態では、５組みの書き込みイネーブル信号及び書き込みアドレスの例を説明する。図１１の書き込み無効部６００は、図６の書き込み無効部６００の代わりに設けられる。以下、本実施形態が第１の実施形態と異なる点を説明する。
【００８５】
図６において、ラッチ部４０１は、５組みの書き込みイネーブル信号ＷＥ＿Ａ〜ＷＥ＿Ｅ及び書き込みアドレスＷＡ＿Ａ〜ＷＡ＿Ｅを出力する。ラッチ部５０１は、５組みの書き込みイネーブル信号ＷＥ１＿Ａ〜ＷＥ１＿Ｅ及び書き込みアドレスＷＡ＿Ａ〜ＷＡ＿Ｅを入力し、５組みの書き込みイネーブル信号ＷＥ２＿Ａ〜ＷＥ２＿Ｅ及び書き込みアドレスＷＡ２＿Ａ〜ＷＡ２＿Ｅを出力する。ラッチ部６１４は、３ビットのマスクデータＴＭＷＭ［０］〜ＴＭＷＭ［２］を出力する。デコーダ２０１は、５組みの書き込みイネーブル信号ＷＥ３＿Ａ〜ＷＥ３＿Ｅ及び書き込みアドレスＷＡ２＿Ａ〜ＷＡ２＿Ｅを入力し、書き込みイネーブル信号ＷＥＡ１〜ＷＥＡｍ，ＷＥＢ１〜ＷＥＢｍ，ＷＥＣ１〜ＷＥＣｍ，ＷＥＤ１〜ＷＥＤｍ，ＷＥＥ１〜ＷＥＥｍを出力する。
【００８６】
図１１において、書き込み無効部６００は、インバータ１１０１〜１１０６、ＡＮＤ回路１１０７〜１１１０、ＯＲ回路１１１１〜１１１５、及びＡＮＤ回路１１１６〜１１２０を有する。インバータ１１０１は、マスクデータＴＭＷＭ［１］の論理反転データを出力する。インバータ１１０２は、マスクデータＴＭＷＭ［０］の論理反転データを出力する。インバータ１１０３は、インバータ１１０１の出力データの論理反転データを出力する。インバータ１１０４は、インバータ１１０２の出力データの論理反転データを出力する。インバータ１１０５は、マスクデータＴＭＷＭ［２］の論理反転データを出力する。インバータ１１０６は、インバータ１１０５の出力データの論理反転データを出力する。
【００８７】
ＡＮＤ回路１１０７は、インバータ１１０１、１１０２及び１１０５の出力データの論理積データを出力する。ＡＮＤ回路１１０８は、インバータ１１０１、１１０４及び１１０５の出力データの論理積データを出力する。ＡＮＤ回路１１０９は、インバータ１１０２、１１０３及び１１０５の出力データの論理積データを出力する。ＡＮＤ回路１１１０は、インバータ１１０３、１１０４及び１１０５の出力データの論理積データを出力する。
【００８８】
ＯＲ回路１１１１は、ＡＮＤ回路１１０７の出力データ及びモード信号ＴＭの論理和データを出力する。ＯＲ回路１１１２は、ＡＮＤ回路１１０８の出力データ及びモード信号ＴＭの論理和データを出力する。ＯＲ回路１１１３は、ＡＮＤ回路１１０９の出力データ及びモード信号ＴＭの論理和データを出力する。ＯＲ回路１１１４は、ＡＮＤ回路１１１０の出力データ及びモード信号ＴＭの論理和データを出力する。ＯＲ回路１１１５は、インバータ１１０６の出力データ及びモード信号ＴＭの論理和データを出力する。
【００８９】
ＡＮＤ回路１１１６は、ＯＲ回路１１１１の出力データ及び書き込みイネーブル信号ＷＥ２＿Ａの論理積信号を、書き込みイネーブル信号ＷＥ３＿Ａとしてデコーダ２０１に出力する。ＡＮＤ回路１１１７は、ＯＲ回路１１１２の出力データ及び書き込みイネーブル信号ＷＥ２＿Ｂの論理積信号を、書き込みイネーブル信号ＷＥ３＿Ｂとしてデコーダ２０１に出力する。ＡＮＤ回路１１１８は、ＯＲ回路１１１３の出力データ及び書き込みイネーブル信号ＷＥ２＿Ｃの論理積信号を、書き込みイネーブル信号ＷＥ３＿Ｃとしてデコーダ２０１に出力する。ＡＮＤ回路１１１９は、ＯＲ回路１１１４の出力データ及び書き込みイネーブル信号ＷＥ２＿Ｄの論理積信号を、書き込みイネーブル信号ＷＥ３＿Ｄとしてデコーダ２０１に出力する。ＡＮＤ回路１１２０は、ＯＲ回路１１１５の出力データ及び書き込みイネーブル信号ＷＥ２＿Ｅの論理積信号を、書き込みイネーブル信号ＷＥ３＿Ｅとしてデコーダ２０１に出力する。
【００９０】
図１２は、図１１の書き込み無効部６００の入出力の真理値表を示す図である。値「１」はハイレベルを示し、値「０」はローレベルを示す。通常モードでは、モード信号ＴＭは、１である。モード信号ＴＭが１である場合、マスクデータＴＭＷＭ［０］〜ＴＭＷＭ［２］にかかわらず、書き込みイネーブル信号ＷＥ３＿Ａは、書き込みイネーブル信号ＷＥ２＿Ａと同じ信号になる。書き込みイネーブル信号ＷＥ３＿Ｂは、書き込みイネーブル信号ＷＥ２＿Ｂと同じ信号になる。書き込みイネーブル信号ＷＥ３＿Ｃは、書き込みイネーブル信号ＷＥ２＿Ｃと同じ信号になる。書き込みイネーブル信号ＷＥ３＿Ｄは、書き込みイネーブル信号ＷＥ２＿Ｄと同じ信号になる。書き込みイネーブル信号ＷＥ３＿Ｅは、書き込みイネーブル信号ＷＥ２＿Ｅと同じ信号になる。
【００９１】
テストモードでは、モード信号ＴＭは、０である。モード信号ＴＭが０であり、マスクデータＴＭＷＭ［２］が０であり、マスクデータＴＭＷＭ［１］が０であり、マスクデータＴＭＷＭ［０］が０である場合を説明する。その場合、書き込みイネーブル信号ＷＥ３＿Ａは、書き込みイネーブル信号ＷＥ２＿Ａと同じ信号になる。書き込みイネーブル信号ＷＥ３＿Ｂ〜ＷＥ３＿Ｅは、０になる。
【００９２】
次に、モード信号ＴＭが０であり、マスクデータＴＭＷＭ［２］が０であり、マスクデータＴＭＷＭ［１］が０であり、マスクデータＴＭＷＭ［０］が１である場合を説明する。その場合、書き込みイネーブル信号ＷＥ３＿Ｂは、書き込みイネーブル信号ＷＥ２＿Ｂと同じ信号になる。書き込みイネーブル信号ＷＥ３＿Ａ、ＷＥ３＿Ｃ〜ＷＥ３＿Ｅは、０になる。
【００９３】
次に、モード信号ＴＭが０であり、マスクデータＴＭＷＭ［２］が０であり、マスクデータＴＭＷＭ［１］が１であり、マスクデータＴＭＷＭ［０］が０である場合を説明する。その場合、書き込みイネーブル信号ＷＥ３＿Ｃは、書き込みイネーブル信号ＷＥ２＿Ｃと同じ信号になる。書き込みイネーブル信号ＷＥ３＿Ａ、ＷＥ３＿Ｂ、ＷＥ３＿Ｄ、ＷＥ３＿Ｅは、０になる。
【００９４】
次に、モード信号ＴＭが０であり、マスクデータＴＭＷＭ［２］が０であり、マスクデータＴＭＷＭ［１］が１であり、マスクデータＴＭＷＭ［０］が１である場合を説明する。その場合、書き込みイネーブル信号ＷＥ３＿Ｄは、書き込みイネーブル信号ＷＥ２＿Ｄと同じ信号になる。書き込みイネーブル信号ＷＥ３＿Ａ〜ＷＥ３＿Ｃ、ＷＥ３＿Ｅは、０になる。
【００９５】
次に、モード信号ＴＭが０であり、マスクデータＴＭＷＭ［２］が１である場合を説明する。その場合、マスクデータＴＭＷＭ［０］及びＴＭＷＭ［１］にかかわらず、書き込みイネーブル信号ＷＥ３＿Ｅは、書き込みイネーブル信号ＷＥ２＿Ｅと同じ信号になる。書き込みイネーブル信号ＷＥ３＿Ａ〜ＷＥ３＿Ｄは、０になる。
【００９６】
以上のように、書き込み無効部６００は、テストモード（ＴＭ＝０）では、マスクデータＴＭＷＭ［０］〜ＴＭＷＭ［２］に応じて、ラッチ部５０１に保持されている複数の書き込みイネーブル信号ＷＥ２＿Ａ〜ＷＥ２＿Ｅのうちの１つの書き込みイネーブル信号をそのまま出力し、その他の書き込みイネーブル信号を０（無効状態）にして出力する。また、書き込み無効部６００は、通常モード（ＴＭ＝１）では、ラッチ部５０１に保持されている複数の書き込みイネーブル信号ＷＥ２＿Ａ〜ＷＥ２＿Ｅをそのまま出力する。本実施形態によれば、第１の実施形態と同様に、通常モードのみならず、テストモードにおいても、バスファイトを防止することができる。
【００９７】
（第３の実施形態）
図１３は、第３の実施形態によるレジスタファイル装置１００の構成例を示す図である。第１の実施形態（図６）では、スキャン経路６１７は、保持部２０２に接続されている。保持部２０２は、図２に示すように、多数のラッチ部２２１−１〜２２ｍ−ｎを有する。ラッチ部２２１−１〜２２ｍ−ｎのすべては、スキャンテストのために、図７のトランスファゲート７０１，７０２及びインバータ７０３〜７０５を追加する必要がある。そのため、レジスタファイル装置１００の面積が大きくなってしまう課題がある。
【００９８】
本実施形態（図１３）では、スキャン経路６１７は、保持部２０２に接続されず、読み出しラッチ部２０４に接続される。そのため、保持部２０２内のラッチ部２２１−１〜２２ｍ−ｎのすべては、図７のトランスファゲート７０１，７０２及びインバータ７０３〜７０５を削除することができる。これにより、レジスタファイル装置１００の面積を小さくすることができる。以下、本実施形態が第１の実施形態と異なる点を説明する。
【００９９】
読み出しラッチ部２０４は、スキャンテストのために、図７のラッチ部と同様の構成を有する。ラッチ部６１４のスキャン出力端子ＳＯは、スキャン経路６１７を介して、読み出しラッチ部２０４のスキャン入力端子ＳＩに接続される。
【０１００】
テストモードについて説明する。テストモードでは、スキャンテストを行うため、トランスファゲート７０１及び７０２（図７）をオンすることにより、ラッチ部４０１、ラッチ部５０１、ラッチ部６１４及び読み出しラッチ部２０４が相互に接続される。まず、一致検出部４０２及びＡＮＤ回路４０３〜４０５のスキャンテストのため、ラッチ部４０１のスキャン入力端子ＳＩにテストデータを入力し、ラッチ部４０１にテストデータを書き込む。ラッチ部４０１は、保持したテストデータを、書き込みイネーブル信号ＷＥ＿Ａ〜ＷＥ＿Ｃ及び書き込みアドレスＷＡ＿Ａ〜ＷＡ＿Ｃとして出力する。
【０１０１】
次に、レジスタファイル装置１００は、トランスファゲート７０１及び７０２（図７）がオフし、そのテストデータを基に、１サイクルの動作を行う。ラッチ部５０１は、書き込みイネーブル信号ＷＥ１＿Ａ〜ＷＥ１＿Ｃ及び書き込みアドレスＷＡ＿Ａ〜ＷＡ＿Ｃを保持する。
【０１０２】
次に、ラッチ部４０１、ラッチ部５０１、ラッチ部６１４及び読み出しラッチ部２０４をシフト動作させることにより、ラッチ部５０１のデータを、読み出しラッチ部２０４のスキャン出力端子ＳＯから読み出す。そのラッチ部５０１のデータを期待値と比較することにより、一致検出部４０２及びＡＮＤ回路４０３〜４０５のテスト結果を判定することができる。
【０１０３】
次に、書き込み無効部６００、デコーダ２０１、保持部２０２、読み出し部２０３のスキャンテストのため、ラッチ部４０１のスキャン入力端子ＳＩにテストデータを入力し、ラッチ部４０１、ラッチ部５０１、ラッチ部６１４及び読み出しラッチ部２０４をシフト動作させることにより、ラッチ部５０１及びラッチ部６１４にテストデータを書き込む。ラッチ部５０１は、保持したテストデータを、書き込みイネーブル信号ＷＥ２＿Ａ〜ＷＥ２＿Ｃ及び書き込みアドレスＷＡ２＿Ａ〜ＷＡ２＿Ｃとして出力する。ラッチ部６１４は、保持したテストデータを、マスクデータＴＭＷＭ［０］及びＴＭＷＭ［１］として出力する。
【０１０４】
次に、レジスタファイル装置１００は、トランスファゲート７０１及び７０２（図７）がオフし、そのテストデータを基に、２サイクルの動作を行う。第１のサイクルでは、保持部２０２は、書き込みイネーブル信号ＷＥＡ１〜ＷＥＡｍ，ＷＥＢ１〜ＷＥＢｍ，ＷＥＣ１〜ＷＥＣｍに基づく書き込みデータを保持する。第２のサイクルでは、読み出しラッチ部２０４は、データＲＤ０〜ＲＤ５を保持する。
【０１０５】
次に、読み出しラッチ部２０４のデータを、読み出しラッチ部２０４のスキャン出力端子ＳＯから読み出す。その読み出しラッチ部２０４のデータを期待値と比較することにより、書き込み無効部６００、デコーダ２０１、保持部２０２、読み出し部２０３のテスト結果を判定することができる。
【０１０６】
なお、ラッチ部５０１のスキャン出力端子ＳＯは、スキャン経路６１７を介して、読み出しラッチ部２０４のスキャン入力端子ＳＩに接続してもよい。テストモードでは、読み出しラッチ部２０４は、スキャン経路６１７を介して、ラッチ部５０１に接続される。
【０１０７】
第１の実施形態では、３ポートのレジスタファイル装置１００を説明し、本実施形態では、５ポートのレジスタファイル装置１００を説明した。書き込みのポート数を変更することができる。レジスタファイル装置１００は、ポート数に応じて、書き込み無効部６００の回路を変更すれば、バスファイトを防止することができる。したがって、レジスタファイル装置１００の入力ポート数に関係なく、書き込み無効部６００は、バスファイトを防止することができる。
【０１０８】
なお、上記実施形態は、何れも本発明を実施するにあたっての具体化の例を示したものに過ぎず、これらによって本発明の技術的範囲が限定的に解釈されてはならないものである。すなわち、本発明はその技術思想、又はその主要な特徴から逸脱することなく、様々な形で実施することができる。
【符号の説明】
【０１０９】
１００  レジスタファイル装置
２０１  デコーダ
２０２  保持部
２０３  読み出し部
２０４  読み出しラッチ部
４０１  ラッチ部
４０２  一致検出部
４０３〜４０５  ＡＮＤ回路
５０１  ラッチ部
６００  書き込み無効部
６０１〜６０４  インバータ
６０５〜６０７  ＡＮＤ回路
６０８〜６１０  ＯＲ回路
６１１〜６１３  ＡＮＤ回路
６１４  ラッチ部
６１５〜６１７  スキャン経路
【図１】
2019050073.tif 000003
【図２】
2019050073.tif 000004
【図３】
2019050073.tif 000005
【図４】
2019050073.tif 000006
【図５】
2019050073.tif 000007
【図６】
2019050073.tif 000008
【図７】
2019050073.tif 000009
【図８】
2019050073.tif 000010
【図９】
2019050073.tif 000011
【図１０】
2019050073.tif 000012
【図１１】
2019050073.tif 000013
【図１２】
2019050073.tif 000014
【図１３】
2019050073.tif 000015