OpenCores
URL https://opencores.org/ocsvn/qaz_libs/qaz_libs/trunk

Subversion Repositories qaz_libs

[/] [qaz_libs/] [trunk/] [BFM/] [src/] [SPI/] [spi_driver.svh] - Diff between revs 48 and 50

Show entire file | Details | Blame | View Log

Rev 48 Rev 50
Line 23... Line 23...
//// Public License along with this source; if not, download it   ////
//// Public License along with this source; if not, download it   ////
//// from http://www.opencores.org/lgpl.shtml                     ////
//// from http://www.opencores.org/lgpl.shtml                     ////
////                                                              ////
////                                                              ////
//////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////
 
 
class spi_driver
class spi_driver #(N)
  extends uvm_driver #(spi_sequence_item);
  extends uvm_driver #(spi_sequence_item);
   `uvm_component_utils(spi_driver)
   `uvm_component_param_utils(spi_driver #(N))
 
 
  // --------------------------------------------------------------------
  // --------------------------------------------------------------------
  virtual spi_if vif;
  virtual spi_if #(N) vif;
 
 
  //--------------------------------------------------------------------
  //--------------------------------------------------------------------
  function void set_default;
  function void set_default;
    vif.sclk <= 0;
    vif.sclk <= 0;
    vif.ss_n <= 1;
    vif.ss_n <= '1;
    vif.mosi <= 'x;
    vif.mosi <= 'x;
  endfunction: set_default
  endfunction: set_default
 
 
  //--------------------------------------------------------------------
  //--------------------------------------------------------------------
  virtual task run_phase(uvm_phase phase);
  virtual task run_phase(uvm_phase phase);
Line 49... Line 49...
    forever
    forever
    begin
    begin
      index = 0;
      index = 0;
      seq_item_port.get_next_item(item);
      seq_item_port.get_next_item(item);
 
 
      vif.ss_n <= 0;
      vif.ss_n <= ~(1 << item.ss_index);
 
 
      vif.mosi <= item.mosi_data[index];
      vif.mosi <= item.mosi_data[index];
      #(vif.period / 2);
      #(vif.period / 2);
 
 
      fork
      fork
        repeat(item.data_width)
        repeat(item.data_width)
Line 73... Line 74...
        @(vif.cb_fall);
        @(vif.cb_fall);
        vif.mosi <= item.mosi_data[index];
        vif.mosi <= item.mosi_data[index];
      end
      end
 
 
      #(vif.period / 2);
      #(vif.period / 2);
      vif.ss_n <= 1;
      vif.ss_n <= '1;
 
 
      set_default();
      set_default();
      seq_item_port.item_done();
      seq_item_port.item_done();
    end
    end
 
 
Line 87... Line 88...
  function new(string name, uvm_component parent);
  function new(string name, uvm_component parent);
    super.new(name, parent);
    super.new(name, parent);
  endfunction
  endfunction
 
 
// --------------------------------------------------------------------
// --------------------------------------------------------------------
endclass : spi_driver
endclass
endclass
endclass

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.