朱鵬+夏際金
摘 要:FPGA與BWDSP100高速鏈路口數(shù)據(jù)傳輸,在300MB/s的速率下,F(xiàn)PGA則需要進(jìn)行SDC時(shí)序約束,來(lái)確保時(shí)序準(zhǔn)確無(wú)誤, FPGA與BWDSP100的Link口屬于源同步接口,本文利用TimeQuest時(shí)序分析工具對(duì)FPGA的LINK口邏輯進(jìn)行約束,工程應(yīng)用中6路LINK口能穩(wěn)定工作在300MB/s的傳輸速率下。
關(guān)鍵詞:Link口;時(shí)序約束;BWDSP100;FPGA
DOI:10.16640/j.cnki.37-1222/t.2015.21.215
0 引言
BWDSP100處理器是一款32位高性能數(shù)字信號(hào)處理器,是38所自主設(shè)計(jì)和研發(fā),面向雷達(dá)信號(hào)處理、精確制導(dǎo)武器、電子對(duì)抗、通信等領(lǐng)域。在于FPGA實(shí)現(xiàn)點(diǎn)對(duì)點(diǎn)通信時(shí),采用LINK口實(shí)現(xiàn)高速數(shù)傳。LINK口是一種雙速率,源同步接口。在FPGA高速傳輸?shù)腖INK口邏輯設(shè)計(jì)過(guò)程中, SDC約束環(huán)節(jié)必不可少[1]。FPGA使用的是Altera公司器件,該公司的靜態(tài)時(shí)序分析工具Time Quest功能強(qiáng)大,支持業(yè)界標(biāo)準(zhǔn)的SDC約束,能夠提供復(fù)雜的時(shí)序約束和詳盡的分析報(bào)告。本文所做的約束是在該工具下完成的。
1 時(shí)序約束方法
FPGA設(shè)計(jì)平臺(tái)中的靜態(tài)時(shí)序分析工具(STA)可以獲得映射或布局布線后的時(shí)序分析報(bào)告,通過(guò)報(bào)告可以明確系統(tǒng)運(yùn)行的頻率。當(dāng)系統(tǒng)設(shè)計(jì)簡(jiǎn)單且頻率較低時(shí),可以不加任何時(shí)序約束。當(dāng)設(shè)計(jì)不能滿足運(yùn)行頻率的要求時(shí),根據(jù)STA的結(jié)果更改設(shè)計(jì),添加必要的時(shí)序約束條件或者選用更高速度的器件,從而提高運(yùn)行的最高頻率。通過(guò)必要的時(shí)序約束可以控制邏輯的綜合、映射、布局和布線,以減少邏輯和布線延時(shí),實(shí)現(xiàn)工作頻率的提高。時(shí)序約束SDC文件是標(biāo)準(zhǔn)的約束文件,添加約束主要有時(shí)鐘約束、I/O約束、偏移約束、時(shí)序例外約束、多周期約束等[2] 。
2 BWDSP100 LINK 口時(shí)序約束[3][4]
BWDSP100有8個(gè)鏈路口,分為4個(gè)發(fā)送和4個(gè)接收鏈路口,每個(gè)鏈路口由8對(duì)LVDS(8bits)數(shù)據(jù)線和3對(duì)LVDS控制線構(gòu)成。鏈路口在傳輸數(shù)據(jù)時(shí),DMA啟動(dòng)信號(hào)發(fā)出,當(dāng)正確配置LINK口接收端DMA控制器時(shí),LxACKOUT拉低,通過(guò)LxIRQOUT發(fā)送“110011”的DMA請(qǐng)求信號(hào),接收端收到來(lái)自LxDATOUT[0]32bit控制字,隨后LxACKOUT拉高,接收數(shù)據(jù)。當(dāng)緩存填滿,乒緩存切到乓緩存時(shí),LxIRQOUT信號(hào)拉低,兵緩存數(shù)據(jù)進(jìn)行并串轉(zhuǎn)換,并發(fā)送數(shù)據(jù)。所有的并串/串并轉(zhuǎn)換、發(fā)送與接收工作都嚴(yán)格按照LxIRQOUT/LxIRQIN信號(hào)的下降沿同步。在一次接收完成時(shí),LxACKOUT為高則繼續(xù)接收數(shù)據(jù),為低則暫停接收。
(1)發(fā)送端邏輯功能及時(shí)序約束。在進(jìn)行約束時(shí),首先對(duì)基礎(chǔ)時(shí)鐘進(jìn)行約束,進(jìn)入FPGA內(nèi)部的是150M的DSPCLK隨路時(shí)鐘,LINK口數(shù)據(jù)率300MHz,時(shí)鐘周期是6.666ns。約束如下:create_clcok period 6.666–name{DSPCLK}[get_ports {DSPCLK}].DSPCLK經(jīng)PLL產(chǎn)生150M的L0CLKOUT和TXCLK時(shí)鐘,分別作為隨路時(shí)鐘和發(fā)送端模塊主時(shí)鐘。由于發(fā)送數(shù)據(jù)是中心對(duì)齊,所以L0CLKOUT頻移90度。其約束為:create_generated_clock –name TXCLK -source[get_pins pll|inclk[0]] [get_pins pll|clk[0]
create_generated_clock -name shifted -phase 90 –source [get_pins pll|inclk[0]] [get_pinspll|clk[1]]
create_generated_clock –name L0CLKOUT-source [get_pins pll|clk[1]] [get_ports L0CLKOUT]
當(dāng)然也可以使用derive_pll_clocks自動(dòng)識(shí)別并約束時(shí)鐘。對(duì)時(shí)鐘抖動(dòng)不確定進(jìn)行約束:set_clock_uncertainty -from {DSP1L0CLKIN} -setup 1.2。也可以使用deriver_clock_uncertainty對(duì)時(shí)鐘不確定進(jìn)行約束。但是set_clock_uncertainty優(yōu)先級(jí)高,并且同時(shí)使用時(shí)鐘不確定值將疊加。之后對(duì)IO延遲進(jìn)行約束,有兩種方式,一種是以FPGA為中心(FPGA Centric),一種是以系統(tǒng)為中心(System Centric)。當(dāng)FPGA為中心進(jìn)行約束時(shí)需要知道FPGA在數(shù)據(jù)輸入或輸出的Skew,而以系統(tǒng)為中心時(shí)則需要知道器件的Tsu、Th和板級(jí)延遲等信息。本文以FPGA為中心進(jìn)行討論約束,在對(duì)IO延遲約束前,Altera時(shí)序分析工具TimeQuest對(duì)FPGA的Tco進(jìn)行分析,在Slow mode下和Fast mode下Tco分別為1.507和0.938ns。所以取skew取兩值平均值為1.2ns。所以對(duì)數(shù)據(jù)端口約束為:set_output_delay -max[expr 3.3 - 1.2] -clock [get_clocks L0CLKOUT] [get_ports L0CLKOUT*]
set_output_delay -min[expr -3.3 + 1.2] -clock [get_clocks L0CLKOUT][get_ports L0CLKOUT*]\-add delay
其中,對(duì)同一個(gè)端口進(jìn)行約束時(shí),要添加-add_delay,約束才生效。對(duì)下降沿同時(shí)進(jìn)行相同約束,需要添加-clock_fall進(jìn)行約束。
set_output_delay -max [expr 3.3-1.2] -clock [get_clocks L0CLKOUT] -clock_fall [get_ports.L0DATOUT*] -add_delayendprint
set_output_delay -min [expr-3.3-1.2] -clock [get_clocks L0CLKOUT] -clock_fall [get_ports L0CLKOUT*] -add delay
輸入數(shù)據(jù)是雙沿觸發(fā),在進(jìn)行建立時(shí)間和保持時(shí)間分析時(shí)也是對(duì)雙沿進(jìn)行分析,但是雙沿觸發(fā)的數(shù)據(jù)使用的不同寄存器,相互之間不需要進(jìn)行建立和保持時(shí)間的分析,所以對(duì)時(shí)鐘的上升沿和下降沿做例外約束。告訴工具放寬該路徑的約束。
set_false_path -setup -rise_from [get_clocks data_clock] -fall_to [get_clocks output_clock]
set_false_path -setup -fall_from [get_clocks data_clock] -rise_to [get_clocks output_clock]
set_false_path -hold -rise_from [get_clocks data_clock] -fall_to [get_clocks output_clock]
set_false_path -hold -fall_from [get_clocks data_clock] -rise_to[get_clocks output_clock]
(2)接收端邏輯功能及時(shí)序約束。接收端的時(shí)鐘約束,可以采用輸入時(shí)鐘作為參考,也可以創(chuàng)建虛擬時(shí)鐘進(jìn)行約束,前者約束方法直觀,但是需要考慮板級(jí)延遲信息。后者虛擬時(shí)鐘是跟設(shè)計(jì)沒(méi)有直接關(guān)系的一個(gè)時(shí)鐘,可以準(zhǔn)確的給出數(shù)據(jù)信號(hào)和時(shí)鐘的相對(duì)關(guān)系。Altera公司也推薦對(duì)源同步約束采用虛擬時(shí)鐘。本文創(chuàng)建一個(gè)頻率為150M的虛擬時(shí)鐘create_clock -name virt_clk -period 6.666。創(chuàng)建150M的輸入時(shí)鐘,時(shí)鐘相位與虛擬時(shí)鐘相比延遲90度。
create_clock -name L0CLKIN -period 6.666 -waveform { 1.666 5.000 }[get_ports DSP1L0CLKIN ]
對(duì)輸入數(shù)據(jù)的輸入延遲做約束,以虛擬時(shí)鐘的上升沿作為參考沿,因?yàn)樘摂M時(shí)鐘與數(shù)據(jù)沿同相位,所以約束如下:set_input_delay -clock [get_clocks virt_clk] -max 0.05 [get_ports data_in*] -add_delay
set_input_delay -clock [get_clocks virt_clk] -min -0.05 [get_ports data_in*] -add_delay
其中0.05ns是設(shè)計(jì)中的skew。由于LINK口是雙沿傳輸,所以對(duì)虛
(下轉(zhuǎn)第153頁(yè)) ? ? ? ? ? ? (上接第242頁(yè))
擬時(shí)鐘的下降沿做參考時(shí)鐘,對(duì)輸入數(shù)據(jù)進(jìn)行約束。添加-clock_fall指令。
set_input_delay -clock [get_clocks virt_clk] -max 0.05[get_ports data_in*] -clock_fall -add_delay
set_input_delay -clock [get_clocks virt_clk] -min -0.05[get_ports data_in*] -clock_fall -add_delay
3 結(jié)果分析
對(duì)于高速口數(shù)據(jù)傳輸,時(shí)序分析是個(gè)反復(fù)修改和迭代過(guò)程,最終才能達(dá)到要求,圖1是Timequest對(duì)約束后LINK口端輸入延遲的分析,可以看到關(guān)鍵路徑的余量為0.778ns,時(shí)序報(bào)告滿足要求。實(shí)際工程中,F(xiàn)PGA使用的是altera公司EP4SE530F43I3,與兩片BWDSP100的LINK口連接,共有6路300MB/s的LINK口收發(fā),為了驗(yàn)證時(shí)序約束的的效果和正確性,兩片BWDSP100分別向FPGA發(fā)送相同數(shù)據(jù),數(shù)據(jù)為AA55AA55,AA550000,AA550001……,LINK1是按照本文約束的方法進(jìn)行約束,而第二個(gè)LINK口邏輯則是簡(jiǎn)單的進(jìn)行了時(shí)鐘的約束,而未添加相關(guān)的其它約束,采用SignalTap抓取兩路數(shù)據(jù),結(jié)果如圖2所示,可以看到LINK1口收到正確數(shù)據(jù),而LINK2口則會(huì)出現(xiàn)錯(cuò)誤數(shù)據(jù),無(wú)法正常接收數(shù)據(jù)。
4 結(jié)論
本文詳細(xì)介紹了BWDSP100的LINK口的約束方法,以FPGA為中心進(jìn)行約束,約束包括輸入輸出延遲,例外約束等,并在工程中實(shí)現(xiàn)6路全雙工、傳輸速度300MB/s的link口傳輸。
參考文獻(xiàn):
[1]BWDSP100高速鏈路口模塊的設(shè)計(jì)[J].中國(guó)集成電路,2012,03(154):60-64.
[2]Altera Corparation.AN433:constraining and analyzing source-synchronous interface.[EB/OL].www.altera.com/literature/an/an433.pdf,2007.
[3]BWDSP100 軟件用戶手冊(cè)[S].中電38所,2011.
[4]BWDSP100 硬件用戶手冊(cè)[S].中電38 所,2011.
作者簡(jiǎn)介:朱鵬(1987-),男,河南商丘人,碩士,助理工程師,研究方向:為FPGA軟件設(shè)計(jì)。endprint