本文移植於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的目的
發表留言