首先介绍下自己,个人是材料专业转行IC验证,去年秋招也面试了许多场面试,最近临近毕业,想着有空分享一下自己的面试经验。个人面试经验来看面试官基本都会针对异步FIFO进行提问,虽然异步FIFO较为简单,但其实深挖的知识点还是非常多的。

首先是关于异步FIFO的描述,我的简历以及我给面试官介绍异步FIFO这个项目,基本上都是围绕着以下几点进行介绍。

一、理解异步FIFO设计代码:主要侧重于设计要点(格雷码+俩寄存器同步),代码要看懂

二、制定验证计划、提取验证功能点:(接口方面、功能方面、异常方面)

三、搭建验证平台:主要描述验证平台结构以及数据流方向

四、跑仿真:主要验证了什么

五、收集覆盖率:代码覆盖率和功能覆盖率情况

其中关于第一点(理解异步FIFO设计代码),这块问到的知识点主要有以下: 

(1)什么是异步FIFO?与同步FIFO有何不同?异步FIFO的设计理念和设计要点是什么?同步FIFO和异步FIFO的应用场景分别是什么?

很多时候面试官的问题是顺着你的答案进行提问,比如你回答了异步FIFO的设计要点是如何得出空满状态位(读写指针采用格雷码编码,并且经过俩级寄存器同步后进行指针对比得出空满状态位),他就会顺着你的答案继续问。

(2)空满状态位是怎么得出的?为什么要用格雷码编码而不用二进制编码和独热码编码?为什么要经过俩级寄存器的同步再进行指针的对比(涉及到亚稳态)?

(3)亚稳态相关问题:什么是CDC(跨时钟与传输问题)?CDC为什么会产生亚稳态?建立时间和保持时间的概念?如何尽可能降低亚稳态的发生概率?单bit数据怎么进行跨时钟域的传输以及多bit如何进行跨时钟域的传输?

其中关于第二点(验证计划和验证功能点)

(1)关于这块面试官通常让你介绍一下你的验证功能点

验证计划其实就是模块级别的验证,主要用sv语言搭建了验证平台进行验证。验证功能点也相对简单,最最重要的验证点就是功能(异步FIFO的读和写功能),除此之外就是验证接口这块,主要包含时钟和复位,比如验证读写时钟不一致的情况,比如写时钟快,读时钟慢,又或者写时钟慢,读时钟快,以及同时读写,先写再读等情况。异常情况就是FIFO的写满和读空。

其中关于第三点(搭建验证平台)

        关于验证环境这块,大部分面试官只会问验证框架是怎么样的,数据流是怎么样的?极少部分让讲你的某个class具体代码是如何实现的。

        (1)介绍你的验证环境是怎么样的?

一般来说,从最顶层Top层向下一层一层介绍你的验证环境,比如top里面例化了DUT、interface、env等等。然后env里面又例化了比如driver、monitior等等。

(2)介绍你的数据流向(读操作和写操作具体怎么进行的)?

比如写操作:driver产生数据后通过interface发送给DUT(具体发送到哪个端口?),以及monitior从DUT的哪个端口读取数据(读操作)?

(3)你的环境中的scoreboard是怎么对比数据的? 不同组件(class)之间是用什么进行通信的(mailbox)?

其中关于第四点(跑仿真验证)

(1)你是怎么跑仿真的?

(2)你写了几个case?

(3)都验证了那些情况?你写scoreboard了吗?scoreboard是怎么实现的?

(4)采取的定向测试还是随机化测试?你的driver是怎么实现随机化的?

其中关于第五点(覆盖率)

(1)你是怎么样衡量你的验证完善程度?

覆盖率

(2)代码覆盖率有哪几种?分别讲讲你的代码覆盖率情况?

(3)功能覆盖率怎么实现?你写了哪些covergroup和coverpoint?最终功能覆盖率的情况如何?

(4)如果你的代码覆盖率低该怎么改善?功能覆盖率低该怎么改善?

暂时想到这么多,后续想到其他问题继续进行补充。

