linux下的EDA——primetime使用
来源:互联网 发布:富士触摸屏v8编程软件 编辑:程序博客网 时间:2024/06/06 12:37
primetime是进行静态时序分析(STA)的工具,根据设计者给出的时序约束来对电路进行分析观察设计是否满足时序要求。
指定顶层文件
读入时序约束文件sdc文件
之后可以看分析结果,设计中主要四种路径时序比较典型:
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 outassign dataout = mem[rp];// memory write inalways@(posedge clk) begin if(wr && ~full_in) mem[wp]<=datain;end// memory write pointer incrementalways@(posedge clk or negedge rst) begin if(!rst) wp<=0; else begin if(wr && ~full_in) wp<= wp+1'b1; endend// memory read pointer incrementalways@(posedge clk or negedge rst)begin if(!rst) rp <= 0; else begin if(rd && ~empty_in) rp <= rp + 1'b1; endend// Full signal generatealways@(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 generatealways@(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
set synopsys_dc_setup_file 0if { $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.velaborate -architecture verilog -library WORK fifocheck_designcreate_clock clk -name ideal_clock1 -period 20set_input_delay 8.0 [remove_from_collection [all_inputs] clk] -clock ideal_clock1set_output_delay 8.0 [all_outputs] -clock ideal_clock1set_max_area 0compile -map_effort medium -area_effort mediumreport_area > synth_area.rptreport_cell > synth_cells.rptreport_qor > synth_qor.rptreport_resources > synth_resoutces.rptreport_timing -max_paths 10 > synth_timing.rptwrite_sdc fifo.sdcwrite -f ddc -hierarchy -output fifo.ddcwrite -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"}
read_verilog fifo.v
指定顶层文件
current_design fifo
读入时序约束文件sdc文件
source fifo.sdc
之后可以看分析结果,设计中主要四种路径时序比较典型:
输入到寄存器
寄存器到寄存器
寄存器到输出
输入到输出
输入如下指令查看时序
report_timing -from [all_inputs] -to [all_registers -data_pins] > timing.rptreport_timing -from [all_register -clock_pins] -to [all_registers -data_pins] >> timing.rptreport_timing -from [all_registers -clock_pins] -to [all_outputs] >> timing.rptreport_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.vcurrent_design fifolink_design fifosource fifo.sdcreport_timing -from [all_inputs] -to [all_registers -data_pins] > timing.rptreport_timing -from [all_register -clock_pins] -to [all_registers -data_pins] >> timing.rptreport_timing -from [all_registers -clock_pins] -to [all_outputs] >> timing.rptreport_timing -from [all_inputs] -to [all_outputs] >> timing.rpt
保存后,输入
pt_shellsource dc.tcl即可
阅读全文
1 0
- linux下的EDA——primetime使用
- linux下的EDA——VCS使用
- linux下的EDA——DC使用
- Primetime 的使用
- linux下的EDA——VCS与Verdi仿真
- 我的EDA编程10—30
- EDA——计算机软件系统
- OpenLava——EDA的最佳支撑平台
- Flexlm 介绍— 常见EDA软件的license管理 - tjjbraye的个人空间 - EDA中国门户网站 - powered by X-Space
- Linux中wine环境下安装Protel系列EDA软件
- EDA大作业——交通灯
- EDA大作业——交通灯代码
- EDA工具使用笔记——ISE与modelsim联合仿真
- 《EDA工程的理论与实践——SOC系统芯片设计》前言
- EDA的使用方法
- 一种调试PrimeTime中tcl脚本的办法
- EDA
- EDA?
- M斐波那契数列
- 算法与数据结构 其六 Avl平衡树
- Git Review + Gerrit 安装及使用完成 Code-Review
- Cows POJ
- linux下执行jar与关闭jar进程
- linux下的EDA——primetime使用
- 给Java新手的一些建议----Java知识点归纳(J2EE and Web 部分)
- MySQL 调优基础(一) CPU与进程
- Node应用程序是如何工作的?
- TCP/IP协议
- [js]object.create图解
- Gym 100641A Continued Fractions 模拟|签到
- yii 图像处理
- 学生成绩管理系统(2)