top of page

When your multi-bit synchronizer can fail! - A unique CDC scenario

  • SiliconCrafters
  • Apr 11, 2024
  • 2 min read

Updated: Jul 4, 2024



I was interviewing for RTL Integration Engineer in a company. In the 5th round of that interview, I was presented with a scenario which I could not even think is possible, due to my limited exposure in this field of course. This might not be nothing new for someone who is working on CDC for a considerable amount of time.


The interviewer asked me how I can ensure synchronization of a multi-bit signal/bus. The obvious answer to this will be an asynchronous FIFO or a handshake-based synchronization. The interviewer further asked me what is guaranteeing that all the bits of the bus are reaching the destination at the correct time? This was enough to get me confused. I just said - I do not follow.


He then explained the scenario to me in detail. He said that there is a possibility that the length of traces of each bits in the bus are not equal in length (after the chip is manufactured). Due to this, the value of some of the bits can get sampled first, and the bits which has a longer trace length will get captured in the later clock cycle.


Neither asynchronous FIFO, nor handshake synchronization will work in this scenario. If we are using asynchronous FIFO, wrong value of the bus bits can get stored in FIFO because few bits are getting sampled at the next clock cycle. If we are using handshake synchronization, the ready signal from sending domain might reach the destination before some of the bits in the bus, hence corrupting the data getting captured in destination domain.


After the interview, I researched a bit and found a paper which talks about a similar issue in detail. I will link the paper at the end of the article. I suggest you to through it so that you can at least have a short conversation regarding this issue.


The good news is – It is not entirely an RTL issue! Generally, when the back-end team does the timing analysis for asynchronous signals, they use a blanket false path or multi-cycle path constraint for those signals. Due to this, there is nothing guaranteeing that the bits in the bus have a common trace length. The person doing the routing, or the routing tool does not know that certain bits are a part of the common bus and hence does not care if they have a common length or not.


The paper talks about how we can use the constraints effectively to avoid this issue. It also discusses a rather tedious process of how RTL team can give feedback to the back-end team so that they can ensure the bits in a bus have a common length.



Hope you learned something new. See you in the next article!

2 opmerkingen


sonu
09 mrt

This is an excellent blog and points to an advanced CDC topic. The solution to the above scenario is using max_delay and min_delay constraints for those trace length paths in design so that these are taken care of in STA analysis and get fixed in PnR. And we have to be careful not to provide set_false_path, as this issue primarily comes when we use set_false_path and the tool does not do any timing checks or optimisation and the paths are skipped in STA as well as PnR implementation. Reference article: https://www.linkedin.com/feed/update/urn:li:activity:7243945906104856576?updateEntityUrn=urn%3Ali%3Afs_updateV2%3A%28urn%3Ali%3Aactivity%3A7243945906104856576%2CFEED_DETAIL%2CEMPTY%2CDEFAULT%2Cfalse%29&originTrackingId=tl%2BSllG0Qw2MZk9Ax8o6SA%3D%3D&lipi=urn%3Ali%3Apage%3Ad_flagship3_profile_view_base_recent_activity_content_view%3BGRlKJ65mSg6WbIK01xbNcQ%3D%3D

Like

Gast
22 okt 2024

Please publish more blogs on advanced digital topics .

Like
Never Miss a Post. Subscribe Now!

I plan to write about anything and everything I find interesting.

Thanks for submitting!

© 2024 SiliconCrafters.com

Powered and secured by Wix

bottom of page