E
Edward Fisher
Guest
Hi all,
The Xilinx tools allow an attribute called "ASYNC_REG" to be applied to FFs to constrain their placement for clock domain crossing synchroniser FFs. The attribute also ensures that various optimisations are not applied to these registers (e.g. register balancing etc).
For a dual flip-flop synchroniser, I could apply the attribute to the two FFs in the VHDL. However the style guide for my current role states that directives are to be avoided (e.g. DONT_TOUCH, KEEP etc) and instead scripts can be used. This is because such directives may not be portable between synthesis tools (Xilinx, Intel, Mentor etc).
Question:
- Assuming that we want to use register balancing (retiming) within the design globally. We need some method to prevent this optimisation being applied to the CDC synchroniser logic. If I can't use the compile directive how could I achieve the same using TCL?
- If the TCL knew the synthesis route, it could select the correct compile time directive and then boot up the relevant tool (Vivado vs Quartus vs Precision). That way in all cases the attribute would match the tool. However, after some digging, I cannot find the Intel equivalent of the Xilinx "ASYNC_REG" attribute.
Many thanks,
Ed
The Xilinx tools allow an attribute called "ASYNC_REG" to be applied to FFs to constrain their placement for clock domain crossing synchroniser FFs. The attribute also ensures that various optimisations are not applied to these registers (e.g. register balancing etc).
For a dual flip-flop synchroniser, I could apply the attribute to the two FFs in the VHDL. However the style guide for my current role states that directives are to be avoided (e.g. DONT_TOUCH, KEEP etc) and instead scripts can be used. This is because such directives may not be portable between synthesis tools (Xilinx, Intel, Mentor etc).
Question:
- Assuming that we want to use register balancing (retiming) within the design globally. We need some method to prevent this optimisation being applied to the CDC synchroniser logic. If I can't use the compile directive how could I achieve the same using TCL?
- If the TCL knew the synthesis route, it could select the correct compile time directive and then boot up the relevant tool (Vivado vs Quartus vs Precision). That way in all cases the attribute would match the tool. However, after some digging, I cannot find the Intel equivalent of the Xilinx "ASYNC_REG" attribute.
Many thanks,
Ed