时钟约束
2015-06-29 17:04
197 查看
设计一个计数程序,使用时钟clk,在这个clk的上升沿计数。
硬件上该时钟由50MHz晶振提供,因此设计时钟就要约束为50MHz,20ns时钟周期。
编译工程后打开quartus II TimeQuest:
点击Netlist -> Create Timing Netlist:
点击OK,点击菜单栏Constraints -> Create Clock:
设置period为20ns,设置Targets为clk,点击Run完成约束设置。
依次点击task栏里的Update Timing Netlist 和 Write SDC File
点击OK,工程目录中的ti_me.out.sdc文件里便出现了所添加的约束:
重新编译工程,重新进入TimeQuest,点击Report All Core Timings:
在report窗口出现Report Timing (Core),可以看到Setup路径和Hold路径:
点击Report Timing,选择Setup:
Setup详细路径分析:
Data Arrival Time = Launch Edge + Tc2t + Tco + Tc2r = 0 + 2.541 + 0.199 + (2.655-0.199)
Data Required Time = Latch Edge + Tc2r – Tsu = 20 + 2.476 – (-0.015)
Setup time slack = Data Required Time – Data Arrival Time = 22.491 – 5.196 = 17.295ns
点击Report Timing,选择Hold:
Hold详细路径分析:
Data Arrival Time = Launch Edge + Tc2t + Tco + Tc2r = 0 + 2.453 + 0.199 + (0.580-0.199)
Data Required Time = Latch Edge + Tc2r + Th = 0 + 2.518 + 0.157
Setup time slack = Data Arrival Time – Data Required Time= 3.033– 2.675= 0.358ns
其中:
Tco表示数据在被锁存后在寄存器内所经过的延时;
Tc2t表示时钟源到源寄存器reg1所经过的时钟网络延时;
Tc2r表示时钟源到目的寄存器reg2所经过的时钟网络延时;
Tr2r表示数据从源寄存器的输出端到目的寄存器的输入端所经过的延时;
硬件上该时钟由50MHz晶振提供,因此设计时钟就要约束为50MHz,20ns时钟周期。
编译工程后打开quartus II TimeQuest:
点击Netlist -> Create Timing Netlist:
点击OK,点击菜单栏Constraints -> Create Clock:
设置period为20ns,设置Targets为clk,点击Run完成约束设置。
依次点击task栏里的Update Timing Netlist 和 Write SDC File
点击OK,工程目录中的ti_me.out.sdc文件里便出现了所添加的约束:
重新编译工程,重新进入TimeQuest,点击Report All Core Timings:
在report窗口出现Report Timing (Core),可以看到Setup路径和Hold路径:
点击Report Timing,选择Setup:
Setup详细路径分析:
Data Arrival Time = Launch Edge + Tc2t + Tco + Tc2r = 0 + 2.541 + 0.199 + (2.655-0.199)
Data Required Time = Latch Edge + Tc2r – Tsu = 20 + 2.476 – (-0.015)
Setup time slack = Data Required Time – Data Arrival Time = 22.491 – 5.196 = 17.295ns
点击Report Timing,选择Hold:
Hold详细路径分析:
Data Arrival Time = Launch Edge + Tc2t + Tco + Tc2r = 0 + 2.453 + 0.199 + (0.580-0.199)
Data Required Time = Latch Edge + Tc2r + Th = 0 + 2.518 + 0.157
Setup time slack = Data Arrival Time – Data Required Time= 3.033– 2.675= 0.358ns
其中:
Tco表示数据在被锁存后在寄存器内所经过的延时;
Tc2t表示时钟源到源寄存器reg1所经过的时钟网络延时;
Tc2r表示时钟源到目的寄存器reg2所经过的时钟网络延时;
Tr2r表示数据从源寄存器的输出端到目的寄存器的输入端所经过的延时;
相关文章推荐
- Java中堆内存和栈内存详解
- Echarts 地图(map)插件之 省份的颜色自定义
- poj - 2195 Going Home (费用流 || 最佳匹配)
- 贪心/思维题 Codeforces Round #310 (Div. 2) C. Case of Matryoshkas
- Java学习-020-Properties 判断是否存在对应的 key 项
- OAuth 2.0系列教程(九) 契约请求和响应
- 字符串的排列组合
- NSDictionary、NSMutableDictionary的基本用法
- Spring Mongodb
- 对于业务中库存超卖测试
- eclipse下出现乱码的问题
- MyBatis根据Map中key作为字段名,value作为字段值修改数据
- iOS语言中的单例模式
- 关于开发者证书那点儿挫折
- OAuth 2.0系列教程(八) 授权码授权
- iOS开发工具-网络封包分析工具Charles
- DBN深信度网络
- 如何实现可动态调整隐藏header的listview
- [日志处理工作之五]整合logstash,kafka
- malloc()之后,内核发生了什么?