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/] [perl_gui/] [lib/] [ip/] [Processor/] [mor1kx.IP] - Rev 48
Compare with Previous | Blame | View Log
#######################################################################
## File: mor1kx.IP
##
## Copyright (C) 2014-2019 Alireza Monemi
##
## This file is part of ProNoC 1.9.1
##
## WARNING: THIS IS AN AUTO-GENERATED FILE. CHANGES TO IT
## MAY CAUSE UNEXPECTED BEHAVIOR.
################################################################################
$ipgen = bless( {
'parameters_order' => [
'OPTION_OPERAND_WIDTH',
'IRQ_NUM',
'OPTION_DCACHE_SNOOP',
'FEATURE_INSTRUCTIONCACHE',
'FEATURE_DATACACHE',
'FEATURE_IMMU',
'FEATURE_DMMU',
'FEATURE_MULTIPLIER',
'FEATURE_DIVIDER',
'OPTION_SHIFTER'
],
'ip_name' => 'mor1kx',
'parameters' => {
'OPTION_OPERAND_WIDTH' => {
'info' => 'Parameter',
'redefine_param' => 1,
'default' => '32',
'type' => 'Fixed',
'content' => '',
'global_param' => 'Localparam'
},
'FEATURE_INSTRUCTIONCACHE' => {
'global_param' => 'Localparam',
'content' => '"NONE","ENABLED"',
'type' => 'Combo-box',
'default' => '"ENABLED"',
'redefine_param' => 1,
'info' => ''
},
'OPTION_DCACHE_SNOOP' => {
'info' => '',
'global_param' => 'Localparam',
'content' => '"NONE","ENABLED"',
'type' => 'Combo-box',
'default' => '"NONE"',
'redefine_param' => 1
},
'FEATURE_DMMU' => {
'type' => 'Combo-box',
'content' => '"NONE","ENABLED"',
'global_param' => 'Localparam',
'default' => '"ENABLED"',
'redefine_param' => 1,
'info' => ''
},
'FEATURE_DATACACHE' => {
'info' => '',
'type' => 'Combo-box',
'content' => '"NONE","ENABLED"',
'global_param' => 'Localparam',
'default' => '"ENABLED"',
'redefine_param' => 1
},
'OPTION_SHIFTER' => {
'info' => 'Specify the shifter implementation',
'redefine_param' => 1,
'default' => '"BARREL"',
'content' => '"BARREL","SERIAL"',
'type' => 'Combo-box',
'global_param' => 'Localparam'
},
'IRQ_NUM' => {
'info' => undef,
'default' => '32',
'content' => '',
'type' => 'Fixed',
'global_param' => 'Localparam',
'redefine_param' => 1
},
'FEATURE_DIVIDER' => {
'info' => 'Specify the divider implementation',
'redefine_param' => 1,
'default' => '"SERIAL"',
'content' => '"SERIAL","NONE"',
'type' => 'Combo-box',
'global_param' => 'Localparam'
},
'FEATURE_MULTIPLIER' => {
'default' => '"THREESTAGE"',
'content' => '"THREESTAGE","PIPELINED","SERIAL","NONE"',
'type' => 'Combo-box',
'global_param' => 'Localparam',
'redefine_param' => 1,
'info' => 'Specify the multiplier implementation'
},
'FEATURE_IMMU' => {
'info' => '',
'default' => '"ENABLED"',
'content' => '"NONE","ENABLED"',
'type' => 'Combo-box',
'global_param' => 'Localparam',
'redefine_param' => 1
}
},
'gen_sw_files' => [
'/mpsoc/src_processor/mor1kx-3.1/sw/march_flags.makfrename_sep_tmarch_flags.mak'
],
'module_name' => 'mor1k',
'sw_files' => [
'/mpsoc/src_processor/mor1kx-3.1/sw/link.ld',
'/mpsoc/src_processor/mor1kx-3.1/sw/Makefile',
'/mpsoc/src_processor/mor1kx-3.1/sw/mor1kx'
],
'system_c' => '',
'unused' => {
'plug:wb_master[1]' => [
'tag_o'
],
'plug:wb_master[0]' => [
'tag_o'
]
},
'sockets' => {
'interrupt_peripheral' => {
'value' => 'IRQ_NUM',
'0' => {
'name' => 'interrupt_peripheral'
},
'type' => 'param',
'connection_num' => 'single connection'
}
},
'file_name' => 'mpsoc/src_processor/mor1kx-3.1/rtl/mor1k.v',
'ports_order' => [
'clk',
'rst',
'cpu_en',
'snoop_adr_i',
'snoop_en_i',
'iwbm_adr_o',
'iwbm_stb_o',
'iwbm_cyc_o',
'iwbm_sel_o',
'iwbm_we_o',
'iwbm_cti_o',
'iwbm_bte_o',
'iwbm_dat_o',
'iwbm_err_i',
'iwbm_ack_i',
'iwbm_dat_i',
'iwbm_rty_i',
'dwbm_adr_o',
'dwbm_stb_o',
'dwbm_cyc_o',
'dwbm_sel_o',
'dwbm_we_o',
'dwbm_cti_o',
'dwbm_bte_o',
'dwbm_dat_o',
'dwbm_err_i',
'dwbm_ack_i',
'dwbm_dat_i',
'dwbm_rty_i',
'irq_i'
],
'plugs' => {
'snoop' => {
'type' => 'num',
'0' => {
'name' => 'snoop'
},
'value' => 1
},
'clk' => {
'type' => 'num',
'0' => {
'name' => 'clk'
},
'value' => 1
},
'wb_master' => {
'0' => {
'name' => 'iwb'
},
'value' => 2,
'type' => 'num',
'1' => {
'name' => 'dwb'
}
},
'enable' => {
'value' => 1,
'0' => {
'name' => 'enable'
},
'type' => 'num'
},
'reset' => {
'0' => {
'name' => 'reset'
},
'value' => 1,
'type' => 'num'
}
},
'version' => 26,
'system_h' => ' #include "mor1kx/system.h"
static inline void nop (){
__asm__("l.nop 1");
}
/*********************
//Interrupt template: check mor1kx/int.c for more information
// interrupt function
void hw_isr(void){
//place your interrupt code here
HW_ISR=HW_ISR; //ack the interrupt at the end of isr function
return;
}
int main(){
int_init();
//assume hw interrupt pin is connected to 10th cpu intrrupt pin
int_add(10, hw_isr, 0);
// Enable this interrupt
int_enable(10);
cpu_enable_user_interrupts();
hw_init ( ); // hw interrupt enable function
while(1){
//place rest of the code
}
}
*******************************/',
'category' => 'Processor',
'hdl_files' => [
'/mpsoc/src_processor/mor1kx-3.1/rtl/verilog/mor1kx.v',
'/mpsoc/src_processor/mor1kx-3.1/rtl/verilog/mor1kx_branch_prediction.v',
'/mpsoc/src_processor/mor1kx-3.1/rtl/verilog/mor1kx_bus_if_avalon.v',
'/mpsoc/src_processor/mor1kx-3.1/rtl/verilog/mor1kx_bus_if_wb32.v',
'/mpsoc/src_processor/mor1kx-3.1/rtl/verilog/mor1kx_cache_lru.v',
'/mpsoc/src_processor/mor1kx-3.1/rtl/verilog/mor1kx_cfgrs.v',
'/mpsoc/src_processor/mor1kx-3.1/rtl/verilog/mor1kx_cpu.v',
'/mpsoc/src_processor/mor1kx-3.1/rtl/verilog/mor1kx_cpu_cappuccino.v',
'/mpsoc/src_processor/mor1kx-3.1/rtl/verilog/mor1kx_cpu_espresso.v',
'/mpsoc/src_processor/mor1kx-3.1/rtl/verilog/mor1kx_cpu_prontoespresso.v',
'/mpsoc/src_processor/mor1kx-3.1/rtl/verilog/mor1kx_ctrl_cappuccino.v',
'/mpsoc/src_processor/mor1kx-3.1/rtl/verilog/mor1kx_ctrl_espresso.v',
'/mpsoc/src_processor/mor1kx-3.1/rtl/verilog/mor1kx_ctrl_prontoespresso.v',
'/mpsoc/src_processor/mor1kx-3.1/rtl/verilog/mor1kx_dcache.v',
'/mpsoc/src_processor/mor1kx-3.1/rtl/verilog/mor1kx_decode.v',
'/mpsoc/src_processor/mor1kx-3.1/rtl/verilog/mor1kx_decode_execute_cappuccino.v',
'/mpsoc/src_processor/mor1kx-3.1/rtl/verilog/mor1kx-defines.v',
'/mpsoc/src_processor/mor1kx-3.1/rtl/verilog/mor1kx_dmmu.v',
'/mpsoc/src_processor/mor1kx-3.1/rtl/verilog/mor1kx_execute_alu.v',
'/mpsoc/src_processor/mor1kx-3.1/rtl/verilog/mor1kx_execute_ctrl_cappuccino.v',
'/mpsoc/src_processor/mor1kx-3.1/rtl/verilog/mor1kx_fetch_cappuccino.v',
'/mpsoc/src_processor/mor1kx-3.1/rtl/verilog/mor1kx_fetch_espresso.v',
'/mpsoc/src_processor/mor1kx-3.1/rtl/verilog/mor1kx_fetch_prontoespresso.v',
'/mpsoc/src_processor/mor1kx-3.1/rtl/verilog/mor1kx_fetch_tcm_prontoespresso.v',
'/mpsoc/src_processor/mor1kx-3.1/rtl/verilog/mor1kx_icache.v',
'/mpsoc/src_processor/mor1kx-3.1/rtl/verilog/mor1kx_immu.v',
'/mpsoc/src_processor/mor1kx-3.1/rtl/verilog/mor1kx_lsu_cappuccino.v',
'/mpsoc/src_processor/mor1kx-3.1/rtl/verilog/mor1kx_lsu_espresso.v',
'/mpsoc/src_processor/mor1kx-3.1/rtl/verilog/mor1kx_pic.v',
'/mpsoc/src_processor/mor1kx-3.1/rtl/verilog/mor1kx_rf_cappuccino.v',
'/mpsoc/src_processor/mor1kx-3.1/rtl/verilog/mor1kx_rf_espresso.v',
'/mpsoc/src_processor/mor1kx-3.1/rtl/verilog/mor1kx_simple_dpram_sclk.v',
'/mpsoc/src_processor/mor1kx-3.1/rtl/verilog/mor1kx-sprs.v',
'/mpsoc/src_processor/mor1kx-3.1/rtl/verilog/mor1kx_store_buffer.v',
'/mpsoc/src_processor/mor1kx-3.1/rtl/verilog/mor1kx_ticktimer.v',
'/mpsoc/src_processor/mor1kx-3.1/rtl/verilog/mor1kx_true_dpram_sclk.v',
'/mpsoc/src_processor/mor1kx-3.1/rtl/verilog/mor1kx_utils.vh',
'/mpsoc/src_processor/mor1kx-3.1/rtl/verilog/mor1kx_wb_mux_cappuccino.v',
'/mpsoc/src_processor/mor1kx-3.1/rtl/verilog/mor1kx_wb_mux_espresso.v',
'/mpsoc/src_processor/mor1kx-3.1/rtl/mor1k.v'
],
'ports' => {
'dwbm_ack_i' => {
'intfc_port' => 'ack_i',
'intfc_name' => 'plug:wb_master[1]',
'type' => 'input',
'range' => ''
},
'dwbm_dat_i' => {
'range' => '31:0',
'type' => 'input',
'intfc_port' => 'dat_i',
'intfc_name' => 'plug:wb_master[1]'
},
'iwbm_rty_i' => {
'range' => '',
'type' => 'input',
'intfc_port' => 'rty_i',
'intfc_name' => 'plug:wb_master[0]'
},
'iwbm_cyc_o' => {
'type' => 'output',
'range' => '',
'intfc_name' => 'plug:wb_master[0]',
'intfc_port' => 'cyc_o'
},
'dwbm_stb_o' => {
'type' => 'output',
'range' => '',
'intfc_name' => 'plug:wb_master[1]',
'intfc_port' => 'stb_o'
},
'rst' => {
'range' => '',
'type' => 'input',
'intfc_port' => 'reset_i',
'intfc_name' => 'plug:reset[0]'
},
'iwbm_stb_o' => {
'type' => 'output',
'range' => '',
'intfc_name' => 'plug:wb_master[0]',
'intfc_port' => 'stb_o'
},
'dwbm_adr_o' => {
'type' => 'output',
'range' => '31:0',
'intfc_name' => 'plug:wb_master[1]',
'intfc_port' => 'adr_o'
},
'iwbm_err_i' => {
'range' => '',
'type' => 'input',
'intfc_port' => 'err_i',
'intfc_name' => 'plug:wb_master[0]'
},
'dwbm_rty_i' => {
'range' => '',
'type' => 'input',
'intfc_name' => 'plug:wb_master[1]',
'intfc_port' => 'rty_i'
},
'clk' => {
'type' => 'input',
'range' => '',
'intfc_port' => 'clk_i',
'intfc_name' => 'plug:clk[0]'
},
'dwbm_dat_o' => {
'range' => '31:0',
'type' => 'output',
'intfc_name' => 'plug:wb_master[1]',
'intfc_port' => 'dat_o'
},
'iwbm_sel_o' => {
'intfc_port' => 'sel_o',
'intfc_name' => 'plug:wb_master[0]',
'range' => '3:0',
'type' => 'output'
},
'dwbm_cyc_o' => {
'range' => '',
'type' => 'output',
'intfc_port' => 'cyc_o',
'intfc_name' => 'plug:wb_master[1]'
},
'dwbm_cti_o' => {
'intfc_port' => 'cti_o',
'intfc_name' => 'plug:wb_master[1]',
'type' => 'output',
'range' => '2:0'
},
'iwbm_dat_i' => {
'intfc_name' => 'plug:wb_master[0]',
'intfc_port' => 'dat_i',
'type' => 'input',
'range' => '31:0'
},
'dwbm_err_i' => {
'intfc_port' => 'err_i',
'intfc_name' => 'plug:wb_master[1]',
'type' => 'input',
'range' => ''
},
'cpu_en' => {
'intfc_port' => 'enable_i',
'intfc_name' => 'plug:enable[0]',
'type' => 'input',
'range' => ''
},
'iwbm_ack_i' => {
'type' => 'input',
'range' => '',
'intfc_port' => 'ack_i',
'intfc_name' => 'plug:wb_master[0]'
},
'iwbm_cti_o' => {
'intfc_name' => 'plug:wb_master[0]',
'intfc_port' => 'cti_o',
'type' => 'output',
'range' => '2:0'
},
'irq_i' => {
'intfc_name' => 'socket:interrupt_peripheral[array]',
'intfc_port' => 'int_i',
'range' => '31:0',
'type' => 'input'
},
'iwbm_we_o' => {
'intfc_name' => 'plug:wb_master[0]',
'intfc_port' => 'we_o',
'range' => '',
'type' => 'output'
},
'iwbm_adr_o' => {
'type' => 'output',
'range' => '31:0',
'intfc_port' => 'adr_o',
'intfc_name' => 'plug:wb_master[0]'
},
'snoop_adr_i' => {
'intfc_port' => 'snoop_adr_i',
'intfc_name' => 'plug:snoop[0]',
'type' => 'input',
'range' => '31:0'
},
'snoop_en_i' => {
'type' => 'input',
'range' => '',
'intfc_name' => 'plug:snoop[0]',
'intfc_port' => 'snoop_en_i'
},
'dwbm_sel_o' => {
'intfc_name' => 'plug:wb_master[1]',
'intfc_port' => 'sel_o',
'range' => '3:0',
'type' => 'output'
},
'dwbm_bte_o' => {
'intfc_port' => 'bte_o',
'intfc_name' => 'plug:wb_master[1]',
'type' => 'output',
'range' => '1:0'
},
'dwbm_we_o' => {
'intfc_name' => 'plug:wb_master[1]',
'intfc_port' => 'we_o',
'type' => 'output',
'range' => ''
},
'iwbm_dat_o' => {
'range' => '31:0',
'type' => 'output',
'intfc_port' => 'dat_o',
'intfc_name' => 'plug:wb_master[0]'
},
'iwbm_bte_o' => {
'intfc_port' => 'bte_o',
'intfc_name' => 'plug:wb_master[0]',
'range' => '1:0',
'type' => 'output'
}
},
'gui_status' => {
'status' => 'ideal',
'timeout' => 0
},
'modules' => {
'mor1k' => {}
}
}, 'ip_gen' );