DC LAB8SDC约束四种时序路径分析
DC LAB
- 1.启动DC
- 2.读入设计
- 3. 查看所有违例的约束报告
- 3.1 report_constraint -all_violators (alias rc)
- 3.2 view report_constraint -all_violators -verbose -significant_digits 4 (打印详细报告)
- 4.查看时序报告 report_timing -significant_digits 4
- 5. 约束组合逻辑(adr_i/coff到comb logic到dout)
- 5.1 创建虚拟时钟
- 5.1.1 set_input_delay 用法
- 5.2 创建虚拟时钟vclk后再report_timing
- 5.2.1 组合逻辑约束,clk与vclk logically_exclusive(设置`clk-->comb-->vclk`, `vclk-->comb-->clk`为false)
- 5.2.2 设置`clk与vclk llogically_exclusive`后再去report_timing -group vclk -significant_digits 4
- 5.3 查看clk的timing, report_timing -group clk -significant_digits 4
- 5.3.1 组合逻辑约束,`设置clk--->comb-->clk为false path`
- 5.3.2 设置`clk--->comb-->clk为false path` 后再report_timing -from $in_ports -to [all_outputs]
- 6. 查看clk group timing ,report_timing -group clk
- 6.1 设置`mul_result_reg*/D `(reg2reg)多周期检查setup `set_multicycle_path `
- 6.1.1 设置完setup,多周期再检查reg2reg(`coeff_q_reg_14_ ` to `mul_result_reg_31_`)的setup
- 6.2 检查hold(肯定violation,多周期设置没设置hold,只设置了setup,hold现在在5ns检查太严格了)
- 6.2.1 设置 `mul_result_reg*/D ` (reg2reg)多周期检查hold
- 6.2.2 设置hold多周期后再检查
- 7.report_constraint -all_violators
- 8.四种时序路径总结
- 8.1 in2reg
- 8.2 reg2reg
- 8.3 reg2out
- 8.4 in2out
- 8.4.1 in2out`(adr_i[0]-->dout[6]) `demo
- 8.4.2 in2out`(coeff[5]-->dout[6]) `demo
- 9.打印所有port、cells、pins
- get_ports
- get_cells
- get_pins
1.启动DC
dc_shell-t -64bit -topo
2.读入设计
read_ddc EXCEPTIONS.ddc
current_design EXCEPTIONS
link
3. 查看所有违例的约束报告
3.1 report_constraint -all_violators (alias rc)
3.2 view report_constraint -all_violators -verbose -significant_digits 4 (打印详细报告)
4.查看时序报告 report_timing -significant_digits 4
- 组合逻辑延时是7.7833-2=5.7833
- 对于adr_i/coff到comb logic到dout,
(in2out,应该定义虚拟时钟vclk)
,将clk-->comb-->clk
,clk-->comb-->vclk
,vclk-->comb-->clk
,这三条设置false - 上图是adr_i/coff到comb logic到dout时序路径,有vio(clk–>input delay 2ns -->coff --> comb logic 5.7833ns --> dout) 这条路径应设置false path
5. 约束组合逻辑(adr_i/coff到comb logic到dout)
- To accomplish this,the combinatorial paths will be constrained using a new virtual clock which you will call vclk.
- The sequential paths are already constrained using the 5ns design clock clk,and input and output delays of 2ns and 4ns,respectively.
- The following schematic illustrates this concept (note that the two input ports, adr_ i and coeff,are collapsed into one port here to simplify the schematic):
5.1 创建虚拟时钟
create_clock -name vclk -period 6
set in_ports [get_ports "coeff* adr_i*"]
set_input_delay 0 -clock vclk -add_delay $in_ports
set_output_delay 0 -clock vclk -add_delay [all_outputs]
5.1.1 set_input_delay 用法
dc_shell-topo> set_input_delay -help
Usage: set_input_delay # set input_delay[-clock clock_name] (relative clock)[-clock_fall] (delay is relative to falling edge of clock)[-level_sensitive] (delay is from level-sensitive latch)[-rise] (specifies rising delay)[-fall] (specifies falling delay)[-max] (specifies maximum delay)[-min] (specifies minimum delay)[-add_delay] (don't remove existing input delay)[-network_latency_included](specifies that clock_network_latency is included)[-source_latency_included](specifies that clock_source_latency is included)[-reference_pin pin_list](list of pins)delay_value (path delay)port_pin_list (list of ports and/or pins)
5.2 创建虚拟时钟vclk后再report_timing
view report_timing -group vclk -significant_digits 4
- 组合逻辑的路径应该只有vclk约束,设置
clk-->comb-->clk
,clk-->comb-->vclk
,vclk-->comb-->clk
为false - The launch clock is vclk and the capture clock is vclk . This is not correct!
- The combinatorial paths should be constrained only by vclk . The two clocks should not interact.
5.2.1 组合逻辑约束,clk与vclk logically_exclusive(设置clk-->comb-->vclk
, vclk-->comb-->clk
为false)
- 对于
clk-->comb-->clk
只有手动设置false了 (5.3.1)
#两种时钟,四种组合,约束后只能从clk到clk或者vclk到vclk
#
set_clock_group -name false_grp1 -logically_exclusive -group clk -group vclk# Altenatively:
#
# set_false_path -from [get_clocks clk] -to [get_clocks vclk]
# set_false_path -from [get_clocks vclk] -to [get_clocks clk]
5.2.2 设置clk与vclk llogically_exclusive
后再去report_timing -group vclk -significant_digits 4
- 组合逻辑延时 5.7833ns
5.3 查看clk的timing, report_timing -group clk -significant_digits 4
- 这里不会显示
vclk-->clk
,因为前面(5.2.1)设置了logically exclusive - 只会显示
clk-->clk
- 上图是addi/coff到comb到dout的时序路径,有vio(clk–>input delay 2ns -->coff --> comb logic 5.7833ns --> dout) 这条路径设置false path ,
- 这条路径用虚拟时钟vclk检查
- 前面5.2.1虽然设置了logic exclusive(
clk-->comb-->vclk
,vclk-->comb-->clk
为false),但是clk—>comb–>clk还是得手动去 false
5.3.1 组合逻辑约束,设置clk--->comb-->clk为false path
set_false_path -from [get_clocks clk] \-through $in_ports \-through [all_outputs] -to [get_clocks clk]
5.3.2 设置clk--->comb-->clk为false path
后再report_timing -from $in_ports -to [all_outputs]
- 由于设置
clk-->comb-->clk
,clk-->comb-->vclk
,vclk-->comb-->clk
为false,故只会显示vclk–>vcomb–>clk这条时序路径
6. 查看clk group timing ,report_timing -group clk
- 从下图可以看出reg2reg 中间组合逻辑延时为9.1589ns,Tcq=0.4383
- 组合逻辑介于一个周期和两个周期之间,所以设置multicycle path(setup设置N,hold则对应N-1)
两个寄存器间的Tcq+Tcomb = 9.5943,单周期检查太严格,故设置多周期检查,setup在第二个周期在检查
6.1 设置mul_result_reg*/D
(reg2reg)多周期检查setup set_multicycle_path
##若setup设置N,hold 对应设置为N-1
set_multicycle_path 2 -setup -to mul_result_reg*/D
6.1.1 设置完setup,多周期再检查reg2reg(coeff_q_reg_14_
to mul_result_reg_31_
)的setup
- 由于只设置了setup,所以这里检查setup的 comb max delay是没有问题的
- 但是检查hold,就过于严苛了
6.2 检查hold(肯定violation,多周期设置没设置hold,只设置了setup,hold现在在5ns检查太严格了)
6.2.1 设置 mul_result_reg*/D
(reg2reg)多周期检查hold
set_multicycle_path 1 -hold -t o mul_result_reg*/D
6.2.2 设置hold多周期后再检查
report_timing -significant_digits 4 -to mul_result_reg*/D -delay min
7.report_constraint -all_violators
- 所有timing vio都已经清除完毕了
8.四种时序路径总结
8.1 in2reg
report_timing -group clk
[-add_delay] (don't remove existing input delay)
8.2 reg2reg
- 这里设置了
set_multicycle_path 2 -setup -to mul_result_reg*/D
8.3 reg2out
8.4 in2out
8.4.1 in2out(adr_i[0]-->dout[6])
demo
report_timing -from adr_* -to dout[6]
report_timing -from adr_* -to dout*
8.4.2 in2out(coeff[5]-->dout[6])
demo
report_timing -from coeff* -to dout[6]
report_timing -from coeff[0] -to dout[6]
9.打印所有port、cells、pins
get_ports
get_cells
get_pins
相关文章:
DC LAB8SDC约束四种时序路径分析
DC LAB 1.启动DC2.读入设计3. 查看所有违例的约束报告3.1 report_constraint -all_violators (alias rc)3.2 view report_constraint -all_violators -verbose -significant_digits 4 (打印详细报告) 4.查看时序报告 report_timing -significant_digits 45. 约束组合逻辑(adr_i…...
学生考试作弊检测系统 yolov8
学生考试作弊检测系统采用yolov8网络模型人工智能技术,学生考试作弊检测系统过在考场中安装监控设备,对学生的作弊行为进行实时监测。当学生出现作弊行为时,学生考试作弊检测系统将自动识别并记录信息。YOLOv8 算法的核心特性和改动可以归结为…...
【基于容器的部署、扩展和管理】 3.2 基于容器的应用程序部署和升级
往期回顾: 第一章:【云原生概念和技术】 第二章:【容器化应用程序设计和开发】 第三章:【3.1 容器编排系统和Kubernetes集群的构建】 3.2 基于容器的应用程序部署和升级 3.2 基于容器的应用程序部署和升级 3.2 基于容器的应用程…...
Jmeter 实现 grpc服务 压测
一、Jmeter安装与配置 网上有很多安装与配置文章,在此不做赘述 二、Jmeter gRPC Request 插件安装 插件下载地址:JMeter Plugins :: JMeter-Plugins.org 将下载文件解压后放到Jmeter安装目录下 /lib/ext 然后在终端输入Jmeter即可打开 Jmeter GUI界面…...
深入源码分析RecyclerView缓存复用原理
文章目录 前言四级缓存 源码分析缓存一级缓存(mChangedScrap和mChangedScrap)二级缓存(mCachedViews)三级缓存(ViewCacheExtension)四级缓存(mRecyclerPool)缓存池mRecyclerPool结构…...
内网隧道代理技术(一)之内网隧道代理概述
内网隧道代理技术 内网转发 在渗透测试中,当我们获得了外网服务器(如web服务器,ftp服务器,mali服务器等等)的一定权限后发现这台服务器可以直接或者间接的访问内网。此时渗透测试进入后渗透阶段,一般情况…...
设计图形用户界面的原则
1) 一般性原则:界面要具有一致性、常用操作要有快捷方式、 提供简单的错误处理、对操作人员的重要操作要有信息反馈、操作可 逆、设计良好的联机帮助、合理划分并高效地使用显示屏、保证信息 显示方式与数据输入方式的协调一致 2) 颜色的使用:颜色…...
1:操作系统导论
1.1操作系统的定义 •Anoperatingsystemactsanintermediarybetweenuserofacomputerandthecomputer hardware. ◦ 操作系统充当计算机⽤⼾和计算机硬件之间的中介 •Thepurposeofanoperatingsystemistoprovideanenvironmentinwhichausercanexecute programsinaconvenientandeff…...
什么是微软的 Application Framework?
我是荔园微风,作为一名在IT界整整25年的老兵,今天来看一下什么是微软的 Application Framework? 到底什么是 Application Framework? 还没有真正掌握任何一套Application Framework的使用之前,就来研究这个真的不是很…...
一个关于宏定义的问题,我和ChatGPT、NewBing、Google Bard、文心一言 居然全军覆没?
文章目录 一、问题重述二、AI 解题2.1 ChatGPT2.2 NewBing2.3 Google Bard2.4 文心一言2.5 小结 一、问题重述 今天在问答模块回答了一道问题,要睡觉的时候,又去看了一眼,发现回答错了。 问题描述:下面的z的值是多少。 #define…...
【服务器数据恢复】断电导致RAID无法找到存储设备的数据恢复案例
服务器数据恢复环境: HP EVA存储,6块SAS硬盘组建的raid5磁盘阵列。上层操作系统是WINDOWS SERVER。该存储为公司内部文件服务器使用。 服务器故障&分析: 在遭遇两次意外断电后,设备重启时raid提示“无法找到存储设备”。管理员…...
Windows上不可或缺的5款宝藏软件,工作效率拉满!
职场小白与大牛的区别:小白需要耗费大半天琢磨的事情,而大牛可以只花5分钟就能处理。 “牛人”,即拥有过人之处,专业、经验、技术等等,学会灵活运用高效率的工具也是关键的一点。工具找得好,运用得快&#…...
链表内指定区间反转
题目: 将一个节点数为 size 链表 m 位置到 n 位置之间的区间反转,要求时间复杂度 O(n),空间复杂度 O(1)。 例如: 给出的链表为 1→2→3→4→5→NULL,m2,n4 返回 1→4→3→2→5→NULL 数据范围ÿ…...
Vue中如何进行地图展示与交互(如百度地图、高德地图)?
Vue中如何进行地图展示与交互 随着移动互联网的普及,地图应用已经成为人们生活中不可或缺的一部分。在Vue.js中,我们可以使用第三方地图库(如百度地图、高德地图)来实现地图的展示和交互。本文将介绍如何在Vue.js中使用百度地图和…...
uni-app组件概述
1、组件 1.1、组件的含义 组件是视图层的基本组成单元。 组件是一个单独且可复用的功能模块的封装。 组件,包括:以组件名称为标记的开始标签和结束标签、组件内容、组件属性、组件属性值。 <component-name>是开始标签,</compon…...
什么是防火墙?它有什么作用?
作者:Insist-- 个人主页:insist--个人主页 作者会持续更新网络知识和python基础知识,期待你的关注 目录 一、什么是防火墙 二、防火墙的分类 1、软件防火墙 2、硬件防火墙 三、防火墙的作用 1、防止病毒 2、防止访问不安全内容 3、阻…...
基础工程(cubeide串口调试,printf实现,延时函数)
0.基础工程(cubeide串口调试,printf实现,延时函数) 文章目录 0.基础工程(cubeide串口调试,printf实现,延时函数)外部时钟源CLOCK(RCC)系统时钟SYS与DEBUG设置UART串口设置cubeide设置…...
大厂设计师都在用的9个灵感工具
每一件伟大的设计作品都离不开设计师灵感的爆发。设计师有很多灵感来源,比如精美的摄影图片、酷炫的网站设计、APP的特色功能、友好的用户体验动画,或者一篇文章。 设计师每天都需要收集灵感,把灵感收集当成日常生活。在这篇文章中ÿ…...
安全实现SpringBoot配置文件自动加解密
需求背景 应用程序开发的时候,往往会存在一些敏感的配置属性 数据库账号、密码第三方服务账号密码内置加密密码其他的敏感配置 对于安全性要求比较高的公司,往往不允许敏感配置以明文的方式出现。 通常做法是对这些敏感配置进行加密,然后在…...
数据结构--队列2--双端队列--java双端队列
介绍 双端队列,和前面学的队列和栈的区别在于双端队列2端都可以进行增删,其他2个都是只能一端可以增/删。 实现 链表 因为2端都需要可以操作所以我们使用双向链表 我们也需要一共头节点 所以节点设置 static class Node<E>{E value;Node<E…...
网络安全:信息收集专总结【社会工程学】
前言 俗话说“渗透的本质也就是信息收集”,信息收集的深度,直接关系到渗透测试的成败,打好信息收集这一基础可以让测试者选择合适和准确的渗透测试攻击方式,缩短渗透测试的时间。 一、思维导图 二、GoogleHacking 1、介绍 利用…...
Linux 命令总结
基本操作 Linux关机,重启 # 关机 shutdown -h now# 重启 shutdown -r now 查看系统,CPU信息 # 查看系统内核信息 uname -a# 查看系统内核版本 cat /proc/version# 查看当前用户环境变量 envcat /proc/cpuinfo# 查看有几个逻辑cpu, 包括cpu型号 cat /proc/cpuinfo | grep na…...
使用腾讯手游助手作为开发测试模拟器的方案---以及部分问题的解决方案
此文主要介绍使用第三方模拟器(这里使用腾讯手游助手)作为开发工具,此模拟器分为两个引擎,一个与其他模拟器一样基于virtualbox的标准引擎,不过优化不太好,一个是他们主推的aow引擎,此引擎。关于aow没有太多的技术资料…...
牛客网论坛最具争议的Linux内核成神笔记,GitHub已下载量已过百万
原文地址:牛客网论坛最具争议的Linux内核成神笔记,GitHub已下载量已过百万 1、前言 Linux内核是一个操作系统(OS)内核,本质上定义为类Unix。它用于不同的操作系统,主要是以不同的Linux发行版的形式。Linu…...
docker如何容器迁移(实战)
手把手教你如何做容器迁移 第一步准备数据 假设要迁移一个 mysql 服务(docker部署),由于数据库过大(超过50 GB),用mysqldump备份和还原则太过耗时,下面尝试拷贝目录的方式来迁移,详…...
Android kotlin序列化之Parcelable详解与使用(二)
一、介绍 注解序列化篇:Android kotlin序列化之Parcelize详解与使用_蜗牛、Z的博客-CSDN博客 通过上一篇注解序列化,我们已了解的kotlin的序列化比Java复杂了很多。而且有好多问题,注解虽好,但是存在一些问题。 一般在大型商业…...
C++ 类设计的实践与理解
前言 C代码提供了足够的灵活性,因此对于大部分工程师来说都很难把握。本文介绍了写好C代码需要遵循的最佳实践方法,并在最后提供了一个工具可以帮助我们分析C代码的健壮度。 1. 尽可能尝试使用新的C标准 到2023年,C已经走过了40多个年头。新…...
循环链表的创建
循环链表的介绍及创建(C语言代码实现) 点击打开在线编译器,边学边练 循环链表概念 对于单链表以及双向链表,其就像一个小巷,无论怎么样最终都能从一端走到另一端,然而循环链表则像一个有传送门的小巷&…...
如何让GPT的回答令人眼前一亮,不再刻板回复!
我们平常在使用GPT的时候,是否觉得它的回复太过于死板、官方化,特别是用于创作、写论文分析的时候,内容往往让读者提不起兴趣、没有吸引人的地方,甚至有些内容百度都可以搜到。 举个例子,如下图: 问GPT,AI…...
JMeter测试笔记(四):逻辑控制器
引言: 进行性能测试时,我们需要根据不同的情况来设置不同的执行流程,而逻辑控制器可以帮助我们实现这个目的。 在本文中,我们将深入了解JMeter中的逻辑控制器,包括简单控制器、循环控制器等,并学习如何正…...
网站做下CDN防护/培训学校招生方案范文
裤子 36 2迟8 鞋子 42/43稍微有点大 上衣 XXXL(XXL略微有点小) 内裤 XXL就可以要不然腰太细转载于:https://www.cnblogs.com/zhangzs000/p/11007380.html...
地方网站怎么做的/百度一下官网网址
1. 涉及平台 平台管理、商家端(PC端、手机端)、买家平台(H5/公众号、小程序、APP端(IOS/Android)、微服务平台(业务服务) 2. 核心架构 Spring Cloud、Spring Boot、Mybatis、Redis 3. 前端框架…...
河北建设工程交易信息网/北京seo网站优化公司
看到题目一开始想到的是一道求子集和的异或和,可以用$bitset$实现求子集和。然而这道题如果要强算子集和肯定是带不动的,况且还要算方案,所以尝试去找题目中的性质。 看到整除,很容易想到如果是一段区间,区间的头和尾的…...
惠州建设工程造价管理协会网站/英文网站推广
iPad 加 iOS 11,为十分强大再加一分。一直以来,iPad 都是高效工作方式、畅快娱乐体验和强大学习工具的代表。而 iOS 11 还将其带到了一个新境界。众多新特性和新功能将帮你更高效快捷地处理事务,为你带来更强大、更个性化的 iPad 使用体验。而…...
佛山设计网站公司吗/佛山市seo推广联系方式
https://www.zhihu.com/question/24222456 IT行业,未来10年和20年,技术发展方向会是什么? 本人CS 本科刚毕业,正在选择工作方向。希望之后专注一个方向发展。个人目前喜欢backend web and mobile app development. 同时希望听听业…...
jsp网站开发实训报告/百度竞价推广的技巧
Collection 子接口: ArrayList是List 接口和Collection接口的一个子类,用于实例化两种接口 package leiji; import java.util.ArrayList; import java.util.List; import java.util.Collection; public class ArryList { public static void main(String…...