笔试
乐鑫科技笔试内容考试比较全面,对verilog语法的掌握,验证方法论,设计方法论,低功耗,跨时钟域等均有涉猎
其中包含如下知识点
Verilog中标识符非法的问题,不能以数字作为最开头
代码覆盖率包括:行覆盖率 ,路径覆盖率,翻转覆盖率,状态机覆盖率
fork join /any/none 的区别外加 disable的使用
下列可以改善数字电路特性的/改善关键路径/STA的相关知识:
重定时(在不增加寄存器个数的前提下,改变寄存器的位置来优化关键路径),
case代替if else,
流水线,
操作符平衡,
关键输入后移
逻辑复制:某个信号的扇出fanout比较大时,会造成该信号到各个目的逻辑节点的路径变得过长,从而成为设计中的关键路径,此时可以通过对该信号进行复制来降低扇出。
电路资源共享(这个不满足),
timescale 1ns/10ps; 的理解
timescale time_unit / time_precision
#1.111 应该是1.11ns
跨时钟域的相关知识
Verilog是否允许阻塞和非阻塞赋值在always块内自由混合
PVT是什么:process,voltage,temperature
满足芯片功能的情况下降低动态功耗最显著的方法是降低电压
TCM,L2cache,DDR-SDRAM,Nand-Flash被CPU读取的速度排序:
CPU>cache>内存>外存,flash掉电不丢失数据,读取最慢
TCM>L2cache>ddr-sdram>nand-flash
总线读取方式有8、16、32位,出现的概率为20%10%70%,访问该变量的方式为read_type,约束可设定为:(使用constraint进行约束)
已知Tsetup,Thold,Tperiod,求Tdelay满足的约束条件
端口调用的两种方式:位置关联,名称关联
代码题目:
100个人的聚会,事先填写到达和离开的时间0-23,掌握座位数目,估计最大的访客数,编写能打印出最大访客数的程序,不限语言
检测M个1111100000(1和0分别都出现N次)的序列检测器,verilog去实现,同时要画出它的转台转换图
一面
空满信号的产生:写时钟域判断满信号,读时钟域判断空信号
FIFO读数据的条件
FIFO深度的计算:
- 两级同步所产生的,需要深度多一点
- 读的时候第一拍不能读,需要还需要多一点
基于AMBA总线的控制器:
Master来的读写信号是怎么解析出来的
怎么去判断来了一个地址:
Master怎么保证两个同时访问,同时发起,如何保证当前的访问不会丢失,两个同时竞争
slave可以及时处理master请求,但也可能存在slave太慢不能立即处理的情况。这时需要让master稍微等一等,需要slave插入一些等待的状态。如下图所示,HREADY信号在第二和第三周期拉低,意在告诉master,slave不能立即处理
常用的异步设计方法
单bit,多bit
异步复位,同步释放
快时钟域的脉冲转到慢时钟域
手撕代码:小数分频3.1分频
实现小数分频的方法是:
先设计不同分频比的整数分频器,然后通过控制两种分频比出现的不同次数来获得所需的小数分频值,从而实现平均意义上的小数分频。
假设我们需要进行5.3分频,那么5.3可以写为53/10,因为:
53/10=5…3
商为5,余数为3
那么我们就可以通过5(商)分频和8(商+余数)来实现5.3分频。
现在我们来确定5分频和8分频的次数,设5分频的次数为a,8分频的次数为b;
那么应该有:
a+b=10(除数)
5a+8b = 53(被除数)
解得a=9,b=1,也就是说通过9次5分频和1次8分频可得到5.3分频。
二面
一面未通过,结束在一面上