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-3.1/] [rtl/] [verilog/] [mor1kx_cpu_espresso.v] - Blame information for rev 38

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 38 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: Espresso pipeline CPU module
8
 
9
  Copyright (C) 2012 Authors
10
 
11
  Author(s): Julius Baxter <juliusbaxter@gmail.com>
12
 
13
***************************************************************************** */
14
 
15
`include "mor1kx-defines.v"
16
 
17
module mor1kx_cpu_espresso
18
  #(
19
    parameter OPTION_OPERAND_WIDTH      = 32,
20
 
21
    parameter FEATURE_DATACACHE         = "NONE",
22
    parameter OPTION_DCACHE_BLOCK_WIDTH = 5,
23
    parameter OPTION_DCACHE_SET_WIDTH   = 9,
24
    parameter OPTION_DCACHE_WAYS        = 2,
25
    parameter FEATURE_DMMU              = "NONE",
26
    parameter FEATURE_DMMU_HW_TLB_RELOAD = "NONE",
27
    parameter FEATURE_INSTRUCTIONCACHE  = "NONE",
28
    parameter OPTION_ICACHE_BLOCK_WIDTH = 5,
29
    parameter OPTION_ICACHE_SET_WIDTH   = 9,
30
    parameter OPTION_ICACHE_WAYS        = 2,
31
    parameter FEATURE_IMMU              = "NONE",
32
    parameter FEATURE_IMMU_HW_TLB_RELOAD = "NONE",
33
    parameter FEATURE_TIMER             = "ENABLED",
34
    parameter FEATURE_DEBUGUNIT         = "NONE",
35
    parameter FEATURE_PERFCOUNTERS      = "NONE",
36
    parameter FEATURE_MAC               = "NONE",
37
 
38
    parameter FEATURE_SYSCALL           = "ENABLED",
39
    parameter FEATURE_TRAP              = "ENABLED",
40
    parameter FEATURE_RANGE             = "ENABLED",
41
 
42
    parameter FEATURE_PIC               = "ENABLED",
43
    parameter OPTION_PIC_TRIGGER        = "LEVEL",
44
    parameter OPTION_PIC_NMI_WIDTH      = 0,
45
 
46
    parameter FEATURE_DSX               = "NONE",
47
    parameter FEATURE_FASTCONTEXTS      = "NONE",
48
    parameter FEATURE_OVERFLOW          = "NONE",
49
    parameter FEATURE_CARRY_FLAG        = "ENABLED",
50
 
51
    parameter OPTION_RF_ADDR_WIDTH      = 5,
52
    parameter OPTION_RF_WORDS           = 32,
53
 
54
    parameter OPTION_RESET_PC           = {{(OPTION_OPERAND_WIDTH-13){1'b0}},
55
                                           `OR1K_RESET_VECTOR,8'd0},
56
 
57
    parameter FEATURE_MULTIPLIER                = "THREESTAGE",
58
    parameter FEATURE_DIVIDER           = "NONE",
59
 
60
    parameter FEATURE_ADDC              = "NONE",
61
    parameter FEATURE_SRA               = "ENABLED",
62
    parameter FEATURE_ROR               = "NONE",
63
    parameter FEATURE_EXT               = "NONE",
64
    parameter FEATURE_CMOV              = "NONE",
65
    parameter FEATURE_FFL1              = "NONE",
66
    parameter FEATURE_MSYNC             = "NONE",
67
    parameter FEATURE_PSYNC             = "NONE",
68
    parameter FEATURE_CSYNC             = "NONE",
69
 
70
    parameter FEATURE_CUST1             = "NONE",
71
    parameter FEATURE_CUST2             = "NONE",
72
    parameter FEATURE_CUST3             = "NONE",
73
    parameter FEATURE_CUST4             = "NONE",
74
    parameter FEATURE_CUST5             = "NONE",
75
    parameter FEATURE_CUST6             = "NONE",
76
    parameter FEATURE_CUST7             = "NONE",
77
    parameter FEATURE_CUST8             = "NONE",
78
 
79
    parameter OPTION_SHIFTER            = "BARREL",
80
 
81
    parameter FEATURE_MULTICORE = "NONE",
82
 
83
    parameter FEATURE_TRACEPORT_EXEC = "NONE"
84
    )
