UVM平台结构及每个组件的作用

        对于验证方法学来说,分层的测试平台是一个关键的概念。虽然分层似乎会使测试平台变得更复杂,但它能够把代码分而治之,有助于减轻工作负担,而且重复利用效率提升。验证平台可以类似分为五个层次:信号层、命令层、功能层、场景层和测试层。

图 UVM验证平台

        UVM的基本元素(建模方法)有:uvm object, uvm component, uvm factory, uvm TLM, Message service, configuration mechanism, RAL。

       UVM组件(uvm component)包含有:uvm_driver, uvm_monitor, uvm_sequencer, uvm_agent, uvm_scoreboard, uvm_env, uvm_test。每个组件的作用如下:

       uvm_driver: 所有的driver都要派生自uvm_driver。driver的功能主要就是向sequencer索要sequence_item(transaction),并且将sequence_item里的信息驱动到DUT的端口上,这相当于完成了从transaction级别到DUT能够接受的端口级别信息的转换。

       uvm_monitor: 所有的的monitor都要派生自uvm_monitor。Monitor做的事情与driver相反,driver向DUT的端口上发送数据,而monitor则是从DUT的端口上接收数据,并且把接收到的数据转换成transaction级别的sequence_item,再把转换后的数据发送给scoreboard,供其比较。

       uvm_sequencer: 所有的sequencer都要派生自uvm_sequencer。sequencer的功能就是组织管理sequence,当driver要求数据时,它就把sequence生成的sequence_item转发给driver。

       uvm_agent: 所有的agent要派生自uvm_agent。agent只是把driver和monitor封装在一起,根据参数值来决定是只实例化monitor还是要同时实例化driver和monitor。agent的作用主要是从可重用性的角度考虑的。如果在做验证平台时不考虑可重用性,那么agent其实是可有可无的。

       uvm_scoreboard: 一般的scoreboard都要派生自uvm_scoreboard。scoreboard的功能就是比较reference model和monitor分别发送来的数据,根据比较结果判断DUT是否正确工作。

       uvm_env: 所有的env要派生自uvm_env。env将验证平台上用到的固定不变的component都封装在一起。这样,当要运行不同测试用例时,只要在测试用例中实例化此env即可。

       uvm_test: 所有的测试用例要派生自uvm_test或其派生类,不同的测试用例之间差异很大,所以从uvm_test派生出来的类各不相同。任何一个派生出的测试用例中,都要实例化env,只有这样,当测试用例在运行的时候,才能把数据正常地发给DUT,并正常地接收DUT的数据。

       另:还有一个component比较重要reference model,UVM中并没有针对reference model定义一个类。所以通常来说,reference model都是直接派生自uvm_component。reference model的作用就是模仿DUT,完成与DUT相同的功能。DUT是用Verilog写成的时序电路,而reference model则可以直接使用SystemVerilog高级语言的特性,同时还可以通过DPI等接口调用其他语言来完成与DUT相同的功能。

       UVM中还有一个比较常用的元素uvm_sequence_item,它不构成UVM树,但在UVM中,所有的transaction都要从uvm_sequence_item派生,只有从uvm_sequence_item派生的transaction才可以使用UVM中强大的sequence机制。而且transaction是有生命周期的,必须使用uvm_object_utils注册,不能使用uvm_component_utils注册。还有uvm_sequence也不属于UVM树,但是它和sequencer之间有密切联系。只有在sequencer的帮助下,sequence产生出的transaction才能最终送给driver;同样sequencer只有在sequence出现的情况下才能体现出价值。sequence就像是一个弹夹,里面的子弹是transaction,而sequencer是一把枪。弹夹只有放入枪中才有意义,枪只有在防腐弹夹后才能发挥威力。uvm_sequence_item和uvm_sequence均属于uvm_object,不构成UVM树节点。

       断言(Assertion):断言穿过命令层和信号层,它们负责监视独立的信号以寻找穿越整个命令的信号变化。可以使用SystemVerilog断言(SVA)在你的设计中创建时序断言。断言的例化跟其它设计块的例化相似,而且在整个仿真过程中都是有效的。仿真器会跟踪哪些断言被激活,这样就可以在此基础上收集功能覆盖率的数据。

  • 20
    点赞
  • 124
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: 在搭建UVM验证平台之前,您需要了解以下内容:UVM语法和结构UVM验证框架,UVM注册机制,UVM构建和配置方法,UVM测试库,UVM系统级验证,UVM统计测试,UVM随机测试,以及UVM文件格式。接下来,你需要使用UVM API来构建一个基本验证环境,然后进行测试和验证结果的记录和分析。最后,你需要根据实际需要对验证平台进行调整和优化,以满足你的验证要求。 ### 回答2: 搭建一个UVM(Universal Verification Methodology)验证平台可以帮助我们有效地进行硬件验证。下面是搭建UVM验证平台的一些建议。 首先,一个UVM验证平台需要一个良好的环境设置。这包括设置合适的操作系统和相应的验证工具。验证工具可以是仿真器(如ModelSim、VCS等)和波形查看器(如DVE、Verdi等)等。同时需要安装UVM库,它包含了许多UVM验证环境所需的类和函数。 其次,我们需要定义测试环境和验证组件。测试环境是一个UVM对象,它包含了验证环境中的各个组件,如顶级模块、输入接口、输出接口等。验证组件是属于测试环境的子对象,它们有不同的功能,如驱动器(driver)、监视器(monitor)、代理(agent)等。每个验证组件负责特定的任务,并且彼此之间可以通过消息传递进行交互。 接下来,我们需要编写测试用例和配置文件。测试用例是验证平台的核心,它们用于模拟各种场景和情况,以测试我们设计的硬件是否符合预期的行为。配置文件则用于配置验证环境和测试组件的参数和属性。 然后,我们需要编写测试启动脚本。测试启动脚本用于指定我们要运行的测试用例以及其他必要的设置,如仿真时间、波形文件保存位置等。 最后,我们可以运行仿真来验证我们的设计。在仿真过程中,UVM验证平台将执行我们编写的测试用例,并通过各个验证组件和消息传递机制来收集和分析波形数据。 总之,搭建一个UVM验证平台需要正确安装验证工具和UVM库,定义测试环境和验证组件,编写测试用例和配置文件,以及编写测试启动脚本。这样,我们就可以使用UVM验证平台来验证我们的硬件设计。 ### 回答3: 要搭建一个UVM验证平台,需要以下步骤: 1. 首先,确定验证平台的需求和目标,包括验证环境、测试用例、复用性需求和时间限制等。 2. 设计验证环境。选择适合验证目标的硬件平台和工具。设计验证环境包括顶层模块、测试控制器、驱动器、监控器和代理等。 3. 编写测试用例。根据验证目标和需求编写测试用例,包括功能测试、边界测试、性能测试等。测试用例应涵盖各种正常和异常情况。 4. 实现UVM验证组件。根据验证环境设计和测试用例编写UVM验证组件,包括顶层模块的连接、各个组件的功能实现和接口设置等。 5. 集成和运行验证环境。将验证组件连接到验证环境中,并进行集成测试。确保各个组件的正确互连和功能正常。 6. 运行测试用例。在验证平台上运行测试用例,并收集和分析测试结果。根据测试结果进行调试和修复。 7. 持续改进和优化。根据使用过程中发现的问题和需求,不断改进和优化验证平台,提高验证效率和质量。 8. 文档和培训。及时编写和更新验证平台的文档,包括使用手册、API文档等。培训团队成员,使其熟悉验证平台的使用和开发流程。 总之,搭建一个UVM验证平台需要确定需求、设计验证环境、编写测试用例、实现验证组件、集成和运行验证环境,持续改进和优化,并进行文档和培训。这样可以提高验证效率和质量,有效降低验证成本。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

谷公子的藏经阁

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值