前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >[十七]Cracking Digital VLSI Verification Interview

[十七]Cracking Digital VLSI Verification Interview

作者头像
空白的贝塔
发布2020-06-24 16:47:45
1.5K0
发布2020-06-24 16:47:45
举报
文章被收录于专栏:摸鱼范式摸鱼范式
[321] 什么是UVM RAL(UVM Register Abstraction Layer)?

UVM RAL(UVM Register Abstraction Layer)是UVM所支持的功能,有助于使用抽象寄存器模型来验证设计中的寄存器以及DUT的配置。UVM寄存器模型提供了一种跟踪DUT寄存器内容的方法,以及一个用于访问DUT中寄存器和存储器的层次结构。寄存器模型反映了寄存器spec的结构,能够作为硬件和软件工程师的共同参考。RAL还具备其他功能,包括寄存器的前门和后门初始化以及内置的功能覆盖率支持。

[322] 什么是UVM Callback?

uvm_callback类是用于实现回调的基类,这些回调通常用于在不更改组件类的情况下修改或增强组件的行为。通常,组件开发人员会定义一个专用于应用程序的回调类,该类扩展并定义一个或多个虚方法,称为回调接口。这些方法用于实现组件类行为的重写。

一种常见用法是在driver将错误发送到DUT之前将错误注入到生成的数据包中。以下伪代码展示了如何实现。

  1. 定义一个具有错误位的数据包类
  2. 定义一个从sequence中提取数据包,输入到DUT的driver类
  3. 定义从基类uvm_callback派生的driver回调类,并添加一个虚方法,该方法可用于注入错误或翻转数据包中的某个位。
  4. 用`uvm_register_cb()宏注册回调类
  5. 在接收和发送数据包到DUT的driver的run_phase()方法中,基于概率执行回调以导致数据包损坏
代码语言:javascript
复制
class Packet_c;
    byte[4] src_addr, dst_addr;
    byte[] data;
    byte[4] crc;
endclass
//User defined callback class extended from base class
class PktDriver_Cb extends uvm_callback;
    function new (string name = "PktDriver_Cb");
        super.new(name);
    endfunction
    
    virtual task corrupt_packet (Packet_c pkt);
        //Implement how to corrupt packet
        //example - flip one bit of byte 0 in CRC
        pkt.crc[0][0] = ~pkt.crc[0][0]
    endtask 
endclass : PktDriver_Cb

//Main Driver Class
class PktDriver extends uvm_component;
    `uvm_component_utils(PktDriver)
    
    //Register callback class with driver
    `uvm_register_cb(PktDriver,PktDriver_Cb)
    
    function new (string name, uvm_component parent=null);
        super.new(name,parent);
    endfunction
    
    virtual task run();
        forever begin 
            seq_item_port.get_next_item(pkt);
            `uvm_do_callbacks(PktDriver,PktDriver_Cb, corrupt_packet(pkt))
            //other code to derive to DUT etc
        end
    endtask
endclass
[323] 什么是uvm_root类?

uvm_root类充当所有UVM组件的隐式顶级和phase控制器。用户不直接实例化uvm_root。UVM会自动创建一个uvm_root实例,用户可以通过全局(uvm_pkg-scope)变量uvm_top访问该实例。

[324] uvm_test的父级类是什么?

uvm_test类是用户可以实现的顶级类,并且没有显式父类。但是,UVM有一个称为uvm_top的特殊组件,它被指定为测试类的父级。

形式验证

[325] 什么是形式验证?

形式验证是使用数学建模来验证设计实现是否符合spec的方法。形式验证使用数学推理和算法来证明设计符合spec。在形式验证中,该工具隐式地涵盖了所有情况(输入和状态),而无需开发任何激励生成器或预期输出。该工具需要以property或更高级别的模型形式对spec进行形式描述,以详尽地涵盖所有输入组合,证明功能的正确性。SystemVerilog的property也可用于形式化描述spec。

