时序约束实例
ISE时序约束笔记

ISE时序约束笔记ISE时序约束笔记1——Global Timing Constraints时序约束和你的工程执行工具不会试图寻找达到最快速的布局&布线路径。
——取而代之的是,执行工具会努力达到你所期望的性能要求。
性能要求和时序约束相关——时许约束通过将逻辑元件放置的更近一些以缩短布线资源从而改善设计性能。
没有时序约束的例子该工程没有时序约束和管脚分配——注意它的管脚和放置——该设计的系统时钟频率能够跑到50M时序约束的例子和上面是相同的一个设计,但是加入了3个全局时序约束。
——它最高能跑到60M的系统时钟频率——注意它大部分的逻辑的布局更靠近器件边沿其相应管脚的位置更多关于时序约束时序约束应该用于界定设计的性能目标1.太紧的约束将会延长编译时间2.不现实的约束可能导致执行工具罢工3.查看综合报告或者映射后静态时序报告以决定你的约束是否现实执行后,查看布局布线后静态时序报告以决定是否你的性能要求达到了——如果约束要求没有达到,查看时序报告寻找原因。
路径终点有两种类型的路径终点:1.I/O pads2.同步单元(触发器,锁存器,RAMs)时序约束的两个步骤:1.路径终点生产groups(顾名思义就是进行分组)2.指点不同groups之间的时序要求全局约束使用默认的路径终点groups——即所有的触发器、I/O pads等ISE时序约束笔记2——Global Timing Constraints问题思考单一的全局约束可以覆盖多延时路径如果箭头是待约束路径,那么什么是路径终点呢?所有的寄存器是否有一些共同点呢?问题解答什么是路径终点呢?——FLOP1,FLOP2,FLOP3,FLOP4,FLOP5。
所有的寄存器是否有一些共同点呢?——它们共享一个时钟信号,约束这个网络的时序可以同时覆盖约束这些相关寄存器间的延时路径。
周期约束周期约束覆盖由参考网络钟控的的同步单元之间的路径延时。
周期约束不覆盖的路径有:input pads到output pads之间的路径(纯组合逻辑路径),input pads到同步单元之间的路径,同步单元到output pads之间的路径。
时序分析基础与时钟约束实例3

时序分析基础与时钟约束实例(3)文中实例配套SF-CY3开发套件。
更多内容请参考《SF-CY3 FPGA套件开发指南》。
接着,我们要来实际应用这些理论,看看实际工程中如何对这些错综复杂的关系进行分析和处理。
如图所示,我们这个例程的分频计数实验中使用了一个时钟信号clk,每一次计数都是基于这个时钟的上升沿。
这个时钟哪里来?它的时钟频率如何确定?拍脑袋随便设?非也,咱做事一定要有依有据。
如图所示,我们的SF-CY3板载了一颗25MHz的有源晶振,通过管脚分配,我们便将这个时钟引入了设计中。
因此,我们这个设计的时钟便要约束为25MHz,即40ns的时钟周期。
好,下面我们就动手为这个实例添加时序约束。
如图所示,我们点击工具栏的一个闹钟模样的图标便可打开Quartus II内嵌的时序设计TimeQuest,我们接下来的时钟约束设置便是在该工具中完成的。
TimeQuest的主界面如图所示,首先需要新建一个sdc文件,然后在该文件中输入时钟约束脚本,或者使用GUI进行约束设置更新到sdc文件中。
点击菜单栏Netlist→Create Timing Netlisk,弹出的菜单中使用默认设置,点击OK便可。
接着进行时钟约束,点击菜单栏Constraints→Create Clock。
Clock name是我们随便给约束的信号起的名字,没有特别限制;Period为时钟周期,我们的时钟晶振是25MHz的,即40ns;Targets选择实际被约束的时钟管脚,点击改行最后面的按钮可以选择相应的管脚信号;SDC command无须设置,自动根据前面的设置生成,Waveform edges也无须设置,我们采用默认设置,即0ns时钟上升,20ns下降。
点击Run完成约束设置。
接下来,我们要依次点击主界面右下方task栏里的Update Timing Netlist和Write SDC File 选项,弹出的Write SDC File窗口如图所示,我们更改SDC file name为ex0.sdc,接着点击OK。
FPGA中IO时序约束分析

