数字IC验证高频面试问题整理—附答案(三)

news2025/1/11 17:06:53

最近大家无不在讨论IC秋招,秋招想必缺的就是面试题目了。这不就来了~

共150道验证高频面试题整理~含答案(文末可领取全部题目)
在这里插入图片描述

Q1.二进制码、格雷码、独热码的特点

二进制码:基本的机器语言,每一位只能是0或1,逢二进一;
格雷码:在一组数的编码中,若任意两个相邻的代码只有一位二进制数不同,则称这种编码为格雷码(Gray Code),另外由于最大数与最小数之间也仅一位数不同,即“首尾相连”。
独热码:又称一位有效编码,其方法是使用N位状态寄存器来对N个状态进行编码,每个状态都由他独立的寄存器位,并且在任意时候,其中只有一位有效。

Q2.packed array和unpacked array的区别

packed array的声明方式:bit [7:0][3:0] packed_array:表示packed_array有4个8比特数组成,且存储空间连续;
unpacked array的声明方式:bit [7:0] unpacked_array[3:0]:表示unpacked_array有4个8比特数组成,存储空间不连续;

Q3.阻塞赋值和非阻塞赋值的区别

阻塞赋值语句(“=”)和非阻塞赋值语句(“<=”)
阻塞:一般对应电路中的组合逻辑赋值,等号右端的结果会立刻赋值给左端。
非阻塞:一般对应电路中的时序逻辑赋值,等号右端的结果不会立刻赋值给左端。
在always语句中,阻塞赋值等号左端的参数如果参与该模块的其他运算,则按照赋值后的结果参与运算,而非阻塞赋值等号左端的参数依旧按照未赋值前的结果参与运算。
Assign语句中用阻塞赋值,组合电路用阻塞赋值,时序电路用非阻塞赋值

Q4.过程性语句和连续赋值语句的区别

连续赋值语句由assign来标示,而过程赋值语句不能包含这个关键词;
连续赋值语句中左侧的数据类型必须是线网数据类型,而过程赋值语句中的被赋值数据类型则必须是寄存器类型的变量;

连续赋值语句不能出现在过程块(initial或always)中,而过程赋值语句可以;
连续赋值语句主要用来对组合逻辑电路进行建模以及对线网数据间的连接进行描述,而过程赋值语句主要用来对时序逻辑电路进行行为描述;

连续赋值语句对被赋值线网型数据的赋值是“连续”的(即赋值表达式的任何变化都会在立刻反应在线网数据的取值上),而过程性赋值语句,只有在过程赋值语句被执行时才执行赋值操作,语句执行完后被赋值变量的取值不再受到赋值表达式的影响(注意这里的一次是指:在initial块中,过程性赋值只顺序执行一次,而在always块中,每一次满足always的条件时,都要顺序执行一次该always块中的语句。)。

Q5.initial和always的异同

always:
always是为了描述硬件的行为,而在使用时需要注意哪种使用方式是时序电路描述,哪种使用方式是组合电路描述。

always中的@(event…)敏感列表是为了模拟硬件信号的触发行为,需要正确对标硬件行为和always过程块描述。

所以说,always过程块是用来描述硬件时序电路和组合电路的正确打开方式,因此只可以在module或者interface中使用。

initial:
initial从名字也可以看得出来,与always在执行路径上有明显区别,即initial非常符合软件的执行方式,即只执行一次。

initial和always一样,无法被延迟执行,即在仿真一开始它们都会同时执行,而不同initial和always之间在执行顺序上是没有顺序可言的。

initial从其执行路径的属性来看,它不应该存在于硬件设计代码中,它本身不可综合,对于描述电路没有任何帮助。

initial就是为了测试而生的,由于测试需要按照时间顺序的习惯即软件方式来完成,所以initial便可以实现这一要求。

在Verilog时代,所有的测试语句都可以被放置在initial中,为了便于统一管理测试顺序,建议将有关测试语句都放置在同一个initial过程块中。

initial过程块可以在module、interface和program中使用。对于过程块的书写方式,请记住用begin…end将其作用域包住。

