|
基本的時序分析理論2 本文節選自特權同學的圖書《FPGA設計實戰演練(邏輯篇)》 配套例程下載鏈接:http://pan.baidu.com/s/1pJ5bCtt 下面我們再來看一個例子,如圖8.2所示,我們假設有4個輸入信號,經過FPGA內部的一些邏輯處理后到達同一個輸出端。FPGA內部的布線資源有快慢之分,就好比普通的國道和高速公路。通過高速通道所需要的路徑延時假設為3ns-7ns,但只有兩條可用;而通過慢速通道的路徑延時通常要大許多,這里假設大于10ns。(特權同學,版權所有)
圖8.2 時序分析實例2 默認情況下,如圖8.3所示,離高速通道較近的din_2和din_3路徑被布線到了高速通道上,當前的4個信號在FPGA內部的延時分別為:din1 = 15ns,din2 = 4ns,din3 = 6ns,din4 = 13ns。(特權同學,版權所有)
圖8.3 時序分析實例2默認布線延時 但是,我們實際的系統需求是這樣的:din1 < 10ns, din2 < 10ns, din3 < 20ns, din4 < 20ns。(特權同學,版權所有) 按照前面給出的4個輸入信號的默認布局布線情況來看,如圖8.4所示,雖然din2、din3和din4都達到了要求,但是din1無法滿足時序要求,我們通常認為這是時序違規。(特權同學,版權所有)
圖8.4 時序分析實例2默認布線時序違規情況 如果我們按照實際的需求對FPGA進行如下的時序約束:din1 < 10ns, din2 < 10ns, din3 < 20ns, din4 < 20ns。接下來,如圖8.5所示,FPGA將重新進行布局布線。(特權同學,版權所有)
圖8.5 時序分析實例2重新布局布線 由于添加了時序約束,因此,FPGA的布局布線工具會根據這個實際需求,重新做布局布線。重新布局布線后的路徑延時如下:din1 = 7ns, din2 = 4ns, din3 = 18ns, din4 = 13ns。顯然,FPGA內部的時序全部都能夠滿足要求。(特權同學,版權所有)
圖8.6 時序分析實例2重新布局布線后的時序違規情況 關于約束,我們要稍微提一下兩種不恰當的約束方法,即欠約束和過約束。我們假設下面提到的兩種情況下的原始系統實際時序要求都是一樣的,即前面我們所說的:din1 < 10ns, din2 < 10ns, din3 < 20ns, din4 < 20ns。(特權同學,版權所有) 但是下面這兩種情況的約束不是完全按照實際系統時序需求來約束,我們來看看這些情況下會出現什么問題。(特權同學,版權所有) 首先來看看欠約束的情況(din1和din2欠約束)。(特權同學,版權所有) 如果對本實例添加約束為:din1 < 20ns, din2 < 20ns, din3 < 20ns, din4 < 20ns。此時,由于4條路徑的延時都能夠控制在20ns要求之內,所以當前的約束都能夠達到目標。(特權同學,版權所有) 但是,相對于實際的情況,有兩種情形: A. din1和din2走了高速通道,那么當前約束也能夠滿足實際的時序要求; B. din1和din2都沒有走高速通道,或者有1條路徑走了高速通道,那么結果是一樣的,整個系統的時序無法完全滿足要求。(特權同學,版權所有) 再來看看過約束的情況(din3和din4過約束)。(特權同學,版權所有) 如果對本實例添加約束為:din1 < 10ns, din2 < 10ns, din3 < 10ns, din4 < 10ns。此時,由于能夠走高速通道使得路徑延時小于10ns的路徑只有2條,那么無論如何當前的約束都有2條無法達到目標。(特權同學,版權所有) 但是,相對于實際的情況,也有兩種情形: A. din1和din2走了高速通道,那么當前約束也能夠滿足實際的時序要求; B. din1和din2都沒有走高速通道,或者有1條路徑走了高速通道,那么結果是一樣的,整個系統的時序無法完全滿足要求。(特權同學,版權所有) 這個簡單的例子當然不會是FPGA內部實際的情況,但是FPGA內部的各種資源若要得到均衡的分配,設計者就必須添加一定的約束(時序約束),將設計的需求傳達給工具,那么才有可能指導工具進行資源的合理分配,保證系統的基本性能要求得以實現。(特權同學,版權所有) 時序欠約束和時序過約束都是不可取的,設計者應該根據實際的系統時序要求,添加合適的時序要求(可以稍微過約束),幫助設計工具達到最佳的時序性能。(特權同學,版權所有) |