第1章FPGA中IO口时序分析作者:屋檐下的龙卷风博客地址:/linjie-swust/日期:2012.3.11.1 概述在高速系统中FPGA时序约束不止包括内部时钟约束,还应包括完整的IO时序约束和时序例外约束才能实现PCB板级的时序收敛。
因此,FPGA时序约束中IO口时序约束也是一个重点。
只有约束正确才能在高速情况下保证FPGA和外部器件通信正确。
1.2 FPGA整体概念由于IO口时序约束分析是针对于电路板整个系统进行时序分析,所以FPGA需要作为一个整体分析,其中包括FPGA的建立时间、保持时间以及传输延时。
传统的建立时间、保持时间以及传输延时都是针对寄存器形式的分析。
但是针对整个系统FPGA的建立时间保持时间可以简化。
图1.1 FPGA整体时序图如图1.1所示,为分解的FPGA内部寄存器的性能参数:(1) Tdin为从FPGA的IO口到FPGA内部寄存器输入端的延时;(2) Tclk为从FPGA的IO口到FPGA内部寄存器时钟端的延时;(3) Tus/Th为FPGA内部寄存器的建立时间和保持时间;(4) Tco为FPGA内部寄存器传输时间;(5) Tout为从FPGA寄存器输出到IO口输出的延时;对于整个FPGA系统分析,可以重新定义这些参数:FPGA建立时间可以定义为:(1) FPGA建立时间:FTsu = Tdin + Tsu – Tclk;(2) FPGA保持时间:FTh = Th + Tclk;(3) FPGA数据传输时间:FTco = Tclk + Tco + Tout;由上分析当FPGA成为一个系统后即可进行IO时序分析了。
FPGA模型变为如图1.2所示。
图1.2 FPGA系统参数1.3 输入最大最小延时外部器件发送数据到FPGA系统模型如图1.3所示。
对FPGA的IO口进行输入最大最小延时约束是为了让FPGA设计工具能够尽可能的优化从输入端口到第一级寄存器之间的路径延迟,使其能够保证系统时钟可靠的采到从外部芯片到FPGA的信号。
vivado 分频器 时序约束

vivado 分频器时序约束以Vivado分频器时序约束为标题的文章一、引言Vivado是由Xilinx公司开发的一款集成化设计环境软件,用于FPGA设计和开发。
在FPGA设计中,分频器是一个常用的模块,用于降低时钟频率或者将时钟信号分频为其他频率。
然而,在设计中,时序约束是非常重要的,它能够确保设计在时序上满足要求,避免时序违规的问题。
本文将详细介绍在Vivado中如何进行分频器时序约束。
二、时序约束的重要性时序约束是FPGA设计中的关键步骤,它能够确保设计在时序上满足要求,避免时序违规的问题。
时序违规可能导致时钟偏移、数据错误以及系统不稳定等问题,严重影响设计的可靠性和性能。
而分频器作为一个常用的模块,在时序约束中也有着重要的作用。
三、时序约束的基本原理时序约束通常包括时钟频率、时钟延迟、数据路径延迟等信息。
在Vivado中,我们可以通过约束文件(Constraints File)来设置时序约束。
时序约束文件是一种特殊的文本文件,其中包含了关于时钟频率、时钟延迟、数据路径延迟等信息。
通过约束文件,我们可以告诉Vivado如何对设计进行时序分析和优化。
四、分频器的时序约束在Vivado中,我们可以使用时序约束来确保分频器的工作稳定和准确。
下面,我们将以一个简单的例子来介绍如何设置分频器的时序约束。
假设我们需要将一个100MHz的时钟信号分频为10MHz的时钟信号,我们可以使用一个分频因子为10的分频器来完成。
以下是一个简单的分频器的Verilog代码:```verilogmodule divider (input wire clk,input wire rst,output wire clk_out);reg [3:0] counter;always @(posedge clk or posedge rst)beginif (rst)counter <= 0;else if (counter == 9)counter <= 0;elsecounter <= counter + 1;endassign clk_out = counter[3];endmodule```在这个例子中,我们使用一个4位的计数器来实现分频功能。
基于quartusii时序约束

