SV基础之连接设计和测试平台 SV的端口与测试平台背景绿皮书的第四章在近几年的工作中很少用到不过对于其中讲的某些点也有一些简单的看法。核心内容3-5 个要点接口时钟块断言我的理解说实话在读到绿皮书第4章的时候我感到有点陌生因为里面提到的很多用法在我过去的工作中都没怎么见过比如modport、program在UVM为主流的验证环境中几乎绝迹。但有些内容在UVM验证环境中依然扮演着至关重要的角色。interface在UVM验证环境中一般会有一个interface.sv文件其中罗列了所有TB需要和DUT连接的接口然后通过在tb_top上连接的方式将TB和DUT连接起来。在使用SV的interface中一般有两种信号线logic和wire。二者的区别和用法我之前在[[SV数据类型一]]中提到过除了之前提到的差异之外绿皮书4.3.2中还提到了logic类型的信号可以直接驱动而wire信号需要用assign来驱动。时钟块时钟块在uvm的环境中相对比较常用一般出现在interface中然后在driver、monitor等需要打拍的组件中通过使用vif.cb来访问信号。这样做可以消除竞争。如果我们仅用(posedge clk)来处理信号很容易出现driver驱动信号变化的时候monitor同时想要进行采样两个行为同时在时在时钟上升沿发生的时候monitor会采到变化后的值。但是实际电路是存在延时的需要有setup time和hold time时钟块的存在在某种程度上模拟了前仿中无法观察到的setup time和hold time。断言断言在整个验证过程中是非常有用的检查方法虽然在[[SV断言入门一]]和[[SV断言入门二]]中简单介绍了断言的用法但是断言的用法相当灵活用简短的文字可能无法完全描述清楚如果后续找到合适的例子也会继续分享。各家其实也有通用的断言库经过梳理后也是非常适合进行统一化、提升代码可读性的方法。