软件是必要的吗?

硬件与软件既爱又恨,尤其是当涉及到系统级验证。当软件是必需的,当它妨碍吗?

受欢迎程度

硬件必须能够运行任何软件。虽然这可能是一个好口号芯片相对简单时,它就变成了一个不可能的验证任务处理soc包含几十个嵌入式处理器。当它成为必要的使用生产软件和能给你带来什么问题?

验证目标,如电力,它变得更加复杂电话调制解调器供应商发现几年前。其芯片出现过热问题在一个电话但是在对手的手机操作相当令人满意。这是一个缺陷的验证策略和可以避免的,或者是这种事件可能会变得更加常见吗?

一个关键问题是需要执行pre-silicon软件多少钱?“软件定义影响硬件,”拉塞尔·克莱恩指出,技术总监导师,西门子业务。“具体地说,软件驱动一系列交易到硬件。在任何给定的验证,这些交易将是重要的,但很多都是多余的。”

关键是工作出可以忽略。

类型的软件
并不是所有的软件都是平等的。“一切都依赖于软件、固件或中间件”鲁珀特•贝恩斯说,首席执行官UltraSoC。“几乎总是软件将运行在多个设备,通常设备不同的架构或交互非常困难,复杂的,不可预知的方式。”

但也有其他方法来看看软件提供的功能。“应用层软件指导交通系统在一个较高的水平,比如RTOS-based应用软件,”戈登·艾伦说产品经理在导师。“在最低水平,如DSP编解码器的管道,还真没有什么可没有这个软件。然后有一个中级,我叫结构软件固有的操作。没有什么也没有发生,软件,很难替换为不同的表示形式,因为它在本质上不是算法。它更像是发生在软件实现的逻辑。”

克莱因说这个中级水平的一些示例。“有一般处理器电源管理、安全处理器,和各种其他深深SoC嵌入式处理器。这些处理器无法访问设备的最终用户。任何软件开发人员编写运行在他们的SoC,需要包含在任何重要的系统级仿真。”

系统级模拟与一些软件是非常必要的。“促进硬件/软件co-validation,两个重要成分是必要的,”罗兰Jancke说我们部门主管设计方法弗劳恩霍夫东亚峰会。“首先,我们需要一个系统及其组件的抽象表示的复杂性已经足够快了。然后我们需要一个语言,支持软件以及硬件组件的描述这两种观点都在一个仿真模型。”

软件多少钱?
所需的软件取决于验证任务。“我们在寻找bugRTL或者我们验证固件吗?”艾伦问道。“我们验证两个复用的集成块吗?我们验证的某些方面吗权力吗?只要我们问这些问题和知道的可能性构造一个验证的解决方案,我们可以创建一个优化的系统。当我们模糊的边缘,我们突然验证一个完整的堆栈的应用软件,我们需要购买更多模拟器。”

和你不能避免固件的验证。“我们有很好的工具在硬件,它变得非常罕见的芯片失败,因为布线或逻辑问题,”贝恩斯说。“然而,越来越我们听到产品三个,六个月或9个月迟到因为固件的问题。”

但固件可以改变。这是否意味着我们必须重做所有的相关验证?也许不是,但你必须有信心在较低的水平,这意味着我们不能忘记一个坚实的层次化验证基础。

“我们可以开始模拟,仿真和得到很多的信心较低的层,”贝恩斯说。“然后我们可以移动的水平抽象和停止思考绝对时间和信号和竞争条件,并开始思考交易和系统级而进入模拟原型设计。它成为可行的运行一个完整的软件堆栈的不是真正的以野蛮的速度。但这是真正的软件,给你一个巨大的头开始验证和调试过程。因为它不是实时的,这意味着会有很多问题,你看不见你自己,但你得到很多的信心。”

有些时候你可以完全摆脱软件和处理器。“我们必须问一个问题,我怎么能确认尽可能便宜吗?”艾伦说。“如果这意味着交换的处理器的验证,并代之以BFM-or取代UVMtestbench从被捕的丢失高级合成(HLS)流动又应该做些什么。便宜的,我的意思是在最短的时间内获得最好的质量最少的资源和虫子逃离的机会,而冲击市场窗口。”