关于quartus ii时序约束(1)2012-06-17 09:46:07| 分类:默认分类|举报|字号订阅一直以来都只是简单地理解了一下关于时序约束的内容,而工具也有默认classic的约束,加上目前的设计对时序没有很高的要求,所以就一直都没真正地自己做过一次约束,但是我知道,这部分是不可以跳过的,这部分也算是搞FPGA必须掌握的内容。
今天下午对这部分进行了初次探究,收获有如下:常用的约束有三种:1.时序约束2.区域约束3.位置约束时序约束的作用有:1.提高设计的工作频率2.获得正确的时序分析报告需要复习前面博文《FPGA学习之时序分析基础(7)》记住,堵塞原则是HDL语言的精髓,也就是说触发器是有延时作用的,虽然两个触发器使用的是同一个时钟,但是当第二个触发器接收第一帧数据的时候第一个触发器在发第二帧数据,而当第二个触发器接收第二帧数据的时候第一个触发器在发第三帧数据,依此类推,也就是说每一帧数据在两个触发器之间都有一个clk的时间前进,如果前进的时间太长,也即是系统给的时钟太快,就会出现无法满足第二个触发器setup的时间。
setup time 就是第二个触发器在接收到由第一个触发器上一个时钟发送的数据之前应空闲的时间。
公式:CLK+TCLK2-Tsu > Tclk1 + Tcd + Tdata所以系统CLK是和Tsu息息相关的,所以看时序报告的时候也是从Clock Setup‘clk’看最差路径等信息。
在FPGA设计工具中包含有4种路径:从输入端口到寄存器,从寄存器到寄存器,从寄存器到输出,从输入到输出的纯组合逻辑。
通常,需要对这几种路径分别进行约束,以便使设计工具能够得到最优化的结果。
下面对这几种路径分别进行讨论。
1. 从输入端口到寄存器:这种路径的约束是为了让FPGA设计工具能够尽可能的优化从输入端口到第一级寄存器之间的路径延迟,使其能够保证系统时钟可靠的采到从外部芯片到FPGA的信号。
xdma 时序约束

xdma 时序约束【原创版】目录1.xdma 时序约束的概述2.xdma 时序约束的种类3.xdma 时序约束的解决方案4.xdma 时序约束的实际应用正文xdma 时序约束是指在数据传输过程中,数据需要在特定的时间内到达接收端。
xdma 是一种数据传输方式,主要用于计算机系统间的数据传输。
在 xdma 中,时序约束是保证数据传输效率和正确性的重要因素。
xdma 时序约束的种类主要有以下几种:1.传输时间约束:传输时间约束是指数据从发送端传输到接收端所需的时间限制。
传输时间约束是 xdma 时序约束中最基本的约束。
2.接收时间约束:接收时间约束是指接收端在接收数据时所需的时间限制。
接收时间约束是 xdma 时序约束中的重要约束。
3.处理时间约束:处理时间约束是指接收端在接收到数据后进行处理的时间限制。
处理时间约束是 xdma 时序约束中的高级约束。
针对 xdma 时序约束,有以下几种解决方案:1.增加传输带宽:增加传输带宽可以缩短数据传输时间,从而满足时序约束。
2.优化数据传输协议:优化数据传输协议可以提高数据传输效率,从而满足时序约束。
3.使用时钟同步:使用时钟同步可以保证发送端和接收端的时钟一致,从而满足时序约束。
xdma 时序约束在实际应用中具有重要意义。
例如,在计算机网络中,xdma 时序约束可以保证数据的正确传输和接收。
在数据中心中,xdma 时序约束可以提高数据传输效率,从而提高数据处理能力。
总之,xdma 时序约束是 xdma 数据传输的重要因素,对于保证数据传输效率和正确性具有重要意义。
针对 xdma 时序约束,有几种解决方案,包括增加传输带宽、优化数据传输协议和使用时钟同步。
ic设计sta在项目中的实例

