我发现没有适当的成熟工具来设计和原型化异步电路,这让我感到惊讶,并在一定程度上感到震惊。
我一直在使用Google和其他方法进行搜索,以找到一种设计VLSI异步电路的好方法,但是到目前为止,搜索未能给出答案。
有一些废弃的工具,如Balsa等,用于使VLSI设计自动化,但是它们完全没有文档记录,很难使用。我正在寻找的是在同步世界中拥有的类似FPGA的产品。
无论如何,如果您共享可靠工具的名称以及减轻异步电路设计负担的原型硬件,我将不胜感激。
我发现没有适当的成熟工具来设计和原型化异步电路,这让我感到惊讶,并在一定程度上感到震惊。
我一直在使用Google和其他方法进行搜索,以找到一种设计VLSI异步电路的好方法,但是到目前为止,搜索未能给出答案。
有一些废弃的工具,如Balsa等,用于使VLSI设计自动化,但是它们完全没有文档记录,很难使用。我正在寻找的是在同步世界中拥有的类似FPGA的产品。
无论如何,如果您共享可靠工具的名称以及减轻异步电路设计负担的原型硬件,我将不胜感激。
Answers:
提到了These修斯逻辑NCL,还有握手系统(Philips剥离了)以及Fulcrum Microsystems和Caltech。还有一个异步ARM处理器,称为Amulet。SUN Microsystems拥有一个处理器设计团队以及一个无时钟的SPARC。
我称这些无时钟设计为避免诸如波纹计数器之类的逻辑设计与这些类型的电路之间的混淆。但通常使用这两个术语。
Synopsys的DC(设计编译器)以及FTL系统的Merlin也曾经可用。
但是,如果您具有正确设计的核心单元库,则此顶层抽象/描述可能变得很简单。核心问题是,如果您设计的系统允许每个单元向前传播表示“结果良好”的信号,并向后传播“系统可用”的信号,那么系统的自时钟就可以像这样简单地进行设计无需考虑比赛条件或时间的软件。
因此,所使用的工具将像用于单元级(晶体管级)设计的SPICE一样简单,以及用于编译为要放置的一组原语的C语言一样简单。在我的一生中,我找不到所使用的基于C的工具(开源)。
看看像韦斯利·克拉克(Wesley Clark)(他最近去世)以及伊万·萨瑟兰(Ivan Sutherland)和卡尔·范特(Karl Fant)(在其他地方也提到)这样的人。
FPGA是正确的硬件。但是您将无法使用以同步为中心的综合软件,因为它进行了错误的转换。
例如,FPGA完全有能力形成带有反相器链的振荡器。但是,如果您在例如VHDL中定义了逆变器链并使用标准编译器之一,则“ NOT-gate pushback”将成对消除逆变器,而只剩下一个,并且设备不会振荡。
您可能必须编写一些自己的综合软件,如果您在比特流上获得了足够的信息,这将是可能的。我会研究在比特流而不是行为描述上进行的其他研究工作-毛刺检测和可靠性分析之类的东西高度依赖于合成器选择的映射。冗余容错逻辑领域中的一些工作可能已经解决了一些自定义映射技术,因为通用乘积项消除是传统合成器执行的标准转换之一,并且绝对破坏了冗余设计。
当您控制诸如查找表以及本地和全局互连之类的FPGA逻辑元素原语的用法时,您将能够使用固有的延迟来实现异步设计。您的优化问题要比满足建立和保持时间的目标困难得多,但这就是进行研究的原因。
取决于电路的复杂性。如果您的设计主要是数字化的,则可以考虑使用Altera的Quartus系统。使用异步时钟寄存器或仅使用逻辑门,通过图形和/或VHDL工具输入设计。根据需要添加虚拟缓冲器,门,信号引脚等,以延迟信号路径以匹配您的任何需求。(假设您的设计比其最快的CPLD栅极延迟<5 ns慢)
使用他们的芯片进行多年的设计,我从未发现错误的模拟器结果。较小的设计可以使用其免费工具完成。