Q6.FSM有哪几种?区别是什么?

状态机描述时关键是要描述清楚几个状态机的要素,即如何进行状态转移,每个状态的输出是什么,状态转移的条件等。具体描述时方法各种各样,最常见的有三种描述方式:
(1)一段式:整个状态机写到一个always模块里面,在该模块中既描述状态转移,又描述状态的输入和输出;
(2)二段式:用两个always模块来描述状态机,其中一个always模块采用同步时序描述状态转移;另一个模块采用组合逻辑判断状态转移条件,描述状态转移规律以及输出;
(3)三段式:在两个always模块描述方法基础上,使用三个always模块,一个always模块采用同步时序描述状态转移,一个always采用组合逻辑判断状态转移条件,描述状态转移规律,另一个always模块描述状态输出(可以用组合电路输出,也可以时序电路输出)。

Q7.数字电路中为什么要使用触发器

用触发器是因为触发器能保存数据,保存电路状态;触发器是在时钟边沿触发,用时钟同步是让整个电路能同步整齐划一的工作;另外,如果只用组合逻辑,无法保存数据,这样得到的数据无法供以后使用。

Q8.异步复位和同步复位各自特点和区别

同步复位:当时钟上升沿检测到复位信号,执行复位操作,时钟沿有效是前提 。always@(posedge clk);
优点
a、有利于仿真器的仿真;
b、可以使所设计的系统成为 100% 的同步时序电路,有利于时序分析,而且可综合出较高的 Fmax;
c、由于只在时钟有效电平到来时才有效,所以可以滤除高于时钟频率的复位毛刺。
缺点:
a、复位信号的有效时长必须大于时钟周期,才能真正被系统识别并完成复位任务。同时还要考虑诸如 clk skew 、组合逻辑路径延时 、复位延时等因素(所以复位信号有时需要脉冲展宽,用以保证时钟有效期间有足够的复位宽度);
b、由于大多数的逻辑器件的目标库内的 DFF 都只有异步复位端口,所以,倘若采用同步复位的话,综合器就会在寄存器的数据输入端口插入组合逻辑,这样就会一方面额外增加FPGA内部的逻辑资源,另一方面也增加了相应的组合逻辑门时延。

异步复位:无论时钟沿是否到来,只要复位信号有效,就对系统进行复位。always @ ( posedge clk or negedge rst_n );
优点
a、大多数目标器件库的 DFF 都有异步复位端口,那么该触发器的复位端口就不需要额外的组合逻辑,这样就可以节省资源;
b、设计相对简单;
c、异步复位信号识别方便(电路在任何情况下都能复位而不管是否有时钟出现)。
缺点:
a、最大的问题在于它属于异步逻辑,问题出现在复位释放时,而不是有效时,如果复位释放接近时钟有效沿,则触发器的输出可能进入亚稳态(此时 clk 检测到的 rst_n 的状态就会是一个亚稳态,即是0是1是不确定的),从而导致复位失败。
b、可能因为噪声或者毛刺造成虚假复位信号(比如以前的游戏机玩到一半突然复位)(注意:时钟端口、清零和置位端口对毛刺信号十分敏感,任何一点毛刺都可能会使系统出错,因此判断逻辑电路中是否存在冒险以及如何避免冒险是设计人员必须要考虑的问题);
c、静态定时分析比较困难。
d、对于 DFT (Design For Test可测性设计)设计,如果复位信号不是直接来自于 I/O 引脚,在 DFT 扫描和测试时,复位信号必须被禁止,因此需要额外的同步电路。

推荐使用异步复位、同步释放的方式,并且复位信号为低电平有效

Q39.异步复位同步释放代码实现

[图片]

Q10.数字电路通常分为哪两种电路

分为组合逻辑电路和时序逻辑电路。
组合逻辑电路在逻辑功能上的特点是任意时刻的输出仅仅取决于该时刻的输入,与电路原来的状态无关。
而时序逻辑电路在逻辑功能上的特点是任意时刻的输出不仅取决于当时的输入信号,而且还取决于电路原来的状态,或者说,还与以前的输入有关。

