1// 2// Copyright (c) 2010-2024 Antmicro 3// 4// This file is licensed under the MIT License. 5// Full license text is available in 'licenses/MIT.txt'. 6// 7 8interface renode_axi_if #( 9 int unsigned AddressWidth = 32, 10 int unsigned DataWidth = 32, 11 int unsigned TransactionIdWidth = 8 12) ( 13 input logic aclk 14); 15 import renode_axi_pkg::*; 16 17 localparam int unsigned StrobeWidth = (DataWidth / 8); 18 19 typedef logic [AddressWidth-1:0] address_t; 20 typedef logic [DataWidth-1:0] data_t; 21 typedef logic [StrobeWidth-1:0] strobe_t; 22 typedef logic [TransactionIdWidth-1:0] transaction_id_t; 23 24 logic areset_n; 25 transaction_id_t awid; 26 address_t awaddr; 27 burst_length_t awlen; 28 burst_size_t awsize; 29 burst_type_t awburst; 30 logic awlock; 31 logic [3:0] awcache; 32 logic [2:0] awprot; 33 logic awvalid; 34 logic awready; 35 data_t wdata; 36 strobe_t wstrb; 37 logic wlast; 38 logic wvalid; 39 logic wready; 40 transaction_id_t bid; 41 response_t bresp; 42 logic bvalid; 43 logic bready; 44 transaction_id_t arid; 45 address_t araddr; 46 burst_length_t arlen; 47 burst_size_t arsize; 48 burst_type_t arburst; 49 logic arlock; 50 logic [3:0] arcache; 51 logic [2:0] arprot; 52 logic arvalid; 53 logic arready; 54 transaction_id_t rid; 55 data_t rdata; 56 response_t rresp; 57 logic rlast; 58 logic rvalid; 59 logic rready; 60 61 function static bit are_valid_bits_supported(renode_pkg::valid_bits_e valid_bits); 62 case (valid_bits) 63 renode_pkg::Byte: return DataWidth >= 8; 64 renode_pkg::Word: return DataWidth >= 16; 65 renode_pkg::DoubleWord: return DataWidth >= 32; 66 renode_pkg::QuadWord: return DataWidth >= 64; 67 default: return 0; 68 endcase 69 endfunction 70 71 function static burst_size_t valid_bits_to_burst_size(renode_pkg::valid_bits_e valid_bits); 72 case (valid_bits) 73 renode_pkg::Byte: return 'b000; 74 renode_pkg::Word: return 'b001; 75 renode_pkg::DoubleWord: return 'b010; 76 renode_pkg::QuadWord: return 'b011; 77 default: return 'x; 78 endcase 79 endfunction 80 81 function static renode_pkg::valid_bits_e burst_size_to_valid_bits(burst_size_t burst_size); 82 case (burst_size) 83 'b000: return renode_pkg::Byte; 84 'b001: return renode_pkg::Word; 85 'b010: return renode_pkg::DoubleWord; 86 'b011: return renode_pkg::QuadWord; 87 default: return renode_pkg::valid_bits_e'(0); 88 endcase 89 endfunction 90 91 function automatic strobe_t burst_size_to_strobe(burst_size_t burst_size); 92 int unsigned bytes_count = 2 ** burst_size; 93 return strobe_t'((1 << bytes_count) - 1); 94 endfunction 95endinterface 96