summaryrefslogtreecommitdiff
path: root/rtl/axilemu/axilemu_if.rdl
blob: 99283cfa97ef3ac97d81e66fd3fec7c297ee2899 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
addrmap axilemu_if {
    name = "AXI-Lite agent emulation interface";

	default hw = w;
    default sw = r;
    default regwidth = 32;
    default precedence = hw;

    reg {
        name = "Agent control register";

        field {
            desc = "Enable interrupt on pending read";

            hw = r;
            sw = rw;
        } ARINT[0:0] = 0;

        field {
            desc = "Enable interrupt on pending write";

            hw = r;
            sw = rw;
        } AWINT[1:1] = 0;

        field {
            desc = "Read command is pending";
        } ARVALID[8:8] = 0;

        field {
            desc = "Write command is pending";
        } AWVALID[9:9] = 0;

        field {
            desc = "Last read data acknowledged";

            hw = na;

            rclr;
            hwset;
        } RDONE[10:10] = 0;

        field {
            desc = "Write data is pending";
        } WVALID[11:11] = 0;

        field {
            desc = "Last write response acknowledged";

            hw = na;

            rclr;
            hwset;
        } BDONE[12:12] = 0;
    } CTRL @ 0x00;

    reg {
        name = "Read command channel";

        field {
            desc = "Read is pending";

            hw = r;

            rclr;
            hwset;
            swmod;
        } VALID[0:0] = 0;

        field {
            desc = "Read address";
        } ADDR[31:2];
    } AR @ 0x04;

    reg {
        name = "Write command channel";

        field {
            desc = "Write is pending";

            hw = r;

            rclr;
            hwset;
            swmod;
        } VALID[0:0] = 0;

        field {
            desc = "Write address";
        } ADDR[31:2];
    } AW @ 0x08;

    reg {
        name = "Read data channel";

        field {
            desc = "Read data";

            hw = r;
            sw = rw;

            swmod;
        } DATA[31:0];
    } R @ 0x0c;

    reg {
        name = "Write data channel";

        field {
            desc = "Write data";

            swacc;
        } DATA[31:0];
    } W @ 0x10;

    reg {
        name = "Write response channel";

        field {
            desc = "Valid response";

            hw = r;
            sw = rw;

            hwclr;
            woset;
        } VALID[0:0];
    } B @ 0x14;
};