我有兴趣采用逻辑描述的电路并将其分解为高级连接模块,其中每个模块最多有 6 个输入和 5 个输出。所以它在某种意义上类似于 FPGA,只是模块可以有多个输出,并且它们不需要实现为 LUT。我打算分别优化这些模块的逻辑。我怎样才能做到这一点?
问问题
113 次
1 回答
0
因此,您希望将电路划分为最多 6 个输入和最多 5 个输出的小电路。Yosys 或 ABC 中没有现有的功能可以做到这一点。(ABC 是用于 Yosys 中大多数低级逻辑优化的工具。)
您可以尝试为此编写通行证(有很多关于图形分区算法的文献,我相信有些东西可以合理地工作),但是您的要求存在一个基本问题 imo:
显然,例如将任何逻辑划分为具有 6 个输入和 3 个输出的单元是非常简单的:只需将逻辑映射到 2 个输入门,然后将这些门中的 3 个随机打包到一个单元中。这将是一个有效的分区,但它不会是一个非常有用的分区,因为每个输出都依赖于不同的输入。只有当至少一些输入在单元的输出之间共享时,分区才会有用。这就是问题所在:您会发现,在几乎所有现实世界的电路中,只有很少的信号可以通过这种方式共享,即使使用完美的分区算法,您的单元也将包含大部分独立的输出,或者只有非常少的信号。少量输出。
我不确切知道您的应用程序是什么,但一种简单的方法可以是,例如,首先简单地将整个电路映射到 4-LUT,然后进行简单的传递,检测共享一些输入的 4-LUT,并合并多达三个其中(如果它们共享足够的输入,以便它们一起最多有 6 个输入)。但是恐怕您会发现只有少数 4-LUT 可以通过这种方式共享。
于 2017-07-21T17:20:11.363 回答