本書介紹了4種基本時(shí)序路徑分析、時(shí)鐘約束、輸入/輸出延時(shí)約束、時(shí)序例外約束和其他時(shí)序約束。
本書共8章,第1章以生活場(chǎng)景時(shí)序例子開篇,介紹FPGA及Vivado編譯工具,闡述時(shí)序分析和約束意義,描述FPGA時(shí)序約束整體框架; 第2章從建立/保持時(shí)間、啟動(dòng)沿/鎖存沿等概念切入,分析4種基本時(shí)序路徑; 第3章聚焦時(shí)鐘分析與約束,涵蓋主時(shí)鐘、抖動(dòng)、不確定性、延時(shí)、虛擬時(shí)鐘和衍生時(shí)鐘約束等內(nèi)容; 第4章講述輸入/輸出延時(shí)約束,依次分析輸入延時(shí)約束和輸出延時(shí)約束; 第5章闡述時(shí)序例外約束的意義,分析偽路徑約束、時(shí)鐘組約束、最大/最小延時(shí)約束、多周期路徑約束,說明其優(yōu)先級(jí)和邏輯設(shè)計(jì)方法; 第6章匯總其他時(shí)序約束,如Case Analysis、Disable Timing等; 第7章設(shè)計(jì)簡(jiǎn)單時(shí)序工程,涵蓋前幾章的時(shí)序路徑并進(jìn)行約束; 第8章總結(jié)時(shí)序約束技巧,分享作者學(xué)習(xí)歷程。
本書適合作為FPGA開發(fā)工程師和研究人員的參考書籍,尤其適合希望全面理解FPGA時(shí)序的開發(fā)者,也可以作為高等院校相關(guān)專業(yè)FPGA課程的教材。
本書的目標(biāo)是以簡(jiǎn)單的語言、場(chǎng)景、繪圖把FPGA時(shí)序具象化,方便讀者理解、復(fù)現(xiàn)和拓展;使讀者理解時(shí)序、解決時(shí)序、而非推導(dǎo)或死記硬背公式。
FPGA因具備可編程、并行處理及低功耗等獨(dú)特優(yōu)勢(shì),廣泛應(yīng)用于復(fù)雜數(shù)字邏輯、硬件加速、數(shù)字信號(hào)處理、邊緣計(jì)算、深度學(xué)習(xí)算法加速等領(lǐng)域。當(dāng)前時(shí)鐘頻率越來越快,數(shù)據(jù)帶寬越來越大,F(xiàn)PGA邏輯設(shè)計(jì)中時(shí)序問題凸顯,這使得FPGA時(shí)序分析和時(shí)序約束在高頻且邏輯功能復(fù)雜的設(shè)計(jì)中越來越重要。
在交通領(lǐng)域,車輛行駛速度快、流量大,則易導(dǎo)致交通事故與擁堵; 車輛行駛速度慢、流量小,則浪費(fèi)交通資源且通行效率低。交通安全不應(yīng)僅靠限行限速,更需要合理調(diào)度公路資源、優(yōu)化交通規(guī)則,實(shí)現(xiàn)快速、安全通行。城市之間可以設(shè)計(jì)高速公路,城市之內(nèi)可以設(shè)計(jì)快速路,交叉路口設(shè)計(jì)智能紅綠燈,區(qū)域可以設(shè)計(jì)綠波路段,不斷提高交通資源的效率和利用率。
類比到FPGA邏輯設(shè)計(jì)中,高時(shí)鐘頻率和高帶寬如同提高車速和路寬,提升效率則容易引發(fā)數(shù)據(jù)阻塞、追尾和刮蹭。若要打造更快速、更穩(wěn)定的FPGA邏輯,不僅需要設(shè)計(jì)合理的邏輯功能,而且需要進(jìn)行時(shí)序分析并設(shè)計(jì)時(shí)序約束。換言之,F(xiàn)PGA邏輯設(shè)計(jì)既要會(huì)修路,還要會(huì)當(dāng)交警,時(shí)序分析和約束就是當(dāng)交警。
然而,在學(xué)習(xí) FPGA 時(shí)序分析和約束的過程中,我發(fā)現(xiàn)存在一些問題;ヂ(lián)網(wǎng)上雖然有大量官方手冊(cè)、經(jīng)驗(yàn)總結(jié)及論壇教程對(duì)其進(jìn)行說明,但大多是針對(duì)某一時(shí)序問題展開分析和約束,不利于研究者了解完整的時(shí)序框架,完整且系統(tǒng)地對(duì) FPGA 時(shí)序進(jìn)行分析和約束的資料相對(duì)匱乏。同時(shí)對(duì)實(shí)際工程邏輯代碼、時(shí)序分析公式、時(shí)序路徑框圖及時(shí)序報(bào)告進(jìn)行分析的案例較少,能夠?qū)r(shí)序報(bào)告中各類延時(shí)繪制成時(shí)序圖,以幫助研究者直觀理解時(shí)序的資料更是寥寥無幾。
我在學(xué)習(xí)過程中做了一些努力。首先,有意識(shí)地構(gòu)建了一個(gè)時(shí)序框架把時(shí)序問題規(guī)范到一起,摒棄從網(wǎng)上照搬一知半解的解決方案,因?yàn)楹芏鄷r(shí)序問題可以采用不同的約束方案,只有理解全局后解決問題才變得游刃有余。其次,為不同時(shí)序問題設(shè)計(jì)工程邏輯代碼,依據(jù)時(shí)序分析公式、時(shí)序路徑框圖和時(shí)序報(bào)告對(duì)每一種時(shí)序問題進(jìn)行分析和約束,理解問題最好的方法就是仿真和實(shí)踐。最后,為了直觀地呈現(xiàn)時(shí)序路徑的延時(shí),我將時(shí)序報(bào)告中的延時(shí)數(shù)據(jù)繪制到時(shí)序路徑中,并繪制了時(shí)序圖,使時(shí)序問題變得清晰、明確。
最初學(xué)習(xí)FPGA時(shí)序分析和約束的筆記是手寫稿,隨著整理內(nèi)容的不斷增多,我對(duì)時(shí)序問題也有了更多的心得與體會(huì)。為了方便閱讀和規(guī)范化,我將其整理為電子稿,后來又編撰成冊(cè),希望能與廣大讀者產(chǎn)生共鳴。本書內(nèi)容相對(duì)全面,幾乎涵蓋了Vivado 支持的所有時(shí)序約束指令,且每個(gè)時(shí)序分析案例都附有完整的邏輯代碼、時(shí)序原理公式、時(shí)序圖和路徑圖,清晰、直觀且不枯燥。此外,書中還包含一些場(chǎng)景實(shí)例,能夠幫助讀者更好地理解時(shí)序概念和相關(guān)問題。
本書介紹了4種基本時(shí)序路徑分析、時(shí)鐘約束、輸入/輸出延時(shí)約束、時(shí)序例外約束和其他時(shí)序約束。讀者既可以按照順序依次閱讀,也可依據(jù)研究需要針對(duì)具體約束進(jìn)行查閱。需要強(qiáng)調(diào)的是,實(shí)踐出真知,對(duì)于初學(xué)者來說,親自對(duì)案例進(jìn)行編譯和分析,自行繪制時(shí)序路徑和時(shí)序圖,會(huì)比單純閱讀更有助于深入理解。
最后,非常感謝清華大學(xué)出版社楊迪娜老師,為本書的立項(xiàng)、編輯和出版做了很多工作。感謝清華大學(xué)出版社對(duì)本書的認(rèn)可和支持。感謝天津大學(xué)董娜教授,在碩博6年的時(shí)間里對(duì)我精心指導(dǎo),幫助我拓寬科研思路并提升寫作能力。感謝劉星和常斐然同學(xué)對(duì)行文和繪圖提出寶貴意見。
非常感謝單位領(lǐng)導(dǎo)張大鋼、李紅軍、王進(jìn)軍、劉劍鋒、朵慧智,在百忙之中抽出時(shí)間閱讀本書初稿,并提出了寶貴的建議和修改思路。還要感謝邢立佳、高廣杰、王高峰、杜金艷、李文健、梁志豪、秦法佳,他們是非常好的導(dǎo)師、朋友和工作伙伴,與他們共事十分愉快。
由于個(gè)人水平有限,書中難免存在缺陷或紕漏之處,懇請(qǐng)各位讀者諒解并批評(píng)指正。
常建芳2025年7月
常建芳,2022年于天津大學(xué)電氣自動(dòng)化與信息工程學(xué)院獲得博士學(xué)位,長(zhǎng)期從事深度學(xué)習(xí)、圖像處理、機(jī)器人SLAM方面的研究,目前主要從事FPGA邏輯代碼設(shè)計(jì)工作。共計(jì)發(fā)表6篇SCI論文,發(fā)表7項(xiàng)發(fā)明專利。
變量列表
第1章時(shí)序分析和約束
1.1什么是時(shí)序分析和約束
1.2什么是FPGA將時(shí)序分析和約束例子搬到FPGA中
1.3什么是Vivado2024.1邏輯設(shè)計(jì)/時(shí)序分析工具
1.4時(shí)鐘頻率和邏輯資源的影響
1.5FPGA的基本時(shí)序約束
第2章4種基本時(shí)序路徑
2.1時(shí)鐘與寄存器基本模型
2.2建立時(shí)間與保持時(shí)間
2.3啟動(dòng)沿、鎖存沿與建立時(shí)間關(guān)系、保持時(shí)間關(guān)系
2.4基本時(shí)序路徑的相關(guān)概念
2.5寄存器到寄存器的時(shí)序路徑分析
2.6輸入引腳到寄存器的時(shí)序路徑分析
2.6.1系統(tǒng)同步接口輸入引腳到寄存器路徑分析
2.6.2源同步接口輸入引腳到寄存器路徑分析
2.7寄存器到輸出引腳的時(shí)序路徑分析
2.7.1系統(tǒng)同步接口寄存器到輸出引腳路徑分析
2.7.2源同步接口寄存器到輸出引腳路徑分析
2.8輸入引腳到輸出引腳的時(shí)序路徑分析
第3章時(shí)鐘約束
3.1主時(shí)鐘約束
3.1.1主時(shí)鐘約束語法
3.1.2主時(shí)鐘與主時(shí)鐘約束
3.1.3主時(shí)鐘時(shí)序分析報(bào)告
3.2時(shí)鐘抖動(dòng)約束
3.2.1時(shí)鐘抖動(dòng)約束語法
3.2.2時(shí)鐘抖動(dòng)約束實(shí)例
3.3時(shí)鐘不確定性約束
3.3.1時(shí)鐘不確定性約束語法
3.3.2時(shí)鐘不確定性約束實(shí)例
3.3.3時(shí)鐘不確定性約束妙用
3.4時(shí)鐘延時(shí)約束
3.4.1時(shí)鐘延時(shí)約束語法
3.4.2時(shí)鐘延時(shí)約束實(shí)例
3.5虛擬時(shí)鐘約束
3.5.1系統(tǒng)同步接口輸入引腳到寄存器路徑的虛擬時(shí)鐘約束
3.5.2系統(tǒng)同步接口寄存器到輸出引腳路徑的虛擬時(shí)鐘約束
3.6衍生時(shí)鐘約束
3.6.1衍生時(shí)鐘約束語法
3.6.2衍生時(shí)鐘約束實(shí)例
3.7關(guān)于Max at Slow Process Corner和Min at Fast Process Corner
第4章輸入/輸出延時(shí)約束
4.1輸入延時(shí)約束
4.1.1輸入延時(shí)約束語法
4.1.2輸入延時(shí)約束實(shí)例
4.2輸出延時(shí)約束
4.2.1輸出延時(shí)約束語法
4.2.2輸出延時(shí)約束實(shí)例
第5章時(shí)序例外約束
5.1時(shí)序例外約束的意義
5.2偽路徑約束/時(shí)鐘組約束
5.2.1偽路徑約束語法
5.2.2偽路徑約束實(shí)例
5.2.3時(shí)鐘組約束語法
5.2.4時(shí)鐘組約束實(shí)例
5.3最大/最小延時(shí)約束
5.3.1最大/最小延時(shí)約束語法
5.3.2最大/最小延時(shí)約束實(shí)例
5.4多周期路徑約束
5.4.1多周期路徑約束語法
5.4.2同頻同相多周期路徑約束
5.4.3同頻異相多周期路徑約束
5.4.4慢時(shí)鐘域到快時(shí)鐘域多周期路徑約束
5.4.5快時(shí)鐘域到慢時(shí)鐘域多周期路徑約束
5.5時(shí)序例外約束優(yōu)先級(jí)
5.6時(shí)序例外約束對(duì)應(yīng)的邏輯設(shè)計(jì)
第6章其他時(shí)序約束
6.1時(shí)鐘約束
6.1.1Set Clock Sense約束
6.1.2Set External Delay約束
6.2時(shí)序斷言
6.2.1Set Data Check約束
6.2.2Set Bus Skew約束
6.3其他約束
6.3.1Set Case Analysis約束
6.3.2Set Disable Timing約束
6.3.3Group Path約束
6.3.4set_max_time_borrow約束
第7章時(shí)序案例
7.1跨時(shí)鐘域單脈沖傳遞
7.2跨時(shí)鐘域電平信號(hào)傳遞
7.3多周期路徑實(shí)例
第8章寫在最后
8.1FPGA時(shí)序約束技巧
8.2FPGA學(xué)習(xí)之路
8.3引用文件