SV中的interface

随着设计复杂度的增加,模块之间的连接也变的复杂。通常连接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

你可能感兴趣的:(读书笔记,测试)