当前位置: 首页 > news >正文

SDC Specical check setting的描述 - false path

在上一篇文中描述了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.dtcms.com/a/286465.html

相关文章:

  • Docker笔记-部署Redis集群
  • leetcode15.三数之和题解:逻辑清晰带你分析
  • AWS(基础)
  • 网络基础10 :ACL真机实验
  • Redis原理之哨兵机制(Sentinel)
  • 【洛谷P1417】烹调方案 题解
  • ONNX模型使用指南:从零开始掌握跨领域模型部署
  • 图片平铺下去总是有个缝隙的解决方案
  • 塞舌尔公司的查册报告Certificate of Official Search是什么?有什么信息
  • 瀚高数据库开启Oracle兼容模块
  • vue2 面试题及详细答案150道(101 - 120)
  • ubuntu20.04使用unity3d做机器人仿真环境搭建
  • Python单例模式详解:从原理到实战的完整指南
  • 详解Linux(Ubuntu/RedHat/CentOS)及国产服务器统一加域管理方案
  • GoC 上册课程
  • java+vue+SpringBoot集团门户网站(程序+数据库+报告+部署教程+答辩指导)
  • docker--程序自启动
  • HIMA X-DO3201模块的冗余配置方法
  • Python Pandas 实践学习笔记(1)
  • Chainlit + FasiAPI+ LlamaIndex 实现RAG(一)
  • 深入解析:短连接 vs 长连接 vs 短轮询 vs 长轮询
  • keil5使用技巧----keil-build-viewer.exe插件使用
  • 前端性能优化“核武器”:新一代图片格式(AVIF/WebP)与自动化优化流程实战
  • Ubuntu查看Docker容器
  • React智能Tooltip封装术:精准检测文本溢出,告别无效提示!
  • Linux下使用原始socket收发数据包
  • 4644电源管理芯片在微波射频组件中的技术优势与国产化实践
  • 《5分钟开发订单微服务!飞算JavaAI实战:IDEA插件安装→空指针修复→K8s部署全流程》
  • 高并发、高性能、高可用
  • LeetCode热题100【第4天】