XJTAGのインストール内にあるXJEase libraryには、殆どの部品にマッチするXJEaseデバイスファイルがソースコードで提供されています。
XJEase自体は学習が容易なプログラミング言語であり、XJDeveloperからプロジェクトのデバイスモデルを表示または編集して、カスタマイズしたり、新しいデバイス用のファイルを作成することも可能です。
以下は、いくつかの単純なXJEaseの例です。
XJDeveloperでは、テストデバイスファイル画面を使用して、デバイスごとのXJEaseコードを表示または編集できます。
メモリデバイスの場合、以下のスクリーンショットのように複数のバスが定義されています。
一部のバス(nWEなど)は単一ピンですが、アドレスバスとデータバスには多くのピンがあります。 各ピンは、テスト対象デバイスのピン番号であり、データシートから取得されます。 これは「デバイスセントリック」なファイルです。デバイスが実装される回路に依存するのではなく、固有のデバイスを参照します。つまり、デバイスが別のプロジェクトで使用される場合でも、ファイルは再利用されます。
これらのバスを使用して、メモリに読み書きする簡単な機能が得られます。
例えば:
// Write a byte of data to the address specified WriteCycle( INT address, INT data )() SET ADDRESS := address[10..0], DATA := data[7..0], nCS := 0, nWE := 0; SET nCS := 1, nWE := 1; END; // Read from the address specified and return the byte read in the data parameter ReadCycle( INT address )( INT data ) SET ADDRESS := address[10..0], DATA := I, nOE := 0, nCS := 0; // This will set the data bits to input. SET nCS := 1, nOE := 1, data := DATA; FLUSH; END;
また他にも、例えばデータバスをテストする機能もあります。
この例は、XJTAGライブラリテストの動作を示しませんが、これは、単純なウォーキングワンテストパターンをデバイスに設定します。すべてが期待どおりである場合、関数は「result」パラメーターで0を返しますが、何か問題が発生した場合は、エラーを示すために1を返し、メッセージを出力します。
TestData( )( INT result ) INT dataLine, value, testValue; result := 0; // Walking '1's FOR dataLine := 0 TO 7 testValue := 1 << dataLine; WriteCycle( dataLine, testValue ); END; FOR dataLine := 0 TO 7 testValue := 1 << dataLine; ReadCycle( dataLine )( value ); IF debug THEN PRINT("Wrote 0x", HEX(testValue), " to address ", dataLine," read back 0x", HEX(value), "\n"); END; IF value != testValue THEN result := 1; PRINT("Error found while testing Data line ", dataLine, ".\n"); END; END; END;