像往常一样,在我的一生中,事情发生了如此之快、如此之远的变化,我感到惊讶。当我在1980年开始我在电子和计算机领域的职业生涯时,我们认为简单的可编程逻辑设备(pld)非常酷,尤其是它们的创造者设法从同样一小部分字母中挤出了这么多首字母缩写(工程师们如果不是首字母缩写的爱好者就什么都不是——尤其是TLA(三个字母的首字母缩写))。
最初的pld是1970年出现的可编程只读存储器(prom)。虽然这些都很简单,但每个人都出于礼貌而不愿提及。可编程逻辑阵列(PLAs)大约在1975年首次出现,随后在20世纪70年代末又出现了可编程阵列逻辑(PAL)和通用阵列逻辑(GAL)设备。随着时间的推移,除了使用可编程保险丝来配置这些设备之外,还出现了电可编程版本(如eprom)和电可擦除可编程版本(如eeprom)。
在许多方面,早期的可编程逻辑器件对于设计工程师来说就相当于黑暗时代。以可编程逻辑器件为例,我们有时会先用铅笔和纸写一个输入和输出的真值表。或者,我们可以捕获一个流程图或电路原理图(使用同一支铅笔和一张新纸),然后我们使用布尔方程、De Morgan变换和Karnaugh映射来生成我们的真值表。最终,我们在计算机上以一个表格文本文件结束,定义了PLD中哪些保险丝将被吹断。然后我们把这个文件输入一个设备程序员来引爆保险丝。每个设备程序员都有自己的文件格式,所以创建这些文本文件需要熟悉设备的内部架构和设备程序员使用的文件格式。(错误检查?别逗我笑了!)
直到20世纪80年代,我们才开始看到为我们执行繁重工作的工具,首先是联合电子设备工程委员会(JEDEC)的一个委员会提出了用于PLD编程的标准文件格式。不久之后,所有的设备程序员都被修改为接受这种JEDEC文件格式。随后又引入了PALASM (PAL汇编程序)、ABEL(高级布尔表达式语言)和CUPL(可编程逻辑通用工具),所有这些都涉及基本的硬件描述语言(hdl)以及可以将这些语言的设计描述转换为相应的JEDEC文件的软件应用程序。哦,我们玩得真开心!
1984年,Xilinx开始讨论一种名为现场可编程门阵列(FPGA)的新型设备。而不是吹保险丝,这个设备是使用SRAM配置单元编程。第一台这样的设备XC2064于1985年上市。这个设备有一个8×8阵列的可配置逻辑块(CLB)岛,每个岛包含两个3输入查找表(lut),所有这些都在可编程互连的“海洋”中。
问题是在早期没有FPGA设计工具,所以由设计人员来指定每个LUT的内容以及clb如何相互连接(以及与设备的主要输入/输出),所有这些都是手工完成的(再次回到铅笔和纸)。
早期fpga的批评者喜欢指出,这些设备的时间是不确定的,因为内部有很多连接东西的方法。这与pld不同,pld是高度确定性的,在数据簿中指定了输入到输出的延迟。
随着语言驱动设计(LDD)的引入,所有这些问题都消失了,LDD使用了像Verilog和VHDL这样的hdl,并结合了逻辑合成引擎。现在,除了在寄存器传输级(RTL)代码中捕获设计之外,设计人员需要做的就是按照“从输入A到输出Y的延迟不应超过xx纳秒:从输入B到……的延迟”等等来指定任何时间限制,将其留给合成引擎来“使其如此”。
随着时间的推移,fpga的容量和性能不断提高。例如,今天较大的fpga可以包含数百万个等效门,这导致了在创建逻辑函数的最佳位置和它们之间的路由方面不断增加的问题,以最大限度地提高资源利用率,同时最小化路由拥塞。所有这些都让我们想到了Plunify该公司的名字是“PL”(可编程逻辑)和“统一”的组合。
由Harnhua Ng和Kirvy Teo于2009年创立的Plunify只是一家小公司,但他们已经建立了一个超大的足迹(没有双关语),拥有数百个客户,其中包括大约50家企业级公司。
Plunify的“皇冠上的宝石”是一个叫做亲密的它“位于”Xilinx、Altera(现在的英特尔)和Microchip Technology等主要FPGA供应商现有的位置和路线(P&R)和合成工具的“顶端”。
银泰分析了设计的RTL代码,但没有修改它。相反,它使用复杂的机器学习算法控制现有的P&R和合成引擎,从而实现最优的位置和路由,从而实现定时闭合。理解奖惩和综合工具有无数可以“调整”的控制参数是很重要的。此外,一切都是相互关联的,所以调整一个参数可能会改善设计的一个方面,而对另一个方面产生负面影响。结果是一个极其复杂的多元问题,非常适合机器学习解决方案。说到结果,他们非常令人印象深刻,如下图所示:
“之前”(使用现有的供应商工具)和“之后”(使用InTime增强这些工具)的FPGA布置和路由(图片来源:Plunify)
银泰,集成了资源管理软件,如LSF而且上海黄金交易所的它可以在一台机器或网络上的多台计算机上工作,自动在多台机器上分发构建和聚合结果。此外,Plunify Cloud允许您将构建卸载到Amazon Web Services (AWS),而无需成为云计算专家。
现在,尽管像“人工智能”和“机器学习”这样的术语可能有一定的“流行语”,但用户真的不在乎这样或那样。他们所关心的只是工具是否有效,以及它是否提高了结果的质量(QoR),提高了生产效率,降低了开发成本,并加快了上市时间(TTM)。可以说银泰在所有这些方面都得分很高。例如,在一些设计中,银泰从FPGA工具中提取了超过50%的设计性能提升。银泰还解决了95%存在严重场地和路线故障的现有项目。
记得人工智能和机器学习在很大程度上被封闭在学术界,直到算法和处理能力的发展让它们在2015年左右突然出现在舞台上,让我惊讶的是,Harnhua和Kirvy早在2009年就考虑将机器学习应用于电子设计自动化(EDA)。你呢?你和我一样印象深刻吗?
PS如果你想了解更多关于这一切,那么,除了访问Plunify网站上,这些小流氓会有一个海报会议利用机器学习预测地点和路线中的时间瓶颈-与英飞凌科技合作,在即将到来的设计自动化会议(DAC)将于2021年12月5日至9日在旧金山举行。
这是我的错-我打算将以下内容张贴在我的专栏tortutuous Topological Toroidal transformation (a.k.a Donut Math) (//www.morningcaffee.com/article/tortuously-topological-toroidal-transformations-a-k-a-donut-math/)
- - -
我的朋友Peter Traneus Anderson(又名Traneus Rex)正确回答了我的第一部分问题:
扭转= 0.25
边数= 1
Faces = 1
轨道= 4
彼得接着提出了一个自己的难题:
对于甜甜圈每旋转0弧度的扭曲,我们有0度的情况。
对于每旋转的弧度,我们有180度的情况。
对于/2弧度的旋转,我们有90度的情况。
每旋转一个弧度,我们有…?
这是个棘手的问题——你知道答案吗?
我的好友Jay Dowling刚给我发邮件说
“嗨,Max,关于你的FPGA P&R文章-我有一个宏,我会用Altera来获得最好的结果。他们使用设计的某种散列作为随机数生成器的种子,作为P&R的起点。通过改变一个无用的参数(要求最大频率在0.1 MHz增量),我可以实现我的目标。通常较低的值会得到最好的结果。”