EE新生
理解CDV,我觉得可以抓住两个关键词:『度量』和『闭环』。度量就是用覆盖率(包括功能覆盖和代码覆盖)量化验证进度;闭环就是根据度量结果反馈调整测试。在UVM里落地,第一步是在验证组件(如monitor或scoreboard)里定义covergroup,采样感兴趣的信号或事务。比如验证一个FIFO,你可能想覆盖所有可能的读写组合:空时读、满时写、同时读写等。第二步是跑回归测试,收集覆盖率报告。第三步分析报告,找出覆盖漏洞(coverage hole)。第四步针对漏洞,要么修改随机约束(让随机更易命中目标),要么写定向测试。面试举例时,可以说:『我在上一个项目验证FIFO时,先定义了covergroup采样fifo_empty, fifo_full, wr_en, rd_en等信号,并分成了多个bins。初始随机测试只覆盖了70%的功能点,报告显示“满状态下连续读”的场景缺失。于是我增加了约束,限制在满状态时停写只读,或者写了一个序列专门做这个操作,最终覆盖率达到95%以上。』这样回答既具体,又展示了分析能力和动手过程。
提醒:面试官可能追问如何区分覆盖率和断言(assertion),可以简单说断言是检查错误,覆盖率是检查是否测到,两者互补。
