本发明属于ic(集成电路)验证技术,具体涉及一种基于生产验证组件和消费验证组件的验证方法。
背景技术:
随着fpga和数字ic技术的发展,验证的复杂度已经明显地超过了设计。为了处理复杂度,面向对象,设计模式,软件架构等软件设计的思想逐渐渗透到了硬件设计领域。vmm和uvm是这一领域的领导者。但是,由于vmm和uvm思想体系过于庞大,使得验证人员难以运用其思想快速完成现实工程中的验证任务。本发明借鉴web信息系统的架构理论,抽象出了一种验证架构极其验证方法,可以简单快速地完成现实工程中的验证任务。现实中的fpga和数字ic器件,都是进行信息的传输或转换,实现其功能的设计在验证领域中叫dut(待测设计)。现实中信息涉及的客体为信息生产者和信息消费者。信息生产者产生信息,通过媒介或通道传递给信息消费者。这样验证的任务就是演示生产者产生信息,通过dut(待测设计,这里可等价为通道),正确地到达信息消费者。基此,我们构造一个生产验证组件、一个消费验证组件和相应的输入输出接口,采用systemverilog语言搭建验证平台,就可以快速简单地实现dut(待测设计)验证。
技术实现要素:
本发明要解决的技术问题在于,提出一种基于生产验证组件和消费验证组件的验证方法,可以简单快速地搭建验证平台,完成现实工程中的验证任务。
为解决上述问题本发明技术方案提供一种基于生产验证组件和消费验证组件的验证方法,包括生产验证组件(1),消费验证组件(2),待测设计(3),测试平台(4),具体步骤包括:
步骤1,生产验证组件(1)将信息通过输入接口(5)输入到待测设计(3)中;
步骤2,待测设计(3)将信息通过输出接口(6)传输至消费验证组件(2);
步骤3,生产验证组件(1)与消费验证组件(2)均将信息发送至测试平台(4);
步骤4,所述测试平台对生产验证组件(1)和消费验证组件(2)发送的信息进行比对验证。
生产验证组件(1)内部包含事务信息产生对象(7),驱动对象(8),所述步骤1包括:事务信息产生对象(7)产生信息传输到驱动对象(8),驱动对象(8)组装信息,通过父成员变量方式将信息传输到输入接口(5);所述步骤3包括:驱动对象(7)构造一个期望信息,通过成回调方式将信息传输到测试平台(4)。
消费验证组件(2)内部包含信息监视对象(9),所述步骤2包括:信息监视对象(9)通过父成员变量方式从输出接口(6)接收信息;所述步骤3包括信息监视对象(9)通过成回调方式将信息传输到测试平台(4)。
本发明具有的优点和有益效果:本发明使得复杂的验证过程变得简单化,减少了验证时间。
附图说明
下面结合附图对本发明的具体实施方式做进一步详细的说明,其中:
图1是基于生产验证组件和消费验证组件的验证方法的架构示意图。
具体实施方式
首先了解分析待测设计(dut)的输入和输出端口。
之后按本发明搭建的验证系统具体操作步骤如下:
1)创建生产验证组件(producervc):
编写一个生产验证组件的对象类producer_vc,内含一个事务信息产生对象gen和一个驱动对象drv。在producer_vc类中,定义一个输入接口型的变量,编写build()和run()函数,在build()函数中生成gen和drv对象实例。在run()函数中调用gen和drv的run()函数。
2)创建消费验证组件(consumervc):
编写一个消费验证组件的对象类consumer_vc,内含一个信息监视对象(mon)。在consumer_vc类中,定义一个输出接口型的变量,编写build()和run()函数,在build()函数中生mon对象实例。在run()函数中调用mon的run()函数。
3)创建输入接口(in)
根据待测设计(dut)的输入端口,编写一个输入接口代码文件。
4)包含待测设计(dut)
把待测设计(dut)全部代码存放于名为dut的文件目录下。
5)创建输出接口(out)
根据待测设计(dut)的输出端口,编写一个输出接口代码文件。
6)创建测试平台(testbench)
编写一个环境对象,并在其中创建一个信息比对的计分牌对象(scoreborad),再在环境对象中嵌入生产验证组件(producervc),消费验证组件(consumervc),创建输入接口(in)和输出接口(out)。编写build(),connect()和run()函数,在build()函数中生成嵌入的对象实例。connect()函数中,连接计分牌对象(scoreborad)的一头到生产验证组件(producervc),另一头到消费验证组件(consumervc)。在run()函数中调用产验证组件(producervc)的run()函数和消费验证组件(consumervc)的run()函数。
7)嵌入仿真平台
用项目建造工具make组装测试用例和1)到6)的组件代码,以及仿真引擎。
8)执行测试验证
运行make,查看验证结果。