打印
[ISE]

VIVADO 综合属性 ASYNC_REG = “TRUE“

[复制链接]
1110|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
gaochy1126|  楼主 | 2022-12-29 21:25 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

ASYNC_REG属性一般用于跨时钟域的数据同步上,该属性指定:寄存器可以接受异步数据或者该寄存器是一个位于同步链上的同步寄存器。

在仿真过程中,当发生时序违例时,寄存器默认行为会输出X或不定态,从而进可能在多个路径上传输不定态。ASYNC_REG能够使得在发生时许违例时输出上次已知值。

在附加了ASYNCREG属性后,在综合的过程中将不会优化该寄存器及其周边逻辑,同时也影响optimization,place&routing以提高MTBF(mean time between failure)。在布局时,将会确保同步链上的寄存器摆放尽可能接近一最大化MTBF,直接相连的带有该属性的寄存器将会直接放进单个SLICE/CLB(如果寄存器同时带有ASYNC_REG和IOB属性,IOB将优先于ASYNC_REG,寄存器将会被存放至ILOGIC block)。

如下例所示,,sync_0,sync_1将会被放至同一个SLICE/CLB内:



  • (*ASYNC_REG="TRUE"*)reg sync_0,sync_1;



  • always @(posedge clk)



  • begin



  • sync_1<=sync_0;



  • sync_0<=en;


其电路图及布局图分别如下图所示:

综合电路图


使用特权

评论回复

相关帖子

沙发
gaochy1126|  楼主 | 2022-12-29 21:25 | 只看该作者
布局图

属性原语:

verilog:

(* ASYNC_REG = "{TRUE|FALSE}" *)

Verilog Syntax Example

// Designates sync_regs as receiving asynchronous data

(* ASYNC_REG = "TRUE" *) reg [2:0] sync_regs;

XDC Syntax

set_property ASYNC_REG value [getcells <instance_name>]

Where

• <instance_name> is a register cell.

XDC Syntax Example

# Designates sync_regs as receiving asynchronous data

set_property ASYNC_REG TRUE [get_cells sync_regs*]

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:这个社会混好的两种人:一是有权有势,二是没脸没皮的。

1051

主题

11300

帖子

26

粉丝