之一就是第一章,这是第二章。在开始之前,要对第一章内容说说我理解到的:

(1)时序分析是节点对节点的分析。(2)这个latch edge是锁存上一个lunch edge输出的(满足建立关系的)值。(3)建立关系和建立时间余量。(4)保持关系和保持时间余量。特别是使用屁股计数就是实际TQ的分析方法。

TimeQuest 模型是用来解决两个点寄存器(节点)之间的建立关系和保持关系问题。但是在一个最简单的 HDL 设计,不可能仅是由两个寄存器就组成,里边可能会有“很多
很多很多”对寄存器。结果 TimeQuest 就会用自己的时序分析模型,逐个检查“很多很多很多”对寄存器之间的“建立关系和保持关系是否合格化”。

在 FPGA 综合的过程中,逻辑资源之间会开始“布线”,把相关的单位连线起来。设计有多大,那么连线的数量就越多,最终这庞大的连线就成为网表。

图 2.2.1 是布线过程的概念图 ... 布线过程就是按软模型,在 FPGA 巨大的资源库里建立硬模型,逻辑资源之间的链接称为连线,所有连线的总和称为网表。

用简单的话来说,当某个实验下载到开发板的时候,它有属于自己的“物理网表(硬模型)”。为了测试这个“物理网表”到底合不合格,所以我们需要用 TimeQuest 这个工具
“仿真”这个“物理网表”,而 TimeQuest 不会直接仿真“物理网表”,而是仿真不同质量的网表,又或者仿真不同质量的硬模型。

TimeQuest 是一个针对各种延迟因数作出约束的静态时序分析工具”。

有一个问题笔者一直无法释怀,当 Modelsim 仿真 HDL 模块之际,如果考虑延迟信息,时序就会出现物理延迟,换之在 Modelsim 界面上出现的波形,事实上也是静态时序的一种,不过 Modelsim 只能看个大概而已,而不能做出实际的分析。所以笔者一直认为,Modelsim 既然要仿真就仿真理想时序而不是物理时序。所以说,物理时序分析的工作我们就交给 TimeQuest 去干。

笔者曾一度认为,TimeQuest 的延迟取值是按实际的物理延迟,不过事实恰恰相反,TimeQuest 对延迟取值是夸张的表现,这话何解呢?
假设有一条路径的物理延迟是 10ns,如果是 worst-case 网表 TimeQuest 就会报 18ns,如果是 best-case 网表 TimeQuest 就会报 12ns。很明显, 18ns 还有 12ns 的报值比起实际的10ns 多出 8ns 还有 2ns,其中这 8ns 和 2ns 的差别就是保险余量。

(注:这里的clk1和clk2不是对齐的,也即是有相移,此时理想的保持关系-180度(-5ns),理想建立时序5ns。)

TimeQuest 有一个评估值,称为 Fmax。Fmax 是用来评估节点的最高频率。每当网表质量越低,节点的延迟取值就会越高, Fmax 也随之会越低。如果 Fmax 越低 fpga 就不能发挥实际的速度和性能,因此我们可以这样说:网表质量越低,保险余量越大,Fmax评估越低,性能限制也越高。

根据理论而言,外部的时钟源比起内部的时钟源更容易产生时间抖动,而时间抖动会给外部时钟路径产生不同延迟,也因此产生多可能性的时序图,如图 3.3.6 所示。笔者在研究时钟抖动的时候吃过不少苦头,而 TimeQuest 也用了一大半的约束命令针对外部时钟路径。

第一层时间要求,第二层时间要求:

第一层时间要求,HDL 不仅可以照顾到 Tdata 的 10ns 时间要求,也可以设计到它。因此 Tdata 可以断定为第一层时间要求。

第二层时间要求,HDL 只可以照顾到 Tdata 的 3ns 时间要求,可是却涉及不了,因此 Tdata 可以断定为第二层时间。

我们知道 TimeQuest 是一个笨蛋,在默认的情况下 TimeQuest 模型都是以单时钟作为基准去分析节点是否合格。有时我们会遇见如图 3.4.5 的情形,这时候我们就要使用相关的约束命令告诉 TimeQuest “某对节点是用 N 个时钟工作”。如此一来, TimeQuest 就会知道某对节点是使用 N 个时间工作。

