ISE 利用外部資料檔案做測試的方法

2021-07-25 04:55:43 字數 2196 閱讀 5918

以下是示例**。

module example;

reg [287:0] msg [99:0];

integer write_fid;

integer read_fid;

integer row_ptr;

integer col_ptr;

integer x;

initial begin

write_fid = $fopen("out_codeword.txt","w");

//read_fid = $fopen("test_message.txt","r");

//x = $fread(msg,read_fid);

$readmemb("test_message.txt",msg);

row_ptr = 0;

col_ptr = 0;

repeat(100) begin

//repeat(288) begin

$fwrite(write_fid,"%b ",msg[row_ptr]);//[col_ptr]);

col_ptr = col_ptr + 1;

//end

row_ptr = row_ptr + 1;

col_ptr = 0;

$fwrite(write_fid,"\n");

end$fclose(write_fid); //這句很重要

endendmodule

其中test_message.txt放外部資料,讀入到暫存器msg,再把msg輸出到out_codeword.txt

test_message.txt格式如下

1100000100101001011111010101100111......【共288個0/1】

0010100110100110101000111000011110......

......

【共100行】

模組檔案寫完了,就要去測試它,簡單的小模組(比如什麼加法器分頻器),手寫測試樣例也無所謂,但是一旦邏輯複雜,而且要求測試嚴密,覆蓋所有情況的時候,就需要專門的測試樣例了。這些樣例一般體積大,數量多,而且基本不是你寫的。這就決定了,這些樣例一般是以檔案的形式給到你手上的。所以在testbench裡就需要有介面拿到這些檔案裡的測試資料。

我們可以通過ise的系統函式完成這個功能。

我們要用到的有以下幾個系統函式

乙個完整的資料迴圈應該是這樣的:

檔案->暫存器階段,需要用到

$readmemb

用法如下:

reg [data_width-1 : 0] msg [data_count-1 : 0];

$readmemb("testfilepath/testfile.posfix",msg);

上面的兩行**,第一行定義了乙個位寬為data_width,長度為data_count的暫存器組;

第二行把testfile.posfix裡的資料讀入了msg裡

資料檔案的格式參見博文一開始的「太長不看版」

注意readmemb是讀入二進位制資料,但不是讀入二進位制檔案。就是說,測試資料只能有『0』和『1』,但是每個0/1需要佔1個byte而不能是乙個bit

如果需要讀入的資料不是二進位制的,可以用$readmemh,這個是讀16進製制的,讀2~15進製的資料也可以用16進製制的函式來讀,不影響結果。

暫存器->處理->輸出暫存器 階段,不講了,跟一般的測試是一樣的。

輸出暫存器->輸出檔案階段,需要用到

$fopen

$fclose

$fwrite

用法如下:

integer write_fid;

write_fid = $fopen("out_codeword.txt","w");

$fwrite(write_fid,"%b ",msg[row_ptr]);

不需要過多解釋,對c語言有基礎性的了解就可以看懂上面的**。

利用datafile copy將資料檔案重新命名

思路 o 利用rman對資料檔案做copy o 將資料檔案offline o switch檔名,這一步將更改控制檔案中資料檔案對應的檔名 o recover資料檔案 o 將資料檔案online,恢復生產 注 也可以利用這種思路做database copy,然後做switch database,遷移資...

Python讀取測試資料檔案

在日常測試過程中,經常遇到需要讀取測試資料檔案,這邊就涉及到乙個檔案讀取的方法。這篇文章主要以python讀取檔案的基礎方法為本,包括讀取excel檔案 yaml檔案 csv檔案。下面是具體實現方式 import openpyxl import yaml import csv from conf.c...

mysql 的資料檔案

在mysql 中每乙個 資料庫都會在定義好 或者預設 的資料目錄下存在乙個以資料庫名字命名的資料夾,用來存放該資料庫中各種表資料檔案。1 frm 檔案 與表相關的元資料 meta 資訊都存放在 frm 檔案中,包括表結構的定義資訊等。不論是什麼儲存引擎,每乙個表都會有乙個以表名命名的 frm 檔案。...