算法验证
艾伦的分类后,有三种类型的software-algorithmic,结构和应用程序。为每个不同的策略。“算法部分,如DSP编解码器的软件,是一个有趣的类别,因为有与之关联的流程和工具。这些让你开发高级算法,验证他们的行为,然后在RTL的地图。”

但首先你必须验证,软件将执行的基础设施。“在单元测试级别,它可能是不受欢迎的带来实际的处理器、内存和程序,”克莱恩说。“很难执行流处理器的指令驱动一组精确定时的交易在一辆公共汽车。这是需要很多块级别的验证,所以巴士做交易的人通常是一个更合适的工具在验证周期的早期。”

这使得详尽的验证的概念。”也就是说,软件总是错过的练习验证角落即使是最严格的验证方法,”克莱恩警告说。”过去的项目单位和子系统层面,越来越多的软件应该纳入混合和现实的用例应该行使。”

在这一级别上执行验证的另一种方法是新发布的便携式刺激标准(PSS)。而不是运行生产软件,它可以生成任意软件来执行验证。“编解码器是能做一个解码,”拉里悟道说,产品管理和营销主管节奏。“解码操作需要这些输入和产生该输出和它需要利用这些资源。你在PSS描述这种行为。当你去生成测试,这一行动的执行可以通过一个空心的环境,这是一个序列的事务放在那辆车代表编解码器的事务,或者它可能是一个实际的软件会被加载到处理器。能够有多个表示的抽象行为允许您生成一个测试可以执行相同的功能在不同的抽象级别(空心,或与核心)。”

这种类型的验证时的另一个例子嵌入式FPGA资源是礼物。首先,织物必须验证。那么应用程序被加载到结构验证。“一旦我们已经验证了面料,我们几乎想看过去面料好像不存在了,”艾伦说。“唯一重要的是预期的逻辑,这样我们可以验证真正的问题。”

董事总经理Yoan Dupret薄荷对此表示赞同。“RTL的验证应用程序是一样的标准流RTL验证。当他们想要验证的应用程序运行在eFPGA他们可以运行优先形式验证工具的eFPGA比特流配置和比较原始RTL应用程序。这些应用程序测试是没有正式确保任何应用程序,但它确实是一个强制性的一步,我们可以降低风险,我们可以通过增加数量的测试。”

图1 -删除需要验证应用程序的核心。来源:薄荷。

同样当使用高级合成(HLS)。如果输出的工具已被正式确认相当于输入,它可用于大多数验证。

SystemC是经常用于驱动HLS的语言,它有其他好处时系统验证。“SystemC特别适合这些要求,因为它可以接近硬件的特定部分需要bit-true建模,或甚至可能占模拟传输损失或阻抗失配自动对盘及成交系统扩展,”弗劳恩霍夫的Jancke解释道。”与此同时,它是抽象足以满足总线之间的通信处理器、记忆和接口使用TLM(事务级建模)的抽象。此外,SystemC可以无缝集成固件已经用C或c++编写的。”

然而,有一个方面的编解码器或eFPGA确实需要仔细验证。”其内容可以改变在任意时刻,从功能的角度来看,一个模式的变化,”贝恩斯警告说。“你担心时间——当你重新编程。它可以有一个过渡期,你必须确保事情转好。”

做错了,这可以创建问题。“会有一些机制来改变这些算法的行为根据一些配置,甚至交换在不同的固件上运行这些编解码器,”艾伦说。“有人来验证配置的广度空间和配置改变的机制。PSS能有作用。”

你可能会倾向于认为,神经网络将属于这一类,。“fpga表现好,好理解,程序和发展范式是不错,”贝恩斯说。“但是当你进入美国有线电视新闻网,深度学习权重,前景难测。没人理解他们如何表现,如何调试,如何建模他们。”

结构和集成验证
当多个模块集成在一起,验证的概念改变。“介于两者之间块验证和SoC验证,您需要确保SoC连接正确,基本功能块之间的传播运作correctly-essentially确保系统基础设施的行为预期,”戴夫Kelf说CMOBreker验证系统。“的例子包括缓存一致性、电源域转换,和处理器和专用模块互动。”

验证的焦点变化。“你不感兴趣的执行周期编解码器,更感兴趣的编解码器是否爆破数据存储在这辆公共汽车上,当你做其他事情,“悟道说。“我的子系统会继续工作吗?它是一个垂直的重用问题,在这个阶段集成你不感兴趣消耗一堆仿真周期在一个处理器执行软件,和执行更感兴趣流量代表这些行为。”

