模块之间的连接随着设计复杂性的增加而变得复杂。通常连接DUT和Testbench有许多信号,一旦连接错误,平台就无法工作。而且很难发现错误。添加信号也很麻烦。逻辑设计变得如此复杂,即使是块之间的通信也必须分为独立的实体。SV中间接口是块之间的通信建模,可以看作是一捆智能连接。接口包含连接、同步甚至两块或两块以上的通信功能。它们与设计和测试平台相连。
`ifndef ROUTER_IO__SV `define ROUTER_IO__SV interface router_io(input bit clk); logic reset_n ; //logic为SV中新数据类型。四值逻辑 logic [15:0] frame_n ; logic [15:0] valid_n ; logic [15:0] din ; logic [15:0] dout ; logic [15:0] busy_n ; logic [15:0] valido_n ; logic [15:0] frameo_n ; clocking drvClk @(posedge clk); ///时钟通过clk同步块中的信号 output reset_n; output frame_n; output valid_n; output din; input busy_n; endclocking: drvClk clocking iMonClk @(posedge clk); input frame_n; input valid_n; input din; input busy_n; endclocking: iMonClk clocking oMonClk @(posedge clk); input dout; input valido_n; input frameo_n; endclocking: oMonClk modport driver(clocking drvClk, output reset_n); modport imon(clocking iMonClk); modport omon(clocking oMonClk); modport dut(input clk, reset_n, frame_n, valid_n, din, output dout, busy_n, valido_n, frameo_n); endinterface: router_io `endif