JTAGの次の規格
これまで何度も述べてきたようにJTAGの本来の機能はバウンダリスキャンですが、現在ではJTAGはバウンダリスキャンだけではなく、CPUのデバッグや、FPGAの書き込みなど、いろんなことに使われています。
CPUデバッグや、FPGAの書き込みなどは、JTAGの規格で定められていた「オプションの機能」を使って実現しています。つまりJTAGを便利なシリアル通信ポートのように使っているだけで、その中で流れているプロトコルはベンダーによって全く異なります。
その方法はベンダーごとに異なり、統一が取れていません。CPUやFPGAのデバッグや書き込み方法は、それぞれのデバイスの内部構造も違うことですし、各ベンダーの発展の経緯があるので当然といえば当然です。
ところが、最近になってCPUのデバッグやFPGAの書き込みについて、標準規格が定められるようになってきました。
FPGAやコンフィグROM、CPLDについてはIEEE1532という規格があります。
これらのデバイスに書き込むには、データファイルと書き込みアルゴリズムが必要です。XILINXの場合、JEDファイルやBITファイルというのがデータファイルです。ALTERAの場合は、SOFやPOFといったファイルがデータファイルです。
データだけあっても、実際のデバイスへの書き込みアルゴリズムを知らなければ、書き込みはできません。
ですが、書き込みアルゴリズムについてはFPGA以外は非公開が普通です。
XILINXでは、サードパーティのツールや組み込みプロセッサからでも容易に書き込めるように、SVFやXSVFファイルを出力することができますが、SVFやXSVFファイルなどはアルゴリズムとデータを結合させてしまっているので、データだけ差し替えることはできませんが、"実行"するのは容易です。
ただし、SVFは条件判断ができないので、書き込み時間などを最適に調整することはできません。また、SVFファイルやXSVFファイルを作るにはiMPACTを使う必要があります。なぜなら、アルゴリズムを知っているツールはiMPACTだからです。
(※もちろん、MITOUJTAGはアルゴリズムを知っているので、SVFやXSVFを中継しなくても書けます。)
アルゴリズムはベンダーやデバイスごとに異なるので、この状況をなんとかしようと定めたのが、IEEE1532という規格です。IEEE1532というのは、JTAGを使った書き込みアルゴリズムを公開してしまいます。最近になって比較的まともにサポートされるようになってきました。
IEEE1532では、BSDLファイルの中に書き込みアルゴリズムが書いてあります。ですが、これでオープンになったと喜ぶのは尚早です。
IEEE1532で使われるデータファイルは、JEDやBITではなく、ISCファイルという変なファイルです。これを作るのにはやはりiMPACTやQualtusに指示しなければなりません。やっぱり、各社とも秘密にしたいところがあるのでしょう。
実際に、IEEE1532はあまり、いや、全く流行っていません。
FPGAベンダーは、IEEE1532に本気で対応させてもメリットはなさそうです。IEEE1532を使わずにネイティブの環境(iMPACTなど)で書き込んだほうが楽だし、小回りもききます。
また、サードパーティの書き込みツールベンダーにとっても、メリットは少ないでしょう。FPGAの書き込みツールはベンダー純正のが既に無料で提供されているのです。Windowsで動く書き込みIEEE1532ツールは商業的に作ってもメリットがないし、組み込みプロセッサから書き換えるならSVFやXSVFがあります。
そういう理由から、今後も流行らないと思われます。
一方、各社まちまちだった、CPUのデバッグについても標準規格を定めようという動きがあるようです。
それはNexus 5001、IEEE-ISTO 5001™-1999というのですが、JTAGのインタフェースを使ってCPUのデバッグプロトコルを統一したい、というもののようです。
http://www.nexus5001.org/index.html
仕様書は上記のページからダウンロードすることができます。
読んでみましたが、どうも流行るとは思えません。
CPUのベンダーはこの規格に従ってデバッグインタフェースを作りたいと思うでしょうか?
従来からあるCPUの後継品種を、この規格に合わせるメリットがあるとは感じられません。
従来どおりのデバッグインタフェースを踏襲したほうが各CPUのアーキテクチャに合うでしょうし、デバッガの動作も速いでしょうし、わざわざリスクを冒してまでデバッグインタフェースを標準化する理由が(CPUベンダーにとって)あるでしょうか。
むしろ、デバッグインタフェースプロトコルは秘密にしてしまいたい考えるベンダーのほうが多いくらいだと思います。
ただし、全く新規にFPGA内蔵のCPUコアを作るというのであれば、採用される可能性は十分にあります。当社が現在開発しているJTAG-ICEも、いずれこのNexusにも対応させるかもしれません。
自作のCPUコアにNexus互換のデバッグインタフェースを入れて、どのJTAGデバッガからでもデバッグできるようになる。いつかそんな日が来るかもしれません。
このようにCPUのデバッグ方法やFPGAの書き込み方法をオープンにする動きはありますが、どちらもあまり流行らないと思われます。メリットがないからです。
最近のコメント