DC LAB8SDC约束四种时序路径分析

news2024/11/28 11:55:46

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

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/628661.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

1句代码,挽回1000万损失

前言: 在企业中,出于数据安全和应用高可用,很多软件和企业会对工程文件、数据库等做自动备份和应用容灾等。一份数据或者文件会保留到很多地方,虽然满足了安全性的需求,但是会因为保存数据区间太久造成占用大量的存储成…

chatgpt赋能python:Python快速入门神器:入门教程

Python快速入门神器:入门教程 Python作为一种高级的编程语言,在近年来逐渐成为编程语言领域里面的一匹黑马,在数据科学、人工智能、自动化测试和WEB开发等领域都得到了广泛的应用。Python极易入门,使用简单,代码质量较…

UnityVR--组件8--Avatar骨骼映射遮罩

什么是Avatar 模型中的人物都具有结构相似的骨架,如果建立一个模型骨架结构的映射,就能将同一个动画应用于不同的模型中,这就是Avatar,实现了一种动画重定向的功能。一般使用3DMax、Maya制作并导出为.fbx的人物模型,在…

【MySQL】MySQL在Linux中的环境安装与基本使用

目录 一、MySQL环境的安装 1、MySQL环境安装 2、安装MySQL出现的问题 3、登录MySQl 3.1方案一 3.2方案二 4、修改MySQL配置文件 5、可选设置:开机自启动MySQL(云服务器没事一般不会关机) 二、MySQL数据库基础 1、一些概念 2、基本…

Java中进制转换的两种方法你知道吗?

目录 十进制转其他进制 其他进制转十进制 实战: A进制转B进制 关于大数运算可以参考躲不掉的高精度计算,蓝桥杯必考_高精度算法在哪些比赛考_无忧#的博客-CSDN博客 十进制转其他进制 使用 Integer.toString(int n,int radix) 方法,该方法…

【LeetCode】739. 每日温度

739. 每日温度(中等) 思路 我们可以维持一个单调递减的栈,表示每天的温度;为了方便计算天数差,这里存放位置(下标),而非温度本身。因为温度可以通过访问数组下标获取。 从左向右遍历…

书接上文,基于藏文手写数字数据开发构建yolov5n轻量级藏文手写数字检测识别系统

在上一篇文章中:《python基于轻量级CNN模型开发构建手写藏文数字识别系统》 开发实现了轻量级的藏文手写数字识别系统,这里主要是想基于前文的数据,整合目标检测模型来进一步挖掘藏文手写数字数据集的可玩性,基于yolov5n开发构建…

Android kotlin序列化之@Parcelize详解与使用

一、介绍 在Android开发过程中,序列化使用概率一直很高。在页面之间传递的对象,需要要使用序列化,常见的序列化:Parcelable、Serialization。 由于Parcelable在传递压缩比高,效率高,一直被Google官方推荐。…

可调电阻器

1、可调电阻(Trimming Potentiometer,Variable Resistor) 1.1、电气特性(Electrical Characteristics) ItemSpec ExampleDescriptionTotal Resistance(TR),总和阻抗200K端子1和3之间…

独立按键检测短按、长按,松手后响应操作

背景 有项目使用独立按键检测,短按、长按。根据使用效果,发现松手后,也就是按键弹起后响应操作比较好操作。 记得之前,博主写过一篇关于按键的检测的文章,但是过于复杂了。可能很难懂,这里就简单一点&…

Flask学习-环境配置

目录 一.环境部署 二.Flask基本结构 三.完整代码 四.运行效果 一.环境部署 在安装好python,pip环境的基础上在命令行输入如下指令: pip install flask flask框架即安装完毕。 二.Flask基本结构 flask的使用通过创建实例实现。创建方法如下&…

ArgoCD(五)----ArgoCD 各CRD资源配置文件规范

3.4.1 Application资源规范 Application CRD的spec字段主要嵌套如下几个字段: source :配置仓库及相关的配置访问及使用方法;支持如下几种类型: kubernetets的原生配置文件Helm chartkustomize:由kustomize字段进行定义…

软件测试实战,支付二维码测试-测试点汇总,全面覆盖...

目录:导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜) 前言 面试的时候&#…

递归——先递后归——平衡二叉树

目录 1.什么是递归 (1)问问无所不能的chatgpt。 ​(2)我的理解 2.递归的应用之——树 (1)二叉树的录入与打印 (2)举个例子:将有序的数组转化为平衡二叉树 1.什么是递…

ffmpeg中的avs解码器综述

最近拿了一个avs的视频流,用硬件可以解码,但是ffmpeg自带的却无法解码。 所以研究了一下,首先看ffmpeg的avs解码器: 可以看到avs有两个,第一个是avs 第二个是cavs. 我们先用avs来解码,解码的视频是通过【a…

浅谈医院能耗监控平台研究与应用

摘要:综合性医院作为大型公共机构,能耗高的问题日益突出,构建能耗监控平台对医院能耗量化管理以及效果评估已经成为迫切需要。建立智能能耗监控平台,对采集的能耗数据进行分析,实现对医院能耗平台监控,为医…

java并发编程:Fork/Join并发框架介绍

文章目录 Fork/Join简介工作窃取算法Fork/Join的具体实现ForkJoinTaskfork()方法join()方法 ForkJoinPoolWorkQueuerunState Fork/Join的异常处理Fork/Join的使用 Fork/Join简介 Fork/Join框架是一个实现了ExecutorService接口的多线程处理器,它专为那些可以通过递…

java的内部类

1.内部类的概念 内部类表示的事物是外部类的一部分,内部类单独出现没有任何意义。如发动机是汽车的一部分。 内部类的访问特点: (1)内部类可以直接访问外部类的成员,包括私有; (2)外…

11.无监督学习之主成分分析

11.1 降维 降维的两种应用:一是数据压缩;二是可视化数据。 11.1.1 数据压缩 将相关性强的两个特征导致冗余,可以直接去掉其中一个特征,或者将两个特征进行某种转换,得到一个特征。 11.1.2 可视化数据 直接看数据可…

设计模式:提升软件设计质量的利器,适合入门者的指南

目录 导言:设计模式的概念常见的设计模式2.1. 单例模式(Singleton Pattern)2.2. 工厂模式(Factory Pattern)2.3. 观察者模式(Observer Pattern)2.4. 策略模式(Strategy Pattern&…