HDL 涉及不了的时间要求交给 TimeQuest 去做,不过在此之前 HDL 必须尽量做好“理想时序”的部分,最后“物理时序”的部分则交给 TimeQuest 去分析和涉及。

在第一章笔者曾说过,TimeQuest 模型的基本结构是由一对节点组成,不过节点是没有个性的东西,如果节点放在 fpga 内部,它就会成为寄存器,又称 TimeQuest 内部模型。换之如果节点放在 fpga 外部,它就成为 fpga 和外部器件(ic),又称 TimeQuest 外部模型。

不过外部模型不一定是山寨成功,如图 3.5.2 所示,如果主机 fpga 给从机 ic 驱动时钟信号和数据。结果而言 TimeQuest 模型一定会山寨失败,这种情形有 spi, iic, ps/2 时序等。此外,没有时钟信号,而有控制信号或者控制命令之间的数据传输也会让 TimeQuest 模型上寨失败,这种情形有静态 ram,传统 lcd 驱动等。还有一种情形就是单纯的数据传输,也会无法山寨成功 TimeQuest 模型,这种情形有 uart 和 vga 时序等。读者可能会问:“如果外部模型山寨失败的话,那么外部延迟因数又如何约束呢?”这是一个多疑的问题,TimeQuest 只是一匹只懂在模型里打滚的笨蛋而已,如果模型无法成立 TimeQuest 就会无用武之地。此时,我们也只能做好内部模型的分析即可 ... 外边就交个人品和运气。

同学们知道内部模型与外部模型的具体区别吗?内部模型与外部模型的区别就在于知道与不知道,自动与手动。所谓知道与不知道是指,有关内部模型的各种延迟信息
TimeQuest 可以通过综合器取得。换之,外部模型的延迟信息必须人为劳动,透过相关的约束命令告诉 TimeQuest 才行,这就是所谓的自动和手动。

笔者认为约束命令的功用,就是再现分析环境而已,而不是干扰硬模型的实际内容。sdc 文件有如 vt 文件,约束命令好比验证语言 ... 不过 Modelsim 仿真对象是软模型,而TimeQuest 的分析对象是硬模型。Modelsim 只用产生理想时序,看看模块的行为是否达到预期的效果。换之 TimeQuest 只用分析物理时序,看看综合结果是否造就时序违规,或者硬模型能不能在特定的环境下很好运行。

内部延迟因数几乎可以被 TimeQuest 认知,所以也没有什么好谈的;换之,外部延迟因数 TimeQuest 却完全不认识。TimeQuest 模型也有内部与外部之分,内部模型充满内部延迟因数而外部模型充满外部延迟因数。就是因为内部延迟因数 TimeQuest 它什么都知道的关系,所以 TimeQuest 会自动认识,也用不着认为告诉它相关的延迟信息。反之外部延迟因数就是因为 TimeQuest 它什么都不知道,结果我们必须手动透过相关的约束命令,再告诉它相关的外部延迟信息。

最后我们也小谈一下 TimeQuest 模型的山寨行为,实际上不是要 TimeQuest 模型去模仿什么 ... 而是分析 TimeQuest 模型到底能不能在外部成立,典型的外部模型就是 fpga 与sdram。

(注:小字部分,是应用作者的即黑金动力--FPGA的那些事儿)

