網頁

2019年11月6日 星期三

使用 Julia 讀取TSK map 檔案(一)

學習一種新的語言最快的方式莫過於實際的應用,TSK map 是晶片測試結果的紀錄檔,裡面
紀錄了每一個 die 的測試結果還有相關的資訊,檔案是以Binary的方式紀錄,今天就介紹用
Julia 來讀取並將內容展開。
下面是 map format 的說明書,其中map file 分為2個部分,第 0~235 byte是map header,
236~end 是每一個 die 的資訊。

首先,對 map 作讀檔的動作,將讀進的資料放入 map_data 變數中:


接著,第一筆資料是 Operator Name,是20個位元組的字元型態
剛剛講過資料是以 binary 型態儲存,因此第一筆資料的20個位元組要轉換為字元,由於後面
還會用到因此我寫一個函數來將轉換,傳回結果是字串型態:


現在就針對第一筆資料處理:
operator_name = to_str(data, 1, 20)
operator_name 字串含有空白字元因此要用正規式將空白刪掉
replace(operator_name, r"\s" => "")
因此可以簡化成:
operator_name = replace(to_str(data, 1, 20), r"\s" => "")

這裡要注意的是 Julia的陣列索引起始是 1 開始,而不是一般電腦語言是從 0 開始,
其餘只要是字元的型態都依此類推,這點讓我很不習慣啊~

第三筆資料是 Wafer Size,從第37 byte 開始佔 2 個 byte,資料型態是 binary,
wafer_size = Int(data[37]) * 256 + Int(data[38])
記得高位元組要乘上 256 + 低位元組
這樣結果會是 80(表示8吋),或是 60(6吋) 或是 120(12吋),結果再乘0.1就好
wafer_size = Int(Int(data[37]) * 256 + Int(data[38]) * 0.1)

其餘 binary 型態的資料依此類推,這樣就可以將 0~235 bytes 資料展開。
結果如下:

上圖每筆資料結尾印出"-"是為了確定字串結尾不含空白字元。

很簡單吧!

下一篇: 使用 Julia 讀取TSK map 檔案(二)


沒有留言:

張貼留言