已阅读5页,还剩11页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
FPGA QuartusII 时钟约束时钟约束(Clock Specification):约束所有时钟(包括你的设计中特有的时钟)对准确的时序分析结果而言是必不可少的。Quartus II TimeQuest Timing Analyzer为各种各样的时钟配置和典型时钟提供许多SDC命令。这个章节将介绍SDC可用的应用编程接口,以及描述指定的时钟特性。时钟(Clocks)使用create_clock命令为任何register, port或pin进行时钟特性描述,使其具有独一的时钟特性。例62展示了create_clock命令:Example 62. create_clock Commandcreate_clock-period -name -waveform -addTable 66. create_clock Command Options选项描述-period 指定时钟周期-name 指定时钟名称(不一定是约束时钟的节点名称)-waveform 指定时钟上升沿/下降沿-add可以对一个时钟节点进行多个时钟约束指定你要约束的时钟(目标节点)Example 63 约束时钟频率100MHz,占空比50%,0ns上升沿,5ns下降沿。Example 63. 100MHz Clock Creationcreate_clock period 10 waveform 0 5 clkExample 64和上例相差90度的相位。Example 64. 100MHz Shifted by 90 Degrees Clock Creationcreate_clock period 10 waveform 2.5 7.5 clk_sys使用create_clock命令约束时钟缺省的source Latency值为0。Quartus II TimeQuest Timing Analyzer自动为非虚拟时钟(non-virtual clocks)计算时钟网络延时(clocks network latency)。Quartus II Handbook, Volume 3 6-29生成时钟(Generated Clocks)Quartus II TimeQuest Timing Analyzer可以把修改或改变主时钟(或者引入时钟)特性的分频时钟、波纹时钟和电路作为生成时钟。你可以定义这些电路的输出作为生成时钟。这些定义可以让Quartus II TimeQuest Timing Analyzer分析这些时钟以及关联的时钟网络延时(network latency)。 使用create_generated_clock命令定义生成时钟。Example 65. create_generated_clock Commandcreate_generated_clock-name -source -edges -edge_shift -divide_by -multiply_by -duty_cycle -add-invert-master_clock -phase -offset Table 67. create_generated_clock Command Options选项描述-name 生成时钟名-source 指定被设定的时钟节点-edges |-edge_shift -edges指定和主时钟的上升沿和下降沿有关的新的上升沿和下降沿-divide_by |-multiply_by -divide_by和-multiply_by要素是基于第一个时钟上升沿,通过设定来延长或者缩短指定要素的波形-duty_cycle 指定生成时钟的占空比-add允许你对同一个管脚添加多个时钟约束-invert-master_clock 用于主管脚上有多个时钟存在时指定一个主时钟-phase 指定生成时钟的相位-offset 指定生成时钟的偏移指定被分配到的目标管脚源延时是由于从主时钟(不一定是主管脚)开始的时钟网络延时所致。你可以使用set_clock_latency source命令约束源延时。Figure 617 展示了如何产生一个基于10ns时钟的反向生成时钟:Figure 617. Generating an Inverted Clockcreate_clock -period 10 get_ports clkcreate_generated_clock -divide_by 1 -invert -source get_registers clk get_registers gen|clkregFigure 618 展示了如何使用-edges和-edge_shift选项以改变生成时钟。Figure 618. Edges and Edge Shifting a Generated Clockcreate_clock -period 10 -waveform 0 5 get_ports clk# Creates a divide-by-t clockcreate_generated_clock -source get_ports clk -edges 1 3 5 get_registers clkdivA|clkreg# Creates a divide-by-2 clock independent of the master clocks duty cycle (now 50%)create_generated_clock -source get_ports clk -edges 1 1 5 -edge_shift 0 2.5 0 Figure 619 展示了-multiply_by选项对生成时钟的影响。Figure 619. Multiplying a Generated Clockcreate_clock -period 10 -waveform 0 5 get_ports clk# Creates a multiply-by-2 clockcreate_generated_clock -source get_ports clk -multiply_by 2 get_registers Quartus II Handbook, Volume 3 6-32虚拟时钟Virtual Clocks虚拟时钟是一个在设计中没有真正源或者说与设计没有直接关系的一个时钟。例如,如果一个时钟不是设计中的时钟,而仅仅作为一个外部器件的时钟源,并且外部器件和该设计有输入或者输出的管脚,那么就认为这个时钟是虚拟时钟。使用create_clock命令创造一个虚拟时钟,对源选项没有指定值。你可以使用set_input_delay和set_output_delay约束虚拟时钟。Figure 620展示了Quartus II TimeQuest Timing Analyzer若要正确的分析外部寄存器和内部设计逻辑之间的关系,在何处需要设置虚拟时钟的实例。虽然名为virt_clk的晶振没有和Altera器件直接相互作用,但是担当起了外部寄存器的源时钟的角色,所以时钟virt_clk必须申明。Example 66 展示了定义一个周期10ns,名为virt_clk,50%占空比,上升沿在0ns的虚拟时钟的命令。虚拟时钟用于作为输出延时约束的时钟源。在你产生虚拟时钟之后,你可以执行register-to-register的分析报告(在Altera器件和外部器件的寄存器之间)。Example 66. 虚拟时钟Example 1#create base clock for the designcreate_clock -period 5 get_ports system_clk#create the virtual clock for the external registercreate_clock -period 10 -name virt_clk -waveform 0 5 #set the output delay referencing the virtual clockset_output_delay -clock virt_clk -max 1.5 get_ports dataoutExample 67 展示了产生一个周期为10ns,占空比为50%,相移90度虚拟时钟的命令。Example 67. Virtual Clock Example 2create_clock -name virt_clk period 10 waveform 2.5 7.5 Quartus II Handbook, Volume 3 6-33多频时钟 Multi-Frequency Clocks某些情况下在设计中会有很多个时钟源提供时钟信号。增加的时钟也许扮演一个低频率低功耗时钟的角色。在分析这种设计时,create_clock命令提供了add选项让你添加多个时钟节点。Example 68展示了时钟周期为10ns的节点clk,然后对同一个节点添加时钟周期为15ns的时钟。Quartus II TimeQuest Timing Analyzer在执行时序分析时两个时钟都用到了。Example 68. Multi-Frequency Examplecreate_clock period 10 name clock_primary waveform 0 5 get_ports clkcreate_clock period 15 name clock_secondary waveform 0 7.5 get_ports clk -addQuartus II Handbook, Volume 3 6-34自动时钟检测 Automatic Clock Detection想要为你的设计中所有的时钟节点自动添加时钟约束,那么就使用derive_clocks命令。这个命令从管脚或者寄存器生成时钟以确保设计中的每个寄存器都有时钟。Example 69 展示了derive_clocks命令选项。Example 69. derive_clocks Commandderive_clocks-period -waveform Table 68 describes the options for the derive_clocks command.选项描述-period 指定时钟周期,你也可以指定时钟频率如下:-period MHz-waveform 指定沿变化时刻derive_clocks命令不能为PLLs输出时钟进行约束。derive_clocks命令相当于使用create_clock命令为每个寄存器或者管脚产生时钟。Quartus II Handbook, Volume 3 6-35锁相环时钟 Derive PLL ClocksPLLs(锁相环)在Altera器件中被用于时钟管理和综合。你可以定制基于你设计需要的PLL输出时钟约束。因为所有的时钟节点应该有一个共同的时钟基准,故所有的PLL输出应该有一个关联时钟。你可以使用create_generated_clock命令手动添加一个作为PLL输出的基准时钟,或者你也可以使用derive_pll_clocks命令自动搜寻时序网表并通过设置指定PLL输出来产生时钟。使用derive_pll_clocks命令为PLL输出自动产生时钟的实例如下:derive_pll_clocks -use_tan_nameTable 69. derive_pll_clocks Command Options选项描述-use_tan_name缺省下,时钟名为输出时钟名字。这个选项使用的网络名字类似于在Quartus II Classic Timing Analyzer中使用的。derive_pll_clocks命令调用create_generated_clock命令以产生PLL输出的生成时钟。create_generated_clock命令的source是PLL的输入时钟。derive_pll_clocks命令的前后已固定,你必须手动为PLL生成一个输入时钟节点。如果PLL的输入时钟节点未被定义好,报告中不会出现PLL输出的时钟。取而代之的,当时序网表更新后,Quartus II TimeQuest Timing Analyzer发出一个类似于Figure 610的警告信息。Example 610. Warning MessageWarning: The master clock for this clock assignment could not be derived.Clock: was not created.你可以把derive_pll_clocks命令添加到你的SDC文件中,以使得derive_pll_clocks命令可以自动检测PLL的任何变化。derive_pll_clocks在你的SDC文件中,每次读取该文件,PLL输出时钟脚的create_generated_clock命令就将生成。如果在derive_pll_clock命令后使用write_sdc命令,新的SDC文件包含了独立的PLL输出时钟管脚的create_generated_clock命令,并且不是derive_pll_clocks命令。任何PLL属性的变化不会自动的反应到新的SDC文件中。你必须通过写入derive_pll_clocks命令手动更新新的SDC文件中的create_generated_clock命令(反映PLL的变化)。通过添加适当的multicycle约束计算不确定因素,derive_pll_clocks将约束设计中的任何LVDS传送和LVDS接收。例如,Figure 621展示了一个寄存器到寄存器路径的单一PLL设计。使用derive_pll_clocks命令自动约束PLL。当Figure 621的设计中使用到这个命令,将产生Example 611的信息。Example 611. derive_pll_clocks Generated MessagesInfo:Info: Deriving PLL Clocks:Info: create_generated_clock -source pll_inst|altpll_component|pll|inclk0 -divide_by 2 -namepll_inst|altpll_component|pll|CLK0 pll_inst|altpll_component|pll|clk0Info:名为pll_inst|altpll_component|pll|inclk0的节点用于作为PLL输入时钟脚的源参考选项。此外,PLL输出时钟的名字是PLL输出时钟节点pll_inst|altpll_component|pll|clk0。如果PLL处于时钟替换模式,PLL输出时钟将产生多时钟;一个是主要输入时钟(例如inclk0),另一个是次要输入时钟(例如inclk1)。假若那样的话,你可以使用set_cock_groups命令加上-exclusive选项以削减主要和次要输出时钟。在你可以为这个设计产生任何报告之前,你必须为PLL输入时钟管脚产生一个基本时钟,使用类似下面的命令:create_clock -period 5 get_ports pll_inclk你不用在PLL的输入时钟管脚pll_inst|altpll_component|pll|inclk0上产生基本时钟。PLL输入时钟管脚产生所有的扇出时钟管脚,包括PLL输入时钟管脚。Quartus II Handbook, Volume 3 6-37缺省时钟约束 Default Clock Constraints为了提供彻底的时钟分析,如果你的设计中没有基本时钟约束,Quartus II TimeQuest Timing Analyzer在缺省时会自动的检测所有未被约束的时钟节点。Quartus II TimeQuest Timing Analyzer使用以下命令产生1GHz的时钟约束你的未约束时钟:derive_clocks -period 1独立的时钟约束(例如,create_clock, create_generated_clock)可能会出现在设计中。这将导致不切实际的分析设计中的时序要求。derive_clocks的使用应该避免出现在最终的时序里。缺省时钟约束仅仅被用于Quartus II TimeQuest Timing Analyzer检测所有没有时钟连接的同步单元。例如,如果一个设计约束两个时钟,而仅有一个时钟已经约束了,这将不会使用缺省时钟约束。然而,如果两个时钟都未被约束,那么将会启动缺省时钟约束。Quartus II Handbook, Volume 3 6-37Clock Groups设计中存在着许多时钟,然而,并非所有时钟都相互关联,况且某些时钟间相互关联是没有必要的。异步时钟就是不相关时钟(异步时钟有不同的理想时钟源)。专用时钟也不一定在同一时刻激活(例如,多元时钟)。必须向Quartus II TimeQuest Timing Analyzer指明相互排斥的时钟,从而阻止其把这些时钟作为关联时钟进行分析。 使用set_clock_groups命令指明相互排斥或者异步的时钟。Example 612 展示了set_clock_groups命令及选项。Example 612. set_clock_groups Commandset_clock_groups-asynchronous | -exclusive-group -group -group .Table 610 describes the options for the set_clock_groups command.选项描述-asynchronous异步时钟两个时钟没有相位关系并且不在同一时刻激活-exclusive专有时钟两个时钟中仅有一个在特定时间激活。2选1时钟就是专有时钟的一个实例-group 指定相互独有的时钟名。用于指定时钟名Example 613展示了set_clock_groups命令和等价命令set_false_path的用法。Example 613. set_clock_groups Example# Clocks A and C are never active when clocks B and D are activeset_clock_groups -exclusive -group A C -group B D# Equivalent specification using false pathsset_false_path -from get_clocks A -to get_clocks Bset_false_path -from get_clocks A -to get_clocks Dset_false_path -from get_clocks C -to get_clocks Bset_false_path -from get_clocks C -to get_clocks Dset_false_path -from get_clocks B -to get_clocks Aset_false_path -from get_clocks B -to get_clocks Cset_false_path -from get_clocks D -to get_clocks Aset_false_path -from get_clocks D -to get_clocks CQuartus II Handbook, Volume 3 6-39影响时钟特性 Clock Effect Characteristicscreate_clock和create_generated_clock命令产生不涉及板级影响的理想时钟。这个章节描述如何计算影响时钟特性的时钟延时(clock latency)和时钟不确定时间(clock uncertainty)。时钟延时 Clock Latency时钟延时(clock latency)由两部分组成:源(source)和网络(network)。源延时(Source latency),是指从源时钟到目的时钟端的传播延时(例如,一个时钟端口),而网络延时(network latency)是指从一个定义点时钟到一个寄存器时钟端口的传播延时。寄存器时钟节点总的延时是时钟路径上源和网络延时之和。set_clock_latency命令仅仅支持源延时。当使用该命令时,-source选项需指定。使用set_clock_latency命令指定设计中的任意时钟端口的源延时Example 614展示了set_clock_latency命令选项。Example 614. set_clock_latency Commandset_clock_latency-source-clock -rise | -fall-late | -earlyQuartus II TimeQuest Timing Analyzer自动计算网络延时;因此,set_clock_latency命令仅仅指定源延时。时钟不确定时间Clock Uncertaintyset_clock_uncertainty命令为时钟或者时钟到时钟传输指定了时钟不确定时间或时钟偏斜。可以为个别的建立和保持时间指定不确定时间,也可以为个别时钟传输指定上升沿或下降沿。Quartus II TimeQuest Timing Analyzer为每个合适路径数据需要时间(data required time)里扣除建立不确定时间,为每个合适路径的数据需要时间加上保持不确定时间。使用set_clock_uncertainty命令指定时钟管脚的任意时钟不确定时间。Example 615展示了set_clock_uncertainty命令及选项。Example 615. set_clock_uncertainty Command and Optionsset_clock_uncertainty-rise_from | -fall_from |-from -rise_to | -fall_to | -to -setup | -holdQuartus II Handbook, Volume 3 6-41获得时钟不确定时间Derive Clock Uncertainty使用derive_clock_uncertainty命令应用于交互时钟(inter-clock)、内部时钟(intra-clock)和I/O接口的不确定时间的自动检测。建立和保持不确定时间都适合于时钟到时钟的传输。Example 616展示了derive_clock_uncertainty命令选项。Example 616. derive_clock_uncertainty Commandderive_clock_uncertainty-overwrite-dtwQuartus II TimeQuest Timing Analyzer自动的添加设计中时钟到时钟传输的时钟不确定时间。随着set_clock_uncertainty命令已被应用于源和目的时钟对中的任何时钟不确定时间约束,比起由derive_clock_uncertainty命令约束的时钟不确定时间具有更高的优先权。例如,如果set_clock_uncertainty命令先指定了源时钟CLKA和目的时钟CLKB之间的时钟网络延时。那么derive_clock_uncertainty命令次之,由derive_clock_uncertainty命令计算出的由源时钟CLKA到目的时钟CLKB的不确定时间将被忽略。你可以使用-overwrite命令覆盖原先的时钟不确定时间分配,后者手动添加remove_clock_uncertainty命令进行移除。在以下的时钟到时钟传输类型中,时钟必然能够出现,它们被derive_clock_uncertainty命令自动归类。 Inter-clock Intra-clock I/O Interface交互时钟传输Inter-Clock Transfers交互时钟
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024版高强度纸箱购销协议范例版
- 2024-2030年超导材料行业并购重组机会及投融资战略研究咨询报告
- 2024-2030年行车记录仪行业市场深度调研及供需格局与投资前景研究报告
- 电子商务网络营销实施合同
- 2024-2030年药用乙醇行业市场现状供需分析及投资评估规划分析研究报告
- 2024-2030年花卉艺术产业市场发展分析及前景趋势与投资战略研究报告
- 2024-2030年自由潜水呼吸系统行业市场现状供需分析及投资评估规划分析研究报告
- 2024-2030年肥皂生产线行业市场现状供需分析及投资评估规划分析研究报告
- 2024-2030年美容护肤行业市场现状供需分析及投资评估规划分析研究报告
- 2024-2030年米拉贝李子行业市场现状供需分析及投资评估规划分析研究报告
- 高中语文表现手法之烘托、渲染、衬托、对比的明显区别
- 泰达时代中心楼顶发光字施工方案
- LED灯具规格书中英文
- 固定资产与无形资产管理制度
- 液压泵站使用说明
- 论我国农村集体土地所有制度的完善-
- SPC八大控制图自动生成表
- 国家电网公司用电信息采集系统运行维护管理办法
- 人民大学大众汽车案例-4组
- 惠州市金山湖公园修建性详细规划
- 旅行社行政岗位职责
评论
0/150
提交评论