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/] [Or1200.IP] - Rev 54
Go to most recent revision | Compare with Previous | Blame | View Log
#######################################################################
## File: Or1200.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 BEHAIVOR.
################################################################################
$ipgen = bless( {
'ip_name' => 'Or1200',
'parameters_order' => [
'dw',
'aw',
'ppic_ints',
'boot_adr',
'Data_cashe_size',
'Instruction_cashe_size',
'Data_cashe_enable',
'Instruction_cashe_enable',
'Data_MMU_enable',
'Instruction_MMU_enable',
'implementation_addc',
'implement_sub',
'implement_cy',
'implement_0v',
'implement_OVE',
'implement_alu_rotate',
'implement_alu_compare',
'implement_alu_ext',
'multiplier_type',
'divider_type'
],
'version' => 34,
'hdl_files' => [
'/mpsoc/src_processor/or1200/verilog/or1200.v',
'/mpsoc/src_processor/or1200/verilog/src/or1200_alu.v',
'/mpsoc/src_processor/or1200/verilog/src/or1200_amultp2_32x32.v',
'/mpsoc/src_processor/or1200/verilog/src/or1200_cfgr.v',
'/mpsoc/src_processor/or1200/verilog/src/or1200_cpu.v',
'/mpsoc/src_processor/or1200/verilog/src/or1200_ctrl.v',
'/mpsoc/src_processor/or1200/verilog/src/or1200_dc_fsm.v',
'/mpsoc/src_processor/or1200/verilog/src/or1200_dc_ram.v',
'/mpsoc/src_processor/or1200/verilog/src/or1200_dc_tag.v',
'/mpsoc/src_processor/or1200/verilog/src/or1200_dc_top.v',
'/mpsoc/src_processor/or1200/verilog/src/or1200_dmmu_tlb.v',
'/mpsoc/src_processor/or1200/verilog/src/or1200_dmmu_top.v',
'/mpsoc/src_processor/or1200/verilog/src/or1200_dpram.v',
'/mpsoc/src_processor/or1200/verilog/src/or1200_dpram_32x32.v',
'/mpsoc/src_processor/or1200/verilog/src/or1200_dpram_256x32.v',
'/mpsoc/src_processor/or1200/verilog/src/or1200_du.v',
'/mpsoc/src_processor/or1200/verilog/src/or1200_except.v',
'/mpsoc/src_processor/or1200/verilog/src/or1200_fpu.v',
'/mpsoc/src_processor/or1200/verilog/src/or1200_fpu_addsub.v',
'/mpsoc/src_processor/or1200/verilog/src/or1200_fpu_arith.v',
'/mpsoc/src_processor/or1200/verilog/src/or1200_fpu_div.v',
'/mpsoc/src_processor/or1200/verilog/src/or1200_fpu_fcmp.v',
'/mpsoc/src_processor/or1200/verilog/src/or1200_fpu_intfloat_conv.v',
'/mpsoc/src_processor/or1200/verilog/src/or1200_fpu_intfloat_conv_except.v',
'/mpsoc/src_processor/or1200/verilog/src/or1200_fpu_mul.v',
'/mpsoc/src_processor/or1200/verilog/src/or1200_fpu_post_norm_addsub.v',
'/mpsoc/src_processor/or1200/verilog/src/or1200_fpu_post_norm_div.v',
'/mpsoc/src_processor/or1200/verilog/src/or1200_fpu_post_norm_intfloat_conv.v',
'/mpsoc/src_processor/or1200/verilog/src/or1200_fpu_post_norm_mul.v',
'/mpsoc/src_processor/or1200/verilog/src/or1200_fpu_pre_norm_addsub.v',
'/mpsoc/src_processor/or1200/verilog/src/or1200_fpu_pre_norm_div.v',
'/mpsoc/src_processor/or1200/verilog/src/or1200_fpu_pre_norm_mul.v',
'/mpsoc/src_processor/or1200/verilog/src/or1200_freeze.v',
'/mpsoc/src_processor/or1200/verilog/src/or1200_genpc.v',
'/mpsoc/src_processor/or1200/verilog/src/or1200_gmultp2_32x32.v',
'/mpsoc/src_processor/or1200/verilog/src/or1200_ic_fsm.v',
'/mpsoc/src_processor/or1200/verilog/src/or1200_ic_ram.v',
'/mpsoc/src_processor/or1200/verilog/src/or1200_ic_tag.v',
'/mpsoc/src_processor/or1200/verilog/src/or1200_ic_top.v',
'/mpsoc/src_processor/or1200/verilog/src/or1200_if.v',
'/mpsoc/src_processor/or1200/verilog/src/or1200_immu_tlb.v',
'/mpsoc/src_processor/or1200/verilog/src/or1200_immu_top.v',
'/mpsoc/src_processor/or1200/verilog/src/or1200_iwb_biu.v',
'/mpsoc/src_processor/or1200/verilog/src/or1200_lsu.v',
'/mpsoc/src_processor/or1200/verilog/src/or1200_mem2reg.v',
'/mpsoc/src_processor/or1200/verilog/src/or1200_mult_mac.v',
'/mpsoc/src_processor/or1200/verilog/src/or1200_operandmuxes.v',
'/mpsoc/src_processor/or1200/verilog/src/or1200_pic.v',
'/mpsoc/src_processor/or1200/verilog/src/or1200_pm.v',
'/mpsoc/src_processor/or1200/verilog/src/or1200_qmem_top.v',
'/mpsoc/src_processor/or1200/verilog/src/or1200_reg2mem.v',
'/mpsoc/src_processor/or1200/verilog/src/or1200_rf.v',
'/mpsoc/src_processor/or1200/verilog/src/or1200_rfram_generic.v',
'/mpsoc/src_processor/or1200/verilog/src/or1200_sb.v',
'/mpsoc/src_processor/or1200/verilog/src/or1200_sb_fifo.v',
'/mpsoc/src_processor/or1200/verilog/src/or1200_spram.v',
'/mpsoc/src_processor/or1200/verilog/src/or1200_spram_32_bw.v',
'/mpsoc/src_processor/or1200/verilog/src/or1200_spram_32x24.v',
'/mpsoc/src_processor/or1200/verilog/src/or1200_spram_64x14.v',
'/mpsoc/src_processor/or1200/verilog/src/or1200_spram_64x22.v',
'/mpsoc/src_processor/or1200/verilog/src/or1200_spram_64x24.v',
'/mpsoc/src_processor/or1200/verilog/src/or1200_spram_128x32.v',
'/mpsoc/src_processor/or1200/verilog/src/or1200_spram_256x21.v',
'/mpsoc/src_processor/or1200/verilog/src/or1200_spram_512x20.v',
'/mpsoc/src_processor/or1200/verilog/src/or1200_spram_1024x8.v',
'/mpsoc/src_processor/or1200/verilog/src/or1200_spram_1024x32.v',
'/mpsoc/src_processor/or1200/verilog/src/or1200_spram_1024x32_bw.v',
'/mpsoc/src_processor/or1200/verilog/src/or1200_spram_2048x8.v',
'/mpsoc/src_processor/or1200/verilog/src/or1200_spram_2048x32.v',
'/mpsoc/src_processor/or1200/verilog/src/or1200_spram_2048x32_bw.v',
'/mpsoc/src_processor/or1200/verilog/src/or1200_sprs.v',
'/mpsoc/src_processor/or1200/verilog/src/or1200_top.v',
'/mpsoc/src_processor/or1200/verilog/src/or1200_tpram_32x32.v',
'/mpsoc/src_processor/or1200/verilog/src/or1200_tt.v',
'/mpsoc/src_processor/or1200/verilog/src/or1200_wb_biu.v',
'/mpsoc/src_processor/or1200/verilog/src/or1200_wbmux.v',
'/mpsoc/src_processor/or1200/verilog/src/or1200_xcv_ram32x8d.v',
'/mpsoc/src_processor/or1200/verilog/src/timescale.v'
],
'gen_hw_files' => [
'/mpsoc/src_processor/or1200/verilog/or1200_definesfrename_sep_tlib/or1200_defines.v'
],
'ports' => {
'iwb_stb_o' => {
'intfc_port' => 'stb_o',
'type' => 'output',
'intfc_name' => 'plug:wb_master[0]',
'range' => ''
},
'en_i' => {
'intfc_name' => 'plug:enable[0]',
'type' => 'input',
'range' => '',
'intfc_port' => 'enable_i'
},
'iwb_bte_o' => {
'intfc_port' => 'bte_o',
'intfc_name' => 'plug:wb_master[0]',
'type' => 'output',
'range' => '1:0'
},
'dwb_dat_o' => {
'intfc_port' => 'dat_o',
'range' => 'dw-1:0',
'intfc_name' => 'plug:wb_master[1]',
'type' => 'output'
},
'iwb_err_i' => {
'range' => '',
'type' => 'input',
'intfc_name' => 'plug:wb_master[0]',
'intfc_port' => 'err_i'
},
'reset' => {
'intfc_port' => 'reset_i',
'intfc_name' => 'plug:reset[0]',
'type' => 'input'
},
'dwb_stb_o' => {
'intfc_port' => 'stb_o',
'range' => '',
'type' => 'output',
'intfc_name' => 'plug:wb_master[1]'
},
'iwb_dat_o' => {
'intfc_port' => 'dat_o',
'range' => 'dw-1:0',
'intfc_name' => 'plug:wb_master[0]',
'type' => 'output'
},
'iwb_rty_i' => {
'intfc_port' => 'rty_i',
'range' => '',
'type' => 'input',
'intfc_name' => 'plug:wb_master[0]'
},
'dwb_we_o' => {
'intfc_port' => 'we_o',
'type' => 'output',
'intfc_name' => 'plug:wb_master[1]',
'range' => ''
},
'iwb_dat_i' => {
'range' => 'dw-1:0',
'intfc_name' => 'plug:wb_master[0]',
'type' => 'input',
'intfc_port' => 'dat_i'
},
'iwb_we_o' => {
'intfc_port' => 'we_o',
'type' => 'output',
'intfc_name' => 'plug:wb_master[0]',
'range' => ''
},
'dwb_cyc_o' => {
'intfc_port' => 'cyc_o',
'range' => '',
'intfc_name' => 'plug:wb_master[1]',
'type' => 'output'
},
'dwb_cti_o' => {
'intfc_port' => 'cti_o',
'range' => '2:0',
'intfc_name' => 'plug:wb_master[1]',
'type' => 'output'
},
'iwb_cyc_o' => {
'intfc_name' => 'plug:wb_master[0]',
'type' => 'output',
'range' => '',
'intfc_port' => 'cyc_o'
},
'dwb_err_i' => {
'intfc_port' => 'err_i',
'range' => '',
'intfc_name' => 'plug:wb_master[1]',
'type' => 'input'
},
'pic_ints_i' => {
'intfc_port' => 'int_i',
'range' => 'ppic_ints-1:0',
'intfc_name' => 'socket:interrupt_peripheral[array]',
'type' => 'input'
},
'iwb_sel_o' => {
'intfc_port' => 'sel_o',
'range' => '3:0',
'intfc_name' => 'plug:wb_master[0]',
'type' => 'output'
},
'dwb_rty_i' => {
'intfc_port' => 'rty_i',
'type' => 'input',
'intfc_name' => 'plug:wb_master[1]',
'range' => ''
},
'dwb_adr_o' => {
'intfc_port' => 'adr_o',
'range' => 'aw-1:0',
'intfc_name' => 'plug:wb_master[1]',
'type' => 'output'
},
'iwb_cti_o' => {
'intfc_port' => 'cti_o',
'intfc_name' => 'plug:wb_master[0]',
'type' => 'output',
'range' => '2:0'
},
'dwb_sel_o' => {
'type' => 'output',
'intfc_name' => 'plug:wb_master[1]',
'range' => '3:0',
'intfc_port' => 'sel_o'
},
'iwb_adr_o' => {
'range' => 'aw-1:0',
'intfc_name' => 'plug:wb_master[0]',
'type' => 'output',
'intfc_port' => 'adr_o'
},
'dwb_bte_o' => {
'intfc_port' => 'bte_o',
'range' => '1:0',
'intfc_name' => 'plug:wb_master[1]',
'type' => 'output'
},
'dwb_dat_i' => {
'intfc_name' => 'plug:wb_master[1]',
'type' => 'input',
'range' => 'dw-1:0',
'intfc_port' => 'dat_i'
},
'iwb_ack_i' => {
'range' => '',
'type' => 'input',
'intfc_name' => 'plug:wb_master[0]',
'intfc_port' => 'ack_i'
},
'clk' => {
'intfc_port' => 'clk_i',
'range' => '',
'type' => 'input',
'intfc_name' => 'plug:clk[0]'
},
'dwb_ack_i' => {
'range' => '',
'intfc_name' => 'plug:wb_master[1]',
'type' => 'input',
'intfc_port' => 'ack_i'
}
},
'system_h' => ' #include "or1200/system.h"
static inline void nop (){
__asm__("l.nop 1");
}',
'plugs' => {
'reset' => {
'0' => {
'name' => 'reset'
},
'type' => 'num',
'value' => 1
},
'clk' => {
'value' => 1,
'type' => 'num',
'0' => {
'name' => 'clk'
}
},
'wb_master' => {
'type' => 'num',
'0' => {
'name' => 'iwb'
},
'1' => {
'name' => 'dwb'
},
'value' => 2
},
'enable' => {
'0' => {
'name' => 'enable'
},
'type' => 'num',
'value' => 1,
'enable' => {}
}
},
'ports_order' => [
'clk',
'reset',
'en_i',
'pic_ints_i',
'iwb_ack_i',
'iwb_err_i',
'iwb_rty_i',
'iwb_dat_i',
'iwb_cyc_o',
'iwb_adr_o',
'iwb_stb_o',
'iwb_we_o',
'iwb_sel_o',
'iwb_dat_o',
'iwb_cti_o',
'iwb_bte_o',
'dwb_ack_i',
'dwb_err_i',
'dwb_rty_i',
'dwb_dat_i',
'dwb_cyc_o',
'dwb_adr_o',
'dwb_stb_o',
'dwb_we_o',
'dwb_sel_o',
'dwb_dat_o',
'dwb_cti_o',
'dwb_bte_o'
],
'modules' => {
'or1200' => {}
},
'unused' => {
'plug:wb_master[0]' => [
'tag_o'
],
'plug:wb_master[1]' => [
'tag_o'
]
},
'parameters' => {
'implement_alu_ext' => {
'redefine_param' => 0,
'info' => 'Implement l.extXs and l.extXz instructions',
'default' => 'NO_EXT',
'type' => 'Combo-box',
'global_param' => 'Don\'t include',
'content' => 'EXT,NO_EXT'
},
'multiplier_type' => {
'global_param' => 'Don\'t include',
'content' => 'SERIAL,PARALLEL',
'default' => 'SERIAL',
'redefine_param' => 0,
'info' => undef,
'type' => 'Combo-box'
},
'Instruction_cashe_size' => {
'default' => '8K',
'redefine_param' => 0,
'info' => 'Instruction Cashe Size in B',
'type' => 'Combo-box',
'global_param' => 'Don\'t include',
'content' => '512,4K,8K,16K,32K'
},
'divider_type' => {
'global_param' => 'Don\'t include',
'content' => 'SERIAL,PARALLEL',
'info' => undef,
'redefine_param' => 0,
'default' => 'SERIAL',
'type' => 'Combo-box'
},
'dw' => {
'global_param' => 'Localparam',
'content' => '',
'default' => '32',
'info' => 'Parameter',
'redefine_param' => 1,
'type' => 'Fixed'
},
'implement_alu_compare' => {
'default' => '2',
'redefine_param' => 0,
'info' => 'Type of ALU compare to implement
Try to find which synthesizes with most efficient logic use or highest speed.',
'type' => 'Combo-box',
'global_param' => 'Don\'t include',
'content' => '1,2,3'
},
'implement_alu_rotate' => {
'type' => 'Combo-box',
'default' => 'ROTATE',
'info' => 'Implement rotate in the ALU
At the time of writing this, or32 C/C++ compiler doesn\'t generate rotate instructions. However or32 assembler can assemble code that uses rotate insn.
This means that rotate instructions must be used manually inserted.
By default implementation of rotate is disabled to save area and increase is disabled to save area and increase clock frequency.',
'redefine_param' => 0,
'content' => 'ROTATE,NO_ROTATE',
'global_param' => 'Don\'t include'
},
'implement_OVE' => {
'global_param' => 'Don\'t include',
'content' => 'OVE,NO_OVE',
'default' => 'NO_OVE',
'redefine_param' => 0,
'info' => 'Implement carry bit SR[OVE]
Overflow interrupt indicator. When enabled, SR[OV] flag does not remain asserted after exception.',
'type' => 'Combo-box'
},
'Data_cashe_enable' => {
'type' => 'Combo-box',
'default' => 'YES',
'info' => undef,
'redefine_param' => 0,
'content' => 'NO,YES',
'global_param' => 'Don\'t include'
},
'ppic_ints' => {
'default' => '20',
'redefine_param' => 1,
'info' => 'Number of interrupts',
'type' => 'Spin-button',
'global_param' => 'Localparam',
'content' => '3,31,1'
},
'Instruction_cashe_enable' => {
'info' => undef,
'redefine_param' => 0,
'default' => 'YES',
'type' => 'Combo-box',
'global_param' => 'Don\'t include',
'content' => 'NO,YES'
},
'implementation_addc' => {
'default' => 'ADDC',
'info' => 'Implement l.addc/l.addic instructions
By default implementation of l.addc/l.addic instructions is enabled in case you need them.
If you don\'t use them, then disable implementation to save area.',
'redefine_param' => 0,
'type' => 'Combo-box',
'global_param' => 'Don\'t include',
'content' => 'ADDC,NO_ADDC'
},
'aw' => {
'content' => '',
'global_param' => 'Localparam',
'type' => 'Fixed',
'info' => 'Parameter',
'redefine_param' => 1,
'default' => '32'
},
'implement_sub' => {
'content' => 'SUB,NO_SUB',
'global_param' => 'Don\'t include',
'type' => 'Combo-box',
'info' => 'Implement l.sub instruction
By default implementation of l.sub instructions is enabled to be compliant with the simulator.
If you don\'t use carry bit, then disable implementation to save area.',
'redefine_param' => 0,
'default' => 'SUB'
},
'Data_cashe_size' => {
'global_param' => 'Don\'t include',
'content' => '512,4K,8K,16K,32K',
'default' => '8K',
'redefine_param' => 0,
'info' => 'Data Cashe Size in B',
'type' => 'Combo-box'
},
'Data_MMU_enable' => {
'default' => 'YES',
'redefine_param' => 0,
'info' => undef,
'type' => 'Combo-box',
'global_param' => 'Don\'t include',
'content' => 'NO,YES'
},
'boot_adr' => {
'type' => 'Fixed',
'default' => '32\'h00000100',
'info' => 'Parameter',
'redefine_param' => 1,
'content' => '',
'global_param' => 'Localparam'
},
'implement_0v' => {
'content' => '0V,NO_0V',
'global_param' => 'Don\'t include',
'type' => 'Combo-box',
'default' => '0V',
'redefine_param' => 0,
'info' => 'Implement carry bit SR[OV]
Compiler doesn\'t use this, but other code may like to.'
},
'implement_cy' => {
'content' => 'CY,NO_CY',
'global_param' => 'Don\'t include',
'type' => 'Combo-box',
'info' => 'Implement carry bit SR[CY]
By default implementation of SR[CY] is enabled to be compliant with the simulator. However SR[CY] is explicitly only used by l.addc/l.addic/l.sub instructions and if these three insns are not implemented there is not much point having SR[CY].',
'redefine_param' => 0,
'default' => 'CY'
},
'Instruction_MMU_enable' => {
'global_param' => 'Don\'t include',
'content' => 'NO,YES',
'redefine_param' => 0,
'info' => undef,
'default' => 'YES',
'type' => 'Combo-box'
}
},
'gui_status' => {
'status' => 'ideal',
'timeout' => 0
},
'sockets' => {
'interrupt_peripheral' => {
'connection_num' => 'single connection',
'value' => 'ppic_ints',
'0' => {
'name' => 'interrupt'
},
'type' => 'param'
}
},
'sw_files' => [
'/mpsoc/src_processor/or1200/sw/Makefile',
'/mpsoc/src_processor/or1200/sw/or1200',
'/mpsoc/src_processor/or1200/sw/link.ld',
'/mpsoc/src_processor/or1200/sw/define_printf.h',
'/mpsoc/src_processor/src_lib/simple-printf'
],
'category' => 'Processor',
'module_name' => 'or1200',
'file_name' => 'mpsoc/src_processor/or1200/verilog/or1200.v'
}, 'ip_gen' );
Go to most recent revision | Compare with Previous | Blame | View Log