linux下的EDA——primetime使用

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/moon9999/article/details/77179085
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;
    end
end
// 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;
    end
end
// 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;
    end
end
// 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;
    end
end
endmodule


对电路进行dc综合以得到门级网表,dc综合的脚本如下dc.tcl:注意库路径要自己改

set synopsys_dc_setup_file 0

if { $synopsys_dc_setup_file == 0} {
set target_library [ list /home/tshell/lib/TSMC90/fast.db]

set link_library "* $target_library"}

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

即可









猜你喜欢

转载自blog.csdn.net/moon9999/article/details/77179085