IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 嵌入式 -> IC验证面试总结之UART模块 -> 正文阅读

[嵌入式]IC验证面试总结之UART模块

前言

本篇博客依旧针对UART模块的验证项目进行面试总结,也是笔者面试过众多公司所总结整理的

关于UART深挖的可问的知识点还是非常多,本篇博文可以说基本上涵盖大部分可问到的点

关于下列有一些问题我并没有列出答案,是因为这些问题的答案基本上都比较简单或者可以搜到,

读者可自行总结整理下

具体内容如下:

简历描述

??关于UART项目的描述如下,基本分4部分内容

(1)理解Spec并指定验证计划

(2)搭建验证环境

(3)写case进行功能验证

(4)覆盖率的收集并基于覆盖率进行验证的完善

面试提问

讲一下你做的uart这个项目?

答:关于该问题基本就如上简历分为4部分进行介绍,在你介绍过程中或者介绍结束,面试官会针对其中的细节进行进一步深入提问。

以下为面试官进一步深入提问的相关问题。

1.什么是uart?uart是用来做什么的?它的应用场景是怎么样的?它是挂在哪个总线上面?uart的协议是怎么样的能介绍下吗,它是怎么收发数据的?

2.你简历中写了理解APB协议,那你能简单介绍下APB协议吗?APB协议有哪些接口信号,分别是哪些功能?APB的协议是怎么样的,是如何写数据如何读数据的?

3.关于APB协议,你刚刚说到在第一个clk,控制信号先使能(PSEL,PADDR、PWRITE),在第二个clk,使能信号(PENABLE)拉高,读写数据(DATA)才有效,你认为APB协议为什么要这样做?不能在一拍中做完所有这些事情吗?

4.APB协议支持流水线吗?它与其他的AMBA总线有什么区别或不同,比如AHB总线?

5.你说你读了并理解了UART协议,那你说说你看了哪些部分,给我讲讲uart有哪些寄存器?

6.你在验证uart的时候,是怎么验的?case是咋写的?(基于SPEC配置相关寄存器使能DUT,去验证相关功能之类的。)

7.讲一下你的验证计划和验证功能点吧,看看都验了什么?

8.你的验证环境是怎么样的,请详细讲一下。

答:我一般从顶层向下讲,具体如下:

(1)首先最顶层就是tb_top层,tb_top层就是例化了DUT,例化了interface并且通过config_db进行interface的传递,传递到下面env所需要使用的interface的component(面试官可能会问为什么class要用virtual interface?),并且产生时钟和复位,然后会有个run_test()(UVM启动的入口),以上就是tb_top层做的工作。

(2)tb_top层下面就是base_test,base_test里面有什么?他是做什么的?

base_test里面例化了一个大的env以及virtual_sequencer(为什么需要virtual_sequencer),reg_model、adapter等,base_test也是整个UVM验证平台的树根,即UVM_TEST_TOP。

(3)base_test下面有个大的env,里面有什么?

里面有apb_env(apb总线这边发并行数据激励给DUT),

uart_env(发串行数据激励给DUT)和以及进行数据的check的scoreboard

(3)apb_env和uart_env里面分别包含有master_agent(发激励,里面例化了sqr,drv,mon),slave_agent(只例化mon,只监控不发激励)。

9.你的数据流是怎么样的?

答:数据流主要分2个方向,

(1)APB_env这边发并行数据到interface经过DUT(UART)后输出为串行数据,由UART_env中的slave_agent的monitor抓到

(2)UART_env中的master_agent发送串行数据到interface经过DUT后由APB总线这边读出(prdata),读出的为经过DUT后由串行数据转化成为并行的数据。

10.你的环境中有reg_model,是自己写的还是脚本生成的?你对reg_model有多少了解,他有什么好处呢?如果没有reg_model我们还能配置寄存器吗?

11.寄存器模型中前门、后门访问都有什么区别,什么时候适合用前门访问?什么时候适合用后门访问??

12.你的scoreboard是怎么写的?具体的check部分是怎么实现的?(简单讲一下具体的代码),你的scoreboard是怎么连接的?(TLM)使用了那些port?使用的是FIFO的方式还是直连的方式?

13.关于这个项目你写了多少个case?分别都是针对哪些功能写的?

答:最基本的就是2个功能

(1)发送功能:并行数据 ----- 串行数据:我的第一条case是apb2uart,就是apb_env里面的master_agent中的driver发的并行数据通过DUT串行输出,然后由uart_env里面的slave_agent里面的monitor监控,最终送到scoreboard做check。

具体我是怎么写的,也就是写个sequence,首先要去验证UART的这个发送功能,肯定要做一些配置,因此我基于SPEC去配置了相关的寄存器,比如先把波特率(什么是波特率?2个uart通信波特率要保持一致?)配置起来,然后配置了UART使能的相关寄存器。需要重点关注的寄存器如下。

(2)接受功能:串行数据 ----- 并行数据:第二条case就是UART_env中的master_agent中的driver发送串行数据给DUT,然后由APB总线并行读出。注意:第二条case是uart2apb,意味着uart_env发送串行数据给DUT,也就是2个uart通信(涉及到波特率一致的问题了)。面试官可能会问到你是如何保持波特率一致的?(DUT的波特率通过配置DUT的寄存器实现,UART_ENV的波特率通过config_db去配置UART_ENV的相关参数,使得发送的激励的波特率与DUT保持一致)。

(3)中断等特殊情况:通过配置寄存器实现超时中断、校验位错误中断以及FIFO溢出等情况。

14.最后你是怎么评估你的项目的完善程度的?(覆盖率)

15.你的覆盖率部分讲一讲,代码覆盖率和功能覆盖率的情况如何?

16.代码覆盖率由哪几个部分组成,你的代码覆盖率哪部分内容覆盖的不足?以及你是如何基于覆盖率报告进行验证的完善的?

17.关于功能覆盖率,能讲讲你都定义了哪些covergroup和coverpoint吗?你是基于什么去写的功能覆盖率,你认为关于这个UART的重要功能你是否都cov到了?

  嵌入式 最新文章
基于高精度单片机开发红外测温仪方案
89C51单片机与DAC0832
基于51单片机宠物自动投料喂食器控制系统仿
《痞子衡嵌入式半月刊》 第 68 期
多思计组实验实验七 简单模型机实验
CSC7720
启明智显分享| ESP32学习笔记参考--PWM(脉冲
STM32初探
STM32 总结
【STM32】CubeMX例程四---定时器中断(附工
上一篇文章      下一篇文章      查看所有文章
加:2022-08-06 11:00:44  更:2022-08-06 11:03:55 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/25 23:29:58-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码