gaochy1126 发表于 2022-12-29 21:25

VIVADO 综合属性 ASYNC_REG = “TRUE“

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;


其电路图及布局图分别如下图所示:https://www.freesion.com/images/461/835d84560811dd659c2b23b2eb86fdad.JPEG综合电路图https://www.freesion.com/images/55/292c0844708b12df2ed3be349c907abf.JPEG

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 sync_regs;

XDC Syntax

set_property ASYNC_REG value

Where

• <instance_name> is a register cell.

XDC Syntax Example

# Designates sync_regs as receiving asynchronous data

set_property ASYNC_REG TRUE
页: [1]
查看完整版本: VIVADO 综合属性 ASYNC_REG = “TRUE“