异步FIFO模块验证-面试总结
首先介绍下自己,个人是材料专业转行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模块验证-面试总结相关推荐
- UART模块验证-面试总结
前言 本篇博客依旧针对UART模块的验证项目进行面试总结,也是笔者面试过众多公司所总结整理的 关于UART深挖的可问的知识点还是非常多,本篇博文可以说基本上涵盖大部分可问到的点 关于下列有一些问题我并 ...
- verilog异步复位jk触发器_以不变应万变的异步FIFO面试宝典(二)
异步FIFO面试宝典(二) 上一期为童鞋们带来了FIFO工作的基本原理,本期将继续与各位童鞋探讨FIFO类面试相关问题.首先让我们回顾一下上一期的课后思考题: 如果读时钟域速度较快.写时钟域速度较慢( ...
- 异步fifo的设计与验证
书接上文,上一篇介绍了略简单的同步fifo,接下来开始较为复杂的异步fifo. 1.同步fifo与异步fifo的区别 当设计中只有一个时钟时,所有的寄存器否用同一个,不会出现传输速度不匹配的情况:但是 ...
- 面试——异步FIFO详解
1.异步FIFO简介及其原理 FIFO是英文First In First Out 的缩写,是一种先进先出的数据缓存器,它与普通存储器的区别是没有外部读写地址线,这样使用起来非常简单,但缺点就是只能顺序 ...
- (93)异步FIFO结构,为什么用格雷码? ,面试必问(十七)(第19天)
(93)异步FIFO结构,为什么用格雷码? ,面试必问(十七)(第19天) 1 文章目录 1)文章目录 2)FPGA初级课程介绍 3)FPGA初级课程架构 4)异步FIFO结构,为什么用格雷码? ,面 ...
- 异步FIFO设计:各个模块的作用及Verilog代码详解
实现原理参考:异步FIFO---Verilog实现_alangaixiaoxiao的博客-CSDN博客_异步fifo 代码参考:IC基础(一):异步FIFO_MaoChuangAn的博客-CSDN博客 ...
- 异步fifo设计及验证verilog代码
论文参考:The Design and Verification of a Synchronous First-In First-Out 博客参考:[原创]异步FIFO设计原理详解 (含RTL代码和T ...
- FPGA/IC笔试面试(一):异步FIFO最小深度计算
目录 突发数据长度(Burst Length) 常见FIFO深度计算情况 一.写时钟 > 读时钟(写比读快) 1.读写都没有空闲周期 2.读写有空闲周期 二.写时钟 = 读时钟(写读一样快) 1 ...
- 数字IC笔面常考,跨时钟域神器。——异步FIFO(简介及手撕代码)
异步FIFO 写在前面的话 异步FIFO相关知识点 FIFO简介 FIFO结构 应用场景(来源小梅哥 <FPGA 系统设计与验证实战指南> 章节4.4) 相关参数 异步FIFO 内部组成 ...
最新文章
- 终端文件夹跳转工具autojump
- Google发布App Engine第二代运行时,提供Python 3.7和PHP 7.2支持
- Python3 学习第十一弹: 模块学习四之sys库
- C# 通过pid获取hwnd / 通过pid查找hwnd
- Linux之Server环境配置
- Strange Optimization(扩展欧几里得)
- SAP Fiori Elements - Smart table add button debug 2 setDirty
- Typecho 动漫单栏主题First
- 安装JDK 9与使用jshell
- asp.net 导出word文档
- 全球最快!湖南大学天河超算存储系统!
- SQL注入-DNSlog注入(手工加工具使用)
- Servlet九大内置对象
- sumifs多条件求和步骤?如何运用sumifs函数进行求和
- fme使用workspacerunner批量处理数据
- 2022春招实习面经【美团、阿里、微软、字节、米哈游】
- 微信小程序分享到朋友圈,在朋友圈打开报错 error code -501023
- 单片机传输信息到服务器,单片机传数据到云服务器
- CH5202 自然数拆分Lunatic版(算法竞赛进阶指南,完全背包)
- 笔记 | 百度飞浆AI达人创造营:深度学习模型训练和关键参数调优详解
热门文章
- Python解读通讯录(Excel表格)
- 008_直接的样式设置
- 导入android源码有错,R.java文件不能自动生成解决方法 http://caizi12.iteye.com/blog/975125
- 【微服务|openfeign】使用openfeign远程调用文件上传接口
- shodan的使用及maltego的注册
- soar mysql_小米开源的数据库SQL性能分析工具SOAR,windows版安装使用
- Python项目实战: 爬取未来7天天气预报,存储在excel文档中
- 自己动手编译播放器MPC-HC的源码
- 关于Solidworks生成自定义轮廓特征库为空的问题
- 浏览器关闭时清空localStorage储存的数据