论文部分内容阅读
随着设计复杂度的增加和产品上市时间的缩短,功能验证已经成为IC设计流程中真正的瓶颈所在[1],验证已经占到芯片开发周期70﹪左右的时间。问题是,工程师始终不知道是否验证已经完备,不知道如何更好的去验证,没有明确的指南,而芯片中一个细小的错误,其损失对公司往往是不可估量的。因此人们迫切需要寻找新的方法,加速功能验证的进度,同时保证验证的质量。
本论文属于EDA工具范畴,主要是开发有效的功能验证工具,使验证过程实现高度的自动化,减少开发时间和提高验证水平。
建立了一套验证语言的自动转化模板。这个模板适用于一些通常的编程模式。以I2C的BFM为例,根据时序图和寄存器配置信息建立一个中间模型(事件模型和编程模型),这个中间模型由伪代码写成。通过它和脚本自动产生不同验证语言的BFM。通过该模板可以实现不同验证语言之间的转化。根据工程师的需要,充分利用各种验证语言的优点。为了转化模板的建立,分析并比较了几种常用的验证语言,它们包括OpenVera,SystemC,PSL,和VerilogHDL,SystemVerilog,比较结果在转化模板作用下生成具体的测试向量。
从I2C文档中分析其结构,进行I2C接口RTL级设计,对功能属性进行分析,写出待验证功能的伪代码,通过自动转化模版生成测试向量,进行功能验证,产生自动化的验证数据流,分析功能覆盖率,时间消耗等性能,验证各种语言的特点。综合后,进行门级仿真与RTL级仿真相等性比较。
鉴于验证语言自动转化模板只能处理一些特别的公用模块。而目前业界SOC级别许多芯片设计已达到几千万门,所以我们有必要研制工具解决功能验证测试向量的自动产生问题。第一步,我们从设计文档中的时序图和寄存器配置信息自动化的生成FSM(有限状态机)。第二步,采用PKUSZ057算法实现有限状态机完全遍历,介绍该领域主要的算法,各自的功能,特性,优点和不足之处。与传统算法比较,我们的算法的优势所在,表现在自动化的产生测试向量数据流,高覆盖率,明确指导进一步验证的方向。
设计UART,行为级设计和RTL级设计。利用我们开发的算法,自动产生测试向量的标记序列,调用数据库信息,生成实际的测试向量,进行功能验证。为了系统级验证的需要,考虑利用软硬件协同验证方法,在ARM7蓝牙系统芯片上进行验证,实现数据在处理器和存储器之间经过UART接口自由传输。