验证一个设计需要经过几个步骤:生成输入激励,捕获输出响应,决定对错和衡量进度。但是,首先需要一个合适的测试平台,并将它连接到设计上。
测试平台包裹着设计,发送激励并且捕获设计的输出。测试平台组成了设计周围的“真实世界”,模仿设计的整个运行环境。例如,一个处理器模型需要连接到不同的总线和器件,这些总线和器件在测试平台中就被建模成总线功能模型。一个网络设备连接到多个输入和输出数据流,这些数据流根据标准的协议建模。一个视频芯片连接到送入指令的总线,然后根据写入内存模型的数据重建图像。这里的核心概念是除了待测设计(DUT,Design Under Test) 的行为之外,测试平台仿真了其他的所有行为。由于Verilog的端口描述繁琐,代码常会长达数页,并且容易产生连接错误,所以测试平台需要一种更高层次的方法来跟设计建立通信。需要一种可靠的描述时序的方法,这样就可以在正确的时间点驱动和采样同步信号,避免Verilog模型中常见的竞争状态。
随着设计复杂度的增加,模块之间的连接也变得更加复杂。纠错或者添加新的信号的时候,时间人力成本非常高。解决上述问题的方法就是使用接口。它是SystemVerilog中一种代表一捆连线的结构,是具有智能同步和连接功能的代码。
给出一个测试平台连接到一个仲裁器的例子。
//使用端口的仲裁器模型
module arb_port(output logic [1:0