低功耗设计中,时钟门控是一种降低晶体管动态功耗的主要手段,通过使用时钟门控可以合理的关闭闲置时钟域的时钟。
闲置时钟域是指没有业务响应,逻辑上允许进入低功耗状态的时钟域。
常见的时钟门控(clk-gate)有软gate和硬gate两种:
(1)软gate,指的是可由寄存器配置的gate,门控打开和关闭均由寄存器配置;
优点:这种软gate的好处在于逻辑清晰,所有的时钟gate开关可以由用户自己配置,较为灵活;
缺点:当芯片的规模增大,来到soc这个级别,一般的时钟树的分支数量会明显增多,用户实时配置不太现实,因此需要使用硬gate来弥补这一缺陷;
(2)硬gate,指的是时钟门控的开关可以由硬件自动控制的开关,当下游需要时钟时,gate能够识别并自动打开,下游不需要时钟时,gate可自动关闭;
低功耗组件 clk_ctrl是一种软硬gate集于一身的时钟门控模块,其中需要重点关注的端口有以下几个:
(1)clk_force_i:输入接口,由寄存器控制,当force使能时,clk_ctrl硬件功能失效,完全由软件控制打开门控,当force clr时,clk_ctrl解除软件控制,恢复为硬件控制状态;
(2)clk_qactive_i:输入接口,作为下游需要开gate的信号,当clk_ctrl接收到active时,就会准备开钟;当所有的active为0时,会准备关钟动作;
(3):clken_o:输出接口,时钟使能开关,当active不为0时,代表下游有要求开钟,那么clken_o输出使能,时钟被打开;
(3)clk_qreq:输出接口,clk_ctrl会遵循q-channel的协议发出req的请求来确认下游是否接收到时钟(req=1),或者是否准备好关钟(req=0);
(4) clk_accept:输入接口,下游设备对req的回复,代表了开钟回复(accept=1)和关钟准备完成的回复(req=0)
(5)entry_delay:输入接口,由寄存器配置,force未使能且active为0时刻T1到req=0时刻T2的时钟周期控制;
(6)pwr_*:该组接口用于与上游pwr控制设备对接;
(7)hc_*:该组接口用于与上游的clk_ctrl串行对接;