Design Compiler常用命令大总结~
Design Compiler常用命令大总结~
1.读取RTL级代码
方式①——read_verilog
read_verilog {A.v B.v Top.v} #读取RTL文件
current_design Top.v #设置当前设计
link
check_design #检查RTL代码是否正确
方式②——analyze&elaborate
analyze -format varilog {A.v TOP.v}
elaborate MY_TOP
2.时序约束
在DC中,通常是基于路径(PATH)进行时序约束。将一个完整的RTL级代码的所有路径可分为以下三种:
- 输入路径(输入端口到寄存器D端)
- 内部路径(寄存器clock端到寄存器D端)
- 输出路径(寄存器clock端到输出端口)
对于内部路径的时序约束(reg-to-reg)
①create_clock
create_clock -period 2 [get_ports clk]
定义一个时钟周期为2ns,此时时钟网络为理想的时钟网络。为了更加贴合实际的工作环境,需要预估不确定性(uncertainty = skew+jitter+margin)、延迟(Latency)和转换时间(Transition)并将其建模以便更准确的表示时钟行为;
②set_clock_uncertainty
设置时钟网络中可能会出现的一些不确定情形;
set_uncertainty -setup Tu [get_clocks clk]
'''
-setup: 建立时间
-hold: 保持时间
无: 既给建立时间设置,又给保持时间设置
'''
③set_clock_latency
- 源延时模型(Source Latency):从实际时钟源(晶振产生clock的地方)到create_clock端口或pin的延迟;
- 网络延时模型(NetWork Latency):从create_clock端口或引脚到寄存器时钟引脚的平均“内部”延迟;
set_clock_latency -source -max 0.3 [get_clocks clk]
set_clock_latency -max 0.3 [get_clocks clk]
④set_clock_transition
set_clock_transition Tt [get_clocks clk]
对于输入路径的约束(port-to-reg)
①set_input_delay
对单个输入端口A进行约束:
set_input_delay -max 0.6 -clock clk [get_ports A]
#-max 外部可消耗的最大delay
对所有输入端口(时钟端口clk除外)进行约束:
所有输入端口的输入延迟都相同
set_input_delay -max 0.6 -clock clk \
[remove_from_collection [all_inputs] [get_ports clk]]
'''
1. "\"表示换行
2. remove_from_collection
3. all_inputs
'''
另一种方式,部分端口输入延迟相同
set_input_delay -max 0.5 -clock clk [all_inputs]
set_input_delay -max 0.8 -clock clk [get_ports C] #该命令可覆盖上一命令中对端口C的时序约束
remove_input_delay [get_ports clk]
'''
remove_input_delay
'''
对于输出路径的约束(reg-to-port)
①set_output_delay
对单个输出端口B进行约束;
set_output_delay -max 0.8 -clock clk [get_ports B]
限制所有输出端口都相同
set_output_delay -max 0.8 -clock clk [all_outputs]
'''
all_outputs
'''
对于纯组合逻辑时序约束
设置虚拟时钟;
create_clock -name VCLK -period 2
'''
-name 必须命名
'''
(根据后续学习过程进行持续更新中~)
原文地址:https://blog.csdn.net/qq_44629558/article/details/142663177
免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!