项目地址 | 论文链接

总结:

fault是基于Python的领域特定语言(DSL)。该语言是一个类似Chisel的硬件设计语言,但更关注优化验证。因为随着基于生成器的硬件设计逐渐复杂,需要验证的功能数量和复杂程度也随之增加,而验证组件必须与设计对应物一样灵活。Fault希望能开发一种更灵活的验证语言,来生成可移植的用于验证的组件。

介绍(翻译自论文 Intro):

计算机架构的新黄金时代依赖于设计和实现计算机辅助设计(CAD)工具的进步,这些工具可以提高生产力。虽然近年来硬件生成器变得更加强大,但验证工具的能力并没有以同样的步伐提升。本文介绍了一个名为fault的领域特定语言(DSL),旨在实现灵活且可移植的验证组件的构建,从而帮助发挥硬件生成器的全部潜力。

使用灵活的硬件生成器极大地提高了硬件设计过程的生产力,但同时也增加了验证成本。生成器是一个程序,它接受一组参数并生成一个硬件模块。随着生成器的功能增强,验证任务的范围也随之增加,因为更复杂的生成器可以生成具有不同接口和行为的硬件。为了降低获取生成器的功能覆盖的成本,验证组件必须与其设计对应物一样灵活。为了实现灵活性,硬件验证语言必须提供在硬件构建语言中发现的元编程设施。然而,仅有灵活性还不足以匹配生成器的强大功能;验证工具还必须能够构建可移植的组件。生成器促进了硬件库的开发,并促进了来自外部来源组件的集成。这些库的实用性在于其组件能够在多种环境中被重复使用。商业硬件验证工具的主导地位及其严格的许可要求在开发可移植验证组件方面提出了挑战。为了促进验证库的普及,硬件验证语言必须设计为在验证工具之间具有可移植性。设计为可移植性也将通过简化采用新技术来促进工具的创新,并基于统一接口支持多种技术的新验证方法。

本文介绍了fault,这是一个嵌入在Python中的领域特定语言(DSL),旨在实现灵活构建可移植验证组件。作为嵌入式DSL,fault用户可以利用Python丰富的元编程能力来描述验证组件。与magma(一种嵌入在Python中的硬件构建语言)的集成是fault的一个重要特性,它实现了对测试中的硬件电路的完全内省。通过使用分阶段的元编程架构,fault验证组件可以在各种开源和商业验证工具之间实现可移植性。这种架构的一个关键优势是能够为约束随机和形式化验证提供统一接口,使工程师可以在模拟和模型检查环境中重复使用相同的组件。fault目前被学术界和工业界团队积极使用,用于验证数字、混合信号和模拟设计,以供研究和生产芯片使用。本文通过评估不同应用程序的各种工具的运行时性能来展示fault的功能,这些应用程序的复杂程度从单个模块的单元测试到复杂设计的集成测试不等。这些实验利用了fault的可移植性,通过在每个目标工具的独立试验中重复使用相同的源输入。