目录

Initial Reset RTL Design Style Guide

复位

  • 使用异步复位

  • 复位信号冒险

  • 外部噪声对复位信号的影响

1.1 使用异步信号复位

[1] RTL同步复位代码综合时可能会导致复位失败

[2] 异步复位更安全 -异步复位综合后的复位信号更方便布局 -同步复位在在门级仿真时,寄存器的值可能是x

[3] 除了复位,不要使用复位信号做其他事情

[4] 如果使用同步复位,建议创建一个含有复位端的模块。

[5] 不要使用异步复位(reset)和置位(set)

/images/RTL_DESIGN_STYLE/1-3-1.png

同步复位由于综合时被优化导致无法实现复位功能

/images/RTL_DESIGN_STYLE/1-3-3.png

创建一个含有复位端的模块避免同步复位被优化

注意
  • 如果使用同步复位,综合优化后,可能会导致触发器的Q端不经过复位信号控制,导致无法复位。
  • 如果需要使用同步复位,建议单独创建一个带复位段的触发器,并且综合时该模块必须grouped together, 以避免被优化。

/images/RTL_DESIGN_STYLE/1-3-2.png

复位信号在处理后会有被忽略的风险

1.2 复位信号冒险

[1] 不要用组合逻辑产生复位,一方面组合逻辑可能会被综合工具,另一方面可能会产生毛刺

[2] 不要直接将外部信号直接接入复位端(因为无法避免外部信号产生毛刺或噪声)。

[3] 需要各位注意复位电路的时序,避免产生冒险。

/images/RTL_DESIGN_STYLE/1-3-4.png

组合逻辑在综合后可能产生毛刺

1.3 外部噪声对复位信号的影响

[1] 外部输入复位如果上升缓慢,将会造成电路不稳定。(亚稳态)

[2] 复位信号必须同步或者抗噪声处理。

[3] 除了将复位信号同步外,应该添加一些其他的噪声处理电路。

/images/RTL_DESIGN_STYLE/1-3-5.png

复位信号的抗噪声处理

注意
复位信号经过打拍或者通过3-5个触发器滤波保证复位信号稳定。

/images/RTL_DESIGN_STYLE/1-3-6.png

使用外部复位电路(电阻+电容)使延长复位信号建立时间

注意
同步释放复位信号需要时钟,因此在时钟产生前,复位信号必须处于复位电平,直到时钟稳定。通常采用电阻串联电容,延长复位信号的复位电平。

/images/RTL_DESIGN_STYLE/1-3-7.png

通过pad布局减少复位端口的噪声

/images/RTL_DESIGN_STYLE/1-3-8.png

通过延时电路减少噪声干扰

注意
  • 使用施密特触发器、pad布局或者给复位信号添加延时单元都可以降低噪声的干扰。
  • 在使用延时单元时,如果输入的复位信号为1(0复位,1释放),当复位端口出现噪声,导致复位端口为0,但是由于延时单元输出为1,复位信号还是能稳定为1,这样可以提高电路的稳定性。