| // Copyright lowRISC contributors. |
| // Licensed under the Apache License, Version 2.0, see LICENSE for details. |
| // SPDX-License-Identifier: Apache-2.0 |
| |
| // This is an EDN interface. |
| // It deals with the force paths in EDN interrupt and error tests, |
| // and helps pass the disable signal to the csrng agent. |
| |
| interface edn_if(input clk, input rst_n); |
| |
| import uvm_pkg::*; |
| |
| string core_path = "tb.dut.u_edn_core"; |
| logic edn_disable_o; |
| |
| function automatic string fifo_err_path(string fifo_name, string which_path); |
| return {core_path, ".", fifo_name, "_", which_path}; |
| endfunction // fifo_err_path |
| |
| function automatic string sm_err_path(string which_sm); |
| case (which_sm) |
| "edn_ack_sm": return {core_path, ".gen_ep_blk[0].u_edn_ack_sm_ep.state_q"}; |
| "edn_main_sm": return {core_path, ".u_edn_main_sm.state_q"}; |
| default: `uvm_fatal("edn_if", "Invalid sm name!") |
| endcase // case (which_sm) |
| endfunction // sm_err_path |
| |
| function automatic string cntr_err_path(); |
| return {core_path, ".u_prim_count_max_reqs_cntr.err_o"}; |
| endfunction // cntr_err_path |
| |
| function automatic drive_edn_disable(bit val); |
| edn_disable_o = val; |
| endfunction |
| |
| endinterface // edn_if |