使用敏捷方法的硬件

曾经工作在设计和验证不再适用。敏捷开发方法是一个起点。

受欢迎程度

敏捷方法由硬件团队软件变得更加深入的研究这些天,因为曾经在SoC设计和验证工作不工作与不断增长的复杂性。

开发过程需要不断进化来决定如何更有效率,提供更高质量、降低成本的发展,以及如何第一次就把事情做对。的支持者“敏捷”,起源于软件的开发方法,声称它的一些关键概念是前进的方向。

哈里·福斯特首席科学家验证导师图形相信敏捷开发方法的基本原理,并表示这有助于从历史的角度来看。“如果你回到70年代和80年代,有很多大的项目,尤其是很多mil /航空项目,比如卫星炸毁。政府已经厌倦了,并决定也许他们应该考虑这一点。有很多真正重量级的软件开发中所建立的模型,经典的一个瀑布,“V”发展模式。这些连续的发展模式,通常遵循经典的流的需求,建筑设计,编码,测试和维护。这些模型制造出来的建筑的起源,但关键的区别是,——这就是软件社区开始遇到问题——通常要求很严格。他们是很好的理解了。”

软件开发人员抱怨说,需求并不总是足够清晰。“很多软件社区意识到他们向客户交付软件不满足顾客想要什么,”福斯特说。这些顺序过程“问题在于,他们非常严格,重量级过程的软件社区意识到他们无法负担得起,他们会向客户交付软件,不得不回去,遍历一个沉重的过程花费的时间太长,和他们不满意的客户。动机是将一些轻量级,允许需求发展的同时发展。很有道理,他们试图解决的问题。”

今天我们要问的问题,他说,是半导体设计行业是否有相同类型的问题,以及是否有可能将这些开发方法应用于硬件。“不,不是从一个纯粹的观点。也就是说,我们有同样的问题在硬件和有很多我们可以学习和杠杆。今天正在使用的有很多。敏捷开发过程中,你不断地创造产品和交付,通过迭代循环。我们不能用硬件。你可能会说,虽然你不能带出一个芯片,我们可以提供一个模型。同时,有不同的硬件和软件:今天SoC发展,很多SoC由IPs,这些IPs和固定和僵化,和需求的理解。如果你是这样的迭代,你不会有时间与模型与软件开发迭代像。”

硬件与软件
首席执行官Anupam问题Agnisys认为,我们这样一个抽象层次,发展中硬件现在是软件开发中一个练习。“敏捷宣言,因为它适用于软件开发可能不完全适用。例如,第一个值,“个体和交互流程和工具,”不应。与软件开发需要只是一个编译器,硬件开发依赖于大量的EDA工具。”

然而,他指出,“第四届敏捷方法的价值,“响应变化胜过遵循计划,”这似乎不是适用于硬件开发由于asic是一成不变的,不能经常修改。然而,设计师可以依赖配置寄存器的ASIC可配置将使ASIC免疫和高度适应性的变化。”

敏捷(小写字母“a”)为硬件是有用和高效的开发方法只要重点是经常生产的产品,不断与客户沟通/团队成员之间,和灵活性需求变更下,问题补充道。

同时,Wingard,首席技术官超音速指出在思考什么硬件团队可以从敏捷和适用于他们的设计,“我们的工作从一个关键芯片设计和软件之间的区别,这是我们有这个东西叫面具集。“敏捷掩模组”的概念并不工作。”

但它在其他领域工作,他说。在敏捷的概念之一是sprint的想法,这是识别一组关键目标和努力尽快达到这些目标可能想了解的东西的过程。“这是不同于芯片开发活动的传统模式,因为敏捷的目标往往不会接近完成。这个想法是你想做和探索同时非常不同于更传统的瀑布式方法练习。瀑布式方法有很多优点,但它有很多历史,来自于我们的思维方式的层芯片设计。在某种程度上我们最终用面具数据库,通常在GDS II,之前,我们的初步版本,数据库,必须经过电气规则检查,和设计规则检查,布局和示意图,等价性检查。然后你工作回来,你有整个地方和路线。上面你有逻辑合成和测试插入。备份,你有一个集成级别,你把组件放在一起,和备份,您已经完成了逻辑设计、混合信号组件的设计,所有的这些事情。备份,最后你有此体系结构中,这些想法,这些算法,你要投入硬件。”

瀑布方法可以以做所有这些任务作为离散步骤,和Wingard指出有知觉的成本做下一步的不完全信息前一步是如此之高,以至于不值得做的事情,这是完全正交敏捷教什么软件。