[326] 形式验证是静态仿真还是动态仿真?

是静态仿真

[327] 形式验证有哪些方法?
  1. 模型检查
  2. 形式等效
[328] 解释模型检查

在“模型检查”方法中,将要验证的模型描述为从设计规范中提取的一组property。因此要详尽搜索设计的状态空间,检查所有property是否在所有状态下均成立。如果在任何状态下违反了property,则会引发错误。下图是一个示意图:

[329] 什么是形式等效

形式等效用于验证两个具有相同或不同抽象的模型在功能上是否一致的方法。此方法无法确定模型在功能上是否正确,但是可以确定两个模型在功能上是否相同。常用于比较RTL设计和综合网表的功能。它也可以用来检查两个RTL模型或两个门级模型的一致性。下图是一个示意图:

[330] 列出一些可以使用形式等效的场景
  1. RTL设计与综合网表
  2. RTL设计与参考模型
  3. 两个RTL设计
  4. 两个门级模型
  5. 两个参考模型
[331] 与动态仿真相比,形式验证有什么优势?
  1. 动态仿真不可能进完全的验证,因为输入激励是使用生成器或testcase来实现的。但是,形式验证会覆盖所有的状态空间,因为该工具会自动生成激励来验证所有的spec。
  2. 由于工具会自动生成完备的激励,因此无需自行生成激励。用户可以专注于使用属性来映射形式spec。
  3. 无需生成预期的输出序列,并且在数学上保证了设计的正确性。
[332] 形式验证有什么局限性?
  1. 可拓展性是形式验证的最大限制之一。形式验证仅限于较小的设计,因为即使添加一个触发器也会将设计状态空间增加2倍(这意味着每个触发器的输入场景都会加倍)。
  2. 它可以确保设计相对于spec的正确性。它不能保证设计是否正常工作(例如spec本身是否有错误)。
  3. 对于模型检查,spec需要使用property来描述、编码
[333] 如果设计中的某个模块经过形式验证可以正常工作,我们是否还需要收集该模块的覆盖率?

不,我们不需要通过了形式验证的模块的覆盖率。因为形式验证在数学上保证了可以在所有可能的输入条件下都符合spec。

功耗和时钟

[334] CMOS电路功耗由哪些部分组成?
  1. 动态功耗:这部分是由晶体管电容充放电产生的
  2. 静态功耗:这部分是由开关的漏电流产生的
[335] 什么是动态功耗?它与哪些参数有关?

其中,

A=活性因子(进行状态转换的开关比例)\\C=内部电容\\C_L =负载电容\\V_{dd} =电源电压 \\f =工作频率
[336] 什么是静态功耗?它与哪些参数有关?
[337] 什么是多电压域?为什么要使用它?
[338] 什么是“动态电压频率调节”(DVFS)?何时使用?

动态电压频率调节是一种低功耗设计技术,通过动态调整频率降低功耗。在DVFS中,工作频率或电压以某种方式进行调节,使得设计在正常运行的同时使用最小的频率或电压。这个过程发生在设计的运行过程中,因此称为“动态”。传统的低功耗方法中,设计以工作频率运行,然后在空闲时关闭电源来进行定期调度。DVFS技术利用了CMOS芯片的特性:CMOS芯片的能量消耗正比于电压的平方和时钟频率。DVFS技术是以延长任务执行时间为代价来达到减少系统能量消耗的目的,体现了功耗与性能之间的权衡。可以通过减少时钟频率来降低通用处理器功耗的。然而,仅仅降低时钟频率并不节约能量,因为性能的降低会带来任务执行时间的增加。调节电压需要以相同的比例调节频率以满足信号传播延迟要求。然而不管是电压调节还是频率调节,都会造成系统性能的损失,并增加系统的响应延迟。

