在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 2906|回复: 8

[求助] 关于复位信号的处理

[复制链接]
发表于 2019-3-4 21:40:11 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

x
最近在做rcc的设计,其中涉及到复位信号的一些问题,一直思考不清楚,希望有独到见解的大牛给予指点。
1、为何有许多资料中要求复位信号不能小于2个clock周期?
2、对于下面异步复位同步释放,所要求的复位信号保持两个周期是此结构的输入复位信号还是输出复位信号的要求?同时对于这个结构,复位信号输入rstn的脉宽有要求吗,如果太窄是不是不能有效的进入复位状态?
Image 1.png
3、使用此结构作为一个design的复位输入信号,如图所示实现异步复位同步释放的要求,但是此结构的复位输入是design的输出,此输出寄存器是受sync_rstn异步清除的,所以我有个疑问,当lockupn发生时,异步复位同步释放逻辑被复位,sync_rstn也被复位,design接着也被复位,这个过程信号不受时钟控制,完全相当于一个组合逻辑环,本来我们预期的复位流程如下图中上面的复位时序,但是会不会进入下面的复位时序,即lockupn处在中间电平,sync_rstn处在中间电平,维持这个状态不变,会直接返回1,那么我这种设计就不能讲design复位?
Image 3.png
希望此方面的大牛给予我一些指导,谢谢。
 楼主| 发表于 2019-3-4 21:40:54 | 显示全部楼层
自己先顶起来
发表于 2019-3-5 10:16:55 | 显示全部楼层
本帖最后由 asic_service 于 2019-3-7 08:39 编辑

个人理解,酌情采信。
1:对于已不复位寄存器来说,只要满足rstn信号pulse_width需求就能被复位成功。为啥要求rstn2个周期:在一些design里,rstn下了false path,所以到各个DFF的delay不确定(或说rstn 的skew很大),所有要求rstn source保持久些,让所有的DFF都复位成功。
2:这个电路应该满足DFF的pulse_width即可,所有一个时钟周期足够了。
3:这个电路的问题是LUCKUPn可能是个很短的信号(不能持续一个时钟周期)。处理办法可以做一个LUCKUPn拉长电路。

回答完,发个广告,x希望能让大家明白更多数字设计的原理,而不是背诵各种设计指导。
https://ke.qq.com/course/379407?tuin=64ce5e2a
发表于 2019-3-5 10:18:10 | 显示全部楼层
保持两个周期是输出复位信号. 所以输入信号一般可以在此之前先做脉冲跨时钟域跨越,以便确保不会太窄能触发;另外你的lockupn应该能够被复位清除吧,哪呢一直保持死锁呢。
发表于 2019-3-6 11:28:07 | 显示全部楼层
第3个问题,lockupn的信号产生不能用sync_rstn做复位
 楼主| 发表于 2019-3-8 08:51:49 | 显示全部楼层
回复 3# asic_service


    1、就是这个异步复位输入的pluse_width如何把握?EDA工具会去检查吗?这个异步复位同步释放的逻辑最后一级输出可是带了重负载的,它的pluse_width可能不会太小?
    2、还有就是满足pluse_width要求是能够让寄存器安全复位,但是如果前一级的复位值是0,而未复位之前是1,这个变化就需要向下一级寄存器传播,此时如果仅仅是满足pluse_width就释放复位,接下来可能面临的就是时钟的setup和hold检查,由于复位输入和时钟的关系是异步的,所以如果在时钟附近复位信号有效,满足pluse_width后又释放,此时可能存在volation,造成复位不成功,所以只是简单的满足pluse_width或一个时钟周期的长度是不是有点冒险,如果超过一个时钟周期的复位输入肯定不会存在pluse_width和释放后volation的情形。
 楼主| 发表于 2019-3-8 08:52:39 | 显示全部楼层
这个分析后应该是不能的
 楼主| 发表于 2019-3-8 08:53:28 | 显示全部楼层
回复 4# kylkzy


    不是数字的死锁,仔细看一下,它其实是个组合逻辑环,电路上的死锁。
发表于 2019-3-8 11:17:30 | 显示全部楼层
本帖最后由 asic_service 于 2019-3-8 11:18 编辑

回复 6# xiaocui0725
1:异步复位的pulse_width EDA(DC/PT)是会检查的,这个跟DFF的setup/hold一样,是写在cell library(*.lib)里面的。
2:你说的问题(异步复位撤销的时候,刚好有clock的触发沿)是怎么都存在的(跟rstn信号几个周期长无关)。所以tool还会检查异步复位撤销时的recovery/remove,保证所有DFF同时看到rstn的撤销。这样保证异步复位撤销不会太靠近时钟。所以,rstn在后端有可能插入reset tree(类似clock tree)。
PS:这样做rstn tree是最可靠的,但是面积比较大。其实一个ASIC/SOC在复位后,只有一小部分逻辑会马上动作(比如CPU的PC指针值),其他逻辑都是等待配置后再开始工作。所以复位撤销后,值不立马改变的寄存器是可以对recover/remove下false path的(这个也有争议)。
欲知更多数字电路设计底层原理与设计理念,看如下系列课:https://ke.qq.com/course/379407?tuin=64ce5e2a
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐 上一条 /1 下一条

小黑屋| 手机版| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-11-18 01:51 , Processed in 0.023564 second(s), 8 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表