ic设计sta在项目中的实例一、STA的作用在集成电路设计中,时序约束的满足是保证电路正常工作的关键。
STA作为一种静态时序分析方法,可以帮助设计工程师评估电路的时序特性,包括最长路径、最短路径、时钟周期等,并提供时序报告,以确保设计的正确性和可靠性。
二、STA的流程STA的流程主要包括时序约束的制定、时序分析和时序优化三个主要步骤。
1. 时序约束的制定时序约束是描述电路时序要求的规则集合,包括时钟频率、时钟占空比、输入输出延迟等。
设计工程师需要根据电路的功能需求和性能要求,制定合理的时序约束。
约束的准确性和完整性对于后续的时序分析和优化至关重要。
2. 时序分析时序分析是通过对设计电路的逻辑网表进行时序路径抽取和计算,得到电路的时序特性。
主要包括最长路径分析、最短路径分析、时钟分析等。
通过时序分析可以找到关键路径、时序违规等问题,并进行优化和修复。
3. 时序优化时序优化是在保证电路功能不变的前提下,通过改变电路结构、布局布线等手段,减少关键路径的延迟,提高电路的时序性能。
常见的优化方法包括时钟树优化、逻辑优化、布局布线优化等。
三、实际应用STA在集成电路设计中有着广泛的应用。
以下通过一个实际项目的例子,来说明STA在项目中的具体应用。
某公司正在设计一款高性能处理器芯片,需要满足高频率和低功耗的要求。
在项目的初期,设计团队制定了时序约束,包括时钟频率、输入输出延迟等。
然后,他们通过STA工具对设计电路进行时序分析。
在时序分析过程中,设计团队发现了一个关键路径,该路径上的延迟较长,可能导致时序违规。
为了解决这个问题,他们使用了时序优化技术,重新设计了时钟树,减少了时钟信号的传输延迟。
此外,他们还对逻辑电路进行了优化,采用了一些高性能的电路结构,进一步减少了关键路径的延迟。
经过多次的时序分析和优化,设计团队最终得到了满足要求的时序报告。
通过对报告的分析,他们确认了电路的时序特性,保证了芯片的正常工作。
建立时间、保持时间和时序约束条件

