vendor.xilinx_spartan_3_6: explain why ASYNC_REG is used. NFC.
authorwhitequark <whitequark@whitequark.org>
Tue, 24 Sep 2019 12:22:29 +0000 (12:22 +0000)
committerwhitequark <whitequark@whitequark.org>
Tue, 24 Sep 2019 12:22:29 +0000 (12:22 +0000)
nmigen/vendor/xilinx_spartan_3_6.py

index eb0aac017ac40b060f525ebefb14c92be2420ef1..aafb3f8b2b1db4a87222c5ef364698b05beff67e 100644 (file)
@@ -411,6 +411,11 @@ class XilinxSpartan3Or6Platform(TemplatedPlatform):
             )
         return m
 
+    # The synchronizer implementations below apply the ASYNC_REG attribute. This attribute
+    # prevents inference of shift registers from synchronizer FFs, and constraints the FFs
+    # to be placed as close as possible, ideally in one CLB. This attribute only affects
+    # the synchronizer FFs themselves.
+
     def get_ff_sync(self, ff_sync):
         if ff_sync._max_input_delay is not None:
             raise NotImplementedError("Platform {!r} does not support constraining input delay "