篇幅限制,IC验证面试题目就不一一罗列了,大家如果需要面试题目,以及想了解简历上需要注意的问题,都可以跟工程师先了解一下(所有面试题目可领)

这里放个入口:IC验证面试题目

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/949138.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

K8s:一文带你认知 CRI,OCI,容器运行时,Pod 之间的关系

写在前面 博文内容整体结构为结合 华为云云原生课程 整理而来,部分内容做了补充课程是免费的&#xff0c;有华为云账户就可以看&#xff0c;适合理论认知&#xff0c;感觉很不错。有需要的小伙伴可以看看&#xff0c;链接在文末理解不足小伙伴帮忙指正 对每个人而言&#xff0c…

<硬件设计> 阻抗设计(一) 阻抗及其模型介绍

目录 01 阻抗相关介绍 阻抗(Electrical Impedance) 阻抗匹配(Impedance Matching) 常规的阻抗线(Impedance Matching) 02 微带线与带状线 微带线(MicroStrip) 带状线(Stripline) 03 文章总结 大家好&#xff0c;这里是程序员杰克。一名平平无奇的嵌入式软件工程师。 在…

mysql8.0以上忘记密码的重置方法 - window系统

1、关闭 mysql 服务&#xff0c;以 管理员身份 运行命令提示符工具&#xff0c;执行下面的命令 net stop mysql可以在任务管理器的服务中查看状态 2、跳过 mysql 权限验证&#xff0c;以管理员身份运行 cmd&#xff0c;进入 mysql 的安装 bin 目录&#xff0c;执行如下指令 m…

另一棵树的子树

目录 题目题目要求示例 解答方法一、实现思路时间复杂度和空间复杂度代码 方法二、实现思路时间复杂度和空间复杂度代码 题目 另一棵树的子树 题目要求 题目链接 示例 解答 方法一、 递归法 实现思路 依次将树中的每一棵子树都与目标树比较&#xff0c;如果有子树与目标…

树多选搜索查询,搜索后选中状态仍保留

<template><div class"half-transfer"><div class"el-transfer-panel"><div><el-checkbox v-model"selectAll" change"handleSelectAll">全部</el-checkbox></div><el-input v-model&qu…

使用gn+Ninja构建项目

使用下载编译好的gn和ninja报错 先下载了gn的源码[gn.googlesource.com/gn]&#xff0c;然后编译报错&#xff0c;就直接下载了了编译号的gn和Ninja&#xff0c;然后写了Helloworld应用的BUILD.gn&#xff0c;然后将"gn\examples\simple_build\build"拷贝至当前目录…

Qt之遮罩—实现不规则窗体

Qt之setMask() 前言 使用遮罩可以将窗口形状多样化&#xff0c;变成各种各样的图片或者图形&#xff0c;先看一下效果吧&#x1f447; 可以看到现在的窗口是一束花&#xff0c;而我们拖动花就相当于拖动窗口&#xff0c; setMask()只是说可以让哪些地方可见哪些地方不可见其…

Doris最大链接数优化

问题背景&#xff1a; 用户在使用Doris的时候&#xff0c;当访问用户过多时会报Reach limit of connections&#xff0c;针对这种情况需要调整Doris最大连接数&#xff0c;具体做法如下。 解决办法&#xff1a; Session变量设置 SET PROPERTY FOR root max_user_connection…

网络优化工程师,你真的了解吗?

一、5G网络优化工程师到底是什么&#xff1f; 5G&#xff0c;就是我们通常所说的第五代移动通信标准&#xff0c;属于目前最热门的新技术趋势。随着2019年5G技术进入正式的商用阶段&#xff0c;拥有广阔的发展前景&#xff0c;备受瞩目。“5G工程师”这个词是一个概念词&#x…

新增!视频智能分析/AI算法智能分析网关V5告警功能添加教程来咯!

