TIMEQUEST学习之黑金动力(三)
不知不觉,学到的第四章。但是对于TQ的内部模型和外部模型的完整分析还是没有很好的理解。接着学习。。。。。。。。。
我们也了解静态时序分析的第一步骤,亦即时钟方面的约束。此外,也稍微对 Report Timing 逐步深入了解,何为一举列出多有相关的时序报告等。
在此我们需要用到 set_multicycle_path 约束命令。
严格来说 set_multicycle_path 的约束行为是告诉 TimeQuest 更动某对节点的启动沿和锁存沿 ... 想必读者听不明白是吧?说傻瓜点就是,告诉 TimeQuest 某对节点很可能不是用 1 个时钟周期工作。
笔者不是有意捣乱,在此笔者只是想证明一个事情而已, Set Multicycle Path 的功是告诉 TimeQuest “某对节点用 N 个时钟工作”。不过比较特别的是,它不仅可以针对“所有节点”,同样它也可以针对“单对节点”。此外,笔者也想提醒一件事 ... Set Multicycle Path 充其量是告诉“某对节点用 N 个时钟工作”或者告诉 TimeQuest “某对节点的启动沿和锁存沿有所更动”。实际上该约束命令没有任何能力干涉硬模型的内容。好了!前面只是热身而已,接下来我们会慢慢解剖 Set Multicycle Path 这个命令。
set multicycle path 该约束命令实际上它会更改启动沿或者锁存沿的触发时候.,当我们用set multicycle path 告诉 TimeQuest 某对节点用 N 个时钟工作,可是充其量这也是TimeQuest 的妄想而已,因为实际的 HDL 行为或者硬模型没有任何改变。
笔者需要强调,在 TimeQuest 的妄想中 delay monster 用 5 个时钟工作,或者说 delay monster 有 5 个时钟的模块周期。不过 delay monster 的实际 HDL 行为,只用 2 个时钟工作,或者说实际的 delay monster 有 2 个时钟的模块周期。这种马头不对狗嘴的情形当然不被我们允许啦 ... 在此我们应该更动一下 delay_monster 的 hdl 内容才行.
Set False Path 要 TimeQuest 无视相关的节点分析。
事实上,编译器它不会聪明到可以自动优化延迟怪兽给时序带来的违规,因此我们需要约束相关的节点。用到的命令有 Set Multicycle path ,该功能宛如告诉 TimeQuest 某对节点用 N 个时钟工作,实际上是告诉 TimeQuest 某对节点的启动沿或者锁存沿的触发行为有所更改。虽然使用该约束命令可以使得 TimeQuest 在分析上足以解决问题,可是却导致 TimeQuest 的妄想和实际的 HDL 行为产生出入。所以要小心慎用。此外,Set False Path 是不可理喻的约束命令,它会要求 TimeQuest 无视相关的节点。使用 Set False Path 之前,最好确认自己是否有足够的理论自己的做法是对的。如果实验五的 delay monster 恰恰好仅用 2 个时钟工作,使用该命令反而会弄巧成拙。
derive_pll_clocks 是专门为 pll 打造的懒人版 create clock 约束命令。
总结:
(1)记住derive_pll_clocks是用来驱动所有的pll的时钟约束。
(2)学会使用set multcycle path和理解set multcycle path 不能改变实际硬件模型。
(3)set false path,就是为了使TQ无视相应的节点。
TIMEQUEST学习之黑金动力(三)的更多相关文章
- timequest学习之黑金动力(一)
黑金动力的资料还是非常有价值的.通过建模篇,对于给定的时序关系,我总能实现.但是,这总是很初级的能力.也只是为后面的建模服务.所以,现阶段我的能力还是非常有限.我相信我一定会成为牛人,能够独挡一面.借 ...
- TIMEQUEST学习之黑金动力(二)
之一就是第一章,这是第二章.在开始之前,要对第一章内容说说我理解到的: (1)时序分析是节点对节点的分析.(2)这个latch edge是锁存上一个lunch edge输出的(满足建立关系的)值.(3 ...
- TIMEQUEST学习之黑金动力(四)
现在知道时序约束主要是FPGA to ic,或者ic to FPGA. 上图可以表示FPGA to IC, IC to FPGA. fpga2ic:fpga2ext 是 fpga 致 ic 信号的走线 ...
- WCF学习之旅—第三个示例之四(三十)
上接WCF学习之旅—第三个示例之一(二十七) WCF学习之旅—第三个示例之二(二十八) WCF学习之旅—第三个示例之三(二十九) ...
- WCF学习之旅—第三个示例之二(二十八)
上接WCF学习之旅—第三个示例之一(二十七) 五.在项目BookMgr.Model创建实体类数据 第一步,安装Entity Framework 1) 使用NuGet下载最新版的Entity Fram ...
- WCF学习之旅—第三个示例之三(二十九)
上接WCF学习之旅—第三个示例之一(二十七) WCF学习之旅—第三个示例之二(二十八) 在上一篇文章中我们创建了实体对象与接口协定,在这一篇文章中我们来学习如何创建WCF的服务端代码.具体步骤见下面. ...
- WCF学习之旅—第三个示例之五(三十一)
上接WCF学习之旅—第三个示例之一(二十七) WCF学习之旅—第三个示例之二(二十八) WCF学习之旅—第三个示例之三(二十九) WCF学习 ...
- css学习归纳总结(三) 转
原文地址:css学习归纳总结(三) 为文档添加样式的三种方法 行内样式 行内样式是写在HTML标签的style属性里的,比如: <p style="font-size: 12px;fo ...
- 【Unity Shaders】学习笔记——SurfaceShader(三)BasicDiffuse和HalfLambert
[Unity Shaders]学习笔记——SurfaceShader(三)BasicDiffuse和HalfLambert 转载请注明出处:http://www.cnblogs.com/-867259 ...
随机推荐
- poj3311 状压dp+floyd
先floyd预处理一遍dis,枚举所有状态,dp[ i ] [ j ]表示 以 j 为终点的状态 i 使用最小的时间 #include<map> #include<set> ...
- Microsoft Edge Certified with EBS 12.1 and 12.2
I am very pleased to announce that Microsoft Edge is certified as a new browser for Oracle E-Busines ...
- Cassandra二级索引原理——新创建了一张表格,同时将原始表格之中的索引字段作为新索引表的Primary Key,并且存储的值为原始数据的Primary Key,然后再通过pk一级索引找到真正的值
1.什么是二级索引? 我们前面已经介绍过Cassandra之中有各种Key,比如Primary Key, Cluster Key 等等.如果您对这部分概念并不熟悉,可以参考之前的文章: [Cassan ...
- day5-shutil模块
一.概述 我们通过python操作文件时,除正常读写操作外,有时还需要进行拷贝.删除.打包等操作,虽然os模块提供了部分功能,但还是不够完善,这里要讲讲专业的高级的文件,文件夹,压缩包处理模块shut ...
- 升级openssl 到 1.0.1s 最新版
1.下载 wget http://www.openssl.org/source/openssl-1.0.1s.tar.gz 2.解压 tar -zxf openssl-1.0.1s.tar.gz cd ...
- java jprofile
java -agentpath:/opt/jprofiler8/bin/linux-x64/libjprofilerti.so=port=8849,nowait -Xdebug -Xrunjdwp:t ...
- 条款14:在资源管理类中小型coping的行为
首先假设对于一个mutex互斥器对象,有lock以及unlock两个函数可用: void lock(Mutex * pm); void unlock(Mutex * pm); 那么为了防止资源忘记被释 ...
- 软工作业-Wc
Wc.exe wc.exe是一个常见的工具,它能统计文本文件的字符数.单词数和行数.这个项目要求写一个命令行程序,模仿已有wc.exe 的功能,并加以扩充,给出某程序设计语言源文件的字符数.单词数和行 ...
- C#基础知识梳理系列
1. 这个系列深入的从IL层面谈了C#各种基本知识的本质,十分值得学习: http://www.cnblogs.com/solan/category/398748.html
- R-一页多图
https://blog.csdn.net/ailsa__/article/details/45932753