在上一篇文中描述了SDC的基本语法,其中关于时序异常约束并没有进行详细的描述,但是在正常的设计中,一般这种异常的设置反而是需要特别关注的,主要包括:

1. 虚假路径- false path

    不需要满足任何时序要求的路径;实现工具在受约束时,忽略此种路径上的时序。

2. 多周期路径 - multi-cycle

    需要多个时钟周期来传递数据的路径,实现工具会放宽此路径上的时序。

3. 最小和最大延迟 - min/max delay

    具有特殊要求的最大延迟和最小延迟路径,并且实在设计人员想要覆盖推测的建立和保持要求时指定的。

下面将对三种设置进行详细描述:

1. 虚假路径:

    a. 组合电路中的虚假路径:

        

        从这里可以看到A->mux1/A->mux2/A ->B 这个路径是不存在的,因为可以设置false path

   set_false_path -from [get_ports A] -through [get_pins mux1/A] -throught [get_pins mux2/A] -to [get_ports B]

       b. 时序电路的虚假路径

          我们假设在a中sel信号是时序路径产生的,那么这里还是存在上述路径的虚假路径;

       c. 动态激活的虚假路径

           缺个小图

           图里有两个从A->B:

              A->K1 -> B

              A -> K2 -> K3 -> K1 -> B

           如果想让第二条路径不被阻塞,那么C必须为0, 如果C为1,这里第二条路径就像是一个虚假路径了。

           但是如果两个路径的delay不同,且delay1<delay2,这样在A从0->1时,会存在毛刺,反之也会有一个毛刺。

            这种依赖于延迟的路径,可能有毛刺的路径称为动态激活的虚假路径。

             这种路径不应该被声明为虚假路径

       d. 时序的虚假路径

            时序的虚假路径是设计中存在的路径,并且可以被激活,但是设计人员选择不去定时他们,比如:

  •        设计包含配置寄存器 – 在初始化时序电路期间被初始化,此后保持一个静态值,并且寄存器时序不是设计人员关心的;
  •        异步信号的路径 – 比如复位,在最开始时,需要复位达到寄存器的固定值,之后这个路径就不需要定时了;或者构建跨越异步域

        e. 基于总线协议的虚假路径

           比如多个slv和一个master互信,但slv之间并无互信,此时slv之间就可以设置双向false

        f. 虚拟时钟和真实时钟之间的虚假路径

             缺少文档图

             假设这个设计, F1的结果被F3采集,F2的结果被F4采集,这里O1就需要针对clk1和clk2分别指定out_delay;这里就有4个path:

  • F1/CLK1 -> O1/CLK1 out_delay;
  • F1/CLK1 -> O1/CLK2 out_delay;
  • F2/CLK2 -> O1/CLK1 out_delay;
  • F2/CLK2 -> O1/CLK2 out_delay;

              这里path2/path3其实是假的,我们不关注的。但是如果我们采用:

               Set_false_path -from clk1 -to clk2

               这里有个大问题:

                  如果这么设置,那么所有设计中的clk1和clk2之间的路径都不会被check。

              好的做法:

                 通常的做法是创建对应于时钟clk1/clk2的虚拟时钟 ,并相对于虚拟时钟来设置delay和虚拟路径

          g. set_disable_timing

              缺少环路图示

             这里存在一个环路,B出发再回到B,一般工具都会自己断开这种环路,但是如果工具断开的不好,比如从n1断开,这其实可能就不好了,B->C之间就不会check了。

             所以可以采用set_disable_timing来自行打断路径。

             Set_disable_timing和set_false_path的差异是:

                  后者只是阻止该路径的时序,但是延迟计算不会停止;

                  但是前者,路径本身会直接从时序分析中移除

        h. 虚假路径问题

           在执行虚假路径的注意事项:

             a. 不要使用通配符;

             b. 当使用through时,需要关注through是不是冗余的;

             c. 不要在同一路径或者路径线段上设置不同种类的约束;

             d. set_false_path,需要相关约束;

             e. 常见的false path包含: 

                  1. 逻辑上不可能存在的路径;

                   2. 跨时钟域信号经过通路的地方 - max_delay可能更合适;

                   3. 上电后,只需要写一次的路径;

                   4. 复位或者测试逻辑

                       //对于reset, 如果在工作时,reset信号有效时,时钟信号不翻转,可以用false path, 否则不可以

                       // 一般异步复位可以设置false path, 但是当异步复位被时钟捕获之后再对应时钟域中使用时,就不能设false path

                     5. 异步分布式RAM的写入时钟和异步读取时钟之间的路径

  

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

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Python练习】048. 编写一个函数,实现简单的命令行接口,接受用户输入并响应