智能分析网关系列是基于边缘AI计算技术&#xff0c;可对前端摄像头采集的视频流进行实时检测分析&#xff0c;能对监控画面中的人、车、物进行识别&#xff0c;可实现的检测包括&#xff1a;人脸检测与识别、车辆检测与识别、烟火识别、安全帽/反光衣识别、区域入侵识别等&…

用P,V操作解决进程同步问题的解题步骤(优化版)

蓝颜色是格外注意的 还有读读共享&#xff0c;读写互斥问题。 要背会四个模式&#xff0c;套用模式 例题讲解1&#xff09;生产者-消费者问题 一般意义的“生产者—消费者”问题&#xff1a;N个buffer&#xff0c;多个生产者&#xff0c;多个消费者&#xff0c;循环存取buffer。…

光电水表和脉冲水表有什么区别?

随着科技的不断发展&#xff0c;水表也在不断地更新换代。在众多种类的水表中&#xff0c;光电水表和脉冲水表因其高精度、稳定性能和易于管理等优点&#xff0c;逐渐成为现代家庭的首选。那么光电水表和脉冲水表有什么区别呢?下面就由小编来带大家了解下吧。 一、工作原理上的…

ES是一个分布式全文检索框架,隐藏了复杂的处理机制,核心数据分片机制、集群发现、分片负载均衡请求路由

ES是一个分布式框架&#xff0c;隐藏了复杂的处理机制&#xff0c;核心数据分片机制、集群发现、分片负载均衡请求路由。 ES的高可用架构&#xff0c;总体如下图&#xff1a; 说明&#xff1a;本文会以pdf格式持续更新&#xff0c;更多最新尼恩3高pdf笔记&#xff0c;请从下面…

linux centos7 bash中字符串反向输出

给定一个字符串&#xff0c;如何反向(倒序)输出&#xff1f; 字符串反转的方法&#xff1a;a.对各个字符位置进行循环调换&#xff08;从原字符串左边取出放在新字符串的右边&#xff1b;从原字符串右边取出放在新字符串的左边&#xff09;。b.对各个字符由水平排列转为垂直排…

【第四阶段】kotlin语言的list遍历

package Stage4fun main() {val list listOf(1,2,3,4,5,6,7,8,9)//第一种方式 for()println("第一种方式遍历元素&#xff1a;")for (i in list){print("元素&#xff1a;$i")}println()//第二种方式forEachprintln("第二种方式遍历元素&#xff1a;…

微信短链跳转到小程序指定页面调试

首先说下背景&#xff1a;后端给了短链地址&#xff0c;但是无法跳转到指定页面。总是在小程序首页。指定的页面我们是h5页面。排查步骤如下&#xff1a; 1、通过快速URL Scheme 编译。上部普通编译 下拉找到此选项。 、 2、按照小程序的要求的URL Scheme输入。另外后端给的…

满足每个用户的分析需求,奥威BI数据可视化工具真没吹牛

我们都知道&#xff0c;随着BI商业智能技术的发展&#xff0c;现在做数据可视化分析的效率越来越高&#xff0c;操作难度也越来越低&#xff0c;但真能随时满足每个用户的分析需求&#xff1f;奥威BI数据可视化工具真没吹牛。 在奥威BI数据可视化工具上还真有一种功能可及时且…

20个值得收藏的WebGL性能优化技巧

WebGL 是一项功能强大的技术&#xff0c;允许开发人员使用基于 OpenGL ES 图形标准的 WebGL API 在 Web 浏览器中创建 3D 图形。 然而&#xff0c;由于在 Web 环境的限制下实时渲染 3D 图形的复杂性&#xff0c;优化 WebGL 性能可能具有挑战性。 推荐&#xff1a;用 NSDT编辑器…

微信小程序修改数据,input不能实时回显

场景&#xff1a; 填写发票抬头&#xff0c;填写抬头公司时候&#xff0c;会根据用户输入的内容实时获取相关的公司信息&#xff0c;用户选择搜索出来的公司&#xff0c;这时候 setData,但是数据并没有回显&#xff0c;而是需要再需要点一下屏幕。 解决方案&#xff1a; 原来…