zoukankan      html  css  js  c++  java
  • 同步复位与异步复位

    在一个ASIC设计中,复位方面有着很多的策略:

    同步复位与异步复位的选择,reset tree的buffer与走线,reset tree的时序及功能验证,

    reset的scan test设计,cdc中的设计。

    同步复位:

    在always模块中,并不会有reset的敏感列表。

    同步复位可以被综合为更小的FF,因为只需要在输入端D加入reset与门或者lib提供带同步reset的FF;

    同步复位可以对reset信号的小的glitch进行filter,防止metastable的产生;

    但是;

    同步复位需要一个pulse stretcher(counter)来保证reset pulse的宽度足够被clock采样到;

    同步复位要求必须有clock才能工作,而有时系统要求是clock gate的;

    在一些三态总线的初始化过程中,要求必须有异步复位,来保证在clock有效前,不出现冲突;

    异步复位的最大问题是在reset release阶段可能出现timing不满足。

    异步复位的FF包括一个专用的reset pin,在always模块的敏感列表中包含reset。

    异步复位保证了FF,data端的timing是clean的,不会被reset影响到;

    异步复位可以保证在没有clock的情况下,有效复位;

    但是

    异步复位reset端出现的小的noise和glitch对设计影响可能是致命的;

    reset端相对于clock的recovery time和removal time问题,这个问题在一个reset对应多个clock时,更加严峻;

    实际中的解决办法,加入reset synchronizer;

    reset distribution tree相较于clock distribution tree对skew要求并没有那么严格,并不需要做太多的balance工作。

    reset tree针对sync,usync的一些结构:

    在sync reset中,必须在PR阶段插入buffer或调整trace来保证timing且reset在同一clock内可以传递到各个module。

    而在usync设计中,可以在每个endpoint做自己的sync和balance,从而简化了设计。

    reset的输入pad应该经过一schmidt trigger来filter glitch,

    在逻辑内部可以通过加入delay hard macro来进行glitch filter。

    带优先级的reset的设计:

     

    synopsys要求,如果在敏感列表中有一个是edge-sensitive,那么敏感列表中的所有信号都必须是edge-sensitive。

    verilog simulation并没有在这个约束,但是在edge-sensitive敏感列表中,只能有clock和reset信号。

    在上述这个例子中,不过不加translate_off/translate_on的宏定义,那么这个simulation model是错的,

    在reset,set同时为低,但是reset之后无效的情况下,仿真结果会错误,这只是一个model的建立错误,DC并不会错。

    在创建testbench过程中,尽量保证使用同一个testbench,对于pre-synthesis和post-synthesis有同样的结果。

    在reset进行同步释放的设计中:

    @posedge clk or negedge rst

      if(!rst)   begin

                      reg1 <= 1'b0;

                      reg2 <= 1'b0;

      end

      else begin  reg1 <= 1'b1;

                      reg2 <= reg1;

            end

    两级寄存器来保证mestability的概率最小,在这两级的register中,是不会检查recovery/removal,在sta中,设置为false path;

    在同步之后,可以检查recovery/removal的timing;

    rst的下降沿只能保证,有效的rst生成,rst的removal是靠clock的trigger。

  • 相关阅读:
    小程序,计算一个字符串中每个字符出现的次数
    打印好看的整齐的清单
    输入符号,宽,高,打印此符号组成的矩形
    输入名字显示其生日,没有则让输入生日,做记录
    51ll网产品信息保存为txt文件
    .py文件 改成默认用idle打开
    协程原理代码演示
    python: ImportError: cannot import name 'Style' from 'openpyxl.styles' 解决方法
    python编程快速上手第7章习题20
    HDU 1010 Tempter of the Bone
  • 原文地址:https://www.cnblogs.com/-9-8/p/5470769.html
Copyright © 2011-2022 走看看