你建议用什么方法来制作异步电路的原型?

电器工程 FPGA 超大规模集成电路 eda
2022-01-18 11:38:50

当我发现没有合适的既定工具用于设计和原型设计异步电路时,我感到惊讶和震惊。

我一直在使用谷歌和其他方式搜索,以找到设计 VLSI 异步电路的好方法,但到目前为止,搜索未能产生答案。

有一些废弃的工具,如 Balsa 等,用于自动化 VLSI 设计,但它们完全没有文档且难以使用。我正在寻找的是我们在同步世界中拥有的类似 FPGA 的东西。

无论如何,如果您分享一个可靠工具的名称,以及减轻异步电路设计负担的原型硬件,我将不胜感激。

4个回答

已经提到了忒修斯逻辑 NCL,还有握手系统(飞利浦分拆)以及支点微系统和加州理工学院。还有一个名为 Amulet 的异步 ARM 处理器。SUN Microsystems 有一个处理器设计团队来解决这个问题以及无时钟 SPARC。

我将这些称为无时钟设计是为了避免像纹波计数器这样的逻辑设计与这些类型的电路之间的混淆。但通常使用任何一个术语。

Synopsys 的 DC(设计编译器)以及 FTL 系统的 Merlin 也曾经可用。

然而,如果你有一个正确设计的核心单元库,这个顶层抽象/描述可能变得微不足道。核心问题是,如果您设计了一个系统,该系统允许每个单元向前传播“结果良好”的信号以及向后传播“系统可用”的系统自时钟,因此可以简单地设计为软件不关心比赛条件或时间问题。

因此,所使用的工具将与用于单元级(晶体管级)设计的 SPICE 和用于编译成一组要放置的原语的 C 一样简单。在我的一生中,我找不到使用的基于 C 的工具(开源)。

看看像 Wesley Clark(他最近去世)以及 Ivan Sutherland 和 Karl Fant(在其他地方也提到过)这样的人。

如果寄存器以系统时钟为时钟,则它被认为是同步的。如果相同的寄存器直接从门、逻辑电路或系统时钟以外的任何东西直接提供时钟,那么它将是异步的。Altera 的寄存器可以由多个系统时钟或逻辑提供时钟。您可以构建您想要的任何类型的门电路。. . 根据我对大多数 ASIC 或 FPGA 的经验,每次编译时,都会有不同的路由。因此传播延迟总是在变化。

FPGA 是正确的硬件。但是您将无法使用以同步为中心的合成软件,因为它会进行错误的转换。

例如,FPGA 完全能够形成一个用反相器链构建的振荡器。但是,如果您在例如 VHDL 中定义该反相器链并使用标准编译器之一,“非门推回”将成对消除反相器并只留下一个,并且设备不会振荡。

您可能必须编写一些自己的合成软件,如果您获得足够的比特流信息,这将是可能的。我会研究其他针对比特流而不是行为描述的研究工作——诸如故障检测和可靠性分析之类的事情高度依赖于合成器选择的映射。可能冗余容错逻辑领域的一些工作已经制定了一些自定义映射技术,因为通用乘积项消除是传统合成器执行的标准转换之一,并且绝对破坏了冗余设计。

当您控制 FPGA 逻辑元素原语(例如查找表以及本地和全局互连)的使用时,您将能够使用固有延迟来实现您的异步设计。您的优化问题比满足建立和保持时间的目标要困难得多,但这正是它研究的原因。

取决于电路的复杂性。如果您的设计主要是数字的,您可能会考虑使用 Altera 的 Quartus 系统。使用异步时钟寄存器或仅使用逻辑门,使用图形和/或 VHDL 工具输入您的设计。根据需要添加虚拟缓冲器、门、信号引脚等,以延迟信号路径以匹配您需要的任何内容。(假设您的设计比它们最快的 CPLD 门延迟 <5 ns 慢)

多年来使用他们的芯片进行设计,我从未发现错误的模拟器结果。更小的设计可以用他们的免费工具来完成。