|
从Technology Map Viewer分析Clock Setup Slack
从Technology
Map Viewer分析Clock Setup Slack
特权同学对于时序分析也还只是个初学者,前阵子被Quartus II的Classic
Timing Analyzar折腾的焦头烂额之际,无意中看到了ripple兄过去写的一些关于TimeQuest的一些博文,可谓受益匪浅。虽然ripple兄只是对Quartus II
handbook里关于TimerQuest的基本概念做了一些翻译
(当然也对容易混淆的概念做了一些解释),更重要的是ripple兄指明了一个方向,还
是先扎扎实实的弄懂基本概念。这不,特权同学本着好记性不如烂笔头的菜鸟思想,把自己的零星感悟一一呈上。
既然要说Clock Setup Slack,那么不得不从最基本
的概念说起。简单的说,建立时间Tsu无非是指在时钟的上升沿
到来前多久数据必须到达,只有满足这个时间的数据才会被正确锁存。那么Clock Setup Slack就是指建立时间余量,
它为正时表示满足建立时间要求,当它为负时表示不满足时序要求。
公式如下:(有三种情况,这里只讨论寄存器到寄存器的建立时序余量,具体大家可以参考http://blog.ednchina.com/riple/24489/message.aspx)
Clock Setup Slack
Time = Data Required Time – Data Arrival Time
Data Arrival Time
= Launch Edge + Clock Network Delay to Source Register + Input Maximum
Delay of Pin + Pin-to-Register Delay
Data Required
Time = Clock Arrival Time – μtsu
Clock Arrival
Time = Latch Edge + Clock Network Delay to Destination Register
从上面的公式可以知道,建立时间余量=数据需要到达的时间-数据实际到达的时间。
换句话说,就是数据实际到达的时间比需要到达的时间早,那么建立时间余量就为正,达到要求,反之亦然。(本文不对公式里的基本概念做太对阐述了,还请感兴
趣的朋友看上面给了链接的博文。)
那么步入主题吧,下面要给出的一个Technology Map Viewer下的视图背景大体是这样
的,一个时钟约束为10ns的工程,实际只跑到了91.5MHz,也就是说出现了未满足时序余量要求的路径。而下面就是一个Worst Case Slack的例子。
从report里可以看到,Data Arribal Time="14".175,Data Required Time="13".348,通过上面公式得出结论
是slack=-0.827,也就是没有满足时序要求。那么现在就用Technology Map Viewer来看看这个路径为何不满
足建立时间的要求。
先罗列出Data Arrival Path:
Total Incr RF Type
Fanout Location
Element
0.000 0.000
launch edge time
3.681 3.681 R clock network delay
4.057 0.376
uTco 2 LC_X5_Y5_N8 wr_gene:wr_gene|over_addr[10]
4.057 0.000 RR CELL 1
LC_X5_Y5_N8 wr_gene|over_addr[10]|regout
6.051 1.994 RR IC 3 LC_X3_Y5_N0 wr_gene|Add2~144|datab
6.798 0.747 RR CELL 1
LC_X3_Y5_N0 wr_gene|Add2~144|cout0
6.798 0.000 RR IC 2 LC_X3_Y5_N1 wr_gene|Add2~134|cin0
6.921 0.123 RR CELL 1
LC_X3_Y5_N1 wr_gene|Add2~134|cout0
6.921 0.000 RR IC 2 LC_X3_Y5_N2 wr_gene|Add2~140|cin0
7.044 0.123 RR CELL 1
LC_X3_Y5_N2 wr_gene|Add2~140|cout0
7.044 0.000 RR IC 2 LC_X3_Y5_N3 wr_gene|Add2~142|cin0
7.167 0.123 RR CELL 1
LC_X3_Y5_N3 wr_gene|Add2~142|cout0
7.167 0.000 RR IC 2 LC_X3_Y5_N4 wr_gene|Add2~138|cin0
7.982 0.815 RR CELL 1
LC_X3_Y5_N4 wr_gene|Add2~138|combout
9.689 1.707 RR IC 1 LC_X5_Y5_N8 wr_gene|over_addr[10]|datad
9.889 0.200 RR CELL 1
LC_X5_Y5_N8 wr_gene|over_addr[10]|combout
11.024 1.135 RR IC 1 LC_X4_Y5_N0 wr_gene|Equal2~88|datab
11.764 0.740 RR CELL 1
LC_X4_Y5_N0 wr_gene|Equal2~88|combout
12.069 0.305 RR IC 1 LC_X4_Y5_N1 wr_gene|Equal2~89|datad
12.269 0.200 RR CELL 2
LC_X4_Y5_N1 wr_gene|Equal2~89|combout
12.574 0.305 RR IC 1 LC_X4_Y5_N2 wr_gene|Selector5~116|datad
12.774 0.200 RR CELL 1
LC_X4_Y5_N2 wr_gene|Selector5~116|combout
13.079 0.305 RR IC 1 LC_X4_Y5_N3 wr_gene|Selector5~117|datad
13.279 0.200 RR CELL 1
LC_X4_Y5_N3 wr_gene|Selector5~117|combout
13.584 0.305 RR IC 1 LC_X4_Y5_N4 wr_gene|current_state.IDLE|datad
14.175 0.591 RR CELL 1 LC_X4_Y5_N4 wr_gene:wr_gene|current_state.IDLE
再来看Technology Map Viewer里从over_addr[10]到current_state.IDLE的路径。