星期一, 12月 18, 2006

使用PrimePower

PrimePower是Gate Level Power Estimation的工具

使用的程序如下:
1. 先合成出gate level的net list
2. 輸出 netlist 以及sdf
3. 跑gate level simulation在 Test Bench先要加入以下兩行
$sdf_annotate("aaa.sdf", U_aaa");
$dumpfile("aaa.vcd")
4. 會得到aaa.vcd, 然後再執行PrimePower


以下指令:
set search_path {. /aaa/bbb} // /aaa/bbb是Cell Lib的路徑
set link_lib {* xxx.db} // xxx.db是所使用的Cell Lib
set target_lib {* xxx.db}
read_verilog aaa.v // aaa.v是合成出來的gate level netlist
current_design aaa // aaa是 Top Module
read_vcd -strip_path tb_aaa/U_aaa aaa.vcd //tb_aaa/U_aaa 是 Test Bench裡面Top Module
calculate_power -waveform //註: -waveform才會有Peak Power的結果
report_power




使用PowerCompiler

1. 在Verilog Test Bench 加入
initial begin
$dumpfile("xxx.vcd");
$dumpvars;
end

2. 將vcd格式轉為saif格式 (Linux 指令)
vcd2saif -i xxx.vcd -o xxx.saif

3. 將Saif讀進來 (DC Shell)
read_saif -input xxx.saif -instance tb_core/U_CORE

Verilog File I/O System Task

integer $fopen(file_name, mode)
file_name: 要開啟檔案的名稱
mode : "r" for read "w" for write
Return : 會回傳一個數字表示 file descriptor


integer $fread(mem, fd, start, num)
mem : 資料要寫入的地方
fd : file descriptorstart : 資料要從 mem 的第幾筆開始寫
num : 要讀幾筆 (一筆的寬度是由mem的宣告決定)
return : 會回傳到底讀了多少 byte


integer $fseek(fd, nb, mode)
fd : file descriptor
nb : number of byte
mode :
0: seek from begin
1: seek from current
2: seek from end


integer $fscanf(fd, format, args...)
fd: file descriptor
format: format
args: 參數
Returns:回傳讀了多少參數

$fdisplay(fd, format, args...)
fd: file descriptor
format: format