【发布时间】:2021-06-15 06:54:40
【问题描述】:
我找不到有关此主题的论坛,以了解导致此问题的原因。 是什么导致了布局布线,您如何解决这个问题?我知道它的时间不正确,但是是什么导致了这个问题?
【问题讨论】:
标签: fpga
我找不到有关此主题的论坛,以了解导致此问题的原因。 是什么导致了布局布线,您如何解决这个问题?我知道它的时间不正确,但是是什么导致了这个问题?
【问题讨论】:
标签: fpga
您的问题相当笼统 - 如果您可以缩小范围,它会更容易帮助您。例如,提供有关使用的语言、工具链等的信息将有助于将所有内容放入上下文中。但是,我将尝试通过假设一些事情来回答:
-隐含的问题:什么是地点和路线
“Place and Route”是整个过程的一个步骤。它通常发生在以前描述的逻辑被转换为指定芯片上存在的物理逻辑块之后。通常,同一块的多个实例存在于芯片上。在“放置和布线”步骤中,算法尝试选择实例并通过现有矩阵连接它们,使得“组件”之间的结果延迟小于最大允许时间。例如,如果内存块物理上位于 FPGA 的左侧,算法将尝试使用它旁边的逻辑单元来“实现处理逻辑”,因为将数据修补到对面的逻辑单元会增加延迟并消耗更多“途径”。
-导致“放置和路由错误”的原因
如果您收到“放置和布线错误”,这通常意味着算法找不到组合或布局,其中所请求设计的延迟低于所需时间限制或真正适合设计到给定数量的组件/连接。从指定的频率中扣除时间限制。较低的频率意味着较不严格的时序条件。
-如何解决“放置和路由错误”
这在很大程度上取决于设计。有时它可归因于给定设计的不良(时钟)规范或信号的时钟域交叉或太长的“管道”或太少的资源(即剩余的逻辑单元)。根据使用的工具,您可以恢复日志或概述,其中说明您的设计的哪一部分可能是违规的主要原因。
管道过长的一个很好的例子是尝试对长度为 N 的输入向量的所有位求和。如果通过生成的循环实现简单,则“加法”逻辑将链接成一行,导致延迟大约 N * delay_between_logic_cells。一种解决方案是将向量拆分为多个部分,将得到的部分总和计时到两个中间缓冲区,然后输出这两个计时缓冲区的总和。这有效地将整体延迟降低到大致 (N / 2 + 1) * delay_between_logic_cells。
但是,这只是对该主题的一个糟糕的介绍,快速的互联网搜索将获得有关这些主题的更准确和详细的信息。
【讨论】: