以hackathon格式跟踪芯片。没有实体设计,没有iPhone



大家都看过关于硅谷初创公司的杜德电影吗?您知道1977年硅谷的哪一家初创公司是有机硅含量最高的公司?它是硅谷研究中心,也称为SVR和Silvar-Lisco。该初创公司制作了程序,将晶体管自动放置在芯片上,并将它们与走线相连。这家初创公司公开上市甚至生存到21世纪,但无法与新领导者竞争-首先是Daisy / Mentor / Valid,然后是Synopsys和Cadence。

SVR所做的程序在英语“放置与路线-P&R”中称为放置和跟踪程序。它们极大地提高了工程师的劳动生产率-在P&R程序之前,用彩色硬纸板(Intel 4004)粘贴芯片掩模图,在纸上用铅笔绘制,或将光标放在文本屏幕上,然后将以星号表示的基本块连接到正负号之间(这是IBM设计芯片的方式) / 370兼容的Amdahl计算机,苏联苏联计算机的高级亲属)。

SVR由斯坦福大学教授比尔·范·克里姆帕特Bill van Klimpat)创立,我本人认识他,因为他是天使投资人,也是我自己创业公司的董事会成员。比尔定期因我在会议上的拖延行为和拖延而使我受宠若惊,还讲述了有关专利法院的故事,在这些故事中,他经常作为专家证人出庭。

因此,当我在喀山(Kazan Innopolis)被要求为CASE Tools上的学生组织一个关于黑客马拉松的项目时,我想起了Bill,并建议在黑客马拉松上制作一个最小的路由程序。这篇文章是关于这次实验性黑客马拉松结果的报告。在为期一周的Innopolis开源项目缩放会议上,他们也可能值得讨论



了解微芯片的物理设计算法是一项核心能力。在Apple,NVidia,Intel,AMD,Cisco,Juniper,Huawei,三星,Tesla,Google,MediaTek和Broadcom的所有芯片设计团队中,都有一个PD小组(物理设计小组),该小组与Synopsys和Cadence的工具一起工作,谁做的。而且,这些工具很复杂,它们拥有一千多个团队和数百个子系统;它们每年使每个公司花费数百万或数千万美元。如果没有更多的PD专家(无论是在用户级别还是在定制PD工具开发人员级别上),俄罗斯就没有机会在国际市场上成为智能手机,AI加速器和自动驾驶汽车中的微芯片的重要者。像某个非洲国家,大学没有教授生物化学的东西,通常没有机会成为抗冠状病毒药物(任何假体抑制剂)的领导者。

讨论与异议


我们在硅俄邮件列表中讨论了P&R hackathon的想法,我们对此持谨慎的怀疑态度。特别是,在VMK莫斯科国立大学从事EDA(电子设计自动化)算法的Mikhail Shupletsov反对我:
Mikhail Shupletsov:“毫无疑问,Hackathon格式是否适合此类任务。只有在比赛进行了很长时间(至少6个月)后,才能在设计自动化问题上取得良好的结果。我认为,以提议的格式,只能运行现成的工具,而不能创建新的解决方案。”
我回答了:
: « , , capacity ( ) features ( ASIC libraries) . , ! 20 , floorplanning maze router. Tcl/Tk. , EDA. + .»

« — »


这项任务使Innopolis的三名学生感兴趣。引起人们最大兴趣的是如何减少任务的措辞,以便在两周的准备工作和四个小时的黑客马拉松中真正有可能快速完成任务。问题的原始陈述是这样的它包括三个部分:

  1. 在Verilog硬件描述语言的精简子集上解析文本文件。
  2. 古代李波跟踪算法的应用。
  3. 结果的图形输出。

与学生讨论后,我们决定用简化的文本文件中的单元格坐标输入代替Verliogue解析然后,学生们分配了职责,以下是有关实验的三份报告。

与学生们同时,我决定自己写一个解决方案,弄清楚一个人要花多长时间。学生使用Java和Web图形中的面向对象的客户端-服务器框架编写了他们的决定。我刚刚编写了一个C程序,该程序从初始化的静态数组中获取数据,并通过打印带有星号和点的图片来打印结果,就像1970年代的程序一样。我花了四个半小时。

我(非学生)程序的代码,
完整的结果,



现在我们请学生们:



索非亚·埃尔莫拉耶娃(Sofia Ermolaeva)的报告


黑客马拉松于2019年10月19日在Innopolis大学的学生中举行。

提出了11个案例,其中每个案例都必须选择3个案例,并从最喜欢的情况到最不喜欢的情况进行排序。

根据我们的偏好和每个案例的选择人数,组织者组成了团队。

黑客马拉松比赛的前一周,我和另外两名学生从MIPS BU分配到了该项目。

图1. hackathon网站上的 MIPS BU案例



相比之下,我们的团队是最小的,其他团队是5-7人。因此,我们立即意识到,我们不太可能在8小时内掌握要执行的任务。困难之处在于,我们是唯一拥有远程客户甚至时差10小时的客户。

根据黑客马拉松的规则,在分配团队之后,被允许与客户举行一系列会议以澄清要求,并在团队不熟悉的情况下熟悉技术(适用于我们的团队)。

我们于2019年10月11日首次与客户会面。在会议上,我们为征集面试准备了问题(即使在准备问题时,我们也了解到我们根本不了解如何完成任务,但这更加有趣)。问题的初始列表显示在图像2中。为了获得有关该主题的任何知识,我不得不在Internet上大量学习。

图2.启发面试问题。



在会议期间,我们对解决方案有更详细的问题(请参见图3)。

图3.与实施相关的问题。



作为会议的结果,我们发现我们收集了需求及其优先级,因此很清楚如何缩小范围(参见图4)。

图4.第一次会议期间收集的需求及其优先级。



我们三个人没有时间在一起8个小时的感觉并没有使我们离开;我们与客户分享了我们的经验。原来,他不知道8小时的限制。因此,我们开始一起考虑简化任务和开发原型。

简化主要涉及功能需求1(请参见图4)。在我们最终的需求文档中,原型需求按功能划分:文件阅读器(请参见图5),布局(请参见图6),路由(请参见图7),图形表示(请参见图8)。根据规则,需求文档需要经过客户签名的证明,但是由于我们的客户得到了远程确认,因此我们决定制作一张照片(参见图9)。

图5.文件读取器的



需求图6.放置



图像的需求7.路由



图像的需求8.图形表示



的需求[图像9.客户确认需求。]

收集需求之后,我们开始考虑实现功能和技术选择。值得注意的是,我们的团队包括:1位C#开发人员(Michael),1位Python开发人员(Maxim)和1位Frontent开发人员(Sofia)。对于显示,我们选择React.js是因为我有足够的信心在短时间内使用此技术就可以实现显示。对于其余的组件,由于知识千差万别,因此很难选择一种技术。我们一致同意使用Java,因为每个人对这种语言的经验最少。

我们分担以下责任:

  • 显示,前后链接,演示文稿准备,团队管理-索非亚,
  • 布置和布线-Michael
  • 文件阅读器-Maxim。

在黑客马拉松期间,客户必须陈述情况,但是由于时间差异(我们在清晨才有,而客户则是深夜),我们展示了客户准备的视频。


演讲之后,我们去编码解决方案。我们坐在一起,但是每个人都在努力(见图10)。当然,在Hackathon之前,我们培训过编写Lee算法以了解其工作原理。

[图10. Mikhail和我正在研究解决该问题的方法(Maxim没进入框架,但他也在附近工作)。]

我选择Spring来沟通前后。为了测试该解决方案,我们准备了几个简单输入文件的示例(图11中显示了此类文件的示例)。

图11.传入文件及其显示。





对简单文件的测试按预期工作。当我们决定为幻灯片上的精美图片制作一个更加复杂的示例时,出现了问题。我想到了一个在图12中显示的示例。由于我们未知的原因,该算法陷入了无限循环。骇客马拉松赛结束前还有一个小时。我们已经为演示文稿进行了艰苦的工作,因为必须进行高质量的演示文稿。在进行演示时,我的队友发现该程序并非每次都以无限循环结束,也就是说,当它在同一文件上启动时,该程序有时仍可以工作。我们意识到我们的解决方案不稳定。但是没有时间纠正。确认算法不稳定的原因还在于,同一文件的电路结构不同(见图13)。

图12.在黑客马拉松期间发明的一个示例,用于演示算法的操作。



图13.第二个示例的结论(在黑客马拉松期间和黑客马拉松之后)。





Hackathon我们没有赢。值得注意的是,其余案例与质量分析和产品测试有关,而我们是从头开始实施该解决方案的。我们是黑客马拉松的乌鸦。实际上,我对此感到非常高兴,因为获得的经验非常有用。

[图14.在黑客马拉松上展示我们的解决方案。]
[图15.我们的团队有参与证书。]
[图16.我们的团队参与评估其他案例。]

事后调查

黑客马拉松之后,我们将决定发送给客户,以参考git 。

11月4日,我收到客户的来信,说他无法启动我们的项目。问题是我们分别在MacOS和Windows上开发,我们还根据在平台上的运行方式编写了说明。

图17.启动应用程序的初始指令。



客户尝试通过控制台运行,并收到以下错误:

图像18.错误号1。



它重现了所有错误,问题是要通过控制台以jar形式启动项目,必须添加一个清单文件,以便maven知道哪个文件是主类。因此,我添加了配置文件,并将更新发送给客户。

客户的下一封信是2020年4月15日。客户在项目组装期间收到以下错误:

图片19.错误2。



我不得不再次处理这个项目。经过数小时的反复试验,我仍然设法找出问题所在。事实证明,即使在组装过程中将javafx.util库作为依赖项添加到pom.xml中时也没有将javafx.util.Pair添加到项目中。谷歌搜索之后,事实证明该库的所有用户都有这样的问题。最初,我试图以不同的方式解决此问题,但结果证明手动实现该类更容易。事实证明,在Python中(即,我们团队的Python开发人员在这部分上工作),类似的类用作标准解决方案,但是在Java中,还有许多其他数据结构用于存储键值(HashMap等)。结果,我的Pair的代码可以修复所有问题,如下所示:

图20. Pair的实现。



修复错误后,我决定编写详细说明以通过控制台启动该应用程序。经过测试说明。我们给客户打电话并启动了该项目。这样,五个月后,客户就可以看到我们工作的成果。

图21.启动项目的最终说明。



该项目的初始版本位于github仓库中。

该项目的最终版本在我的github存储库中。



Maxim Kostin的报告

在研究了项目的所有需求之后,我们将任务分为三个主要部分。

我负责处理输入文件,并将其打包为方便的格式以进行进一步处理。在我看来,可以将图形视为完成此任务最明显,最方便的数据结构(我们将元素表示为顶点,以及它们之间的连接边)。

您可以以不同的方式实现图形,但是针对此问题,我选择了在列表上实现图形的选项(在邻接矩阵上实现图形将被完全消耗掉并消耗更多的内存,尽管在增加边缘操作时会绕过列表上的图形)。

最初计划处理使用Verilog语法编写的输入文件,但后来我们省略了此方面,并开始使用简化的输入数据格式。

我们还对元素的大小(由于考虑了黑客马拉松时间的限制)进行了许多简化(我们认为所有元素的大小相同),对元素的物理性质进行了彻底的简化(信号延迟,相邻小区的影响,能耗-对某些元素的影响)较厚的轨道等)。

通常,在图形本身的实现中没有严重错误,但是在分析文件的过程中,不小心引起​​了许多错误,例如,对于NOT元素,最初创建了两个输入(显然程序崩溃了)。

当与Michael的代码结合时(Mikhail参与了将图形元素放置在基板上并进行跟踪),还发生了许多次要错误(基板的尺寸指定不正确),但是总的来说,所有事情都是“迅速而轻松地”决定的。迈克尔写了一个很好的代码,这使他可以很快地接近目标。

但是,如果没有我们的团队索非亚,迈克尔和我不会成功。她并不害怕,并承担了最重要的部分-结果的可视化(没有这些,我们的项目几乎没有任何意义),她便完成了任务。

总的来说,在该项目的工作过程中,我学到了许多有关印刷电路板和SoC的创建方式以及其背后的算法和人员的新信息。我确信这项技能将来会对我有用,因为 我偶尔涉猎电子产品,有时收集各种原型。现在,我可以使用我们的程序来跟踪轨迹,并观察它在现实中的外观。