85
   (
86
    input                             clk,
87
    input                             rst,
88
 
89
    // Instruction bus
90
    input                             ibus_err_i,
91
    input                             ibus_ack_i,
92
    input [`OR1K_INSN_WIDTH-1:0]      ibus_dat_i,
93
    output [OPTION_OPERAND_WIDTH-1:0] ibus_adr_o,
94
    output                            ibus_req_o,
95
    output                            ibus_burst_o,
96
 
97
    // Data bus
98
    input                             dbus_err_i,
99
    input                             dbus_ack_i,
100
    input [OPTION_OPERAND_WIDTH-1:0]  dbus_dat_i,
101
    output [OPTION_OPERAND_WIDTH-1:0] dbus_adr_o,
102
    output [OPTION_OPERAND_WIDTH-1:0] dbus_dat_o,
103
    output                            dbus_req_o,
104
    output [3:0]                       dbus_bsel_o,
105
    output                            dbus_we_o,
106
    output                            dbus_burst_o,
107
 
108
    // Interrupts
109
    input [31:0]                       irq_i,
110
 
111
    // Debug interface
112
    input [15:0]                       du_addr_i,
113
    input                             du_stb_i,
114
    input [OPTION_OPERAND_WIDTH-1:0]  du_dat_i,
115
    input                             du_we_i,
116
    output [OPTION_OPERAND_WIDTH-1:0] du_dat_o,
117
    output                            du_ack_o,
118
    // Stall control from debug interface
119
    input                             du_stall_i,
120
    output                            du_stall_o,
121
 
122
    // SPR accesses to external units (cache, mmu, etc.)
123
    output [15:0]                      spr_bus_addr_o,
124
    output                            spr_bus_we_o,
125
    output                            spr_bus_stb_o,
126
    output [OPTION_OPERAND_WIDTH-1:0] spr_bus_dat_o,
127
    input [OPTION_OPERAND_WIDTH-1:0]  spr_bus_dat_dmmu_i,
128
    input                             spr_bus_ack_dmmu_i,
129
    input [OPTION_OPERAND_WIDTH-1:0]  spr_bus_dat_immu_i,
130
    input                             spr_bus_ack_immu_i,
131
    input [OPTION_OPERAND_WIDTH-1:0]  spr_bus_dat_mac_i,
132
    input                             spr_bus_ack_mac_i,
133
    input [OPTION_OPERAND_WIDTH-1:0]  spr_bus_dat_pmu_i,
134
    input                             spr_bus_ack_pmu_i,
135
    input [OPTION_OPERAND_WIDTH-1:0]  spr_bus_dat_pcu_i,
136
    input                             spr_bus_ack_pcu_i,
137
    input [OPTION_OPERAND_WIDTH-1:0]  spr_bus_dat_fpu_i,
138
    input                             spr_bus_ack_fpu_i,
139
    output [15:0]                      spr_sr_o,
140
 
141
    input [OPTION_OPERAND_WIDTH-1:0]  multicore_coreid_i
142
   );
143
 
144
   wire [OPTION_OPERAND_WIDTH-1:0]   pc_fetch_to_decode;
145
   wire [`OR1K_INSN_WIDTH-1:0]        insn_fetch_to_decode;
146
   wire [OPTION_OPERAND_WIDTH-1:0]   pc_decode_to_execute;
147
   wire [OPTION_OPERAND_WIDTH-1:0]   pc_execute_to_ctrl;
148
 
149
   /*AUTOWIRE*/
150
   // Beginning of automatic wires (for undeclared instantiated-module outputs)
151
   wire [OPTION_OPERAND_WIDTH-1:0] adder_result_o;// From mor1kx_execute_alu of mor1kx_execute_alu.v
152
   wire [OPTION_OPERAND_WIDTH-1:0] alu_result_o;// From mor1kx_execute_alu of mor1kx_execute_alu.v
153
   wire                 alu_valid_o;            // From mor1kx_execute_alu of mor1kx_execute_alu.v
154
   wire                 carry_clear_o;          // From mor1kx_execute_alu of mor1kx_execute_alu.v
155
   wire                 carry_o;                // From mor1kx_ctrl_espresso of mor1kx_ctrl_espresso.v
156
   wire                 carry_set_o;            // From mor1kx_execute_alu of mor1kx_execute_alu.v
157
   wire                 ctrl_branch_occur_o;    // From mor1kx_ctrl_espresso of mor1kx_ctrl_espresso.v
158
   wire [OPTION_OPERAND_WIDTH-1:0] ctrl_branch_target_o;// From mor1kx_ctrl_espresso of mor1kx_ctrl_espresso.v
159
   wire                 ctrl_mfspr_we_o;        // From mor1kx_ctrl_espresso of mor1kx_ctrl_espresso.v
160
   wire                 decode_adder_do_carry_o;// From mor1kx_decode of mor1kx_decode.v
161
   wire                 decode_adder_do_sub_o;  // From mor1kx_decode of mor1kx_decode.v
162
   wire                 decode_except_ibus_err_o;// From mor1kx_fetch_espresso of mor1kx_fetch_espresso.v
163
   wire                 decode_except_illegal_o;// From mor1kx_decode of mor1kx_decode.v
164
   wire                 decode_except_syscall_o;// From mor1kx_decode of mor1kx_decode.v
165
   wire                 decode_except_trap_o;   // From mor1kx_decode of mor1kx_decode.v
166
   wire [`OR1K_IMM_WIDTH-1:0] decode_imm16_o;    // From mor1kx_decode of mor1kx_decode.v
167
   wire [OPTION_OPERAND_WIDTH-1:0] decode_immediate_o;// From mor1kx_decode of mor1kx_decode.v
168
   wire                 decode_immediate_sel_o; // From mor1kx_decode of mor1kx_decode.v
169
   wire [9:0]            decode_immjbr_upper_o;  // From mor1kx_decode of mor1kx_decode.v
170
   wire [1:0]            decode_lsu_length_o;    // From mor1kx_decode of mor1kx_decode.v
171
   wire                 decode_lsu_zext_o;      // From mor1kx_decode of mor1kx_decode.v
172
   wire                 decode_op_add_o;        // From mor1kx_decode of mor1kx_decode.v
173
   wire                 decode_op_alu_o;        // From mor1kx_decode of mor1kx_decode.v
174
   wire                 decode_op_bf_o;         // From mor1kx_decode of mor1kx_decode.v
175
   wire                 decode_op_bnf_o;        // From mor1kx_decode of mor1kx_decode.v
176
   wire                 decode_op_branch_o;     // From mor1kx_decode of mor1kx_decode.v
177
   wire                 decode_op_brcond_o;     // From mor1kx_decode of mor1kx_decode.v
178
   wire                 decode_op_div_o;        // From mor1kx_decode of mor1kx_decode.v
179
   wire                 decode_op_div_signed_o; // From mor1kx_decode of mor1kx_decode.v
180
   wire                 decode_op_div_unsigned_o;// From mor1kx_decode of mor1kx_decode.v
181
   wire                 decode_op_ffl1_o;       // From mor1kx_decode of mor1kx_decode.v
182
   wire                 decode_op_jal_o;        // From mor1kx_decode of mor1kx_decode.v
183
   wire                 decode_op_jbr_o;        // From mor1kx_decode of mor1kx_decode.v
184
   wire                 decode_op_jr_o;         // From mor1kx_decode of mor1kx_decode.v
185
   wire                 decode_op_lsu_atomic_o; // From mor1kx_decode of mor1kx_decode.v
186
   wire                 decode_op_lsu_load_o;   // From mor1kx_decode of mor1kx_decode.v
187
   wire                 decode_op_lsu_store_o;  // From mor1kx_decode of mor1kx_decode.v
188
   wire                 decode_op_mfspr_o;      // From mor1kx_decode of mor1kx_decode.v
189
   wire                 decode_op_movhi_o;      // From mor1kx_decode of mor1kx_decode.v
190
   wire                 decode_op_mtspr_o;      // From mor1kx_decode of mor1kx_decode.v
191
   wire                 decode_op_mul_o;        // From mor1kx_decode of mor1kx_decode.v
192
   wire                 decode_op_mul_signed_o; // From mor1kx_decode of mor1kx_decode.v
193
   wire                 decode_op_mul_unsigned_o;// From mor1kx_decode of mor1kx_decode.v
194
   wire                 decode_op_rfe_o;        // From mor1kx_decode of mor1kx_decode.v
195
   wire                 decode_op_setflag_o;    // From mor1kx_decode of mor1kx_decode.v
196
   wire                 decode_op_shift_o;      // From mor1kx_decode of mor1kx_decode.v
197
   wire [`OR1K_ALU_OPC_WIDTH-1:0] decode_opc_alu_o;// From mor1kx_decode of mor1kx_decode.v
198
   wire [`OR1K_ALU_OPC_WIDTH-1:0] decode_opc_alu_secondary_o;// From mor1kx_decode of mor1kx_decode.v
199
   wire [`OR1K_OPCODE_WIDTH-1:0] decode_opc_insn_o;// From mor1kx_decode of mor1kx_decode.v
200
   wire                 decode_rf_wb_o;         // From mor1kx_decode of mor1kx_decode.v
201
   wire [OPTION_RF_ADDR_WIDTH-1:0] decode_rfa_adr_o;// From mor1kx_decode of mor1kx_decode.v
202
   wire [OPTION_RF_ADDR_WIDTH-1:0] decode_rfb_adr_o;// From mor1kx_decode of mor1kx_decode.v
203
   wire [OPTION_RF_ADDR_WIDTH-1:0] decode_rfd_adr_o;// From mor1kx_decode of mor1kx_decode.v
204
   wire                 du_restart_o;           // From mor1kx_ctrl_espresso of mor1kx_ctrl_espresso.v
205
   wire [OPTION_OPERAND_WIDTH-1:0] du_restart_pc_o;// From mor1kx_ctrl_espresso of mor1kx_ctrl_espresso.v
206
   wire                 exception_taken_o;      // From mor1kx_ctrl_espresso of mor1kx_ctrl_espresso.v
207
   wire                 execute_waiting_o;      // From mor1kx_ctrl_espresso of mor1kx_ctrl_espresso.v
208
   wire                 fetch_advancing_o;      // From mor1kx_fetch_espresso of mor1kx_fetch_espresso.v
209
   wire [OPTION_RF_ADDR_WIDTH-1:0] fetch_rfa_adr_o;// From mor1kx_fetch_espresso of mor1kx_fetch_espresso.v
210
   wire [OPTION_RF_ADDR_WIDTH-1:0] fetch_rfb_adr_o;// From mor1kx_fetch_espresso of mor1kx_fetch_espresso.v
211
   wire                 fetch_take_exception_branch_o;// From mor1kx_ctrl_espresso of mor1kx_ctrl_espresso.v
212
   wire                 flag_clear_o;           // From mor1kx_execute_alu of mor1kx_execute_alu.v
213
   wire                 flag_o;                 // From mor1kx_ctrl_espresso of mor1kx_ctrl_espresso.v
214
   wire                 flag_set_o;             // From mor1kx_execute_alu of mor1kx_execute_alu.v
215
   wire                 lsu_except_align_o;     // From mor1kx_lsu_espresso of mor1kx_lsu_espresso.v
216
   wire                 lsu_except_dbus_o;      // From mor1kx_lsu_espresso of mor1kx_lsu_espresso.v
217
   wire [OPTION_OPERAND_WIDTH-1:0] lsu_result_o;// From mor1kx_lsu_espresso of mor1kx_lsu_espresso.v
218
   wire                 lsu_valid_o;            // From mor1kx_lsu_espresso of mor1kx_lsu_espresso.v
219
   wire [OPTION_OPERAND_WIDTH-1:0] mfspr_dat_o;  // From mor1kx_ctrl_espresso of mor1kx_ctrl_espresso.v
220
   wire [OPTION_OPERAND_WIDTH-1:0] mul_result_o;// From mor1kx_execute_alu of mor1kx_execute_alu.v
221
   wire                 next_fetch_done_o;      // From mor1kx_fetch_espresso of mor1kx_fetch_espresso.v
222
   wire                 overflow_clear_o;       // From mor1kx_execute_alu of mor1kx_execute_alu.v
223
   wire                 overflow_set_o;         // From mor1kx_execute_alu of mor1kx_execute_alu.v
224
   wire                 padv_decode_o;          // From mor1kx_ctrl_espresso of mor1kx_ctrl_espresso.v
225
   wire                 padv_execute_o;         // From mor1kx_ctrl_espresso of mor1kx_ctrl_espresso.v
226
   wire                 padv_fetch_o;           // From mor1kx_ctrl_espresso of mor1kx_ctrl_espresso.v
227
   wire [OPTION_OPERAND_WIDTH-1:0] pc_fetch_next_o;// From mor1kx_fetch_espresso of mor1kx_fetch_espresso.v
228
   wire [OPTION_OPERAND_WIDTH-1:0] pc_fetch_o;   // From mor1kx_fetch_espresso of mor1kx_fetch_espresso.v
229
   wire                 pipeline_flush_o;       // From mor1kx_ctrl_espresso of mor1kx_ctrl_espresso.v
230
   wire [OPTION_OPERAND_WIDTH-1:0] rf_result_o;  // From mor1kx_wb_mux_espresso of mor1kx_wb_mux_espresso.v
231
   wire                 rf_we_o;                // From mor1kx_ctrl_espresso of mor1kx_ctrl_espresso.v
232
   wire [OPTION_OPERAND_WIDTH-1:0] rfa_o;        // From mor1kx_rf_espresso of mor1kx_rf_espresso.v
233
   wire [OPTION_OPERAND_WIDTH-1:0] rfb_o;        // From mor1kx_rf_espresso of mor1kx_rf_espresso.v
234
   wire [OPTION_OPERAND_WIDTH-1:0] spr_npc_o;    // From mor1kx_ctrl_espresso of mor1kx_ctrl_espresso.v
235
   wire [OPTION_OPERAND_WIDTH-1:0] spr_ppc_o;    // From mor1kx_ctrl_espresso of mor1kx_ctrl_espresso.v
236
   wire                 stepping_o;             // From mor1kx_ctrl_espresso of mor1kx_ctrl_espresso.v
237
   // End of automatics
238
 
239
   /* mor1kx_fetch_espresso AUTO_TEMPLATE (
240
    .padv_i                             (padv_fetch_o),
241
    .branch_occur_i                     (ctrl_branch_occur_o),
242
    .branch_dest_i                      (ctrl_branch_target_o),
243
    .pipeline_flush_i                   (pipeline_flush_o),
244
    .pc_decode_o                        (pc_fetch_to_decode),
245
    .decode_insn_o                      (insn_fetch_to_decode),
246
    .du_restart_pc_i                    (du_restart_pc_o),
247
    .du_restart_i                       (du_restart_o),
248
    .fetch_take_exception_branch_i      (fetch_take_exception_branch_o),
249
    .execute_waiting_i                  (execute_waiting_o),
250
    .stepping_i                         (stepping_o),
251
    ); */
252
   mor1kx_fetch_espresso
253
     #(
254
       .OPTION_OPERAND_WIDTH(OPTION_OPERAND_WIDTH),
255
       .OPTION_RF_ADDR_WIDTH(OPTION_RF_ADDR_WIDTH),
256
       .OPTION_RESET_PC(OPTION_RESET_PC)
257
       )
