-
内容大纲
本书从RTL设计师视角出发,系统梳理ASIC/VLSI行业标准工作流程中的关键知识与面试要点,通过分享行业经验与独特视角,帮助读者理解企业所需技能,提升面试竞争力,斩获心仪职位。
全书分为三大部分:第一部分围绕架构与微架构展开,涵盖CPU流水线、CPU乱序调度、虚拟内存和TLB、缓存一致性、FIFO、CDC、LRU算法、重排序、仲裁器、数字分频器、算术逻辑设计、序列产生器等;第二部分聚焦验证、实现、综合与功耗,详细讲解设计验证、形式验证、CDC检查、RDC检查、ECO流程等;第三部分涉及物理设计和芯片调试,包括STA、SDC、时序ECO等;同时在末尾分享行为类问题及实用面试建议等。
本书适合数字IC设计工程师阅读,可帮助其系统梳理专业知识、应对面试挑战;同时也可作为高等院校微电子、自动化、电子信息等相关专业师生的参考用书,为学生搭建理论与行业实践的桥梁,助力其了解行业需求与技术要点,为未来职业发展奠定基础。 -
作者介绍
-
目录
第一部分 架构与微架构
第1章 架构与原型
1.1 CPU流水线
【问题1】MIPS五级流水线是什么样的?
【问题2】流水线冒险及解决方案——基于MIPS五级流水线的案例分析
【问题3】能否任意增加CPU流水线的深度?
【问题4】如何实现基于硬件的分支预测?
1.2 CPU乱序调度
【问题5】Tomasulo算法如何工作?
【问题6】Tomasulo算法中如何处理内存引起的数据依赖?
【问题7】如何通过内存处理数据依赖?
【问题8】如何在Tomasulo算法中实现基于硬件的推测以最小化控制冒险?
1.3 虚拟内存和TLB
【问题9】使用虚拟内存有哪些好处?
【问题10】虚拟地址如何转换?
【问题11】为什么需要TLB?
【问题12】如何处理TLB缺失?
【问题13】如何处理缺页异常?
1.4 精确中断的实现
【问题14】什么是精确中断?什么是非精确中断?
【问题15】如何实现精确中断?
1.5 缓存
【问题16】为什么需要缓存?
【问题17】什么是缓存冲突?
【问题18】缓存中的读/写/替换策略是什么?
【问题19】如何衡量缓存性能?
【问题20】为什么缓存增大后性能没有提升?
【问题21】用虚拟地址访问缓存会有什么问题?
【问题22】根据索引位和标签(tag)位,缓存有哪些类型?
1.6 缓存一致性
【问题23】什么是NUMA/UMA架构?
【问题24】什么是缓存一致性?
【问题25】如何实现缓存一致性?
【问题26】你能展示基于侦听的MSI协议状态转换吗?
【问题27】什么是MESI/MEOSI/MEOFSI协议?
【问题28】如何为MESI协议实现主目录?
1.7 通用片上总线协议
【问题29】能描述一下APB协议的工作原理吗?
【问题30】能描述一下AHB协议的工作原理吗?
【问题31】能描述一下AXI协议的工作原理吗?
【问题32】为什么AXI和AHB协议提供回环突发传输?
【问题33】AXI协议中通道之间有哪些依赖关系?
【问题34】如何强制AXI写通道和读通道间的顺序?
【问题35】AXI协议中的独占访问是什么?
第2章 微架构设计
2.1 Verilog语法与原语
【问题36】阻塞赋值与非阻塞赋值有什么区别?
【问题37】如何检测和解决与X相关的RTL问题?
【问题38】casex、casez和case-inside有什么区别?
【问题39】使用SystemVerilog的signed数据类型时需要注意什么?
【问题40】“===”和“==”有什么区别?
【问题41】什么是delta仿真时间?
【问题42】什么是通用逻辑门?
2.2 握手协议
【问题43】什么是valid-ready协议?
【问题44】什么是valid-ready切片?
【问题45】如何将4相req-ack协议转换为valid-ready协议?
【问题46】如何将valid-ready协议转换为4相req-ack协议?
2.3 FIFO
【问题47】如何设计基于触发器的非2次幂深度的同步FIFO?
【问题48】如何设计一个支持2次写入1次读取的基于触发器的同步FIFO
【问题49】如何基于双端口SRAM设计同步FIFO?
【问题50】如何设计基于触发器的异步FIFO?
【问题51】如何设计一个非2次幂偶数深度的异步FIFO
【问题52】设计一个基于SRAM的异步FIFO
2.4 跨时钟域(CDC)
【问题53】什么是亚稳态?
【问题54】什么是MTBF?为什么同步器能处理CDC问题?
【问题55】传输脉冲信号时有哪些常见的CDC注意事项?
【问题56】传输多比特信号时有哪些常见的CDC注意事项?
2.5 LRU算法
【问题57】如何实现真正的LRU算法?
【问题58】如何实现伪LRU?
2.6 重排序
【问题59】支持有序读响应功能的内存控制器设计(Ⅰ)
【问题60】支持有序读响应功能的内存控制器设计(Ⅱ)
2.7 查找表
【问题61】使用一维LUT(查找表)实现y=f(x)函数
【问题62】使用二维查找表实现z=f(x,y)函数
2.8 仲裁器
【问题63】设计一个固定优先级仲裁器
【问题64】设计一个轮询仲裁器
【问题65】设计一个基于优先级的仲裁器
2.9 数字分频器
【问题66】实现任意整数N的分频器(无占空比要求)
【问题67】实现2N分频器(50%占空比)
【问题68】实现2N分频器(50%占空比)
【问题69】实现(2N+1)分频器(50%占空比)
2.10 算术逻辑设计
【问题70】设计一个简单的ALU并绘制其逻辑框图
【问题71】如何实现w=3/2x+1/4y+z?
【问题72】如何实现BCD码的乘以5运算?
【问题73】如何实现整数除法器?
【问题74】用两个16位加法器构建一个2周期延迟的32位加法器
【问题75】用两个16位加法器构建一个2周期延迟的32位累加器
2.11 序列产生器和检测器
【问题76】序列产生器
【问题77】设计一个电路用于检测一个输入是否为另一个输入的延迟版本
【问题78】设计一个检测序列1(01)*1的电路
【问题79】3位回文序列检测器
【问题80】判断一个无限序列是否是5的倍数
【问题81】设计一个可编程序列检测器
2.12 查找
【问题82】在字节数组中从LSB开始查找第一个1的索引位置
【问题83】在一个16位数组中从最低有效位(LSB)开始查找第一个1的索引位置
【问题84】在深度为8、宽度为1位的FIFO中查找最近一次写入的1的索引位置
【问题85】在排序数组中找到最接近给定数字的索引(Ⅰ)
【问题86】在排序数组中找到最接近给定数字的索引(Ⅱ)
第二部分 验证、实现、综合与功耗以及前端设计检查表
第3章 验证
3.1 设计验证
【问题87】什么是约束随机回归测试?为什么约束检查很重要?
【问题88】如何验证轮询仲裁器的公平性?
【问题89】为自动售货机设计编写测试计划
【问题90】什么是代码覆盖率?
【问题91】什么是功能覆盖率?如何写功能覆盖率?
3.2 形式验证
【问题92】什么是形式验证(FV)?它与动态验证(DV)有何不同?
【问题93】FV的优缺点是什么?
【问题94】什么是即时断言?什么是并发断言?
【问题95】什么是交叠蕴含?什么是非交叠蕴含?
【问题96】什么是形式化属性验证(FPV)?
【问题97】如果FPV无法实现完全验证怎么办?
【问题98】什么是形式化等价性验证(FEV)?
第4章 实现、综合与功耗
4.1 代码规范检查
【问题99】在代码检查中,最关键的错误有哪些?
4.2 CDC检查
【问题100】如何在CDC检查中定义CDC/SGDC约束?
4.3 复位域交叉(RDC)检查
【问题101】同步复位与异步复位的区别何在?
【问题102】RDC检查功能具体有什么作用呢?
【问题103】常见的RDC技术/方案有哪些?
4.4 综合
【问题104】什么是线负载模型下的综合?什么是合理性综合?
【问题105】什么是拓扑综合/生成式综合?
【问题106】运行综合之前的基本设置有哪些?如何执行set_app_var以及创建Milkyway设计库?
【问题107】什么是DC的综合流程?能否编写一个简单的DC综合脚本?
【问题108】进行综合分析前需检查哪些内容?
【问题109】DC综合优化的常用技术有哪些?
4.5 逻辑等价性检查(LEC)
【问题110】什么是LEC?我们为什么要进行LEC?
【问题111】LEC的流程是怎样的?又是如何开展关键点映射的?
4.6 ECO流程
【问题112】什么是ECO?为什么需要ECO?
【问题113】功能ECO的流程是什么?
4.7 功耗
【问题114】什么是静态功耗、动态功耗以及短路损耗功耗?
【问题115】如何降低静态功耗、动态功耗以及短路损耗功耗?
【问题116】在功耗敏感型设计中,为何需要隔离单元?
【问题117】隔离单元有多少种类型?
【问题118】时钟门控单元的结构是怎样的?
【问题119】SRAM有哪些功耗状态?
第5章 前端设计检查清单
第三部分 物理设计和芯片调试
第6章 物理设计
6.1 静态时序分析(STA)
【问题120】STA与亚稳态有何关系?
【问题121】STA是做什么的?“同步”意味着什么?
【问题122】什么是建立时间和保持时间?
【问题123】什么是建立时间约束和保持时间约束?
【问题124】采用半周期路径的益处何在?
【问题125】时钟设计裕量的来源有哪些?
【问题126】STA如何检查复位移除时间与恢复时间、时钟门控单元及数据到数据的时序?
【问题127】STA是如何验证异步FIFO功能的?
【问题128】STA如何对基于锁存器的设计进行检查?
【问题129】在STA中,多周期路径(MCP)是如何工作的?
6.2 Synopsys设计约束(SDC)
【问题130】什么是设计对象/库对象?如何访问和操作这些对象?
【问题131】在CTS后的运行阶段,如何设置单时钟设计约束条件?
【问题132】在CTS后的运行阶段,如何为单时钟设计设置I/O约束?
【问题133】如何对多同步时钟设计约束条件进行设置?
【问题134】在CTS后的运行阶段,如何设置生成时钟的设计约束?
【问题135】如何设置互斥同步时钟设计约束?
【问题136】异步时钟设计约束该如何设置?
【问题137】如何对SDC进行验证?
6.3 STA工具/PrimeTime
【问题138】什么是PrimeTime流程?能编写一个简单的PrimeTimeSTA脚本吗?
【问题139】运行PrimeTime之前需要检查什么?
【问题140】何为基于图的分析(GBA)以及基于路径的分析(PBA)?
【问题141】什么是OCV/AOCV/POCV?
【问题142】如何运用OCV方法计算时序裕量?
【问题143】在PrimeTime时序报告中,CRPR是什么?
6.4 时序ECO
【问题144】时序ECO的流程是什么?
【问题145】如何解决建立时间和保持时间违例问题?
【问题146】时序ECO工具是什么?
第7章 芯片调试
【问题147】常用的可调试性设计(DFD)技术有哪些?
【问题148】如何实现校验和?
【问题149】如何实现CRC?
【问题150】如何识别32位寄存器中哪一位存在固定故障?
参考文献
附录 行为类问题及实用面试建议
【问题151】在简历中使用哪些动词可使自身脱颖而出?
【问题152】面试礼仪和最佳面试技巧
【问题153】在面试尾声,当被问及“你有什么问题想问我吗”该如何作答?
【问题154】“感谢信”中应包含哪些内容?
【问题155】为何要对求职申请进行跟进,以及应如何跟进?
同类热销排行榜
- C语言与程序设计教程(高等学校计算机类十二五规划教材)16
- 电机与拖动基础(教育部高等学校自动化专业教学指导分委员会规划工程应用型自动化专业系列教材)13.48
- 传感器与检测技术(第2版高职高专电子信息类系列教材)13.6
- ASP.NET项目开发实战(高职高专计算机项目任务驱动模式教材)15.2
- Access数据库实用教程(第2版十二五职业教育国家规划教材)14.72
- 信号与系统(第3版下普通高等教育九五国家级重点教材)15.08
- 电气控制与PLC(普通高等教育十二五电气信息类规划教材)17.2
- 数字电子技术基础(第2版)17.36
- VB程序设计及应用(第3版十二五职业教育国家规划教材)14.32
- Java Web从入门到精通(附光盘)/软件开发视频大讲堂27.92
推荐书目
-

孩子你慢慢来/人生三书 华人世界率性犀利的一枝笔,龙应台独家授权《孩子你慢慢来》20周年经典新版。她的《...
-

时间简史(插图版) 相对论、黑洞、弯曲空间……这些词给我们的感觉是艰深、晦涩、难以理解而且与我们的...
-

本质(精) 改革开放40年,恰如一部四部曲的年代大戏。技术突变、产品迭代、产业升级、资本对接...
[
