小言_互联网的博客

[SV]Interface基礎知識及應用實例

332人阅读  评论(0)

       以下代码展示的是Interface的一种推荐写法,如下面的代碼所示:

interface bsi_slv_if (input bit clk_ck, input bit rst_n);

  parameter setup_time = 0.5;
  parameter hold_time  = 0.5;

  logic [0:0]                        bsi_req;
  logic [0:0]                        bsi_ack;
  logic [31:0]                       bsi_data;
  logic [0:0]                        bsi_status;

  clocking ck @ (clk_ck);
    default input #0;
    input clk_ck;
  endclocking

  //Master Clocking Block
  clocking mck @(posedge clk_ck);
    default input #setup_time output #hold_time;
    
    output                            bsi_req;
    inout                             bsi_ack;
    output                            bsi_data;
    output                            bsi_status;

  endclocking : mck


  //Monitor Clocking Block
  clocking monck @(posedge clk_ck);
    default input #setup_time output #hold_time;
    
    input                             bsi_req;
    input                             bsi_ack;
    input                             bsi_data;
    input                             bsi_status;

  endclocking : monck

  modport mst(clocking ck, clocking mck, input clc_ck, input rst_n);
  modport mon(clocking ck, clocking monck, input clc_ck, input rst_n);


endinterface : bsi_slv_if

1、如何在Sequence中拿到Interface的值

       先set interface到Sequencer,然後在Sequence中申明virtual interface,最後在Sequence中透過透过p_sequencer去拿mon.monck.signal的值。

 

2、modport的使用

       如果不透過monck讀取,直接從modport中採樣,即為異步讀取。如果modport中没有申明端口方向,则default为input

 

3、同步和異步信號的處理

       

 

4、如果需要同步讀取Interface,只能透過mon.monck這個層次去讀。

 

 


转载:https://blog.csdn.net/gsjthxy/article/details/101613273
查看评论
* 以上用户言论只代表其个人观点,不代表本网站的观点或立场