专家在餐桌上,第2部分:在一个IP集成世界,定义虚拟样机验证流和兼容。
几年前,高水平的合成(HLS)可能是谈论最多的新兴技术,是新一的核心电子系统级(ESL)流。今天,我们听到更少在这一领域所取得的进步。半导体工程和布莱恩·鲍耶坐下来讨论这个,工程主管高水平的设计和验证导师,西门子业务;戴夫Kelf,负责营销的副总裁OneSpin解决方案;产品经理和戴夫Pursley HLS节奏。第一部分可以被发现在这里。以下是摘录对话。
SE:出现HLS期间,知识产权重用和集成成为一个非常受欢迎的方法。是什么改变芯片的体系结构和影响HLS吗?不是IP集成一个最大的压力?
鲍耶高级合成:标准接口是非常好的,因为一个工具可以得到正确的接口。只要你保持与标准接口,你拿走很多RTL集成的问题。如果你用C代码,没有公共汽车,你可以看看它的功能,然后你告诉HLS通信在AXI之类的工具。它减轻了很多集成验证工作和调试工作。你还是会验证它,但它已经变得简单得多。你应该消除整个类的系统级错误。
Pursley:我们也看到了一些地方,特别是在汽车,他们看着整个芯片级互连。“它更有意义在互连延迟如果它提高了服务质量,还是更有意义的IP块吗?你可以做这样的权衡,是不可能在传统的RTL设计流程和集成。
Kelf功能:财产规范允许您测试这些事情在一个更高的水平。现在你有一个规范,您可以编写一个属性的基础上,找出如果设计可以匹配属性没有进入界面的细节。所以你做更多的验证这一水平再分解。这些都是优势抽象。
SE: HLS首次引入时,采用验证是一个障碍。我们今天在哪里?
Kelf:我们是好得多。模拟仍然是支柱,都得到了极大的改进。的使用OSCI开源实现已经被主流仿真,和客户已接受。真实的仿真与调试运行意味着你必须使用一个完全支持商业模拟器。当你层形式验证最重要的是,有很多事情你可以做。我们还发现新事物我们可以做在算法层面。例如,测试数字系统的精度。你做不到这一点在RT级别,但正式可以很容易做。通过分层正式我们可以消除一些问题,然后添加新的应用程序和属性在规范层面,之前是不可能做到的。有不同的人在做验证SystemC水平与RTL相比。RTL去验证UVM团队,但在SystemC你看到更多的建筑师和算法的专家做验证。可能会改变随着时间的推移UVM家伙移动和做更多的系统级验证。
鲍耶:我们看到人们引入该算法硬件验证过程。如果你看看5 g或开放的媒体AV1,标准的发展是通过建筑硬件,而您正在开发的标准。很多的变化验证是你让更多的人在同一时间。我们已经完成的基础。有正式的,有报道,有产品毛羽,有仿真,我们能够制定方法和如何连接,RTL验证。现在是在的地方,你可以进入C世界,说我将我和硬件开发前将设计硬件和算法在同一时间。我们将看到如何使用5克。这是今天在开发世界最大的事情。
Pursley:有一次,验证了远离HLS流。情况已不再是这样。通过方法,我们启用了团队使用他们验证整个流动资产。用你HLS SystemC可以模拟功能。在C,这是可以做到的。然后你把它下来,模拟互连和估计延迟。然后你可以做实际的RTL。所以你分离三阶段算法,协议准确,然后完全的硬件。有一个很好的方法,你可以结构验证流在正确的时间正确的问题。如果你只是去的RTL不起作用,你必须查看功能,接口,时机,就太难了。
Kelf:转向C水平是相当重要的。
鲍耶:知道你的算法在开始之前协议验证是非常宝贵的。
Kelf:并没有什么奇怪的SystemC代码,没有人发现没有任何未初始化状态可以在RTL泄漏,是一场噩梦。这些问题消失。
SE:有很多困惑虚拟样机(VP)和HLS模型。他们没有相同的模型和导致的问题?
鲍耶:我不认为这困惑硬件设计团队。它混淆了虚拟样机的团队。但在硬件设计团队,他们没有使用虚拟原型,我不知道如果他们打算使用它们。这是市场混乱。硬件团队使用硬件模型,抽象模型,和虚拟原型设计团队有时甚至不使用真正的算法。他们只是交通生成器。试图把它们混淆,我们现在知道,他们应该保持分开。
Kelf:SystemC应该是能够被用于一切,但是改变是,我们不再谈论SystemC。HLS流和我们谈论的是一个算法实现流程和软件虚拟样机,他们是独立的事情。如果我们能有一个模型的算法和寄存器的配置,可以塞到快速的虚拟样机模型的处理器,这将是了不起的。但是这个副总裁需要的性能,当你坚持到模型的详细程度失去性能。我不认为我们会看到一个成熟的HLS模型被用于一个原型。
鲍耶也许在未来的语言。
Kelf我们可以解决所有问题在接下来的标准。
Pursley:这是如何被用于共同的语言。synthesizable子集,很显然,这是不一样的。
SE:你如何证明一个HLS工具生成的RTL相同的功能作为输入模型?我们信任的质量工具吗?
鲍耶:它并没有消失,但我们已经能够想出方法,说这里是如何证明SystemC和RTL相同或更重要的是,RTL是正确的。即使机器生成的,你可以有一组测试运行在RTL的SystemC,可以重新运行,你会得到100%的覆盖率,你有正式的支持,等等。它不是一个新的技术,公司成熟的方法。
Kelf:我们知道从RTL门水平是一个相当明确的映射,至少在一个ASIC。SystemC RTL,你插入管道,使时间变化——这是一个难以解决的问题。关键是建立SystemC水平之间的一致性和RTL虽然跨越边界的语言,如果我们做事情,比如使用SystemVerilog断言在RTL和SystemC级别,然后正式评估SystemC水平得到良好的覆盖,然后使用相同的断言RTL表示你很长一段路沿着你所需要的证明。我们称之为设计一致性检查。问题没有完全解决,但它肯定是走得更远。人们也相信合成工具,他们信任验证提供最后的检查。
Pursley:类似于所变化的虚拟样机上,它已经被更广泛地使用,他们信任验证流,现在有一个了解。可以从RTL的算法,证明了算法并没有改变?是的,这在理论上是可能的。但是你也添加流水线和改变时间和这些东西意味着你必须做周期精确的验证点,以确保它与系统的其余部分一起工作。一旦他们意识到这一点,他们也意识到相等是不一样的RTL门和不移除需要做验证。RTL是一个更好的办法,但它不删除RTL。你还需要做一些验证,尤其是在集成。
留下一个回复