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

Subversion Repositories riscv_vhdl

[/] [riscv_vhdl/] [trunk/] [debugger/] [src/] [cpu_sysc_plugin/] [riverlib/] [cache/] [dcache.h] - Blame information for rev 4

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 3 sergeykhbr
/**
2
 * @file
3
 * @copyright  Copyright 2016 GNSS Sensor Ltd. All right reserved.
4
 * @author     Sergey Khabarov - sergeykhbr@gmail.com
5
 * @brief      Data Cache.
6
 */
7
 
8
#ifndef __DEBUGGER_RIVERLIB_DCACHE_H__
9
#define __DEBUGGER_RIVERLIB_DCACHE_H__
10
 
11
#include <systemc.h>
12
#include "../river_cfg.h"
13
 
14
namespace debugger {
15
 
16
SC_MODULE(DCache) {
17
    sc_in<bool> i_clk;
18
    sc_in<bool> i_nrst;
19
    // Data path:
20
    sc_in<bool> i_req_data_valid;
21
    sc_in<bool> i_req_data_write;
22
    sc_in<sc_uint<2>> i_req_data_sz;
23
    sc_in<sc_uint<BUS_ADDR_WIDTH>> i_req_data_addr;
24
    sc_in<sc_uint<RISCV_ARCH>> i_req_data_data;
25
    sc_out<bool> o_req_data_ready;
26
    sc_out<bool> o_resp_data_valid;
27
    sc_out<sc_uint<BUS_ADDR_WIDTH>> o_resp_data_addr;
28
    sc_out<sc_uint<RISCV_ARCH>> o_resp_data_data;
29
    sc_in<bool> i_resp_data_ready;
30
    // Memory interface:
31
    sc_in<bool> i_req_mem_ready;
32
    sc_out<bool> o_req_mem_valid;
33
    sc_out<bool> o_req_mem_write;
34
    sc_out<sc_uint<BUS_ADDR_WIDTH>> o_req_mem_addr;
35
    sc_out<sc_uint<BUS_DATA_BYTES>> o_req_mem_strob;
36
    sc_out<sc_uint<BUS_DATA_WIDTH>> o_req_mem_data;
37
    sc_in<bool> i_resp_mem_data_valid;
38
    sc_in<sc_uint<BUS_DATA_WIDTH>> i_resp_mem_data;
39
    sc_out<sc_uint<2>> o_dstate;
40
 
41
    void comb();
42
    void registers();
43
 
44
    SC_HAS_PROCESS(DCache);
45
 
46
    DCache(sc_module_name name_);
47
 
48
    void generateVCD(sc_trace_file *i_vcd, sc_trace_file *o_vcd);
49
 
50
private:
51
    enum EState {
52
        State_Idle,
53
        State_WaitGrant,
54
        State_WaitResp,
55
        State_WaitAccept
56
    };
57
 
58
    struct RegistersType {
59
        sc_signal<sc_uint<BUS_DATA_WIDTH>> dline_data;
60
        sc_signal<sc_uint<BUS_ADDR_WIDTH>> dline_addr_req;
61
        sc_signal<sc_uint<2>> dline_size_req;
62
        sc_signal<sc_uint<2>> state;
63
    } v, r;
64 4 sergeykhbr
    bool w_wait_response;
65 3 sergeykhbr
};
66
 
67
}  // namespace debugger
68
 
69
#endif  // __DEBUGGER_RIVERLIB_DCACHE_H__

powered by: WebSVN 2.1.0

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