热度 11| |||
Joules ODC总的flow
分析
读入波形
实现(生成修改过的RTL)
验证修改过的RTL跟原来的功能上等价
前3步用ODC来实现,第四步用 JasperGold的SEC(Sequential Equivalence Checking)来实现。
Joules 的ODC就是解析RTL的结构,通过仿真的波形文件,分析无效的翻转以及浪费的功耗,从而想法对无效翻转的寄存器插入enable信号,使得修改过的RTL在综合时,综合工具能插入clock gating。下面是整个ODC识别的flow:
compute_odc命令将对指定的hierachy层或者整个设计进行结构解析,找出可能在RTL增加条件的语句来实现clock gating的寄存器,同时推导出条件表达式,如果不能推导出条件表达式,也能提供详细的原因。可以根据RTL和设计要求和详细报告,来决定是否可以考虑增加新的信号来实现条件表达式,利用基于ODC的功能来节省功耗。在解析设计时候,Joules将执行单周期或者多周期的ODC分析。一般来说,单周期分析推导出的条件表达式会比较简单,也不会增加太多面积。但是多周期推导出来的条件表达式可能非常复杂,导致增加的面积和功耗比不插入还要高,所以需要综合考虑。下面是一个多周期的例子
ODC(reg1) = ODC(local) | ODC(reg1_1)
sel_prev can be used to gate REG1_1 and REG2_1
sel_prev_prev can be used to gate REG1 and REG2