對(duì)于邏輯級(jí)數(shù)較大的路徑,常用的時(shí)序收斂的方法之一就是采用Retiming(中文翻譯為重定時(shí))。Retiming到底是怎么回事呢?我們可以通過下圖理解。圖中通過搬移觸發(fā)器的位置減小了關(guān)鍵路徑的邏輯級(jí)數(shù)。無論是把觸發(fā)器向前搬移還是向后搬移,搬移后整個(gè)路徑的Latency和搬移前的Latency保持一致。可以看到Retiming的前提是相鄰路徑有可供搬移的觸發(fā)器,換言之,相鄰路徑的時(shí)序裕量較為“富余”,從這些“富余”中拿出一部分給時(shí)序較為緊張的路徑。這樣,時(shí)序緊張的路徑其邏輯級(jí)數(shù)降低了,而相鄰的時(shí)序“富余”的路徑邏輯級(jí)數(shù)增加了,達(dá)到整體邏輯級(jí)數(shù)的平衡。
Vivado提供了多種方法實(shí)現(xiàn)Retiming。在綜合選項(xiàng)設(shè)置界面提供了-retiming,如下圖所示。在這里,它是一個(gè)全局選項(xiàng),作用于設(shè)計(jì)中的所有模塊。除此之外,Vivado還提供了模塊級(jí)綜合技術(shù),可針對(duì)關(guān)鍵模塊使用Retiming,此時(shí)需要借助屬性BLOCK_SYNTH.RETIMING實(shí)現(xiàn)。顯然,這個(gè)綜合屬性是針對(duì)指定模塊的,所以這是一種更精細(xì)的設(shè)置方法。實(shí)踐證明往往全局選項(xiàng)-retiming加上模塊級(jí)Retiming能獲得更好的效果。
上述兩種方法人工干預(yù)度都較低,如果用戶能夠判定哪些路徑上的觸發(fā)器可搬移以改善相鄰路徑的時(shí)序,那么就可以使用Vivado提供的綜合屬性RETIMING_BACKWARD或RETIMING_FORWARD,直接將其作用于指定的觸發(fā)器。另外,在PSIP階段還可以使用屬性PSIP_RETIMING_BACKWARD或PSIP_RETIMING_FORWARD實(shí)現(xiàn)Retiming。對(duì)用戶而言,這一過程還是有一定難度的,好在Vivado提供了另外一種方式就是QoR建議,有時(shí)該報(bào)告就會(huì)包含Retiming的相關(guān)設(shè)置,如下圖所示。這樣用戶只需將該建議添加到工程中直接使用即可。
此外,phys_opt_design還提供了-directive AddRetime,既可在布局之后執(zhí)行也可在布線之后執(zhí)行。本質(zhì)是是因?yàn)閜hys_opt_design提供了選項(xiàng)-retime。
審核編輯:黃飛
-
RAM
+關(guān)注
關(guān)注
8文章
1354瀏覽量
114438 -
觸發(fā)器
+關(guān)注
關(guān)注
14文章
1995瀏覽量
61010 -
Vivado
+關(guān)注
關(guān)注
19文章
804瀏覽量
66221
原文標(biāo)題:如何對(duì)Block RAM使用Retiming(1)
文章出處:【微信號(hào):Lauren_FPGA,微信公眾號(hào):FPGA技術(shù)驛站】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論