OpenCores
URL https://opencores.org/ocsvn/an-fpga-implementation-of-low-latency-noc-based-mpsoc/an-fpga-implementation-of-low-latency-noc-based-mpsoc/trunk

Subversion Repositories an-fpga-implementation-of-low-latency-noc-based-mpsoc

[/] [an-fpga-implementation-of-low-latency-noc-based-mpsoc/] [trunk/] [mpsoc/] [src_processor/] [mor1kx-5.0/] [rtl/] [verilog/] [mor1kx.v] - Blame information for rev 48

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 48 alirezamon
/* ****************************************************************************
2
  This Source Code Form is subject to the terms of the
3
  Open Hardware Description License, v. 1.0. If a copy
4
  of the OHDL was not distributed with this file, You
5
  can obtain one at http://juliusbaxter.net/ohdl/ohdl.txt
6
 
7
  Description: mor1kx processor top level
8
 
9
  Copyright (C) 2012 Authors
10
 
11
  Author(s): Julius Baxter <juliusbaxter@gmail.com>
12
             Stefan Kristiansson <stefan.kristiansson@saunalahti.fi>
13
 
14
***************************************************************************** */
15
 
16
`include "mor1kx-defines.v"
17
 
18
module mor1kx
19
  #(
20
    parameter OPTION_OPERAND_WIDTH      = 32,
21
 
22
    parameter OPTION_CPU0               = "CAPPUCCINO",
23
 
24
    parameter FEATURE_DATACACHE         = "NONE",
25
    parameter OPTION_DCACHE_BLOCK_WIDTH = 5,
26
    parameter OPTION_DCACHE_SET_WIDTH   = 9,
27
    parameter OPTION_DCACHE_WAYS        = 2,
28
    parameter OPTION_DCACHE_LIMIT_WIDTH = 32,
29
    parameter OPTION_DCACHE_SNOOP = "NONE",
30
    parameter FEATURE_DMMU              = "NONE",
31
    parameter FEATURE_DMMU_HW_TLB_RELOAD = "NONE",
32
    parameter OPTION_DMMU_SET_WIDTH     = 6,
33
    parameter OPTION_DMMU_WAYS          = 1,
34
    parameter FEATURE_INSTRUCTIONCACHE  = "NONE",
35
    parameter OPTION_ICACHE_BLOCK_WIDTH = 5,
36
    parameter OPTION_ICACHE_SET_WIDTH   = 9,
37
    parameter OPTION_ICACHE_WAYS        = 2,
38
    parameter OPTION_ICACHE_LIMIT_WIDTH = 32,
39
    parameter FEATURE_IMMU              = "NONE",
40
    parameter FEATURE_IMMU_HW_TLB_RELOAD = "NONE",
41
    parameter OPTION_IMMU_SET_WIDTH     = 6,
42
    parameter OPTION_IMMU_WAYS          = 1,
43
    parameter FEATURE_TIMER             = "ENABLED",
44
    parameter FEATURE_DEBUGUNIT         = "NONE",
45
    parameter FEATURE_PERFCOUNTERS      = "NONE",
46
    parameter OPTION_PERFCOUNTERS_NUM = 0,
47
    parameter FEATURE_MAC               = "NONE",
48
 
49
    parameter FEATURE_SYSCALL           = "ENABLED",
50
    parameter FEATURE_TRAP              = "ENABLED",
51
    parameter FEATURE_RANGE             = "ENABLED",
52
 
53
    parameter FEATURE_PIC               = "ENABLED",
54
    parameter OPTION_PIC_TRIGGER        = "LEVEL",
55
    parameter OPTION_PIC_NMI_WIDTH      = 0,
56
 
57
    parameter FEATURE_DSX               = "ENABLED",
58
    parameter FEATURE_OVERFLOW          = "ENABLED",
59
    parameter FEATURE_CARRY_FLAG        = "ENABLED",
60
 
61
    parameter FEATURE_FASTCONTEXTS      = "NONE",
62
    parameter OPTION_RF_CLEAR_ON_INIT   = 0,
63
    parameter OPTION_RF_NUM_SHADOW_GPR  = 0,
64
    parameter OPTION_RF_ADDR_WIDTH      = 5,
65
    parameter OPTION_RF_WORDS           = 32,
66
 
67
    parameter OPTION_RESET_PC           = {{(OPTION_OPERAND_WIDTH-13){1'b0}},
68
                                           `OR1K_RESET_VECTOR,8'd0},
