我收到来自 Quartus 的消息,它发现了同步器链,但无法对其执行 MTBF 分析。然而,除了如何识别同步器之外,手册中没有真正解释任何内容,因此该工具不会优化或重新定时它们。
到目前为止,所有I/O都已使用
set_false_path
。
我最好的猜测是,
据此,该工具可以推导出亚稳定概率,然后从链的长度推导出复合概率是多少。
Info (332114): Report Metastability: Found 12 synchronizer chains.
Info (332114): The design MTBF is not calculated because there are no specified synchronizers in the design.
Info (332114): Number of Synchronizer Chains Found: 12
Info (332114): Shortest Synchronizer Chain: 2 Registers
Info (332114): Fraction of Chains for which MTBFs Could Not be Calculated: 1.000
Info (332114): Worst Case Available Settling Time: 8.863 ns
带有
set_input_delay
和虚拟时钟的 SDC 文件是执行此操作的方法吗?消息“设计中没有指定的同步器”并没有告诉您如何指定同步器,而且我不明白它如何计算 MTBF,除非它知道信号可能转换的时间频率。
我看过手册和烹饪书。这本烹饪书似乎描述了真正的同步 I/O,而不是异步输入的同步器。在我的特定实例中,我有一个正交编码的 A/B 相,我可以在它们变化时对其进行采样。我想确保链条的大小足以适应信号的上升和下降。我还知道转换之间的最短时间(由最大速度决定),我认为这是虚拟时钟周期。
其中一些确实是假同步器,并且它们被禁用,
set_instance_assignment -name SYNCHRONIZER_IDENTIFICATION OFF -to register_name
“register_name”列在“Report Metastability”输出中的“Synchronization Node”下。
信息可以在第 3 章或“Quartus 设计建议”中找到。阅读 PDF,而不是通过谷歌搜索网页结果。 PDF 的顺序在网页中不明显。 一种机制是为寄存器/触发器指定 SYNCHRONIZER_TOOGLE_RATE。
如果我有以下情况,
set_instance_assignment -name SYNCHRONIZER_IDENTIFICATION FORCED_IF_ASYNCHRONOUS -to register_name
set_instance_assignment -name SYNCHRONIZER_TOGGLE_RATE 32000 -to register_name
并且主输入引脚有
set_false_path()
,该工具给出了亚稳态报告,但我相信它是假的。更改速率并使用
FAST_INPUT_REGISTER ON
不会更改报告。所以,我认为亚稳态仅适用于时钟域交叉(或同步 I/O)。论文Understanding Metastability in FPGAs似乎表明某些触发器比其他触发器具有更好的亚稳态常数,并且这是由工艺等控制的。I/O单元触发器具有最佳属性似乎是合理的。但是,我没有这方面的文档,也无法让计时工具来表明任何差异。 当我尝试使用
set_input_delay()
的虚拟时钟时,装配报告表明切换率是假的。