(57)【要約】【課題】トリミング動作を簡素化することが可能な半導体装置を提供することである。【解決手段】一実施の形態にかかる半導体装置は、電源回路１１およびトリミング回路１２を備える。電源回路１１は、トリミング動作時に使用する複数の基準電圧を生成する基準電圧生成回路２１と、半導体記憶装置で使用される複数の電源電圧を生成する電圧生成回路２２と、を備える。トリミング動作時に、外部基準電圧を用いて特定基準電圧を調整した後、調整後の特定基準電圧を用いて生成された複数の基準電圧と、当該複数の基準電圧の各々と対応する複数の電源電圧とを用いて、複数の電源電圧の調整量に対応するトリミングコードを各々決定する。【選択図】図１
2019135742.tif 000002
【特許請求の範囲】
【請求項１】
トリミング動作時に使用する複数の基準電圧を生成する基準電圧生成回路と、半導体記憶装置で使用される複数の電源電圧を生成する電圧生成回路と、を備える電源回路と、
前記トリミング動作時に前記複数の基準電圧と前記複数の電源電圧とを各々比較するトリミング回路と、を備える半導体記憶装置と、
前記半導体記憶装置における前記トリミング動作を制御する制御回路と、を備え、
前記トリミング回路は、半導体装置の外部から外部基準電圧を入力し、前記複数の基準電圧のうちの１つである特定基準電圧と前記外部基準電圧とを比較可能に構成されており、
前記基準電圧生成回路は、前記特定基準電圧を用いて前記複数の基準電圧を生成可能に構成されており、
前記制御回路は、前記トリミング動作時に、前記特定基準電圧と前記外部基準電圧とを用いて前記特定基準電圧を調整した後、前記調整後の特定基準電圧を用いて生成された複数の基準電圧と、当該複数の基準電圧の各々と対応する複数の電源電圧とを用いて、前記複数の電源電圧の調整量に対応するトリミングコードを各々決定する、
半導体装置。
【請求項２】
前記制御回路は、前記半導体装置の出荷前に、前記特定基準電圧と前記外部基準電圧とを用いて前記特定基準電圧の調整量を決定する、請求項１に記載の半導体装置。
【請求項３】
前記半導体装置の出荷後に前記トリミング動作を実施する際、
前記基準電圧生成回路は、前記出荷前に決定された調整量を用いて調整された特定基準電圧を用いて前記複数の基準電圧を生成し、
前記制御回路は、前記調整後の特定基準電圧を用いて生成された複数の基準電圧と、当該複数の基準電圧の各々と対応する複数の電源電圧とを用いて、前記複数の電源電圧の調整量に対応するトリミングコードを各々決定する、
請求項２に記載の半導体装置。
【請求項４】
前記電圧生成回路は、前記トリミングコードに応じて電源電圧を生成するように構成されており、
前記制御回路は、
前記トリミング動作時に前記トリミングコードを変化させて前記電源電圧を変化させ、
前記電源電圧が前記基準電圧と一致した際のトリミングコードを調整後のトリミングコードとして決定する、
請求項１に記載の半導体装置。
【請求項５】
前記制御回路は、前記トリミング動作時に前記トリミングコードをインクリメントまたはデクリメントさせて前記電源電圧を上昇または下降させる、請求項４に記載の半導体装置。
【請求項６】
前記トリミング動作時に決定された各々のトリミングコードを格納可能なレジスタを備え、
通常動作時に、前記電圧生成回路は、前記レジスタに格納されている前記各々のトリミングコードを用いて前記半導体記憶装置で使用される各々の電源電圧を生成する、
請求項１に記載の半導体装置。
【請求項７】
演算回路と、
前記トリミング動作を実施するためのファームウェアを格納可能なメモリ回路と、
前記半導体装置に対して自己診断テストを実施するＢＩＳＴ回路と、
前記半導体記憶装置を制御するフラッシュ制御回路と、を更に備え、
前記半導体記憶装置における前記トリミング動作を制御するための制御回路は、前記演算回路および前記フラッシュ制御回路の少なくとも一方を用いて構成されている、
請求項１に記載の半導体装置。
【請求項８】
前記ＢＩＳＴ回路を用いて前記半導体装置に対して自己診断テストを実施する際、前記演算回路は、前記半導体記憶装置から前記メモリ回路に前記ファームウェアを転送した後、前記ファームウェアを実行して前記半導体記憶装置に対して前記トリミング動作を実施する、請求項７に記載の半導体装置。
【請求項９】
前記ＢＩＳＴ回路を用いて前記半導体装置に対して自己診断テストを実施する際、前記ＢＩＳＴ回路は、前記半導体記憶装置から前記メモリ回路に前記ファームウェアを転送した後、前記ファームウェアを実行して、前記フラッシュ制御回路を用いて前記半導体記憶装置に対して前記トリミング動作を実施する、請求項７に記載の半導体装置。
【請求項１０】
前記演算回路が前記トリミング動作を制御している際に前記演算回路の負荷が大きくなった場合、前記トリミング動作の制御を前記演算回路から前記フラッシュ制御回路に切り替える、請求項７に記載の半導体装置。
【請求項１１】
前記半導体装置は、前記電圧生成回路の故障を検出する故障検出モードを備え、
前記制御回路は、前記故障検出モードにおいて、
前記トリミング動作時の基準電圧よりも低い第２の基準電圧を前記故障検出時の基準電圧として設定し、
前記電源電圧を変化させた際に、前記電源電圧が前記第２の基準電圧に到達しない場合に前記電圧生成回路が故障であると判断する、
請求項１に記載の半導体装置。
【請求項１２】
前記電圧生成回路は、前記トリミングコードに応じて電源電圧を生成するように構成されており、
前記制御回路は、前記故障検出モードにおいて、前記トリミングコードを最大値まで変化させた際に、前記電源電圧が前記第２の基準電圧に到達しない場合に前記電圧生成回路が故障であると判断する、
請求項１１に記載の半導体装置。
【請求項１３】
トリミング動作時に使用する基準電流を生成する基準電流源と、半導体記憶装置で使用される動作電流を生成する動作電流源と、を備える電源回路と、
前記トリミング動作時に前記動作電流のトリミングを行うトリミング回路と、を備える半導体記憶装置と、
前記半導体記憶装置における前記トリミング動作を制御する制御回路と、を備え、
前記トリミング回路は、半導体装置の外部から外部基準電流を入力可能に構成されており、
前記制御回路は、前記トリミング動作時に、前記半導体装置の外部から供給された前記外部基準電流を用いて前記基準電流を調整した後、前記調整後の基準電流を用いて、前記半導体記憶装置で使用される動作電流源の調整量に対応するトリミングコードを決定する、
半導体装置。
【請求項１４】
前記電源回路は、
前記基準電流源としてカレントソース型の第１の基準電流源とカレントシンク型の第２の基準電流源とを備え、
前記動作電流源としてカレントソース型の第１の動作電流源とカレントシンク型の第２の動作電流源とを備え、
前記制御回路は、前記トリミング動作時に、
前記第１の基準電流源と前記第２の動作電流源との電流差が所定の値よりも小さくなるように前記第２の動作電流源の電流値を調整してトリミングコードを決定し、
前記第２の基準電流源と前記第１の動作電流源との電流差が所定の値よりも小さくなるように前記第１の動作電流源の電流値を調整してトリミングコードを決定する、
請求項１３に記載の半導体装置。
【請求項１５】
前記トリミング回路は、一方の入力に判定電圧が供給され、他方の入力が第１のノードに接続されたコンパレータを備え、
前記第１及び第２の基準電流源と前記第１及び第２の動作電流源は、前記第１のノードに接続可能に構成されており、
前記制御回路は、前記トリミング動作時に、
前記第１の基準電流源と前記第２の動作電流源とが接続された前記第１のノードの電圧が前記判定電圧よりも小さくなるように前記第２の動作電流源の電流値を調整してトリミングコードを決定し、
前記第２の基準電流源と前記第１の動作電流源とが接続された前記第１のノードの電圧が前記判定電圧よりも小さくなるように前記第１の動作電流源の電流値を調整してトリミングコードを決定する、
請求項１４に記載の半導体装置。
【請求項１６】
演算回路と、
前記トリミング動作を実施するためのファームウェアを格納可能なメモリ回路と、
前記半導体装置に対して自己診断テストを実施するＢＩＳＴ回路と、
前記半導体記憶装置を制御するフラッシュ制御回路と、を更に備え、
前記半導体記憶装置における前記トリミング動作を制御するための制御回路は、前記演算回路および前記フラッシュ制御回路の少なくとも一方を用いて構成されている、
請求項１３に記載の半導体装置。
【請求項１７】
前記ＢＩＳＴ回路を用いて前記半導体装置に対して自己診断テストを実施する際、前記演算回路は、前記半導体記憶装置から前記メモリ回路に前記ファームウェアを転送した後、前記ファームウェアを実行して前記半導体記憶装置に対して前記トリミング動作を実施する、請求項１６に記載の半導体装置。
【請求項１８】
前記ＢＩＳＴ回路を用いて前記半導体装置に対して自己診断テストを実施する際、前記ＢＩＳＴ回路は、前記半導体記憶装置から前記メモリ回路に前記ファームウェアを転送した後、前記ファームウェアを実行して、前記フラッシュ制御回路を用いて前記半導体記憶装置に対して前記トリミング動作を実施する、請求項１６に記載の半導体装置。
【請求項１９】
前記演算回路が前記トリミング動作を制御している際に前記演算回路の負荷が大きくなった場合、前記トリミング動作の制御を前記演算回路から前記フラッシュ制御回路に切り替える、請求項１６に記載の半導体装置。
【請求項２０】
前記半導体装置は、前記動作電流源の故障を検出する故障検出モードを備え、
前記制御回路は、前記故障検出モードにおいて、
前記トリミング動作時の基準電流値よりも低い第２の基準電流値を前記故障検出時の基準電流値として設定し、
前記動作電流を変化させた際に、前記動作電流が前記第２の基準電流値に到達しない場合に前記動作電流源が故障であると判断する、
請求項１３に記載の半導体装置。
【請求項２１】
前記動作電流源は、前記トリミングコードに応じて動作電流を生成するように構成されており、
前記制御回路は、前記故障検出モードにおいて、前記トリミングコードを最大値まで変化させた際に、前記動作電流が前記第２の基準電流値に到達しない場合に前記動作電流源が故障であると判断する、
請求項２０に記載の半導体装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は半導体装置に関し、例えば電源電圧を調整する機能を備える半導体装置に関する。
【背景技術】
【０００２】
フラッシュメモリを備えた半導体装置では、フラッシュメモリを書き換えるための電源電圧を半導体装置の内部で生成する必要がある。しかしながら、このような電源電圧は、製造される半導体装置毎にばらつく場合があるため、半導体装置を製造した後、各々の半導体装置で生成される電源電圧を微調整する必要がある。このような技術は、トリミング技術と呼ばれている。
【０００３】
特許文献１には、外部から供給されたリファレンス電圧とチャージポンプ回路の出力電圧とを比較し、この比較結果をトリミングコード生成回路にフィードバックすることで、半導体装置の内部で生成される電源電圧の調整量に対応したトリミングコードを生成する技術が開示されている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００７−４２８３８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
上述のように、特許文献１に開示されている技術では、外部から供給されたリファレンス電圧とチャージポンプ回路の出力電圧とを比較することで、半導体装置の内部で生成される電源電圧の調整量であるトリミングコードを生成している。しかしながら、特許文献１に開示されている技術を用いた場合は、複数の電源電圧に対してトリミングを実施する際に、各々の電源電圧に対応した複数のリファレンス電圧を半導体装置の外部から供給する必要がある。このため、半導体装置におけるトリミングの制御が複雑になり、トリミング処理に時間がかかるという問題がある。
【０００６】
その他の課題と新規な特徴は、本明細書の記述および添付図面から明らかになるであろう。
【課題を解決するための手段】
【０００７】
一実施の形態にかかる半導体装置は、トリミング動作時に、特定基準電圧と外部基準電圧とを用いて特定基準電圧を調整した後、調整後の特定基準電圧を用いて生成された複数の基準電圧と、当該複数の基準電圧の各々と対応する複数の電源電圧とを用いて、複数の電源電圧の調整量に対応するトリミングコードを各々決定する。
【発明の効果】
【０００８】
前記一実施の形態によれば、トリミング動作を簡素化することが可能な半導体装置を提供することができる。
【図面の簡単な説明】
【０００９】
【図１】実施の形態１にかかる半導体装置が備える半導体記憶装置の構成例を示す図である。
【図２】実施の形態１にかかる半導体装置におけるトリミング動作を説明するためのフローチャートである。
【図３】図１に示す半導体記憶装置におけるトリミング動作を説明するための図である。
【図４】図１に示す半導体記憶装置におけるトリミング動作を説明するための図である。
【図５】図１に示す半導体記憶装置におけるトリミング動作を説明するための図である。
【図６】図１に示す半導体記憶装置におけるトリミング動作を説明するための図である。
【図７】実施の形態１にかかる半導体装置が備える半導体記憶装置の構成例を示す図である。
【図８】実施の形態１にかかる半導体装置におけるトリミング動作の詳細を説明するためのフローチャートである。
【図９】実施の形態１にかかる半導体装置におけるトリミング動作の詳細を説明するためのタイミングチャートである。
【図１０】実施の形態２にかかる半導体装置の構成例を示すブロック図である。
【図１１】実施の形態２にかかる半導体装置におけるトリミング動作を説明するためのフローチャートである。
【図１２】実施の形態２にかかる半導体装置におけるトリミング動作を説明するためのブロック図である。
【図１３】実施の形態２にかかる半導体装置におけるトリミング動作を説明するためのブロック図である。
【図１４】実施の形態３にかかる半導体装置における故障検出動作を説明するための図である。
【図１５】実施の形態４にかかる半導体装置が備える半導体記憶装置の構成例を示す図である。
【図１６】実施の形態４にかかる半導体装置におけるトリミング動作を説明するためのフローチャートである。
【図１７】図１５に示す半導体記憶装置におけるトリミング動作を説明するための図である。
【図１８】図１５に示す半導体記憶装置におけるトリミング動作を説明するための図である。
【図１９】図１５に示す半導体記憶装置におけるトリミング動作を説明するための図である。
【図２０】図１５に示す半導体記憶装置におけるトリミング動作を説明するための図である。
【図２１】実施の形態５にかかる半導体装置における故障検出動作を説明するための図である。
【発明を実施するための形態】
【００１０】
＜実施の形態１＞
以下、図面を参照して実施の形態１について説明する。
図１は、実施の形態１にかかる半導体装置が備える半導体記憶装置の構成例を示す図である。なお、図１では、半導体記憶装置の一部の構成のみを示している。図１に示すように、半導体記憶装置１０は、電源回路１１及びトリミング回路１２を備える。半導体記憶装置１０は、例えばフラッシュメモリなどの不揮発性の半導体記憶装置である。以下では、半導体記憶装置としてフラッシュメモリを用いた場合の構成例について説明するが、本実施の形態において半導体記憶装置がフラッシュメモリに限定されることはない。
【００１１】
電源回路１１は、基準電圧生成回路２１と電圧生成回路２２とを備える。
基準電圧生成回路２１は、トリミング動作時に使用する複数の基準電圧を生成する。具体的には、基準電圧生成回路２１は、特定の基準電圧（以下、特定基準電圧とも記載する）を用いて、複数の基準電圧を生成可能に構成されている。特定基準電圧は、複数の基準電圧の中で最も高い基準電圧である。基準電圧生成回路２１において、基準電圧Ｒｅｆ_ｕｏｕｔ１６は他の基準電圧の中で最も電圧の高い基準電圧であるので、この場合は基準電圧Ｒｅｆ_ｕｏｕｔ１６が特定基準電圧となる。
【００１２】
基準電圧生成回路２１は、特定基準電圧Ｒｅｆ_ｕｏｕｔ１６を分圧することで他の基準電圧Ｒｅｆ_Ｖｄｄ、基準電圧Ｒｅｆ_Ｖｄｄ２、基準電圧Ｒｅｆ_Ｖｄｄ３、及び基準電圧Ｒｅｆ_ｖｒｆをそれぞれ生成する。例えば、基準電圧生成回路２１は分圧抵抗を備えており、この分圧抵抗を用いて特定基準電圧Ｒｅｆ_ｕｏｕｔ１６を分圧することで、各々の基準電圧Ｒｅｆ_Ｖｄｄ、基準電圧Ｒｅｆ_Ｖｄｄ２、基準電圧Ｒｅｆ_Ｖｄｄ３、及び基準電圧Ｒｅｆ_ｖｒｆをそれぞれ生成することができる。
【００１３】
基準電圧生成回路２１で生成された各々の基準電圧Ｒｅｆ_ｕｏｕｔ１６、基準電圧Ｒｅｆ_Ｖｄｄ、基準電圧Ｒｅｆ_Ｖｄｄ２、基準電圧Ｒｅｆ_Ｖｄｄ３、及び基準電圧Ｒｅｆ_ｖｒｆは、スイッチＳＷ_１〜ＳＷ_５を介して、トリミング回路１２が備えるコンパレータＣＯＭＰの一方の入力に供給される。すなわち、スイッチＳＷ_１〜ＳＷ_５のうちのいずれか一つを導通状態とすることで、導通状態となっているスイッチに対応する基準電圧がコンパレータＣＯＭＰの一方の入力に供給される。例えば、スイッチＳＷ_１を導通状態とし、他のスイッチＳＷ_２〜ＳＷ_５を非導通状態とすることで、基準電圧Ｒｅｆ_ｕｏｕｔ１６がコンパレータＣＯＭＰの一方の入力に供給される。
【００１４】
電圧生成回路２２は、フラッシュメモリで使用される複数の電源電圧を生成する。電圧生成回路２２で生成された複数の電源電圧は、トリミング動作時、トリミング回路１２に供給される。具体的には、電圧生成回路２２は、電源電圧ｕｏｕｔ１６、電源電圧Ｖｄｄ、電源電圧Ｖｄｄ２、電源電圧Ｖｄｄ３、電源電圧ｖｒｆ、電源電圧Ｖｐ、及び電源電圧Ｖｎを生成する。ここで、電源電圧ｕｏｕｔ１６、電源電圧Ｖｄｄ、電源電圧Ｖｄｄ２、電源電圧Ｖｄｄ３、及び電源電圧ｖｒｆは、正の低電圧電源３１である。電源電圧Ｖｐは正の高電圧電源３２であり、電圧生成回路２２が備える正昇圧回路（チャージポンプ回路：不図示）を用いて生成される。電源電圧Ｖｎは負の電圧電源３３であり、電圧生成回路２２が備える負昇圧回路（チャージポンプ回路：不図示）を用いて生成される。
【００１５】
通常動作時は、電圧生成回路２２で生成された各々の電源電圧は、フラッシュメモリの内部電源として用いられる。ここで、フラッシュメモリでは、書き込みや消去動作の際に、通常の読み出し動作で用いられる電圧よりも高い電圧が使用される。このため、フラッシュメモリでは、複数種類の電源（正の低電圧電源、正の高電圧電源、及び負の電圧電源）が必要となる。
【００１６】
トリミング回路１２は、コンパレータＣＯＭＰを備える。コンパレータＣＯＭＰの一方の入力には、基準電圧生成回路２１で生成された基準電圧（Ｒｅｆ_ｕｏｕｔ１６等）が供給され、他方の入力には、電圧生成回路２２で生成された電源電圧（ｕｏｕｔ１６等）が供給される。
【００１７】
電圧生成回路２２で生成された電源電圧には、正の低電圧電源３１、正の高電圧電源３２、及び負の電圧電源３３がある。ここで、正の高電圧電源３２である電源電圧Ｖｐは電圧の絶対値が大きいので、抵抗分圧回路３４を用いて、コンパレータＣＯＭＰで比較可能な電圧に変換される。同様に、負の電圧電源３３である電源電圧Ｖｎは電圧の絶対値が大きいので、抵抗分圧回路３５を用いて、コンパレータＣＯＭＰで比較可能な電圧に変換される。また、トリミング回路１２は外部端子３８を備える。外部端子３８は、半導体装置の外部から外部基準電圧ＶＣＣＭＯＮが供給可能に構成されている。
【００１８】
電圧生成回路２２で生成された各々の電源電圧ｕｏｕｔ１６、電源電圧Ｖｄｄ、電源電圧Ｖｄｄ２、電源電圧Ｖｄｄ３、電源電圧ｖｒｆ、電源電圧Ｖｐ、電源電圧Ｖｎ、及び外部基準電圧ＶＣＣＭＯＮは、スイッチＳＷ_１１〜ＳＷ_１８を介して、コンパレータＣＯＭＰの他方の入力に供給される。すなわち、スイッチＳＷ_１１〜ＳＷ_１８のうちのいずれか一つを導通状態とすることで、導通状態となっているスイッチに対応する電源電圧がコンパレータＣＯＭＰの他方の入力に供給される。例えば、スイッチＳＷ_１１を導通状態とし、他のスイッチＳＷ_１２〜ＳＷ_１８を非導通状態とすることで、電源電圧ｕｏｕｔ１６がコンパレータＣＯＭＰの他方の入力に供給される。
【００１９】
トリミング動作時、コンパレータＣＯＭＰは、基準電圧生成回路２１で生成された基準電圧（Ｒｅｆ_ｕｏｕｔ１６等）と、電圧生成回路２２で生成された電源電圧（ｕｏｕｔ１６等）とを比較し、これらの電圧が一致する場合には、比較結果として「Ｆｌａｇ＝１（一致）」を出力する。一方、コンパレータＣＯＭＰは、基準電圧生成回路２１で生成された基準電圧（Ｒｅｆ_ｕｏｕｔ１６等）と、電圧生成回路２２で生成された電源電圧（ｕｏｕｔ１６等）と、が一致しない場合には、比較結果として「Ｆｌａｇ＝０（不一致）」を出力する。ここで、「基準電圧と電源電圧とが一致する場合」とは、基準電圧と電源電圧とが完全に一致する場合に限らず、基準電圧と電源電圧とがある程度近似する場合（つまり、基準電圧と電源電圧の電圧差が微小である場合）も含まれる。
【００２０】
本実施の形態では、トリミング動作時にトリミングコードをインクリメントして、電圧生成回路２２で生成される電源電圧を段階的に上昇させている。トリミングコードが小さい段階では電源電圧が低いため、コンパレータＣＯＭＰに供給される電源電圧が基準電圧よりも低い。この場合は、コンパレータＣＯＭＰは比較結果として「Ｆｌａｇ＝０（不一致）」を出力する。そして、トリミングコードが段階的に大きくなると電源電圧も徐々に増加して、電源電圧が基準電圧に近づき、その後、電源電圧が基準電圧よりも大きくなるタイミングがある。コンパレータＣＯＭＰは、このタイミング、つまり電源電圧が基準電圧よりも大きくなるタイミングで、比較結果として「Ｆｌａｇ＝１（一致）」を出力する。
【００２１】
例えば、フラッシュメモリ１０におけるトリミング動作は、フラッシュ制御回路（制御回路）４０（図７参照）を用いて制御される。
【００２２】
次に、トリミング動作について説明する。図２は、本実施の形態にかかる半導体装置におけるトリミング動作を説明するためのフローチャートである。本実施の形態では、図２に示すように、まず、基準電圧（特定基準電圧）Ｒｅｆ_ｕｏｕｔ１６と外部基準電圧ＶＣＣＭＯＮとを用いて基準電圧を調整（トリミング）する（ステップＳ１）。
【００２３】
具体的には、図３に示すように、基準電圧生成回路２１のスイッチＳＷ_１を導通状態にして、コンパレータＣＯＭＰの一方の入力に基準電圧Ｒｅｆ_ｕｏｕｔ１６を供給する。また、トリミング回路１２のスイッチＳＷ_１８を導通状態にして、コンパレータＣＯＭＰの他方の入力に外部基準電圧ＶＣＣＭＯＮを供給する。ここで、外部基準電圧ＶＣＣＭＯＮは、基準電圧Ｒｅｆ_ｕｏｕｔ１６を調整するための電圧であり、一定の電圧である。
【００２４】
また、基準電圧生成回路２１は、基準電圧をトリミングする際、基準電圧Ｒｅｆ_ｕｏｕｔ１６を変化させている。例えば、基準電圧生成回路２１には、フラッシュ制御回路４０（図７参照）からトリミングコードが供給されており、基準電圧生成回路２１は供給されたトリミングコードに応じた基準電圧Ｒｅｆ_ｕｏｕｔ１６を生成している。例えば、フラッシュ制御回路４０は、基準電圧生成回路２１に供給するトリミングコードを増加させることで（インクリメントすることで）、基準電圧生成回路２１で生成される基準電圧Ｒｅｆ_ｕｏｕｔ１６を低電圧から高電圧に変化させることができる。
【００２５】
コンパレータＣＯＭＰは、基準電圧Ｒｅｆ_ｕｏｕｔ１６と外部基準電圧ＶＣＣＭＯＮとを比較し、これらの電圧が一致した際に、比較結果として「Ｆｌａｇ＝１（一致）」を出力する。すなわち、コンパレータＣＯＭＰの比較結果が一致した際の基準電圧Ｒｅｆ_ｕｏｕｔ１６の値が、調整後の基準電圧Ｒｅｆ_ｕｏｕｔ１６の値となる。そして、このときの基準電圧Ｒｅｆ_ｕｏｕｔ１６の調整量に対応した値が、基準電圧Ｒｅｆ_ｕｏｕｔ１６を調整するためのトリミングコードと決定される。以降、このトリミングコードを用いて、基準電圧Ｒｅｆ_ｕｏｕｔ１６が調整される。
【００２６】
また、基準電圧生成回路２１は、調整後の基準電圧Ｒｅｆ_ｕｏｕｔ１６を分圧して他の基準電圧Ｒｅｆ_Ｖｄｄ、基準電圧Ｒｅｆ_Ｖｄｄ２、基準電圧Ｒｅｆ_Ｖｄｄ３、及び基準電圧Ｒｅｆ_ｖｒｆをそれぞれ生成する。
【００２７】
次に、正の低電圧電源３１（つまり、電源電圧ｕｏｕｔ１６、電源電圧Ｖｄｄ、電源電圧Ｖｄｄ２、電源電圧Ｖｄｄ３、及び電源電圧ｖｒｆ）のトリミングを実施する（図２のステップＳ２）。例えば、電源電圧ｕｏｕｔ１６のトリミングを実施する場合は、図４に示すように、基準電圧生成回路２１のスイッチＳＷ_１を導通状態にして、コンパレータＣＯＭＰの一方の入力に基準電圧Ｒｅｆ_ｕｏｕｔ１６を供給する。また、トリミング回路１２のスイッチＳＷ_１１を導通状態にして、コンパレータＣＯＭＰの他方の入力に電源電圧ｕｏｕｔ１６を供給する。ここで、基準電圧Ｒｅｆ_ｕｏｕｔ１６は、電源電圧ｕｏｕｔ１６を調整するための電圧であり、一定の電圧である。
【００２８】
また、電圧生成回路２２は、電源電圧ｕｏｕｔ１６を変化させている。例えば、電圧生成回路２２には、フラッシュ制御回路４０（図７参照）からトリミングコードが供給されており、電圧生成回路２２は供給されたトリミングコードに応じた電源電圧ｕｏｕｔ１６を生成している。例えば、フラッシュ制御回路４０は、電圧生成回路２２に供給するトリミングコードを増加させることで（インクリメントすることで）、電圧生成回路２２で生成される電源電圧ｕｏｕｔ１６を低電圧から高電圧に変化させることができる。
【００２９】
コンパレータＣＯＭＰは、基準電圧Ｒｅｆ_ｕｏｕｔ１６と電源電圧ｕｏｕｔ１６とを比較し、これらの電圧が一致した際に、比較結果として「Ｆｌａｇ＝１（一致）」を出力する。すなわち、コンパレータＣＯＭＰの比較結果が一致した際の電源電圧ｕｏｕｔ１６の値が、調整後の電源電圧ｕｏｕｔ１６の値となる。そして、このときの電源電圧ｕｏｕｔ１６の調整量に対応した値が、電源電圧ｕｏｕｔ１６を調整するためのトリミングコードと決定される。以降、通常動作時において、電圧生成回路２２はこのトリミングコードを用いて電源電圧ｕｏｕｔ１６を調整し、調整後の電源電圧ｕｏｕｔ１６をフラッシュメモリ１０に供給する。
【００３０】
他の正の低電圧電源３１である電源電圧Ｖｄｄ、電源電圧Ｖｄｄ２、電源電圧Ｖｄｄ３、及び電源電圧ｖｒｆについても同様にトリミングを実施することができる。なお、電源電圧Ｖｄｄのトリミングの際は、電源電圧Ｖｄｄと対応する基準電圧Ｒｅｆ_Ｖｄｄが使用される。同様に、電源電圧Ｖｄｄ２のトリミングの際は基準電圧Ｒｅｆ_Ｖｄｄ２が、電源電圧Ｖｄｄ３のトリミングの際は基準電圧Ｒｅｆ_Ｖｄｄ３が、電源電圧ｖｒｆのトリミングの際は基準電圧Ｒｅｆ_ｖｒｆが、それぞれ使用される。
【００３１】
次に、正の高電圧電源３２（つまり、電源電圧Ｖｐ）のトリミングを実施する（図２のステップＳ３）。正の高電圧電源３２である電源電圧Ｖｐは、電圧生成回路２２が備える正昇圧回路（不図示）を用いて生成されるため、電圧の絶対値が大きい。このため、電源電圧Ｖｐは、抵抗分圧回路３４を用いて、コンパレータＣＯＭＰで比較可能な電圧、つまり、基準電圧Ｒｅｆ_ｕｏｕｔ１６と比較可能な電圧に変換される。
【００３２】
電源電圧Ｖｐのトリミングを実施する場合は、図５に示すように、基準電圧生成回路２１のスイッチＳＷ_１を導通状態にして、コンパレータＣＯＭＰの一方の入力に基準電圧Ｒｅｆ_ｕｏｕｔ１６を供給する。また、トリミング回路１２のスイッチＳＷ_１６を導通状態にして、コンパレータＣＯＭＰの他方の入力に電源電圧Ｖｐを供給する。ここで、基準電圧Ｒｅｆ_ｕｏｕｔ１６は、電源電圧Ｖｐを調整するための電圧であり、一定の電圧である。
【００３３】
また、電圧生成回路２２は、電源電圧Ｖｐを変化させている。例えば、電圧生成回路２２には、フラッシュ制御回路４０（図７参照）からトリミングコードが供給されており、電圧生成回路２２は供給されたトリミングコードに応じた電源電圧Ｖｐを生成している。例えば、フラッシュ制御回路４０は、電圧生成回路２２に供給するトリミングコードを増加させることで（インクリメントすることで）、電圧生成回路２２で生成される電源電圧Ｖｐを低電圧から高電圧に変化させることができる。
【００３４】
コンパレータＣＯＭＰは、基準電圧Ｒｅｆ_ｕｏｕｔ１６と電源電圧Ｖｐとを比較し、これらの電圧が一致した際に、比較結果として「Ｆｌａｇ＝１（一致）」を出力する。すなわち、コンパレータＣＯＭＰの比較結果が一致した際の電源電圧Ｖｐの値が、調整後の電源電圧Ｖｐの値となる。そして、このときの電源電圧Ｖｐの調整量に対応した値が、電源電圧Ｖｐを調整するためのトリミングコードと決定される。以降、通常動作時において、電圧生成回路２２はこのトリミングコードを用いて電源電圧Ｖｐを調整し、調整後の電源電圧Ｖｐをフラッシュメモリ１０に供給する。
【００３５】
次に、負の電圧電源３３（つまり、電源電圧Ｖｎ）のトリミングを実施する（図２のステップＳ４）。負の電圧電源３３である電源電圧Ｖｎは、電圧生成回路２２が備える負昇圧回路（不図示）を用いて生成されるため、電圧の絶対値が大きい。このため、電源電圧Ｖｎは、抵抗分圧回路３５を用いて、コンパレータＣＯＭＰで比較可能な電圧、つまり、基準電圧Ｒｅｆ_ｕｏｕｔ１６と比較可能な電圧に変換される。
【００３６】
電源電圧Ｖｎのトリミングを実施する場合は、図６に示すように、基準電圧生成回路２１のスイッチＳＷ_１を導通状態にして、コンパレータＣＯＭＰの一方の入力に基準電圧Ｒｅｆ_ｕｏｕｔ１６を供給する。また、トリミング回路１２のスイッチＳＷ_１７を導通状態にして、コンパレータＣＯＭＰの他方の入力に電源電圧Ｖｎを供給する。ここで、基準電圧Ｒｅｆ_ｕｏｕｔ１６は、電源電圧Ｖｎを調整するための電圧であり、一定の電圧である。
【００３７】
また、電圧生成回路２２は、電源電圧Ｖｎを変化させている。例えば、電圧生成回路２２には、フラッシュ制御回路４０からトリミングコードが供給されており、電圧生成回路２２は供給されたトリミングコードに応じた電源電圧Ｖｎを生成している。例えば、フラッシュ制御回路４０は、電圧生成回路２２に供給するトリミングコードを増加させることで（インクリメントすることで）、電圧生成回路２２で生成される電源電圧Ｖｎを低電圧から高電圧に変化させることができる。
【００３８】
コンパレータＣＯＭＰは、基準電圧Ｒｅｆ_ｕｏｕｔ１６と電源電圧Ｖｎとを比較し、これらの電圧が一致した際に、比較結果として「Ｆｌａｇ＝１（一致）」を出力する。すなわち、コンパレータＣＯＭＰの比較結果が一致した際の電源電圧Ｖｎの値が、調整後の電源電圧Ｖｎの値となる。そして、このときの電源電圧Ｖｎの調整量に対応した値が、電源電圧Ｖｎを調整するためのトリミングコードと決定される。以降、通常動作時において、電圧生成回路２２はこのトリミングコードを用いて電源電圧Ｖｎを調整し、調整後の電源電圧Ｖｎをフラッシュメモリ１０に供給する。
【００３９】
図２では、ステップＳ１〜Ｓ４の順にトリミングを実施する場合について説明した。しかし、トリミングを実施する順番は、基準電圧のトリミング（ステップＳ１）を最初に実施する以外は、任意に決定することができる。つまり、ステップＳ２〜Ｓ４については順番を入れ替えてもよい。
【００４０】
上述のように、本実施の形態にかかる半導体装置では、トリミング動作時に、まず、基準電圧Ｒｅｆ_ｕｏｕｔ１６と外部基準電圧ＶＣＣＭＯＮとを用いて基準電圧Ｒｅｆ_ｕｏｕｔ１６を調整している。そして、調整後の基準電圧Ｒｅｆ_ｕｏｕｔ１６を用いて、トリミング動作時に使用する複数の基準電圧を生成し、これら複数の基準電圧と、当該複数の基準電圧の各々と対応する複数の電源電圧とを用いて、複数の電源電圧の調整量に対応するトリミングコードを各々決定している。
【００４１】
したがって、本実施の形態にかかる半導体装置では、複数の電源電圧に対してトリミングを実施する際、各々の電源電圧に対応した複数のリファレンス電圧を半導体装置の外部から供給する必要がないので、トリミング動作を簡素化することができる。つまり、本実施の形態にかかる半導体装置では、外部基準電圧ＶＣＣＭＯＮを用いて基準電圧Ｒｅｆ_ｕｏｕｔ１６を調整した後、基準電圧Ｒｅｆ_ｕｏｕｔ１６を用いて他の基準電圧を生成している。よって、半導体装置の外部から外部基準電圧を取得する回数を１回にすることができるので、トリミングの制御を簡素化することができ、ひいてはトリミングに要する時間を短くすることができる。
【００４２】
本実施の形態にかかる半導体装置では、半導体装置の出荷前に、基準電圧Ｒｅｆ_ｕｏｕｔ１６と外部基準電圧ＶＣＣＭＯＮとを用いて基準電圧Ｒｅｆ_ｕｏｕｔ１６の調整量に対応したトリミングコードを決定してもよい。
【００４３】
このように、半導体装置の出荷前に、基準電圧Ｒｅｆ_ｕｏｕｔ１６の調整量に対応したトリミングコードを決定することで、半導体装置の出荷後においてトリミングを実施する際に、外部基準電圧を入力する必要がなくなる。
【００４４】
すなわち、半導体装置の出荷後にトリミングを実施する際、基準電圧生成回路２１は、出荷前に決定された調整量に対応するトリミングコードを用いて基準電圧Ｒｅｆ_ｕｏｕｔ１６を調整し、この調整された基準電圧Ｒｅｆ_ｕｏｕｔ１６を用いて、複数の基準電圧を生成することができる。つまり、基準電圧生成回路２１は、出荷前に決定された調整量を用いて調整された基準電圧Ｒｅｆ_ｕｏｕｔ１６を分圧することで、他の基準電圧Ｒｅｆ_Ｖｄｄ、基準電圧Ｒｅｆ_Ｖｄｄ２、基準電圧Ｒｅｆ_Ｖｄｄ３、及び基準電圧Ｒｅｆ_ｖｒｆをそれぞれ生成することができる。
【００４５】
よって、半導体装置の出荷後において、上述のように生成された複数の基準電圧と、当該複数の基準電圧の各々と対応する複数の電源電圧とを用いて、複数の電源電圧の調整量に対応するトリミングコードを各々決定することができる。
【００４６】
次に、本実施の形態にかかる半導体装置の構成、及びトリミング動作について詳細に説明する。図７に示すように、本実施の形態にかかる半導体装置１は、フラッシュメモリ１０とフラッシュ制御回路４０とを備える。フラッシュメモリ１０は、電源回路１１、トリミング回路１２、ロジック回路１３、及びレジスタ１４を備える。フラッシュ制御回路４０は、フラッシュメモリ１０に接続されている。なお、電源回路１１およびトリミング回路１２については、図１に示した電源回路１１およびトリミング回路１２と同様であるので重複した説明は省略する。
【００４７】
レジスタ１４には、電源回路１１において生成される各々の電源電圧（ｕｏｕｔ１６等）を調整するためのトリミングコードが格納されている。通常動作時、ロジック回路１３は、レジスタ１４から供給されたトリミングコードをデコードし、デコード後のトリミングコードを電源回路１１に供給する。電源回路１１は、ロジック回路１３から供給されたトリミングコードを用いて調整された各々の電源電圧（ｕｏｕｔ１６等）を生成する。これらの電源電圧（ｕｏｕｔ１６等）は、フラッシュメモリ１０の内部電源として使用される。
【００４８】
フラッシュ制御回路４０は、フラッシュメモリ１０を制御する。例えば、フラッシュ制御回路４０は、通常動作時、フラッシュメモリ１０における書き込み動作、読み出し動作、及び消去動作を制御する。また、フラッシュ制御回路４０は、フラッシュメモリ１０におけるトリミング動作を制御する。例えば、フラッシュ制御回路４０は、トリミング動作時、トリミング用のトリミングコードを生成し、生成したトリミングコードをロジック回路１３に供給する。
【００４９】
ロジック回路１３は、フラッシュ制御回路４０から供給されたトリミングコードをデコードし、デコード後のトリミングコードを電源回路１１に供給する。電源回路１１は、ロジック回路１３から供給されたデコード後のトリミングコードに応じた電源電圧を生成し、生成した電源電圧をトリミング回路１２のコンパレータＣＯＭＰに供給する。
【００５０】
フラッシュ制御回路４０は、カウンタ４１およびタイマ４２を備える。フラッシュ制御回路４０から供給されるトリミングコードは、カウンタ４１およびタイマ４２を用いて生成される。なお、トリミングコードを生成する動作については後述する。
【００５１】
次に、トリミング動作の詳細について、図８に示すフローチャートを用いて説明する。
フラッシュ制御回路４０に、トリミング動作を示すモード信号（Ｍｏｄｅ）が供給されると、フラッシュ制御回路４０は、フラッシュメモリ１０のトリミング動作を開始する。まず、フラッシュ制御回路４０は、トリミングコードＴＣを下限値に設定し、設定したトリミングコードをロジック回路１３に供給する（ステップＳ１１）。
【００５２】
ロジック回路１３は、フラッシュ制御回路４０から供給されたトリミングコードをデコードし、デコード後のトリミングコードを電源回路１１に供給する。電源回路１１は、ロジック回路１３から供給されたデコード後のトリミングコードに応じた電源電圧を生成し、生成した電源電圧をトリミング回路１２のコンパレータＣＯＭＰの一方の入力に供給する。コンパレータＣＯＭＰの他方の入力には電源回路１１から基準電圧が供給されている。よって、コンパレータＣＯＭＰは、基準電圧と電源電圧とを比較し（ステップＳ１２）、基準電圧と電源電圧との比較結果（Ｆｌａｇ）をロジック回路１３に出力する。
【００５３】
コンパレータＣＯＭＰは、基準電圧と電源電圧とが一致しない場合、比較結果として「Ｆｌａｇ＝０」をロジック回路１３に出力する（ステップＳ１３：Ｎｏ）。その後、ロジック回路１３は、比較結果「Ｆｌａｇ＝０」をフラッシュ制御回路４０に供給する。フラッシュ制御回路４０は、「Ｆｌａｇ＝０」を受信すると、現在のトリミングコードＴＣが上限値であるか否かを判断する（ステップＳ１４）。
【００５４】
そして、現在のトリミングコードＴＣが上限値でない場合（ステップＳ１４：Ｎｏ）、フラッシュ制御回路４０は、トリミングコードＴＣをインクリメントする（ステップＳ１５）。インクリメント後のトリミングコードは、再び、ロジック回路１３に供給される。ロジック回路１３は、フラッシュ制御回路４０から供給されたインクリメント後のトリミングコードをデコードし、デコード後のトリミングコードを電源回路１１に供給する。電源回路１１は、ロジック回路１３から供給されたデコード後のトリミングコードに応じた電源電圧を生成し、生成した電源電圧をトリミング回路１２のコンパレータＣＯＭＰの入力に供給する。コンパレータＣＯＭＰは、再度、基準電圧と電源電圧とを比較し（ステップＳ１２）、基準電圧と電源電圧との比較結果（Ｆｌａｇ）をロジック回路１３に出力する。
【００５５】
コンパレータＣＯＭＰは、基準電圧と電源電圧とが一致しない場合、比較結果として「Ｆｌａｇ＝０」をロジック回路１３に出力する（ステップＳ１３：Ｎｏ）。その後、ロジック回路１３は、比較結果「Ｆｌａｇ＝０」をフラッシュ制御回路４０に供給する。フラッシュ制御回路４０は、「Ｆｌａｇ＝０」を受信すると、現在のトリミングコードＴＣが上限値であるか否かを判断する（ステップＳ１４）。
【００５６】
そして、現在のトリミングコードＴＣが上限値でない場合（ステップＳ１４：Ｎｏ）、フラッシュ制御回路４０は、トリミングコードＴＣをインクリメントする（ステップＳ１５）。インクリメント後のトリミングコードＴＣは、再び、ロジック回路１３に供給される。以降、コンパレータＣＯＭＰにおいて、基準電圧と電源電圧とが一致すると判定されるまで（つまり、「Ｆｌａｇ＝１」となるまで）、ステップＳ１２〜１５の動作を繰り返す。
【００５７】
なお、ステップＳ１４において、現在のトリミングコードＴＣが上限値であると判定された場合は（ステップＳ１４：Ｙｅｓ）、エラーを通知する（ステップＳ１６）。すなわち、トリミングコードが上限値であるにもかかわらず、コンパレータＣＯＭＰにおいて基準電圧と電源電圧とが一致すると判定されない場合は、電源回路１１に異常があることが想定される。例えば、電圧生成回路２２（図１参照）が備えるチャージポンプ回路に異常がある場合は、トリミングコードＴＣを上限値に設定しても、十分な電圧が得られない場合がある。このような場合、フラッシュ制御回路４０はエラー信号を出力する。
【００５８】
ステップＳ１２において、コンパレータＣＯＭＰが基準電圧と電源電圧とが一致すると判定した場合、コンパレータＣＯＭＰは比較結果として「Ｆｌａｇ＝１（一致）」をロジック回路１３に出力する（ステップＳ１３：Ｙｅｓ）。このとき、ロジック回路１３は、比較結果「Ｆｌａｇ＝１」をフラッシュ制御回路４０に供給する。フラッシュ制御回路４０は、「Ｆｌａｇ＝１」を受信すると、このときのトリミングコードを、調整後のトリミングコードと決定する。フラッシュ制御回路４０は、このとき決定されたトリミングコードを、フラッシュ制御回路４０からＳＲＡＭ（図１０のＳＲＡＭ（５２）参照）に転送して、ＳＲＡＭに一時的に退避する（ステップＳ１７）。
【００５９】
その後、全ての電源電圧（ｕｏｕｔ１６等）についてトリミングを実施したか否かが判定される（ステップＳ１８）。全ての電源電圧（ｕｏｕｔ１６等）についてトリミングが実施されていない場合、つまり、トリミングを実施していない電源電圧が残っている場合は（ステップＳ１８：Ｎｏ）、再度、ステップＳ１１〜Ｓ１７の動作を繰り返す。一方、全ての電源電圧（ｕｏｕｔ１６等）についてトリミングを実施した場合は（ステップＳ１８：Ｙｅｓ）、ＳＲＡＭに退避していたトリミングコードをフラッシュメモリ１０のレジスタ１４に書き込む（ステップＳ１９）。
【００６０】
上述のトリミング動作を実施することで、フラッシュメモリ１０に対してトリミングを実施することができる。
【００６１】
次に、トリミング動作の詳細について、図７のブロック図、及び図９に示すタイミングチャートを用いて説明する。図９に示すタイミングチャートにおいて、モード信号“Ｍｏｄｅ”はトリミングの対象となる電源電圧を示しており、図９に示すタイミングチャートでは、２種類の電源電圧に対するトリミング（Ｍｏｄｅ １、Ｍｏｄｅ ２）を示している。
カウンタ信号“Ｃｏｕｎｔｅｒ”は、各々のモード内においてトリミングコードをインクリメントしたことを示している。また、タイマ開始信号“Ｔｉｍｅｒ ｓｔａｒｔ”はタイマフラグ信号“Ｔｉｍｅｒ Ｆｌａｇ”をアサートするための信号であり、タイマ終了信号“Ｔｉｍｅｒ ｅｎｄ”はタイマ“Ｔｉｍｅｒ”停止時にアサートされる信号である。また、タイマフラグ信号“Ｔｉｍｅｒ Ｆｌａｇ”はトリミングの有効期間を示す信号、フラグリセット信号“Ｆｌａｇ Ｒｅｓｅｔ”は、フラグ信号“Ｆｌａｇ”、モード信号“Ｍｏｄｅ”、及びトリミングコード“ＴＣ”をリセットするための信号である。エラー信号“Ｅｒｒ”は、トリミング動作が正常に終了しなかった場合の通知信号である。タイマ“Ｔｉｍｅｒ”の“ＡＴＣ”はタイマ動作中を示し、“ＳＴＰ”はタイマ“Ｔｉｍｅｒ”停止を示している。
【００６２】
まず、Ｍｏｄｅ １のトリミング動作について説明する。なお、Ｍｏｄｅ １のトリミング動作はトリミングが成功した場合を示している。
図９に示すように、タイミングｔ１においてフラッシュ制御回路４０にモード信号“Ｍｏｄｅ １”が供給されると、カウンタ４１が動作を開始し、カウンタ信号“Ｃｏｕｎｔｅｒ”が“Ｃ００００”となる。カウンタ４１が動作を開始すると、タイマ４２によってタイマ開始信号“Ｔｉｍｅｒ ｓｔａｒｔ”がアサートされる。これにより、タイマ４２“Ｔｉｍｅｒ”が動作を開始する。また、タイマフラグ信号“Ｔｉｍｅｒ Ｆｌａｇ”がハイレベルになる。タイマフラグ信号“Ｔｉｍｅｒ Ｆｌａｇ”がハイレベルになると、フラッシュ制御回路４０はトリミングコードＴＣ（“０ｘ００”）をフラッシュメモリ１０に出力する。
【００６３】
フラッシュメモリ１０の電源回路１１は、トリミングコード（“０ｘ００”）に応じた電源電圧を生成し、生成した電源電圧をトリミング回路１２のコンパレータＣＯＭＰの一方の入力に供給する。コンパレータＣＯＭＰの他方の入力には電源回路１１から基準電圧が供給されている。よって、コンパレータＣＯＭＰは、基準電圧と電源電圧とを比較し、基準電圧と電源電圧との比較結果、つまりフラグ信号“Ｆｌａｇ”を出力する。すなわち、タイマフラグ信号“Ｔｉｍｅｒ Ｆｌａｇ”がハイレベルである期間、コンパレータＣＯＭＰからフラグ信号“Ｆｌａｇ＝１”が返ってくることを期待する。
【００６４】
その後、タイミングｔ２において、タイマ４２によってタイマ終了信号“Ｔｉｍｅｒ ｅｎｄ”がアサートされると、タイマフラグ信号“Ｔｉｍｅｒ Ｆｌａｇ”がハイレベルからロウレベルに遷移する。タイマフラグ信号“Ｔｉｍｅｒ Ｆｌａｇ”がロウレベルに遷移するタイミングで、カウンタ信号“Ｃｏｕｎｔｅｒ”とフラグ信号“Ｆｌａｇ”とがチェックされる。そして、カウンタ信号“Ｃｏｕｎｔｅｒ”が上限ではなく、またフラグ信号“Ｆｌａｇ”がロウレベルである場合、タイミングｔ３において、カウンタ信号“Ｃｏｕｎｔｅｒ”をカウントアップする。この場合は、カウンタ信号“Ｃｏｕｎｔｅｒ”が”Ｃ０００１”にカウントアップされる。
【００６５】
これにより、再び、タイマ４２によってタイマ開始信号“Ｔｉｍｅｒ ｓｔａｒｔ”がアサートされ、タイマ４２“Ｔｉｍｅｒ”が動作を開始する。また、タイマフラグ信号“Ｔｉｍｅｒ Ｆｌａｇ”がハイレベルになる。タイマフラグ信号“Ｔｉｍｅｒ Ｆｌａｇ”がハイレベルになると、フラッシュ制御回路４０はトリミングコードをインクリメントし、インクリメント後のトリミングコード（“０ｘ０１”）をフラッシュメモリ１０に出力する。
【００６６】
フラッシュメモリ１０の電源回路１１は、トリミングコード（“０ｘ０１”）に応じた電源電圧を生成し、生成した電源電圧をトリミング回路１２のコンパレータＣＯＭＰの一方の入力に供給する。コンパレータＣＯＭＰの他方の入力には電源回路１１から基準電圧が供給されている。よって、コンパレータＣＯＭＰは、基準電圧と電源電圧とを比較し、基準電圧と電源電圧との比較結果、つまりフラグ信号“Ｆｌａｇ”を出力する。
【００６７】
その後、タイミングｔ４において、タイマ４２によってタイマ終了信号“Ｔｉｍｅｒ ｅｎｄ”がアサートされると、タイマフラグ信号“Ｔｉｍｅｒ Ｆｌａｇ”がハイレベルからロウレベルに遷移する。タイマフラグ信号“Ｔｉｍｅｒ Ｆｌａｇ”がロウレベルに遷移するタイミングで、カウンタ信号“Ｃｏｕｎｔｅｒ”とフラグ信号“Ｆｌａｇ”とがチェックされる。そして、カウンタ信号“Ｃｏｕｎｔｅｒ”が上限ではなく、またフラグ信号“Ｆｌａｇ”がロウレベルである場合、カウンタ信号“Ｃｏｕｎｔｅｒ”をカウントアップする。以降、同様の動作を繰り返す。
【００６８】
そして、タイミングｔ５において、カウンタ信号“Ｃｏｕｎｔｅｒ”が“Ｃ０００３”になると、再び、タイマ４２によってタイマ開始信号“Ｔｉｍｅｒ ｓｔａｒｔ”がアサートされ、タイマ４２“Ｔｉｍｅｒ”が動作を開始する。また、タイマフラグ信号“Ｔｉｍｅｒ Ｆｌａｇ”がハイレベルになる。タイマフラグ信号“Ｔｉｍｅｒ Ｆｌａｇ”がハイレベルになると、フラッシュ制御回路４０はトリミングコードをインクリメントし、インクリメント後のトリミングコード（“０ｘ０３”）をフラッシュメモリ１０に出力する。
【００６９】
フラッシュメモリ１０の電源回路１１は、デクリメント後のトリミングコード（“０ｘ０３”）に応じた電源電圧を生成し、生成した電源電圧をトリミング回路１２のコンパレータＣＯＭＰの一方の入力に供給する。コンパレータＣＯＭＰの他方の入力には電源回路１１から基準電圧が供給されている。よって、コンパレータＣＯＭＰは、基準電圧と電源電圧とを比較し、基準電圧と電源電圧との比較結果、つまりフラグ信号“Ｆｌａｇ”を出力する。今回は、基準電圧と電源電圧とが一致したので、タイミングｔ６において、フラグ信号“Ｆｌａｇ”がハイレベルになる。
【００７０】
フラグ信号“Ｆｌａｇ”がハイレベルになると、タイマ４２が動作を停止し、タイマ終了信号“Ｔｉｍｅｒ ｅｎｄ”がアサートされる。これにより、タイマフラグ信号“Ｔｉｍｅｒ Ｆｌａｇ”がハイレベルからロウレベルに遷移する（タイミングｔ７）。タイマフラグ信号“Ｔｉｍｅｒ Ｆｌａｇ”がロウレベルに遷移するタイミングで、カウンタ信号“Ｃｏｕｎｔｅｒ”とフラグ信号“Ｆｌａｇ”とがチェックされる。今回は、カウンタ信号“Ｃｏｕｎｔｅｒ”が上限ではなく、フラグ信号“Ｆｌａｇ”がハイレベルであるので、フラグリセット信号“Ｆｌａｇ Ｒｅｓｅｔ”が発行される。これにより、フラグ信号“Ｆｌａｇ”、モード信号“Ｍｏｄｅ”、及びトリミングコード“ＴＣ”がリセットされる。また、フラッシュ制御回路４０は、このときのトリミングコード（“０ｘ０３”）を調整用のトリミングコードと決定し、ＳＲＡＭに一時的に退避させる。
【００７１】
次に、Ｍｏｄｅ ２のトリミング動作について説明する。なお、Ｍｏｄｅ ２のトリミング動作はトリミングが失敗した場合を示している。
図９に示すように、タイミングｔ８においてフラッシュ制御回路４０にモード信号“Ｍｏｄｅ ２”が供給されると、カウンタ４１が動作を開始し、カウンタ信号“Ｃｏｕｎｔｅｒ”が“Ｃ０１００”となる。カウンタ４１が動作を開始すると、タイマ４２によってタイマ開始信号“Ｔｉｍｅｒ ｓｔａｒｔ”がアサートされる。これにより、タイマ４２“Ｔｉｍｅｒ”が動作を開始する。また、タイマフラグ信号“Ｔｉｍｅｒ Ｆｌａｇ”がハイレベルになる。タイマフラグ信号“Ｔｉｍｅｒ Ｆｌａｇ”がハイレベルになると、フラッシュ制御回路４０はトリミングコードＴＣ（“０ｘ００”）をフラッシュメモリ１０に出力する。以降の動作は、Ｍｏｄｅ １の場合と同様であるので、重複した説明は省略する。
【００７２】
モード信号が“Ｍｏｄｅ ２”の場合は、タイミングｔ９において、タイマフラグ信号“Ｔｉｍｅｒ Ｆｌａｇ”がハイレベルからロウレベルに遷移するタイミングで、カウンタ信号“Ｃｏｕｎｔｅｒ”とフラグ信号“Ｆｌａｇ”とがチェックされる。この場合は、カウンタ信号“Ｃｏｕｎｔｅｒ”が上限値に達しており、またフラグ信号“Ｆｌａｇ”がロウレベルであるので、エラー信号“Ｅｒｒ”がハイレベルになる。これにより、トリミング動作が正常に終了しなかったことが通知される。
【００７３】
すなわち、カウンタ信号“Ｃｏｕｎｔｅｒ”が上限値に達している場合は、トリミングコードも上限値に達している。トリミングコードが上限値であるにもかかわらず、コンパレータＣＯＭＰにおいて基準電圧と電源電圧とが一致すると判定されない場合は、電源回路１１に異常があることが想定される。このような場合、フラッシュ制御回路４０はエラー信号を出力する。
【００７４】
図７に示す構成例では、フラッシュ制御回路４０は、カウンタ４１およびタイマ４２を用いてトリミングコードを自動的に作成している。よって、半導体装置の出荷後においても、各々の電源電圧のトリミングを自動で行うことができる。
【００７５】
なお、上述のトリミング動作では、トリミングコードの下限値から上限値までインクリメントしていく場合について説明したが、本実施の形態に半導体装置では、これに限定されることはない。例えば、トリミングコードの上限値から下限値まで変化させてもよい。つまり、トリミングコードをデクリメントさせてもよい。また、電源電圧の調整量にある程度の予測ができるのであれば、その調整量に対応するトリミングコードの近傍からトリミングを始めてもよい。例えば、前回のトリミング時に決定されたトリミングコードがある場合は、前回決定されたトリミングコードの近傍から、トリミングを開始するようにしてよい。
【００７６】
＜実施の形態２＞
次に、実施の形態２について説明する。実施の形態２では、実施の形態１で説明した半導体装置の実装例について説明する。なお、本実施の形態にかかる半導体装置は、具体的な実装例以外は実施の形態１で説明した半導体装置と同様であるので、重複した説明は適宜省略する。
【００７７】
図１０は、本実施の形態にかかる半導体装置の構成例を示すブロック図である。図１０に示すように、本実施の形態かかる半導体装置２は、演算回路５１（ＣＰＵ：Central Processing Unit）、メモリ回路５２（ＳＲＡＭ：Static Random Access Memory）、ＲＯＭインタフェース５３、ＢＩＳＴ（Built-In Self-Test）回路５４、ＩＦ制御回路５５、レジスタ５６、フラッシュメモリ１０、及びフラッシュ制御回路４０を備える。フラッシュメモリ１０及びフラッシュ制御回路４０については、実施の形態１で説明した構成及び動作と同様であるので重複した説明は省略する。
【００７８】
ＣＰＵ（５１）は、半導体装置２における各種の演算処理を実施する。ＳＲＡＭ（５２）は、所定のプログラムを格納可能に構成されており、本実施の形態では、トリミング動作を実施するためのファームウェアを格納することができる。また、ＳＲＡＭ（５２）は、トリミング動作時に決定されたトリミングコードを一時的に格納可能に構成されている。ＲＯＭインタフェース５３は、ＳＲＡＭ（５２）とＢＩＳＴ回路５４との間に設けられたインタフェースである。ＢＩＳＴ回路５４は、半導体装置２における自己診断テストを実施するための回路である。レジスタ５６は、フラッシュメモリ１０から転送されたデータを一時的に格納する。ＩＦ制御回路５５は、レジスタ５６に格納されているデータを用いてインタフェース制御を実施する回路である。
【００７９】
図１０に示す半導体装置２において、フラッシュメモリ１０、フラッシュ制御回路４０、ＲＯＭインタフェース５３、及びＢＩＳＴ回路５４を含むシステムは、第１のサブシステム６１を構成している。また、第１のサブシステム６１、ＩＦ制御回路５５、及びレジスタ５６を含むシステムは、第２のサブシステム６２を構成している。ここで、第２のサブシステム６２は、第１のサブシステム６１にアプリケーション機能用モジュールを追加したシステムである。例えば、アプリケーション機能用モジュールには、ユーザインタフェースモジュール、セキュリティモジュール、セーフティモジュール、リセット転送用モジュール等がある。
【００８０】
本実施の形態にかかる半導体装置２では、半導体装置２の出荷前に基準電圧Ｒｅｆ_ｕｏｕｔ１６（図１参照）のトリミングを実施している。すなわち、半導体装置２の出荷前に、外部基準電圧ＶＣＣＭＯＮを用いて基準電圧Ｒｅｆ_ｕｏｕｔ１６のトリミングコードを決定している。基準電圧Ｒｅｆ_ｕｏｕｔ１６を調整するためのトリミングコードは、フラッシュメモリ１０のメモリエリア１６に格納されており、トリミングを実施する際にフラッシュ制御回路４０がメモリエリア１６から読み出してレジスタ１４に格納する。
【００８１】
そして、半導体装置２の出荷後にトリミングを実施する際、出荷前に決定されたトリミングコードを用いて基準電圧Ｒｅｆ_ｕｏｕｔ１６を調整し、この調整された基準電圧Ｒｅｆ_ｕｏｕｔ１６を用いて、複数の基準電圧を生成している。よって、本実施の形態にかかる半導体装置２では、半導体装置２の出荷後において、複数の基準電圧を用いて、複数の電源電圧のトリミングを実施することができる。
【００８２】
また、本実施の形態にかかる半導体装置２では、ＢＩＳＴ回路５４を用いて半導体装置２の自己診断テストを実施する際に、複数の電源電圧のトリミングを実施することができる。トリミングを実施する際のトリミングコードは、実施の形態１で説明したように、自動的に生成することができるので、ＢＩＳＴ回路５４を用いて半導体装置２の自己診断テストを実施する際に、複数の電源電圧のトリミングを自動で行うことができる。
【００８３】
図１１は、本実施の形態にかかる半導体装置におけるトリミング動作を説明するためのフローチャートである。本実施の形態にかかる半導体装置２においてトリミング動作を実施する際は、まず、フラッシュメモリ１０からＳＲＡＭ（５２）にトリミング動作を実施するためのファームウェアを転送する（ステップＳ２１）。その後、ＳＲＡＭ（５２）に格納されているファームウェアを実行する（ステップＳ２２）。このような動作により、トリミング動作が実施される（ステップＳ２３）。なお、ステップＳ２３のトリミング動作については、実施の形態１で説明したトリミング動作（図８参照）と同様であるので重複した説明は省略する。
【００８４】
本実施の形態にかかる半導体装置２では半導体装置２の出荷後にトリミングを実施しているが、この際、ＣＰＵ（５１）主導でトリミングを実施してもよく、またフラッシュ制御回路４０主導でトリミングを実施してもよい。換言すると、本実施の形態にかかる半導体装置２では、ＣＰＵ（５１）およびフラッシュ制御回路４０の少なくとも一方を用いて、トリミング動作を制御することができる。
【００８５】
図１２は、本実施の形態にかかる半導体装置におけるトリミング動作を説明するためのブロック図であり、ＣＰＵ（５１）主導でトリミングを実施する場合の流れを示す図である。ＣＰＵ（５１）主導でトリミングを実施する場合、ＣＰＵ（５１）は、ＢＩＳＴ回路５４を用いて半導体装置２の自己診断テストを実施する際に、フラッシュメモリ１０からＳＲＡＭ（５２）にトリミング動作のためのファームウェアを転送して格納する。その後、ＣＰＵ（５１）は、ＳＲＡＭ（５２）に格納されているファームウェアを実行してフラッシュメモリ１０に対してトリミングを実施する。
【００８６】
ＣＰＵ（５１）主導でトリミング動作を実施する場合は、トリミング動作時にＣＰＵ（５１）を占有するため他のテストを実施することができない。
【００８７】
図１３は、本実施の形態にかかる半導体装置におけるトリミング動作を説明するためのブロック図であり、フラッシュ制御回路４０主導でトリミングを実施する場合の流れを示す図である。フラッシュ制御回路４０主導でトリミングを実施する場合、ＢＩＳＴ回路５４は、半導体装置２に対する自己診断テストを、ＢＩＳＴ回路５４を用いて実施する際に、フラッシュメモリ１０からＳＲＡＭ（５２）にトリミング動作のためのファームウェアを転送して格納する。その後、ＢＩＳＴ回路５４は、ファームウェアを実行して、フラッシュ制御回路４０を用いてフラッシュメモリ１０に対してトリミングを実施する。
【００８８】
フラッシュ制御回路４０主導でトリミングを実施する場合は、トリミング動作時にＣＰＵ（５１）が占有されないので、ＣＰＵ（５１）を使用するテストと並行してトリミング動作を実施することができる。すなわち、フラッシュ制御回路４０主導でトリミングを実施する場合は、第１のサブシステム６１の内部でトリミング動作を実施することができる。
【００８９】
また、本実施の形態にかかる半導体装置２では、ＣＰＵ（５１）がトリミング動作を制御している際にＣＰＵ（５１）の負荷が大きくなった場合、トリミング動作の制御をＣＰＵ（５１）からフラッシュ制御回路４０に切り替えるようにしてもよい。すなわち、最初はＣＰＵ（５１）でトリミング動作を制御し、ＣＰＵ（５１）の処理の負荷が所定の基準値を超えた場合に、トリミング動作の制御をＣＰＵ（５１）からフラッシュ制御回路４０に切り替えるようにしてもよい。このように、トリミング動作の制御を切り替え可能に構成することで、システムの柔軟性を向上させることができる。
【００９０】
＜実施の形態３＞
次に、実施の形態３について説明する。実施の形態３では、実施の形態１、２で説明した半導体装置において電源回路の故障を検出する場合について説明する。なお、本実施の形態にかかる半導体装置は、電源回路の故障を検出する点以外は実施の形態１、２で説明した半導体装置と同様であるので、重複した説明は適宜省略する。
【００９１】
本実施の形態にかかる半導体装置は、電源回路１１が備える電圧生成回路２２（図１参照）の故障を検出する故障検出モードを備える。電圧生成回路２２は、フラッシュメモリで使用される複数の電源電圧を生成する。電圧生成回路２２は昇圧回路（チャージポンプ回路）を備えており、この昇圧回路を用いて電源電圧が昇圧される。
【００９２】
図１４に示すように、トリミング動作時は、トリミングコードが増加するにつれて、電圧生成回路２２から出力される電圧値が増加する（図１４の正常時のＣＰ電圧参照）。トリミング動作時は、トリミング用の基準電圧Ｖｒｅｆ_１を設定する。そして、トリミングコードを増加させて、電圧生成回路２２から出力される電圧値が基準電圧Ｖｒｅｆ_１と一致した際のトリミングコードが、調整用のトリミングコードであると決定する。
【００９３】
一方、電圧生成回路２２が故障している場合は、トリミングコードが増加しても電圧生成回路２２から出力される電圧値の増加量が少ない（図１４の故障時のＣＰ電圧参照）。本実施の形態にかかる半導体装置は、このような電圧生成回路２２の故障を検出する故障検出モードを備える。
【００９４】
本実施の形態にかかる半導体装置は、故障検出モードにおいて、トリミング動作時の基準電圧Ｖｒｅｆ_１よりも低い基準電圧Ｖｒｅｆ_２を故障検出時の基準電圧として設定する。そして、電源電圧を変化させた際に、電源電圧が基準電圧Ｖｒｅｆ_２に到達しない場合に電圧生成回路２２が故障であると判断する。
【００９５】
すなわち、電圧生成回路２２は、トリミングコードに応じて電源電圧を生成するように構成されているが、故障検出モードにおいてトリミングコードを最大値まで変化させた場合であっても電源電圧が基準電圧Ｖｒｅｆ_２に到達しない場合は、電圧生成回路２２が故障であると判断することができる。
【００９６】
このように、本実施の形態にかかる半導体装置では、電圧生成回路２２の故障を検出するための基準電圧Ｖｒｅｆ_２を設定し、その後トリミングコードを変化させることで電圧生成回路２２の故障を検出することができる。電圧生成回路２２の故障を検出する故障検出モードの動作は、典型的には、実施の形態１で説明したトリミング動作の前に実施することが好ましい。故障検出モードの動作は、例えば、図１０に示したＣＰＵ（５１）で実施してもよく、またフラッシュ制御回路４０で実施してもよい。
【００９７】
フラッシュ制御回路で故障検出モードを実施した場合は、故障検出モードの動作時にＣＰＵ（５１）が占有されないので、ＣＰＵ（５１）を使用するテストと並行して故障検出モードの動作を実施することができる。すなわち、フラッシュ制御回路４０で故障検出モードの動作を実施する場合は、第１のサブシステム６１の内部で故障検出モードの動作を実施することができる。
【００９８】
＜実施の形態４＞
次に、実施の形態４について説明する。実施の形態１〜３では、電源電圧のトリミング動作について説明したが、実施の形態４では電流源のトリミング動作について説明する。なお、実施の形態４における電流源のトリミング動作の基本的な考え方は、実施の形態１〜３で説明した電源電圧のトリミング動作と同様である。
【００９９】
図１５は、本実施の形態にかかる半導体装置が備える半導体記憶装置の構成例を示す図である。なお、図１５では、半導体記憶装置の一部の構成のみを示している。図１５に示すように、半導体記憶装置７０は、電源回路７１及びトリミング回路７２を備える。半導体記憶装置７０は、例えばフラッシュメモリなどの不揮発性の半導体記憶装置である。以下では、半導体記憶装置としてフラッシュメモリを用いた場合の構成例について説明するが、本実施の形態における半導体記憶装置は、フラッシュメモリに限定されることはない。
【０１００】
電源回路７１は、基準電圧生成回路８１、基準電流源８２、及び動作電流源８３を備える。基準電圧生成回路８１は、トリミング動作時に使用する基準電圧（判定電圧）を生成する。具体的には、基準電圧生成回路８１は、基準電圧Ｒｅｆ_ｕｏｕｔ１６と、当該基準電圧Ｒｅｆ_ｕｏｕｔ１６よりも低い基準電圧Ｒｅｆ_ｏｕｔ７５と、を生成する。本実施の形態では、基準電圧Ｒｅｆ_ｏｕｔ７５をトリミング動作時の判定電圧として使用する。
【０１０１】
基準電圧生成回路８１で生成された基準電圧Ｒｅｆ_ｕｏｕｔ１６および基準電圧Ｒｅｆ_ｏｕｔ７５は、スイッチＳＷ_２１〜ＳＷ_２２を介して、トリミング回路７２が備えるコンパレータＣＯＭＰの一方の入力に供給される。
【０１０２】
基準電流源８２は、トリミング動作時に使用する基準電流Ｉｒｅｆ_１、Ｉｒｅｆ_２を生成する。基準電流源８２は、基準電流Ｉｒｅｆ_１を生成するカレントソース型の基準電流源と、基準電流Ｉｒｅｆ_２を生成するカレントシンク型の基準電流源と、を備える。基準電流源８２で生成された基準電流Ｉｒｅｆ_１、Ｉｒｅｆ_２は、例えばミラー回路を用いてトリミング回路７２に供給される。
【０１０３】
動作電流源８３は、半導体記憶装置で使用される動作電流Ｉｒｄ、Ｉｖｆｙを生成する。動作電流源８３は、動作電流Ｉｒｄを生成するカレントシンク型の動作電流源と、動作電流Ｉｖｆｙを生成するカレントソース型の動作電流源と、を備える。通常動作時は、動作電流源８３で生成された動作電流Ｉｒｄ、Ｉｖｆｙは、フラッシュメモリの内部動作電流として用いられる。例えば、動作電流Ｉｒｄはフラッシュメモリの読出し時に用いられる電流である。また、動作電流Ｉｖｆｙはフラッシュメモリのベリファイ時に用いられる電流である。また、トリミング動作時において、動作電流源８３で生成された動作電流Ｉｒｄ、Ｉｖｆｙは、例えばミラー回路を用いてトリミング回路７２に供給される。
【０１０４】
トリミング回路７２は、トリミング動作時に動作電流Ｉｒｄ、Ｉｖｆｙのトリミングを行う。トリミング回路７２は、コンパレータＣＯＭＰを備える。コンパレータＣＯＭＰの一方の入力には、基準電圧生成回路８１で生成された基準電圧（判定電圧）が供給され、他方の入力はノードＮ１に接続されている。
【０１０５】
基準電流源Ｉｒｅｆ_１は、スイッチＳＷ_２３を介してノードＮ１に接続可能に構成されている。基準電流源Ｉｒｅｆ_２は、スイッチＳＷ_２４を介してノードＮ１に接続可能に構成されている。動作電流源Ｉｒｄは、スイッチＳＷ_２５を介してノードＮ１に接続可能に構成されている。動作電流源Ｉｖｆｙは、スイッチＳＷ_２６を介してノードＮ１に接続可能に構成されている。
【０１０６】
また、トリミング回路７２は外部端子９８を備える。外部端子９８には、半導体装置の外部に設けられた外部基準電流源Ｉ_ＯＵＴから外部基準電流Ｉ_ＯＵＴが供給される。外部基準電流源Ｉ_ＯＵＴは、スイッチＳＷ_２７を介してノードＮ１に接続可能に構成されている。
【０１０７】
次に、フラッシュメモリ７０におけるトリミング動作について説明する。例えば、フラッシュメモリ１０におけるトリミング動作は、フラッシュ制御回路（制御回路）を用いて制御される。図１６のフローチャートに示すように、本実施の形態では、まず、基準電流Ｉｒｅｆ_１のトリミングを実施する（ステップＳ３１）。
【０１０８】
具体的には、図１７に示すように、基準電圧生成回路８１のスイッチＳＷ_２２を導通状態にして、コンパレータＣＯＭＰの一方の入力に基準電圧（判定電圧）Ｒｅｆ_ｏｕｔ７５を供給する。また、トリミング回路７２のスイッチＳＷ_２３を導通状態にして、基準電流源Ｉｒｅｆ_１をノードＮ１に接続する。また、トリミング回路７２のスイッチＳＷ_２７を導通状態にして、外部基準電流源Ｉ_ＯＵＴをノードＮ１に接続する。
【０１０９】
ここで、外部基準電流源Ｉ_ＯＵＴから供給される外部基準電流Ｉ_ＯＵＴは、基準電流源Ｉｒｅｆ_１の電流量を調整するための電流であり、一定の電流である。基準電流源Ｉｒｅｆ_１はカレントソース型の電流源であるので、外部基準電流源Ｉ_ＯＵＴにはカレントシンク型の電流源を用いる。この場合は、図１７に示すように、基準電流源Ｉｒｅｆ_１および外部基準電流源Ｉ_ＯＵＴをノードＮ１に接続すると、基準電流源Ｉｒｅｆ_１から外部基準電流源Ｉ_ＯＵＴに電流が流れる。
【０１１０】
トリミング動作時、基準電流源Ｉｒｅｆ_１はノードＮ１に供給する電流量を変化させている。例えば、基準電流源８２には、フラッシュ制御回路からトリミングコードが供給されており、基準電流源８２は供給されたトリミングコードに応じて、基準電流源Ｉｒｅｆ_１からノードＮ１に供給される電流量を調整している。そして、基準電流源Ｉｒｅｆ_１と外部基準電流源Ｉ_ＯＵＴとの電流差が所定の値よりも小さくなるように基準電流源Ｉｒｅｆ_１の電流値を調整し、この調整量に対応するトリミングコードを決定している。
【０１１１】
例えば、ステップＳ３１では、基準電流源Ｉｒｅｆ_１の電流量を最大値から徐々に減らしている。基準電流源Ｉｒｅｆ_１からノードＮ１に供給される基準電流Ｉｒｅｆ_１の電流量が外部基準電流Ｉ_ＯＵＴの電流量よりも多い場合は、ノードＮ１の電圧が高くなる。この場合は、ノードＮ１の電圧が判定電圧Ｒｅｆ_ｏｕｔ７５よりも高くなるので、コンパレータＣＯＭＰは、「Ｆｌａｇ＝０」を出力する。そして、基準電流源Ｉｒｅｆ_１からノードＮ１に供給される基準電流Ｉｒｅｆ_１の電流量を徐々に減らしていくと、基準電流源Ｉｒｅｆ_１の電流量が外部基準電流源Ｉ_ＯＵＴの電流量に徐々に近づき、その後、基準電流源Ｉｒｅｆ_１の電流量と外部基準電流源Ｉ_ＯＵＴの電流量との電流差が所定の値よりも小さくなる。このとき、ノードＮ１の電圧は、判定電圧Ｒｅｆ_ｏｕｔ７５よりも小さくなるので、コンパレータＣＯＭＰは、「Ｆｌａｇ＝１」を出力する。そして、このときの基準電流源Ｉｒｅｆ_１の調整量に対応した値が、基準電流源Ｉｒｅｆ_１を調整するためのトリミングコードと決定される。以降、このトリミングコードを用いて、基準電流源Ｉｒｅｆ_１が調整される。本実施の形態で用いられる判定電圧Ｒｅｆ_ｏｕｔ７５は、所定の電圧値（例えば、０．７５Ｖ）である。
【０１１２】
次に、図１６のフローチャートに示すように、基準電流Ｉｒｅｆ_２のトリミングを実施する（ステップＳ３２）。
【０１１３】
具体的には、図１８に示すように、基準電圧生成回路８１のスイッチＳＷ_２２を導通状態にして、コンパレータＣＯＭＰの一方の入力に基準電圧（判定電圧）Ｒｅｆ_ｏｕｔ７５を供給する。また、トリミング回路７２のスイッチＳＷ_２４を導通状態にして、基準電流源Ｉｒｅｆ_２をノードＮ１に接続する。また、トリミング回路７２のスイッチＳＷ_２７を導通状態にして、外部基準電流源Ｉ_ＯＵＴをノードＮ１に接続する。
【０１１４】
ここで、外部基準電流源Ｉ_ＯＵＴから供給される外部基準電流Ｉ_ＯＵＴは、基準電流源Ｉｒｅｆ_２の電流量を調整するための電流であり、一定の電流である。基準電流源Ｉｒｅｆ_２はカレントシンク型の電流源であるので、外部基準電流源Ｉ_ＯＵＴにはカレントソース型の電流源を用いる。この場合は、図１８に示すように、基準電流源Ｉｒｅｆ_２および外部基準電流源Ｉ_ＯＵＴをノードＮ１に接続すると、外部基準電流源Ｉ_ＯＵＴから基準電流源Ｉｒｅｆ_２に電流が流れる。
【０１１５】
トリミング動作時、基準電流源Ｉｒｅｆ_２はノードＮ１から引き抜く電流量を変化させている。例えば、基準電流源８２には、フラッシュ制御回路からトリミングコードが供給されており、基準電流源８２は供給されたトリミングコードに応じて、基準電流源Ｉｒｅｆ_２に流れる電流量を調整している。そして、基準電流源Ｉｒｅｆ_２と外部基準電流源Ｉ_ＯＵＴとの電流差が所定の値よりも小さくなるように基準電流源Ｉｒｅｆ_２の電流値を調整し、この調整量に対応するトリミングコードを決定している。
【０１１６】
例えば、ステップＳ３２では、基準電流源Ｉｒｅｆ_２の電流量を最小値から徐々に増やしている。基準電流源Ｉｒｅｆ_２に流れる電流量が外部基準電流源Ｉ_ＯＵＴの電流量よりも少ない場合は、ノードＮ１の電圧が高くなる。この場合は、ノードＮ１の電圧が判定電圧Ｒｅｆ_ｏｕｔ７５よりも高くなるので、コンパレータＣＯＭＰは、「Ｆｌａｇ＝０」を出力する。そして、基準電流源Ｉｒｅｆ_２に流れる電流量を徐々に増やしていくと、基準電流源Ｉｒｅｆ_２の電流量が外部基準電流源Ｉ_ＯＵＴの電流量に徐々に近づき、その後、基準電流源Ｉｒｅｆ_２の電流量と外部基準電流源Ｉ_ＯＵＴの電流量との電流差が所定の値よりも小さくなる。このとき、ノードＮ１の電圧は、判定電圧Ｒｅｆ_ｏｕｔ７５よりも小さくなるので、コンパレータＣＯＭＰは、「Ｆｌａｇ＝１」を出力する。そして、このときの基準電流源Ｉｒｅｆ_２の調整量に対応した値が、基準電流源Ｉｒｅｆ_２を調整するためのトリミングコードと決定される。以降、このトリミングコードを用いて、基準電流源Ｉｒｅｆ_２が調整される。
【０１１７】
次に、図１６のフローチャートに示すように、動作電流Ｉｒｄのトリミングを実施する（ステップＳ３３）。
【０１１８】
具体的には、図１９に示すように、基準電圧生成回路８１のスイッチＳＷ_２２を導通状態にして、コンパレータＣＯＭＰの一方の入力に基準電圧（判定電圧）Ｒｅｆ_ｏｕｔ７５を供給する。また、トリミング回路７２のスイッチＳＷ_２３を導通状態にして、基準電流源Ｉｒｅｆ_１をノードＮ１に接続する。また、トリミング回路７２のスイッチＳＷ_２５を導通状態にして、動作電流源ＩｒｄをノードＮ１に接続する。
【０１１９】
ここで、基準電流源Ｉｒｅｆ_１から供給される基準電流Ｉｒｅｆ_１は、動作電流源Ｉｒｄの電流量を調整するための電流であり、一定の電流である。図１９に示すように、基準電流源Ｉｒｅｆ_１はカレントソース型の電流源であり、動作電流源Ｉｒｄはカレントシンク型の電流源であるので、基準電流源Ｉｒｅｆ_１および動作電流源ＩｒｄをノードＮ１に接続すると、基準電流源Ｉｒｅｆ_１から動作電流源Ｉｒｄに電流が流れる。
【０１２０】
トリミング動作時、動作電流源ＩｒｄはノードＮ１から引き抜く電流量を変化させている。例えば、動作電流源８３には、フラッシュ制御回路からトリミングコードが供給されており、動作電流源８３は供給されたトリミングコードに応じて、動作電流源Ｉｒｄに流れる電流量を調整している。そして、基準電流源Ｉｒｅｆ_１と動作電流源Ｉｒｄとの電流差が所定の値よりも小さくなるように動作電流源Ｉｒｄの電流値を調整し、この調整量に対応するトリミングコードを決定している。
【０１２１】
例えば、ステップＳ３３では、動作電流源Ｉｒｄの電流量を最小値から徐々に増やしている。動作電流源Ｉｒｄに流れる電流量が基準電流源Ｉｒｅｆ_１の電流量よりも少ない場合は、ノードＮ１の電圧が高くなる。この場合は、ノードＮ１の電圧が判定電圧Ｒｅｆ_ｏｕｔ７５よりも高くなるので、コンパレータＣＯＭＰは、「Ｆｌａｇ＝０」を出力する。そして、動作電流源Ｉｒｄに流れる電流量を徐々に増やしていくと、動作電流源Ｉｒｄの電流量が基準電流源Ｉｒｅｆ_１の電流量に徐々に近づき、その後、基準電流源Ｉｒｅｆ_１の電流量と動作電流源Ｉｒｄの電流量との電流差が所定の値よりも小さくなる。このとき、ノードＮ１の電圧は、判定電圧Ｒｅｆ_ｏｕｔ７５よりも小さくなるので、コンパレータＣＯＭＰは、「Ｆｌａｇ＝１」を出力する。そして、このときの動作電流源Ｉｒｄの調整量に対応した値が、動作電流源Ｉｒｄを調整するためのトリミングコードと決定される。以降、動作電流源８３は、通常動作時、このトリミングコードを用いて動作電流Ｉｒｄを生成する。
【０１２２】
次に、図１６のフローチャートに示すように、動作電流Ｉｖｆｙのトリミングを実施する（ステップＳ３４）。
【０１２３】
具体的には、図２０に示すように、基準電圧生成回路８１のスイッチＳＷ_２２を導通状態にして、コンパレータＣＯＭＰの一方の入力に基準電圧（判定電圧）Ｒｅｆ_ｏｕｔ７５を供給する。また、トリミング回路７２のスイッチＳＷ_２４を導通状態にして、基準電流源Ｉｒｅｆ_２をノードＮ１に接続する。また、トリミング回路７２のスイッチＳＷ_２６を導通状態にして、動作電流ＩｖｆｙをノードＮ１に接続する。
【０１２４】
ここで、基準電流源Ｉｒｅｆ_２に流れる基準電流Ｉｒｅｆ_２は、動作電流Ｉｖｆｙの電流量を調整するための電流であり、一定の電流である。図２０に示すように、基準電流源Ｉｒｅｆ_２はカレントシンク型の電流源であり、動作電流源Ｉｖｆｙはカレントソース型の電流源であるので、基準電流源Ｉｒｅｆ_２および動作電流源ＩｖｆｙをノードＮ１に接続すると、動作電流源Ｉｖｆｙから基準電流源Ｉｒｅｆ_２に電流が流れる。
【０１２５】
トリミング動作時、動作電流源ＩｖｆｙはノードＮ１に供給する電流量を変化させている。例えば、動作電流源８３には、フラッシュ制御回路からトリミングコードが供給されており、動作電流源８３は供給されたトリミングコードに応じて、動作電流源ＩｖｆｙからノードＮ１に供給される電流量を調整している。そして、基準電流源Ｉｒｅｆ_２と動作電流源Ｉｖｆｙとの電流差が所定の値よりも小さくなるように動作電流源Ｉｖｆｙの電流値を調整し、この調整量に対応するトリミングコードを決定している。
【０１２６】
例えば、ステップＳ３４では、動作電流源Ｉｖｆｙの電流量を最大値から徐々に減らしている。動作電流源Ｉｖｆｙに流れる電流量が基準電流源Ｉｒｅｆ_２の電流量よりも多い場合は、ノードＮ１の電圧が高くなる。この場合は、ノードＮ１の電圧が判定電圧Ｒｅｆ_ｏｕｔ７５よりも高くなるので、コンパレータＣＯＭＰは、「Ｆｌａｇ＝０」を出力する。そして、動作電流源Ｉｖｆｙに流れる電流量を徐々に減らしていくと、動作電流源Ｉｖｆｙの電流量が基準電流源Ｉｒｅｆ_２の電流量に徐々に近づき、その後、基準電流源Ｉｒｅｆ_２の電流量と動作電流源Ｉｖｆｙの電流量との電流差が所定の値よりも小さくなる。このとき、ノードＮ１の電圧は、判定電圧Ｒｅｆ_ｏｕｔ７５よりも小さくなるので、コンパレータＣＯＭＰは、「Ｆｌａｇ＝１」を出力する。そして、このときの動作電流源Ｉｖｆｙの調整量に対応した値が、動作電流源Ｉｖｆｙを調整するためのトリミングコードと決定される。以降、動作電流源８３は、通常動作時、このトリミングコードを用いて動作電流Ｉｖｆｙを生成する。
【０１２７】
上述のように、本実施の形態にかかる半導体装置では、トリミング動作時に、半導体装置の外部から供給された外部基準電流Ｉ_ＯＵＴを用いて基準電流Ｉｒｅｆ_１、Ｉｒｅｆ_２を調整している。その後、調整後の基準電流Ｉｒｅｆ_１、Ｉｒｅｆ_２を用いて、動作電流源Ｉｒｄ、Ｉｖｆｙの調整量に対応するトリミングコードを決定している。本実施の形態にかかる半導体装置では、半導体装置の出荷前に、外部基準電流Ｉ_ＯＵＴを用いて基準電流Ｉｒｅｆ_１、Ｉｒｅｆ_２を調整してもよい。つまり、半導体装置の出荷前に基準電流Ｉｒｅｆ_１、Ｉｒｅｆ_２のトリミングコードを決定してもよい。
【０１２８】
このように、半導体装置の出荷前に、基準電流Ｉｒｅｆ_１、Ｉｒｅｆ_２の調整量に対応したトリミングコードを決定することで、半導体装置の出荷後においてトリミングを実施する際に、外部基準電流Ｉ_ＯＵＴを入力する必要がなくなる。
【０１２９】
すなわち、半導体装置の出荷後にトリミングを実施する際、基準電流源８２は、出荷前に決定された調整量に対応した値であるトリミングコードを用いて基準電流Ｉｒｅｆ_１、Ｉｒｅｆ_２を調整し、この調整された基準電流Ｉｒｅｆ_１、Ｉｒｅｆ_２を用いて、動作電流源Ｉｒｄ、Ｉｖｆｙのトリミングを実施することができる。
【０１３０】
また、トリミングを実施する際のトリミングコードは、実施の形態１で説明したように、自動的に生成することができるので、ＢＩＳＴ回路５４（図１０参照）を用いて半導体装置の自己診断テストを実施する際に、複数の動作電流源Ｉｒｄ、Ｉｖｆｙのトリミングを自動で行うことができる。
【０１３１】
本実施の形態で説明した基準電流Ｉｒｅｆ_１、Ｉｒｅｆ_２、及び動作電流Ｉｒｄ、Ｉｖｆｙのトリミングは、典型的には、実施の形態１で説明した基準電圧（Ｒｅｆ_ｕｏｕｔ１６等）、及び電源電圧（ｕｏｕｔ１６等）のトリミングの後に実施することが好ましい。
【０１３２】
また、本実施の形態にかかる半導体装置は、実施の形態２で説明した半導体装置（図１０参照）と同様に構成してもよい。また、本実施の形態で説明した基準電流Ｉｒｅｆ_１、Ｉｒｅｆ_２、及び動作電流Ｉｒｄ、Ｉｖｆｙのトリミングは、実施の形態２で説明した場合と同様に、ＣＰＵ（５１）主導で実施してもよく、またフラッシュ制御回路４０主導で実施してもよい。
【０１３３】
また、本実施の形態にかかる半導体装置においても、ＣＰＵ（５１）がトリミング動作を制御している際にＣＰＵ（５１）の負荷が大きくなった場合、トリミング動作の制御をＣＰＵ（５１）からフラッシュ制御回路４０に切り替えるようにしてもよい。すなわち、最初はＣＰＵ（５１）でトリミング動作を制御し、ＣＰＵ（５１）の処理の負荷が所定の基準値を超えた場合に、トリミング動作の制御をＣＰＵ（５１）からフラッシュ制御回路４０に切り替えるようにしてもよい。このように、トリミング動作の制御を切り替え可能に構成することで、システムの柔軟性を向上させることができる。
【０１３４】
また、本実施の形態にかかる半導体装置は、実施の形態３で説明した半導体装置と同様に故障検出モードを備えていてもよい。
【０１３５】
図２１に示すように、トリミング動作時は、トリミングコードが増加するにつれて、動作電流源８３から出力される電流値が増加する（図２１の「正常時のＩｒｄ電流、Ｉｖｆｙ電流」参照）。トリミング動作時は、トリミング用の基準電流値を設定する。そして、トリミングコードを増加させて、動作電流源８３から出力される電流値が基準電流値と一致した際のトリミングコードを、調整用のトリミングコードと決定する（動作電流Ｉｖｆｙの場合）。
【０１３６】
一方、動作電流源８３が故障している場合は、トリミングコードが増加しても動作電流源８３から出力される電流値の増加量が少ない（図２１の「故障時のＩｒｄ電流、Ｉｖｆｙ電流」参照）。本実施の形態にかかる半導体装置は、このような動作電流源８３の故障を検出する故障検出モードを備えていてもよい。
【０１３７】
故障検出モードを実施する場合は、トリミング動作時の基準電流値よりも低い基準電流値を故障検出時の基準電流値として設定する。そして、動作電流を変化させた際に、動作電流が故障検出時の基準電流値に到達しない場合に動作電流源８３が故障であると判断する。
【０１３８】
すなわち、動作電流源８３は、トリミングコードに応じて動作電流を生成するように構成されているが、故障検出モードにおいてトリミングコードを最大値まで変化させた場合であっても動作電流が故障検出時の基準電圧値に到達しない場合は、動作電流源８３が故障であると判断することができる。
【０１３９】
動作電流源８３の故障を検出する故障検出モードの動作は、典型的には、動作電流のトリミングの前に実施することが好ましい。故障検出モードの動作は、例えば、図１０に示したように、ＣＰＵ（５１）で実施してもよく、またフラッシュ制御回路４０で実施してもよい。
【０１４０】
以上、本発明者によってなされた発明を実施の形態に基づき具体的に説明したが、本発明は前記実施の形態に限定されるものではなく、その要旨を逸脱しない範囲で種々変更可能であることはいうまでもない。
【符号の説明】
【０１４１】
１、２  半導体装置
１０  半導体記憶装置
１１  電源回路
１２  トリミング回路
１３  ロジック回路
１４  レジスタ
２１  基準電圧生成回路
２２  電圧生成回路
３１  正の低電圧電源
３２  正の高電圧電源
３３  負の電圧電源
３４、３５  抵抗分圧回路
４０  フラッシュ制御回路
４１  カウンタ
４２  タイマ
【図１】
2019135742.tif 000003
【図２】
2019135742.tif 000004
【図３】
2019135742.tif 000005
【図４】
2019135742.tif 000006
【図５】
2019135742.tif 000007
【図６】
2019135742.tif 000008
【図７】
2019135742.tif 000009
【図８】
2019135742.tif 000010
【図９】
2019135742.tif 000011
【図１０】
2019135742.tif 000012
【図１１】
2019135742.tif 000013
【図１２】
2019135742.tif 000014
【図１３】
2019135742.tif 000015
【図１４】
2019135742.tif 000016
【図１５】
2019135742.tif 000017
【図１６】
2019135742.tif 000018
【図１７】
2019135742.tif 000019
【図１８】
2019135742.tif 000020
【図１９】
2019135742.tif 000021
【図２０】
2019135742.tif 000022
【図２１】
2019135742.tif 000023