69
 
70
    parameter FEATURE_MULTIPLIER        = "THREESTAGE",
71
    parameter FEATURE_DIVIDER           = "SERIAL",
72
 
73
    parameter FEATURE_ADDC              = "ENABLED",
74
    parameter FEATURE_SRA               = "ENABLED",
75
    parameter FEATURE_ROR               = "NONE",
76
    parameter FEATURE_EXT               = "NONE",
77
    parameter FEATURE_CMOV              = "ENABLED",
78
    parameter FEATURE_FFL1              = "ENABLED",
79
    parameter FEATURE_ATOMIC            = "ENABLED",
80
 
81
    parameter FEATURE_CUST1             = "NONE",
82
    parameter FEATURE_CUST2             = "NONE",
83
    parameter FEATURE_CUST3             = "NONE",
84
    parameter FEATURE_CUST4             = "NONE",
85
    parameter FEATURE_CUST5             = "NONE",
86
    parameter FEATURE_CUST6             = "NONE",
87
    parameter FEATURE_CUST7             = "NONE",
88
    parameter FEATURE_CUST8             = "NONE",
89
 
90
    parameter FEATURE_FPU     = "NONE", // ENABLED|NONE: actual for cappuccino pipeline only
91
 
92
    parameter OPTION_SHIFTER            = "BARREL",
93
 
94
    parameter FEATURE_STORE_BUFFER      = "ENABLED",
95
    parameter OPTION_STORE_BUFFER_DEPTH_WIDTH = 8,
96
 
97
    parameter FEATURE_MULTICORE = "NONE",
98
 
99
    parameter FEATURE_TRACEPORT_EXEC = "NONE",
100
    parameter FEATURE_BRANCH_PREDICTOR = "SIMPLE",  // SIMPLE|SAT_COUNTER|GSHARE
101
 
102
    parameter BUS_IF_TYPE               = "WISHBONE32",
103
 
104
    parameter IBUS_WB_TYPE              = "B3_READ_BURSTING",
105
    parameter DBUS_WB_TYPE              = "CLASSIC"
106
    )
