一、苗小科技的复位建议
二、复位策略整理
1)在FPGA里面,在reg定义的时候就把初值写上,是没有任何问题的(ASIC中,这么做是不能综合的)。而且对于很多reg,如果我们分析下来,不需要通过复位赋初值,那么Xilinx是推荐在reg定义的时候直接赋初值的。这样可以减少复位信号的扇出,有助于时序的优化。
2)关键控制信号给个同步复位。
3)控制流需要复位,数据流不需要复位以及初值。保证设计规范,所有数据寄存器在使用前被正确数据覆盖即可,上电带来的随机值(仿真喊它x态)是可以安心的,无需担心,功耗面积是有优势的。
三、哪些情况要复位,哪些情况不用
前提:保证在任何时候突然复位了,程序依旧能继续正常进行。
控制流需要复位,数据流不需要复位以及初值。
移位寄存器是不需要复位,比如一个打两拍的移位寄存器逻辑就没有必要赋初值,绝大部分数据流通道都不需要赋初值的。
一些控制逻辑需要明确起点或是需要逻辑恢复,所以必须要通过reset赋初值的能力。如vld、状态机、计数器等。