首页资源分类应用技术测试测量 > TR5001T_TPG程式語言

TR5001T_TPG程式語言

已有 445125个资源

下载专区

文档信息举报收藏

标    签:TR5001T_TPG程式語言

分    享:

文档简介

TR5001T_TPG程式語言,,,,,,,

文档预览

TR5001T Series Tiny In-Circuit Test System 使用手冊 – TPG 程式語言 Ver. 1.0.0 June 05, 2011 Test Research Inc. TR5001T Tiny In-Circuit Test System 使用手冊----TPG 程式語言 Ver.1.0.0 Copyright © 2011 Test Research Inc. All rights reserved. 這份文件只有客戶或者 TRI 人員,為了要運用在 TR5001T 測試系統時,才能夠被印製或是影 印使用,任何其他方面的用途必須先獲得 TRI 公司的許可才行。 硬體規格跟軟體版本視情況需要改變時,並不會另行通知。 TRI 會作出最好的努力,讓客戶知道任何關於產品方面的升級、修改或是汰舊換新的消息。 所有的商品命名和商標都是 TRI 專有的資產。 倘若對此手冊有任何的指教跟意見,請 e-mail 到下列的電子信箱: sales@tri.com.tw 此外, 標題上請註明―TR5001T 使用手冊---程式語言‖。 www.tri.com.tw TR5001T User Guide – TPG v.1.0.0 Test Research Inc. Contents 1 簡介 ______________________________________________________ 1 2 高階語言 (TPG) _____________________________________________ 2 2.1 概要................................................................................................................ 2 2.2 術語................................................................................................................ 2 3 測試程式架構 _______________________________________________ 3 3.1 識別字 ............................................................................................................ 3 3.1.1 關鍵字 ........................................................................................... 3 3.1.2 標準函式 ........................................................................................ 4 3.2 資料類型......................................................................................................... 5 3.2.1 純量 ............................................................................................... 5 3.2.2 陣列 ............................................................................................... 5 3.3 常數................................................................................................................ 6 3.4 變數................................................................................................................ 7 4 運算子 ____________________________________________________ 8 4.1 算數運算子 ..................................................................................................... 8 4.2 關係和邏輯運算子 .......................................................................................... 8 4.3 指定運算子 ..................................................................................................... 9 5 運算式 ___________________________________________________ 10 6 陳述 _____________________________________________________ 11 7 類比測試__________________________________________________ 12 7.1 類比測試陳述 MR/MC/ML/MJ/MD/MQ .......................................................... 12 7.2 AnalogReset ................................................................................................ 15 7.3 開啟、關閉繼電器 ........................................................................................ 16 7.4 StimV ........................................................................................................... 17 8 數位測試__________________________________________________ 18 8.1 電路板的腳位定義 ........................................................................................ 18 8.2 針號狀態規格的函式 ..................................................................................... 20 9 數位測試關鍵字 ____________________________________________ 21 TR5001T User Guide – TPG v.1.0.0 i Test Research Inc. 10 數位測試陳述 ______________________________________________ 22 10.1 BLOCK......................................................................................................... 22 10.2 BLOCKSUB ................................................................................................. 24 10.3 DG/DH/DL/DX/DTG...................................................................................... 26 10.4 DT ................................................................................................................ 28 10.5 FAILCLR ...................................................................................................... 29 10.6 FAIL ............................................................................................................. 30 10.7 FL................................................................................................................. 31 10.8 FLAGFAIL .................................................................................................... 32 10.9 FLAGTESTFAIL ........................................................................................... 33 10.10 GPRELAY .................................................................................................... 34 10.11 GPRELAY_ALL ............................................................................................ 36 10.12 FLM.............................................................................................................. 38 10.13 JF40 10.14 JP................................................................................................................. 41 10.15 KDOFF/KDON.............................................................................................. 42 10.16 LDT .............................................................................................................. 43 10.17 LOADTABLE ................................................................................................ 45 10.18 適當的 USETABLE 或 RESULTTABLE 必須要先在 main program 被呼叫過方能使用 LOOP....................................................................................................... 47 10.19 READ/READLN............................................................................................ 49 10.20 RESULTTABLE............................................................................................ 50 10.21 SAVETABLE ................................................................................................ 51 10.22 SG/SH/SL/SX/STG/HS................................................................................. 53 10.23 ST ................................................................................................................ 55 10.24 STT .............................................................................................................. 56 10.25 TABLE.......................................................................................................... 57 10.26 TABLEPTR .................................................................................................. 59 10.27 USETABLE .................................................................................................. 61 11 NON-TEST (UTILITY) KEYWORDS _________________________________ 62 12 應用陳述__________________________________________________ 63 12.1 ACTIVE ........................................................................................................ 63 12.2 ARRCMP ..................................................................................................... 64 12.3 ARRCPY ...................................................................................................... 65 ii TR5001T User Guide – TPG v.1.0.0 Test Research Inc. 12.4 ARRSET ...................................................................................................... 67 12.5 CLOSE......................................................................................................... 67 12.6 COPY_FILE ................................................................................................. 68 12.7 DATE ........................................................................................................... 69 12.8 DISCH.......................................................................................................... 70 12.9 DISPLAY...................................................................................................... 71 12.10 DELETE_FILE.............................................................................................. 74 12.11 EOF ............................................................................................................. 76 12.12 EOLN ........................................................................................................... 77 12.13 EXECUTE .................................................................................................... 78 12.14 FOR-TO-DO................................................................................................. 79 12.15 GET_BARCODE .......................................................................................... 80 12.16 GET_BOARDINFO....................................................................................... 82 12.17 GET_DCL_FILENAME ................................................................................. 87 12.18 GET_FILE_SIZE .......................................................................................... 88 12.19 GET_FIRST_FILE ........................................................................................ 89 12.20 GET_GUID................................................................................................... 91 12.21 GET_MAC.................................................................................................... 92 12.22 GET_NEXT_FILE......................................................................................... 93 12.23 GETKEY ...................................................................................................... 94 12.24 GETHIT........................................................................................................ 96 12.25 GET_TEST_RESULT................................................................................... 97 12.26 GET_TEST_RESULT_Detail ....................................................................... 99 12.27 GOTO .........................................................................................................102 12.28 GOTO-ON...................................................................................................103 12.29 IF-THEN-ELSE............................................................................................104 12.30 MDLY ..........................................................................................................105 12.31 MF...............................................................................................................106 12.32 MV ..............................................................................................................107 12.33 OPEN..........................................................................................................108 12.34 RENAME_FILE ...........................................................................................109 12.35 SEND_GUID ...............................................................................................110 12.36 SEND_MAC ...............................................................................................111 12.37 SetSleep .....................................................................................................112 TR5001T User Guide – TPG v.1.0.0 iii Test Research Inc. 12.38 SPLIT_PATH...............................................................................................113 12.39 STAMP........................................................................................................114 12.40 StimV .........................................................................................................115 12.41 STRCAT......................................................................................................116 12.42 STRCHR .....................................................................................................117 12.43 STRLEN......................................................................................................118 12.44 STRNCPY ...................................................................................................119 12.45 STRPRINT ..................................................................................................120 12.46 STRRCHR ..................................................................................................121 12.47 STRSCAN ...................................................................................................122 12.48 STRSTR......................................................................................................124 12.49 SUBROUTINE.............................................................................................125 12.50 TIME ...........................................................................................................127 12.51 UDLY ..........................................................................................................128 12.52 WHILE-DO ..................................................................................................129 12.53 WRITE/WRITELN .......................................................................................130 12.54 WRITE_STEP .............................................................................................136 13 高速序列程式陳述 _________________________________________ 137 13.2 SPI_INIT .....................................................................................................139 13.3 SPI_RST .....................................................................................................140 13.4 SPI_RW ......................................................................................................141 13.5 Study – ATMEL SPI Flash EEPROM ..........................................................143 13.5.1 13.5.2 Read/Verify/Blank Check............................................................144 檢查狀態暫存器 ..........................................................................146 13.5.3 燒錄 ............................................................................................147 13.5.4 Main Program.............................................................................148 14 功能性儀器的陳述 _________________________________________ 149 15 GPIB 陳述 _______________________________________________ 150 15.1 IBFIND ........................................................................................................150 15.2 IBDEV .........................................................................................................151 15.3 IBONL .........................................................................................................154 15.4 IBWRT ........................................................................................................155 15.5 IBRD ...........................................................................................................156 15.6 IBSTA .........................................................................................................157 16 RS-232 陳述 _____________________________________________ 158 iv TR5001T User Guide – TPG v.1.0.0 Test Research Inc. 16.1 OPENCOM .................................................................................................158 16.2 CLOSECOM ...............................................................................................160 16.3 COMRD ......................................................................................................161 16.4 COMWRT ...................................................................................................162 16.5 SETCOM.....................................................................................................163 16.6 COMSTA.....................................................................................................164 17 錯誤碼 __________________________________________________ 165 17.1 錯誤碼 .........................................................................................................165 TPG 範例 ___________________________________________________ 166 17.2 Read ECID ..................................................................................................166 17.3 TRIParserBarcode TPG ..............................................................................167 18 更新歷史紀錄 _____________________________________________ 168 TR5001T User Guide – TPG v.1.0.0 v Test Research Inc. Figures Figure 1: FLAGTESTFAIL Example.............................................................................33 Figure 2: Table Pointer Diagram..................................................................................59 vi TR5001T User Guide – TPG v.1.0.0 Test Research Inc. 1 簡介 德律 TR5001T tiny in-circuit 測試系統 ,以簡單、快速的測試發展程式和良好的使用者介面設 計,提供客戶高效能、高生產能力和高錯誤覆蓋率的解決方案。 測試系統包含以下三個主要部分: 1. 測試機台: 包含電源供應、控制板、以及提供板子的插槽。 2. 測試板: 不同功能取向的測試板,可執行所需要的測試。 3. 筆電: 包含 TR5001T 測試程式和作為使用者介面的作業軟體。 注意: 隨著 TRI 系統運送而來的電腦跟螢幕,不是由 TRI 本身製造的,可能會 根據運送的時間跟客戶的需求,而有不 同的規格。 在此手冊提到的電腦或是螢幕的規格,都是以最低需求的規格作為參考 這個手冊提供對於在 TR5001T 系統測試的測試程式編輯,相關的指令、參數以及關鍵字 等方面有其深入的介紹。. TR5001T User Guide – TPG v.1.0.0 1 Test Research Inc. 2 高階語言 (TPG) 2.1 概要 TR5001T/5000 系列測試程式類似 C 的高階程式語言。 測試程式可以初步地分為三個部分:  header 部份是由測試電路板零件定義、腳位指定、global 常數定義、以及 global 變數宣告所構成的。.  function 定義部分,是由 table allocation 和使用者定義的函式定義所構成的。  main execution 部份,是由測試語言陳述的序列所構成的。陳述會定義要執行的測試 計畫。在這個部分的開始,才是正式開始進行測試的進入點。 像 C 一樣, 所有測試語言陳述(測試步驟)都是初步地由函式、運算式、和控制流程的命令來組 成的,少部分的差異在於,陳述是分為兩個類型: 數位測試陳述和應用陳述。 數位測試陳述,是由形成數位測試 pattern 的針號狀態規格函式、特定測試的 loop 和 branch 命令、和用來辨別檔案型態的檔案旗幟函式,互斥地構成的。否則,陳述就是用在測試錯誤的 檢驗、測試資料的處理、和測試計劃的控制…等方面的應用。 函式將帶有困難功能的大型工作,拆成更小、更方便處理的任務。因此,讓整個程式變得清 晰,而且減緩了需要作更改時的痛苦。函式是由數位測試步驟的序列來組成的,是一個測試區 塊或者副區塊,而且只能在 Main 程式,或者測試區塊底下被呼叫。 應用函式執行有別於數位測試的運算,是一個副函式而且可以在其他的副函式或 Main 程式 底下被呼叫。TR5001T/TR5000 系列測試語言也提供標準函式,像是針號狀態規格函式、 錯誤檢驗函式、table data 處理函式、檔案存取函式…等等。 來執行數位測試 pattern、在程式設計師定義的測試區塊底下,處理測試資料和結果、 和應用上的次函式。 .. 2.2 術語 在語法的敘述上,下列的術語都是被用來表示特定的語法意義:  所有粗體形式的詞,都是保留在測試語言之中的。  用左邊和右邊的方括弧圍起的語法項目,可能是被省略或者只被包含過一次。  用斜線限定的所有語法項目,可以被應用在相關的語法。  將句子用<和>圍起來的語法項目,是語法上相同的陳述列表。  連字符號的詞來組成的語法項目,是終止的符號。 終止符號可以是識別字、常數數值或者字母。  在語法陳述上,所有以上沒有列到的符號,都被限定在測試語言裡面使用。  測試語言是不分大小寫的。 2 TR5001T User Guide – TPG v.1.0.0 Test Research Inc. 3 測試程式架構 測試程式的構成要件,陳述如下:  PROGRAM 程式名稱;  [ PART 零件名稱; ]  [ INPUT / OUTPUT / BIDIR <腳位指定列表> ]  [ GROUP <群組腳位指定列> ]  [ CONST <常數定數列表> ]  [ VAR <變數宣告列表 > ]  [ ]  [ <數位測試區塊宣告和定義列表> ]  [ <非測試的函式宣告和定義列表> ]  MAIN  <陳述列表 >  END . 3.1 識別字 識別字是不論長度、有著字母和數字的序列。第一個字元必須是字母,而且底部劃線_也算是 一個字母。例如,識別字沒有大小寫的差別,[INTVAL]和[InVal]都是相同的識別字。 測試程式保留下面的識別字成為關鍵字,有其特別的用途,不能移作它用。. 3.1.1 關鍵字 BIDIR BOM DLY END FLOAT G3 GROUP INPUT LLIM MAIN ON RPT TEXTFILE WHILE BINARYFILE BYTE DO EXPECT FOR G4 HIN INTEGER LON MEAS OUTPUT SUBROUTINE THEN BLOCK CHAR DOWNTO FL G1 G5 HLIM JF LOOP MODE PART TABLE TO BLOCKSUB CONST ELSE FLM G2 GOTO IF JP LPT OFFSET PROGRAM TABLEPTR VAR TR5001T User Guide – TPG v.1.0.0 3 Test Research Inc. 3.1.2 標準函式 測試語言也保留下面的識別字當作標準函式(函式是以其他的高階語言取代測試程式寫成, 並且嵌入在 TR5001T/5000 系統裡面),而且必須不能夠作為其他用途使用。 ACTIVE CLOSE COMWRT DISCH DX FLAGTESTFAIL GETKEY IBONL IBSTA KDON MD ML OPEN RESULTTABLE SEND_MAC SL SPI_RW STRNCPY SX WRITE ARRCMP CLOSECOM DATE DL FAIL GET_BARCODE HS IBRD IBTMO LOADBYTE MDLY MQ OPENCOM SAVEBYTE SETCOM SPI_CONFIG STRCAT STRRCHR TIME WRITELN ARRCPY COMRD DG DLYMS FAILCLR GET_GUID IBDEV IBSIC IBWRT LOADTABLE MF MR READ SAVETABLE SG SPI_INIT STRCHR STRSCAN UDLY ARRSET COMSTA DH DLYUS FLAGFAIL GET_MAC IBFIND IBSRE KDOFF MC MJ MV READLN SEND_GUID SH SPI_RST STRLEN STRSTR USETABLE 使用者定義的識別字,必須是除了關鍵字和標準函式以外的識別字。. 4 TR5001T User Guide – TPG v.1.0.0 Test Research Inc. 3.2 資料類型 資料語言支援三種類別的資料類型, 他們分別是純量、陣列和檔案類型,在下面會再一一說明: 3.2.1 純量 Scalar Type CHAR Description 有正負號的位元組,通常用來保留在字元組之中的字元。 BYTE INTEGER DWORD FLOAT 沒有正負號的位元組。 有正負號的整數。 尺寸為 4 個位元組、沒有正負號的整數。 有正負號的浮點數。 3.2.2 陣列 陣列類型是由純量類型的名稱,後面接著左邊跟右邊的方括弧,在其中指定著陣列尺寸。 以這樣的方式來組成的。例如: Interger[10],是 SIZE 為 10 的整數陣列。 字串是字元陣列構成的,例如: CHAR[10],就是一個字元陣列、可以保留多達 10 個字元的字 串。.陣列的第一個元素座落在索引值 1。 陣列的索引值,可以是任何整數的運算式,包括整數變數和整數常數。 存取陣列元素的是陣列的識別字,後面緊接著左邊和右邊的方括弧, 在其中評估某個特定的索引值。 例如: S 是有 12 個字元的陣列,被指定一個字串‖hello world‖, 指向 S[1]之後,可以得到‘h‘的字元,S[2]之後,可以得到[e]的字元, S[3]之後,可以得到[l[的字元,以此類推。 檔案 檔案是來源或目的資料串流,跟硬碟或週邊設置有關。 測試語言提供兩個特定的資料類型,用來紀錄各種需要用來控制串流的資訊。 File Type TEXTFILE BINARYFILE Description 文字串流,包含可列印的 ASCII 字元的序列。 序列包括新的斜線字元跟 end-of-file 的字元。 二進位串流,包含列位元組的序列,他們是被儲存在記憶體的資 料。 TR5001T User Guide – TPG v.1.0.0 5 Test Research Inc. 3.3 常數 整數常數像是 8001,是一個整數。 整數的數值可以被指定為二進位或十六進位,來取代十進位。 整數常數若有 0B 或 0b 時,代表的是二進位;有 OH 或 oh 時代表的是十六進位。 例如: 8001 可以寫成 0B111101000001 或 ob111101000001 的二進位數值, 也能寫成 0H1F41 或 oh1F41 的十六進位數值。 浮點數常數像 8001.1,是一個浮點數。. 字元常數就是一個以單引號寫成的字元,像是‘T‘。 字元常數的値,在機器的字元組之中是數字值。例如,在 SCII 字元組裡面, 字元常數‘8‘的値是 56,跟數字 8 並沒有任何關係。 因此,字元常數也被當成是整數,而且可以參與任何有關整數的運算。 例如: CH=INT +‘0‘,轉換數字值 0~9 成為字元常數 ‗0‘~‘9‘。 字串常數,或字母字串,是用雙括號圍著一個以上的字元的序列,像是‖TR5001 ICT‖。 雙括號並非是字串的一部份,但是只是用來劃定它的範圍。 斜線\‘ 在字串之中,代表的是單括號的字元。 例如: 字串常數 ‗\‘TR5001T\‘ICT‘,會輸出成為‘TR5001T‘ICT 常數都是用關鍵字 CONST 來作定義的,在此之後會有常數數值指定的列表, 如下面的格式所示: . CONST Field  Example: CONST FILENAME=‘test.out‘; STARTADDR=0H1000; Description 指定陳述的列表,陳述是以分號來限定範圍。 6 TR5001T User Guide – TPG v.1.0.0 Test Research Inc. 3.4 變數 變數是使用者定義的識別字,而且必須在使用之前被宣告。 宣告時要具體指定類型,和包含一個或一個以上相同類型變數的列表, 如下面顯示的格式。 VAR Field Description 宣告列表,是由變數識別字列表,接著是逗號、然後 是資料類型,最後以分號來作分隔。  例如: VAR LOWER,UPPER,STEP:INTEGER; C:CHAR; LINE:CHAR[1000]; TR5001T User Guide – TPG v.1.0.0 7 Test Research Inc. 4 運算子 4.1 算數運算子 二元算數運算子,如下所示: + 加 - 減 * 乘 / 除 % 模數 整數的除法會截去分數的部份。模數運算子不能夠運用在浮點數運算上。 加法跟減法運算子有相同的優先權,但是低於乘法、除法以及模數的優先權, 不過負號運算子跟上述的運算子相比較,有著更高的優先權。. 4.2 關係和邏輯運算子 關係運算子,如下列所示: > 大於  >= 大於或等於 < 小於  <= 小於或等於 以上的運算子彼此擁有相同的優先權,不過跟相等性運算子相較之下,有較高的優先權。 = equal to  <> not equal to 跟算數運算子相較之下,關係運算子有較低的優先權,因此像是 1‘ ‘ THEN STR[I]=C; 式子這個 I<=LIM 必須先被測試 ,假如測試失敗的話,下一個運算式 C<>‘ ‗會停止測試。 8 TR5001T User Guide – TPG v.1.0.0 Test Research Inc. 定義上來說,假如關係是 True 的話,關係和邏輯運算式的數值會是 1;另一方面,倘若關係 是 false 的話,關係和邏輯運算式的數值會是 0。通常,這樣的運算式也被稱為布林運算式。 單元負號運算子!,邏輯上會將布林運算式的結果反相, 也就是說,將非零的運算元反相成 0;將零的運算元反相成 1。 位元運算子,如下表示: & 位元 AND | 位元 OR ^ 位元 互斥 OR (XOR)  << 左移 ~ b 位元 NOT (1‘s complement) 位元運算元提供的是位元等級的運算,而且只能運用在整數的運算元上, 也就是說,CHAR、BYTE 和 INTEGER。 INTEGER  下列的例子是提取一個位元組中上、下各四個位元來作使用。. VAR BYTEVAL:BYTE; BYTESTR:CHAR[2]; SUBROUTINE EXTRACT; { BYTESTR[1]=(BYTEVAL>>4)+‘0‘; BYTESTR[2]=(BYTEVAL&0H0F)+‘0‘; }; 在執行 SUBROUTNE EXTRACT 運算式之後, BYTEVAL 會是十六位元數值的 AA,BYTESTRING 會是字串的‘AA‘。 4.3 指定運算子 指定運算子是=,這個符號跟相等性運算子相同,不過卻是完全不一樣的運算。 指定運算子右邊的運算式會先被計算,然後這個結果的數值會取代, 原先位於運算子左邊的變數的數值。 例如: I = I +1 ,原本的 I 的値如果是 1 的話,在計算過這個運算式之後, I 的數值便會變成為 2。. TR5001T User Guide – TPG v.1.0.0 9 Test Research Inc. 5 運算式 運算上的式子是以一張運算元的清單用運算子連接之後, 根據優先順序以及運算元的組合規則,來加以計算出最後的數值。 由於都是純量的運算子的緣故,在關係運算式之中,只有擁有純量資料型態的變數, 才能算是有效的運算元。 一個簡單的運算式子,只需要有單一個運算元,不用任何的運算子, 像是常數、字串的字母、識別字,全部都是基本的運算式。基本運算式的資料類型跟相連的 運算元類型會是相同的。 有括號的運算式是用左邊和右邊的括號將運算式圍住,在計算的時候擁有著最高的優先權。 例如: 運算式 C =A+B*3 ,倘若 A 是 1、B 是 2 的話,C 便會等於 7; 不過,在運算式 C=(A+B)*3,因為括號比起乘法擁更高的優先權,所以 C 便會等於 9。 運算式在經過計算之後,所獲得的數值的資料類型,取決於相關的運算子的資料類型。 當運算子有不同資料類型的運算元時,必須先將運算元的資料類型轉換成相同的類型才行。 類型轉換時,請遵從以下所列出的規則: .  純量類型、陣列類型、和檔案類型,彼此無法互相轉換。  整數、位元組和字元可以自由地轉換。  只有整數可以轉換成浮點數。  浮點數不能轉換成整數、位元組以及字元。 函式呼叫是運算式呼叫由 SUBROUTINE、BLOCK 或 BLOCKSUB 所指定的程式。 這樣的運算式會有單一的運算元,不會有回傳任何數值。 10 TR5001T User Guide – TPG v.1.0.0 Test Research Inc. 6 陳述 運算式像是 X = 100 、 I = I +1 或 PRINTRESULT , 倘若有分號跟隨在其後時,就變成是一個陳述。 例如: X=100; I=I+1; PRINTRESULT; 在測試語言之中,分號是用來作為陳述的終止。 大括號{ 和 }是用來將複數的陳述聚集在一起,變成是一個複合陳述, 在語法上等同於單一陳述。 當數個陳述因為條件成立而必須被執行時,在 IF、 THEN、ELSE、FOR TO DO 、WHILE DO 之後圍繞這些陳述的大括號,就是個明顯的例子。 TR5001T User Guide – TPG v.1.0.0 11 Test Research Inc. 7 類比測試 測試程式實行這些陳述,來作類比元件的測量跟測試。 Test Language MR MC ML MJ MD MQ Analog Measurement Functions 電阻 (ohms) 電容 (farads) 電感 (Henries) 跳線 (open/short) 二極體 (volts) 電晶體 (volts) 除了類比測試陳述用來控制測試裝置之外,測試語言也包含能讓使用者客製化測試程式的陳 述。這些測試陳述,包括了流程控制和資料處理方面的陳述;詳細的資料可參考使用手冊—應 用。 在零件測試步驟之中,類比測試可以用互斥的方式來進行執行。 7.1 類比測試陳述 MR/MC/ML/MJ/MD/MQ  Type: 測試類型  Description: 使用 MR, MC, ML, MJ, MD, 和 MQ 的陳述, 建立類比裝置,來作類比零件量測、儲存測試結果到使用者定義的變數上, 和測試違反極限值的結果。請參考類比測試理論,來獲得有關於類比裝置資 源和類比測試演算法的詳細資料。.  Syntax: [ pass-fail = ] MR/MC/ML/MJ/MD/MQ ( ) ; 12 TR5001T User Guide – TPG v.1.0.0 Field pass-fail Test Research Inc. Description 非必要的。整數變數用來儲存測試結果。. 假如偵測到的是錯誤,變數 pass-fail 會被設定為 1, 假如測試 Pass,變數就會被設定為 0。 參數值指定列表,參數是以逗點來限定界線,參考下列格式: parameter-identifier = parameter-value , 允許的參數識別字如下: PART, BOM, EXPECT, OFFSET, HLIM, LLIM, MODE, HIN, LON, DLY, G1, G2, G3, G4, G5, RPT, 和 MEAS。PART, EXPECT, MODE, HIN, 和 LON 是所有類型的陳述 都需要的。 在 MD 和 MQ 的陳述時,BOM 是需要的。 其他的所有參都是非必要的。 Identifier PART EXPECT BOM OFFSET HLIM/LLIM MODE HIN/LON DLY G1/G2/G3/G4/G5 RPT MEAS Value 字母字串,代表列在零件測試步驟或者 在 PINS.ASC 檔裡的裝置名稱。 字母字串,代表量測的期望值。 代表列在 BOM 表內的零件數值 非必要的。浮點數,代表來自於測量值的 補償値。預設值是 0。. 非必要的。整數,以百分比為表示的測量 值的容許値。預設值為-1 時,表示不設限 制。 指定整數來應用特定類比的裝置到電路板 上。 整數,代表電路板上訊號來源跟去向的針 號。 非必要的。整數,代表在開始測量之前的 延遲時間。最大值為 500ms, 預設值是 0。 非必要的代表補償針號的整數。 預設值為 0。 非必要的。整數,代表重測次數的最大 值,假如電路板測試不良的情況之下。 非必要的。這個參數所指定的浮點變數, 測試結果會被儲存其中。  例如: MR(PART='R1',EXPECT='4',HLIM=8,LLIM=8,MODE=0,HIN=2,LON=1); TR5001T User Guide – TPG v.1.0.0 13 Test Research Inc. MR(PART='R3',EXPECT='100K',HLIM=3,LLIM=3,MODE=1,HIN=14,LON=1); MC(PART='C5',EXPECT='10n',HLIM=8,LLIM=8,MODE=2,HIN=28,LON=29, DLY=4); MD(PART='ZD1',BOM='0.7V',EXPECT='0.75V',HLIM=10,LLIM=10,MODE=0,HIN=49,LON=48); MQ(PART='Q1-BCE',BOM='1.5V',EXPECT='0.095V',HLIM=10,MODE=3, HIN=52,LON=53,G1=48); 14 TR5001T User Guide – TPG v.1.0.0 7.2 AnalogReset  類型: 標準函式  敘述: 重置測試的 MeasBus 訊號來源,參考下列的語法。  語法: AnalogReset();  例如: VAR V:FLOAT; MAIN // Analog StimV from ATM V=StimV(3.3,0,0.05,1,2,3,4,5,6,‘G‘,100); WRITELN(LPT, 'Voltage MEASURED=',V,'V'); AnalogReset(); END. Test Research Inc. TR5001T User Guide – TPG v.1.0.0 15 Test Research Inc. 7.3 開啟、關閉繼電器  類型: 標準函式  敘述: 將繼電器 A、B 或 G,設置在 ON 或 OFF 的狀態, 參考下面的語法。  語法: SetRelayOnOff (CMD,nail,dly) ; Field Description CMD 類比匯流排指令如下: : A_ON、A_OFF、B_ON、B_OFF、G_ON、G_OFF. A_ON : Relay A 開啟 A_OFF: Relay A 關閉. B_ON : Relay B 開啟 B_OFF: Relay B 關閉 G_ON : Relay G 開啟. G_OFF: Relay G 關閉. nail 正整數,代表連接到腳位的資源數值 dly 0~1000ms  例如: VAR V:FLOAT; MAIN // Analog StimV from ATM V=StimV(3.3,0,0.05,1,2,3,4,5,6,‘G‘,100); WRITELN(LPT, 'Voltage MEASURED=',V,'V'); AnalogReset(); SetRelayOnOff(G_OFF,1,0) END. Set G Relay of Nail 1 to OFF status. 16 TR5001T User Guide – TPG v.1.0.0 Test Research Inc. 7.4 StimV  類型: 標準函式  敘述: 驅動電壓輸出到指派的針號,參考下面的語法:.  語法: StimV ( drive-voltage, source-mode, current-limiter, delay-ms, measBus , pin1, pin2, pin3, pin4, pin5, pin6) ; Field drive-voltage source-mode current-limiter delay measBus pin1, pin2, pin3, pin4, pin5, pin6 Description 浮點數,代表驅動電壓。 0 : CVS1 1 : CVS2 0~0.12A 0~1000ms 字母字元或常數,代表用來連接測試針號到類比電壓 計。類比匯流排有 ‗A‘、‘B‘和‘G‘。 針號由 INPUT、OUTPUT 或 BIDIR 表明的腳位名稱, 代表測量底下的腳位。  例如: VAR V:FLOAT; MAIN // Analog StimV from ATM V=StimV(3.3,0,0.05,100,‘G‘,1,2,3,4,5,6,); END. Drive Nail 1,2,3,4,5 and 6 to 3.3V@0.05A after delay 100ms. TR5001T User Guide – TPG v.1.0.0 17 Test Research Inc. 8 數位測試 8.1 電路板的腳位定義 用來測試 IC 的測試語言程式應該會涉及一個以上的 IC 的腳位。 藉由下面格式的腳位規格列表,讓這樣的涉及變成了可能: pin-type-designator Field pin-typedesignator Description 用來定義 IC 腳位類型的三個關鍵字: INPUT, OUTPUT, and BIDIR. 腳位列表到針號,或腳位到測試針號指派的運算式,運算式是以分號限 定界線,參考下面的語法。 pin-name = test-nail / pin-number ;  例如 pin-name test-nail pin-number 使用者定義的識別字。 所有腳位必須只跟唯一一個名稱有關 連。 正整數,代表連接到探針的數位資源 的數值。 字母字串,代表腳位。 INPUT WE=‘A1‘; OE=‘B1‘; CE=‘C1‘; ........ OUTPUT STAT=1130; ........ BIDIR D0=‘A3‘; D1=‘11‘; // 11 is a pin number instead of a test nail ........ 18 TR5001T User Guide – TPG v.1.0.0 Test Research Inc. 用相同類型的群組腳位,使得測試程式的編寫更為容易,而且改善了程式的可讀性, 特別是在匯流排針號的部份。測試語言支援群組定義的語法,如下所示::  GROUP: Field Description 針號列表到群組指定的運算式,運算式是以用分號作限定界 線,參考下列格式: group-name = ( ) ; group-name 使用者定義的識別字。 所有的群組都只跟唯一一個名稱有關聯。 已定義的腳位名稱列表,腳位名稱以逗號限 定界線。從左到右排列的腳位,相對於位元 序列則是從 MSB 到 LSB。  例如: GROUP DATABUS=(D7,D6,D5,D4,D3,D2,D1,D0); ADBUS=(FWH3,FWH2,FWH1,FWH0); Note that the maximum number of pins contained in a group is 32. TR5001T User Guide – TPG v.1.0.0 19 Test Research Inc. 8.2 針號狀態規格的函式 下面列出的針號狀態的函式,是用在 BLOCK/BLOCKSUN 之中,去指定 具有 drive/sense 和邏輯狀態的針號。 DH DL DX DG SH SL SX SG HS STG 對於 DH/DL/SH/SL/HS 的有效參數,可以是腳位名稱或針號名稱,或者兩者皆是。 對於 DG/SG 唯一可使用的參數,是由 GROUP 表明的群組名稱。 DX/SX 可以將以上所提的,都設定為參數。 使用星號(*)當作一個獨特的參數,表示指定的所有針號當作參數。 逗號是用來分隔個別參數而使用的。 以上詳細指明針號狀態的命令,都被敘述在下面的表格之中: Drive States DH Drive High DL Drive Low DX Drive Don‘t Care DG Drive Group Sense States SH Sense High SL Sense Low SX Sense Don‘t Care SG Sense Group STG Sense Toggle Group HS Hold Sense 啟動 driver,而且讓針號處在 High 的狀態。 啟動 driver ,而且讓針號處在 Low 的狀態。 關掉 driver、並且讓它處在高阻抗的狀態。 啟動群組的 driver,而且讓有關的針號處在 指定的狀態。 啟動 sensor,而且預期針號狀態會被感應為 high。 啟動 sensor,而且預期針號狀態會被感應為 low。 忽略這些感應的狀態。 啟動群組的 sensor,而且預期針號狀態會感應到指 定的狀態。 啟動群駔的 sensor,而且預期針號狀態會感應到, 最後測試步驟的 toggle 狀態。 指定 incremental sense。 20 TR5001T User Guide – TPG v.1.0.0 Test Research Inc. 9 數位測試關鍵字 下面列出的關鍵字,定義客製化的使用者數位測試 block/subblock。 對 block/subblock 的實行(數位測試陳述的序列) 是以左邊跟右邊的大括號來限定界線。 下面的相關定義會在往後的手冊裡提供  BLOCK  BLOCKSUB 接下來的關鍵字是用來配置二進位資料的部份,並且對應它到一組具有指定 drive/sense 狀態 的針號。  TABLE 使用下面的關鍵字來宣告 pointer 到 table 上。 用 Pointer 參考不同部分的 table 來降低 table count。 .  TABLEPTR 控制流程的指令是由下面的關鍵字所表明的,是被互斥地使用在 BLOCK/BLOCKSUB 裡面, 可以用來指定數位測試程式步驟的執行順序。  JP  JF  FL  FLM  LOOP 這些關鍵字的限制條件,顯示如下:  只有在 BLOCK or BLOCKSUB 之內,BLOCKSUB 才會被呼叫。  TABLE/TABLEPTR 可以只在 BLOCK 裡面被參考。  BLOCK 只在 Main 程式之中被呼叫。 TR5001T User Guide – TPG v.1.0.0 21 Test Research Inc. 10 數位測試陳述 10.1 BLOCK  類型: 關鍵字  敘述: BLOCK 關鍵字定義和執行一部分或全部的數位測試。 任何有效的數位測試陳述在 BLOCK 之內,是以左邊和右邊的大括弧來限定界線, 而且定義每個有著 driver/sensor 資源的測試步驟。 在 Block 之內跟跨越不同的 Block 時,針號的 drive 狀態都是累加的。 針號的 sense 狀態是表示‘Don‘t Care‘的狀態,除非他們有特別在陳述之中被提到, 像是 SH/SL/SG。  語法: BLOCK label ( ) ; { }; Field label Description Block 的使用者定義的識別字,所有的 block 都應該只跟唯一一個名稱有 關聯。 由任何有效的測試命令關鍵字所組成,包含由 TABLE/TABLEPTR 表明 的 Pointer 和由 BLOCKSUN 表明的副函式呼叫。  例如: TABLE ADDRTAB : 0H20000; { DH(AD17,AD16,. . .,AD2); }; TABLE DATATAB : 0H80000; { DH(D31,D30,. . .,AD17,AD16,. . .,D0); }; TABLEPTR BANK1 = DATATAB; ........ BLOCKSUB INIT(); { DL(*); ........ }; BLOCK PROGRAMMING(); 22 TR5001T User Guide – TPG v.1.0.0 { INIT(); // call to sub-block and execute the test // enable bank1 and bank2 DH(F1TST,F2TST); FL 2048 { ADDRTAB+; // reference the table DH(F1ALE,F2ALE,PROG,XE); DL(F1ALE,F2ALE); DX(ADDRBUS); ........ BANK1+; // reference the table DH(F1DLE); DL(F1DLE); ........ DX(DATABUS); DH(YE);;;;;;;;;;;; // delay to program the data ........ DL(YE); DL(PROG,XE); ........ }; // disable bank1 and bank2 DL(F1TST,F2TST); }; ........ MAIN ........ PROGRAMMING(); // call to block and execute the test ........ END. Test Research Inc. TR5001T User Guide – TPG v.1.0.0 23 Test Research Inc. 10.2 BLOCKSUB  類型: 關鍵字  敘述: BLOCKSUB 關鍵字定義和執行一部份的數位測試,能夠共用在不同的 BLOCK 上。 任何有效的數位測試陳述在 BLOCK 之內,是以左邊和右邊的大括弧來限定界線 而且定義每個有著 driver/sensor 資源的測試步驟。 在 Block 之內跟跨越不同的 Block 時,針號的 drive 狀態是累加的。 針號的 sense 狀態是表示‘忽略‘的狀態,除非他們有特別在陳述之中被提到, 像是 SH/SL/SG/HG。在 BLOCKSUB 裡,呼叫到 block 和參考 table 是不被允許 的。 傳遞參數到 SUB-BLOCK 是被允許的。傳遞到引數的實際參數,必須是整數或常 數。引數指定到腳位或 GROUP 的語法,如同下面所定義的: DG / SG ( pin-name/group-name = argument-name [< bit-number >] ) ;  pin-name/group-name: 由 INPUT、OUTPUT、和 BIDIR 表明腳位名稱, 或者由 GROUP 表明 Group 名稱。  argument-name: 被宣告成引數的名稱,來給 sub-block 使用。  bit-number: 非必要的。整數,代表在引數的實際數值之中的 nth 位元。. 再者, 在 sub-block 裡,loop count 和 fail flag 也可以當成引數 。  語法: BLOCKSUB label ( [] ) ; { }; Field label Description 使用者定義的識別字,來給 sub-block 作使用。 所有的 sub-block 都應該只跟唯一一個名稱有關聯。 非必要的。.使用者定義的識別字列表,以逗號的方式來限 定界線。它不需要去宣告引數的資料類型,但是資料類型必 須是整數。 由任何引數指定和有效的測試指令關鍵字所構成,由 TABLE/TABLEPTR 表明的 table aceess pointer 和 BLOCK 表明的副函式呼叫則排除在外。 24 TR5001T User Guide – TPG v.1.0.0  Example: INPUT SCK=‘1‘; ...... OUTPUT SO=‘3‘; ...... CONST STATUSFLAG=100; BLOCKSUB CHKBYTE(B,F); { DL(SCK) SG(SO=B<7>) FLAGFAIL(F); DH(SCK); DL(SCK) SG(SO=B<6>) FLAGFAIL(F); DH(SCK); DL(SCK) SG(SO=B<5>) FLAGFAIL(F); DH(SCK); DL(SCK) SG(SO=B<4>) FLAGFAIL(F); DH(SCK); DL(SCK) SG(SO=B<3>) FLAGFAIL(F); DH(SCK); DL(SCK) SG(SO=B<2>) FLAGFAIL(F); DH(SCK); DL(SCK) SG(SO=B<1>) FLAGFAIL(F); DH(SCK); DL(SCK) SG(SO=B<0>) FLAGFAIL(F); DH(SCK); }; BLOCK CHKSTATUS(); { FLM 10000 CHKBYTE(0B00000001,STATUSFLAG); }; Test Research Inc. TR5001T User Guide – TPG v.1.0.0 25 Test Research Inc. 10.3 DG/DH/DL/DX/DTG  類型: 標準函式  敘述: 使用這些函式來形成數位驅動測試的陳述,接著會轉變成數位測試步驟, 測試步驟之間以分號的方式來作分隔。 在陳述列表裡,個別的分號代表測試步驟跟前一個步驟之間的區隔。使用星號當作 DH/DL/DX/DTG 的參數時,會指定狀態,給所有由 INPUT 和 BIDIR 表明的針號。  語法: DH / DL / DX / DTG ( ) … ; DG ( group_name = value , … ) … ; Field Description 由 INPUT、OUTPUT、BIDIR 或針號表明的腳位名稱。 個別的參數,使用逗號來限定界線。由 GROUP 表明的 GROUP 名稱,只有在 DX 的時候,才能使用;將星號的使用當 成是唯一獨特的參數。 group_name value 由 GROUP 表明的使用者定義的識別字。 由 CONST 表明的正整數或整數參數, 代表邏輯狀態。X 的意思是針號處於 don‘t care 的 drive state 。  例如: INPUT CTRL=1234; ........ OUTPUT STAT=1024; ........ BIDIR D3=1111; D2=1112; D1=1113; D0=1114; ........ GROUP DBUS=(D3,D2,D1,D0); ........ BLOCK TEST; { DH(*); /* 26 TR5001T User Guide – TPG v.1.0.0 Test Research Inc. drive all pins designated by INPUT and BIDIR to high, that is, nail 1234 and nails 1111~1114 are driven high */ DL(CTRL);;;; /* the pin CTRL is driven low and keeps driving low on the next three steps */ DG(DBUS=0HA); /* the states of D3~D0 are driven high low high low (1010) */ DG(DBUS=0BXX01); DX(DBUS); // drive D3~D0 to high-impedance // that is, to turn off the drivers D3~D0 DTG(CTRL); // The CTRL is driven to High due to pre state // is Low DTG(CTRL); // The CTRL is driven to Low due to pre state // is High ........ }; The nail states through the block execution are shown as follows: Nail State Test Step Step 1 Step 2 Step 3 Step 4 Step 5 Step 6 Step 7 Step 8 Step 9 Step 10 NAIL NUMBER 1234 1111 1112 1 1 1 0 1 1 0 1 1 0 1 1 0 1 1 0 1 0 0 1 0 0 X X 1 X X 0 X X 1113 1 1 1 1 1 1 0 X X X 1114 1 1 1 1 1 0 1 X X X 1024 X X X X X X X X X X  Note: 1 s 代表 driving high, 0 代表 driving low, X 代表 turning off the driver 或者 忽略其結 果。 TR5001T User Guide – TPG v.1.0.0 27 Test Research Inc. 10.4 DT  類型: 標準函式  敘述: DT 函式 載入,由 TABLE/TABLEPTR 表明的 table pointer 到第一個測試步 驟,也允許載入 table pointer 到其他指定的測試步驟,只需要從第一個測 試步驟來作補償。使用 DT 陳述,伴隨著 table reference 陳敘, 來執行在 TABLE 之中的測試步驟。  語法: DT ( table-name [ , step-offset] ) ; Field Description table-name 由 TABLE/TABLEPTR 表明使用者定義的識別字。 step-offset 選配的識別字。用 CONST 表明的正整數或整數常數, 代表測試步驟的補償值。  例如: TABLE DATATAB : 0H40000; { SH(D8,D7,D6,D5,D4,D3,D2,D1,D0); }; ........ MAIN ........ ST(DATATAB); ........ DT(DATATAB,‘outdata.bin‘); ........ END. 28 TR5001T User Guide – TPG v.1.0.0 Test Research Inc. 10.5 FAILCLR  類型: 標準函式  敘述: 使用 FAILCLR 函式來清除所有或指定的錯誤旗幟,在 BLCOK 之內這些錯誤旗幟 是由 FLAGFAIL 所設定的 。遍佈整個測試程式,所有的錯誤旗幟被當成是 FLAGFFAIL 函式參 數,在 Main 表明的 Main test 開始之前, 就會因為初始化而自動清除掉。.  語法: FAILCLR ( ) ; FAILCLR ( ) ; Field Description 正整數和整數常數列表,代表錯誤的旗幟。 個別的參數之間是以逗號來限定界線。  例如: MAIN FAILCLR(); ........ IF FAIL(101) THEN { FAILCLR(101); ........ }; ........ END. TR5001T User Guide – TPG v.1.0.0 29 Test Research Inc. 10.6 FAIL  類型: 標準函式  敘述: 使用 FAIL 函式,來回傳 numbered flag 的 pass/fail 狀態。 1 代表 pass 狀態; 0 代表 fail 狀態。  語法: FAIL ( n ) Field n Description 由 CONSTA 表明的正整數或整數常數。 系統錯誤旗幟的預設值是 0。  例如: MAIN ........ IF FAIL(102) THEN { WRITELN(LPT,‘CHECK ID FAILED‘); FLAGTESTFAIL(PROGRAMFAIL); }; ........ END. 30 TR5001T User Guide – TPG v.1.0.0 Test Research Inc. 10.7 FL  類型: 關鍵字  敘述: 在 BLOCK/BLOCKSUB 之中,FL 關鍵字提供迴圈的功能。 重複測試的陳述序列,是以方括弧來限定界線; 迴圈的次數,表示的是迴圈會被執行的最大次數; Other 的離開條件,在 FL 裡意指的是‖ exit if failed‖, 只要任何在序列之中的陳述測試錯誤,在迴圈的底部會決定成是錯誤的狀態。  語法: FL count { }; Field count Description 由 CONST 表明的正整數或整數常數。 以有效的關鍵字為基礎的測試陳述。  例如: BLOCK TEST(); { ........ FL 100 { ........ DH(CLK); SL(SO) FLAGFAIL(101); /* the fail flag 101 is set as SO is sensed high and the loop stops iterating at the end of the current execution. */ DL(CLK); ........ }; ........ }; TR5001T User Guide – TPG v.1.0.0 31 Test Research Inc. 10.8 FLAGFAIL  類型: 標準函式  敘述: 當相關的數位測試陳述錯誤時,FLAGFAIL 函式設立相對應的 n 個旗標。 在 BLCOK 之內,FLAGFAIL 可以附加在任何個別的測試陳述裡,當執行測試數位測 試步驟時,當 BLOCK 測試結束時,檢驗這些旗幟狀態,就能知道哪些測試步驟是 錯誤的。  語法: FLAGFAIL ( n ) ; Field n Description 由 CONSTA 表明的正整數或整數常數。 系統錯誤旗幟的預設值是 0。  例如 TABLE RDDATATAB : 0H80000 { SH(D8,D7,D6,D5,D4,D3,D2,D1,D0); }; BLOCK TEST(); { ........ SL(STAT) FLAGFAIL(102); ........ RDDATATAB+ FLAGFAIL(103); ........ }; MAIN ........ USETABLE(RDDATATAB); TEST(); // execute the block IF FAIL(103) THEN { WRITELN(‘VERIFY FAILED‘); ........ } ........ END. 32 TR5001T User Guide – TPG v.1.0.0 Test Research Inc. 10.9 FLAGTESTFAIL  類型: 標準函式  敘述: FLAGTESTFAIL 函式 ,不需要任何硬體測量,能會讓測試陳述錯誤; 如果沒有 FLAGTESTFAIL 的話,這裡就沒有辦法設定錯誤的條件,用來評估每 個變數。  語法: FLAGTESTFAIL ( ) ;  例如 MAIN ........ IF FAIL(100) THEN FLAGTESTFAIL(); ........ END. The test step shown below is the result after executing the IF statement. Figure 1: FLAGTESTFAIL Example TR5001T User Guide – TPG v.1.0.0 33 Test Research Inc. 10.10 GPRELAY  類型: 關鍵字  敘述: 控制 GPRELAY Board. maxPort 1-16 for C 或 maxPort 1-40 for A/B.  語法: GPRELAY (CNTL=on_off, RLY=measBus, PORT=PortNo) ; Field on_off measBus Description CNTL='ON' : 啟動 GPRELAY CNTL='OFF' : 關閉 GPRELAY 代表類比匯流排的字串字母或常數, 會用來連接跟電壓表有關聯的測試針號。 類比匯流排有‘A‘,‘B‘,和‘C‘。 PortNo 正整數,代表連接到腳位上的資源數量。 34 TR5001T User Guide – TPG v.1.0.0  例如: ……. MAIN ……. GPRELAY(CNTL='ON',RLY='A',PORT='1,2,4-6'); ……. END. Test Research Inc. TR5001T User Guide – TPG v.1.0.0 35 Test Research Inc. 10.11 GPRELAY_ALL  類型: 關鍵字  敘述: 控制 GPRELAY Board  語法: GPRELAY_ALL (CNTL=on_off) ; Field on_off Description CNTL='ON' : 啟動 GPRELAY CNTL='OFF' : 關閉 GPRELAY 36 TR5001T User Guide – TPG v.1.0.0  例如: ……. MAIN ……. GPRELAY_ALL(CNTL='OFF'); ……. END. Test Research Inc. TR5001T User Guide – TPG v.1.0.0 37 Test Research Inc. 10.12 FLM  類型: 關鍵字  敘述: 在 BLOCK/BLOCKSUB 之內,FLM 關鍵字提供迴圈的功能; 重複測試的陳述序列,是以方括弧限定界線; 迴圈的次數,表示的是迴圈被執行的最大次數; Other 離開條件,在 FLM 裡意指的是‖exit if passed‖。 只要任何在序列之中的陳述測試錯誤,在迴圈的底部會決定成是錯誤的狀態。 .  語法: FLM count { }; Field count Description 由 CONST 表明的正整數或整數常數 以有效測試關鍵字為基礎的測試陳述 38 TR5001T User Guide – TPG v.1.0.0  例子: BLOCK TEST(); { ........ FLM 100 { ........ DH(CLK); SL(SO) FLAGFAIL(101); /* the loop stops iterating as SO is sensed low the fail flag 101 will be cleared while repeating the execution (SO is sensed high) */ DL(CLK); ........ }; ........ }; Test Research Inc. TR5001T User Guide – TPG v.1.0.0 39 Test Research Inc. 10.13 JF  類型: 關鍵字  敘述: 當在 BLOCK/BLOCKSUB 之內的相關測試陳述錯誤時 JF 關鍵字轉換程式執行的程序到特定的 Label 上。Label 的範圍必須是跟 JF 是在同 樣的水平,意思是跳出、跳入不同的 BLOCK/BLOCKSUB 或者,是在之間互相轉 換,都是不會被允許的。換成迴圈陳述的時候,也是有著同樣的限制, 必須在同一水平上。  語法: JF label ; Field label Description 在測試程式轉換過來的陳述上, 使用者定義的鑑別字。  例子: BLOCK TEST(); { ........ FL 100 { ........ SG(HIBYTE=0HAA) JF ENDVERIFY; ........ ENDVERIFY: ........ }; ........ }; 40 TR5001T User Guide – TPG v.1.0.0 Test Research Inc. 10.14 JP  類型: 關鍵字  敘述: 當相關測試步驟 PASS 時,JP 關鍵字轉換程式測試程序到指定的 label 上。Label 的水平必須跟 JP 的水平是一樣的,也就是說, 在從 BLOCK/BLOCKSUB 跳出、跳入或者互相轉換,都是不被允許的。 同時跳出、跳入不同的迴圈也是不被允許的。  語法: JP label ; Field label Description 在測試程式轉換過來的陳述上, 使用者定義的鑑別字。  例子: BLOCK TEST(); { ........ SG(DBUS=0H6D) JP ENDTEST; ........ ENDTEST: ........ }; TR5001T User Guide – TPG v.1.0.0 41 Test Research Inc. 10.15 KDOFF/KDON  類型: 標準函式  敘述: 使用 KDOFF and KDON 函式,用來關閉和開啟指定腳位的數位繼電器。 由 INPUT、OUTPUT 和 BIDIR 表明的所有腳位的數位繼電器,在 Main test 開始之 前,會因為初始化的緣故而自動關閉,而在 Main test 的最後,會再一次重置繼電器 而開啟。  語法: KDOFF / KDON ( ) ; Field Description 由 INPUT、OUTPUT、BIDIR 或針號表明的腳位名稱。 個別的參數,以逗號的方式限定界線。  例如: MAIN KDON(F1ALE,F2ALE,. . .,XE); ........ KDOFF(F1ALE,F2ALE,. . .,XE); END. 42 TR5001T User Guide – TPG v.1.0.0 Test Research Inc. 10.16 LDT  類型: 標準函式  敘述: LDT 函式從 binary file 或 table file 載入資料,在 on-boarding flash programming 裡,這些檔案是存在於重新分配的記憶體之中,有著指定的 drive/sense 腳號的邏輯狀態 (test pattern)。 這也允許 ON-The-FLY Programming,來給各式各樣的項目作使用。 像是電路板序列數值、或者改變可程式化裝置的內容,而不需要另外再建立一個新的測試 程式。  語法: LDT ( table-name , data-file ) ; Field table-name Description 由 TABLE/TABLEPRT 表明的使用者定義的識別字。 data-file 由 CONST 表明的字母字串或字串常數, 代表二進位的檔案名稱或 TAB 檔案。  例如: CONST DATAFILENAME=‘data.bin‘; ........ TABLE DATATAB : 0H4; { SH(D8,D7,D6,D5,D4,D3,D2,D1,D0); }; ........ MAIN ........ LDT(DATATAB,DATAFILENAME); DT(DATATAB); ........ END. 在把 DATAFILENAME 的資料讀取進 DATATAB 之後,正式讀取到的資料如下表所示 TR5001T User Guide – TPG v.1.0.0 43 Test Research Inc. Data in the binary file: 00000000h: 43 6F 70 79 . . . . . . . . ........ 此為 TABLE 內的資料與相對的測試步驟: Table Data Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 Test Step D7 D6 D5 D4 D3 D2 D1 D0 Step 1 L H L L L L H H Step 2 Step 3 L H H L H H H H L H H H L L L L Step 4 L H H H H L L H Notes: 1. L 代表預測的狀態為低電壓準位, H 代表預測的狀態為高電壓準位. 2. 每次此 TABLE 被使用到都會使用到一個 STEP,也就是說第一次使用此 TABLE 時會 對應到―01000011‖. 3. 加號的添加能夠使目前所使用的 pointer 移到下一個。舉例來說 DATATAB+會在執 完此次的指令後會將 pointer 移到下一個位置。Pointer 最後會停在最後一個 step。 4. 減號的添加能夠使目前所使用的 pointer 移到上一個。舉例來說 DATATAB-會在執 完此次的指令後會將 pointer 移到上一個位置。Pointer 最後會停在第一個 step。 5. Table reference 指令不得與針腳狀態變更指令,針腳控制指令或其他的 table references 共同使用,只有 FLAGFAIL 指令能夠與其共用。. 適當的 DT 或 ST 必須要先在 main program 被呼叫過方能使用 44 TR5001T User Guide – TPG v.1.0.0 Test Research Inc. 10.17 LOADTABLE  類型: 標準函式  敘述: LOADTABLE 函式從 binary file 或 table file 載入資料,在 on-boarding flash programming 裡,這些檔案是存在於重新分配的記憶體之中,有著指定的 drive/sense 腳 號的邏輯狀態(test pattern)。 這也允許 ON-The-FLY Programming,來給各式各樣的項目作使用。 像是電路板序列數值、或者改變可程式化裝置的內容,而不需要另外再建立一個新的測試 程式。  語法: LOADTABLE ( table-name , data-file ) ; Field table-name data-file Description 由 TABLE/TABLEPRT 表明的使用者定義的識別字。 由 CONST 表明的字母字串或字串常數, 代表二進位的檔案名稱或 TAB 檔案。  例如: CONST DATAFILENAME=‘data.bin‘; ........ TABLE DATATAB : 0H4; { SH(D8,D7,D6,D5,D4,D3,D2,D1,D0); }; ........ MAIN ........ LOADTABLE(DATATAB,DATAFILENAME); USETABLE(DATATAB); ........ END. 在把 DATAFILENAME 的資料讀取進 DATATAB 之後,正式讀取到的資料如下表所示 . Data in the binary file: 00000000h: 43 6F 70 79 . . . . . . . . ........ 此為 TABLE 內的資料與相對的測試步驟: TR5001T User Guide – TPG v.1.0.0 45 Test Research Inc. Table Data Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 Test Step D7 D6 D5 D4 D3 D2 D1 D0 Step 1 Step 2 Step 3 Step 4 L HL L L L H H L HHL H H H H L HHH L L L L L HHH H L L H  Notes: 1. L 代表預測的狀態為低電壓準位, H 代表預測的狀態為高電壓準位. 2. 每次此 TABLE 被使用到都會使用到一個 STEP,也就是說第一次使用此 TABLE 時會對 應到―01000011‖. 3. 加號的添加能夠使目前所使用的 pointer 移到下一個。舉例來說 DATATAB+會在執完此 次的指令後會將 pointer 移到下一個位置。Pointer 最後會停在最後一個 step。 4. 減號的添加能夠使目前所使用的 pointer 移到上一個。舉例來說 DATATAB-會在執完此 次的指令後會將 pointer 移到上一個位置。Pointer 最後會停在第一個 step。 5. Table reference 指令不得與針腳狀態變更指令,針腳控制指令或其他的 table references 共同使用,只有 FLAGFAIL 指令能夠與其共用。 46 TR5001T User Guide – TPG v.1.0.0 Test Research Inc. 10.18 適當的USETABLE或RESULTTABLE必須要先在main program被呼叫過方能使用 TR5001T User Guide – TPG v.1.0.0 47 Test Research Inc. LOOP  類型: 關鍵字  定義: LOOP 關鍵字,在 BLOCK/BLOCKSUB 裡提供無條件式的迴圈功能。 陳述的序列會被重複,而且以左邊和右邊的大括弧來作限定界線。 迴圈計數指的是迴圈會被執行的最大次數。此外,會在迴圈的底部,會來決定迴圈是測試 成功或者測試失敗的狀態。倘若在序列之中的任何陳述失敗的話,迴圈就會被決定是失敗 的。  語法: LOOP count { }; Field Count Description 由 CONST 表明的正整數或整數常數。 以有效測試關鍵字為基礎的任何測試陳述。 |  例如: BLOCK TEST(); { ........ LOOP 100 { ........ DH(CLK); SL(SO) FLAGFAIL(101); /* 當 SO 偵測到高電壓準位時 fail flag 被設為 101 但是迴圈會一值執行到迴圈數量達到設定的值才停 */ DL(CLK); ........ }; ........ }; 48 TR5001T User Guide – TPG v.1.0.0 Test Research Inc. 10.19 READ/READLN  類型: 標準函式  敘述: READ/READLN 陳述,藉由 device-descripter,從文字檔‘當中讀取字串(ASCII 字元 的串流),參考下面的語法。使用 OPEN 陳述來開啟文字檔案。 參數列表是關於字母字串、純量變數和字串變數的清單,以逗點的方式來限定界線。 READLN 陳述,會自動地在字串後面附加上跳行字元,造成下一個 READ/READLN 陳述 會從下一行的部分開始讀取資料串流。  語法: READ / READLN ( [ device-descriptor , ] ) ; Field device-descriptor parameter-list Description 非必要的。預設的裝置是螢幕。LPT 是保留的識別字。 代表連接到系統的印表機。 字母字串列表和有效變數,用來寫入到特定的裝置上。 變數的有效資料類型,有純量類型和 CSTRING。  例如: OPEN(FILE,BIN_ID_FILE,'R'); READLN(FILE,READ_STR); CLOSE(FILE); TR5001T User Guide – TPG v.1.0.0 49 Test Research Inc. 10.20 RESULTTABLE  類型: 標準函式  敘述: RESULTTABLE 函式,載入由 TABLE/TABLEPTR 表明的 table pointer 到第一個 測試步驟。這也允許載入 table pointer 到某個特定的測試步驟,只需從第一個測試 步驟加入補償値。使用 RESULTTABLE 陳述,配合 table reference 陳述,來把 UUT 讀取來的結果,寫入到 TABLE 裡。RESULTTABLE 只能用 sense 的腳位來建 立。.  語法: RESULTTABLE ( table-name [ , step-offset] ) ; Field table-name step-offset Description 由 TABLE/TABLEPTR 表明的使用者定義的識別字。 非必要的參數。 由 CONST 表明的整數或整數常數。 代表從測試步驟相對於第一個測試步驟的補償値。  例如: TABLE DATATAB : 0H40000; { SH(D8,D7,D6,D5,D4,D3,D2,D1,D0); }; ........ MAIN ........ RESULTTABLE(DATATAB); ........ SAVETABLE(DATATAB,‘outdata.bin‘); ........ END. 50 TR5001T User Guide – TPG v.1.0.0 Test Research Inc. 10.21 SAVETABLE  類型: 標準函式  敘述: SAVETABLE 函式,將 RESULTTABLE 的資料,寫成一個二進位的檔案, 來作為進一步的運用。 只感測存在於 RESULTTABLE 裡面的資料。  語法: SAVETABLE ( table-name , data-file ) ; Field table-name data-file Description 由 TABLE/TABLEPTR 表明的使用者定義識別字。 由 CONST 表明的字母字串或字串常數, 代表二進位的檔案名稱。 TR5001T User Guide – TPG v.1.0.0 51 Test Research Inc.  Example: CONST OUTFILENAME=‘outdata.bin‘; ........ TABLE DATATAB : 0H40000; { SH(D8,D7,D6,D5,D4,D3,D2,D1,D0); }; ........ MAIN ........ RESULTTABLE(DATATAB); ........ SAVETABLE(DATATAB,OUTFILENAME); ........ END. 52 TR5001T User Guide – TPG v.1.0.0 Test Research Inc. 10.22 SG/SH/SL/SX/STG/HS  類型: 標準函式  敘述: 使用這些函式來形成數位感測測試,接著就會轉換成數位測試步驟,是以分 號來作區隔。個別分號在陳述列表之中,是代表著測試步驟跟前一個步驟的分隔。 針號的狀態並不是累加式的,而且會進入 don‘t care (X)的狀態。 使用 HS(Hold Sense)來指派針號狀態,來成為累加式的感測,可以藉由 SX 或者 BLCOK 或 BLOCKSUB 結束時,就會被重置掉。  語法: SH / SL / SX / STG / HS ( ) … ; SG ( group-name = value , … ) … ; Field group-name value Description 由 INPUT、OUTPUT、BIDIR 或針號表明的腳位名稱。 個別的參數,以逗號來限定界線。由 GROUP 表明的 GROUP 名稱,只有在 DX 的時候,才能使用;使用星 號當作是唯一的獨特參數。 由 GROUP 表明的使用者定義的識別字。 由 CONST 表明的正整數或整數常數。 代表預期的邏輯狀態。它支援 X 當作是二進位的表示, 代表針號的 don‘t care 感測狀態。  例如: INPUT CLK=1024; ........ BIDIR D3=1111; D2=1112; D1=1113; D0=1114; ........ GROUP DBUS=(D3,D2,D1,D0); ........ BLOCK TEST(); { DL(CLK,D3,D2,D1) DH(D0); DH(CLK); DL(CLK) DX(D3,D2,D1,D0); DH(CLK) SG(DBUS=0H5); DL(CLK); DH(CLK) SG(DBUS=0BXXX0); DL(CLK); DH(CLK) SL(D3,D1) SH(D2,D0) HS(D1,D0); TR5001T User Guide – TPG v.1.0.0 53 Test Research Inc. DL(CLK) STG(D3) STG(D2); DX(CLK) SX(D1,D0); }; 此 BLOCK 執行時針號的狀態變化如下表: Nail State NAIL NUMBER Test Step 1024 (CLK) 1111 (D3) Step 1 0 0 Step 2 1 0 Step 3 0 X Step 4 1 L Step 5 0 X Step 6 1 X Step 7 0 X Step 8 1 L Step 9 0 H Step 10 X X 1112 (D2) 0 0 X H X X X H L X 1113 (D1) 0 0 X L X X X L L X 1114 (D0) 1 1 X H X L X H H X 54 TR5001T User Guide – TPG v.1.0.0 Test Research Inc. 10.23 ST  類型: 標準函式  敘述: ST 函式載入由 TABLE/TABLEPTR 表明的 table pointer,到 TABLE 的第一 個測試步驟。這也允許載入 table pointer 到某個特定的測試步驟,只需從第 一個測試步驟的位置,再加入補償値。 使用 ST 陳述、搭配 table reference 陳述,把從 UUT 讀取到的 pattern 結 果,寫入到 Table 裡面。ST 只可以用感測針號來建立。  語法: ST ( table-name [ , step-offset] ) ; Field Description table-name 由 TABLE/TABLEPTR 表明的使用者定義識別字。 step-offset 非必要參數。由 CONST 表明的整數或整數常數, 代表相對於第一個測試步驟的補償値。  例如: TABLE DATATAB : 0H40000; { SH(D8,D7,D6,D5,D4,D3,D2,D1,D0); }; ........ MAIN ........ ST(DATATAB); ........ DT(DATATAB,‘outdata.bin‘); ........ END. TR5001T User Guide – TPG v.1.0.0 55 Test Research Inc. 10.24 STT  類型: 標準函式  敘述: STT 函式,將 ST 資料寫成一個二進元檔案,來作為進一步的運用。  語法: STT ( table-name , data-file ) ; Field Description table-name 由 TABLE/TABLEPTR 表明的使用者定義識別字。 data-file 由 CONST 表明的字母字串或常數字串, 代表二進元的檔案名稱。  例如: CONST OUTFILENAME=‘outdata.bin‘; ........ TABLE DATATAB : 0H40000; { SH(D8,D7,D6,D5,D4,D3,D2,D1,D0); }; ........ MAIN ........ ST(DATATAB); ........ STT(DATATAB,OUTFILENAME); ........ END. 56 TR5001T User Guide – TPG v.1.0.0 Test Research Inc. 10.25 TABLE  類型: 關鍵字  敘述: 使用 TABLE 關鍵字,來放置代表數位測試步驟的二進元資料的部分。 每個測試步驟,接著會對應到具有指定 drive/sense 狀態的腳位組。 可以只用 TABLE name( 意味著 Table 有關的 pointer)來參考 TABLE, 或者在 BLOCK 裡,由 TABLEPTR 表明的 pointer。 一個正號附加在 table pointer 上,可以使 table pointer 在完成現在的測試步驟之 後, 向前到下一個測始步驟。 一個負號附加在 table pointer 上,可以使 table pointer 在完成現在的測試步驟之 後, 向後退一下個測試步驟。 第一個列表腳位可視為 most significan bit(MSB),而最後的腳位則視為 least  語法: TABLE name : size ; { DH / SH ( ) ; }; Field Name Size Description 使用者定義的識別字,來給 table 使用。 所有的 table 都應該只有唯一一個名稱。 預設上,名稱會是對應到 table 的 pointer。 由 CONST 表明的正數整數或整數常數。 代表 Table 尺寸,單位是 byte。 由 INPUT、OUTPUT 或 BIDIR 互斥地表明的腳位名 稱。 DH 代表跟 driver 有關的腳位。SH 代表的是跟 sensor 有關的腳位。實際上,在 table 裡面,腳位的邏 輯 high/low 狀態是以二進位數值為基礎。 在列表裡,個別的腳位都是以逗號來限定範圍的界 線。  例子 1: TABLE DATATAB : 0H80000; { DH(D15,D14,D13,D12,D11,D10,D9,D8,D7,D6,D5,D4,D3,D2,D1,D0); }; TABLE 得大小是透過運算有多少 byte 以取得。舉例來說,一個包含 512KB 的 flash 有 524288 bytes(80000 in hexadecimal)。 這與多少 pins 被安排到此 TABLE 使用無關。.  例子 2: TABLE ADDRTAB : 0HB00000; { DH(A22,A21,A20,A19,A18,A17,A16,A15,A14,A13,A12,A11,A10,A9,A8,A7,A6,A5,A4,A3,A2,A1); TR5001T User Guide – TPG v.1.0.0 57 Test Research Inc. }; 一個 8MB flash 具有 22-bit address bus 與 16-bit data bus 的 TABLE 使用方式如下.  任意一個 flash 的 address 包含 22 bit 定位,也就是說總共具有 4194394 個不同的位 置,因每個位置存放 22-bit 的 address,因此實際的容量為 4194394 * 22 bit 就是 92274688 bits 也就是 11534226 bytes 或接近 11MB 想讀取或使用如此龐大的 TABLE 會降低系統速度,因此強烈的不建議這麼做。為了降低 TABLE 大小,一個 TABLE 可以被分成更小的部分。如以下例子,夠過以更多較小的 TABLE 取代大的 TABLE 可以將本來大約 11M 的 TABLE 降低到 1K。 TABLE ADDRTAB : 0H100; { DH(A8,A7,A6,A5,A4,A3,A2,A1); }; TABLE ADDRTAB : 0H100; { DH(A16,A15,A14,A13,A12,A11,A10,A9); }; TABLE ADDRTAB : 0H100; { DH(A22,A21,A20,A19,A18,A17); }; 58 TR5001T User Guide – TPG v.1.0.0 Test Research Inc. 10.26 TABLEPTR  類型: 關鍵字  敘述:使用 TABLEPTR 關鍵字來宣告 table pointer,到由 TABLE 表明的 table 上。 table 被一個以上的 table pointer 參考,是被允許的  語法: TABLEPTR name = table-name ; Field name table-name Description 使用者定義的識別字,來給 table pointer 使用。 所有的 table pointer 都應該只有唯一一個名稱。 由 TABLE 表明的名稱。 Figure 2: Table Pointer Diagram  Example: TABLE DATATAB : 0H80000; { DH(D15,D14,D13,D12,D11,D10,D9,D8,D7,D6,D5,D4,D3,D2,D1,D0); }; TABLEPTR BANK1 = DATATAB; TABLEPTR BANK2 = DATATAB; BLOCK TEST; { TR5001T User Guide – TPG v.1.0.0 59 Test Research Inc. ........ FL 0H20000 { BANK1+; ........ BANK2+; ........ }; ........ }; ........ MAIN ........ LOADTABLE(DATATAB,‘data.bin‘); USETABLE(BANK2); USETABLE(BANK1,0H20000); TEST; ........ END. 60 TR5001T User Guide – TPG v.1.0.0 Test Research Inc. 10.27 USETABLE  類型: 標準函式  敘述: USETABLE 函式 ,會載入由 TABLE/TABLEPTR 表明的 table pointer,到 TABLE 的第一個測試步驟,這也允許載入 table pointer 到特定的測試步驟,只需要從第 一個測試 步驟的位置,再加上補償値。使用 USETABLE 陳述、搭配 table reference 陳述, 來執行在 TABLE 裡面的測試步驟。  語法: USETABLE ( table-name [ , step-offset] ) ; Field table-name step-offset Description 由 TABLE/TABLEPTR,表明的使用者定義 Userdefined identifier designated by TABLE/TABLEPTR Optional parameter. An integer or integer constant designated by CONST represents the test step offset from the first step (the beginning of a TABLE).  例如: See the example in the TABLEPTR statement. TR5001T User Guide – TPG v.1.0.0 61 Test Research Inc. 11 NON-TEST (UTILITY) KEYWORDS 下面列出的關鍵字,會用來定義客製化使用者的應用副函式。 關於副函式的實作,是以左邊跟右邊的大括號來限定界線的。。 SUBROUTINE 下面關於控制流程指令的關鍵字,是互斥地使用在 SUBROUTINE 裡面, 或者是主程式,用來指定執行計算的順序。 IF-THEN-ELSE FOR-TO-DO GOTO WHILE-DO GOTO-ON 下面兩個關鍵字,用來指示程式會開始執行的唯一進入點和測試計畫的界線。 在 END 的後必須附加上一個圓點,來代表程式的結束。 MAIN-END 62 TR5001T User Guide – TPG v.1.0.0 Test Research Inc. 12 應用陳述 12.1 ACTIVE  類型: 標準函式  敘述: 在程式開始的時候,測試系統會自動地關閉,在程式裡會使用到的數位繼電器,而 在程式結束的時候,會將它們打開。 使用 Active 陳述,在程式結束之後,會讓針號仍然維持它們既有的狀態。 ACTIVE 針號的狀態,可以明確地使用系統數位測試命令 P-REST 來加以清除,或 者在系統數位測試區塊要結束的時候,隱含地被 BLK_BEGIN_END 表明的 TPG 測 試步驟給清除掉。  語法: ACTIVE ( [] ) ; Field Description 非必要的。由 INPUT、OUTPUT、BIRDIR 或針號,來表明 的腳號名稱,或者由 GROUP 表明的 Group 名稱。 參數之間是以逗點來作限定界線。假如沒有使用腳號列表, 在程式裡面使用的所有針號,在程式結束之後,仍然會維持 既有的狀態。 TR5001T User Guide – TPG v.1.0.0 63 Test Research Inc. 12.2 ARRCMP  類型: 標準函式  敘述: 這個功能比較兩個陣列的元素數值。指定的元素數量從陣列指定的索引値開始作比 較,而且會從程式呼叫來回傳數值。以下說明有可能的回傳値:  Return Value Positive integer Description 從陣列的開始索引值,有不同的元素補償值。 Zero Negative integer 兩個陣列是相同的 錯誤的參數  語法: [result =] ARRCMP ( array1 , index1 , array2 , index2 , count ) ; Field array1 index1 array2 index2 count result Description 純量型態的陣列變數。 整數,代表 array1 的開始比較的索引値。 純量型態的陣列變數。 整數,代表 array2 的開始比較的索引値。 整數,代表比較元素的數量。 非必要的. 整數變數保留從程式呼叫回傳的數值。  Example: VAR ARR1,ARR2:BYTE[1024]; // 1KB FAILADR:INTEGER; ...... LOADBYTE(ARR1,‘DATA1.BIN‘); LOADBYTE(ARR2,‘DATA2.BIN‘); FAILADR=ARRCMP(ARR1,1,ARR2,1,1024); IF FAILADR>0 THEN WRITELN(‘Failure Addr.=‘,FAILADR-1); 64 TR5001T User Guide – TPG v.1.0.0 Test Research Inc. 12.3 ARRCPY  類型: 標準函式  敘述:這個功能會從來源陣列的指定索引值之中,複製指定的元素數量,到目的陣列的指定 索引值上。假如錯誤參數發生時,程式呼叫會回傳一個負値。  語法: [error =] ARRCPY ( source-array , source-index , target-array , target-index , count ) ; Field source-array source-index target-array target-index count error Description 純量型態的陣列變數。 整數,代表來源陣列的索引値,從這裡開始作複製。 純量型態的陣列變數。 整數,代表目標陣列的索引值,從這裡開始接受複製過來的 數值。 整數,代表複製元數的數量。 非必要的。整數變數保留從程式呼叫回傳的狀態數值。 TR5001T User Guide – TPG v.1.0.0 65 Test Research Inc.  例如: VAR SOURCE,TARGET:BYTE[1024]; // 1KB ...... LOADBYTE(SOURCE,‘DATA1.BIN‘); LOADBYTE(TARGET,‘DATA2.BIN‘); ARRCPY(SOURCE,1,TARGET,1,1024); SAVEBYTE(TARGET,‘DATA2.BIN‘); 此程式用以複製 DATA1.BIN 到 DATA2.BIN. 66 TR5001T User Guide – TPG v.1.0.0 Test Research Inc. 12.4 ARRSET  類型: 標準函式  敘述: 這個功能設定指定的陣列元素的數值,倘若錯誤參數發生時, 程式呼叫會回傳一個負値。  語法: [error =] ARRSET ( array , index , value , count ) ; Field array index value Description 純量型態的陣列變數。 整數,代表設定陣列的開始索引値。 要設定在陣列元素裡的數值。 數值的資料型態必須跟陣列的資料型態一樣。 count 整數,代表元素的數量。 error 非必要的。整數變數保留從程式呼叫回傳的狀態數值。  例如: VAR ARRAY:BYTE[1024]; // 1KB ...... // Create the blank array ARRSET(ARRAY,1,0HFF,1024); 12.5 CLOSE  型態: 標準函式  敘述: CLOSE 陳敘,會關閉從 OPEN 陳述建立串流。 關閉的串流無法被任何 IC 陳述所 存取。在程式結束之前,任何開啟的檔案都必須被關閉。  語法: CLOSE ( file-descriptor ) ; Field file-descriptor Description TEXTFILE 或者 BINARYFILE 變數.  例如: See the example in the OPEN statement. TR5001T User Guide – TPG v.1.0.0 67 Test Research Inc. 12.6 COPY_FILE  類型: 標準函式  敘述: 複製來源檔案的內容到目標檔案,參考下面的語法。 Status 0 -12 -13 -15 Description 測試通過 沒有發現檔案 檔案 I/O 錯誤 存取檔案時,被拒絕。  語法: [status =] COPY_FILE(src_file,target_file) ; Field Description src_file 由 CONST 表明的字母字串或常數。. target_file 由 CONST 表明的字母字串或常數。 status 非必要的。整數變數保留從程式呼叫回傳的狀態數值。  例如: CONST NEW_NAME = 'C:\test\Autotest_mdas_log'; VAR NET_TMP_FILE:CHAR[100]; RET:INTEGER; MAIN ...... //copy temp file to file:'Autotest_mdas_log' RET = COPY_FILE(NET_TMP_FILE,NEW_NAME); ...... END. 68 TR5001T User Guide – TPG v.1.0.0 Test Research Inc. 12.7 DATE  類型: 標準函式  敘述: 使用 DATE 陳述,從作業系統裡頭來重新取得日期跟時間 。 回傳字串的格式,如下所示: DD-MMM-YYYY HH:MM:SS For example, 09-DEC-2004 16:10:24. Note that one space character exists between the date string and time string.  語法: [string-variable =] DATE ( ) ; Field string-variable Description 非必要的。字元陣列變數,用來保留回傳的字串。 陣列的尺寸最少要是 20。  例如: VAR DATETIME:CHAR[20]; MAIN DATETIME=DATE(); END. TR5001T User Guide – TPG v.1.0.0 69 Test Research Inc. 12.8 DISCH  類型: 標準函式  敘述: 對於任何兩個針號,來進行放電,參考下面的語法。  語法: DISCH ( Discharge voltage, Nail1, Nail1‘s bus, Nail2, Nail2‘s bus, DLY=nnn) ; Field Discharge voltage Description 設定 放電電壓。.測量電壓低於這個數值, 就會 PASS。 要是超過放電時間或者測量電壓低於放電電壓時, 放電就會停止。 Nail1, Nail2 Nail1‘s bus, Nail2‘s bus 測試針號設定 字元 ‗A‘, ‗B‘ 和 ‗G‘代表類比匯流排,用來連接測試 針號到類比電壓表。 DLY=nnn, nnn is digital data 設定放電時間的最大值(nnn) 預設値的放電時間是 30ms。 在放電結束之後,回傳最後的電壓値。  例如: VAR V:FLOAT; MAIN V=DISCH(0.05,9,‘A‘,1,‘B‘); //30ms discharge time V=DISCH(0.05,9,‘A‘,1,‘B‘,DLY=10);//10mS discharge time END. 70 TR5001T User Guide – TPG v.1.0.0 Test Research Inc. 12.9 DISPLAY  類型: 標準函式  敘述: 使用 DISPLAY 陳述來啟動/關閉,來自 WRITELN 指令的訊息, 來停留在 EDIT 或者 TEST message box 裡面 。 設定 DISPLAY 指令,啟動訊息來停留在 EDIT 或 TEST message box, 在測試之後訊息並不會清除,直到 DISPLAY 指令來關閉它為止。  語法: DISPLAY ( on_off,line,color) ; Field on_off Description 0 : 關閉,訊息停留在 EDIT 或 TEST message box,在測試之後,訊息被清除。 1 : 啟動,訊息停留在 EDIT 或 TEST message box ,在測試之後,訊息不會被清除。 line color 當啟動或關閉這個功能時, line 和 color 參數都必須被設定為 0。 定義顯示訊息的列數。 在 EDIT 或 Test panel message box,這裡總共 12 列。這個參數的範圍是 0-12。 定義顯示訊息的顏色索引值。 這裡有 4 個顏色在 EDIT 或 TEST panel message box 裡: 0 : 黑色 1 : 紅色 2 : 綠色 3 : 藍色. 這個參數的範圍是 0-3。 TR5001T User Guide – TPG v.1.0.0 71 Test Research Inc.  例如: The message stays at the EDIT or TEST message box PROGRAM DISPLAYON; VAR KEY:CHAR[3]; V,I:FLOAT; MAIN V=2.5; I=0.02; DISPLAY(1,0,0); // Enable display function to fix the message location DISPLAY(0,1,1); // set location at line 1 and RED color WRITELN('V=',V,'V, PASS'); DISPLAY(0,2,2); // set location at line 2 and GREEN color WRITELN('I=',I,'A, PASS'); DISPLAY(0,3,3); WRITELN('V=',V,' I=',I,'A, PASS'); DISPLAY(0,4,0); WRITELN('V=',V,'V, PASS'); DISPLAY(0,5,1); WRITELN('I=',I,'A, PASS'); DISPLAY(0,6,2); WRITELN('V=',V,' I=',I,'A, PASS'); DISPLAY(0,7,3); WRITELN('V=',V,'V, PASS'); DISPLAY(0,8,0); WRITELN('I=',I,'A, PASS'); DISPLAY(0,9,1); WRITELN('V=',V,' I=',I,'A, PASS'); DISPLAY(0,10,2); WRITELN('V=',V,'V, PASS'); DISPLAY(0,11,3); WRITELN('I=',I,'A, PASS'); DISPLAY(0,12,0); WRITELN('V=',V,' I=',I,'A, PASS'); //DISPLAY(0,0,0); // Disable the display function END. 72 TR5001T User Guide – TPG v.1.0.0 Test Research Inc.  例如: The message shows at the EDIT or TEST message box during test and is cleared after test. PROGRAM DISPLAYOFF; VAR KEY:CHAR[3]; V,I:FLOAT; MAIN V=2.5; I=0.02; DISPLAY(1,0,0); // enable the display function to fix the message location DISPLAY(0,1,1); // set location at line 1 and RED color WRITELN('V=',V,'V, PASS'); DISPLAY(0,2,2); // set location at line 2 and GREEN color WRITELN('I=',I,'A, PASS'); DISPLAY(0,3,3); WRITELN('V=',V,' I=',I,'A, PASS'); DISPLAY(0,4,0); WRITELN('V=',V,'V, PASS'); DISPLAY(0,5,1); WRITELN('I=',I,'A, PASS'); DISPLAY(0,6,2); WRITELN('V=',V,' I=',I,'A, PASS'); DISPLAY(0,7,3); WRITELN('V=',V,'V, PASS'); DISPLAY(0,8,0); WRITELN('I=',I,'A, PASS'); DISPLAY(0,9,1); WRITELN('V=',V,' I=',I,'A, PASS'); DISPLAY(0,10,2); WRITELN('V=',V,'V, PASS'); DISPLAY(0,11,3); WRITELN('I=',I,'A, PASS'); DISPLAY(0,12,0); WRITELN('V=',V,' I=',I,'A, PASS'); DISPLAY(0,0,0); // Disable the display function END. TR5001T User Guide – TPG v.1.0.0 73 Test Research Inc. 12.10 DELETE_FILE  類型: 標準函式  敘述: 刪除檔案,參考下面的語法。 Status Description 0 測試通過 -12 沒有發現檔案 -13 檔案 IC 出現錯誤 -15 檔案存取被拒絕 74 TR5001T User Guide – TPG v.1.0.0 Test Research Inc.  Syntax: [status =] DELETE_FILE(file-descriptor) ; Field file-descriptor status Description 由 COMST 表明的字母字串和常數。 非必要的。. 整數變數會保存從程式呼叫回來的數值。  Example: CONST FILE_NAME = 'C:\meter\Autotest_mdas_log'; MAIN ...... //DELETE FILE DELETE_FILE(FILE_NAME); ...... END. TR5001T User Guide – TPG v.1.0.0 75 Test Research Inc. 12.11 EOF  類型: 標準函式  敘述: EOF 陳述應用在確認檔案的結束。參考下面的語法。  語法: EOF (file-descriptor); Field Description file-descriptor TEXTFILE 或 BINARYFILE 的變數。  例如: CONST FILE_NAME = 'C:\test.txt'; VAR STREAM:TEXTFILE; MAIN …… RET = OPEN(STREAM,FILE_NAME,'r'); WHILE(!EOF(STREAM)) DO { …… }; CLOSE(STREAM); …… END. 76 TR5001T User Guide – TPG v.1.0.0 Test Research Inc. 12.12 EOLN  類型: 標準函式  敘述: EOLN 陳述應用在確認換行―\n‖或檔案的結束。參考下列的語法。  語法: EOLN (file-descriptor); Field Description file-descriptor TEXTFILE 或 BINARYFILE 變數。  例如: CONST FILE_NAME = 'C:\test.txt'; VAR STREAM,STREAM_OUT:TEXTFILE; MAIN …… RET = OPEN(STREAM,FILE_NAME,'r'); WHILE(!EOLN(STREAM)) DO { …… }; CLOSE(STREAM); …… END. TR5001T User Guide – TPG v.1.0.0 77 Test Research Inc. 12.13 EXECUTE  類型: 標準函式  敘述: 開始執行程式之後,不用等待程式結束就能回傳資料。 程式必須是實際上可執行的,也就是說,你不能只是發出內部的指令 給指令編譯器而已。 Status 0 -1 -3 -4 -12 Description 成功地開始指令。 系統超出記憶體範圍、可執行檔案遭到破壞, 或者重定位是無效的。. 沒有發現檔案。 沒有發現路徑。 可執行檔案是無效的。 可能它不是 Windows 應用程式或在.exe image 上 有錯 誤。  Syntax: EXECUTE (pathName) ; Field pathName Description 可執行檔和引數(參數)的路徑名稱。 result 非必要的。整數變數用來保留由程式呼叫回傳的狀態數 值。  Example: CONST pathName='C:\Program Files\Microsoft Office\Office10\EXCEL.EXE'; VAR result :INTEGER; MAIN ……. result=EXECUTE(pathName); WRITELN(‗result =', result); ……. END. 78 TR5001T User Guide – TPG v.1.0.0 Test Research Inc. 12.14 FOR-TO-DO  類型: 關鍵字  敘述: FOR-TO-DO 陳述,會疊代指定範圍的單一陳述或複合陳述。 參考下面的語法,FOR 迴圈首先會估初始値,然後指定它到 loop-index。 之後會比較 loop-index 和 final value,如果高於 final value,就會終止疊代的動作。 因此,loop-body 有可能被執行 0 次,假如初始値一開始就高於 final value 的話。 loop-index 會每次增加 1。巢狀式的 FOR 迴圈的陳述是允許的。  語法: FOR loop-index = initial-value TO final-value DO loop-body ; Field loop-index initial-value final-value loop-body Description 整數/.字元 變數 整數/字元 運算式 整數/字元 運算式 單一陳述或複合陳述  例如: FOR I=CURRENTLINE+1 TO MAXLINES DO WRITELN(LOGFILE); FOR I=1 TO EPPIDSIZE DO { WRITE(LOGFILE,STRBUF[2*I-1]); WRITE(LOGFILE,STRBUF[2*I]); WRITE(LOGFILE,‘ ‘); }; TR5001T User Guide – TPG v.1.0.0 79 Test Research Inc. 12.15 GET_BARCODE  類型: 標準函式  敘述: 使用 GET_BARCODE 陳述,能從測試程式之中重新取得特定的 Barcode。 代表狀態的整數會被程式呼叫給回傳 。下面說明有可能的狀態數值: Status Description 0 通過 -2 超出陣列大小 -4 錯誤的 Barcode 數值  語法: [status =] GET_BARCODE ( barcode-number , barcode ) ; Field barcode-number barcode Description 整數,代表重新取得的 Barcode 數值。從 1 開始, 可以在中的頁面裡,設 定最大值。 字元陣列變數,用來保留重新取到的 Barcode。 陣列的大小必須大於或等於 Barcode 的長度。 可以在中的頁面裡 設定 Barcode 的長度。 status 非必要。.整數變數用來保留從程式呼叫回傳的狀態數 值。 80 TR5001T User Guide – TPG v.1.0.0  例如: VAR BARCODE:CHAR[13]; MAIN IF GET_BARCODE(1,BARCODE)<0 THEN { WRITELN(LPT,‘FAILED TO GET BAR CODE‘); FLAGTESTFAIL(); GOTO ENDTEST; } ...... ENDTEST: END. Test Research Inc. TR5001T User Guide – TPG v.1.0.0 81 Test Research Inc. 12.16 GET_BOARDINFO  類型: 標準函式  敘述: Use GET_BOARDINFO 陳述,能從測試參數來重新取得電路板的資訊。 代表狀態的整數會被程式呼叫給回傳。以下解釋有可能的狀態數值: Status 0 -2 -4 -22 -23 Description 測試通過 超出陣列的尺寸 不正確的 Bar code 數量 不正確的 boardinfo_type 沒有 BoardInfo  語法: [status =] GET_ BOARDINFO (boardinfo_type, InfoName) ; Field boardinfo_type Description 以下的電路板類型可以用整數或字元來表示: 1: manufactureID、 2: ProductID、 3: BoardID、 4: ModelNumber、 5: ModelVersion、 6: PCBNumber、 7: PCBVersion 8: VersionNumber 9: VersionString 10:InputVersionString 11:Fixture Barcode 12:Input Fixture Barcode 13:DUT Barcode 14:Input DUT Barcode 82 TR5001T User Guide – TPG v.1.0.0 Test Research Inc. InfoName 15:Software directory 16:Test program directory 17:Test program name 字元陣列變數用來保留重新取得的電路板資料。 陣列的尺寸必須大於或等於電路板資訊的長度。 可在中的頁面裡設定。 status 非必要。.整數變數用來保留從程式呼叫回傳的狀態數 值。  例如 VAR BUFFER:CHAR[100]; states:INTEGER; MAIN states= GET_BOARDINFO( 1,BUFFER); IF states=0 THEN { WRITELN(LPT,' manufactureID =',BUFFER); }; ...... END.  例如 VAR BUFFER:CHAR[100]; states:INTEGER; MAIN states= GET_BOARDINFO(manufactureID,BUFFER); IF states=0 THEN { WRITELN(LPT,' manufactureID =',BUFFER); }; ...... END. TR5001T User Guide – TPG v.1.0.0 83 Test Research Inc.  例如 VAR BUFFER:CHAR[100]; states:INTEGER; MAIN states= GET_BOARDINFO( 1,BUFFER); IF states=0 THEN { WRITELN(' manufactureID =',BUFFER); }; states= GET_BOARDINFO( 8,BUFFER); IF states=0 THEN { WRITELN(' Version number =',BUFFER); }; states= GET_BOARDINFO( 9,BUFFER); IF states=0 THEN { WRITELN(' Version string =',BUFFER); }; states= GET_BOARDINFO(11,BUFFER); IF states=0 THEN { WRITELN(' FixtureBarcode =',BUFFER); }; states= GET_BOARDINFO(12,BUFFER); IF states=0 THEN { WRITELN(' InputFixtureBarcode =',BUFFER); }; states= GET_BOARDINFO(13,BUFFER); IF states=0 THEN { WRITELN(' DUTBarcode =',BUFFER); }; states= GET_BOARDINFO(14,BUFFER); IF states=0 THEN { 84 TR5001T User Guide – TPG v.1.0.0 Test Research Inc. WRITELN(' InputDUTBarcode =',BUFFER); }; states= GET_BOARDINFO(15,BUFFER); IF states=0 THEN { WRITELN(' SoftwareDir =',BUFFER); }; states= GET_BOARDINFO(16,BUFFER); IF states=0 THEN { WRITELN(' TestProgramDir =',BUFFER); }; states= GET_BOARDINFO(17,BUFFER); IF states=0 THEN { WRITELN(' TestProgramName =',BUFFER); }; states= GET_BOARDINFO(manufactureID,BUFFER); IF states=0 THEN { WRITELN(' manufactureID =',BUFFER); }; states= GET_BOARDINFO(VersionNumber,BUFFER); IF states=0 THEN { WRITELN(' Version number =',BUFFER); }; states= GET_BOARDINFO(VersionString,BUFFER); IF states=0 THEN { WRITELN(' Version string =',BUFFER); }; states= GET_BOARDINFO(FixtureBarcode,BUFFER); IF states=0 THEN { WRITELN(' FixtureBarcode =',BUFFER); }; states= GET_BOARDINFO(InputFixtureBarcode,BUFFER); IF states=0 THEN TR5001T User Guide – TPG v.1.0.0 85 Test Research Inc. { WRITELN(' InputFixtureBarcode =',BUFFER); }; states= GET_BOARDINFO(DUTBarcode,BUFFER); IF states=0 THEN { WRITELN(' DUTBarcode =',BUFFER); }; states= GET_BOARDINFO(InputDUTBarcode,BUFFER); IF states=0 THEN { WRITELN(' InputDUTBarcode =',BUFFER); }; states= GET_BOARDINFO(SoftwareDir,BUFFER); IF states=0 THEN { WRITELN(' SoftwareDir =',BUFFER); }; states= GET_BOARDINFO(TestProgramDir,BUFFER); IF states=0 THEN { WRITELN(' TestProgramDir =',BUFFER); }; states= GET_BOARDINFO(TestProgramName,BUFFER); IF states=0 THEN { WRITELN(' TestProgramName =',BUFFER); }; END. 86 TR5001T User Guide – TPG v.1.0.0 Test Research Inc. 12.17 GET_DCL_FILENAME  類型: 標準函式  敘述: 使用 GET_DCL_FILENAME 陳述,能從測試參數裡重新取得 DCL 檔案 名稱 。代表狀態的整數會被程式呼叫給回傳。以下說明有可能的狀態數值: Status 0 -2 -12 Description 測試通過 超過陣列大小 沒有發現檔案  語法: [status =] GET_ DCL_FILENAME (DCLName) ; Field DCLName Description 字元陣列變數用來保留重新獲得的 DCL 檔案名稱。陣列 的尺寸要大於或等於 DCL 檔案名稱的長度。 可在中的頁面裡作 設定。 status 非必要。.整數變數用來保留從程式呼叫回傳的狀態數 值。  例如: VAR DCLName:CHAR[100]; status:INTEGER; MAIN ...... status=GET_DCL_FILENAME(DCLName); WRITELN('status= ',status,',DCL=',DCLName); ...... END. TR5001T User Guide – TPG v.1.0.0 87 Test Research Inc. 12.18 GET_FILE_SIZE  類型: 標準函式  敘述:得到檔案的尺寸,參考下面的語法。 Status 0 -12 -13 Description 測試通過,回傳檔案尺寸。 沒有發現檔案 File Not Found 檔案 IC 錯誤 File IO Error  語法: [status =] GET_FILE_SIZE (file-descriptor); Field file-descriptor Description 由 CONST 表明的字母字串或常數。 Size 整數變數,用來保留從程式呼叫回傳的狀態數值。  例如: CONST FILE_NAME = 'test.txt'; VAR SIZE:INTEGER; MAIN …… SIZE=GET_FILE_SIZE(FILE_NAME); IF SIZE<=0 THEN GOTO ERROR; …… END. 88 TR5001T User Guide – TPG v.1.0.0 Test Research Inc. 12.19 GET_FIRST_FILE  類型: 標準函式  敘述: 用指定的屬性來搜尋檔案,然後回傳第一個相符的檔案。 呼叫 GET_FIRST_FILE,來得到其他相符的檔案。參考下面的語法。  Status 0 -12 -13 -15 Description 測試通過 沒有發現檔案 檔案 I/O 錯誤 存取檔案時被拒絕  語法: [status =] GET_FIRST_FILE (Search_File_Name_Path, normal, readOnly, system, hidden, archive, directory, File_Name_Found) ; Field Search_File_Name_Path Description 由 CONST 表明的字母字串或常數。 normal readOnly system hidden archive directory File_Name_Found 藉由Enable 或 Disable 所評估的布林數值, 代表正常屬性指定沒有何設定的屬性或者只有設定封存 位元的檔案。 藉由Enable 或 Disable 所評估的布林數值, 代表唯讀屬性指定, 能夠防止遭到更改或者覆寫的檔案。 藉由Enable 或 Disable 所評估的布林數值, 代表系統和隱藏屬性指定, 通常不會出現在資料夾之中的檔案。 藉由Enable 或 Disable 所評估的布林數值, 代表系統和隱藏屬性指定, 通常不會出現在資料夾之中的檔案。 藉由Enable 或 Disable 所評估的布林數值, 代表封存屬性指定,已經遭到更改過的檔案。 因為他們是最後備份的, 使用的是 DOS 裡的備份指令。 藉由Enable 或 Disable 所評估的布林數值, 代表這是在 UNIX 底下實行的唯一屬性。 當屬性為 1 時,只有資料夾相符。 當屬性為 1 時,沒有資料夾相符。 TR5001T User Guide – TPG v.1.0.0 89 Test Research Inc. status 非必要。.整數變數用來保留從程式呼叫回傳的狀態數 值。  例如: VAR status:INTEGER; FILE_TEMP:CHAR[300]; MAIN status=GET_FIRST_FILE('c:\test\*.txt',1,0,0,0,0,0, FILE_TEMP); WRITELN(LPT,'FILE_FIRST=', FILE_TEMP); WHILE(status = 0) DO { status = GET_NEXT_FILE(FILE_TEMP); WRITELN(LPT,'FILE_NEXT=', FILE_TEMP); }; END. 90 TR5001T User Guide – TPG v.1.0.0 Test Research Inc. 12.20 GET_GUID  類型: 標準函式  敘述: 使用 GET_GUID 陳述來產生 GUID,藉由 Microsoft‘s SDK 功能中的 UuidCreate()。 GUID 的長度有 16 個位元組。代表狀態的整數會被程式呼叫給回傳出來 以下說明有可能的狀態數值。 Status 0 -6 Description 測試通過 建立 GUID 失敗  語法: [status =] GET_GUID ( GUID ) ; Field GUID Description 位元陣列變數,用來保留產生的 GUID。 陣列的尺寸至少要是 16,那正是產生的 GUID 的尺寸。 status 非必要。.整數變數用來保留從程式呼叫回傳的狀態數 值。  例如: VAR GUID:BYTE[16]; MAIN IF GET_GUID(GUID)<0 THEN { WRITELN(LPT,‘FAILED TO GENERATE GUID‘); FLAGTESTFAIL(); GOTO ENDTEST; } ...... ENDTEST: END. TR5001T User Guide – TPG v.1.0.0 91 Test Research Inc. 12.21 GET_MAC  類型: 標準函式  敘述: 使用 GET_MAC 陳述,從測試程式重新取得最後的 MAC 位址(由系統數位測試指 令,GETMAC,來產生)。代表狀態的整數會從程式呼叫被回傳。 以下說明有可能的狀態數值: . Status Description 0 測試通過 -2 超過陣列尺寸  語法: [status =] GET_MAC ( MAC , [EUI64] ) ; Field MAC EUI64 status Description 位元組陣列變數用來保留重新取得的 MAC 的位址。 陣列的尺寸至少要是 6,那正是取得的 MAC 的尺寸。 非必要的。位元組陣列變數用來保留重新取得的 EUI64。陣列的尺寸至少要是 2,那正是取得的 EUI64 的尺寸。 非必要。.整數變數用來保留從程式呼叫回傳的狀態數 值。  例如: VAR MAC:BYTE[6]; MAIN IF GET_MAC(MAC)<0 THEN { WRITELN(LPT,‘FAILED TO GET MAC‘); FLAGTESTFAIL(); GOTO ENDTEST; } ...... ENDTEST: END. 92 TR5001T User Guide – TPG v.1.0.0 Test Research Inc. 12.22 GET_NEXT_FILE  類型: 標準函式  敘述: 在 GET_FIRST_FILE 開始之後,得到在搜尋時所發現的第二個檔案。 參考下面的語法。  Status 0 -18 -19 Description 測試通過 沒有其他相符檔案的錯誤訊息 沒有呼叫 Get_First_File 的錯誤訊息  語法: [status =] GET_NEXT_FILE (File_Name_Found) ; Field File_Name_Found Description 字串字母或常數,代表發現的 FileName。 status 非必要。.整數變數用來保留從程式呼叫回傳的狀態數 值。  例如: VAR status:INTEGER; FILE_TEMP:CHAR[300]; MAIN status=GET_FIRST_FILE('c:\test\*.txt',1,0,0,0,0,0, FILE_TEMP); WRITELN(LPT,'FILE_FIRST=', FILE_TEMP); WHILE(status = 0) DO { status = GET_NEXT_FILE(FILE_TEMP); WRITELN(LPT,'FILE_NEXT=', FILE_TEMP); }; END. TR5001T User Guide – TPG v.1.0.0 93 Test Research Inc. 12.23 GETKEY  類型: 標準函式  敘述: 使用 GETKEY 陳述,來重新取得從使用者按下的鍵盤輸入鍵。 輸入鍵會立即回傳,不用一定得按下 Enter 鍵。 假如一個標準、不特別的字元鍵被按下,跟此相關的單一字元會被回傳, 否則一個空字元就會被回傳。 假如沒有任何按鍵被按下,空字元也會被回傳。所有回傳字元都會被轉換成大寫。 GETKEY 同時會顯示對話視窗,提示使用者定義的訊息或是預設的訊息 ‖ Call GETKEY()‖。  語法: [keystroke =] GETKEY ( [message] ) ; Field message Description 非必要的。 字元陣列或字母字串,代表提示給使用者的 訊息。 keystroke 非必要的。字元陣列用來保留回傳的按鍵數值。  例如: VAR KEY:CHAR[2]; MAIN KEY=GETKEY(‘Please press P or F or any key ...‘); IF KEY=‘P‘ THEN GOTO PASS1 ELSE IF KEY=‘F‘ THEN GOTO FAIL1 ELSE GOTO ENDTEST; PASS1: ...... GOTO ENDTEST; FAIL1: ...... ENDTEST: END.  例如: PROGRAM GETKEY1; VAR KEY:CHAR[3]; MAIN KEY=GETKEY('Please press P or F or any key ...'); 94 TR5001T User Guide – TPG v.1.0.0 IF KEY[1]=0 && KEY[2]=5 THEN WRITELN('ENTER') ELSE IF KEY='p' THEN WRITELN('pass') ELSE IF KEY='f' THEN WRITELN('fail') ELSE IF KEY='P' THEN WRITELN('PASS') ELSE IF KEY='F' THEN WRITELN('FAIL') ELSE WRITELN('NULL') END. Test Research Inc. TR5001T User Guide – TPG v.1.0.0 95 Test Research Inc. 12.24 GETHIT  類型: 標準函式  敘述: 使用 GETHIT 陳述,來重新獲得從使用者按下的鍵盤上輸入鍵 。 輸入鍵會立刻被回傳,不用一定得輸入 Enter 鍵。 假如一個標準、不特別的字元被輸入之後,跟此有關的單一字元就會被回傳,否則 一個空字元就會被回傳。假如在時間限制之後仍沒有輸入按鍵,空字元也會被 回傳,所有回傳的字元都會被轉換成大寫。如果想要持續等待、直到按下輸入鍵為 止,請使用 GETKEY()。GETHIT 也會顯示對話視窗,提示使用者定義的訊息或是 預設的訊息 ‖ Call GETHIT()‖。  語法: [keystroke =] GETHIT ( timeout, [message] ) ; Field timeout message keystroke Description 整數,在時間限制之後,仍然沒有按下輸入鍵, 就會回傳 0。 非必要的。 字元陣列或字串,代表提示給使用者的訊 息。 非必要的。字元陣列用來保留回傳的輸入鍵數值。  Example: PROGRAM GETHIT1; VAR KEY:CHAR[3]; MAIN KEY=GETHIT(10,'Please press P or F or any key ...'); //KEY=GETHIT(10); IF KEY[1]=0 && KEY[2]=5 THEN WRITELN('ENTER') // Press ―ENTER‖ key will return KEY[2]=5, KEY[1]=0 ELSE IF KEY='p' THEN WRITELN('pass') ELSE IF KEY='f' THEN WRITELN('fail') ELSE IF KEY='P' THEN WRITELN('PASS') ELSE IF KEY='F' THEN WRITELN('FAIL') ELSE WRITELN('NULL') END. 96 TR5001T User Guide – TPG v.1.0.0 Test Research Inc. 12.25 GET_TEST_RESULT  類型: 標準函式  敘述: 得到 電路板測試、類比測試、數位測試、和功能測試的結果。 參考下面的語法。 Status 0 -14 -4 Description 測試通過 超過陣列大小 不正確的電路板(panel)數目  語法: [status =] GET_TEST_RESULT(panelNo, panelResult, analogResult, digitalResult, functionResult) ; Field panelNo Description 整數,代表電路板的數量,當電路板是多連板的時候。 從 1 開始,最大值取決於是多連板的數量。 panelResult analogResult digitalResult 整數,代表電路板測試的回傳結果。 -1 : 測試不良 0 : 沒有測試 1 : 沒有結束和沒有不良 2 : 測試通過 整數,代表類比測試的回傳結果: -1 : 測試不良 0 : 沒有測試 1 : 沒有結束和沒有不良 2 : 測試通過 整數,代表數位測試的回傳結果: --1 : 測試不良 0 : 沒有測試 TR5001T User Guide – TPG v.1.0.0 97 Test Research Inc. 1 : 沒有結束和沒有不良 2 : 測試通過 functionResult 整數,代表功能測試的回傳結果: 1 : 測試不良 0 : 沒有測試 1 : 沒有結束和沒有不良 2 : 測試通過 status 非必要。.整數變數用來保留從程式呼叫回傳的狀態數值。  例如: CONST PANEL_NUM = 2; VAR Panel_Result,Analog_Result, Digital_Result,Function_Result:Integer; BRD:INTEGER; MAIN …… FOR BRD=1 TO PANEL_NUM DO; { GET_TEST_RESULT(BRD,Panel_Result,Analog_Result,Digital_Result,Function_r esult); WRITELN('Brd=',BRD,', Panel_Result=',Panel_Result); WRITELN('Analog_Result=',Analog_Result); WRITELN('Digital_Result=',Digital_Result); WRITELN('Function_result=',Function_result); IF Panel_Result < 0 THEN { WRITELN('*** Skip Result ***'); }; }; ...... END. 98 TR5001T User Guide – TPG v.1.0.0 Test Research Inc. 12.26 GET_TEST_RESULT_Detail  類型: 標準函式 敘述: 得到電路板測試、類比測試、數位測試、和功能測試的結果。 參考下面的語法  Status 0 -14 -4 Description 測試通過 超過陣列大小 不正確的電路板數量  語法: [status =] GET_TEST_RESULT(panelNo, panelResult, analogResult, digitalResult, functionResult, DetailResult) ; Field panelNo panelResult analogResult digitalResult Description 整數,代表電路板的數量,當電路板是多連板的時候。 從 1 開始,最大值取決於是多連板的數量。 整數,代表電路板測試的回傳結果。 -1 : 測試不良 0 : 沒有測試 1 : 沒有結束和沒有不良 2 : 測試通過 整數,代表類比測試的回傳結果: -1 : 測試不良 0 : 沒有測試 1 : 沒有結束和沒有不良 2 : 測試通過 整數,代表數位測試的回傳結果: --1 : 測試不良 TR5001T User Guide – TPG v.1.0.0 99 Test Research Inc. functionResult DetailResult 0 : 沒有測試 1 : 沒有結束和沒有不良 2 : 測試通過 整數,代表功能測試的回傳結果: -1 : 測試不良 0 : 沒有測試 1 : 沒有結束和沒有不良 2 : 測試通過 17 個字元的字串,每個字元表示一個測試項目, 3 個條件顯示如下: F : 不良 N : 沒有測試 P : 通過 陣列的索引值定義 1:保留 2:接觸 3:開路 4:短路 5:電阻 6:電容 7:電感 Inductor 8:二極體 Diode 9:電晶體 Transistor 10:保護二極體 Clamping Diode 11:IC 空焊 ICOpen 12:Tree 測試 13:電壓測試 14:IC 功能測試 100 TR5001T User Guide – TPG v.1.0.0 Test Research Inc. status  例如: 15:振盪器 16:程式化測試 Test 17:功能 非必要。.整數變數用來保留從程式呼叫回傳的狀態數值。 PROGRAM TEST; CONST PANEL_NUM = 2; VAR Panel_Result,Analog_Result, Digital_Result,Function_Result:Integer; BRD:INTEGER; RESULT:CHAR[18]; //need extra one char for end of string //RESULT[4] indicate short test result MAIN FOR BRD=1 TO PANEL_NUM DO; { GET_TEST_RESULT_DETAIL(BRD,Panel_Result,Analog_Result,Digital_Result,Function_result,RESULT); WRITELN('Brd=',BRD,', Panel_Result=',Panel_Result); WRITELN('Analog_Result=',Analog_Result); WRITELN('Digital_Result=',Digital_Result); WRITELN('Function_result=',Function_result); WRITELN('DetailResult=',RESULT); IF Panel_Result < 0 THEN { WRITELN('*** Skip Result ***'); }; }; END. TR5001T User Guide – TPG v.1.0.0 101 Test Research Inc. 12.27 GOTO  類型: 關鍵字  敘述: GOTO 陳述,無條件地轉移程式的執行流程到指定的 label 上。 labelled 的陳述必須跟 GOTO 陳述在同樣的範圍之內。也就是說進入、離開或者 在不同的副函式之間的轉移,都是不被允許的。 此外,GOTP 進入、離開或者不同的複合陳述之間轉移,也是不被允許的。 Label 在整個程式之中,必須是唯一一個的。  語法: GOTO label ; Field label Description 使用者定義的識別字, 使用在程式會轉移過來的陳述上。  例如: ........ GOTO ENDOFTEST; ........ ENDOFTEST: 102 TR5001T User Guide – TPG v.1.0.0 Test Research Inc. 12.28 GOTO-ON  類型: 關鍵字  敘述: GOTO-ON 陳述,是否轉移程式的執行流程到特定的 Label 上,取決於旗幟的 pass/fail 狀態,參考下面的語法。Condition-value 是布林數值(真或假),而且 可以使用標準函式 FAIL、PASS 來作評估。  語法: GOTO label ON condition-value ; Field Description label 使用者定義的識別字, 使用在程式會轉移過來的陳述上。 condition-value 布林數值,可藉由 FAIL 跟 PASS 函式來得到。  例如: XXXCHECKID; GOTO YYY ON FAIL(XXXIDFAIL); ........ GOTO ENDOFTEST; YYY: YYYCHECKID; GOTO ENDOFTEST ON FAIL(YYYIDFAIL); ........ ENDOFTEST: TR5001T User Guide – TPG v.1.0.0 103 Test Research Inc. 12.29 IF-THEN-ELSE  類型: 關鍵字  敘述: IF-THEN-ELSE 陳述 ,在這裡的 ELSE 陳述是非必要的部分; 是一個有條件的陳 述,而且是用來表達決定的條件。參考下面的語法。 假如條件是真(也就是,condition-value 不是 0),就會執行 then-body 的陳述。 假如條件是假(也就是,condition-value 是 0),假如這裡有 ELSE 部分的話, 就會執行 else-body 的陳述。 串連 IF-THEN-ELSE 陳述,來形成多重決定,是被允許的 condition-value 會接連地被評估,倘若跟 condition-value 相符時, 跟它有相關的 then-body 就會被執行。 倘若 conditon-value 沒有被滿足,else-body 假如存在的話,就會被執行。 語法: IF condition-value THEN then-body [ ELSE else-body ] ; IF condition-value THEN then-body ELSE IF condition-value THEN then-body ELSE IF condition-value THEN then-body [ ELSE else-body ] ; Field condition-value then-body else-body Description 任何的布林運算式 單一陳述或者複合陳述。 非必要的陳述。單一陳述或者複合陳述。  例如: // integer value to hexadecimal character conversion IF VAL>=0 && VAL<=9 THEN CH=VAL+‘0‘ ELSE IF VAL=10 THEN CH=‘A‘ ELSE IF VAL=11 THEN CH=‘B‘ ELSE IF VAL=12 THEN CH=‘C‘ ELSE IF VAL=13 THEN CH=‘D‘ ELSE IF VAL=14 THEN CH=‘E‘ ELSE CH=‘F‘; IF FAIL(100) THEN { FAILCLR(100); 104 TR5001T User Guide – TPG v.1.0.0 Test Research Inc. WRITELN(‘Manufacturer ID Failed‘); }; 12.30 MDLY  類型: 標準函式  敘述: MDLY 陳述,在以 millisecond 為單位的指定時間間隔裡,暫停程式的執行。 一旦超過時間間隔之後,程式會自動繼續執行。  語法: MDLY ( time-interval ) ; Field time-interval Description CONST 表明的正數整數或整數常數,代表延遲的時間 間隔,單位是 millisecond。  例如: MAIN ........ MDLY(1000); // delay 1 sec ........ END. TR5001T User Guide – TPG v.1.0.0 105 Test Research Inc. 12.31 MF  類型: 標準函式  敘述: MF 陳述,應用在量測電路板的頻率,參考下面的語法。  語法: MF ( measure-unit, port, measure-type, time-base, measure-method, delay-ms ) ; Field Measure Unit Port Measure Type Time Base Measure Method Delay_ms Description ‘M‘: MHz. ‘K‘: KHz. 量測的通信埠 0: Buffer Board. 1: SWB. 2: V&C2 8: 1ms 9: 10ms 10: 100ms 11: 1s 1 : 高頻率. 2: 低頻率. 3: 數位 0~1000ms  例如: VAR F:FLOAT; MAIN // Measure Frequency from ATM F=MF(‘M‘,4,0,9,1,100); WRITELN(LPT, 'Frequency MEASURED=',F,'MHz'); END. 106 TR5001T User Guide – TPG v.1.0.0 Test Research Inc. 12.32 MV  類型: 標準函式  敘述: MV 陳述應用類比電壓計,來量測在任兩個針號上(pin1 和 pin2)的 DC 電壓。 對於電壓計來說,可以被量測的電壓範圍是 0V~100V 或-50V~50V。 電壓計會根據指定的期望値,而自動調整測量的檔位。  語法: MV ( expected-voltage , pin1 , relay1 , pin2 , relay2 ) ; Field expected-voltage pin1, pin2 Description 浮點數值,代表預期測量到的電壓。 由 INPUT、OUTPUT 或 BIDIR 表明的腳位名稱或者針 號,代表在測量底下的腳位。 relay1, relay2 字母字元或常數,代表用在連接測試針號到類比電壓計 的類比匯流排。 類比匯流排有 ‗A‘、‘B‘ 和 ‗G‘。  例如: BLOCK OUT3V(); { DH(VID3,VID2) DL(VID1,VID0); // 1100:3V }; MAIN OUT3V(); MDLY(100); VOLT=MV(3.3,O3V,‘A‘,1,‘G‘); IF VOLT>3.6 || VOLT<3.0 THEN WRITELN(‘3V OUTPUT FAILED‘); END. TR5001T User Guide – TPG v.1.0.0 107 Test Research Inc. 12.33 OPEN  類型: 標準函式  敘述: OPEN 陳述,使用 READ/READLN 或 WRITE/WRITELN 來建立串流,資料可以讀 取或者寫入到指定的檔案之中,可參考下面的語法。 file-descriptor 是一個檔案變數,而且用來存取在所有 IO 陳述裡面, 由 file-name 指定的檔案。 在 5001T/5000 系列系統裡頭,最多容許 10 個檔案被同時打開。.  語法: OPEN ( file-descriptor , file-name , file-mode ) ; Field file-descriptor file-name Description TEXTFILE 或 BINARYFILE 變數。 由 CONST 表明的字母字串或常數。 CONST 表明的字母字元或常數。 容許的模式包括如下: file-mode 開啟檔案,只能用來讀取資料。 ‗r‘ 建立檔案,來作寫入。 ‗w‘ ‗a‘ 添加;開啟或建立檔案,來寫入到其他檔案的後 面。.  例如: CONST FILENAME=‘c:\test.log‘; ........ VAR STREAM:TEXTFILE; ........ MAIN OPEN(STREAM,FILENAME,‘a‘); ........ CLOSE(STREAM); END. 108 TR5001T User Guide – TPG v.1.0.0 12.34 RENAME_FILE  檔案: 標準函式  敘述: 更改檔案名稱,參考下面的語法。 Status 0 -12 -13 -15 -16 -17 Description 測試通過 沒有發現檔案 檔案 IO 錯誤 檔案存取被拒絕 錯誤訊息 : 檔案已經存在 錯誤訊息 : 硬碟已經滿了 Test Research Inc.  語法: [status =] RENAME_FILE (File_Name_Path,New_FileName_Path); Field Description File_Name_Path New_FileName_Path status 由 CONSDT 表明的字母字串或常數。. 由 CONSDT 表明的字母字串或常數。. 非必要。.整數變數用來保留從程式呼叫回傳的狀態數值。  例如: CONST FILE_NAME = 'c:\test.txt'; NEW_FILE_NAME = 'c:\NEW.txt'; VAR status:INTEGER; MAIN status = RENAME_FILE(FILE_NAME,NEW_FILE_NAME); IF status < 0 THEN { .... }; END. TR5001T User Guide – TPG v.1.0.0 109 Test Research Inc. 12.35 SEND_GUID  類型: 標準函式  敘述: 使用 SEND_GUID 陳述,更新在測試系統之中指定的 GUIDGUID。 通常,使用陳述來更新系統中的 GUID,將會再被傳送到伺服器作進一步的使用。 Status 0 -7 Description 測試通過 無效的陣列尺寸,陣列的尺寸小於預期的.  語法: [status =] SEND_GUID ( GUID ) ; Field GUID status Description 16-byte 的陣列,代表 GUID。 非必要。.整數變數用來保留從程式呼叫回傳的狀態數 值。  例如: VAR GUID:BYTE[16]; MAIN IF GET_GUID(GUID)<0 THEN { WRITELN(LPT,‘FAILED TO GENERATE GUID‘); FLAGTESTFAIL(); GOTO ENDTEST; } ...... SEND_GUID(GUID); ENDTEST: END. 110 TR5001T User Guide – TPG v.1.0.0 Test Research Inc. 12.36 SEND_MAC  類型: 標準函式  敘述: 使用 SEND_MAC 陳述,來更新測試系統之中指定的 MAC 位址, 通常,使用陳述來更新系統的 MAC,將會再被送到伺服器作進一步的使用。 . Status 0 -2 -5 Description 測試通過 超過陣列大小 無效的 MAC/EUI64 尺寸,MAC 的尺寸是 6 bytes, EUI64 是 2 bytes。  語法: [status =] SEND_MAC ( MAC , [EUI64] ) ; Field MAC EUI64 status Description 6-byte 的 陣列,代表 MAC。 非必要的。2-byte 陣列,代表 EUI64。 非必要。.整數變數用來保留從程式呼叫回傳的狀態數 值。  例如: VAR MAC:BYTE[6]; EUI64:BYTE[2]; MAIN IF GET_MAC(MAC,EUI64)<0 THEN { WRITELN(LPT,‘FAILED TO GET MAC‘); FLAGTESTFAIL(); GOTO ENDTEST; } ...... SEND_MAC(MAC,EUI64); ENDTEST: END. TR5001T User Guide – TPG v.1.0.0 111 Test Research Inc. 12.37 SetSleep  類型: 標準函式  敘述: 改變作業系統睡眠模式的設定  語法: [status =] SetSleep (Sleep Type – number); Field Sleep Type status Description 0: 沒有睡眠 1: 一些的睡眠 2: 更多的睡眠 回傳値表示是否程式是成功的; 負數表示是有錯誤發生。  例子: MAIN SetSleep(1); WRITELN(LPT, ‗Sleep Some‖); END. 112 TR5001T User Guide – TPG v.1.0.0 Test Research Inc. 12.38 SPLIT_PATH  類型: 標準函式  敘述: 將路徑名稱切割成,driver 名稱、文件夾名稱和檔案名稱。  語法: SPLIT_PATH (pathName, driveName, directoryName, fileName ) ; Field pathName driveName directoryName fileName Description 字串 :路徑名稱 字串: Drive 名稱 字串 : 完整檔案夾路徑。 字串 : 檔案名稱  例如: CONST pathName='c:\test\samples\apps\update.c'; VAR driveName,dirName,fileName:CHAR[100]; MAIN SPLIT_PATH(pathName, driveName, dirName, fileName); WRITELN('pathName =',pathName); // c:\test\samples\apps\update.c WRITELN('driveName =',driveName);// c: WRITELN('dirName =',dirName);// \test\samples\apps\ WRITELN('fileName =',fileName);// update.c END. . TR5001T User Guide – TPG v.1.0.0 113 Test Research Inc. 12.39 STAMP  類型: 標準函式  敘述: 控制 SMB Board 的 GPIO 通信埠 1-8 或 sense 通信埠 1-8 的資料。  語法: STAMP (CNTL=on_off, PORT=PortNo) ; Return Always return 1 if CNTL=‘ON or ‗OFF‘, return the vlaue of GPI port 1-8 if CNTL=‘READ‘. If return 129, it means port 1 and 8 sense HIGH Field on_off PortNo Description CNTL='ON' : 設定 GPO High CNTL='OFF' : 設定 GPO Low CNTL=‘READ‘ : 讀取 GPI 資料 正整數,代表連接到腳位的資源數量。 通常寫入 PORT =‘ 1‘ , if CNTL = ‗READ‘。  Example: PROGRAM TEST; VAR I : INTEGER; MAIN STAMP(CNTL='ON',PORT='1,2,4-6'); STAMP(CNTL='OFF',PORT='1,2,4-6'); I = STAMP(CNTL='READ',PORT='1'); WRITELN('GPIO READ = ',I) END. 114 TR5001T User Guide – TPG v.1.0.0 Test Research Inc. 12.40 StimV  類別: 標準函式  敘述: 驅動電壓輸出到指定的針號上,參考下面的語法。  語法: StimV ( drive-voltage, source-mode, current-limiter, delay-ms, measBus , pin1, pin2, pin3, pin4, pin5, pin6) ; Field drive-voltage Description 浮點數,代表驅動電壓。 source-mode current-limiter delay measBus 0 : CVS1 1 : CVS2 0~0.12A 0~1000ms 字母字元或常數,代表類比匯流排被用來連接到被指 定的針號到類比電壓計。類比匯流排有‘A‘、‘B‘和‘C‘。 pin1, pin2, pin3, pin4, pin5, pin6 由 INPUT、OUTPUT 或 BIDIR 表明的腳位名稱或針 號,代表在測量底下的腳位。  例如: VAR V:FLOAT; MAIN // Analog StimV from ATM V=StimV(3.3,0,0.05,100,‘G‘,1,2,3,4,5,6,); END. Drive Nail 1,2,3,4,5 and 6 to 3.3V@0.05A after delay 100ms. TR5001T User Guide – TPG v.1.0.0 115 Test Research Inc. 12.41 STRCAT  類型: 標準函式  敘述:這個功能會複製來源字串,然後將它串接到目的字串的後面,而且在串接之後回傳 字串的長度。  語法: [string-length =] STRCAT ( target-string , source-string ) ; Field target-string source-string string-length Description 字元陣列變數會保留目的字串,之後會再添附上來源 字串。 字串,會串連到目的字串的後面。. 非必要的。整數變數保留被修改目的字串的長度。  例如: VAR STRING:CHAR[100]; ...... STRING[0]=0; STRCAT(STRING,‘THIS IS‘); STRCAT(STRING,‘A STRING‘); The content of the variable STRING at this point is THIS IS A STRING. 116 TR5001T User Guide – TPG v.1.0.0 Test Research Inc. 12.42 STRCHR  類型: 標準函式  敘述: 這個功能,會確認指定的字元,在字串之中第一次出現的位置, 然後回傳這個字元的索引值,倘若沒有在字串中出現的話,則會回傳為 0。.  語法: [index =] STRCHR ( string-to-search , character-to-find ) ; Field string-to-search character-to-find index Description 字串。因為尋找指定字元的緣故,而會被搜尋。 字元。會在指定的字串中搜索,來尋找此自元。 非必要的。整數變數保留第一次出現的字元的索引值。  例如: VAR INDEX:INTEGER; ...... INDEX=STRCHR(‘THIS IS A STRING‘,‘S‘); The value of the variable INDEX is 4. INDEX=STRCHR(‘THIS IS A STRING‘,‘Y‘); The value of the variable INDEX is 0. TR5001T User Guide – TPG v.1.0.0 117 Test Research Inc. 12.43 STRLEN  類型: 標準函式  敘述: 這個功能,會計算指定字串的字串長度。 在終止 ASCII NULbyte 之前的字元數量會被回傳。如果字串儲存到任何字元陣 列,但是不包含終止 ASCII NUL byte 的話,陣列的尺寸會被回傳。  語法: [length =] STRLEN ( string ) ; Field string length Description 字串。它的長度將會在之後被計算。 非必要的。整數變數保留,在經由此功能計算之後, 字串的長度。  例如: VAR STRING:CHAR[10]; LENGTH:INTEGER; ...... STRING=‘TR5001T ATE‘; LENGTH=STRLEN(STRING); The value of the variable LENGTH is 10. STRING[1]=0; LENGTH=STRLEN(STRING); The value of the variable LENGTH is 0. 118 TR5001T User Guide – TPG v.1.0.0 Test Research Inc. 12.44 STRNCPY  類型: 標準函式  敘述: 這個功能,從部分來源字串到目的字串,複製不超過指定的字元數量到目的字串, 而且回傳實際複製到目的字串的字元數量。  語法: [number-copied =] STRNCPY ( source-string , copy-from , copy-number , target-string ) ; Field source-string copy-from copy-number target-string number-copied Description 字串,在這裡複製指定數量的字元,到目的字串上。 整數。在來源字串裡,代表 sub-string 的開始索引値。 舉例來說,TR5001T ATE,sub-string 的開始在索引値 9 上的話,sub-string 就是 ATE。. 整數,代表複製到目的字串的字元數量的最大值。 字元陣列變數保留目的字串。從來源 sub-string 上,有 指定數量的字元會被複製到這個字串上。. 非必要的。整數變數保留, 實際上複製到目的字串上的字元數量。  例如: VAR TARGET:CHAR[100]; ...... STRNCPY(‘TR5001T ATE‘,1,7,TARGET); The string TARGET is TR5001T. TR5001T User Guide – TPG v.1.0.0 119 Test Research Inc. 12.45 STRPRINT  類型: 標準函式  敘述: strprint 功能 ,會格式化 和儲存一連串的字串或數值到 Buffer 上。  語法: STRPRINT ( buff_string , string_ format, argument ) ; Field buff_string string_ format Description 字串,儲存一連串的字串和數值。 字串,代表指定有資格的輸入序列的格式和他們要如何被轉換來作分 配。每一個轉換規格,是以 a%作為開始,而以一個轉換的字元作為結 束。有效的轉換字元如下: argument D 整數。這個整數可能是二進位、十進位或十 六進位。比方說,123、0h123、0b0101。 C 字元 F 浮點數。可能包含十進位的値,跟非必要的 指數欄位。例如說 1.23、1.3e2。 S 字串,非白色、空格字元。 由 CONST 表明的字母字串和常數。 Field string-to-search character-to-find index Description 字串,為了指定的位元而被搜尋。 字元,在特定的字串來尋找此字元。 非必要的。 整數變數保留 located 字元的索引値。  Example: CONST NET_DIR = 'c:\tmp'; //the directory of output file VAR RET:INTEGER; NET_TMP_FILE:CHAR[300]; STREAM,STREAM_OUT:TEXTFILE; MAIN ...... //the temp file filename STRPRINT(NET_TMP_FILE,'%S\no-MACID.txt',NET_DIR); //open a temp file to output result RET = OPEN(STREAM_OUT,NET_TMP_FILE,'w'); CLOSE(STREAM_OUT); //close temp file END. 120 TR5001T User Guide – TPG v.1.0.0 Test Research Inc. 12.46 STRRCHR  類型: 標準函式  敘述: 這個功能會找出在字串中,指定字元最後出現的位置,並且回傳此位置的字元的索 引值,或者回傳 0 ,倘若這個字元並沒有出現在字串上時。  語法: [index =] STRRCHR ( string-to-search , character-to-find ) ; Field string-to-search character-to-find index Description 字串。因為指定位元的緣故,而會被搜尋。 字元。在指定的字串之中,搜尋這個字元。 非必要。整數變數會保留被搜尋字元的索引值。.  例如: VAR INDEX:INTEGER; ...... INDEX=STRRCHR(‘THIS IS A STRING‘,‘S‘); The value of the variable INDEX is 11. TR5001T User Guide – TPG v.1.0.0 121 Test Research Inc. 12.47 STRSCAN  類型: 標準函式  敘述: 這個功能轉換從指定來源字串的輸入,在格式化字串的控制之下變成一連串的數 值。格式字串包含格式規格,指的是如何去轉換輸入。這個功能會回傳成功輸入項 目的數量。  語法: [number-of-items =] STRSCAN ( source-string , format , ) ; 122 TR5001T User Guide – TPG v.1.0.0 Field source-string Description 字串, 從這裡得到會被轉換的輸入。 Test Research Inc. 字串,代表指定有資格的輸入序列和如何他們被轉換去分配的規 格。每一個轉換規格,開始是 a%,而結束時會是一個轉換的字 元。有效的轉換字元如下: format target-list number-of-items 整數。這個整數可能是二進位、十進位或十六進位。 D 比方說,123、0h123、0b0101。 C 字元 浮點數。可能包含十進位的値,跟非必要的指數欄 F 位。例如說 1.23、1.3e2。 字串,非白色、空格字元。 S 變數列表,以逗點來作之間的隔離。 從來源字串接受轉換過來的輸入。 非必要的。整數變數保留轉換成功的輸入項目的數值。 例如 VAR IVAL:INTEGER; FVAL:FLOAT; STRING:CHAR[100]; ...... STRSCAN(‘1234 1.3e2 TR5001T ATE‘,‘%D%F%S‘,IVAL,FVAL,STRING);  The value of the variable IVAL is 1234.  The value of the variable FVAL is 130.0.  The value of the variable STRING is TR5001T. TR5001T User Guide – TPG v.1.0.0 123 Test Research Inc. 12.48 STRSTR  類型: 標準函式  敘述: 這個功能,會找出在字串中,字元序列(sub-string)第一次出現的位置。,而且會回 傳此字元序列的第一個字元的索引值,或是 0,倘若字串中沒出現字元序列的話。 .  語法: [index =] STRSTR ( string-to-search , sub-string-to-find ) ; Field string-to-search sub-string-to-find index Description 字串。因為字元序列的緣故,而會被搜尋。. 字串。會在指定的字串,尋找此字元序列(substring)。 非必要的。 整數變數會保留符合的字元字串中第一個字 元的索引值,或者會是 0,倘若在字串中沒有被發現的 話。  例如: VAR INDEX:INTEGER; ...... INDEX=STRSTR(‘TR5001T IS ATE‘,‘8001‘); The value of the variable INDEX is 4. 124 TR5001T User Guide – TPG v.1.0.0 Test Research Inc. 12.49 SUBROUTINE  類型: 關鍵字  敘述: SUBROUTINE 陳述,定義客製化的使用者應用上的函式。 它是由應用陳述的序列所組成的,以左邊和右邊的大括弧來劃分出範圍。 變數宣告和常數定義是允許的,而且在 SUBROUTINR 之中,互斥地被存取著。 Subroutine 只能在 Main 程式底下被呼叫。 .  語法: SUBROUTINE name ( [] ) ; [ CONST ] [ VAR ] { }; Field name Description 使用者定義的識別字,作用在 SUBROUTINE 上。 所有 subroutines 必須只有唯一一個的名稱。. 宣告變數列表,使用在 SUNROUTINE 上。 可以用 Call by Value 或 Call by reference 的方式。 個別的宣告變數用分號作區隔。 定義常數列表,只能被 SUBROUTINE 所存取。 . 定義變數列表,只能被 SUBROUTINE 所存取。 非必要的陳述。單一陳述或者複合陳述。 TR5001T User Guide – TPG v.1.0.0 125 Test Research Inc.  Example: SUBROUTINE TOHEX(VAL:INTEGER; VAR CH:CHAR); { IF VAL>=0 && VAL<=9 THEN CH=VAL+‘0‘ ELSE IF VAL=10 THEN CH=‘A‘ ELSE IF VAL=11 THEN CH=‘B‘ ELSE IF VAL=12 THEN CH=‘C‘ ELSE IF VAL=13 THEN CH=‘D‘ ELSE IF VAL=14 THEN CH=‘E‘ ELSE CH=‘F‘; }; SUBROUTINE LOGRESULT(); VAR BYTEBUF:BYTE[20]; STRBUF:CSTRING[40]; I,J,HINIBBLE,LONIBBLE:INTEGER; LOGFILE:TEXTFILE; { SAVETABLE(DATATAB,BYTEBUF); J=1; FOR I=1 TO 20 DO { HINIBBLE=BYTEBUF[I]>>4; LONIBBLE=BYTEBUF[I]&0HF; TOHEX(HINIBBLE,STRBUF[J]); J=J+1; TOHEX(LONIBBLE,STRBUF[J]); J=J+1; }; OPEN(LOGFILE,‘result.log‘,‘a‘); FOR I=1 TO 20 DO WRITE(LOGFILE,STRBUF[2*I-1],STRBUF[2*I],‘ ‘); WRITELN(LOGFILE); CLOSE(LOGFILE); }; 126 TR5001T User Guide – TPG v.1.0.0 Test Research Inc. 12.50 TIME  類型: 標準函式  敘述: 使用 TIME 陳述,從作業系統來重新取得目前的 calendar time。 回傳的時間是秒的數值,從 1970 年 1 月 1 號開始,時區是格林威治地方時。 然後,這個資料可以被用來計算任何部分的程式或全部程式的執行。 .  : 語法 [time-variable =] TIME ( ) ; Field time-variable Description 非必要的。整數類型變數,用來保留回傳的時間。  例如: VAR TSTART,TEND:INTEGER; MAINx TSTART=TIME(); . . . . . . . . // Program segment TEND=TIME(); WRITELN(‘Program execution time=‘,TEND-TSTART,‘S‘); END. TR5001T User Guide – TPG v.1.0.0 127 Test Research Inc. 12.51 UDLY  類型: 標準函式  敘述: UDLY 陳述,在指定的時間間隔之內,暫停程式的執行。 一旦超出時間間隔,程式就會自動地繼續執行。 延遲時間的最大值為 65536,單位是 microsecond。  語法: UDLY ( time-interval ) ; Field time-interval Description 由 CONST 表明的正整數或整數常數,代表延遲的時間 間隔,單位是 microsecond。  例如: MAIN ........ KDON(PIN1,PIN3,PIN5,PIN7); UDLY(500); // delay 500us ........ END. 128 TR5001T User Guide – TPG v.1.0.0 Test Research Inc. 12.52 WHILE-DO  類型: 關鍵字  敘述: 只要條件數值為真,WHILE-DO 的陳述,就會開始疊代單一或複合的陳述。 在疊代開始之前,每次都會估計條件數值,倘若在滿足的情況之下, 就會開始執行迴圈本身,否則就會終止 WHILE 陳述。 就跟 FOR 迴圈相同,也是有可能執行 0 次的迴圈,倘若一開始條件數值就不滿足 的話。此外,巢狀式的 WHILE 陳述是被允許的。  語法: WHILE condition-value DO loop-body ; Field condition-value loop-body Description 任何的布林運算式 單一陳述或複合陳述。  例如: I=1; WHILE I<20 DO { ........ I=I+1; }; TR5001T User Guide – TPG v.1.0.0 129 Test Research Inc. 12.53 WRITE/WRITELN  類型: 標準函式  敘述: WRITE/WRITELN 的 陳述,用來寫入字串(ASCII 字元的串流)到標準輸出(螢幕)或 device –scripter 所表明的裝置,可參考下面的語法。 允許的裝置包括有 LPT 表明的印表機,或使用 OPEN 陳述所打開的文件檔案。 參數列表是字母字串、純量變數‘、和字串變數的序列,參數之間以逗點隔開。 WRITELN 的陳述,會自動地附加一個跳行字元,在字串的最後,因而造成 下一個 WRITE/WRITELN 的陳述,會把資料串流給寫入到下一行的位置。  語法: WRITE / WRITELN ( [ device-descriptor , ] ) ; Field devicedescriptor Description 非必要的。. 預設的裝置是螢幕。LPT 是保留的識別字。代表 連接到系統的印表機。 字母字串列表和用來寫入指定裝置的有效變數。. 有效資料類型的變數,是純量類型和 CSTRING。 parameterlist WRITELN 的關鍵字,用來定義訊息的顏色。 Red color: \033fgFF0000 Green color: \033fg00FF00 Blue color: \033fg0000FF Magenta color: \033fgFF00FF Yellow color: \033fgFFFF00 Cyan color: \033fg00FFFF Black color: \033fgFFFFFF 在使用這些關鍵字之前,需要去先啟動顯示功能。 在 message box 之中,才能夠使用不同的顏色來表示訊息。 EXAMPLE: Display(1,0,0); //Enable Display function Display(0,1,1); // Define message shows at 1st line with red color at message box WRITELN('Start'); 130 TR5001T User Guide – TPG v.1.0.0 Test Research Inc. //Shows ―Start‖ with red color at 1st line at message box Display(0,2,3); // Define message shows at 2nd line with blue color WRITELN('End',‘\033fg00FF00PASS‘); //Shows ―End‖ with blue color at 2nd line at message box //Shows ―PASS‖ with green color following ―END‖ at same line  例如: CONST FILENAME=‘test.out‘; SUBROUTINE TOASCII(INTVAL:INTEGER;VAR ASCIIVAL:INTEGER); { ASCIIVAL=INTVAL+‘0‘; }; SUBROUTINE TEST(); VAR ASCIIVAL:INTEGER; STREAM:TEXTFILE; I,J:INTEGER; { OPEN(STREAM,FILENAME,‘w‘); WRITELN(STREAM,‘Integer ASCII‘); WRITELN(STREAM,‘------- -----‘); FOR I=0 TO 9 DO { TOASCII(I,ASCIIVAL); WRITE(STREAM,I); FOR J=1 TO 12 DO WRITE(STREAM,‘ ‘); WRITELN(STREAM,ASCIIVAL); } CLOSE(STREAM); }; MAIN TEST(); END. TR5001T User Guide – TPG v.1.0.0 131 Test Research Inc. The contents of the file ―TEST.OUT‖ at the execution completion of the program are as follows. 132 TR5001T User Guide – TPG v.1.0.0  Example: PROGRAM DISPLAY2; VAR KEY:CHAR[3]; V,I:FLOAT; REDcolor:CHAR[12]; GREENcolor:CHAR[12]; BLUEcolor:CHAR[12]; BLACKcolor:CHAR[12]; MAIN STRCAT(REDcolor, '\033fgFF0000'); STRCAT(GREENcolor,'\033fg00FF00'); STRCAT(BLUEcolor, '\033fg0000FF'); STRCAT(BLACKcolor,'\033fgFFFFFF'); DISPLAY(1,0,0); WHILE (1) DO { V=1.5; I=0.02; DISPLAY(0,1,1); WRITELN('V=',V,'V, PASS'); // Red Color //Message ―V=1.500000V, PASS‖ shows with red color at 1st line Test Research Inc. TR5001T User Guide – TPG v.1.0.0 133 Test Research Inc. DISPLAY(0,2,2); WRITELN('I=',I,'A, PASS'); // Green Color //Message ―I=0.020000A, PASS‖ shows with green color at 2nd line DISPLAY(0,3,3); WRITELN('V=',V,' I=',I,'A,','\033fgFF0000PASS'); //Message ―V=1.500000 I=0.020000A‖ shows with blue color at 3rd line //Message ―PASS‖ shows with red color by following keyword \033fgFF0000 DISPLAY(0,4,0); WRITELN('V=',V,'\033fgFF00FFV,','\033fgffff00PASS'); //Message ―V=1.500000‖ shows with black color at 4th line //Message ―V,‖ shows with magenta color by following keyword \033fgFF00FF //Message ―PASS‖ shows with yellow color by following keyword \033fgFFFF00 DISPLAY(0,5,1); WRITELN('I=',I,'A, PASS'); //Message ―I=0.020000A, PASS‖ shows with red color at 5th line DISPLAY(0,6,2); WRITELN('V=',V,' I=',I,'A,',BLUEcolor,'PASS'); //Message ―V=1.500000 I=0.020000A, ‖ shows with green color at 6th line //Message ―PASS‖ shows with blue color by following key word \033fg0000FF //BLUEcolor is defined as \033fg0000FF DISPLAY(0,7,1); WRITELN('V=',V,' I=',I,'A,',GREENcolor,'PASS'); //Message ―V=1.500000 I=0.020000A, ‖ shows with red color at 7th line //Message ―PASS‖ shows with green color by following key word \033fg00FF00 //GREENcolor is defined as \033fg00FF00 134 TR5001T User Guide – TPG v.1.0.0 KEY=GETHIT(500,'\033FF0000Please press P or F'); IF KEY='p' THEN { DISPLAY(0,0,0); GOTO END1; } }; END1: END. Test Research Inc. TR5001T User Guide – TPG v.1.0.0 135 Test Research Inc. 12.54 WRITE_STEP  類型: 標準函式  敘述: 寫入數值、stepInfo 的單位到步驟上。 參考下面的語法:  語法: WRITE_STEP(stepNo, value, unit); Field stepNo value Description 整數,代表步驟號碼 。 浮點數,代表 stepInfo 的數值。 unit stepInfo 的單位, 單位類型如下所示: "K" ,"M ","pF","nF","uF","mF" "uH","mH","H ","fF","V ","mA","A " "uA"," ","mW","W ","Hz","KHz","MHz" "mS","uS"  例如: MAIN …… WRITE_STEP(1,3.5,'V'); …… END. To write 3.5V to step 1 136 TR5001T User Guide – TPG v.1.0.0 Test Research Inc. 13 高速序列程式陳述 測試程式程式為了序列程式化加速,來實行程序。. 序列記憶裝置是由各自的 data in 和 data out pin、one chip-selet pin and one clock pin 所組成 的,就像是 SPI 序列記憶裝置。 專屬的序列控制器是安裝在 host PC,而且藉由線路連接到 OBP board 和 Tester。 控制器包含 memory-behind-pin 架構。記憶體最大的尺寸是 256K bits。 當. 當運算需要 256 bits 以上的記憶體時,它必須被分成兩個 smaller facets,尺寸為 256Kbits。在軟體控制之下,控制器產生適合的序列訊號。因為共同使用 JTAG 介面, 以下為 JTAG 和序列裝置 PINS 之間對照的寫入資料。 Figure5: JTAG/Serial Device Wiring OBP board 提供最多 3 個序列裝置,而且支援可承受時脈頻率,最多達到 3MHZ。 TR5001T User Guide – TPG v.1.0.0 137 Test Research Inc. 13.1 SPI_CONFIG  類型: 標準函式  敘述:使用這個陳述來建立 OBP 序列介面硬體配置。 在任何其他陳述去作硬體資源初始化之前,這個陳述必須至少要被呼叫過一次。  語法: [ error = ] SPI_CONFIG ( TAP = TAP-No , VIH = input-high-voltage , VTH = output-threshold , FREQ = clock-frequency , BIT_ORDER = data-bit-order ) ; Field TAP-No Description 代表 OBP 序列介面的整數。 有效值為 1、2 和 3。 input-high-voltage 代表 High logic driver level 的浮點數。 有效值為 0V 到 3.7V。 output-threshold 代表 sensor 臨界電壓值的浮點數。 有效值為 0V 到 3.7V。 clock-frequency 代表應用在電路板的時脈頻率的浮點數。 有效值從 60K 到 3M。注意這個單位是不分大小寫的。 data-bit-order 定義常數,代表讀取或者寫入到序列記憶體裝置的位元 順序。有效值是 MSB_LSB (從 LSB 到 MSB)和 LSB_MSB(從 MSN 到 LSB)。 MSB_LSB 的數值是 1; LSB_MSB 的數值是 2。 error 非必要的。. 整數變數保留從程式呼叫回傳的狀態值。 假如成功的話,回傳數值為 0;失敗的話,回傳的數值為 正數。  例如: SPI_CONFIG(TAP=1,VIH=3,VTH=2,FREQ=1M,BIT_ORDER=MSB_LSB); 138 TR5001T User Guide – TPG v.1.0.0 Test Research Inc. 13.2 SPI_INIT  類型: 標準函式  敘述: 使用這個陳述,來關閉腳位的繼電器,而且開啟在指定 OBP 序列介面上的 driver。.  語法: [ error = ] SPI_INIT ( TAP = TAP-No ) ; Field TAP-No Description 代表 OBP 序列介面的整數。 有效值為 1、2、和 3。 error 非必要的。. 整數變數保留從程式呼叫回傳的狀態值。 假如成功的話,回傳數值為 0;失敗的話,回傳的數值 為正數。  例如: SPI_CONFIG(TAP=1,VIH=3,VTH=2,FREQ=2M,BIT_ORDER=MSB_LSB); SPI_INIT(TAP=1); ...... SPI_RST(TAP=1); TR5001T User Guide – TPG v.1.0.0 139 Test Research Inc. 13.3 SPI_RST  類型: 標準函式  敘述: 使用這個陳述來關閉 driver,和開啟在 OBP 序列介面上腳位的繼電器。  語法: [ error = ] SPI_RST ( TAP = TAP-No ) ; Field Description TAP-No 代表 OBP 序列介面的整數數值。 有效值為 1、2、和 3。 error 非必要的。. 整數變數保留從程式呼叫回傳的狀態值。 假如成功的話,回傳數值為 0;失敗的話,回傳的數值 為正數。  例如: SPI_CONFIG(TAP=1,VIH=3,VTH=2,FREQ=2M,BIT_ORDER=MSB_LSB); SPI_INIT(TAP=1); ...... SPI_RST(TAP=1); 140 TR5001T User Guide – TPG v.1.0.0 Test Research Inc. 13.4 SPI_RW  類型: 標準函式  敘述: 使用這個陳述,去讀取或寫入到序列記憶裝置。 讀取或寫入的序列,圈住在單一的陳述上是被允許的。 START pattern 暗示著會從這裡開始執行陳述, END patter 暗示著執行陳述到這裡就結束。  語法: [ error = ] SPI_RW ( WDATA = write-data , BI;T_COUNT = number-of-bits [ , START = start-index ] [ , ORG = data-width ] ) ; or [ error = ] SPI_RW ( RDATA = read-data , BIT_COUNT = number-of-bits [ , START = start-index ] [ , ORG = data-width ] ) Field write-data Description 整數類型的數值、陣列或字串,代表寫入或讀取的資 料。 整數類型有 CHAR、BYTE、INTERGER 和 DWORD 。 read-data 整數類型的變數、陣列,用來保留從序列記憶裝置讀取 到的資料。 number-of-bits start-index 整數,代表實際位元的數值。 用來讀取或寫入到序列記憶體裝置。 非必要的。.代表開始讀取或寫入的陣列索引值的整數數 值。 data-width 非必要的。整數,代表轉換到實際資料的位元數值。 例如, 8 是用在 byte 資料,16 是用在 word 資料。 error 非必要的。. 整數變數保留從程式呼叫回傳的狀態值。 假如成功的話,回傳數值為 0;失敗的話,回傳的數值為 正數。  Example VAR ID:DWORD; ...... SPI_CONFIG(TAP=1,VIH=3,VTH=2,FREQ=2M,BIT_ORDER=MSB_LSB); SPI_INIT(TAP=1); TR5001T User Guide – TPG v.1.0.0 141 Test Research Inc. SPI_RW(WDATA=0B00010101,BIT_COUNT=8, // Read command RDATA=ID,BIT_COUNT=16,ORG=8); // Read out IDs IF ID<>0H601F THEN { WRITELN(‘CHECK ID FAIL‘); GOTO ERROR; } ...... ERROR: SPI_RST(TAP=1); 142 TR5001T User Guide – TPG v.1.0.0 Test Research Inc. 13.5 Study – ATMEL SPI Flash EEPROM 這個部分所使用的裝置是 AT45DB011B,1Mega(128 x 8)序列介面快閃記憶體。 提供這個部份的資料來源,是來自 Atmel Corporation 的文件:  AT45DB011B 1Mbit, 2.7-Volt Only Serial-Interface Flash with One 264-Byte SRAM Buffer 全域常數倍定義以適用於整個程式  CONST 常數 TAPNO 定義哪一個 OBP TAP 連接到 DUT.  TAPNO=1; 常數 CTRLMEMSIZE 定義 serial controller 上的記憶體大小,單位為 bytes.  CTRLMEMSIZE=0H8000; 常數 MEMSIZE 定義 EEPROM 大小,單位為 bytes  MEMSIZE=0H20000; 常數 PAGESIZE 定義 SRAM 資料緩衝區大小,其位於 EEPROM 內用以作 page 運算  PAGESIZE=264; 常數 NUMPAGES 定義在 EEPROM 內 page 的數量  NUMPAGES=512; 常數 TIMEOUT 定義寫入時最大的時間限制  TIMEOUT=10000; Flag bits 定義如下,可用以檢驗程式是否有完成  ERASEFLAG=101;  PROGRAMFLAG=102;  VERIFYFLAG=103;  BLANKFLAG=104;  TIMEOUTFLAG=105; TR5001T User Guide – TPG v.1.0.0 143 Test Research Inc. 13.5.1 READ/VERIFY/BLANK CHECK READ 的運算代碼為 0HE8. OP 代碼用以包含 read, verify, and blank check operations,使其運作於單一程序以減少程式 量 SUBROUTINE READDATA(OP:INTEGER); VAR BUFFER,DATA:BYTE[MEMSIZE]; 因為讀取的資料大小皆為 page size 的倍數,因此以下變數 PAGEADR, MAXPAGE, 與 MAXBYTE 常用於程式中以取得完整的資料。 PAGEADR,BUFFERADR,FAILADR:DWORD; MAXPAGE,MAXBYTE,I:INTEGER; { PAGEADR=0; BUFFERADR=1; 此控制器最大可接容納的 pages 數量為 MAXPAGE. MAXPAGE=CTRLMEMSIZE/PAGESIZE; MAXBYTE=MAXPAGE*PAGESIZE; FOR I=1 TO NUMPAGES/MAXPAGE DO { SPI_RW(WDATA=0HE8,BIT_COUNT=8, // Read opcode WDATA=0,BIT_COUNT=6, // 6 Reserved bits WDATA=PAGEADR,BIT_COUNT=9, // 9-bit Page address WDATA=0,BIT_COUNT=9, // 9 don‘t care bits WDATA=0,BIT_COUNT=32, // extra 32 don‘t care bits RDATA=BUFFER,START=BUFFERADR,BIT_COUNT=MAXBYTE*8, ORG=8); PAGEADR=PAGEADR+MAXPAGE; BUFFERADR=BUFFERADR+MAXBYTE; }; Read out the rest. SPI_RW(WDATA=0HE8,BIT_COUNT=8, // Read opcode WDATA=0,BIT_COUNT=6, // 6 Reserved bits WDATA=PAGEADR,BIT_COUNT=9, // 9-bit Page address WDATA=0,BIT_COUNT=9, // 9 don‘t care bits WDATA=0,BIT_COUNT=32, // extra 32 don‘t care bits RDATA=BUFFER,START=BUFFERADR, BIT_COUNT=(MEMSIZE-BUFFERADR+1)*8,ORG=8); IF OP=1 THEN // Verify { LOADBYTE(DATA,‘AT45DB011B.BIN‘); FAILADR=ARRCMP(BUFFER,1,DATA,1,MEMSIZE); IF FAILADR>0 THEN { FAILADR=FAILADR-1; FLAGFAIL(VERIFYFLAG); 144 TR5001T User Guide – TPG v.1.0.0 WRITE(‘Fail Addr.=‘,FAILADR); }; } ELSE IF OP=2 THEN // Blank check { ARRSET(DATA,1,0HFF,MEMSIZE); FAILADR=ARRCMP(BUFFER,1,DATA,1,MEMSIZE); IF FAILADR>0 THEN { FAILADR=FAILADR-1; FLAGFAIL(BLANKFLAG); WRITE(‘Fail Addr.=‘,FAILADR); }; } ELSE IF OP=3 THEN // Read SAVEBYTE(BUFFER,‘AT45DB011B-READ.BIN‘); }; Test Research Inc. TR5001T User Guide – TPG v.1.0.0 145 Test Research Inc. 13.5.2 檢查狀態暫存器 狀態暫存器可用以辨識裝置於寫入時的 ready/busy 狀態。READ 狀態的暫存器運作編碼為 0HE8,第七個 bit 如若是 1 即代表寫入完成 The status register can be used to determine the device‘s ready/busy status for a write operation. A read status register operation code is 0HE8. The 7th bit is 1 indicating a write completion. SUBROUTINE CHKSTATUS(); VAR SR:BYTE; // Status Register I:INTEGER; { SR=0; // Bit7=0,busy FOR I=1 TO TIMEOUT DO { SPI_RW(WDATA=0HD7,BIT_COUNT=8, // Read status opcode RDATA=SR,BIT_COUNT=8); IF (SR&0H80)=0H80 THEN // Bit7=1,ready BREAK; }; IF I>=TIMEOUT THEN FLAGFAIL(TIMEOUTFLAG); }; 146 TR5001T User Guide – TPG v.1.0.0 Test Research Inc. 13.5.3 燒錄 這裡使用的燒錄功能是使用 Buffer Write 運算緊接著 Buffer to Main Memory Page Program 運 算。Buffer Write 運算編碼是 0H84. 。Buffer to Main Memory Page Program 運算編碼是 0H83. SUBROUTINE PROGRAMMING(); VAR BUFFER:BYTE[MEMSIZE]; 陣列 BLANK 用以與空白的 page 比較,如果 page 比較結果為空白的,那就直接跳過燒錄. BLANK:BYTE[PAGESIZE]; 變數 PAGEADR 是一個 page 的計數器。它於程式中用以使資料可以一頁一頁的寫入 PAGEADR,BUFFERADR:DWORD; { LOADBYTE(BUFFER,‘AT45DB011B.BIN‘); ARRSET(BLANK,1,0HFF,PAGESIZE); PAGEADR=0; BUFFERADR=1; WHILE PAGEADR

若举报审核通过,可奖励2下载分
举报人:
被举报人:573838882
举报的资源分:0
* 类型:
* 详细原因:
Top_arrow
回到顶部
EEWORLD下载中心所有资源均来自网友分享,如有侵权,请发送举报邮件到客服邮箱bbs_service@eeworld.com.cn 或通过站内短信息或QQ:273568022联系管理员 高进,我们会尽快处理。