TIMEQUEST学习之黑金动力(二)的更多相关文章

  1. timequest学习之黑金动力(一)

    黑金动力的资料还是非常有价值的.通过建模篇,对于给定的时序关系,我总能实现.但是,这总是很初级的能力.也只是为后面的建模服务.所以,现阶段我的能力还是非常有限.我相信我一定会成为牛人,能够独挡一面.借 ...

  2. TIMEQUEST学习之黑金动力(三)

    不知不觉,学到的第四章.但是对于TQ的内部模型和外部模型的完整分析还是没有很好的理解.接着学习......... 我们也了解静态时序分析的第一步骤,亦即时钟方面的约束.此外,也稍微对 Report T ...

  3. TIMEQUEST学习之黑金动力(四)

    现在知道时序约束主要是FPGA to ic,或者ic to FPGA. 上图可以表示FPGA to IC, IC to FPGA. fpga2ic:fpga2ext 是 fpga 致 ic 信号的走线 ...

  4. 我的MYSQL学习心得(十二) 触发器

    我的MYSQL学习心得(十二) 触发器 我的MYSQL学习心得(一) 简单语法 我的MYSQL学习心得(二) 数据类型宽度 我的MYSQL学习心得(三) 查看字段长度 我的MYSQL学习心得(四) 数 ...

  5. css学习归纳总结(二) 转

    原文地址:css学习归纳总结(二) 标签与元素 <p>标签和p元素有什么区别呢?大多数时候他们表示的是同一样东西,但仍有细微的区别.<p>.<div>等指的是HTM ...

  6. 【Unity Shaders】学习笔记——SurfaceShader(二)两个结构体和CG类型

    [Unity Shaders]学习笔记——SurfaceShader(二)两个结构体和CG类型 转载请注明出处:http://www.cnblogs.com/-867259206/p/5596698. ...

  7. Linux进程间通信IPC学习笔记之同步二(SVR4 信号量)

    Linux进程间通信IPC学习笔记之同步二(SVR4 信号量)

  8. Linux进程间通信IPC学习笔记之同步二(Posix 信号量)

    Linux进程间通信IPC学习笔记之同步二(Posix 信号量)

  9. VSTO 学习笔记(十二)自定义公式与Ribbon

    原文:VSTO 学习笔记(十二)自定义公式与Ribbon 这几天工作中在开发一个Excel插件,包含自定义公式,根据条件从数据库中查询结果.这次我们来做一个简单的测试,达到类似的目的. 即在Excel ...

随机推荐

  1. Java 子类实例化对象的过程

    子类实例化是否会实例化父类? 不会.父类在子类实例化过程中是并没有被实例化,java中new子类没有实例化父类,只是调用父类的构造方法初始化了,子类从父类继承来的属性,这个调用是子类的对象调用的父类的 ...

  2. Python SQL相关操作

    环境 Anaconda3 Python 3.6, Window 64bit 目的 从MySQL数据库读取数据,进行数据查询.关联 代码 # -*- coding: utf-8 -*- "&q ...

  3. 阿里云上如何利用yum安装jenkins

    一. 安装jdk 确保安装jenkins前jdk已经安装,如何安装见<如何在阿里云上部署war包到tomcat服务器> 二. 安装jenkins 使用以下命令安装jenkins: wget ...

  4. Selenium2+Python自动化学习笔记(第1天)

    参考[http://blog.csdn.net/henni_719/article/details/51096531]大神写的笔记,多谢大神共享. 哈哈,今天又找到一位大神写的Selenium2+Py ...

  5. RESTful api 与 Django的 restfulframework

    RESTful api 与 Django的 restfulframework 1 restful api 的基本概念 一类的资源使用一个url,不同的操作通过 请求方式处理 api -- >&g ...

  6. BAT级别对照表

  7. 使用macbook破解WPA/WPA2 wifi密码

    文本仅供学习交流. 我使用的系统是macbook pro 15: 安装aircrack-ng 使用homebrew安装,命令: brew install aircrack-ng 抓包-抓取带密码的握手 ...

  8. html中<video>显示视频的时候,MP4的格式问题

    html支持的视频格式:HTML5视频 注意 浏览器对mp4 的编码方式要求的非常严格 视频编码必须是H.264 音频编码必须是: AAC

  9. Android 拍照或从相册取图片并裁剪

    在Android中,Intent触发Camera程序,拍好照片后,将会返回数据,但是考虑到内存问题,Camera不会将全尺寸的图像返回给调用的Activity,一般情况下,有可能返回的是缩略图,比如1 ...

  10. 阿里云部署django实现公网访问

    本博的主要目的是对阿里云部署django实现公网访问进行一次简单的记录,方便日后查询. 内容目录: (1)申请阿里云服务器及安全组配置 (2)实现ssh远程控制 (3)实现ftp文件传输 (4)安装p ...