这一边就作为这个系列最后一篇吧。最近有点忙,没什么状态来好好写。当验证工程师真的要懂得挺多东西。细细思考下来,自己知道的知识都其实有点肤浅的,每一项都没有研究透彻。这也是我停步不前的原因吧。
下面说说一些比较杂的知识点
1,覆盖率
继上文提及的覆盖率,是验证结果是否合格的判断标准。
代码覆盖率(语句覆盖率,条件覆盖率):判断有没有冗余的内容,有会浪费面积。
功能覆盖率:字面的意思,功能全不全。
assertion覆盖率:assertion的检测是否都检到了。
toogle覆盖率:输出port 有没有有些事异常的(一直没翻转)
2,面积与功耗的考虑
面积方面主要是逻辑上的考虑了。相同的逻辑,怎么简化的问题?比如除2用右移,判断大小可能只用某一1bit就够了,诸如此类。
功耗在数字前端的考虑主要是clk的gating的问题了。某一模块不用时,怎么把时钟关掉,而不影响下次启动。
3,搭建验证环境需要的脚本知识
Makefile,这是帮助搭建编译环境的工具。
cshell,tcl, perl, python, ruby, 这些我是在工作中学会了一些皮毛。主要是用来处理文本,生成case,生成一些重复代码,自动化比对等。
4,systemverilog
如果会verilog,systemverilog 其实很好上手的。sv主要用于验证环境的搭建比较方便。后来也用于设计了,设计上可综合部分的关键词和verilog差不多。
systemverilog 常用的几个属性有interface, clocking, constraint等。
5,UVM
UVM是基于sv设计的验证方法学,其实就是个架构,复用性很强。一开始我是在使用UVM,但公司的UVM环境太庞大,各种自定义的库,很难去理解,后来根据《UVM实战》本地搭建了一个简单的,总算理解了一些组件的含义,但是真实的使用还是有很长的路要走。
我接触过的跟验证相关的大致知识点大致就这些啦,欢迎网友们多多交流。