Design Compiler常用命令大总结~

news/2024/10/5 17:57:45 标签: fpga开发, 静态时序分析STA, 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 必须命名
'''

(根据后续学习过程进行持续更新中~)


http://www.niftyadmin.cn/n/5691122.html

相关文章

【2024版本】Mac/Windows IDEA安装教程

IDEA 2024版本真的很强大,此外JDK发布了最新稳定版 JDK21 ,只有新版本支持JDK 21、JDK22。原来数据库插件不支持redis等一些NoSql的数据库的连接,如果要使用需要自己单独装收费的插件。直接打开idea就很吃内存了,再打开其他一大堆…

Pyhton爬虫使用Selenium实现浏览器自动化操作抓取网页

第三方库Selenium主要是用来抓取动态生成的网页数据,有些网站的内容要下拉网页才会动态加载,特别是那些使用javaScript渲染的内容。当然Selenium还可用于自动化浏览器操作,比如编写一个自动抢火车票的python脚本,这并不难实现。接…

MATLAB中的并行计算:提升性能的策略与实践

摘要 在科学计算和工程仿真中,MATLAB是一种广泛使用的工具。随着计算需求的增长,利用MATLAB进行并行计算成为了提升性能的关键。本文将探讨MATLAB中的并行计算策略,包括使用并行工具箱、多线程、GPU计算等,并提供实际代码示例。 …

HTB:Preignition[WriteUP]

连接至HTB服务器并启动靶机 靶机IP:10.129.157.49 分配IP:10.10.16.12 1.Directory Brute-forcing is a technique used to check a lot of paths on a web server to find hidden pages. Which is another name for this? (i) Local File Inclusion, (…

Golang | Leetcode Golang题解之第456题132模式

题目&#xff1a; 题解&#xff1a; func find132pattern(nums []int) bool {candidateI, candidateJ : []int{-nums[0]}, []int{-nums[0]}for _, v : range nums[1:] {idxI : sort.SearchInts(candidateI, 1-v)idxJ : sort.SearchInts(candidateJ, -v)if idxI < idxJ {ret…

ARM assembly: lesson 11

在之前&#xff0c;我们提到&#xff0c;当函数的参数小于等于4个时&#xff0c;我们会把它存放于寄存器中&#xff0c;但是如果函数参数大于4个&#xff0c;我们就需要通过stack去进行参数的存储,这毫无疑问&#xff0c;将增加代码操作的复杂性&#xff0c;因为我们需要对于栈…

【机器学习】探索GRU:深度学习中门控循环单元的魅力

目录 &#x1f354; GRU介绍 &#x1f354; GRU的内部结构图 2.1 GRU结构分析 2.2 GRU工作原理 2.4 Bi-GRU介绍 2.3 使用Pytorch构建GRU模型 2.5 GRU优缺点 &#x1f354; 小结 学习目标 &#x1f340; 了解GRU内部结构及计算公式. &#x1f340; 掌握Pytorch中GRU工具…

TX-LCN框架 分布式事务

一、三种事务模式 1&#xff09;LCN 基于XA协议&#xff0c;事务提交或回滚的操作由事务管理服务器统一告诉它管理的多个项目&#xff0c;也就是说在A事务&#xff0c;B事务的事务提交操作或回滚操作都是在同一时刻发生&#xff0c;并且要么都提交&#xff0c;要么都回滚。 LCN…