Line 1... |
Line 1... |
#######################################################################
|
#######################################################################
|
## File: single_port_ram.IP
|
## File: single_port_ram.IP
|
##
|
##
|
## Copyright (C) 2014-2016 Alireza Monemi
|
## Copyright (C) 2014-2016 Alireza Monemi
|
##
|
##
|
## This file is part of ProNoC 1.5.0
|
## This file is part of ProNoC 1.6.0
|
##
|
##
|
## WARNING: THIS IS AN AUTO-GENERATED FILE. CHANGES TO IT
|
## WARNING: THIS IS AN AUTO-GENERATED FILE. CHANGES TO IT
|
## MAY CAUSE UNEXPECTED BEHAIVOR.
|
## MAY CAUSE UNEXPECTED BEHAIVOR.
|
################################################################################
|
################################################################################
|
|
|
$wb_single_port_ram = bless( {
|
$wb_single_port_ram = bless( {
|
'hdl_files' => [
|
|
'/mpsoc/src_peripheral/ram/wb_single_port_ram.v',
|
|
'/mpsoc/src_peripheral/ram/generic_ram.v',
|
|
'/mpsoc/src_peripheral/ram/byte_enabled_generic_ram.sv',
|
|
'/mpsoc/src_peripheral/ram/wb_bram_ctrl.v'
|
|
],
|
|
'ip_name' => 'single_port_ram',
|
|
'description' => 'Single port ram with wishbone bus interface.',
|
|
'modules' => {
|
'modules' => {
|
'wb_single_port_ram' => {}
|
'wb_single_port_ram' => {}
|
},
|
},
|
'gui_status' => {
|
'module_name' => 'wb_single_port_ram',
|
'timeout' => 0,
|
'version' => 19,
|
'status' => 'ideal'
|
'category' => 'RAM',
|
},
|
'description' => 'Single port ram with wishbone bus interface.',
|
'plugs' => {
|
'plugs' => {
|
'reset' => {
|
'reset' => {
|
'reset' => {},
|
|
'value' => 1,
|
'value' => 1,
|
|
'reset' => {},
|
|
'type' => 'num',
|
'0' => {
|
'0' => {
|
'name' => 'reset'
|
'name' => 'reset'
|
|
}
|
},
|
},
|
'type' => 'num'
|
'wb_slave' => {
|
},
|
|
'clk' => {
|
|
'clk' => {},
|
|
'value' => 1,
|
'value' => 1,
|
|
'type' => 'num',
|
'0' => {
|
'0' => {
|
'name' => 'clk'
|
'name' => 'wb',
|
|
'width' => 'WB_Aw',
|
|
'addr' => '0x0000_0000 0x3fff_ffff RAM'
|
},
|
},
|
'type' => 'num'
|
'wb_slave' => {}
|
},
|
},
|
'wb_slave' => {
|
'clk' => {
|
|
'type' => 'num',
|
'0' => {
|
'0' => {
|
'width' => 'WB_Aw',
|
'name' => 'clk'
|
'name' => 'wb',
|
|
'addr' => '0x0000_0000 0x3fff_ffff RAM'
|
|
},
|
},
|
'value' => 1,
|
'value' => 1,
|
'type' => 'num',
|
'clk' => {}
|
'wb_slave' => {}
|
|
}
|
}
|
},
|
},
|
|
'unused' => undef,
|
|
'ip_name' => 'single_port_ram',
|
|
'hdl_files' => [
|
|
'/mpsoc/src_peripheral/ram/wb_single_port_ram.v',
|
|
'/mpsoc/src_peripheral/ram/generic_ram.v',
|
|
'/mpsoc/src_peripheral/ram/byte_enabled_generic_ram.sv',
|
|
'/mpsoc/src_peripheral/ram/wb_bram_ctrl.v'
|
|
],
|
|
'parameters_order' => [
|
|
'Dw',
|
|
'Aw',
|
|
'BYTE_WR_EN',
|
|
'FPGA_VENDOR',
|
|
'JTAG_CONNECT',
|
|
'JTAG_INDEX',
|
|
'TAGw',
|
|
'SELw',
|
|
'CTIw',
|
|
'BTEw',
|
|
'WB_Aw',
|
|
'BURST_MODE',
|
|
'MEM_CONTENT_FILE_NAME',
|
|
'INITIAL_EN',
|
|
'INIT_FILE_PATH'
|
|
],
|
|
'file_name' => '/home/alireza/Mywork/mpsoc/src_peripheral/ram/wb_single_port_ram.v',
|
|
'gui_status' => {
|
|
'timeout' => 0,
|
|
'status' => 'ideal'
|
|
},
|
'parameters' => {
|
'parameters' => {
|
'SELw' => {
|
'SELw' => {
|
'info' => 'Parameter',
|
|
'deafult' => 'Dw/8',
|
|
'global_param' => 'Localparam',
|
'global_param' => 'Localparam',
|
'content' => '',
|
|
'redefine_param' => 1,
|
'redefine_param' => 1,
|
'type' => 'Fixed'
|
'type' => 'Fixed',
|
|
'content' => '',
|
|
'deafult' => 'Dw/8',
|
|
'info' => 'Parameter'
|
},
|
},
|
'Dw' => {
|
|
'info' => 'Memory data width in Bits.',
|
'MEM_CONTENT_FILE_NAME' => {
|
'deafult' => '32',
|
'type' => 'Entry',
|
'global_param' => 'Parameter',
|
'content' => '',
|
'content' => '8,1024,1',
|
|
'redefine_param' => 1,
|
'redefine_param' => 1,
|
'type' => 'Spin-button'
|
'global_param' => 'Localparam',
|
|
'info' => 'MEM_FILE_NAME:
|
|
The memory file name (without file type extension ) that is used for writting the memory content either at run time or at initialization time.
|
|
|
|
File Path:
|
|
For bus-based SoC the file path is {ProNoC_work}/SOC/{soc_name}/sw/RAM/{file_type}/{MEM_FILE_NAME}.
|
|
For NoC-based MPSoC the file path is {ProNoC_work}/MPSOC/{mpsoc_name}/sw/tile{tile_num}/RAM/{file_type}/{MEM_FILE_NAME}
|
|
|
|
file_type:
|
|
bin: raw binary format . It will be used by JTAG_WB to change the memory content at runtime.
|
|
memh: hexadecimal-string format . It will be used for initialing the Generic RAM using $readmemh command.
|
|
mif: memory initialization file format. This file can be used to initialize Altera FPGA memory. Also if the JTAG_CONECT is selected as ALTERA_IEMC it can be used for changing memory content at run time . ',
|
|
'deafult' => '"ram0"'
|
},
|
},
|
'BTEw' => {
|
'JTAG_CONNECT' => {
|
'info' => 'Parameter',
|
'content' => '"DISABLED", "JTAG_WB" , "ALTERA_IMCE"',
|
'deafult' => '2',
|
'type' => 'Combo-box',
|
'global_param' => 'Localparam',
|
'global_param' => 'Localparam',
|
'content' => '',
|
'redefine_param' => 1,
|
'type' => 'Fixed',
|
'deafult' => '"DISABLED"',
|
'redefine_param' => 1
|
'info' => 'JTAG_CONNECT:
|
|
if it is not disabled then the actual memory is implemented as a dual port RAM with the second port is connected either to In-System Memory Content Editor or Jtag_to_wb. This allows that the memory content can be read/written using JTAG. '
|
},
|
},
|
'WB_Aw' => {
|
'WB_Aw' => {
|
'info' => undef,
|
|
'deafult' => 'Aw+2',
|
'deafult' => 'Aw+2',
|
|
'info' => undef,
|
'global_param' => 'Don\'t include',
|
'global_param' => 'Don\'t include',
|
'content' => '',
|
|
'redefine_param' => 1,
|
'redefine_param' => 1,
|
'type' => 'Fixed'
|
'type' => 'Fixed',
|
|
'content' => ''
|
|
},
|
|
|
|
'JTAG_INDEX' => {
|
|
'global_param' => 'Localparam',
|
|
'redefine_param' => 1,
|
|
'content' => '',
|
|
'type' => 'Entry',
|
|
'deafult' => 'CORE_ID',
|
|
'info' => ' A unique index number which will be used for accessing to the memory content using JTAG cable.The default value is the processing tile id (CORE_ID) . You can also inter a unique number for each individula memory.
|
|
|
|
In case you have \'n\' memory in each processing core you can define their index as "n*CORE_ID+1 , n*CORE_ID+2 ...n*CORE_ID+n-1).
|
|
|
|
You also can disabled JTAG access here and connect one jtag to wb interface (jtag_wb) to the wishbone bus. Using single jtag index number, a jtag_wb module can read/wr any IP that is connected to wishbone bus slave port (including all memory units).
|
|
|
|
'
|
},
|
},
|
'Aw' => {
|
'Aw' => {
|
'info' => 'Memory address width',
|
'info' => 'Memory address width',
|
'deafult' => '12',
|
'deafult' => '12',
|
'global_param' => 'Parameter',
|
|
'content' => '4,31,1',
|
'content' => '4,31,1',
|
'type' => 'Spin-button',
|
'type' => 'Spin-button',
|
'redefine_param' => 1
|
'redefine_param' => 1,
|
},
|
'global_param' => 'Parameter'
|
'BURST_MODE' => {
|
|
'info' => 'Wishbone bus burst read/write mode enable/disable. ',
|
|
'deafult' => '"DISABLED"',
|
|
'global_param' => 'Localparam',
|
|
'content' => '"DISABLED","ENABLED"',
|
|
'type' => 'Combo-box',
|
|
'redefine_param' => 1
|
|
},
|
},
|
'TAGw' => {
|
'TAGw' => {
|
'info' => 'Parameter',
|
'redefine_param' => 1,
|
'deafult' => '3',
|
|
'global_param' => 'Localparam',
|
'global_param' => 'Localparam',
|
'content' => '',
|
'content' => '',
|
'type' => 'Fixed',
|
'type' => 'Fixed',
|
'redefine_param' => 1
|
'info' => 'Parameter',
|
|
'deafult' => '3'
|
},
|
},
|
'JTAG_INDEX' => {
|
'BTEw' => {
|
'info' => ' A unique index number which will be used for accessing to the memory content using JTAG cable.The default value is the processing tile id (CORE_ID) . You can also inter a unique number for each individula memory.
|
'deafult' => '2',
|
|
'info' => 'Parameter',
|
In case you have \'n\' memory in each processing core you can define their index as "n*CORE_ID+1 , n*CORE_ID+2 ...n*CORE_ID+n-1).
|
'type' => 'Fixed',
|
|
|
You also can disabled JTAG access here and connect one jtag to wb interface (jtag_wb) to the wishbone bus. Using single jtag index number, a jtag_wb module can read/wr any IP that is connected to wishbone bus slave port (including all memory units).
|
|
|
|
',
|
|
'deafult' => 'CORE_ID',
|
|
'global_param' => 'Localparam',
|
|
'content' => '',
|
'content' => '',
|
'redefine_param' => 1,
|
|
'type' => 'Entry'
|
|
},
|
|
'JTAG_CONNECT' => {
|
|
'info' => 'JTAG_CONNECT:
|
|
if it is not disabled then the actual memory is implemented as a dual port RAM with the second port is connected either to In-System Memory Content Editor or Jtag_to_wb. This allows that the memory content can be read/written using JTAG. ',
|
|
'deafult' => '"DISABLED"',
|
|
'global_param' => 'Localparam',
|
'global_param' => 'Localparam',
|
'content' => '"DISABLED", "JTAG_WB" , "ALTERA_IMCE"',
|
|
'type' => 'Combo-box',
|
|
'redefine_param' => 1
|
'redefine_param' => 1
|
},
|
},
|
'BYTE_WR_EN' => {
|
'FPGA_VENDOR' => {
|
|
'type' => 'Combo-box',
|
|
'content' => '"ALTERA","GENERIC"',
|
|
'redefine_param' => 1,
|
|
'global_param' => 'Localparam',
|
'info' => '',
|
'info' => '',
|
'deafult' => '"YES"',
|
'deafult' => '"GENERIC"'
|
|
},
|
|
'CTIw' => {
|
|
'type' => 'Fixed',
|
|
'content' => '',
|
|
'redefine_param' => 1,
|
'global_param' => 'Localparam',
|
'global_param' => 'Localparam',
|
'content' => '"YES","NO"',
|
'info' => 'Parameter',
|
|
'deafult' => '3'
|
|
},
|
|
'Dw' => {
|
|
'type' => 'Spin-button',
|
|
'content' => '8,1024,1',
|
'redefine_param' => 1,
|
'redefine_param' => 1,
|
'type' => 'Combo-box'
|
'global_param' => 'Parameter',
|
|
'info' => 'Memory data width in Bits.',
|
|
'deafult' => '32'
|
},
|
},
|
'INIT_FILE_NAME' => {
|
'INIT_FILE_PATH' => {
|
'info' => 'The name of RAM content memory file (without extention). The file will be used by the JTAG programer to programe the memory at run time.',
|
'info' => undef,
|
'deafult' => '"ram0"',
|
'deafult' => 'SW_LOC',
|
'global_param' => 'Don\'t include',
|
|
'content' => '',
|
|
'redefine_param' => 1,
|
'redefine_param' => 1,
|
'type' => 'Entry'
|
'global_param' => 'Localparam',
|
|
'type' => 'Fixed',
|
|
'content' => ''
|
},
|
},
|
'CTIw' => {
|
|
'info' => 'Parameter',
|
'INITIAL_EN' => {
|
'deafult' => '3',
|
'deafult' => '"NO"',
|
|
'info' => 'If selected as "ENABLED", the memory content will be initialized at compilation time using MEM_CONTENT_FILE_NAME.',
|
'global_param' => 'Localparam',
|
'global_param' => 'Localparam',
|
'content' => '',
|
|
'redefine_param' => 1,
|
'redefine_param' => 1,
|
'type' => 'Fixed'
|
'content' => '"YES","NO"',
|
|
'type' => 'Combo-box'
|
},
|
},
|
'FPGA_VENDOR' => {
|
'BURST_MODE' => {
|
'info' => '',
|
'deafult' => '"ENABLED"',
|
'deafult' => '"ALTERA"',
|
'info' => 'Wishbone bus burst read/write mode enable/disable. ',
|
|
'type' => 'Combo-box',
|
|
'content' => '"DISABLED","ENABLED"',
|
'global_param' => 'Localparam',
|
'global_param' => 'Localparam',
|
'content' => '"ALTERA","GENERIC"',
|
'redefine_param' => 1
|
|
},
|
|
'BYTE_WR_EN' => {
|
|
'info' => '',
|
|
'deafult' => '"YES"',
|
|
'type' => 'Combo-box',
|
|
'content' => '"YES","NO"',
|
'redefine_param' => 1,
|
'redefine_param' => 1,
|
'type' => 'Combo-box'
|
'global_param' => 'Localparam'
|
}
|
}
|
},
|
},
|
'parameters_order' => [
|
'ports_order' => [
|
'Dw',
|
'clk',
|
'Aw',
|
'reset',
|
'BYTE_WR_EN',
|
'sa_dat_i',
|
'FPGA_VENDOR',
|
'sa_sel_i',
|
'JTAG_CONNECT',
|
'sa_addr_i',
|
'JTAG_INDEX',
|
'sa_tag_i',
|
'TAGw',
|
'sa_cti_i',
|
'SELw',
|
'sa_bte_i',
|
'CTIw',
|
'sa_stb_i',
|
'BTEw',
|
'sa_cyc_i',
|
'WB_Aw',
|
'sa_we_i',
|
'BURST_MODE',
|
'sa_dat_o',
|
'INIT_FILE_NAME'
|
'sa_ack_o',
|
|
'sa_err_o',
|
|
'sa_rty_o'
|
],
|
],
|
'ports' => {
|
'ports' => {
|
'sa_tag_i' => {
|
'sa_cyc_i' => {
|
|
'intfc_port' => 'cyc_i',
|
'intfc_name' => 'plug:wb_slave[0]',
|
'intfc_name' => 'plug:wb_slave[0]',
|
'intfc_port' => 'tag_i',
|
'type' => 'input',
|
'range' => 'TAGw-1 : 0',
|
'range' => ''
|
'type' => 'input'
|
|
},
|
},
|
'sa_rty_o' => {
|
'sa_ack_o' => {
|
'intfc_name' => 'plug:wb_slave[0]',
|
'intfc_name' => 'plug:wb_slave[0]',
|
'intfc_port' => 'rty_o',
|
'intfc_port' => 'ack_o',
|
'range' => '',
|
'range' => '',
|
'type' => 'output'
|
'type' => 'output'
|
},
|
},
|
'sa_dat_o' => {
|
'sa_dat_o' => {
|
'intfc_port' => 'dat_o',
|
'intfc_port' => 'dat_o',
|
'intfc_name' => 'plug:wb_slave[0]',
|
'intfc_name' => 'plug:wb_slave[0]',
|
'range' => 'Dw-1 : 0',
|
'range' => 'Dw-1 : 0',
|
'type' => 'output'
|
'type' => 'output'
|
},
|
},
|
'sa_cti_i' => {
|
'sa_addr_i' => {
|
|
'intfc_port' => 'adr_i',
|
'intfc_name' => 'plug:wb_slave[0]',
|
'intfc_name' => 'plug:wb_slave[0]',
|
'intfc_port' => 'cti_i',
|
'type' => 'input',
|
'range' => 'CTIw-1 : 0',
|
'range' => 'Aw-1 : 0'
|
'type' => 'input'
|
|
},
|
},
|
'sa_sel_i' => {
|
'sa_tag_i' => {
|
'intfc_name' => 'plug:wb_slave[0]',
|
|
'intfc_port' => 'sel_i',
|
|
'range' => 'SELw-1 : 0',
|
|
'type' => 'input'
|
|
},
|
|
'sa_bte_i' => {
|
|
'intfc_port' => 'bte_i',
|
|
'intfc_name' => 'plug:wb_slave[0]',
|
'intfc_name' => 'plug:wb_slave[0]',
|
'range' => 'BTEw-1 : 0',
|
'intfc_port' => 'tag_i',
|
'type' => 'input'
|
'type' => 'input',
|
|
'range' => 'TAGw-1 : 0'
|
},
|
},
|
'sa_dat_i' => {
|
'sa_dat_i' => {
|
'intfc_port' => 'dat_i',
|
|
'intfc_name' => 'plug:wb_slave[0]',
|
'intfc_name' => 'plug:wb_slave[0]',
|
|
'intfc_port' => 'dat_i',
|
'range' => 'Dw-1 : 0',
|
'range' => 'Dw-1 : 0',
|
'type' => 'input'
|
'type' => 'input'
|
},
|
},
|
'sa_we_i' => {
|
'sa_stb_i' => {
|
'intfc_port' => 'we_i',
|
'type' => 'input',
|
'intfc_name' => 'plug:wb_slave[0]',
|
|
'range' => '',
|
'range' => '',
|
'type' => 'input'
|
'intfc_name' => 'plug:wb_slave[0]',
|
|
'intfc_port' => 'stb_i'
|
},
|
},
|
'sa_err_o' => {
|
'sa_rty_o' => {
|
'intfc_port' => 'err_o',
|
|
'intfc_name' => 'plug:wb_slave[0]',
|
'intfc_name' => 'plug:wb_slave[0]',
|
|
'intfc_port' => 'rty_o',
|
'range' => '',
|
'range' => '',
|
'type' => 'output'
|
'type' => 'output'
|
},
|
},
|
'sa_cyc_i' => {
|
'sa_we_i' => {
|
'intfc_port' => 'cyc_i',
|
'intfc_port' => 'we_i',
|
'intfc_name' => 'plug:wb_slave[0]',
|
'intfc_name' => 'plug:wb_slave[0]',
|
'range' => '',
|
'range' => '',
|
'type' => 'input'
|
'type' => 'input'
|
},
|
},
|
'reset' => {
|
'sa_sel_i' => {
|
'intfc_name' => 'plug:reset[0]',
|
'type' => 'input',
|
'intfc_port' => 'reset_i',
|
'range' => 'SELw-1 : 0',
|
'range' => '',
|
|
'type' => 'input'
|
|
},
|
|
'sa_ack_o' => {
|
|
'intfc_port' => 'ack_o',
|
|
'intfc_name' => 'plug:wb_slave[0]',
|
'intfc_name' => 'plug:wb_slave[0]',
|
'range' => '',
|
'intfc_port' => 'sel_i'
|
'type' => 'output'
|
},
|
|
'sa_cti_i' => {
|
|
'range' => 'CTIw-1 : 0',
|
|
'type' => 'input',
|
|
'intfc_port' => 'cti_i',
|
|
'intfc_name' => 'plug:wb_slave[0]'
|
},
|
},
|
'clk' => {
|
'clk' => {
|
'intfc_port' => 'clk_i',
|
|
'intfc_name' => 'plug:clk[0]',
|
'intfc_name' => 'plug:clk[0]',
|
'range' => '',
|
'intfc_port' => 'clk_i',
|
'type' => 'input'
|
'type' => 'input',
|
|
'range' => ''
|
},
|
},
|
'sa_addr_i' => {
|
'sa_bte_i' => {
|
'intfc_port' => 'adr_i',
|
'intfc_port' => 'bte_i',
|
'intfc_name' => 'plug:wb_slave[0]',
|
'intfc_name' => 'plug:wb_slave[0]',
|
'range' => 'Aw-1 : 0',
|
'range' => 'BTEw-1 : 0',
|
'type' => 'input'
|
'type' => 'input'
|
},
|
},
|
'sa_stb_i' => {
|
'reset' => {
|
'intfc_port' => 'stb_i',
|
'range' => '',
|
|
'type' => 'input',
|
|
'intfc_port' => 'reset_i',
|
|
'intfc_name' => 'plug:reset[0]'
|
|
},
|
|
'sa_err_o' => {
|
|
'intfc_port' => 'err_o',
|
'intfc_name' => 'plug:wb_slave[0]',
|
'intfc_name' => 'plug:wb_slave[0]',
|
'range' => '',
|
'range' => '',
|
'type' => 'input'
|
'type' => 'output'
|
|
}
|
}
|
}
|
},
|
|
'ports_order' => [
|
|
'clk',
|
|
'reset',
|
|
'sa_dat_i',
|
|
'sa_sel_i',
|
|
'sa_addr_i',
|
|
'sa_tag_i',
|
|
'sa_cti_i',
|
|
'sa_bte_i',
|
|
'sa_stb_i',
|
|
'sa_cyc_i',
|
|
'sa_we_i',
|
|
'sa_dat_o',
|
|
'sa_ack_o',
|
|
'sa_err_o',
|
|
'sa_rty_o'
|
|
],
|
|
'file_name' => '/home/alireza/Mywork/mpsoc/src_peripheral/ram/wb_single_port_ram.v',
|
|
'module_name' => 'wb_single_port_ram',
|
|
'unused' => undef,
|
|
'category' => 'RAM'
|
|
}, 'ip_gen' );
|
}, 'ip_gen' );
|