blob: b4cd5275c7bb14770d280ccf2ce68be25866c3fb [file] [log] [blame]
// Copyright lowRISC contributors.
// Licensed under the Apache License, Version 2.0, see LICENSE for details.
// SPDX-License-Identifier: Apache-2.0
class i2c_driver extends dv_base_driver #(i2c_item, i2c_agent_cfg);
`uvm_component_utils(i2c_driver)
`uvm_component_new
virtual task run_phase(uvm_phase phase);
reset_signals();
endtask : run_phase
virtual task reset_signals();
`uvm_info(`gtn, "driver in reset progress", UVM_DEBUG)
wait(cfg.vif.rst_ni === 1'b0);
cfg.vif.scl_o <= 1'bx;
cfg.vif.sda_o <= 1'bx;
@(cfg.vif.drv_tx_mp.drv_tx_cb);
wait(cfg.vif.rst_ni === 1'b1);
`uvm_info(`gtn, "driver out of reset", UVM_DEBUG)
cfg.vif.scl_o <= 1'b1;
cfg.vif.sda_o <= 1'b1;
cfg.vif.bus_status = BusFree;
@(cfg.vif.drv_tx_mp.drv_tx_cb);
endtask : reset_signals
endclass : i2c_driver