建立时间、保持时间和时序约束条件1、什么是建立时间(Tsu)和保持时间(Th)以上升沿锁存为例,建立时间是指在时钟翻转之前输入的数据D必须保持稳定的时间;保持时间是在时钟翻转之后输入数据D必须保持稳定的时间[1]。
如下图所示,一个数据要在上升沿被锁存,那么这个数据就要在时钟上升沿的建立时间和保持时间内保持稳定。
图1 建立时间和保持时间建立时间与保持时间,是对触发器(或者寄存器)和锁存器而言,以能够稳定准确的锁存或者触发为目的,对其输入数据信号保持稳定的时间要求,具体数值与具体器件的内部结构特点密切相关,不能人为控制。
建立时间和保持时间在时序分析中是一个很重要的准备知识,弄清楚这个两个时间对时序分析的原理的理解很有帮助。
2、根据内部结构分析建立时间和保持时间图2 经典的上升沿D触发器内部结构关于为什么会有建立时间和保持时间,我曾试图从触发器或锁存器内部的结构去分析和证实,但是看了许多资料,由于触发器的内部结构有很多,所以分析方法很多,说法也很多。
下面我选两个比较经典的结构来分析一下建立时间和保持时间。
以经典边沿触发的D触发器为例子,从内部结构上分析一下D触发器建立时间和保持时间。
这个说明主要来源于EETOP的一篇帖子,其结构在维基百科的触发器词条可以得到验证。
如上图所示,这是一个上升沿触发的D触发器,需要注意的是,图中的6个与非门都是有延迟的,也就是在某一时刻输入组合逻辑的数据,在一段时间之后才能影响其输出,这是产生建立时间和保持时间要求的最根本原因。
首先,我们在假设所有的与非门的延迟为0,叙述一下这个触发器的整体工作流程。
当CLK=0时,与非门G3和G4的输出均为1,输出的1反馈到G1和G2作为输入,导致G1和G2的输出分别为D和/D,输出的D和/D又反馈到G3和G4;而G5和G6在此期间一直锁存着之前的数据,不受输入影响。
图3 CLK=0时触发器内部信号详情当CLK=1时,与非门G3和G4的输出变为/D和D,输出到G5和G6作为输入,根据锁存器的原理,G5和G6最终会稳定的输出Q和/Q。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
用Quartus II Timequest Timing Analyzer进行时序分析:实例讲解 (一)(2012-06-21 10:25:54)转载▼标签:杂谈一,概述用Altera的话来讲,timequest timing analyzer是一个功能强大的,ASIC-style的时序分析工具。
采用工业标准--SDC(synopsys design contraints)--的约束、分析和报告方法来验证你的设计是否满足时序设计的要求。
在用户的角度,从我使用TimeQuest的经验看,它与IC设计中经常用到的比如prime time,time craft等STA软件是比较类似的。
用过prime time或time craft的朋友是非常容易上手的。
在这一系列的文章里,我将会拿一个DAC7512控制器的verilog设计作为例子,详细讲解如何使用TimeQuest进行时序设计和分析。
二,TimeQuest的基本操作流程做为altera FPGA开发流程中的一个组成部分,TimeQuest执行从验证约束到时序仿真的所有工作。
Altera推荐使用下面的流程来完成TimeQuest 的操作。
1. 建立项目并加入相关设计文件不管做什么事情,都需要有一个目标或者说对象。
我们用TimeQuest 做时序分析,当然也需要一个对象,这个对象实际上就是我们的设计。
所以首先是要建立一个Quartus II的项目,并把所有需要的设计文件都加入到项目中去。
需要注意的一点是,这里的设计文件,不仅仅包含逻辑设计相关的文件,也包含已经存在的时序约束文件,当然,需要以synopsys Design Constraints(.sdc)的格式存在的。
2. 对项目进行预编译(initial compilation)项目建立以后,如果从来没有对项目进行过编译的话,就需要对项目进行预编译。
这里的预编译是对应于全编译(full compilation)来讲的,我们可以理解为预编译是对项目进行部分的编译,而全编译是对项目进行完整的编译。
做预编译的目的是为了生成一个initial design database,然后我们可以根据这个database用Timequest采用交互的模式生成时序约束。
实际上,对于小的设计,编译时间并不是很长的话,完全可以不去区分预编译和全编译,需要编译的时候,直接做全编译就可以了,做全编译的话,可以生成一个post-fit的database,完全可以给TimeQuest 使用。
3. 向设计中添加时序约束在用TimeQuest做时序分析之前,必须要指定出对时序的要求,也就是我们通常所说的时序约束。
这些约束包括时钟,时序例外(timing exceptions)和输入/输出延时等。
默认情况下,Quartus II 软件会给所有没有被下约束的时钟都设定为1GHz。
没有任何的时序例外,也就是说所有的timing path都按1T去check。
所有的输入/输出的延迟都按0来计算。
这显然不符合绝大多数设计的时序要求,所以有必要根据设计的特性,添加必要的时序约束。
如上所述,时序约束主要包括三类:时钟,时序例外和输入/输出延迟。
其中时钟和输入/输出延迟可以认为是在某种程度上增强时序设计的要求。
而时序例外可以认为是在某种程度上降低时序设计的要求。
比如说,仅仅设定一个时钟的频率为100MHz的话,这个时钟域里所有timing path都需要能工作在100MHz下。
这显然是增强了时序设计的要求。
可是如果在这个时钟域下面,有部分timing path是不需要做1T的check的,那么就可以通过添加时序例外来避免对这些timing path做1T 的check,即降低了时序设计的要求。
在用TimeQuest做时序分析时,如果非常熟悉设计的构架和对时序的要求,又比较熟悉sdc的相关命令,那么可以直接在sdc文件里输入时序约束的命令。
而通常情况下,可以利用TimeQuest GUI提供的设定时序约束的向导添加时序约束。
不过要注意的是,用向导生成的时序约束,并不会被直接写到sdc文件里,所以如果要保存这些时序约束,必须在TimeQuest用write sdc的命令来保存所生成的时序约束。
4. 执行完整的编译在设定好时序约束以后,就需要对整个设计进行完整的编译。
在编译过程中,软件会优化设计的逻辑、布局布线等来尽可能满足所有的时序约束。
如果没有添加时序约束,那么软件在编译的时候,会按照默认的时序约束对设计进行优化,对于绝大多数的设计,都会报出来时序的问题,但因为默认的时序约束与设计本身的要求在绝大多数情况下,都是不同的,所以这些时序的问题也并不是设计本身的问题,并没有太多的参考价值,而且很多初学者也不会注意到这个问题。
这样就把设计中很多潜在的时序问题给隐藏起来了,最终带来的可能就是系统运行的不稳定,甚至是完全不能运行。
5. 验证时序当完成编译以后,我们就可以用TimeQuest来验证时序了。
在时序分析的过程中,TimeQuest会分析设计中所有的timing path,计算每一条timing path的延时,检查每一条timing path是否满足时序约束,最后按照positive slack或negative slack来报告时序分析的结果。
其中negative slack就表示对应的timing path不满足时序约束的要求(timing violation)。
如果遇到有不满足时序要求的情况,则可以根据对应的时序报告分析设计,确定如何优化设计使之满足时序约束。
时序约束有任何变化的话,都需要重新编译设计。
这个反复的过程可以让我们解决设计中的时序问题。
三,DAC7512控制器DAC7512是一个具有三线串行接口的DAC。
我们基于FPGA用Verilog语言实现了一个简单的DAC7512的控制器。
下面是控制器的结构图:DAC7512控制器由三个模块组成,PLL用来生成控制器所要的时钟C0(25MHz)和C1(50MHz),其lock信号用来做为控制器的异步reset。
da_data模块生成要送往DAC7512的数据,其中DA_DATA为数据,DA_DATA_EN为数据有效信号,该模块使用C0时钟,整个属于C0时钟域。
DAC7512模块用于将DA_DATA转换成符合DAC7512接口标准的串行数据并送给DAC7512,要用到C1(50MHz)和DA_SCLK(C1二分频,25MHz)两个时钟。
DAC7512控制器一共有四个输入输出端口。
CLK_IN为PLL的基准时钟,为25MHz。
DA_DIN,DA_SCLK和DA_SYNC为三线串口,都为输出端口。
由于C0,C1是由同一个PLL输出的,DA_SCLK是由C1经二分频得到的,三者之间是同步的,处于同一个clock group中。
DAC7512模块的详细设计资料可参照本博客中“FPGA设计中DAC7512控制的Verilog实现” 的文章。
不过要注意一点的是,在串行总线上,DA_DIN是在DA_SCLK的下降沿有效的。
把DA_DIN设计为C1时钟域的信号,并控制其值只在DA_SCLK为高电平的时候发生变化。
这样可以把DA_DIN与DA_SCLK之间的时序要求转换为DA_DIN 在C1时钟域的时序要求,细节我们会在下面介绍。
四,用TimeQuest对DAC7512控制器进行时序分析在对某个对象下时序约束的时候,首先要能正确识别它,TimeQuest 会对设计中各组成部分根据属性进行归类,我们在下时序约束的时候,可以通过命令查找对应类别的某个对象。
TimeQuest对设计中各组成部分的归类主要有cells,pins,nets和ports 几种。
寄存器,门电路等为cells;设计的输入输出端口为ports;寄存器,门电路等的输入输出引脚为pins;ports和pins之间的连线为nets。
具体可以参照下图(此图出自Altera Time Quest的使用说明)。
下面我们按照本文第二部分用TimeQuest做时序分析的基本操作流程所描述的流程对DAC7512控制器进行时序分析。
建立和预编译项目的部分相对简单,涉及到的也只是QuartusII的一些基本操作,这里我们就不再做具体的叙述。
主要介绍如何向项目中添加时序约束和如何进行时序验证。
首先建立一个名称与项目top层名字一致的sdc文件,然后按照下面的步骤添加时序约束。
1. 创建时钟添加时序约束的第一步就是创建时钟。
为了确保STA结果的准确性,必须定义设计中所有的时钟,并指定时钟所有相关参数。
TimeQuest支持下面的时钟类型:a) 基准时钟(Base clocks)b) 虚拟时钟(Virtual clocks)c) 多频率时钟(Multifrequency clocks)d) 生成时钟(Generated clocks)我们在添加时序约束的时候,首先创建时钟的原因是后面其它的时序约束都要参考相关的时钟的。
基准时钟:基准时钟是输入到FPGA中的原始输入时钟。
与PLLs输出的时钟不同,基准时钟一般是由片外晶振产生的。
定义基准时钟的原因是其他生成时钟和时序约束通常都以基准时钟为参照。
很明显,在DAC7512控制器中,CLK_IN是基准时钟。
我们用下面的命令来创建这个基准时钟:create_clock -name CLK_IN -period 40 -waveform {0 20} [get_ports{CLK_IN}]其中,create_clock是创建时钟的命令,后面是命令的各种选项。
其中-name CLK_IN选项给出了时钟的名字,即CLK_IN。
-period 40给出了时钟的周期,即40ns。
-waveform {0 20}给出了时钟的占空比,即50/50。
最后的[get_ports {CLK_IN}] 是嵌套的tcl命令,给出了CLK_IN对应的port,实际上也就是CLK_IN的输入引脚。
在sdc文件里添加上述命令后,在quartusII里编译设计,然后通过tools –> TimeQuest Time Aanlyzer命令打开TimeQuest。
在TimeQuest的Tasks 窗口,找到Report Clocks,双击之,TimeQuest就会在右边主窗口给出设计中已成功添加的时钟信息。
如下图所示,可以看到CLK_IN,其类型为基准时钟,周期为40ns,频率为25MHz,targets项为CLK_IN,即表示这个时钟是连接在CLK_IN端口上的。
这说明上面create_clock的命令已经在设计中正确创建了时钟CLK_IN。
实际上对于create_clock命令,我们可以通过quartus II的帮助系统(/current/),查找它的语法。