第11回 Pythonで動かすJTAGテスト
2022年09月27日
こんにちは、前回から半年以上も経ってしまいましたが、その間に製造業の勢いがコロナ前に戻ってきた印象があります。多くの企業が、新製品の製造準備と設備投資を進める中、実装基板のテストと故障解析を自動化したいという声が増えてきました。
今回ご紹介するPythonプログラムで動かすJTAGテストは、これまでご紹介してきたJTAGテストの応用例です。テスト範囲の拡大とテスト品質の向上に向けたヒントにしていただけると嬉しいです。
JTAGテストをWindowsアプリケーションから実行する
一般的なファンクションテスト(機能テスト)は、テスト対象基板のマイコン、FPGAからテストプログラムを実行して、製品のすべての機能を実行して合否判定をするものです。そのため、製品のソフトウェアとは別に、製造テスト用のソフトウェアを開発する必要があります。
最近の製品は高機能化して、ソフトウェアが複雑になったため、生産技術部門のソフトウェア技術者は製品のソフトウェアを開発するのと同等のスキルが求められ、開発部門が製造検査の準備をしているのが実情です。企業にとっては、新製品の開発にリソースを割きたいところですが、ソフトウェア技術者は、製品のソフトウェアに加えて、製造検査用のソフトウェアを開発する必要があり、貴重な開発リソースをロスしてしまうことが課題となっています。これまでご紹介してきたJTAG ProVisionのテストアプリケーションを自動生成することで、この課題が解決します。自動生成したテストアプリケーションは、「Python」、マイクロソフト社の「.net」、NI社の「LabVIEW」などの、一般的なWindowsソフトウェア開発環境から制御することができます。
JTAGファンクションテスト JFTはPythonベースで動きます
JTAG ProVisionによりテストパターンを自動生成できる対象は、部品ごとのライブラリが用意されているメモリとロジック部品です。部品ライブラリ(モデルファイル)は、部品の動作を示す真理値表を持っており、そこには入力した信号に対する出力の期待値が含まれています。JTAGテストでは、この期待値とネットリストの配線情報をもとに合否判定と故障診断が行われます。
しかし、複雑な制御コマンド、制御シーケンスが必要となる回路は、テストアプリケーションを自動生成することができないため、Python言語を用いたファンクションテストによりテストカバレッジを拡大する必要性が高まってきました。
このJTAGによるファンクションテストは、「JFT(JTAGファンクションテスト)」と呼ばれ、一般的なファンクションテストとは異なり、バウンダリスキャンを使ってマイコン、FPGAの端子をPCから自由に制御できる仕組みになっています。マイコンのソフトウェア開発、FPGAのロジック設計をすることなく、Pythonから部品のピンを自由に制御できるPythonライブラリが提供されます。
自由にIO端子を制御できるライブラリが提供されます
JFTで提供されるPythonライブラリには、指定したデバイスとピン番号からLowレベルの信号を出力させる「DriveLow」、Highレベルの信号を出力させる「DriveHigh」、ハイインピーダンスの状態にする「HighZ」、入力信号を読むための「GetVar」などの関数が用意されています。ユーザは、マイコンのデータシートを読む必要はありませんので、すぐに周辺回路のテストを行うことができます。
また、指定したピンをグループにして制御する関数、JTAGコントローラの制御を行うための関数、JTAGのTAPを制御するための関数、ウェイト時間を指定する関数など、ファンクションテストで使用するためのライブラリが豊富に用意されており、短期間でファンクションテストのアプリケーションを開発することができます。
「Lチカ」がJFTではデータシートを読まずに数行でできる!?
では、実際にどの程度ファンクションテストの開発が効率化できるか、「Lチカ」の事例をご紹介します。組み込みソフトウェア開発では、最初の動作確認でLEDをチカチカ点灯させる通称「Lチカ」を行います。Lチカができるまでが、ソフトウェア開発の最初の山になりますが、Lチカをするためには、マイコンのデータシートを読み込んで、回路図を確認しながらマイコンの端子ごとにどのような機能として使用するか、出力にするか入力にするかなど、細かく初期設定を行うなど準備が必要です。
しかし、JFTではマイコンのデータシートを見る必要はありません。回路図を見ながら、LEDが何番ピンに接続されているか確認して、制御するピンをグループ宣言します。次にグループ宣言したピンから出力させる条件を指定するだけで、Lチカのプログラムが完成します。フラッシュメモリに書き込む必要もありませんので、すぐに作成したテストプログラムを実行することができます。
I2C、SPIインターフェースのセンサーをテストできます
基板上のセンサー、シリアルメモリなどの多くは、マイコンもしくはFPGAからI2CもしくはSPIのシリアルインターフェースを介して制御されます。新しいバージョンのJFTでは、シリアルインターフェース用のライブラリが提供されるようになり、容易にセンサーとシリアルメモリへのアクセスができるようになりました。
I2Cインターフェースの例では、はじめにCreateInterface関数でI2Cを制御するマスターとなる部品とピン番号を指定します。次にWriteRegisters関数を使って、何バイトのデータを書き込むか指定するだけでI2Cのデータを書き込むことができます。また、ReadRegister関数、モード設定用の関数など28種類の便利な関数が用意されています。
SPIインターフェースの場合は、転送モードをCPOLもしくはCPHAのどちらを使用するか設定するためのSetCopolMode関数など、19種類の関数が用意されているため、テスト対象のシリアル部品のデータシートを確認しながら、すぐにSPIインターフェースを使ってテストすることができます。
次回予告「PXI・LXIを活用した自動テストとは」
今回ご紹介した「JFT」というPythonスクリプト言語とJTAGテストとを組み合わせたJTAGファンクションテストを使えば、容易にファンクションテストを準備できることがお分かりいただけたかと思います。この技術は量産試験だけではなく、試作基板の受入検査、デバッグなど、さまざまなシーンでも活用することができます。ソフトウェアエンジニアの開発負荷の低減をはじめ、新製品の開発に注力する環境づくりにお役立ていただけると嬉しいです。
次回は、JTAGテストの話題から離れて、手作業による電子機器のテストを自動化するPXIとLXIについてお話しします。
第1回 試作基板のBGA部品が動かない!?第2回 BGAのはんだ不良を見つける。本来のJTAGとは?
第3回 試作基板のデバッグで困らない。テスト容易化設計の5つのポイント
第4回 テスト範囲を最大化する「DFTサイクル」とは
第5回 テストパッド削減とデバッグに役立つJTAGテストの活用事例
第6回 BGA実装基板の検査の課題を解決したJTAGテストの活用事例
第7回 「JTAGテストとHALTを活用した品質保証の取り組み」
第8回 実態調査から見える実装基板のトレンドと検査の課題
第9回 デバッグとテストの課題を解決する検査手法
第10回 JTAGハイブリッド検査の最新動向
第11回 Pythonで動かすJTAGテスト
執筆者プロフィール 谷口 正純(たにぐち まさずみ) アンドールシステムサポート株式会社 入社後、組込み機器、産業機器の回路設計を担当。現在は、JTAGテストツール、自動テスト用のスイッチ&センサエミュレーションのマネージャとして、お客様の基板テストの改善活動を支援している。 また、エレクトロニクス実装学会において、検査技術委員会の副委員長、バウンダリスキャン研究会の幹事として、JTAGテスト技術を通じて日本のモノづくりの改善活動を推進している。 |