今天我们主要跟随《芯片验证漫游指南》模块定义例化(7.2节)及接口(7.3节)
模块定义及例化这里,我们主要强调一个地方,就是参数化及宏的使用。在实际项目中,参数化是和宏是非常常用的。在设计中,我们要求所有变量都要通过宏来表示,没有宏名称表示的数字,我们会戏称其为“魔鬼数字”,因为其含义需要追溯才能理解,不便于调试及模块代码传承。但是验证环境中,由于需要兼顾效率,所以要求没有这么严格。
接口这里,我们一定是采用连接方式2,引用《芯片验证漫游指南》下图所示:
因为环境对复用性的要求非常高,这样的连接方式有利于实现模块化、组件化。
下面这句话也非常重要:
“此外要再次强调,如果用interface中的信号与DUT相连接,那么应该是四值逻辑,即logic/reg/wire等,而不是二值逻辑(bit/int/byte等)。这么做的考虑是,要确保在今后的stimulator到DUT的驱动场景或者DUT到monitor的数据采集场景中,硬件部分的X或Z信号不会被默认转换以至于丢失。”
这里往往是要求强制执行的,原因还是团队成员流动导致的验证水平的差异,我们需要通过明确的规则来抹平这个差异,让整个团队每个成员都能够在及格线上工作,提升流片成功率。