Michael Scheinberg的报告


我之所以选择这个项目,是因为它与我当时阅读的Eric Evans的“面向对象编程”一书中的示例相关。尽管可以展望未来,但我可以说我对DDD的知识以及从黑客马拉松书中给出的示例中获得的经验并没有得到认真的应用,但是我认为在黑客马拉松中获得的经验对我来说是有用且有趣的。

在研究了项目的所有需求之后,我们将任务分为三个主要部分。

我负责构建该方案,Maxim负责解析器的编写,而Sofia负责结果的可视化。

我们与团队和客户一起,选择了Floyd算法,以在电路上优化布线。为了存储构造的方案,使用了三维矩阵,其中垂直坐标是层数。与团队一起采用了一种简化方法-该方案的每个元素的大小为5x5单元,元素之间的空间为3个单元。可以接受的简化方式与黑客马拉松的时间有关(这是有限的),并且与黑客马拉松开始之前的空闲时间有关(在黑客马拉松伤口中,还需要进行大量的准备工作)。

在将我的工作结果与Maxim的工作结果相结合的过程中,由于时间有限而引起的匆忙和粗心,引起了许多烦人的问题,幸运的是,这些问题很快被发现并消除了。

另外,我想指出索非亚执行的可视化的质量。其部分工作无误,并为结果的翔实介绍提供了良好的材料。

总的来说,在该项目的工作过程中,我学到了许多新的有用的信息,这些信息是关于如何构造微电路的过程以及该领域中使用的算法的结构的,这些信息我将来可以应用。



附录A:来自莫斯科国立大学的Mikhail Shupletsov的反对意见(左图)

来自莫斯科国立大学的Mikhail Shupletsov团队赢得了享有声望的国际比赛IC-CAD 2015甚至连前美国驻俄罗斯大使Michael McFaul都收到了激动

从关于硅俄邮件列表的讨论中

: , . , :

1. http://iccad-contest.org
2. http://www.ispd.cc/?page=contests

( , ). , :

1. https://arxiv.org/pdf/1810.01078.pdf
2. https://github.com/jinwookjungs/datc_robust_design_flow

我认为举办竞赛以开发设计自动化算法的计划非常有用。我本人在管理参加此类比赛的团队方面有经验。我本人有兴趣参加此类比赛的组织者。

唯一让人不高兴的是,有关该活动在Innopolis的帖子在该活动的注册结束后出现。人们还怀疑Hackathon格式是否适合此类任务。只有在比赛进行了很长时间(至少6个月)后,才能在设计自动化问题上取得良好的结果。我认为,以提议的格式,只能运行现成的工具,而不能创建新的解决方案。

第二个:

!

. . , . , ( ) , .

, , .

. . , , EDA - . , EDA , ICCAD ISPD. , ( ). , ICCAD ISPD , , (http://www.mes-conference.ru/) , EDA.

,


附录B:索非亚·埃尔莫拉耶娃(Sofia Ermolaeva)关于如何再现结果的说明

Required:

    Maven
    Npm 

Clone repository

    git clone https://github.com/keepYourHairOn/HackathonProject.git 

In the repository folder:

    cd edap
    cd ASICdrawer
    npm install
    npm start 

In the browser open:

    localhost:8008 

In the new tab of the command line (because node should stay working).

To build new jar:

    cd edap
    mvn package
    Copy input.txt file from {repository folder}/edap/input.txt and paste a file into: edap/target 

To run the existing jar:

    cd target
    java -jar edap-1.0-SNAPSHOT.jar

参考文献

  1. 关于哈布雷(Habré)早先文章的问题陈述。

  2. 我们与学生一起起草的文件。

  3. Hackathons作为软件工程教育一部分的文章的预印本,由Innopolis University的Andrey Sadovykh,Maria Naumcheva,Mansur Khazeev撰写,工具示例中的CASE。

  4. Hackathons将PDF文章作为软件工程教育的一部分:Andrey Sadovykh,Maria Naumcheva,Mansur Khazeev,Innopolis University的Andrey Sadovykh,工具示例中的CASE。

  5. Hackathon的照片。



太阳落在硅谷上空,然后升到Innopolis上方,我在上面停止讲话。你怎么看?


All Articles