《数字IC验证面试常见问题》是一本针对集成电路设计工程师准备面试的专业指南,详细解析了数字电路验证岗位的核心技术和面试技巧。
### 数字IC验证面试知识点详解
#### 一、自我介绍及转行原因
在自我介绍中提到转行的原因时,可以强调个人职业发展与国家政策导向之间的契合点。当前,集成电路(IC)产业作为国家战略重点支持的领域之一,正经历着前所未有的发展机遇。政府不仅加大了对IC产业的投资力度,还在人才培养方面投入大量资源。对于求职者来说,投身IC行业不仅能获得较高的薪酬回报,还能参与到推动国家科技进步的重要工作中去。此外,个人兴趣也是转行的一个重要因素。
#### 二、MCDF覆盖率提升技巧
- **修改约束和创建新条件**:通过调整或增加新的测试约束可以覆盖更多的边界情况。
- **编写新的测试用例**:根据特定需求或功能编写新的测试用例以更全面地覆盖系统的各个方面。
- **设计Corner Case(极端情况)**:这些测试用例通常能够暴露出系统在常规测试中不易发现的问题。
- **排除不必要的覆盖率**:对于那些不影响系统功能或性能的区域,可以通过exclude机制将其从覆盖率统计中剔除,从而提高覆盖率的统计质量。
- **使用不同的随机种子**:采用不同随机数进行多次测试可以确保测试多样性和覆盖面。
- **代码覆盖指标**:关注line、paths、toggle、FSM等覆盖率指标以确保代码的不同层面都被充分测试。
#### 三、代码覆盖率成果
通过编写详尽的MCDF测试用例,可以实现寄存器读写100%的覆盖率。对于异步FIFO的读写寄存器,可以通过增加足够的随机化次数和审查未覆盖分支以达到90%以上的代码覆盖率。
#### 四、APB协议
- **信号定义**:APB协议涉及8个主要信号,包括时钟(clk)、复位(rst)、片选(psel)、使能(penable)、读写指示(pwrite)以及地址和数据输入输出信号。
- **状态机分析**:包含idel、setup和enable三个状态。正确实现这些状态之间的转换是确保协议实施的关键。
- **VIP实现**:APB的验证知识产权包括master agent和slave agent两个部分,通过驱动器、监视器等组件协同工作以模拟真实的APB交互过程。
#### 五、AHB总线协议
- **基本组成部分**:涉及master、slave译码与编码,并支持增量突发和回环突发两种模式。
- **传输流程**:包括地址相位(仅在一个周期内有效)和数据相位,后者可以持续多个周期并通过HREADY信号控制。
- **传输类型**:HTRANS[1:0]定义了四种状态,HBURST用于指示突发操作的类型。
#### 六、多时域设计中的信号处理
在不同时钟域之间传递信号需采取适当的同步措施以避免亚稳态问题。常用的策略包括使用两级触发器、异步FIFO或握手信号等方法。
#### 七、Moore与Mealy状态机特性
- **Moore状态机**:输出仅取决于当前状态,不受输入影响,并且在时钟边沿改变。
- **Mealy状态机**:其输出不仅依赖于当前状态还受输入的影响,在状态变化的同时也会发生变化。
#### 八、建立时间和保持时间
- **建立时间**:指数据必须稳定不变的时间以确保被正确捕获。
- **保持时间**:指在时钟上升沿之后,数据需维持稳定的时间以避免捕获错误。
#### 九、Logic、Wire与Reg的区别
- **基本概念**:`wire`表示组合逻辑中的连线,而`reg`则代表存储单元。
- **赋值方式**:使用`assign`语句对`wire`进行赋值;在always等代码块中为`reg`赋值。
- **逻辑实现**:综合时,对wire的赋值得到的是组合逻辑电路;对于reg,则可能得到时序或组合逻辑电路。
- **多驱动情况下的处理**:使用logic类型可以替代reg和wire,在某些情况下需要注意初始化问题。