ASYNC_REG 约束: 识别设计中的异步寄存器 禁用这些寄存器的 X 传输 ASYNC_REG 约束可通过以下方式附加到前端设计中的寄存器: 在 HDL 代码中使用属性 在赛灵思设计约束 (XDC) 中使用约束 ASYNC_REG 附加到的寄存器会在时序仿真期间保留先前的值,并且不会向仿真输出 X。请
ASYNC_REG用于单bit信号采用双(或多)触发器实现异步跨时钟域的场合,此时所有用于同步的触发器都要标记ASYNC_REG。标记方式为: (* ASYNC_REG = "TRUE" *) reg sync_0, sync_1; 目的是告诉综合工具布线时将这2个寄存器放在一起(即同一个SLICE中),从而减少线延迟对时序的影响。 为避免忘记标记ASYNC_REG,打开...
ASYNC_REG用于单bit信号采用双(或多)触发器实现异步跨时钟域的场合,此时所有用于同步的触发器都要标记ASYNC_REG。标记方式为: (* ASYNC_REG = "TRUE" *) reg sync_0, sync_1; 目的是告诉综合工具布线时将这2个寄存器放在一起(即同一个SLICE中),从而减少线延迟对时序的影响。 为避免忘记标记ASYNC_REG,打开...
ASYNC_REG属性的作用对象为寄存器,寄存器添加该属性后,即表明寄存器的数据输入口D接收的是来自异步时钟触发器的数据或是该寄存器在一个同步链中属于同步寄存器。ASYNC_REG更多的是使用在异步跨时钟域中。 在Vivado综合的过程中,对于添加了ASYNC_REG属性的寄存器,会将该属性放置到网表的前面,这也能保证网表不会被优化...
ASYNC_REG属性的作用对象为寄存器,寄存器添加该属性后,即表明寄存器的数据输入口D接收的是来自异步时钟触发器的数据或是该寄存器在一个同步链中属于同步寄存器。ASYNC_REG更多的是使用在异步跨时钟域中。 在Vivado综合的过程中,对于添加了ASYNC_REG属性的寄存器,会将该属性放置到网表的前面,这也能保证网表不会被优化...
ASYNC_REG本质上是一个“优化向”的属性,它的作用是告诉综合工具vivado---被其标记的寄存器可以接收异步信号,且这些寄存器都是一个同步链上的同步寄存器,所以需要将其放置的尽可能靠近---也就是同一个SLICE/CLB,这样可以减少时延、有效提高MTBF。 参考资料: Xilinx...
2 设置ASYNC_REG属性的方法 1 verilog (*ASYNC_REG="TRUE"*)regsync_0;(*ASYNC_REG="TRUE"*)regsync_1;always@(posedgeclk)beginsync_0<=en;sync_1<=sync_0;end 2 VHDL attributeASYNC_REG:string;attributeASYNC_REGofsync_0:signalis"true";attributeASYNC_REGofsync_1:signalis"true"; ...
Vivado综合属性:ASYNC_REG 在异步跨时钟域场合,对于控制信号(通常位宽为1-bit)常使用双触发器方法完成跨时钟域操作,如下图所示。此时对于图中标记的1号和2号触发器需要使用综合属性ASYNC_REG,有两个目的: -表明1号触发器接收的数据是来自于与接收时钟异步的时钟域...
reg_2 <= reg_1; reg_3 <= reg_2; end reg_2和reg_3应该放到同一个Slice中,但综合工具并不是那么智能,有时并不会综合到同一个Slice中,这时就需要我们添加ASYNC_REG的属性: (*ASYNC_RE*)reg reg_2, reg_3; 其实Vivado中还提供了另外一种处理单bit跨时钟的方式,就是xpm_cdc_single ...
reg_1 <= ~reg_1; end always @ ( posedge clk_dst) begin reg_2 <= reg_1; reg_3 <= reg_2; end reg_2和reg_3应该放到同一个Slice中,但综合工具并不是那么智能,有时并不会综合到同一个Slice中,这时就需要我们添加ASYNC_REG的属性: ...