107
   (
108
    input                             clk,
109
    input                             rst,
110
 
111
    // Wishbone interface
112
    output [31:0]                      iwbm_adr_o,
113
    output                            iwbm_stb_o,
114
    output                            iwbm_cyc_o,
115
    output [3:0]                       iwbm_sel_o,
116
    output                            iwbm_we_o,
117
    output [2:0]                       iwbm_cti_o,
118
    output [1:0]                       iwbm_bte_o,
119
    output [31:0]                      iwbm_dat_o,
120
    input                             iwbm_err_i,
121
    input                             iwbm_ack_i,
122
    input [31:0]                       iwbm_dat_i,
123
    input                             iwbm_rty_i,
124
 
125
    output [31:0]                      dwbm_adr_o,
126
    output                            dwbm_stb_o,
127
    output                            dwbm_cyc_o,
128
    output [3:0]                       dwbm_sel_o,
129
    output                            dwbm_we_o,
130
    output [2:0]                       dwbm_cti_o,
131
    output [1:0]                       dwbm_bte_o,
132
    output [31:0]                      dwbm_dat_o,
133
    input                             dwbm_err_i,
134
    input                             dwbm_ack_i,
135
    input [31:0]                       dwbm_dat_i,
136
    input                             dwbm_rty_i,
137
 
138
    input [31:0]                       irq_i,
139
 
140
    // Debug interface
141
    input [15:0]                       du_addr_i,
142
    input                             du_stb_i,
143
    input [OPTION_OPERAND_WIDTH-1:0]  du_dat_i,
144
    input                             du_we_i,
145
    output [OPTION_OPERAND_WIDTH-1:0] du_dat_o,
146
    output                            du_ack_o,
147
    // Stall control from debug interface
148
    input                             du_stall_i,
149
    output                            du_stall_o,
150
 
151
    output                            traceport_exec_valid_o,
152
    output [31:0]                     traceport_exec_pc_o,
153
    output                            traceport_exec_jb_o,
154
    output                            traceport_exec_jal_o,
155
    output                            traceport_exec_jr_o,
156
    output [31:0]                     traceport_exec_jbtarget_o,
157
    output [`OR1K_INSN_WIDTH-1:0]     traceport_exec_insn_o,
158
    output [OPTION_OPERAND_WIDTH-1:0] traceport_exec_wbdata_o,
159
    output [OPTION_RF_ADDR_WIDTH-1:0] traceport_exec_wbreg_o,
160
    output                           traceport_exec_wben_o,
161
 
162
    // The multicore core identifier
163
    input [OPTION_OPERAND_WIDTH-1:0]  multicore_coreid_i,
164
    // The number of cores
165
    input [OPTION_OPERAND_WIDTH-1:0]  multicore_numcores_i,
166
 
167
    input [31:0]                      snoop_adr_i,
168
    input                            snoop_en_i
169
    );
170
 
171
   /*AUTOWIRE*/
172
   // Beginning of automatic wires (for undeclared instantiated-module outputs)
173
   wire [OPTION_OPERAND_WIDTH-1:0] dbus_adr_o;   // From mor1kx_cpu of mor1kx_cpu.v
174
   wire [3:0]            dbus_bsel_o;            // From mor1kx_cpu of mor1kx_cpu.v
175
   wire                 dbus_burst_o;           // From mor1kx_cpu of mor1kx_cpu.v
176
   wire [OPTION_OPERAND_WIDTH-1:0] dbus_dat_o;   // From mor1kx_cpu of mor1kx_cpu.v
177
   wire                 dbus_req_o;             // From mor1kx_cpu of mor1kx_cpu.v
178
   wire                 dbus_we_o;              // From mor1kx_cpu of mor1kx_cpu.v
179
   wire [OPTION_OPERAND_WIDTH-1:0] ibus_adr_o;   // From mor1kx_cpu of mor1kx_cpu.v
180
   wire                 ibus_burst_o;           // From mor1kx_cpu of mor1kx_cpu.v
181
   wire                 ibus_req_o;             // From mor1kx_cpu of mor1kx_cpu.v
182
   wire [15:0]           spr_bus_addr_o;         // From mor1kx_cpu of mor1kx_cpu.v
183
   wire [OPTION_OPERAND_WIDTH-1:0] spr_bus_dat_o;// From mor1kx_cpu of mor1kx_cpu.v
184
   wire                 spr_bus_stb_o;          // From mor1kx_cpu of mor1kx_cpu.v
185
   wire                 spr_bus_we_o;           // From mor1kx_cpu of mor1kx_cpu.v
186
   wire [15:0]           spr_sr_o;               // From mor1kx_cpu of mor1kx_cpu.v
187
   // End of automatics
188
 
189
   wire                            ibus_ack_i;
190
   wire [OPTION_OPERAND_WIDTH-1:0] ibus_dat_i;
191
   wire                            ibus_err_i;
192
 
193
   wire                            dbus_ack_i;
194
   wire [OPTION_OPERAND_WIDTH-1:0] dbus_dat_i;
195
   wire                            dbus_err_i;
196
 
197
   generate
198
      if (BUS_IF_TYPE=="WISHBONE32") begin : bus_gen
199
 
200
         /* mor1kx_bus_if_wb32 AUTO_TEMPLATE (
201
          .cpu_err_o                    (ibus_err_i),
202
          .cpu_ack_o                    (ibus_ack_i),
203
          .cpu_dat_o                    (ibus_dat_i[`OR1K_INSN_WIDTH-1:0]),