048. 编写一个函数,实现简单的命令行接口,接受用户输入并响应 在 Python 中,可以通过 input() 函数创建一个简单的命令行接口,接受用户输入并根据输入内容进行响应。 示例代码 def simple_command_line_interface():"""实现一个简单的命令行接口,接受用…

软件工厂语境下的知识系统选型:兼顾合规性与集成深度

在过去几十年间&#xff0c;制造业从“工匠手作”迈向“工业流水线”&#xff0c;完成了生产效率的巨大飞跃。当软件开发也面临交付复杂性、合规要求与协作成本不断上升的现实&#xff0c;“软件工厂”的理念逐步兴起。 在这场“开发现代化”的转型中&#xff0c;知识管理被重新…

C语言-一维数组,二维数组

数组 数组的引入如果要在程序中保存一个人的年龄&#xff1f;如何保存&#xff1f; 答&#xff1a;创建一个基于int类型的变量&#xff0c;举例&#xff1a;int age 22如果要在程序中保存一个人的三门课的成绩&#xff1f;如何保存&#xff1f; 答&#xff1a;创建三个基于flo…

如何区别HTML和HTML5?

要区分 HTML&#xff08;通常指 HTML4 及更早版本&#xff09;和 HTML5&#xff0c;主要可以从以下关键方面进行比较&#xff1a;一、文档声明区别 <!-- HTML4 文档声明 --> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http:/…

Java实战:实时聊天应用开发(附GitHub链接)

一、前置技术项目介绍&#xff1a; 项目为局域网沟通软件&#xff0c;类似内网通&#xff0c;核心功能包括昵称输入、聊天界面展示在线人数&#xff08;实时更新&#xff09;、群聊&#xff0c;也可扩展私聊、登录注册、聊天记录存储等功能&#xff0c;结尾附GitHub链接。项目涉…

linux 的list_for_each_entry

linux的宏定义提高了代码的简洁性&#xff0c;但有时候的命名不够完美。比如list_for_each_entry&#xff0c;看名字只知道是遍历list&#xff0c;但一看里面的三个变量参数&#xff0c;有点懵逼。/*** list_for_each_entry - iterate over list of given type* pos: …

分布式面试点

目录 1.分布式理论 为什么CAP不可兼得呢? 2.CAP对应的模型和应用 3.Base理论 4,有哪些分布式锁的案例 5.分布式事务 6.Seata 分布式一致性算法 1. 准备阶段&#xff08;Prepare Phase&#xff09; 2. 接受阶段&#xff08;Accept Phase&#xff09; 3. 学习阶段&…

Neo4j系列---【Linux离线安装neo4j】

Linux离线安装neo4j 1.官方安装文档 地址&#xff1a;https://neo4j.com/docs/operations-manual/current/installation/linux/tarball/ 2.如果浏览器无法访问 修改neo4j.conf,开放所有ip访问 # 允许所有IP地址访问 server.default_listen_address0.0.0.0 3.创建开机自启动服务…

SEO长尾关键词核心实战技巧提升排名

内容概要 本文聚焦于SEO长尾关键词的核心实战技巧&#xff0c;旨在帮助读者精准锁定目标用户的搜索意图&#xff0c;从而提升网站自然排名和获取精准流量。文章将从基础概念入手&#xff0c;系统解析如何挖掘高转化率的长尾关键词&#xff0c;优化内容结构以增强搜索可见度&…

当OT遇见IT:Apache IoTDB如何用“时序空间一体化“技术破解工业物联网数据孤岛困局?

目录 一. 什么是时序数据库&#xff1f; 二. 时序数据库的选型要素 性能指标 架构能力 数据模型与查询能力 安全与权限控制 部署与运维能力 三 Apache IoTDB 简介及安装使用&#xff1a; 安装准备教程 检查 Java 版本 下载与安装 下载 IoTDB 解压文件 配置环境变量 启动…

一文讲透HTML语义化标签

文章目录语义化标签概述HTML标签及其含义常见HTML5语义化标签语义化标签对搜索引擎&#xff08;SEO&#xff09;的影响提升搜索引擎排名增强可访问性改善用户体验语义化标签案例各标签作用说明语义化标签概述 HTML 语义化是指使用恰当的标签来准确表达内容的结构和含义&#x…

Django 实战:静态文件与媒体文件从开发配置到生产部署

文章目录一、静态文件与媒体文件区别与联系配置开发环境配置二、媒体文件实战实战场景定义模型定义序列化器定义视图实战效果三、生产部署说明收集静态文件Nginx配置示例OpenResty配置示例一、静态文件与媒体文件 区别与联系 在 Django 项目中&#xff0c;静态文件&#xff0…

Python自动化分析知网文献:爬取、存储与可视化

1. 引言 在当今的学术研究和大数据分析领域&#xff0c;高效获取和分析学术文献数据具有重要意义。中国知网&#xff08;CNKI&#xff09;作为国内最权威的学术资源平台之一&#xff0c;包含了海量的期刊论文、会议论文和学位论文。然而&#xff0c;手动收集和分析这些数据不仅…

Python应用指南:使用PyKrige包实现ArcGIS的克里金插值法

先了解什么是克里金插值&#xff1f;克里金插值&#xff08;Kriging interpolation&#xff09;是一种基于统计学和空间相关性的高级空间插值方法&#xff0c;广泛应用于地理信息系统&#xff08;GIS&#xff09;、地质勘探、环境科学、气象学等领域。它由南非矿业工程师丹尼尔…

Redis原理之哨兵机制(Sentinel)

上篇文章&#xff1a; Redis原理之主从复制https://blog.csdn.net/sniper_fandc/article/details/149141103?fromshareblogdetail&sharetypeblogdetail&sharerId149141103&sharereferPC&sharesourcesniper_fandc&sharefromfrom_link 目录 1 哨兵机制恢…

uniapp打包成 apk

1. 先把项目打包成 index.html 上传到宝塔服务器,关联到域名 2.然后再用hbuilder新建一个 基础模板的 uniapp 3.再修改代码,采用iframe方式打包 pages/index/index <template><web-view v-if="showWebView" :src="webViewSrc" @message=&qu…

RPG57.创建玩家拾取物品类一:创建可拾取物品类的基类

1。新建一个基类&#xff0c;用于玩家可拾取物品的父类然后// Fill out your copyright notice in the Description page of Project Settings.#pragma once#include "CoreMinimal.h" #include "Components/SphereComponent.h" #include "GameFramewo…

k8s之持久化存储流程

K8s 中的 Pod 在挂载存储卷时需经历三个的阶段&#xff1a;Provision/Delete&#xff08;创盘/删盘&#xff09;、Attach/Detach&#xff08;挂接/摘除&#xff09;和 Mount/Unmount&#xff08;挂载/卸载&#xff09; Provisioning Volumes 时序流程详解 一、流程图 sequenc…

python学智能算法(二十四)|SVM-最优化几何距离的理解

引言 前序学习过程中&#xff0c;已经对几何距离的概念有了认知&#xff0c;学习链接为&#xff1a;几何距离 这里先来回忆几何距离δ的定义&#xff1a; δmin⁡i1...myi(w∥w∥⋅xib∥w∥)\delta \min_{i1...m}y_{i}(\frac{w}{\left \| w \right \|}\cdot x_{i}\frac{b}{\le…

创建游戏或互动体验:从概念到实现的完整指南

Hi&#xff0c;我是布兰妮甜 &#xff01;在数字时代&#xff0c;游戏和互动体验已成为娱乐、教育和商业领域的重要组成部分。本文将带你了解如何使用JavaScript创建引人入胜的游戏和互动体验&#xff0c;从基础概念到实际实现。 文章目录一、游戏开发基础1.1 游戏循环1.2 游戏…