UVM面试题

UVM笔记

1.UVM是什么?优势?劣势?

UVM(Universal Verification Methodology)是一个标准化的用于验证设计的方法学, 是Synopsys、Candence、Mentor联合开源机构accellera提出。

优势:

  • 模块化和可重用性: 该方法被设计为模块化组件(Driver, Sequencer, Agents, Env等), 这使跨模块级别的组件重用为多单元或芯片级验证以及跨项目。
  • 将测试与测试平台分开: stimulus/sequencers方面的测试与实际的测试平台层次保持分开, 因此可以在不同的模块或项目之间重复使用激励。
  • 独立于模拟器: 所有模拟器都支持基类库和方法, 因此不依赖于任何特定的模拟器。
  • Sequence方法可以很好地控制刺激的产生: 有几种开发序列的方法: randomization, layered sequences, virtual sequences等。这提供了良好的控制和丰富的激励生成能力。
  • Config机制简化了具有深层次结构的对象的配置: Config机制有助于基于使用它的验证环境轻松地配置不同的测试台组件, 而无需担心测试台层次结构中任何组件的深度。
  • 工厂机制可轻松简化组件的修改: 使用工厂创建每个组件可以使它们在不同的测试或环境中被覆盖, 而无需更改基础代码库。

劣势:

  • 对于任何不熟悉该方法的人, 要了解所有细节的学习曲线就非常陡峭。
  • 方法论仍在发展中, 并且有很多开销, 有时可能会导致仿真缓慢或出现一些错误。
2.uvm_component和uvm_object
  1. uvm_component和uvm_object有什么区别?

    uvm_component: 在build_phase之后就一直存在于整个仿真周期。通过interface连接到DUT或者通过TLM port连接到其他uvm_component。通过configure机制和phase机制控制uvm_component的层次结构和仿真行为。
    uvm_object: 从一个uvm_component生成, 然后传递到另一个uvm_component之后就会消失。不会连接到任何组件, 也不存在phase机制。

  2. ACTIVE agent与PASSIVE agent有何不同?
    ACTIVE agent是可以在其操作的接口上生成激励, 其包含driver和sequencer。
    PASSIVE agent不生成激励, 只能监视接口, 这意味着在PASSIVE agent中将不会创建driver和
    sequencer。

  3. Agent如何配置为“ACTIVE"或”PASSIVE"?
    UVM agents具有类型为uvm_active_passive_enum的变量, 该变量定义agents是否是active(UVM_ACTIVE)(构建了sequencer和driver)或者passive(UVM_PASSIVE)(不构建sequencer和driver)。

    此参数默认情况下设置为UVM_ACTIVE, 在environment类中创建agents时, 可以使用set_config_int()进行更改。然后, agent的build phase阶段应具有以下代码以选择性地构建driver和sequencer。

    function void build_phase(uvm_phase phase);
    	if(m.config.active == UVM_ACTIVE)begin
    		//create driver and sequencer;
    	end
    endfunction
    
  4. 什么是driver和sequencer, 为什么需要它们?
    Driver是根据接口协议将事务转换为一组信号级切换的组件。Sequencer是一个将事务(sequence items)从sequence发送到Driver, 并将Driver的响应反馈给sequence的组件。
    sequencer也会对同时尝试访问Driver以激励设计接口的多个sequences进行仲裁。sequence和sequencer在事务级抽象, Driver在信号级对设计接口进行驱动, 即单一设计模式。

  5. UVM中的monitor和scoreboard有什么区别?
    monitor是一个监测引脚级别的信号活动并将其转换为事务或sequence_items的组件。monitor还通过analysis port将这些事务发送到其他组件。
    scoreboard用于检查DUT的行为是否正确。

  6. 如何连接monitor和scoreboard、driver和sequencer?

    使用analysis port在connect_phase连接monitor和scoreboard。driver具有一个seq_item_port, 可以在agent的connect_phase中连接到sequencer的seq_item_export。

3.sequence和sequencer
  1. m_sequencer和p_sequencer的区别

    UVM sequence是寿命有限的对象, 与sequencer, driver或monitor不同, 后者是UVM的组件, 并且在整个仿真时间内都存在。因此, 如果需要从测试平台层次结构(组件层次结构)访问任何成员或句柄, sequence需要sequencer的句柄。
    m_sequencer是uvm_sequencer_base类型的句柄, 默认情况下在uvm_sequence中可用。但是, 要访问在其上运行sequence的真实sequencer, 我们需要将m_sequencer转换为真实sequencer。

    `uvm_declare_p_sequencer(virtual_sequencer)
    $cast(p_sequencer, m_sequencer)
    
  2. sequence和sequence item有什么区别?
    sequence item是一个对象, 其建模了两个验证组件之间传输的信息(有时也可以称为事务(transaction))。例如: 读操作和写操作中的地址和数据信息。
    sequence是由driver驱动的sequence item序列模式, 由其body()方法实现。例如: 连续读取10次事务。

  3. uvm_transaction和uvm_sequence_item有什么区别?
    uvm_transaction是从uvm_object派生的用于对事务进行建模的基类。
    sequence item是在uvm_transaction的基础上还添加了一些其他信息的类, 例如:sequence id。建议使用uvm_sequence_item实现基于sequence的激励。

  4. 什么是virtual sequence和virtual sequencer?

    virtual sequence是一个包含和执行多个子sequence的容器, virtual sequencer是包含多个sequencer的容器, 以使得virtual sequence中的每个sequence都能在相应的sequencer上获得执行。

  5. 什么是virtual sequence, 在哪里使用?有什么好处?

    virtual sequence是控制多个sequencers中激励生成的sequence。由于s

  • 5
    点赞
  • 100
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值