”软件,敏捷教做一点去你需要去的那么深,但试图完成这一部分,希望关注这一部分,也许你最担心的,还是在那一部分你认为可能有最大的影响,”他说。”是的,你只是工作的一部分的功能你要构建的总功能,所以你必须要很多关注接口之类的东西,你将会有很多关注建立连同它的测试套件帮助你证明自己,即使你只实现功能的一部分,你知道这个函数是正确的。事实上,在很多的敏捷方法,他们先写测试,然后他们试图实现的软件功能,在测试工具。而不是写一个规范,测试规范。一些真正有趣的方面有一些直接在硬件设计类比。”

一些敏捷采纳
虽然采用缓慢,有越来越多的证据表明,硬件工程团队采用敏捷思想。

Wingard回忆说,当工程团队内部讨论的里程碑在芯片设计十年前,有一个第一次编译的顶层。然后他开始听到编译为零。“这是对象在顶层,在第一次编译之前存在。这是什么意思?这意味着他们是故意使用不完整的信息,不仅仅是未完成的,而是故意不完全因为他们想尝试做第一芯片的平面布置图。他们想做一些其他类型的设计规划。他们想要开始测试基础设施用于组装芯片。他们想要看一些东西时钟分区或权力分区或DFT很久以前他们的街区甚至50%通过设计过程。对我来说,这是一个敏捷或左移位的方法,但仍然很重。”

额外的工具来帮助设计师更容易处理不完全信息是相当特别的,在这一点上,但是是非常必要的。

另一个可以使用更多的帮助在便携式testbenches领域,他说,这样的团队希望采用敏捷方法,摆脱手写的规格在字(词),并试图使用测试工具作为规范,“我最好能够轻松,自动端口测试工具在不同的环境中。”

今天敏捷概念被应用的另一个领域是仿真和FPGA原型之间观察到的弗兰克•Schirrmeister集团高级主管、产品管理系统和验证小组节奏。“我们有相同的编译器,你可以在一个非常敏捷,前进和使用不同的功能和发展当你的RTL不太成熟。你仍然使用模拟。一旦你的RTL更成熟的软件开发需要很高的速度,你切换到验证。”

定义敏捷
首席顾问尼尔·约翰逊XtremeEDA,宣称敏捷是一个很大的词,可以包括很多不同的东西。“人们通常与敏捷开发是持续部署或增量开发。假设如果你构建软件,你有一个增量开发过程,在每个增量实际上最终部署的产品。如果是部署到Web上,或部署到任何地方,有这个想法,在软件渐进主义是很容易的,这就是为什么它可以逐步逐步开发和部署的。对硬件开发人员的一个绊脚石,与其说fpga,但显然对asic渐进主义的概念并不完全符合得很好。”

当人们谈论敏捷开发,他说他喜欢控制事情一点,建议有更多的敏捷开发不仅仅是增量开发的概念和增量部署。“有特定的技术实践和测试驱动的开发(TDD)一样,这是非常适用的。当你看单独技术实践,TDD是非常适用的。建立跨职能团队的想法——这可能是更有价值的SoC团队比一个软件团队。你不能认为,团队成员之间同步软件开发中更容易或更有价值。我认为它更硬件开发的关键。建立一个共享工作空间的想法不是硬件开发人员通常与敏捷开发。但简单的概念像我在身旁和我一起工作的人,我直接问他们问题,而不是航运电子邮件或提交错误报告,或者仅仅是敏捷团队内的沟通方式,是不同的。这不是人们一定将首先与敏捷开发。”

如果敏捷开发是看整个事情,最终以增量部署整个方法,很可能将是一个很难卖。“但如果我们分手,如果我们看看的想法或增量部署的理想,看到我们如何损坏,以适应技术还有看一些团队的其他实践正如价值比增量部署或更有价值,因为并不是所有的敏捷软件开发团队部署逐步但他们中的许多人有一个共享工作空间,他们中的许多人已经接受了零缺陷的想法,”约翰逊说。“他们已经接受实践像测试驱动开发,结对编程,这些类型的东西。更容易看一次敏捷开发一种技术,然后把它们放在一起到我们自己的方法而不是假设别人的方法。”

什么是阻碍敏捷?硬件工程师正在非常小心或深思熟虑的决策,他继续说。“我们不想接受新的想法,因为我们想要记录。但是如果我们看看我们现在的记录,我是一个验证工程师,如果我看约束随机验证记录或UVM记录,我看那大量的怀疑。真的,我们要做的就是坚持我们习惯的事情。例如,我们认为的理想约束随机验证属实,但沮丧的数量,计划超支,缺陷率,所有这些表明我们,而不是关键新技术,因为他们没有记录。”