为了尽量减少可感知的系统性能负面影响同时又能最大程度地降低系统能耗,策略必须估计未来的工作负载并选择最合适的频率。准确地预测未来的工作负载对广泛使用的策略是至关重要的。预测错误可能会导致设置的频率太高降低节省能耗,或设置频率过低造成系统响应延迟过高。所以,要想降低功耗,需要选择合适的供电电压和时钟频率。

所以安全的调节机制是:

  • 当需要提升功率时,应先提升供电电压,然后提升时钟频率。
  • 当需要降低功率时,应先降低时钟频率,再降低供电电压。

制定调整策略前,需要先找出系统中的耗电大的部件,如CPU、GPU、DSP等硬件算法加速模块(结合逻辑规模);然后统计出这些模块的负载情况,基本的策略当然是工作负载增加则升频升压,工作负载降低则降频降压。工作负载的粗略模型是在一个时间窗口内,统计模块工作的时间长度,设定不同阈值,高阈值对应高电压高频率,低阈值对应低电压低频率。每次统计值穿过阈值边界,触发DVFS转换。

[339] 什么是UPF?

其主要是由Synopsys推出的专门用于描述电路电源功耗意图的一种语言标准,它是Tcl语言的扩展,并且现在已经成为IEEE-1801标准且被三大EDA厂商(Synopsys、Cadence、Mentor)支持。传统的数字芯片设计均是采用Verilog或者VHDL语言对电路进行描述,但是这种方式描述出的电路并没有包含任何的芯片的供电网络信息,这会导致后续的流程如功耗验证和后端实现很难处理或者极易出错。UPF标准正好可以很好的解决这个问题,因为UPF标准本身包含了大量的用于描述电源网络的Tcl命令,直接使用这些命令可以很方便的创建电源域和功耗控制的特殊单元等,用UPF编写的统一功耗格式文件不仅可以在RTL级,同时还可以被后端工具使用,这在一定意义上保证了整个芯片设计过程中功耗流程的一致性,在后端工具进行处理之后也会生成相应的UPF文件,此时前端工具可以使用该UPF文件对网表进行Power仿真分析

[340] 什么是Power Aware Simulation,它的重要性体现在什么地方?

Power Aware Simulation意味着在RTL或GLS级别上对Power Down和Power Up行为进行建模。Power Aware Simulation的重要性体现在:

  1. 在设计周期的早期就必须找到与电源相关的RTL / Spec的错误。与电源有关的严重错误可能导致芯片无法正常工作。
  2. 电源管理至关重要,现代的ASIC / SoC设计都具有为电源管理而专门的重要逻辑。
[341] 电源域的意思是?

电源域是共享一个主要电源的设计元素的集合,根据通用电源策略(例如工作电压,电源网络,上电/断电条件等)进行分组。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-06-06,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 摸鱼范式 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • [321] 什么是UVM RAL(UVM Register Abstraction Layer)?
  • [322] 什么是UVM Callback?
  • [323] 什么是uvm_root类?
  • [324] uvm_test的父级类是什么?
  • 形式验证
    • [325] 什么是形式验证?
      • [326] 形式验证是静态仿真还是动态仿真?
        • [327] 形式验证有哪些方法?
          • [328] 解释模型检查
            • [329] 什么是形式等效
              • [330] 列出一些可以使用形式等效的场景
                • [331] 与动态仿真相比,形式验证有什么优势?
                  • [332] 形式验证有什么局限性?
                    • [333] 如果设计中的某个模块经过形式验证可以正常工作,我们是否还需要收集该模块的覆盖率?
                    • 功耗和时钟
                      • [334] CMOS电路功耗由哪些部分组成?
                        • [335] 什么是动态功耗?它与哪些参数有关?
                          • [336] 什么是静态功耗?它与哪些参数有关?
                            • [337] 什么是多电压域?为什么要使用它?
                              • [338] 什么是“动态电压频率调节”(DVFS)?何时使用?
                                • [339] 什么是UPF?
                                  • [340] 什么是Power Aware Simulation,它的重要性体现在什么地方?
                                    • [341] 电源域的意思是?
                                    领券
                                    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档