第一部分
read_verilog 把设计读入内存
current design
report cell 察看设计中包含哪些器件
Environment Constraints
operating condition
list_libs 看有哪些库
report_lib lib文件看现有的条件约束是什么(如温度,电压等)
set_operating_conditions –lib lib文件设置约束条件(标准)
report_design 察看设计采用什么约束
wire load model
report_lib lib文件看现有的wire loading model有哪些
set_wire_load_model –name “10x10”设置wire load model “10x10”为模型名称
设置完成后最好report_design看一下变化
System Interface
input Drive Strength
默认情况下输入驱动电阻为零,即驱动能力无限大,所以要加实际的驱动电阻
set_driving_cell –lib_cell FD1 –pin Q[get_ports IN1]设置驱动能力(从库中的驱动cell获得)
Capacitive Load
默认情况下负载电容为零
set_load 5 [get_ports out1] 设置为常量
set_load [load_of my_lib/AN2/A] [get_ports out1] 用库中的设置
set_load [expr [load_of my_lib/inv1a0/A] * 3] [get_ports out1]
Output Fanout Load
set_fanout_load 4[get_port out1] 把fanout设成常量
Clock Definition
create_clock –period 10 [get_ports clk1] 生成了一个周期为10的时钟,由于没使用-name此时钟名称为clk1。由于没有定义波形所以该时钟有50个周期
create_clock –name clk2_in –period 10 –waveform { } [get_ports clk2]
产生了一个名字为clk2_in周期为10,
create_generated_clock –name DIVIDE –source SYSCLK -divide_by 2 [get_pins U4/Q]
产生一个二分频的时钟DIVIDE,源时钟为SYSCLK
Clock Latency and Uncertainty
默认的时钟是没有延迟的理想时钟。
set_clock_uncertainty -setup [get_clocks CLK]
set_clock_uncertainty -hold [get_clocks CLK]
set_clock_uncertainty -from PHI1 -to PHI1
set_clock_uncertainty -from PHI2 -to PHI2
set_clock_uncertainty -from PHI1 -to PHI2
set_clock_uncertainty -from PHI2 -to PHI1
设置时钟延迟(分为两种,一种是源延迟,一种是网络延迟,全部的延迟等于两种延迟之和)
set_clock_latency 1 [get_clocks CLK]
set_clock_latency –source 3 [get_clocks CLK]
set_propagated_clock [get_clocks CLK]
Clock Definition Example
dc_shell-t> create_clock -p 10 clk1
set_clock_uncertainty [get_clocks clk1]
set_clock_latency 1 [get_clocks clk1]
set_clock_latency -source 3 [get_clocks clk1]
create_generated_clock -name clk_2 -source clk1 -divide_by 2 [get_pins clk_2_reg/Q]
report_clocks
report_clocks -s
dc学习笔记 来自淘豆网m.daumloan.com转载请标明出处.