这意味着您可以替换处理器和执行主机代码执行。

“一旦你进入的抽象级别,重用的前提工作,“继续悟道。“功能维护本身移动通过集成的水平。它只休息当你把验证的目标。”

应用程序验证
一直持续到整个SoC集成组装。大多数设备将有一个或多个应用程序处理器,这是最终用户软件可能会被加载。现在验证策略的变化,因为SoC开发人员可能无法获得真正的应用软件。

这可能意味着,他们必须猜软件可能是什么样子。“苹果和三星可以验证手机应用程序处理器没有运行‘愤怒的小鸟’,”克莱恩说。“这快乐的情况下对来自应用软件是独立于操作系统和底层硬件的驱动程序。”

但是正如上面提到的,手机调制解调器芯片已经取消产品,因为热的问题。“今天有一个不断增长的推动力量分析使用真实的工作负载,“Preeti Gupta说,产品管理主管有限元分析软件。”看来,现代供应商做的不错看的工作负载和一些真正的用例,但也许一个手机厂商把芯片放在特定的交通模式,创建了一个热的问题,而其他手机没有暴露。从技术的角度来看,做真正的用例场景的好处是显而易见的。他们暴露真正的数据流量。”

其他人也同意。“每当有一个硬件和软件之间的交互,您真的需要了解他们在现实交互硅,和你需要监控系统建成的,”贝恩斯说。“它必须能够看在两个维度。首先,它需要能够在芯片看所有不同的部分,因为子系统可以互动。那么它需要能够从上到下看,有一个愿景,理解从硬件事务和延迟,延迟、带宽、吞吐量,直到发生了什么在应用程序层软件。当在芯片上运行的应用程序更新,它影响多少钱?我该怎样监控和测试它是否正常工作?”

真正的和人为的用例之间的辩论正在进行。”仍是一个需要专门的交通模式,”Frank Schirrmeister说高级集团产品管理和营销主管节奏。“你可以执行软件,但是将代表任何角落的情况下,你有兴趣吗?可能不会。它可能提供典型案例,但不是角落病例。你试图捕捉典型交通。但你并不总是要执行实际的软件,也可能不会重现。让系统回到相同的状态并不总是那么容易。作为一种替代方法可以获取交通模式的特点和申请核查。”

即使真正的软件,生成场景。“真正的挑战是如何生成用例场景和你产生多少?”Gupta问道。“当你做了足够了吗?他们往往需要很长时间才能产生,他们吃了大量的磁盘空间和下游工具,会消耗他们呢?”

它也需要计划。“验证与实际软件意味着你已经实际发生的项目计划,和一组可能不愿高度灵活和morphable开发软件,”艾伦说。“他们想完成他们的工作和交付项目。如果你可配置和可编程设计的元素引入到方程,这个版本的产品或一个未来的家庭,那么你必须考虑。PSS帮助,因为它可以超越的序列化一个并行实现的软件,我们可以认为。它让我们把所有的软件可以做硬件和列举那些利用PSS方法。然后让这个工具去野生创造刺激,找到角落,交叉覆盖,在其他方面和其他接口。”

PSS也适用于一个中间的解决方案。”这方面的一个例子是硬件软件界面(HSI),它提供了一系列的系统服务,帮助早期SoC验证平台,“Kelf说。“使用HSI内存分配以类似的方式开车到最后的操作系统允许将测试书面练习编解码器的阅读和写作没有整个操作系统的处理器子系统。一旦测试这个函数,结合其他方面的基础设施,实现一定程度的信心,SoC将操作正确和完整的系统软件。在这个层次上,一系列的场景可能有效验证。”

结论
创造更大、更复杂的系统带来了一个新的焦点系统级验证和与软件交叉在一起。“我们可以验证系统没有软件吗?”艾伦问道。“绝对,事实上我们必须。在某些情况下,我们必须从方程中删除软件,因为我们不是验证软件,我们验证了别的东西。在其他情况下,我们必须的软件,因为我们是验证软件或固件的API之间的集成和硬件。这是必须,而不是可以的问题。”



留下一个回复


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

Baidu