258
     mor1kx_fetch_espresso
259
     (/*AUTOINST*/
260
      // Outputs
261
      .ibus_adr_o                       (ibus_adr_o[OPTION_OPERAND_WIDTH-1:0]),
262
      .ibus_req_o                       (ibus_req_o),
263
      .ibus_burst_o                     (ibus_burst_o),
264
      .decode_insn_o                    (insn_fetch_to_decode),  // Templated
265
      .next_fetch_done_o                (next_fetch_done_o),
266
      .fetch_rfa_adr_o                  (fetch_rfa_adr_o[OPTION_RF_ADDR_WIDTH-1:0]),
267
      .fetch_rfb_adr_o                  (fetch_rfb_adr_o[OPTION_RF_ADDR_WIDTH-1:0]),
268
      .pc_fetch_o                       (pc_fetch_o[OPTION_OPERAND_WIDTH-1:0]),
269
      .pc_fetch_next_o                  (pc_fetch_next_o[OPTION_OPERAND_WIDTH-1:0]),
270
      .decode_except_ibus_err_o         (decode_except_ibus_err_o),
271
      .fetch_advancing_o                (fetch_advancing_o),
272
      // Inputs
273
      .clk                              (clk),
274
      .rst                              (rst),
275
      .ibus_err_i                       (ibus_err_i),
276
      .ibus_ack_i                       (ibus_ack_i),
277
      .ibus_dat_i                       (ibus_dat_i[`OR1K_INSN_WIDTH-1:0]),
278
      .padv_i                           (padv_fetch_o),          // Templated
279
      .branch_occur_i                   (ctrl_branch_occur_o),   // Templated
280
      .branch_dest_i                    (ctrl_branch_target_o),  // Templated
281
      .du_restart_i                     (du_restart_o),          // Templated
282
      .du_restart_pc_i                  (du_restart_pc_o),       // Templated
283
      .fetch_take_exception_branch_i    (fetch_take_exception_branch_o), // Templated
284
      .execute_waiting_i                (execute_waiting_o),     // Templated
285
      .du_stall_i                       (du_stall_i),
286
      .stepping_i                       (stepping_o));           // Templated
287
 
288
   /* mor1kx_decode AUTO_TEMPLATE (
289
    .decode_insn_i                      (insn_fetch_to_decode),
290
    .decode_op_lsu_atomic_o             (),
291
    ); */
292
   mor1kx_decode
293
     #(
294
       .OPTION_OPERAND_WIDTH(OPTION_OPERAND_WIDTH),
295
       .OPTION_RESET_PC(OPTION_RESET_PC),
296
       .OPTION_RF_ADDR_WIDTH(OPTION_RF_ADDR_WIDTH),
297
       .FEATURE_SYSCALL(FEATURE_SYSCALL),
298
       .FEATURE_TRAP(FEATURE_TRAP),
299
       .FEATURE_RANGE(FEATURE_RANGE),
300
       .FEATURE_MAC(FEATURE_MAC),
301
       .FEATURE_MULTIPLIER(FEATURE_MULTIPLIER),
302
       .FEATURE_DIVIDER(FEATURE_DIVIDER),
303
       .FEATURE_ADDC(FEATURE_ADDC),
304
       .FEATURE_SRA(FEATURE_SRA),
305
       .FEATURE_ROR(FEATURE_ROR),
306
       .FEATURE_EXT(FEATURE_EXT),
307
       .FEATURE_CMOV(FEATURE_CMOV),
308
       .FEATURE_FFL1(FEATURE_FFL1),
309
       .FEATURE_MSYNC(FEATURE_MSYNC),
310
       .FEATURE_PSYNC(FEATURE_PSYNC),
311
       .FEATURE_CSYNC(FEATURE_CSYNC),
312
       .FEATURE_CUST1(FEATURE_CUST1),
313
       .FEATURE_CUST2(FEATURE_CUST2),
314
       .FEATURE_CUST3(FEATURE_CUST3),
315
       .FEATURE_CUST4(FEATURE_CUST4),
316
       .FEATURE_CUST5(FEATURE_CUST5),
317
       .FEATURE_CUST6(FEATURE_CUST6),
318
       .FEATURE_CUST7(FEATURE_CUST7),
319
       .FEATURE_CUST8(FEATURE_CUST8)
320
       )
321
     mor1kx_decode
322
     (/*AUTOINST*/
323
      // Outputs
324
      .decode_opc_alu_o                 (decode_opc_alu_o[`OR1K_ALU_OPC_WIDTH-1:0]),
325
      .decode_opc_alu_secondary_o       (decode_opc_alu_secondary_o[`OR1K_ALU_OPC_WIDTH-1:0]),
326
      .decode_imm16_o                   (decode_imm16_o[`OR1K_IMM_WIDTH-1:0]),
327
      .decode_immediate_o               (decode_immediate_o[OPTION_OPERAND_WIDTH-1:0]),
328
      .decode_immediate_sel_o           (decode_immediate_sel_o),
329
      .decode_immjbr_upper_o            (decode_immjbr_upper_o[9:0]),
330
      .decode_rfd_adr_o                 (decode_rfd_adr_o[OPTION_RF_ADDR_WIDTH-1:0]),
331
      .decode_rfa_adr_o                 (decode_rfa_adr_o[OPTION_RF_ADDR_WIDTH-1:0]),
332
      .decode_rfb_adr_o                 (decode_rfb_adr_o[OPTION_RF_ADDR_WIDTH-1:0]),
333
      .decode_rf_wb_o                   (decode_rf_wb_o),
334
      .decode_op_jbr_o                  (decode_op_jbr_o),
335
      .decode_op_jr_o                   (decode_op_jr_o),
336
      .decode_op_jal_o                  (decode_op_jal_o),
337
      .decode_op_bf_o                   (decode_op_bf_o),
338
      .decode_op_bnf_o                  (decode_op_bnf_o),
339
      .decode_op_brcond_o               (decode_op_brcond_o),
340
      .decode_op_branch_o               (decode_op_branch_o),
341
      .decode_op_alu_o                  (decode_op_alu_o),
342
      .decode_op_lsu_load_o             (decode_op_lsu_load_o),
343
      .decode_op_lsu_store_o            (decode_op_lsu_store_o),
344
      .decode_op_lsu_atomic_o           (decode_op_lsu_atomic_o),
345
      .decode_lsu_length_o              (decode_lsu_length_o[1:0]),
346
      .decode_lsu_zext_o                (decode_lsu_zext_o),
347
      .decode_op_mfspr_o                (decode_op_mfspr_o),
348
      .decode_op_mtspr_o                (decode_op_mtspr_o),
349
      .decode_op_rfe_o                  (decode_op_rfe_o),
350
      .decode_op_setflag_o              (decode_op_setflag_o),
351
      .decode_op_add_o                  (decode_op_add_o),
352
      .decode_op_mul_o                  (decode_op_mul_o),
353
      .decode_op_mul_signed_o           (decode_op_mul_signed_o),
354
      .decode_op_mul_unsigned_o         (decode_op_mul_unsigned_o),
355
      .decode_op_div_o                  (decode_op_div_o),
356
      .decode_op_div_signed_o           (decode_op_div_signed_o),
357
      .decode_op_div_unsigned_o         (decode_op_div_unsigned_o),
358
      .decode_op_shift_o                (decode_op_shift_o),
359
      .decode_op_ffl1_o                 (decode_op_ffl1_o),
360
      .decode_op_movhi_o                (decode_op_movhi_o),
361
      .decode_adder_do_sub_o            (decode_adder_do_sub_o),
362
      .decode_adder_do_carry_o          (decode_adder_do_carry_o),
363
      .decode_except_illegal_o          (decode_except_illegal_o),
364
      .decode_except_syscall_o          (decode_except_syscall_o),
365
      .decode_except_trap_o             (decode_except_trap_o),
366
      .decode_opc_insn_o                (decode_opc_insn_o[`OR1K_OPCODE_WIDTH-1:0]),
367
      // Inputs
368
      .clk                              (clk),
369
      .rst                              (rst),
370
      .decode_insn_i                    (insn_fetch_to_decode));         // Templated
371
 
372
   /* mor1kx_execute_alu AUTO_TEMPLATE (
373
    .padv_execute_i                     (padv_execute_o),
374
    .padv_ctrl_i                        (1'b1),
375
    .opc_alu_i                          (decode_opc_alu_o),
376
    .opc_alu_secondary_i                (decode_opc_alu_secondary_o),
377
    .imm16_i                            (decode_imm16_o),
378
    .immediate_i                        (decode_immediate_o),
379
    .immediate_sel_i                    (decode_immediate_sel_o),
380
    .decode_valid_i                     (padv_decode_o),
381
    .op_alu_i                           (decode_op_alu_o),
382
    .op_add_i                           (decode_op_add_o),
383
    .op_mul_i                           (decode_op_mul_o),
384
    .op_mul_signed_i                    (decode_op_mul_signed_o),
385
    .op_mul_unsigned_i                  (decode_op_mul_unsigned_o),
386
    .op_div_i                           (decode_op_div_o),
387
    .op_div_signed_i                    (decode_op_div_signed_o),
388
    .op_div_unsigned_i                  (decode_op_div_unsigned_o),
389
    .op_shift_i                         (decode_op_shift_o),
390
    .op_ffl1_i                          (decode_op_ffl1_o),
391
    .op_setflag_i                       (decode_op_setflag_o),
392
    .op_mtspr_i                         (decode_op_mtspr_o),
393
    .op_mfspr_i                         (decode_op_mfspr_o),
394
    .op_movhi_i                         (decode_op_movhi_o),
395
    .op_jbr_i                           (decode_op_jbr_o),
396
    .op_jr_i                            (decode_op_jr_o),
397
    .immjbr_upper_i                     (decode_immjbr_upper_o),
398
    .pc_execute_i                       (spr_ppc_o),
399
    .adder_do_sub_i                     (decode_adder_do_sub_o),
400
    .adder_do_carry_i                   (decode_adder_do_carry_o),
401
    .rfa_i                              (rfa_o),
402
    .rfb_i                              (rfb_o),
403
    .flag_i                             (flag_o),
404
    .carry_i                            (carry_o),
405
    ); */
406
   mor1kx_execute_alu
407
     #(
408
       .OPTION_OPERAND_WIDTH(OPTION_OPERAND_WIDTH),
409
       .FEATURE_MULTIPLIER(FEATURE_MULTIPLIER),
410
       .FEATURE_DIVIDER(FEATURE_DIVIDER),
411
       .FEATURE_ADDC(FEATURE_ADDC),
412
       .FEATURE_SRA(FEATURE_SRA),
413
       .FEATURE_ROR(FEATURE_ROR),
414
       .FEATURE_EXT(FEATURE_EXT),
415
       .FEATURE_CMOV(FEATURE_CMOV),
416
       .FEATURE_FFL1(FEATURE_FFL1),
417
       .FEATURE_CUST1(FEATURE_CUST1),
418
       .FEATURE_CUST2(FEATURE_CUST2),
419
       .FEATURE_CUST3(FEATURE_CUST3),
420
       .FEATURE_CUST4(FEATURE_CUST4),
421
       .FEATURE_CUST5(FEATURE_CUST5),
422
       .FEATURE_CUST6(FEATURE_CUST6),
423
       .FEATURE_CUST7(FEATURE_CUST7),
424
       .FEATURE_CUST8(FEATURE_CUST8),
425
       .OPTION_SHIFTER(OPTION_SHIFTER)
426
       )
427
     mor1kx_execute_alu
428
     (/*AUTOINST*/
429
      // Outputs
430
      .flag_set_o                       (flag_set_o),
431
      .flag_clear_o                     (flag_clear_o),
432
      .carry_set_o                      (carry_set_o),
433
      .carry_clear_o                    (carry_clear_o),
434
      .overflow_set_o                   (overflow_set_o),
435
      .overflow_clear_o                 (overflow_clear_o),
436
      .alu_result_o                     (alu_result_o[OPTION_OPERAND_WIDTH-1:0]),
437
      .alu_valid_o                      (alu_valid_o),
438
      .mul_result_o                     (mul_result_o[OPTION_OPERAND_WIDTH-1:0]),
439
      .adder_result_o                   (adder_result_o[OPTION_OPERAND_WIDTH-1:0]),
440
      // Inputs
441
      .clk                              (clk),
442
      .rst                              (rst),
443
      .padv_execute_i                   (padv_execute_o),        // Templated
444
      .padv_ctrl_i                      (1'b1),                  // Templated
445
      .opc_alu_i                        (decode_opc_alu_o),      // Templated
446
      .opc_alu_secondary_i              (decode_opc_alu_secondary_o), // Templated
447
      .imm16_i                          (decode_imm16_o),        // Templated
448
      .immediate_i                      (decode_immediate_o),    // Templated
449
      .immediate_sel_i                  (decode_immediate_sel_o), // Templated
450
      .decode_valid_i                   (padv_decode_o),         // Templated
451
      .op_alu_i                         (decode_op_alu_o),       // Templated
452
      .op_add_i                         (decode_op_add_o),       // Templated
453
      .op_mul_i                         (decode_op_mul_o),       // Templated
454
      .op_mul_signed_i                  (decode_op_mul_signed_o), // Templated
455
      .op_mul_unsigned_i                (decode_op_mul_unsigned_o), // Templated
456
      .op_div_i                         (decode_op_div_o),       // Templated
457
      .op_div_signed_i                  (decode_op_div_signed_o), // Templated
458
      .op_div_unsigned_i                (decode_op_div_unsigned_o), // Templated
459
      .op_shift_i                       (decode_op_shift_o),     // Templated
460
      .op_ffl1_i                        (decode_op_ffl1_o),      // Templated
461
      .op_setflag_i                     (decode_op_setflag_o),   // Templated
462
      .op_mtspr_i                       (decode_op_mtspr_o),     // Templated
463
      .op_mfspr_i                       (decode_op_mfspr_o),     // Templated
464
      .op_movhi_i                       (decode_op_movhi_o),     // Templated
465
      .op_jbr_i                         (decode_op_jbr_o),       // Templated
466
      .op_jr_i                          (decode_op_jr_o),        // Templated
467
      .immjbr_upper_i                   (decode_immjbr_upper_o), // Templated
468
      .pc_execute_i                     (spr_ppc_o),             // Templated
469
      .adder_do_sub_i                   (decode_adder_do_sub_o), // Templated
470
      .adder_do_carry_i                 (decode_adder_do_carry_o), // Templated
471
      .rfa_i                            (rfa_o),                 // Templated
472
      .rfb_i                            (rfb_o),                 // Templated
473
      .flag_i                           (flag_o),                // Templated
474
      .carry_i                          (carry_o));              // Templated
475
 
476
 
477
   /* mor1kx_lsu_espresso AUTO_TEMPLATE (
478
    .padv_fetch_i                       (padv_fetch_o),
479
    .lsu_adr_i                          (adder_result_o),
480
    .rfb_i                              (rfb_o),
481
    .op_lsu_load_i                      (decode_op_lsu_load_o),
482
    .op_lsu_store_i                     (decode_op_lsu_store_o),
483
    .lsu_length_i                       (decode_lsu_length_o),
484
    .lsu_zext_i                         (decode_lsu_zext_o),
485
    .exception_taken_i                  (exception_taken_o),
486
    .du_restart_i                       (du_restart_o),
487
    .stepping_i                         (stepping_o),
488
    .next_fetch_done_i                  (next_fetch_done_o),
489
    ); */
490
   mor1kx_lsu_espresso
491
     #(
492
       .OPTION_OPERAND_WIDTH(OPTION_OPERAND_WIDTH)
493
       )
494
     mor1kx_lsu_espresso
495
     (/*AUTOINST*/
496
      // Outputs
497
      .lsu_result_o                     (lsu_result_o[OPTION_OPERAND_WIDTH-1:0]),
498
      .lsu_valid_o                      (lsu_valid_o),
499
      .lsu_except_dbus_o                (lsu_except_dbus_o),
500
      .lsu_except_align_o               (lsu_except_align_o),
501
      .dbus_adr_o                       (dbus_adr_o[OPTION_OPERAND_WIDTH-1:0]),
502
      .dbus_req_o                       (dbus_req_o),
503
      .dbus_dat_o                       (dbus_dat_o[OPTION_OPERAND_WIDTH-1:0]),
504
      .dbus_bsel_o                      (dbus_bsel_o[3:0]),
505
      .dbus_we_o                        (dbus_we_o),
506
      .dbus_burst_o                     (dbus_burst_o),
507
      // Inputs
508
      .clk                              (clk),
509
      .rst                              (rst),
510
      .padv_fetch_i                     (padv_fetch_o),          // Templated
511
      .lsu_adr_i                        (adder_result_o),        // Templated
512
      .rfb_i                            (rfb_o),                 // Templated
513
      .op_lsu_load_i                    (decode_op_lsu_load_o),  // Templated
514
      .op_lsu_store_i                   (decode_op_lsu_store_o), // Templated
515
      .lsu_length_i                     (decode_lsu_length_o),   // Templated
516
      .lsu_zext_i                       (decode_lsu_zext_o),     // Templated
517
      .exception_taken_i                (exception_taken_o),     // Templated
518
      .du_restart_i                     (du_restart_o),          // Templated
519
      .stepping_i                       (stepping_o),            // Templated
520
      .next_fetch_done_i                (next_fetch_done_o),     // Templated
521
      .dbus_err_i                       (dbus_err_i),
522
      .dbus_ack_i                       (dbus_ack_i),
523
      .dbus_dat_i                       (dbus_dat_i[OPTION_OPERAND_WIDTH-1:0]));
524
 
525
 
526
   /* mor1kx_wb_mux_espresso AUTO_TEMPLATE (
527
    .alu_result_i                       (alu_result_o),
528
    .lsu_result_i                       (lsu_result_o),
529
    .spr_i                              (mfspr_dat_o),
530
    .op_jal_i                           (decode_op_jal_o),
531
    .op_lsu_load_i                      (decode_op_lsu_load_o),
532
    .ppc_i                              (spr_ppc_o),
533
    .op_mfspr_i                         (decode_op_mfspr_o),
534
    .pc_fetch_next_i                    (pc_fetch_next_o),
535
    ); */
536
   mor1kx_wb_mux_espresso
537
     #(
538
       .OPTION_OPERAND_WIDTH(OPTION_OPERAND_WIDTH)
539
       )
540
     mor1kx_wb_mux_espresso
541
     (/*AUTOINST*/
542
      // Outputs
543
      .rf_result_o                      (rf_result_o[OPTION_OPERAND_WIDTH-1:0]),
544
      // Inputs
545
      .clk                              (clk),
546
      .rst                              (rst),
547
      .alu_result_i                     (alu_result_o),          // Templated
548
      .lsu_result_i                     (lsu_result_o),          // Templated
549
      .ppc_i                            (spr_ppc_o),             // Templated
550
      .pc_fetch_next_i                  (pc_fetch_next_o),       // Templated
551
      .spr_i                            (mfspr_dat_o),           // Templated
552
      .op_jal_i                         (decode_op_jal_o),       // Templated
553
      .op_lsu_load_i                    (decode_op_lsu_load_o),  // Templated
554
      .op_mfspr_i                       (decode_op_mfspr_o));    // Templated
555
 
556
   /* mor1kx_rf_espresso AUTO_TEMPLATE (
557
    .rf_we_i                            (rf_we_o),
558
    .rf_re_i                            (fetch_advancing_o),
559
    .rfd_adr_i                          (decode_rfd_adr_o),
560
    .rfa_adr_i                          (fetch_rfa_adr_o),
561
    .rfb_adr_i                          (fetch_rfb_adr_o),
562
    .result_i                           (rf_result_o),
563
    ); */
564
   mor1kx_rf_espresso
565
     #(
566
       .OPTION_OPERAND_WIDTH(OPTION_OPERAND_WIDTH),
567
       .OPTION_RF_ADDR_WIDTH(OPTION_RF_ADDR_WIDTH),
568
       .OPTION_RF_WORDS(OPTION_RF_WORDS)
569
       )
570
     mor1kx_rf_espresso
571
     (/*AUTOINST*/
572
      // Outputs
573
      .rfa_o                            (rfa_o[OPTION_OPERAND_WIDTH-1:0]),
574
      .rfb_o                            (rfb_o[OPTION_OPERAND_WIDTH-1:0]),
575
      // Inputs
576
      .clk                              (clk),
577
      .rst                              (rst),
578
      .rfd_adr_i                        (decode_rfd_adr_o),      // Templated
579
      .rfa_adr_i                        (fetch_rfa_adr_o),       // Templated
580
      .rfb_adr_i                        (fetch_rfb_adr_o),       // Templated
581
      .rf_we_i                          (rf_we_o),               // Templated
582
      .rf_re_i                          (fetch_advancing_o),     // Templated
583
      .result_i                         (rf_result_o));          // Templated
584
 
585
 
586
   /* Debug signals required for the debug monitor */
587
   function [OPTION_OPERAND_WIDTH-1:0] get_gpr;
588
      // verilator public
589
      input [4:0]                   gpr_num;
590
      begin
591
         // If we're writing, the value won't be in the GPR yet, so snoop
592
         // it off the result in line.
593
         if (rf_we_o)
594
           get_gpr = rf_result_o;
595
         else
596
           get_gpr = mor1kx_rf_espresso.rfa.mem[gpr_num];
597
      end
598
   endfunction
599
 
600
`ifndef SYNTHESIS
601
// synthesis translate_off
602
   task set_gpr;
603
      // verilator public
604
      input [4:0] gpr_num;
605
      input [OPTION_OPERAND_WIDTH-1:0] gpr_value;
606
      begin
607
         mor1kx_rf_espresso.rfa.mem[gpr_num] = gpr_value;
608
         mor1kx_rf_espresso.rfb.mem[gpr_num] = gpr_value;
609
      end
610
   endtask
611
// synthesis translate_on
612
`endif
613
 
614
   /* mor1kx_ctrl_espresso AUTO_TEMPLATE (
615
    .ctrl_alu_result_i          (alu_result_o),
616
    .ctrl_rfb_i                 (rfb_o),
617
    .ctrl_flag_set_i            (flag_set_o),
618
    .ctrl_flag_clear_i          (flag_clear_o),
619
    .pc_ctrl_i                  (),
620
    .pc_fetch_i                 (pc_fetch_o),
621
    .ctrl_opc_insn_i            (decode_opc_insn_o),
622
    .ctrl_branch_target_i       (ctrl_branch_target_o),
623
    .op_lsu_load_i              (decode_op_lsu_load_o),
624
    .op_lsu_store_i             (decode_op_lsu_store_o),
625
    .alu_valid_i                (alu_valid_o),
626
    .lsu_valid_i                (lsu_valid_o),
627
    .op_jr_i                    (decode_op_jr_o),
628
    .op_jbr_i                   (decode_op_jbr_o),
629
    .except_ibus_err_i          (decode_except_ibus_err_o),
630
    .except_illegal_i           (decode_except_illegal_o),
631
    .except_syscall_i           (decode_except_syscall_o),
632
    .except_dbus_i              (lsu_except_dbus_o),
633
    .except_trap_i              (decode_except_trap_o),
634
    .except_align_i             (lsu_except_align_o),
635
    .next_fetch_done_i          (next_fetch_done_o),
636
    .execute_valid_i            (execute_valid_o),
637
    .execute_waiting_i          (execute_waiting_o),
638
    .fetch_branch_taken_i       (fetch_branch_taken_o),
639
    .rf_wb_i                    (decode_rf_wb_o),
640
    .fetch_advancing_i          (fetch_advancing_o),
641
    .carry_set_i                (carry_set_o),
642
    .carry_clear_i              (carry_clear_o),
643
    .overflow_set_i             (overflow_set_o),
644
    .overflow_clear_i           (overflow_clear_o),
645
    .spr_bus_dat_dc_i           (),
646
    .spr_bus_ack_dc_i           (),
647
    .spr_bus_dat_ic_i           (),
648
    .spr_bus_ack_ic_i           (),
649
    ); */
650
   mor1kx_ctrl_espresso
651
     #(
652
       .OPTION_OPERAND_WIDTH(OPTION_OPERAND_WIDTH),
653
       .OPTION_RESET_PC(OPTION_RESET_PC),
654
       .FEATURE_PIC(FEATURE_PIC),
655
       .FEATURE_TIMER(FEATURE_TIMER),
656
       .OPTION_PIC_TRIGGER(OPTION_PIC_TRIGGER),
657
       .OPTION_PIC_NMI_WIDTH(OPTION_PIC_NMI_WIDTH),
658
       .FEATURE_DSX(FEATURE_DSX),
659
       .FEATURE_FASTCONTEXTS(FEATURE_FASTCONTEXTS),
660
       .FEATURE_OVERFLOW(FEATURE_OVERFLOW),
661
       .FEATURE_DATACACHE(FEATURE_DATACACHE),
662
       .OPTION_DCACHE_BLOCK_WIDTH(OPTION_DCACHE_BLOCK_WIDTH),
663
       .OPTION_DCACHE_SET_WIDTH(OPTION_DCACHE_SET_WIDTH),
664
       .OPTION_DCACHE_WAYS(OPTION_DCACHE_WAYS),
665
       .FEATURE_DMMU(FEATURE_DMMU),
666
       .FEATURE_INSTRUCTIONCACHE(FEATURE_INSTRUCTIONCACHE),
667
       .OPTION_ICACHE_BLOCK_WIDTH(OPTION_ICACHE_BLOCK_WIDTH),
668
       .OPTION_ICACHE_SET_WIDTH(OPTION_ICACHE_SET_WIDTH),
669
       .OPTION_ICACHE_WAYS(OPTION_ICACHE_WAYS),
670
       .FEATURE_IMMU(FEATURE_IMMU),
671
       .FEATURE_DEBUGUNIT(FEATURE_DEBUGUNIT),
672
       .FEATURE_PERFCOUNTERS(FEATURE_PERFCOUNTERS),
673
       .FEATURE_MAC(FEATURE_MAC),
674
       .FEATURE_MULTICORE(FEATURE_MULTICORE),
675
       .FEATURE_SYSCALL(FEATURE_SYSCALL),
676
       .FEATURE_TRAP(FEATURE_TRAP),
677
       .FEATURE_RANGE(FEATURE_RANGE)
678
       )
679
     mor1kx_ctrl_espresso
680
       (/*AUTOINST*/
681
        // Outputs
682
        .flag_o                         (flag_o),
683
        .spr_npc_o                      (spr_npc_o[OPTION_OPERAND_WIDTH-1:0]),
684
        .spr_ppc_o                      (spr_ppc_o[OPTION_OPERAND_WIDTH-1:0]),
685
        .mfspr_dat_o                    (mfspr_dat_o[OPTION_OPERAND_WIDTH-1:0]),
686
        .ctrl_mfspr_we_o                (ctrl_mfspr_we_o),
687
        .carry_o                        (carry_o),
688
        .pipeline_flush_o               (pipeline_flush_o),
689
        .padv_fetch_o                   (padv_fetch_o),
690
        .padv_decode_o                  (padv_decode_o),
691
        .padv_execute_o                 (padv_execute_o),
692
        .fetch_take_exception_branch_o  (fetch_take_exception_branch_o),
693
        .exception_taken_o              (exception_taken_o),
694
        .execute_waiting_o              (execute_waiting_o),
695
        .stepping_o                     (stepping_o),
696
        .du_dat_o                       (du_dat_o[OPTION_OPERAND_WIDTH-1:0]),
697
        .du_ack_o                       (du_ack_o),
698
        .du_stall_o                     (du_stall_o),
699
        .du_restart_pc_o                (du_restart_pc_o[OPTION_OPERAND_WIDTH-1:0]),
700
        .du_restart_o                   (du_restart_o),
701
        .spr_bus_addr_o                 (spr_bus_addr_o[15:0]),
702
        .spr_bus_we_o                   (spr_bus_we_o),
703
        .spr_bus_stb_o                  (spr_bus_stb_o),
704
        .spr_bus_dat_o                  (spr_bus_dat_o[OPTION_OPERAND_WIDTH-1:0]),
705
        .spr_sr_o                       (spr_sr_o[15:0]),
706
        .ctrl_branch_target_o           (ctrl_branch_target_o[OPTION_OPERAND_WIDTH-1:0]),
707
        .ctrl_branch_occur_o            (ctrl_branch_occur_o),
708
        .rf_we_o                        (rf_we_o),
709
        // Inputs
710
        .clk                            (clk),
711
        .rst                            (rst),
712
        .ctrl_alu_result_i              (alu_result_o),          // Templated
713
        .ctrl_rfb_i                     (rfb_o),                 // Templated
714
        .ctrl_flag_set_i                (flag_set_o),            // Templated
715
        .ctrl_flag_clear_i              (flag_clear_o),          // Templated
716
        .ctrl_opc_insn_i                (decode_opc_insn_o),     // Templated
717
        .pc_fetch_i                     (pc_fetch_o),            // Templated
718
        .fetch_advancing_i              (fetch_advancing_o),     // Templated
719
        .except_ibus_err_i              (decode_except_ibus_err_o), // Templated
720
        .except_illegal_i               (decode_except_illegal_o), // Templated
721
        .except_syscall_i               (decode_except_syscall_o), // Templated
722
        .except_dbus_i                  (lsu_except_dbus_o),     // Templated
723
        .except_trap_i                  (decode_except_trap_o),  // Templated
724
        .except_align_i                 (lsu_except_align_o),    // Templated
725
        .next_fetch_done_i              (next_fetch_done_o),     // Templated
726
        .alu_valid_i                    (alu_valid_o),           // Templated
727
        .lsu_valid_i                    (lsu_valid_o),           // Templated
728
        .op_lsu_load_i                  (decode_op_lsu_load_o),  // Templated
729
        .op_lsu_store_i                 (decode_op_lsu_store_o), // Templated
730
        .op_jr_i                        (decode_op_jr_o),        // Templated
731
        .op_jbr_i                       (decode_op_jbr_o),       // Templated
732
        .irq_i                          (irq_i[31:0]),
733
        .carry_set_i                    (carry_set_o),           // Templated
734
        .carry_clear_i                  (carry_clear_o),         // Templated
735
        .overflow_set_i                 (overflow_set_o),        // Templated
736
        .overflow_clear_i               (overflow_clear_o),      // Templated
737
        .du_addr_i                      (du_addr_i[15:0]),
738
        .du_stb_i                       (du_stb_i),
739
        .du_dat_i                       (du_dat_i[OPTION_OPERAND_WIDTH-1:0]),
740
        .du_we_i                        (du_we_i),
741
        .du_stall_i                     (du_stall_i),
742
        .spr_bus_dat_dc_i               (),                      // Templated
743
        .spr_bus_ack_dc_i               (),                      // Templated
744
        .spr_bus_dat_ic_i               (),                      // Templated
745
        .spr_bus_ack_ic_i               (),                      // Templated
746
        .spr_bus_dat_dmmu_i             (spr_bus_dat_dmmu_i[OPTION_OPERAND_WIDTH-1:0]),
747
        .spr_bus_ack_dmmu_i             (spr_bus_ack_dmmu_i),
748
        .spr_bus_dat_immu_i             (spr_bus_dat_immu_i[OPTION_OPERAND_WIDTH-1:0]),
749
        .spr_bus_ack_immu_i             (spr_bus_ack_immu_i),
750
        .spr_bus_dat_mac_i              (spr_bus_dat_mac_i[OPTION_OPERAND_WIDTH-1:0]),
751
        .spr_bus_ack_mac_i              (spr_bus_ack_mac_i),
752
        .spr_bus_dat_pmu_i              (spr_bus_dat_pmu_i[OPTION_OPERAND_WIDTH-1:0]),
753
        .spr_bus_ack_pmu_i              (spr_bus_ack_pmu_i),
754
        .spr_bus_dat_pcu_i              (spr_bus_dat_pcu_i[OPTION_OPERAND_WIDTH-1:0]),
755
        .spr_bus_ack_pcu_i              (spr_bus_ack_pcu_i),
756
        .spr_bus_dat_fpu_i              (spr_bus_dat_fpu_i[OPTION_OPERAND_WIDTH-1:0]),
757
        .spr_bus_ack_fpu_i              (spr_bus_ack_fpu_i),
758
        .multicore_coreid_i             (multicore_coreid_i[OPTION_OPERAND_WIDTH-1:0]),
759
        .rf_wb_i                        (decode_rf_wb_o));       // Templated
760
 
761
endmodule // mor1kx_cpu_espresso

powered by: WebSVN 2.1.0

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