[IC設計] 利用 Don’t touch cell 結合 Gated-clk 讓 Memory (Sram, Rom) idle 時更省電

本文移植於tutortecho 2019年12月14日 撰寫

下圖是一個使用 AXI protocal來存取 sram 的接線圖

圖的正中間有個非常明顯的 OR gate

它的作用就是省電

但是必須被設定成 don’t touch cell

上面那段話細節到底是什麼意思

首先呢

ceb 是chip enable的功能

也就是整塊電路裡面是否需要 toggle 的開關

他把 mread 和 mwrite or 在一起

也就是只有sram 需要讀或是寫的時候需要被啟動

這其實是廢話

但是加上這個功能整個電路就會大幅省電

因為節省了運行中的 dynamic power

但是這個 OR邏輯元件在合成(Synthesis)的時候會被最佳化掉

因為 design compiler 或是 genus tool根本不知道你有這個用意

所以我們通常會使用 gate-level的 cell 直接寫在 RTL code 中

並且在 instance name取上 dont_touch 的 prefix

這樣子就能透過下command給 EDA tool

例如DC的 set_dont_touch command

這樣子 tool 就會知道這個 gate是有特別作用

不會在優化過程中將其拿掉了

但是有一些 memory hard macro 並沒有 ceb (chip enable)的 pin

那這時要怎麼辦

我們就必須自己接上 gated-clock 的 don’t touch cell instance

也就是將 sram clock 前面接上一個 AND gate

將外部的 clock 與 memory enable (代表memory讀寫 enable) and 在一起

代表同時有 clock 且同時有 read write enable 才要toggle整個 sram

並將此 AND gate 設成 don’t touch cell

這樣就能達到 low power的目的


發表留言