解復(fù)位就是復(fù)位撤離,系統(tǒng)解復(fù)位就是復(fù)位結(jié)束了系統(tǒng)準(zhǔn)備開始工作。
前文咱們提過,復(fù)位撤離比復(fù)位要復(fù)雜一些,因為復(fù)位了大家就是一起回到初始狀態(tài)去,寄存器也不采樣了,有什么毛刺啊亞穩(wěn)態(tài)啊只要不影響其他系統(tǒng)(這個之后講)都沒關(guān)系的。這就相當(dāng)于晚上回家上床準(zhǔn)備上床睡覺,你愛穿啥衣服睡就穿啥衣服不穿也沒人管。但是解復(fù)位就不一樣了,這就是起床要出門上班了,怎么著也得準(zhǔn)備好才能出去工作,不能穿著秋褲就往外跑。
所以的對于解復(fù)位(其實也不光是解復(fù)位,局部復(fù)位本身也很危險)就需要做跟多的額外工作了,上一篇說的同步撤離之后,還有什么問題需要解決呢?
主要是復(fù)位信號到達(dá)各個寄存器的時間不一致的問題。復(fù)位信號在系統(tǒng)內(nèi)是有很大的扇出的,連接到所有需要復(fù)位的寄存器的復(fù)位端。這也就導(dǎo)致了復(fù)位在系統(tǒng)中的走線特別長,過長的走線又會導(dǎo)致工具在復(fù)位信號上增加buffer以提升驅(qū)動能力,那么如果時鐘頻率很高,復(fù)位信號最終到達(dá)各個寄存器的時間也就無法保證在同一拍。
復(fù)位走線到達(dá)各個寄存器不在同一拍會有什么后果呢?這個不能一概而論。對于一些復(fù)位解除后就開始工作的電路系統(tǒng)比如自動計數(shù)取指模塊,各個寄存器之間可能存在依賴關(guān)系,如果只部分寄存器被復(fù)位或解復(fù)位,可能會導(dǎo)致不一致的狀態(tài),從而影響系統(tǒng)的正確運行。同時呢,如果復(fù)位方案做的不好,某系統(tǒng)進(jìn)行復(fù)位時一部分復(fù)位了一部分沒有復(fù)位,也可能會產(chǎn)生毛刺被未復(fù)位的寄存器采樣,進(jìn)而輸出使能影響到其他系統(tǒng)的正常工作。
總之呢,復(fù)位走線到各個寄存器不在同一拍,可能存在系統(tǒng)穩(wěn)定性的風(fēng)險。因此在對復(fù)位還需要對系統(tǒng)的復(fù)位做一些特殊的處理。特殊的處理有哪些呢,不同的團(tuán)隊也有多種多樣的選擇,這里列舉一些我所聽聞過的方案吧。
降頻后復(fù)位。
先把時鐘降頻,再進(jìn)行復(fù)位和解復(fù)位的操作,再提頻回正常工作時鐘頻率。你不是怕復(fù)位走線到各個寄存器的時間不一致導(dǎo)致不在同一拍復(fù)位嗎?那好,我把時鐘降頻總可以吧,1GHz太快了降到500M,500M還快降到100M,100M還快到10M總可以了吧,一個周期這么長時間足夠你復(fù)位信號慢慢溜達(dá)到各個寄存器的。所以采用這種方案時,會在復(fù)位前將工作時鐘32分頻或者64分頻(取決于系統(tǒng)的面積和工作時鐘,可以算的),然后進(jìn)行復(fù)位和解復(fù)位,之后在將時鐘提頻至工作狀態(tài)。
這種方案下,可以在sdc中將復(fù)位信號設(shè)置為multicycle,檢查其在64個時鐘周期內(nèi)能夠作用到所有的寄存器復(fù)位端。
關(guān)時鐘后復(fù)位。
這個方法更徹底,怕各個寄存器看到復(fù)位和解復(fù)位的時間不一致導(dǎo)致功能錯亂?那直接把工作時鐘給關(guān)斷不久好了,反正是異步復(fù)位不用擔(dān)心沒有時鐘復(fù)位信號作用不到寄存器端。時鐘一關(guān)所有寄存器相當(dāng)于原地停工,這個時候別說復(fù)位信號了,啥信號過來都沒事,寄存器都不干了嘛。所以此時復(fù)位信號的走線也就不稱問題了,先復(fù)位再慢慢悠悠的解復(fù)位,都搞定了歇一會再把時鐘打開。
這種方案下,可以在sdc中將復(fù)位信號設(shè)置為false_path,畢竟相當(dāng)于準(zhǔn)靜態(tài)的信號,工作時復(fù)位信號不會跳變。
復(fù)位保護(hù)。
這個方法的思路是,不是擔(dān)心我這塊的復(fù)位影響其他系統(tǒng)工作嘛,那么不去處理復(fù)位和時鐘,而是把系統(tǒng)裹起來。怎么裹起來呢,把所有的對外輸出使能啊、握手啊這類信號都先和低電平與在一起,保證不管一會發(fā)生啥事,都不會有關(guān)鍵信號發(fā)生跳變。保護(hù)好之后,再去拉復(fù)位信號,過一會再解復(fù)位,再等會時間等系統(tǒng)穩(wěn)定下來了,再把保護(hù)電路解除開始正常工作。
這種方案下,也可以在sdc中將復(fù)位信號設(shè)置為false_path。
復(fù)位之后等待一定時間再開始下任務(wù)。
這個方案更多的是在任務(wù)層面看,也就是說面對解復(fù)位后可能存在的系統(tǒng)不穩(wěn)定性,先不要著急下任務(wù)下配置下指令,而是等待一定時間等系統(tǒng)中可能存在的不穩(wěn)定狀態(tài)都結(jié)束了,再開始進(jìn)入工作模式去下任務(wù)。
當(dāng)然了不是說所有系統(tǒng)都適用以上的方法,比如某個系統(tǒng)確實是解復(fù)位后就立即開始工作,那用復(fù)位保護(hù)就沒效果,因為你內(nèi)部狀態(tài)都亂了保護(hù)其他系統(tǒng)還有啥用呢。所以說還是具體問題具體分析吧,以上也只是經(jīng)驗之談難免有所疏漏。
-
保護(hù)電路
+關(guān)注
關(guān)注
45文章
878瀏覽量
101541 -
寄存器
+關(guān)注
關(guān)注
31文章
5294瀏覽量
119816 -
SDC
+關(guān)注
關(guān)注
0文章
48瀏覽量
15518
發(fā)布評論請先 登錄
相關(guān)推薦
評論