204
          .wbm_adr_o                    (iwbm_adr_o),
205
          .wbm_stb_o                    (iwbm_stb_o),
206
          .wbm_cyc_o                    (iwbm_cyc_o),
207
          .wbm_sel_o                    (iwbm_sel_o),
208
          .wbm_we_o                     (iwbm_we_o),
209
          .wbm_cti_o                    (iwbm_cti_o),
210
          .wbm_bte_o                    (iwbm_bte_o),
211
          .wbm_dat_o                    (iwbm_dat_o),
212
          // Inputs
213
          .cpu_adr_i                    (ibus_adr_o),
214
          .cpu_dat_i                    ({OPTION_OPERAND_WIDTH{1'b0}}),
215
          .cpu_req_i                    (ibus_req_o),
216
          .cpu_we_i                     (1'b0),
217
          .cpu_bsel_i                   (4'b1111),
218
          .cpu_burst_i                  (ibus_burst_o),
219
          .wbm_err_i                    (iwbm_err_i),
220
          .wbm_ack_i                    (iwbm_ack_i),
221
          .wbm_dat_i                    (iwbm_dat_i),
222
          .wbm_rty_i                    (iwbm_rty_i),
223
          ); */
224
 
225
         mor1kx_bus_if_wb32
226
           #(.BUS_IF_TYPE(IBUS_WB_TYPE),
227
             .BURST_LENGTH((FEATURE_INSTRUCTIONCACHE != "NONE") ?
228
                           ((OPTION_ICACHE_BLOCK_WIDTH == 4) ? 4 :
229
                            ((OPTION_ICACHE_BLOCK_WIDTH == 5) ? 8 : 1))
230
                           : 1 ))
231
         ibus_bridge
232
                      (/*AUTOINST*/
233
                       // Outputs
234
                       .cpu_err_o       (ibus_err_i),            // Templated
235
                       .cpu_ack_o       (ibus_ack_i),            // Templated
236
                       .cpu_dat_o       (ibus_dat_i[`OR1K_INSN_WIDTH-1:0]), // Templated
237
                       .wbm_adr_o       (iwbm_adr_o),            // Templated
238
                       .wbm_stb_o       (iwbm_stb_o),            // Templated
239
                       .wbm_cyc_o       (iwbm_cyc_o),            // Templated
240
                       .wbm_sel_o       (iwbm_sel_o),            // Templated
241
                       .wbm_we_o        (iwbm_we_o),             // Templated
242
                       .wbm_cti_o       (iwbm_cti_o),            // Templated
243
                       .wbm_bte_o       (iwbm_bte_o),            // Templated
244
                       .wbm_dat_o       (iwbm_dat_o),            // Templated
245
                       // Inputs
246
                       .clk             (clk),
247
                       .rst             (rst),
248
                       .cpu_adr_i       (ibus_adr_o),            // Templated
249
                       .cpu_dat_i       ({OPTION_OPERAND_WIDTH{1'b0}}), // Templated
250
                       .cpu_req_i       (ibus_req_o),            // Templated
251
                       .cpu_bsel_i      (4'b1111),               // Templated
252
                       .cpu_we_i        (1'b0),                  // Templated
253
                       .cpu_burst_i     (ibus_burst_o),          // Templated
254
                       .wbm_err_i       (iwbm_err_i),            // Templated
255
                       .wbm_ack_i       (iwbm_ack_i),            // Templated
256
                       .wbm_dat_i       (iwbm_dat_i),            // Templated
257
                       .wbm_rty_i       (iwbm_rty_i));           // Templated
258
 
259
         /* mor1kx_bus_if_wb32 AUTO_TEMPLATE (
260
          .cpu_err_o                    (dbus_err_i),
261
          .cpu_ack_o                    (dbus_ack_i),
262
          .cpu_dat_o                    (dbus_dat_i[OPTION_OPERAND_WIDTH-1:0]),
263
          .wbm_adr_o                    (dwbm_adr_o),
264
          .wbm_stb_o                    (dwbm_stb_o),
265
          .wbm_cyc_o                    (dwbm_cyc_o),
266
          .wbm_sel_o                    (dwbm_sel_o),
267
          .wbm_we_o                     (dwbm_we_o),
268
          .wbm_cti_o                    (dwbm_cti_o),
269
          .wbm_bte_o                    (dwbm_bte_o),
270
          .wbm_dat_o                    (dwbm_dat_o),
271
          // Inputs
272
          .cpu_adr_i                    (dbus_adr_o[31:0]),
273
          .cpu_dat_i                    (dbus_dat_o),
274
          .cpu_req_i                    (dbus_req_o),
275
          .cpu_we_i                     (dbus_we_o),
276
          .cpu_bsel_i                   (dbus_bsel_o),
277
          .cpu_burst_i                  (dbus_burst_o),
278
          .wbm_err_i                    (dwbm_err_i),
279
          .wbm_ack_i                    (dwbm_ack_i),
280
          .wbm_dat_i                    (dwbm_dat_i),
281
          .wbm_rty_i                    (dwbm_rty_i),
282
          ); */
283
 
284
         mor1kx_bus_if_wb32
285
           #(.BUS_IF_TYPE(DBUS_WB_TYPE),
286
             .BURST_LENGTH((FEATURE_DATACACHE != "NONE") ?
287
                           ((OPTION_DCACHE_BLOCK_WIDTH == 4) ? 4 :
288
                            ((OPTION_DCACHE_BLOCK_WIDTH == 5) ? 8 : 1))
289
                           : 1 ))
290
         dbus_bridge
291
           (/*AUTOINST*/
292
            // Outputs
293
            .cpu_err_o                  (dbus_err_i),            // Templated
294
            .cpu_ack_o                  (dbus_ack_i),            // Templated
295
            .cpu_dat_o                  (dbus_dat_i[OPTION_OPERAND_WIDTH-1:0]), // Templated
296
            .wbm_adr_o                  (dwbm_adr_o),            // Templated
297
            .wbm_stb_o                  (dwbm_stb_o),            // Templated
298
            .wbm_cyc_o                  (dwbm_cyc_o),            // Templated
299
            .wbm_sel_o                  (dwbm_sel_o),            // Templated
300
            .wbm_we_o                   (dwbm_we_o),             // Templated
301
            .wbm_cti_o                  (dwbm_cti_o),            // Templated
302
            .wbm_bte_o                  (dwbm_bte_o),            // Templated
303
            .wbm_dat_o                  (dwbm_dat_o),            // Templated
304
            // Inputs
305
            .clk                        (clk),
306
            .rst                        (rst),
307
            .cpu_adr_i                  (dbus_adr_o[31:0]),       // Templated
308
            .cpu_dat_i                  (dbus_dat_o),            // Templated
309
            .cpu_req_i                  (dbus_req_o),            // Templated
310
            .cpu_bsel_i                 (dbus_bsel_o),           // Templated
311
            .cpu_we_i                   (dbus_we_o),             // Templated
312
            .cpu_burst_i                (dbus_burst_o),          // Templated
313
            .wbm_err_i                  (dwbm_err_i),            // Templated
314
            .wbm_ack_i                  (dwbm_ack_i),            // Templated
315
            .wbm_dat_i                  (dwbm_dat_i),            // Templated
316
            .wbm_rty_i                  (dwbm_rty_i));           // Templated
317
 
318
      end else begin
319
           initial begin
320
              $display("Error: BUS_IF_TYPE not correct");
321
              $finish();
322
           end
323
        end // else: !if(BUS_IF_TYPE=="WISHBONE32")
324
   endgenerate
325
 
326
   /* mor1kx_cpu AUTO_TEMPLATE
327
    (
328
    .spr_bus_dat_dmmu_i         (),
329
    .spr_bus_ack_dmmu_i         (),
330
    .spr_bus_dat_immu_i         (),
331
    .spr_bus_ack_immu_i         (),
332
    .spr_bus_dat_mac_i          (),
333
    .spr_bus_ack_mac_i          (),
334
    .spr_bus_dat_pmu_i          (),
335
    .spr_bus_ack_pmu_i          (),
336
    .spr_bus_dat_pcu_i          (),
337
    .spr_bus_ack_pcu_i          (),
338
    .spr_bus_dat_fpu_i          (),
339
    .spr_bus_ack_fpu_i          (),
340
    ); */
341
   mor1kx_cpu
342
           #(
343
             .OPTION_OPERAND_WIDTH(OPTION_OPERAND_WIDTH),
344
             .OPTION_CPU(OPTION_CPU0),
345
             .FEATURE_DATACACHE(FEATURE_DATACACHE),
346
             .OPTION_DCACHE_BLOCK_WIDTH(OPTION_DCACHE_BLOCK_WIDTH),
347
             .OPTION_DCACHE_SET_WIDTH(OPTION_DCACHE_SET_WIDTH),
348
             .OPTION_DCACHE_WAYS(OPTION_DCACHE_WAYS),
349
             .OPTION_DCACHE_LIMIT_WIDTH(OPTION_DCACHE_LIMIT_WIDTH),
350
             .OPTION_DCACHE_SNOOP(OPTION_DCACHE_SNOOP),
351
             .FEATURE_DMMU(FEATURE_DMMU),
352
             .FEATURE_DMMU_HW_TLB_RELOAD(FEATURE_DMMU_HW_TLB_RELOAD),
353
             .OPTION_DMMU_SET_WIDTH(OPTION_DMMU_SET_WIDTH),
354
             .OPTION_DMMU_WAYS(OPTION_DMMU_WAYS),
355
             .FEATURE_INSTRUCTIONCACHE(FEATURE_INSTRUCTIONCACHE),
356
             .OPTION_ICACHE_BLOCK_WIDTH(OPTION_ICACHE_BLOCK_WIDTH),
357
             .OPTION_ICACHE_SET_WIDTH(OPTION_ICACHE_SET_WIDTH),
358
             .OPTION_ICACHE_WAYS(OPTION_ICACHE_WAYS),
359
             .OPTION_ICACHE_LIMIT_WIDTH(OPTION_ICACHE_LIMIT_WIDTH),
360
             .FEATURE_IMMU(FEATURE_IMMU),
361
             .FEATURE_IMMU_HW_TLB_RELOAD(FEATURE_IMMU_HW_TLB_RELOAD),
362
             .OPTION_IMMU_SET_WIDTH(OPTION_IMMU_SET_WIDTH),
363
             .OPTION_IMMU_WAYS(OPTION_IMMU_WAYS),
364
             .FEATURE_PIC(FEATURE_PIC),
365
             .FEATURE_TIMER(FEATURE_TIMER),
366
             .FEATURE_DEBUGUNIT(FEATURE_DEBUGUNIT),
367
             .FEATURE_PERFCOUNTERS(FEATURE_PERFCOUNTERS),
368
             .OPTION_PERFCOUNTERS_NUM(OPTION_PERFCOUNTERS_NUM),
369
             .FEATURE_MAC(FEATURE_MAC),
370
             .FEATURE_SYSCALL(FEATURE_SYSCALL),
371
             .FEATURE_TRAP(FEATURE_TRAP),
372
             .FEATURE_RANGE(FEATURE_RANGE),
373
             .OPTION_PIC_TRIGGER(OPTION_PIC_TRIGGER),
374
             .OPTION_PIC_NMI_WIDTH(OPTION_PIC_NMI_WIDTH),
375
             .FEATURE_DSX(FEATURE_DSX),
376
             .FEATURE_OVERFLOW(FEATURE_OVERFLOW),
377
             .FEATURE_CARRY_FLAG(FEATURE_CARRY_FLAG),
378
             .FEATURE_FASTCONTEXTS(FEATURE_FASTCONTEXTS),
379
             .OPTION_RF_CLEAR_ON_INIT(OPTION_RF_CLEAR_ON_INIT),
380
             .OPTION_RF_NUM_SHADOW_GPR(OPTION_RF_NUM_SHADOW_GPR),
381
             .OPTION_RF_ADDR_WIDTH(OPTION_RF_ADDR_WIDTH),
382
             .OPTION_RF_WORDS(OPTION_RF_WORDS),
383
             .OPTION_RESET_PC(OPTION_RESET_PC),
384
             .FEATURE_MULTIPLIER(FEATURE_MULTIPLIER),
385
             .FEATURE_DIVIDER(FEATURE_DIVIDER),
386
             .FEATURE_ADDC(FEATURE_ADDC),
387
             .FEATURE_SRA(FEATURE_SRA),
388
             .FEATURE_ROR(FEATURE_ROR),
389
             .FEATURE_EXT(FEATURE_EXT),
390
             .FEATURE_CMOV(FEATURE_CMOV),
391
             .FEATURE_FFL1(FEATURE_FFL1),
392
             .FEATURE_ATOMIC(FEATURE_ATOMIC),
393
             .FEATURE_FPU(FEATURE_FPU), // mor1kx_cpu instance
394
             .FEATURE_CUST1(FEATURE_CUST1),
395
             .FEATURE_CUST2(FEATURE_CUST2),
396
             .FEATURE_CUST3(FEATURE_CUST3),
397
             .FEATURE_CUST4(FEATURE_CUST4),
398
             .FEATURE_CUST5(FEATURE_CUST5),
399
             .FEATURE_CUST6(FEATURE_CUST6),
400
             .FEATURE_CUST7(FEATURE_CUST7),
401
             .FEATURE_CUST8(FEATURE_CUST8),
402
             .OPTION_SHIFTER(OPTION_SHIFTER),
403
             .FEATURE_STORE_BUFFER(FEATURE_STORE_BUFFER),
404
             .OPTION_STORE_BUFFER_DEPTH_WIDTH(OPTION_STORE_BUFFER_DEPTH_WIDTH),
405
             .FEATURE_MULTICORE(FEATURE_MULTICORE),
406
             .FEATURE_TRACEPORT_EXEC(FEATURE_TRACEPORT_EXEC),
407
             .FEATURE_BRANCH_PREDICTOR(FEATURE_BRANCH_PREDICTOR)
408
             )
409
   mor1kx_cpu
410
     (/*AUTOINST*/
411
      // Outputs
412
      .ibus_adr_o                       (ibus_adr_o[OPTION_OPERAND_WIDTH-1:0]),
413
      .ibus_req_o                       (ibus_req_o),
414
      .ibus_burst_o                     (ibus_burst_o),
415
      .dbus_adr_o                       (dbus_adr_o[OPTION_OPERAND_WIDTH-1:0]),
416
      .dbus_dat_o                       (dbus_dat_o[OPTION_OPERAND_WIDTH-1:0]),
417
      .dbus_req_o                       (dbus_req_o),
418
      .dbus_bsel_o                      (dbus_bsel_o[3:0]),
419
      .dbus_we_o                        (dbus_we_o),
420
      .dbus_burst_o                     (dbus_burst_o),
421
      .du_dat_o                         (du_dat_o[OPTION_OPERAND_WIDTH-1:0]),
422
      .du_ack_o                         (du_ack_o),
423
      .du_stall_o                       (du_stall_o),
424
      .traceport_exec_valid_o           (traceport_exec_valid_o),
425
      .traceport_exec_pc_o              (traceport_exec_pc_o[31:0]),
426
      .traceport_exec_jb_o              (traceport_exec_jb_o),
427
      .traceport_exec_jal_o             (traceport_exec_jal_o),
428
      .traceport_exec_jr_o              (traceport_exec_jr_o),
429
      .traceport_exec_jbtarget_o        (traceport_exec_jbtarget_o[31:0]),
430
      .traceport_exec_insn_o            (traceport_exec_insn_o[`OR1K_INSN_WIDTH-1:0]),
431
      .traceport_exec_wbdata_o          (traceport_exec_wbdata_o[OPTION_OPERAND_WIDTH-1:0]),
432
      .traceport_exec_wbreg_o           (traceport_exec_wbreg_o[OPTION_RF_ADDR_WIDTH-1:0]),
433
      .traceport_exec_wben_o            (traceport_exec_wben_o),
434
      .spr_bus_addr_o                   (spr_bus_addr_o[15:0]),
435
      .spr_bus_we_o                     (spr_bus_we_o),
436
      .spr_bus_stb_o                    (spr_bus_stb_o),
437
      .spr_bus_dat_o                    (spr_bus_dat_o[OPTION_OPERAND_WIDTH-1:0]),
438
      .spr_sr_o                         (spr_sr_o[15:0]),
439
      // Inputs
440
      .clk                              (clk),
441
      .rst                              (rst),
442
      .ibus_err_i                       (ibus_err_i),
443
      .ibus_ack_i                       (ibus_ack_i),
444
      .ibus_dat_i                       (ibus_dat_i[`OR1K_INSN_WIDTH-1:0]),
445
      .dbus_err_i                       (dbus_err_i),
446
      .dbus_ack_i                       (dbus_ack_i),
447
      .dbus_dat_i                       (dbus_dat_i[OPTION_OPERAND_WIDTH-1:0]),
448
      .irq_i                            (irq_i[31:0]),
449
      .du_addr_i                        (du_addr_i[15:0]),
450
      .du_stb_i                         (du_stb_i),
451
      .du_dat_i                         (du_dat_i[OPTION_OPERAND_WIDTH-1:0]),
452
      .du_we_i                          (du_we_i),
453
      .du_stall_i                       (du_stall_i),
454
      .spr_bus_dat_dmmu_i               (),                      // Templated
455
      .spr_bus_ack_dmmu_i               (),                      // Templated
456
      .spr_bus_dat_immu_i               (),                      // Templated
457
      .spr_bus_ack_immu_i               (),                      // Templated
458
      .spr_bus_dat_mac_i                (),                      // Templated
459
      .spr_bus_ack_mac_i                (),                      // Templated
460
      .spr_bus_dat_pmu_i                (),                      // Templated
461
      .spr_bus_ack_pmu_i                (),                      // Templated
462
      .spr_bus_dat_pcu_i                (),                      // Templated
463
      .spr_bus_ack_pcu_i                (),                      // Templated
464
      .spr_bus_dat_fpu_i                (),                      // Templated
465
      .spr_bus_ack_fpu_i                (),                      // Templated
466
      .multicore_coreid_i               (multicore_coreid_i[OPTION_OPERAND_WIDTH-1:0]),
467
      .multicore_numcores_i             (multicore_numcores_i[OPTION_OPERAND_WIDTH-1:0]),
468
      .snoop_adr_i                      (snoop_adr_i[31:0]),
469
      .snoop_en_i                       (snoop_en_i));
470
 
471
endmodule // mor1kx

powered by: WebSVN 2.1.0

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