11日评论

拉尔斯莉莲 说:

找出适合您和您的团队是所有团队(HW和SW)必须要做的事情。通常这不是一个非此即彼的问题。我不使用结对编程的所有时间,但寻求帮助当工作在一个复杂的代码。开发人员将单元测试自己的代码,但如果他们先编写测试用例(使用TDD)归结为个人喜好。个体和交互过程和工具。

不过,工具是重要的,一个重要的组件的单元测试框架,使短代码/测试周期和持续交付。几乎每个有开源框架SW语言你能想到的https://en.wikipedia.org/wiki/List_of_unit_testing_frameworks高密度脂蛋白),但直到最近都没有。这已经改变,今天你有VUnit,http://vunit.github.ioSVUnit,http://www.agilesoc.com/open-source-projects/svunit支持硬件描述语言(VHDL)和SystemVerilog。所以没有什么是阻止你采取更灵活的工作方式,尤其是在处理FPGA开发。

Lars莉莲VUnit用户和开发人员。

凯文 说:

可能与合并的设计流程,更好的工作

http://parallel.cc

RTL传递它的保质期,SV和硬件描述语言(VHDL)仍然不正常工作对HW设计(IMO)。

拉尔斯莉莲 说:

关键是短代码/测试周期开始的开发人员。实现单元测试完成的产品代码相同的语言。在另一种语言倾向于创建“特殊技能”由其他人在其他团队和编码/测试周期短。这就是为什么维基百科列表太长。每种语言都有至少一个框架。如果ParCC未来比单元测试必须完成(ParC) C。

凯文 说:

帕洛阿尔托研究中心是一个最低限度扩展c++,所以它被重用c++工具和方法(如c++是建立在C)。

凯文 说:

敏捷宣言的快速阅读

http://www.agilemanifesto.org/

——告诉你,集成电路设计和软件的谎言——之间的不匹配

ICs需要良好的规范和文档。
集成电路设计是严重依赖过程和工具。

会做很多更快,当然,但“敏捷”不是去工作,除非整个生态系统是“敏捷”。

nosnhojn 说:

具有讽刺意味的是,在宣言之前,软件也需要好的规格和是严重依赖的过程和工具。人们发现规格/工具没有必要的沟通和工作软件。

凯文 说:

软件通常比硬件更加灵活的需求,在开源领域的代码文档是不那么重要。得到一个新的软件版本通常是几小时内与新/月/年respun IC。

nosnhojn 说:

硬件需求是公司直到我们被迫改变/丢弃它们。个月/年曾经是正常的新的软件版本,直到它成为小时/天。

我并不是说我们可以敏捷sw团队可以以完全相同的方式,但我们承认硬件过程是这是因为我们的思维方式/使它这样。它可以是其他的东西。

凯文 说:

如果其中一个晶圆厂决定做自己的CAD流在云中,我认为我们可以到达那里,但是当前的产业结构不适合敏捷。

卡尔·史蒂文斯 说:

.Kev:“
集成电路设计是严重依赖过程和工具。“物理设计?是的。在功能设计
有很多改进的空间。在我多年
我们做逻辑设计。这是是一个迭代的过程,是从总需求,框图,可能一个流程图(图)。我真的希望一个方式来定义模块和功能锻炼将它们绑定在一起总机器即使只有原始数据和预期结果是可用的。
现在我退休我找到它了。并指出本文有很多IP集成。各级OOP让我定义类的细节和编译器的繁重工作建设和连接的对象可以是一个混合的HW和西南。然后调试断点,单步,显示变量值在监视窗口或弹出文本块。
唯一的问题是它是一个免费的微软产品,并不在Linux上运行命令行和TCL脚本。
你注意到同样的几个讨论敏捷,但这HW设计师们成群结队地离开?

卡尔 说:

问题说:“然而,设计师可以依赖配置寄存器的ASIC可配置将使ASIC免疫和高度适应性的变化。”
有一个久经考验的方法,为几代的IBM大型机和工作可以就像一个FPGA实现。微码和嵌入式内存块的速度可以同时访问,可以创建一个灵活的高性能芯片。
而不是使用FPGA来模拟高密度脂蛋白,逻辑可以被加载,在FPGA上运行。
最终的结果将是一个通用高速芯片。高水平语言赋值、循环和条件语句解析和容易制成微码。
灵活性是改变当我们开始的答案吗?
PS不,我不期望任何接受者。

留下一个回复


(注意:这个名字会显示公开)

Baidu