源自:微信公眾號 「數字晶元實驗室」

一轉眼,驚覺歲月飛逝。時間已經是2018年12月28日。

對12月最後的幾天,我尤為地珍惜,天真地希望2018年能多點時間。這種情緒類似於:小時候被媽媽催著回家吃晚飯,媽媽嘴裡念叨著「貪玩」,「不好好學習」,「別人家的孩子」等字眼。我慌裡慌張想要掩蓋自己身上一切能說明我調皮的痕迹,口袋裡的彈珠落得滿地都是。。。卻滿心愧疚,不敢去撿。

想轉CS,又不想放棄幾年的微電子知識積累,從而希望數字IC能trade-off。不過後來發現,這是個過於簡單的想法。所謂的數字IC,不是只有「0」和「1」。

盯著人家的verilog敲上幾百行,也無濟於事。其實能用上的只有always和assign,還有模塊的例化。胡謅了一番,開始進入正題:通過一個5級反相器的故事(環形振蕩器)來示例數字IC的數字邏輯之外的東西。

環形振蕩器,是由奇數個非門輸出端和輸入端首尾相接,構成環狀的電路。以下圖為例:

其中任何一個連接的位置都可以引出輸出信號。可以通過RTL代碼例化verilog原語:

同時,再code相應的testbench:

然後再對上述電路進行行為級功能模擬:

模擬驚奇地停滯在:200ns(參考testbench延時)

在環形振蕩器原理圖中,假設第一級反相器的輸入端為低電平,經過5級反相之後,第5級反相器輸出端必為高電平。在t=0時刻,此時電源(VDD)通過第5級反相器輸出端對第1級反相器的輸入電容充電,第一級反相器經過一級平均延遲時間Tdelay1之後,其輸出狀態發生轉換。經過(Tdelay1+ Tdelay2+ Tdelay3+ Tdelay4+ Tdelay5)之後,第5級反相器輸出端由高電平轉換為低電平。接著第一級的輸入電容將通過第5級的輸出端放電,經過(Tdelay1+ Tdelay2+ Tdelay3+ Tdelay4+ Tdelay5)之後狀態再次發生轉換,完成一個振蕩周期輸出,如下圖的方波信號。如果反相器各級的平均延遲時間相等,為Tdelay,即:多個反相器組成環形振蕩器的一個脈衝周期為T=10 Tdelay綜合後的時序模擬:振蕩周期約為245M

布局布線後的時序模擬:振蕩周期約為267M

數字IC和CS完全是不同的領域。數字IC的世界遠非「0」和「1」那麼簡單。時序,是數字IC當中地位要超過邏輯功能的一個方面。另外,為什麼要截出兩張時序模擬的波形圖呢?自然是為了說明數字IC另一個角色EDA工具和flow的重要作用。同時,說明模擬也只是預測和輔助的作用,物理實現後才會有一個最準確的分析。
推薦閱讀:
相关文章