异步FIFO模块验证-面试总结相关推荐

  1. UART模块验证-面试总结

    前言 本篇博客依旧针对UART模块的验证项目进行面试总结,也是笔者面试过众多公司所总结整理的 关于UART深挖的可问的知识点还是非常多,本篇博文可以说基本上涵盖大部分可问到的点 关于下列有一些问题我并 ...

  2. verilog异步复位jk触发器_以不变应万变的异步FIFO面试宝典(二)

    异步FIFO面试宝典(二) 上一期为童鞋们带来了FIFO工作的基本原理,本期将继续与各位童鞋探讨FIFO类面试相关问题.首先让我们回顾一下上一期的课后思考题: 如果读时钟域速度较快.写时钟域速度较慢( ...

  3. 异步fifo的设计与验证

    书接上文,上一篇介绍了略简单的同步fifo,接下来开始较为复杂的异步fifo. 1.同步fifo与异步fifo的区别 当设计中只有一个时钟时,所有的寄存器否用同一个,不会出现传输速度不匹配的情况:但是 ...

  4. 面试——异步FIFO详解

    1.异步FIFO简介及其原理 FIFO是英文First In First Out 的缩写,是一种先进先出的数据缓存器,它与普通存储器的区别是没有外部读写地址线,这样使用起来非常简单,但缺点就是只能顺序 ...

  5. (93)异步FIFO结构,为什么用格雷码? ,面试必问(十七)(第19天)

    (93)异步FIFO结构,为什么用格雷码? ,面试必问(十七)(第19天) 1 文章目录 1)文章目录 2)FPGA初级课程介绍 3)FPGA初级课程架构 4)异步FIFO结构,为什么用格雷码? ,面 ...

  6. 异步FIFO设计:各个模块的作用及Verilog代码详解

    实现原理参考:异步FIFO---Verilog实现_alangaixiaoxiao的博客-CSDN博客_异步fifo 代码参考:IC基础(一):异步FIFO_MaoChuangAn的博客-CSDN博客 ...

  7. 异步fifo设计及验证verilog代码

    论文参考:The Design and Verification of a Synchronous First-In First-Out 博客参考:[原创]异步FIFO设计原理详解 (含RTL代码和T ...

  8. FPGA/IC笔试面试(一):异步FIFO最小深度计算

    目录 突发数据长度(Burst Length) 常见FIFO深度计算情况 一.写时钟 > 读时钟(写比读快) 1.读写都没有空闲周期 2.读写有空闲周期 二.写时钟 = 读时钟(写读一样快) 1 ...

  9. 数字IC笔面常考,跨时钟域神器。——异步FIFO(简介及手撕代码)

    异步FIFO 写在前面的话 异步FIFO相关知识点 FIFO简介 FIFO结构 应用场景(来源小梅哥 <FPGA 系统设计与验证实战指南> 章节4.4) 相关参数 异步FIFO 内部组成 ...

最新文章

  1. 终端文件夹跳转工具autojump
  2. Google发布App Engine第二代运行时,提供Python 3.7和PHP 7.2支持
  3. Python3 学习第十一弹: 模块学习四之sys库
  4. C# 通过pid获取hwnd / 通过pid查找hwnd
  5. Linux之Server环境配置
  6. Strange Optimization(扩展欧几里得)
  7. SAP Fiori Elements - Smart table add button debug 2 setDirty
  8. Typecho 动漫单栏主题First
  9. 安装JDK 9与使用jshell
  10. asp.net 导出word文档
  11. 全球最快!湖南大学天河超算存储系统!
  12. SQL注入-DNSlog注入(手工加工具使用)
  13. Servlet九大内置对象
  14. sumifs多条件求和步骤?如何运用sumifs函数进行求和
  15. fme使用workspacerunner批量处理数据
  16. 2022春招实习面经【美团、阿里、微软、字节、米哈游】
  17. 微信小程序分享到朋友圈,在朋友圈打开报错 error code -501023
  18. 单片机传输信息到服务器,单片机传数据到云服务器
  19. CH5202 自然数拆分Lunatic版(算法竞赛进阶指南,完全背包)
  20. 笔记 | 百度飞浆AI达人创造营:深度学习模型训练和关键参数调优详解

热门文章

  1. Python解读通讯录(Excel表格)
  2. 008_直接的样式设置
  3. 导入android源码有错,R.java文件不能自动生成解决方法 http://caizi12.iteye.com/blog/975125
  4. 【微服务|openfeign】使用openfeign远程调用文件上传接口
  5. shodan的使用及maltego的注册
  6. soar mysql_小米开源的数据库SQL性能分析工具SOAR,windows版安装使用
  7. Python项目实战: 爬取未来7天天气预报,存储在excel文档中
  8. 自己动手编译播放器MPC-HC的源码
  9. 关于Solidworks生成自定义轮廓特征库为空的问题
  10. 浏览器关闭时清空localStorage储存的数据