linux下的EDA primetime使用

2021-08-06 05:39:44 字數 4805 閱讀 5033

primetime是進行靜態時序分析(sta)的工具,根據設計者給出的時序約束來對電路進行分析觀察設計是否滿足時序要求。

pt能夠提供以下檢查:

建立時間和保持時間檢查;

時鐘脈衝寬度的檢查;

時鐘門的檢查;

未約束的時鐘端點;

組合反饋迴路等。

需要注意的是pt的輸入檔案是門級網表,一般先要通過dc將rtl級電路轉化為門級網表之後作為pt的輸入。

例項:需要**的電路:fifo.v

module fifo(datain, rd, wr, rst, clk, dataout, full, empty);

input [7:0] datain;

input rd, wr, rst, clk;

output [7:0] dataout;

output full, empty;

wire [7:0] dataout;

reg full_in, empty_in;

reg [7:0] mem [15:0];

reg [3:0] rp, wp;

assign full = full_in;

assign empty = empty_in;

// memory read out

assign dataout = mem[rp];

// memory write in

always@(posedge clk) begin

if(wr && ~full_in) mem[wp]<=datain;

end// memory write pointer increment

always@(posedge clk or negedge rst) begin

if(!rst) wp<=0;

else begin

if(wr && ~full_in) wp<= wp+1'b1;

endend// memory read pointer increment

always@(posedge clk or negedge rst)begin

if(!rst) rp <= 0;

else begin

if(rd && ~empty_in) rp <= rp + 1'b1;

endend// full signal generate

always@(posedge clk or negedge rst) begin

if(!rst) full_in <= 1'b0;

else begin

if( (~rd && wr)&&((wp==rp-1)||(rp==4'h0&&wp==4'hf)))

full_in <= 1'b1;

else if(full_in && rd) full_in <= 1'b0;

endend// empty signal generate

always@(posedge clk or negedge rst) begin

if(!rst) empty_in <= 1'b1;

else begin

if((rd&&~wr)&&(rp==wp-1 || (rp==4'hf&&wp==4'h0)))

empty_in<=1'b1;

else if(empty_in && wr) empty_in<=1'b0;

endendendmodule

對電路進行dc綜合以得到門級網表,dc綜合的指令碼如下dc.tcl:注意庫路徑要自己改

set synopsys_dc_setup_file 0

if

define_design_lib work -path "work"

analyze -library work -format verilog fifo.v

elaborate -architecture verilog -library work fifo

check_design

create_clock clk -name ideal_clock1 -period 20

set_input_delay 8.0 [remove_from_collection [all_inputs] clk] -clock ideal_clock1

set_output_delay 8.0 [all_outputs] -clock ideal_clock1

set_max_area 0

compile -map_effort medium -area_effort medium

report_area > synth_area.rpt

report_cell > synth_cells.rpt

report_qor > synth_qor.rpt

report_resources > synth_resoutces.rpt

report_timing -max_paths 10 > synth_timing.rpt

write_sdc fifo.sdc

write -f ddc -hierarchy -output fifo.ddc

write -hierarchy -format verilog -output fifo.v

在將fifo.v檔案和dc.tcl檔案放好後,右鍵開啟終端,先後輸入

dc_shell
source dc.tcl
完成dc綜合,此時fifo.v已經轉化問門級網表

接下來進行pt時序分析

右鍵開啟終端,輸入

pt_shell

和dc一樣,指定庫的路徑

set target_library [ list /home/tshell/lib/tsmc90/fast.db]

set link_library "* $target_library"}

讀入fifo.v檔案

read_verilog fifo.v

指定頂層檔案

current_design fifo

讀入時序約束檔案sdc檔案

source fifo.sdc

之後可以看分析結果,設計中主要四種路徑時序比較典型:

輸入到暫存器

暫存器到暫存器

暫存器到輸出

輸入到輸出

輸入如下指令檢視時序

report_timing -from [all_inputs] -to [all_registers -data_pins] > timing.rpt

report_timing -from [all_register -clock_pins] -to [all_registers -data_pins] >> timing.rpt

report_timing -from [all_registers -clock_pins] -to [all_outputs] >> timing.rpt

report_timing -from [all_inputs] -to [all_outputs] >> timing.rpt

之後開啟timing.rpt檢視結果。

注:

report_timing -from [all_inputs] -to [all_registers -data_pins] > timing.rpt
是預設下的輸出,如果想進行特定條件下的輸出,需要加入引數

如要輸出暫存器到暫存器的保持時間最小的10條路徑,可以修改指令

report_timing -from [all_register -clock_pins] -to [all_registers -data_pins] -max_paths 10 -slack_lesser_than 200 -delay_type min > timing.rpt

以上是通過指令行完成,也可以把指令寫成tcl指令碼來執行。

set target_library [ list /home/tshell/lib/tsmc90/fast.db]

set link_library "* $target_library"

read_verilog fifo.v

current_design fifo

link_design fifo

source fifo.sdc

report_timing -from [all_inputs] -to [all_registers -data_pins] > timing.rpt

report_timing -from [all_register -clock_pins] -to [all_registers -data_pins] >> timing.rpt

report_timing -from [all_registers -clock_pins] -to [all_outputs] >> timing.rpt

report_timing -from [all_inputs] -to [all_outputs] >> timing.rpt

儲存後,輸入

pt_shell

source dc.tcl

即可

Linux下ZendOptimizer的安裝與配置

內容 在裝的好的red hat linux 9 apache 2.0.55 mysql 5.1.6 php 5.1.2後,接下來就是安裝linux下的php加速器zendoptimizer 2.6.2了。自己編譯 php 後,zend optimizer 2.6.2 需要自己設定一下,請參照以下步驟...

Linux下的命令

管理員 普通使用者 pwd 顯示當前檔案全路徑 date 顯示系統當前日期和時間 who 顯示當前已登入的所有使用者名稱 cal 顯示日曆 uname r m,i,v 顯示當前系統作業系統資訊 wc l 行數,w字數,c位元組數 統計字數 clear 清屏 檔案操作touch 新建檔案mkdir 新...

linux 下 奇怪的

最近在做乙個從hp ux移行到linux 上面的專案,遇到乙個命令 hp ux date y m d h m s read sys date sys time dev null 2 1 但是這個命令在linux 下,就達不到預期的結果 之後問了高手,才得到解決辦法 linux read sys da...