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

Compare Revisions

  • This comparison shows the changes necessary to convert path
    /an-fpga-implementation-of-low-latency-noc-based-mpsoc/trunk/mpsoc/perl_gui/lib/ip/NoC
    from Rev 34 to Rev 38
    Reverse comparison

Rev 34 → Rev 38

/ni_master.IP
3,554 → 3,551
##
## Copyright (C) 2014-2016 Alireza Monemi
##
## This file is part of ProNoC 1.6.0
## This file is part of ProNoC 1.8.0
##
## WARNING: THIS IS AN AUTO-GENERATED FILE. CHANGES TO IT
## MAY CAUSE UNEXPECTED BEHAIVOR.
################################################################################
 
$ni_master = bless( {
'plugs' => {
'interrupt_peripheral' => {
'type' => 'num',
'value' => 1,
'0' => {
'name' => 'interrupt'
},
'interrupt_peripheral' => {}
},
'wb_slave' => {
'wb_slave' => {},
'type' => 'num',
'value' => 1,
'0' => {
'addr' => '0xb800_0000 0xbfff_ffff custom devices',
'name' => 'wb_slave',
'width' => 10
}
},
'reset' => {
'reset' => {},
$ipgen = bless( {
'description' => '',
'file_name' => '/home/alireza/mywork/mpsoc/src_peripheral/ni/ni_master.v',
'plugs' => {
'wb_master' => {
'value' => 2,
'1' => {
'name' => 'wb_receive'
},
'wb_master' => {},
'0' => {
'name' => 'reset'
'name' => 'wb_send'
},
'type' => 'num',
'value' => 1
'type' => 'num'
},
'clk' => {
'clk' => {},
'0' => {
'name' => 'clk'
},
'value' => 1,
'type' => 'num'
},
'wb_master' => {
'1' => {
'name' => 'wb_receive'
},
'type' => 'num',
'wb_master' => {},
'value' => 2,
'0' => {
'name' => 'wb_send'
}
}
},
'sockets' => {
'ni' => {
'connection_num' => 'single connection',
'interrupt_peripheral' => {
'value' => 1,
'interrupt_peripheral' => {},
'type' => 'num',
'0' => {
'name' => 'interrupt'
}
},
'wb_slave' => {
'wb_slave' => {},
'value' => 1,
'type' => 'num',
'ni' => {},
'0' => {
'name' => 'ni'
}
}
},
'unused' => {
'plug:wb_master[1]' => [
'bte_o',
'dat_i',
'err_i',
'tag_o',
'rty_i'
],
'plug:wb_slave[0]' => [
'tag_i',
'err_o',
'rty_o',
'bte_i'
],
'plug:wb_master[0]' => [
'bte_o',
'err_i',
'tag_o',
'dat_o',
'rty_i'
]
},
'ip_name' => 'ni_master',
'description' => '',
'hdl_files' => [
'/mpsoc/src_noc/arbiter.v',
'/mpsoc/src_noc/flit_buffer.v',
'/mpsoc/src_noc/input_ports.v',
'/mpsoc/src_noc/main_comp.v',
'/mpsoc/src_noc/route_mesh.v',
'/mpsoc/src_noc/route_torus.v',
'/mpsoc/src_noc/routing.v',
'/mpsoc/src_peripheral/ni/ni_vc_dma.v',
'/mpsoc/src_peripheral/ni/ni_vc_wb_slave_regs.v',
'/mpsoc/src_peripheral/ni/ni_master.v',
'/mpsoc/src_peripheral/ni/ni_crc32.v'
],
'parameters' => {
'B' => {
'global_param' => 'Parameter',
'type' => 'Fixed',
'content' => '',
'deafult' => ' 4',
'redefine_param' => 1,
'info' => 'Parameter'
},
'CRC_EN' => {
'redefine_param' => 1,
'deafult' => '"NO"',
'content' => '"YES","NO"',
'info' => 'The parameter can be selected as "YES" or "NO".
If CRC is enabled, then two CRC32 generator modules will be added to the NI. One CRC generator for calculating CRC of sending packets and another for receiving packets. The CRC32 value of each packet is send via tail flit and at destination NI, is will be compared with received packet generated CRC32. The matching results can be used for error-detection and can be read via NI slave interface. ',
'global_param' => 'Localparam',
'type' => 'Combo-box'
},
'DEBUG_EN' => {
'type' => 'Fixed',
'global_param' => 'Parameter',
'info' => 'Parameter',
'deafult' => ' 1',
'content' => '',
'redefine_param' => 1
'name' => 'wb_slave',
'width' => 10,
'addr' => '0xb800_0000 0xbfff_ffff custom devices'
},
'Yw' => {
'info' => undef,
'redefine_param' => 0,
'content' => '',
'deafult' => 'log2(NY)',
'type' => 'Fixed',
'global_param' => 'Localparam'
},
'NY' => {
'info' => 'Parameter',
'redefine_param' => 1,
'deafult' => ' 4',
'content' => '',
'type' => 'Fixed',
'global_param' => 'Parameter'
},
'C' => {
'type' => 'Fixed',
'global_param' => 'Parameter',
'info' => 'Parameter',
'content' => '',
'deafult' => ' 4',
'redefine_param' => 1
},
'SELw' => {
'global_param' => 'Localparam',
'type' => 'Fixed',
'type' => 'num'
},
'clk' => {
'value' => 1,
'0' => {
'name' => 'clk'
},
'type' => 'num',
'clk' => {}
},
'reset' => {
'type' => 'num',
'0' => {
'name' => 'reset'
},
'reset' => {},
'value' => 1
}
},
'ports_order' => [
'reset',
'clk',
'current_x',
'current_y',
'flit_out',
'flit_out_wr',
'credit_in',
'flit_in',
'flit_in_wr',
'credit_out',
's_dat_i',
's_sel_i',
's_addr_i',
's_cti_i',
's_stb_i',
's_cyc_i',
's_we_i',
's_dat_o',
's_ack_o',
'm_send_sel_o',
'm_send_addr_o',
'm_send_cti_o',
'm_send_stb_o',
'm_send_cyc_o',
'm_send_we_o',
'm_send_dat_i',
'm_send_ack_i',
'm_receive_sel_o',
'm_receive_dat_o',
'm_receive_addr_o',
'm_receive_cti_o',
'm_receive_stb_o',
'm_receive_cyc_o',
'm_receive_we_o',
'm_receive_ack_i',
'irq'
],
'hdl_files' => [
'/mpsoc/src_noc/arbiter.v',
'/mpsoc/src_noc/flit_buffer.v',
'/mpsoc/src_noc/input_ports.v',
'/mpsoc/src_noc/main_comp.v',
'/mpsoc/src_noc/route_mesh.v',
'/mpsoc/src_noc/route_torus.v',
'/mpsoc/src_noc/routing.v',
'/mpsoc/src_peripheral/ni/ni_vc_dma.v',
'/mpsoc/src_peripheral/ni/ni_vc_wb_slave_regs.v',
'/mpsoc/src_peripheral/ni/ni_master.v',
'/mpsoc/src_peripheral/ni/ni_crc32.v'
],
'parameters' => {
'TOPOLOGY' => {
'default' => '"MESH"',
'redefine_param' => 1,
'content' => '',
'deafult' => '4',
'info' => 'Parameter'
},
'Fpay' => {
'redefine_param' => 1,
'deafult' => ' 32',
'content' => '',
'info' => 'Parameter',
'global_param' => 'Parameter',
'type' => 'Fixed'
'type' => 'Fixed',
'content' => ''
},
'MAX_TRANSACTION_WIDTH' => {
'info' => 'maximum packet size width in words.
The maximum data that can be sent via one packet will be 2 power of MAX_DMA_TRANSACTION_WIDTH in words.',
'content' => '4,32,1',
'deafult' => '13',
'redefine_param' => 1,
'type' => 'Spin-button',
'global_param' => 'Localparam'
},
'SRC_ADR_HDR_WIDTH' => {
'redefine_param' => 1,
'content' => '',
'deafult' => '8',
'info' => 'Parameter',
'global_param' => 'Localparam',
'type' => 'Fixed'
},
'ROUTING_HDR_WIDTH' => {
'type' => 'Fixed',
'global_param' => 'Localparam',
'info' => 'Parameter',
'content' => '',
'deafult' => '8',
'redefine_param' => 1
},
'Fw' => {
'global_param' => 'Localparam',
'type' => 'Fixed',
'redefine_param' => 0,
'deafult' => '2+V+Fpay',
'content' => '',
'info' => undef
},
'DST_ADR_HDR_WIDTH' => {
'global_param' => 'Localparam',
'type' => 'Fixed',
'redefine_param' => 1,
'deafult' => '8',
'content' => '',
'info' => 'Parameter'
},
'Xw' => {
'global_param' => 'Localparam',
'type' => 'Fixed',
'deafult' => 'log2(NX)',
'content' => '',
'redefine_param' => 0,
'info' => undef
},
'M_Aw' => {
'redefine_param' => 1,
'deafult' => '32',
'content' => 'Dw',
'info' => 'Parameter',
'global_param' => 'Localparam',
'type' => 'Fixed'
},
'P' => {
'global_param' => 'Parameter',
'type' => 'Fixed',
'redefine_param' => 1,
'deafult' => '5',
'content' => '',
'info' => 'Parameter'
},
'ROUTE_TYPE' => {
'info' => 'Parameter',
'redefine_param' => 1,
'deafult' => ' ',
'content' => '',
'type' => 'Fixed',
'global_param' => 'Parameter'
},
'MAX_BURST_SIZE' => {
'type' => 'Combo-box',
'global_param' => 'Localparam',
'info' => 'Maximum burst size in words.
'MAX_BURST_SIZE' => {
'content' => '2,4,8,16,32,64,128,256,512,1024,2048',
'type' => 'Combo-box',
'info' => 'Maximum burst size in words.
The NI release wishbone bus each time one burst is completed or when the VC\'s internal FIFO becomes full. The bus will be released for one clock cycle. Then in case, there are other active VCs, another active VC will get access to the bus using round robin arbiter. This process will be continued until all desired data is transferred. ',
'redefine_param' => 1,
'content' => '2,4,8,16,32,64,128,256,512,1024,2048',
'deafult' => '16'
},
'Dw' => {
'type' => 'Spin-button',
'global_param' => 'Localparam',
'info' => 'wishbone_bus data width in bits.',
'redefine_param' => 1,
'content' => '32,256,8',
'deafult' => '32'
},
'ROUTE_NAME' => {
'deafult' => '"XY" ',
'content' => '',
'global_param' => 'Localparam',
'redefine_param' => 1,
'info' => 'Parameter',
'global_param' => 'Parameter',
'type' => 'Fixed'
'default' => '16'
},
'NX' => {
'content' => '',
'deafult' => ' 4',
'redefine_param' => 1,
'info' => 'Parameter',
'global_param' => 'Parameter',
'type' => 'Fixed'
},
'CLASS_HDR_WIDTH' => {
'global_param' => 'Localparam',
'type' => 'Fixed',
'redefine_param' => 1,
'deafult' => '8',
'content' => '',
'info' => 'Parameter'
},
'TOPOLOGY' => {
'info' => 'Parameter',
'redefine_param' => 1,
'content' => '',
'deafult' => '"MESH"',
'type' => 'Fixed',
'global_param' => 'Parameter'
},
'S_Aw' => {
'global_param' => 'Localparam',
'ROUTING_HDR_WIDTH' => {
'content' => '',
'info' => 'Parameter',
'type' => 'Fixed',
'global_param' => 'Localparam',
'redefine_param' => 1,
'default' => '8'
},
'CLASS_HDR_WIDTH' => {
'redefine_param' => 1,
'default' => '8',
'content' => '',
'type' => 'Fixed',
'info' => 'Parameter',
'global_param' => 'Localparam'
},
'S_Aw' => {
'content' => '',
'global_param' => 'Localparam',
'info' => 'Parameter',
'type' => 'Fixed',
'redefine_param' => 1,
'default' => '8'
},
'ROUTE_TYPE' => {
'redefine_param' => 1,
'default' => ' ',
'content' => '',
'info' => 'Parameter',
'global_param' => 'Parameter',
'type' => 'Fixed'
},
'DST_ADR_HDR_WIDTH' => {
'content' => '',
'type' => 'Fixed',
'info' => 'Parameter',
'global_param' => 'Localparam',
'redefine_param' => 1,
'default' => '8'
},
'NX' => {
'default' => ' 4',
'redefine_param' => 1,
'type' => 'Fixed',
'info' => 'Parameter',
'global_param' => 'Parameter',
'content' => ''
},
'SRC_ADR_HDR_WIDTH' => {
'default' => '8',
'redefine_param' => 1,
'type' => 'Fixed',
'info' => 'Parameter',
'global_param' => 'Localparam',
'content' => ''
},
'ROUTE_NAME' => {
'global_param' => 'Parameter',
'type' => 'Fixed',
'info' => 'Parameter',
'content' => '',
'default' => '"XY" ',
'redefine_param' => 1
},
'Xw' => {
'redefine_param' => 0,
'default' => 'log2(NX)',
'content' => '',
'info' => undef,
'type' => 'Fixed',
'global_param' => 'Localparam'
},
'TAGw' => {
'type' => 'Fixed',
'info' => 'Parameter',
'global_param' => 'Localparam',
'content' => '',
'default' => '3',
'redefine_param' => 1
},
'DEBUG_EN' => {
'content' => '',
'info' => 'Parameter',
'global_param' => 'Parameter',
'type' => 'Fixed',
'redefine_param' => 1,
'content' => '',
'deafult' => '8',
'info' => 'Parameter'
'default' => ' 1'
},
'V' => {
'global_param' => 'Parameter',
'type' => 'Fixed',
'content' => '',
'deafult' => '4',
'redefine_param' => 1,
'info' => 'Parameter'
},
'TAGw' => {
'global_param' => 'Localparam',
'type' => 'Fixed',
'deafult' => '3',
'content' => '',
'redefine_param' => 1,
'info' => 'Parameter'
}
},
'version' => 37,
'category' => 'NoC',
'description_pdf' => '/mpsoc/src_peripheral/ni/NI_master.pdf',
'ports' => {
's_addr_i' => {
'range' => 'S_Aw-1 : 0',
'type' => 'input',
'intfc_name' => 'plug:wb_slave[0]',
'intfc_port' => 'adr_i'
},
'm_send_cti_o' => {
'intfc_port' => 'cti_o',
'intfc_name' => 'plug:wb_master[0]',
'type' => 'output',
'range' => 'TAGw-1 : 0'
},
'm_send_sel_o' => {
'type' => 'output',
'intfc_port' => 'sel_o',
'intfc_name' => 'plug:wb_master[0]',
'range' => 'SELw-1 : 0'
},
'm_receive_ack_i' => {
'range' => '',
'type' => 'input',
'intfc_name' => 'plug:wb_master[1]',
'intfc_port' => 'ack_i'
},
'm_send_cyc_o' => {
'range' => '',
'type' => 'output',
'intfc_port' => 'cyc_o',
'intfc_name' => 'plug:wb_master[0]'
},
'm_receive_sel_o' => {
'range' => 'SELw-1 : 0',
'type' => 'output',
'intfc_port' => 'sel_o',
'intfc_name' => 'plug:wb_master[1]'
},
's_dat_i' => {
'type' => 'input',
'intfc_port' => 'dat_i',
'intfc_name' => 'plug:wb_slave[0]',
'range' => 'Dw-1 : 0'
'B' => {
'redefine_param' => 1,
'default' => ' 4',
'content' => '',
'info' => 'Parameter',
'global_param' => 'Parameter',
'type' => 'Fixed'
},
'Dw' => {
'redefine_param' => 1,
'default' => '32',
'content' => '32,256,8',
'info' => 'wishbone_bus data width in bits.',
'global_param' => 'Localparam',
'type' => 'Spin-button'
},
'Fpay' => {
'default' => ' 32',
'redefine_param' => 1,
'info' => 'Parameter',
'type' => 'Fixed',
'global_param' => 'Parameter',
'content' => ''
},
'NY' => {
'redefine_param' => 1,
'default' => ' 4',
'content' => '',
'global_param' => 'Parameter',
'info' => 'Parameter',
'type' => 'Fixed'
},
'P' => {
'global_param' => 'Parameter',
'info' => 'Parameter',
'type' => 'Fixed',
'content' => '',
'default' => '5',
'redefine_param' => 1
},
'SELw' => {
'redefine_param' => 1,
'default' => '4',
'content' => '',
'info' => 'Parameter',
'type' => 'Fixed',
'global_param' => 'Localparam'
},
'V' => {
'redefine_param' => 1,
'default' => '4',
'content' => '',
'info' => 'Parameter',
'global_param' => 'Parameter',
'type' => 'Fixed'
},
'CRC_EN' => {
'type' => 'Combo-box',
'global_param' => 'Localparam',
'info' => 'The parameter can be selected as "YES" or "NO".
If CRC is enabled, then two CRC32 generator modules will be added to the NI. One CRC generator for calculating CRC of sending packets and another for receiving packets. The CRC32 value of each packet is send via tail flit and at destination NI, is will be compared with received packet generated CRC32. The matching results can be used for error-detection and can be read via NI slave interface. ',
'content' => '"YES","NO"',
'default' => '"NO"',
'redefine_param' => 1
},
'flit_out' => {
'range' => 'Fw-1 : 0',
'type' => 'output',
'intfc_name' => 'socket:ni[0]',
'intfc_port' => 'flit_out'
},
'm_receive_cyc_o' => {
'intfc_name' => 'plug:wb_master[1]',
'intfc_port' => 'cyc_o',
'type' => 'output',
'range' => ''
},
'current_x' => {
'range' => 'Xw-1 : 0',
'type' => 'input',
'intfc_port' => 'current_x',
'intfc_name' => 'socket:ni[0]'
},
'm_receive_we_o' => {
'intfc_port' => 'we_o',
'intfc_name' => 'plug:wb_master[1]',
'type' => 'output',
'range' => ''
},
'flit_out_wr' => {
'Yw' => {
'default' => 'log2(NY)',
'redefine_param' => 0,
'global_param' => 'Localparam',
'type' => 'Fixed',
'info' => undef,
'content' => ''
},
'M_Aw' => {
'redefine_param' => 1,
'default' => '32',
'content' => 'Dw',
'info' => 'Parameter',
'type' => 'Fixed',
'global_param' => 'Localparam'
},
'Fw' => {
'type' => 'Fixed',
'info' => undef,
'global_param' => 'Localparam',
'content' => '',
'default' => '2+V+Fpay',
'redefine_param' => 0
},
'MAX_TRANSACTION_WIDTH' => {
'global_param' => 'Localparam',
'type' => 'Spin-button',
'info' => 'maximum packet size width in words.
The maximum data that can be sent via one packet will be 2 power of MAX_DMA_TRANSACTION_WIDTH in words.',
'content' => '4,32,1',
'default' => '13',
'redefine_param' => 1
},
'C' => {
'default' => ' 4',
'redefine_param' => 1,
'info' => 'Parameter',
'global_param' => 'Parameter',
'type' => 'Fixed',
'content' => ''
}
},
'ports' => {
's_dat_o' => {
'intfc_port' => 'dat_o',
'range' => 'Dw-1 : 0',
'intfc_name' => 'plug:wb_slave[0]',
'type' => 'output'
},
's_stb_i' => {
'type' => 'input',
'intfc_name' => 'plug:wb_slave[0]',
'range' => '',
'intfc_port' => 'stb_i'
},
'm_receive_sel_o' => {
'range' => 'SELw-1 : 0',
'intfc_name' => 'plug:wb_master[1]',
'type' => 'output',
'intfc_port' => 'sel_o'
},
'm_receive_ack_i' => {
'intfc_port' => 'ack_i',
'range' => '',
'intfc_name' => 'socket:ni[0]',
'intfc_port' => 'flit_out_wr',
'type' => 'output'
'intfc_name' => 'plug:wb_master[1]',
'type' => 'input'
},
's_cyc_i' => {
'intfc_port' => 'cyc_i',
'intfc_name' => 'plug:wb_slave[0]',
'type' => 'input',
'range' => ''
's_cyc_i' => {
'intfc_port' => 'cyc_i',
'type' => 'input',
'intfc_name' => 'plug:wb_slave[0]',
'range' => ''
},
'm_send_addr_o' => {
'intfc_port' => 'adr_o',
'range' => 'M_Aw-1 : 0',
'type' => 'output',
'intfc_name' => 'plug:wb_master[0]'
},
'm_send_we_o' => {
'range' => '',
'intfc_name' => 'plug:wb_master[0]',
'type' => 'output',
'intfc_port' => 'we_o'
},
'm_receive_addr_o' => {
'range' => 'M_Aw-1 : 0',
'type' => 'output',
'intfc_name' => 'plug:wb_master[1]',
'intfc_port' => 'adr_o'
},
's_sel_i' => {
'range' => 'SELw-1 : 0',
'type' => 'input',
'intfc_name' => 'plug:wb_slave[0]',
'intfc_port' => 'sel_i'
},
'm_send_ack_i' => {
'type' => 'input',
'intfc_port' => 'ack_i',
'intfc_name' => 'plug:wb_master[0]',
'range' => ''
},
'reset' => {
'type' => 'input',
'intfc_name' => 'plug:reset[0]',
'intfc_port' => 'reset_i',
'range' => ''
'current_x' => {
'intfc_port' => 'current_x',
'range' => 'Xw-1 : 0',
'intfc_name' => 'socket:ni[0]',
'type' => 'input'
},
'm_send_stb_o' => {
'range' => '',
'intfc_name' => 'plug:wb_master[0]',
'intfc_port' => 'stb_o',
'type' => 'output'
'clk' => {
'type' => 'input',
'intfc_name' => 'plug:clk[0]',
'range' => '',
'intfc_port' => 'clk_i'
},
'm_receive_addr_o' => {
'type' => 'output',
'intfc_name' => 'plug:wb_master[1]',
'range' => 'M_Aw-1 : 0',
'intfc_port' => 'adr_o'
},
'm_send_dat_i' => {
'intfc_port' => 'dat_i',
'intfc_name' => 'plug:wb_master[0]',
'type' => 'input',
'range' => 'Dw-1 : 0'
},
'credit_in' => {
'type' => 'input',
'intfc_name' => 'socket:ni[0]',
'intfc_port' => 'credit_in',
'range' => 'V-1 : 0'
},
'irq' => {
's_dat_i' => {
'type' => 'input',
'intfc_name' => 'plug:wb_slave[0]',
'range' => 'Dw-1 : 0',
'intfc_port' => 'dat_i'
},
'm_receive_dat_o' => {
'intfc_port' => 'dat_o',
'range' => 'Dw-1 : 0',
'type' => 'output',
'intfc_name' => 'plug:wb_master[1]'
},
's_sel_i' => {
'intfc_port' => 'sel_i',
'type' => 'input',
'intfc_name' => 'plug:wb_slave[0]',
'range' => 'SELw-1 : 0'
},
's_ack_o' => {
'intfc_port' => 'ack_o',
'range' => '',
'type' => 'output',
'intfc_port' => 'int_o',
'intfc_name' => 'plug:interrupt_peripheral[0]'
'intfc_name' => 'plug:wb_slave[0]'
},
's_stb_i' => {
'range' => '',
'type' => 'input',
'intfc_port' => 'stb_i',
'intfc_name' => 'plug:wb_slave[0]'
},
'm_send_we_o' => {
'm_receive_stb_o' => {
'type' => 'output',
'intfc_name' => 'plug:wb_master[1]',
'range' => '',
'intfc_name' => 'plug:wb_master[0]',
'intfc_port' => 'we_o',
'type' => 'output'
'intfc_port' => 'stb_o'
},
'flit_in' => {
'range' => 'Fw-1 : 0',
'type' => 'input',
'flit_out_wr' => {
'intfc_name' => 'socket:ni[0]',
'intfc_port' => 'flit_in'
'type' => 'output',
'range' => '',
'intfc_port' => 'flit_out_wr'
},
'm_send_addr_o' => {
'intfc_port' => 'adr_o',
'intfc_name' => 'plug:wb_master[0]',
'type' => 'output',
'range' => 'M_Aw-1 : 0'
},
'credit_out' => {
'range' => 'V-1 : 0',
'current_y' => {
'intfc_port' => 'current_y',
'intfc_name' => 'socket:ni[0]',
'type' => 'input',
'range' => 'Yw-1 : 0'
},
'm_send_cti_o' => {
'range' => 'TAGw-1 : 0',
'type' => 'output',
'intfc_name' => 'plug:wb_master[0]',
'intfc_port' => 'cti_o'
},
'm_receive_we_o' => {
'range' => '',
'type' => 'output',
'intfc_port' => 'credit_out',
'intfc_name' => 'socket:ni[0]'
'intfc_name' => 'plug:wb_master[1]',
'intfc_port' => 'we_o'
},
'm_receive_stb_o' => {
'intfc_name' => 'plug:wb_master[1]',
'intfc_port' => 'stb_o',
'type' => 'output',
'range' => ''
},
'clk' => {
'range' => '',
'intfc_name' => 'plug:clk[0]',
'intfc_port' => 'clk_i',
'flit_in' => {
'range' => 'Fw-1 : 0',
'type' => 'input',
'intfc_name' => 'socket:ni[0]',
'intfc_port' => 'flit_in'
},
'flit_out' => {
'range' => 'Fw-1 : 0',
'type' => 'output',
'intfc_name' => 'socket:ni[0]',
'intfc_port' => 'flit_out'
},
's_addr_i' => {
'intfc_port' => 'adr_i',
'range' => 'S_Aw-1 : 0',
'intfc_name' => 'plug:wb_slave[0]',
'type' => 'input'
},
'm_send_stb_o' => {
'type' => 'output',
'intfc_name' => 'plug:wb_master[0]',
'range' => '',
'intfc_port' => 'stb_o'
},
's_we_i' => {
'intfc_port' => 'we_i',
'intfc_name' => 'plug:wb_slave[0]',
'type' => 'input',
'range' => ''
},
'm_receive_cti_o' => {
'intfc_port' => 'cti_o',
'range' => 'TAGw-1 : 0',
'intfc_name' => 'plug:wb_master[1]',
'type' => 'output'
},
's_cti_i' => {
'intfc_port' => 'cti_i',
'range' => 'TAGw-1 : 0',
'intfc_name' => 'plug:wb_slave[0]',
'type' => 'input'
},
's_we_i' => {
'intfc_port' => 'we_i',
'intfc_name' => 'plug:wb_slave[0]',
'm_send_cyc_o' => {
'type' => 'output',
'intfc_name' => 'plug:wb_master[0]',
'range' => '',
'intfc_port' => 'cyc_o'
},
'm_send_sel_o' => {
'intfc_port' => 'sel_o',
'range' => 'SELw-1 : 0',
'type' => 'output',
'intfc_name' => 'plug:wb_master[0]'
},
'reset' => {
'range' => '',
'type' => 'input',
'intfc_name' => 'plug:reset[0]',
'intfc_port' => 'reset_i'
},
'credit_in' => {
'type' => 'input',
'intfc_name' => 'socket:ni[0]',
'range' => 'V-1 : 0',
'intfc_port' => 'credit_in'
},
'm_send_dat_i' => {
'intfc_port' => 'dat_i',
'type' => 'input',
'intfc_name' => 'plug:wb_master[0]',
'range' => 'Dw-1 : 0'
},
'credit_out' => {
'range' => 'V-1 : 0',
'intfc_name' => 'socket:ni[0]',
'type' => 'output',
'intfc_port' => 'credit_out'
},
'm_receive_cyc_o' => {
'intfc_name' => 'plug:wb_master[1]',
'type' => 'output',
'range' => '',
'intfc_port' => 'cyc_o'
},
'm_send_ack_i' => {
'intfc_port' => 'ack_i',
'intfc_name' => 'plug:wb_master[0]',
'type' => 'input',
'range' => ''
},
'irq' => {
'range' => '',
'type' => 'output',
'intfc_name' => 'plug:interrupt_peripheral[0]',
'intfc_port' => 'int_o'
},
'flit_in_wr' => {
'range' => '',
'type' => 'input',
'range' => ''
},
's_ack_o' => {
'intfc_port' => 'ack_o',
'intfc_name' => 'plug:wb_slave[0]',
'type' => 'output',
'range' => ''
},
'm_receive_cti_o' => {
'range' => 'TAGw-1 : 0',
'type' => 'output',
'intfc_port' => 'cti_o',
'intfc_name' => 'plug:wb_master[1]'
},
's_cti_i' => {
'range' => 'TAGw-1 : 0',
'type' => 'input',
'intfc_name' => 'plug:wb_slave[0]',
'intfc_port' => 'cti_i'
},
'current_y' => {
'range' => 'Yw-1 : 0',
'type' => 'input',
'intfc_port' => 'current_y',
'intfc_name' => 'socket:ni[0]'
},
's_dat_o' => {
'range' => 'Dw-1 : 0',
'intfc_port' => 'dat_o',
'intfc_name' => 'plug:wb_slave[0]',
'type' => 'output'
},
'flit_in_wr' => {
'type' => 'input',
'intfc_name' => 'socket:ni[0]',
'intfc_port' => 'flit_in_wr',
'range' => ''
},
'm_receive_dat_o' => {
'range' => 'Dw-1 : 0',
'intfc_port' => 'dat_o',
'intfc_name' => 'plug:wb_master[1]',
'type' => 'output'
}
},
'modules' => {
'ni_vc_dma' => {},
'header_flit_generator' => {},
'ni_master' => {},
'ovc_status' => {},
'vc_wb_slave_registers' => {}
},
'gui_status' => {
'timeout' => 0,
'status' => 'ideal'
},
'system_h' => ' /* NI wb registers addresses
'intfc_name' => 'socket:ni[0]',
'intfc_port' => 'flit_in_wr'
}
},
'description_pdf' => '/mpsoc/src_peripheral/ni/NI.pdf',
'category' => 'NoC',
'gui_status' => {
'timeout' => 0,
'status' => 'ideal'
},
'system_h' => ' /* NI wb registers addresses
0 : STATUS1_WB_ADDR // status1: {send_enable_binarry,receive_enable_binarry,send_vc_is_busy,receive_vc_is_busy,receive_vc_got_packet}
1 : STATUS2_WB_ADDR // status2:
2 : BURST_SIZE_WB_ADDR // The busrt size in words
624,70 → 621,73
 
}',
'ports_order' => [
'reset',
'clk',
'current_x',
'current_y',
'flit_out',
'flit_out_wr',
'credit_in',
'flit_in',
'flit_in_wr',
'credit_out',
's_dat_i',
's_sel_i',
's_addr_i',
's_cti_i',
's_stb_i',
's_cyc_i',
's_we_i',
's_dat_o',
's_ack_o',
'm_send_sel_o',
'm_send_addr_o',
'm_send_cti_o',
'm_send_stb_o',
'm_send_cyc_o',
'm_send_we_o',
'm_send_dat_i',
'm_send_ack_i',
'm_receive_sel_o',
'm_receive_dat_o',
'm_receive_addr_o',
'm_receive_cti_o',
'm_receive_stb_o',
'm_receive_cyc_o',
'm_receive_we_o',
'm_receive_ack_i',
'irq'
],
'module_name' => 'ni_master',
'file_name' => '/home/alireza/mywork/mpsoc/src_peripheral/ni/ni_master.v',
'parameters_order' => [
'CLASS_HDR_WIDTH',
'ROUTING_HDR_WIDTH',
'DST_ADR_HDR_WIDTH',
'SRC_ADR_HDR_WIDTH',
'TOPOLOGY',
'ROUTE_NAME',
'NX',
'NY',
'C',
'V',
'B',
'Fpay',
'MAX_TRANSACTION_WIDTH',
'MAX_BURST_SIZE',
'DEBUG_EN',
'Dw',
'S_Aw',
'M_Aw',
'TAGw',
'SELw',
'Xw',
'Yw',
'Fw',
'CRC_EN'
]
}, 'ip_gen' );
'modules' => {
'header_flit_generator' => {},
'vc_wb_slave_registers' => {},
'ni_vc_dma' => {},
'ovc_status' => {},
'ni_master' => {}
},
'version' => 38,
'parameters_order' => [
'CLASS_HDR_WIDTH',
'ROUTING_HDR_WIDTH',
'DST_ADR_HDR_WIDTH',
'SRC_ADR_HDR_WIDTH',
'TOPOLOGY',
'ROUTE_NAME',
'NX',
'NY',
'C',
'V',
'B',
'Fpay',
'MAX_TRANSACTION_WIDTH',
'MAX_BURST_SIZE',
'DEBUG_EN',
'Dw',
'S_Aw',
'M_Aw',
'TAGw',
'SELw',
'Xw',
'Yw',
'Fw',
'CRC_EN'
],
'unused' => {
'plug:wb_master[0]' => [
'dat_o',
'err_i',
'bte_o',
'rty_i',
'tag_o'
],
'plug:wb_slave[0]' => [
'rty_o',
'bte_i',
'err_o',
'tag_i'
],
'plug:wb_master[1]' => [
'err_i',
'bte_o',
'rty_i',
'dat_i',
'tag_o'
]
},
'sockets' => {
'ni' => {
'value' => 1,
'ni' => {},
'type' => 'num',
'connection_num' => 'single connection',
'0' => {
'name' => 'ni'
}
}
},
'module_name' => 'ni_master',
'ip_name' => 'ni_master'
}, 'ip_gen' );
/ni_slave.IP
0,0 → 1,756
#######################################################################
## File: ni_slave.IP
##
## Copyright (C) 2014-2016 Alireza Monemi
##
## This file is part of ProNoC 1.8.0
##
## WARNING: THIS IS AN AUTO-GENERATED FILE. CHANGES TO IT
## MAY CAUSE UNEXPECTED BEHAIVOR.
################################################################################
 
$ipgen = bless( {
'category' => 'NoC',
'plugs' => {
'wb_slave' => {
'0' => {
'width' => 10,
'addr' => '0xb800_0000 0xbfff_ffff custom devices',
'name' => 'wb_ctrl'
},
'type' => 'num',
'1' => {
'width' => 'IN_MEM_BYTEw',
'addr' => '0xb800_0000 0xbfff_ffff custom devices',
'name' => 'wb_in'
},
'wb_slave' => {},
'value' => 3,
'2' => {
'name' => 'wb_out',
'addr' => '0xb800_0000 0xbfff_ffff custom devices',
'width' => 'OUT_MEM_BYTEw'
}
},
'reset' => {
'reset' => {},
'type' => 'num',
'0' => {
'name' => 'reset'
},
'value' => 1
},
'interrupt_peripheral' => {
'0' => {
'name' => 'interrupt'
},
'type' => 'num',
'interrupt_peripheral' => {},
'value' => 1
},
'clk' => {
'0' => {
'name' => 'clk'
},
'type' => 'num',
'clk' => {},
'value' => 1
}
},
'parameters_order' => [
'INPUT_MEM_Aw',
'OUTPUT_MEM_Aw',
'MAX_TRANSACTION_WIDTH',
'MAX_BURST_SIZE',
'DEBUG_EN',
'CLASS_HDR_WIDTH',
'ROUTING_HDR_WIDTH',
'DST_ADR_HDR_WIDTH',
'SRC_ADR_HDR_WIDTH',
'TOPOLOGY',
'ROUTE_NAME',
'NX',
'NY',
'C',
'V',
'B',
'Fpay',
'CRC_EN',
'SWA_ARBITER_TYPE',
'WEIGHTw',
'Dw',
'S_Aw',
'M_Aw',
'TAGw',
'SELw',
'IN_MEM_BYTEw',
'OUT_MEM_BYTEw'
],
'description_pdf' => '/mpsoc/src_peripheral/ni/NI.pdf',
'ports' => {
'ctrl_cti_i' => {
'range' => 'TAGw-1 : 0',
'intfc_port' => 'cti_i',
'type' => 'input',
'intfc_name' => 'plug:wb_slave[0]'
},
'ctrl_dat_o' => {
'intfc_name' => 'plug:wb_slave[0]',
'type' => 'output',
'intfc_port' => 'dat_o',
'range' => 'Dw-1 : 0'
},
'ctrl_addr_i' => {
'intfc_port' => 'adr_i',
'range' => 'S_Aw-1 : 0',
'type' => 'input',
'intfc_name' => 'plug:wb_slave[0]'
},
'current_x' => {
'type' => 'input',
'intfc_port' => 'current_x',
'range' => 'Xw-1 : 0',
'intfc_name' => 'socket:ni[0]'
},
'out_cyc_i' => {
'intfc_port' => 'cyc_i',
'range' => '',
'type' => 'input',
'intfc_name' => 'plug:wb_slave[2]'
},
'in_sel_i' => {
'intfc_name' => 'plug:wb_slave[1]',
'intfc_port' => 'sel_i',
'range' => 'SELw-1 : 0',
'type' => 'input'
},
'in_cti_i' => {
'intfc_port' => 'cti_i',
'range' => 'TAGw-1 : 0',
'type' => 'input',
'intfc_name' => 'plug:wb_slave[1]'
},
'flit_in_wr' => {
'intfc_name' => 'socket:ni[0]',
'range' => '',
'intfc_port' => 'flit_in_wr',
'type' => 'input'
},
'in_dat_i' => {
'intfc_name' => 'plug:wb_slave[1]',
'type' => 'input',
'range' => 'Dw-1 : 0',
'intfc_port' => 'dat_i'
},
'out_we_i' => {
'type' => 'input',
'intfc_port' => 'we_i',
'range' => '',
'intfc_name' => 'plug:wb_slave[2]'
},
'clk' => {
'intfc_name' => 'plug:clk[0]',
'range' => '',
'intfc_port' => 'clk_i',
'type' => 'input'
},
'in_dat_o' => {
'type' => 'output',
'range' => 'Dw-1 : 0',
'intfc_port' => 'dat_o',
'intfc_name' => 'plug:wb_slave[1]'
},
'out_sel_i' => {
'intfc_port' => 'sel_i',
'range' => 'SELw-1 : 0',
'type' => 'input',
'intfc_name' => 'plug:wb_slave[2]'
},
'out_dat_i' => {
'intfc_name' => 'plug:wb_slave[2]',
'type' => 'input',
'range' => 'Dw-1 : 0',
'intfc_port' => 'dat_i'
},
'flit_out_wr' => {
'intfc_name' => 'socket:ni[0]',
'range' => '',
'intfc_port' => 'flit_out_wr',
'type' => 'output'
},
'ctrl_ack_o' => {
'intfc_name' => 'plug:wb_slave[0]',
'range' => '',
'intfc_port' => 'ack_o',
'type' => 'output'
},
'ctrl_dat_i' => {
'intfc_name' => 'plug:wb_slave[0]',
'type' => 'input',
'intfc_port' => 'dat_i',
'range' => 'Dw-1 : 0'
},
'ctrl_sel_i' => {
'intfc_name' => 'plug:wb_slave[0]',
'intfc_port' => 'sel_i',
'range' => 'SELw-1 : 0',
'type' => 'input'
},
'out_cti_i' => {
'intfc_name' => 'plug:wb_slave[2]',
'range' => 'TAGw-1 : 0',
'intfc_port' => 'cti_i',
'type' => 'input'
},
'credit_out' => {
'intfc_name' => 'socket:ni[0]',
'range' => 'V-1 : 0',
'intfc_port' => 'credit_out',
'type' => 'output'
},
'out_stb_i' => {
'intfc_name' => 'plug:wb_slave[2]',
'type' => 'input',
'intfc_port' => 'stb_i',
'range' => ''
},
'in_addr_i' => {
'intfc_port' => 'adr_i',
'range' => 'S_Aw-1 : 0',
'type' => 'input',
'intfc_name' => 'plug:wb_slave[1]'
},
'in_cyc_i' => {
'intfc_name' => 'plug:wb_slave[1]',
'type' => 'input',
'intfc_port' => 'cyc_i',
'range' => ''
},
'flit_out' => {
'range' => 'Fw-1 : 0',
'intfc_port' => 'flit_out',
'type' => 'output',
'intfc_name' => 'socket:ni[0]'
},
'ctrl_cyc_i' => {
'intfc_name' => 'plug:wb_slave[0]',
'intfc_port' => 'cyc_i',
'range' => '',
'type' => 'input'
},
'in_ack_o' => {
'intfc_name' => 'plug:wb_slave[1]',
'type' => 'output',
'intfc_port' => 'ack_o',
'range' => ''
},
'out_dat_o' => {
'intfc_name' => 'plug:wb_slave[2]',
'type' => 'output',
'range' => 'Dw-1 : 0',
'intfc_port' => 'dat_o'
},
'in_stb_i' => {
'intfc_name' => 'plug:wb_slave[1]',
'range' => '',
'intfc_port' => 'stb_i',
'type' => 'input'
},
'out_addr_i' => {
'type' => 'input',
'range' => 'S_Aw-1 : 0',
'intfc_port' => 'adr_i',
'intfc_name' => 'plug:wb_slave[2]'
},
'in_we_i' => {
'intfc_name' => 'plug:wb_slave[1]',
'range' => '',
'intfc_port' => 'we_i',
'type' => 'input'
},
'flit_in' => {
'intfc_name' => 'socket:ni[0]',
'type' => 'input',
'range' => 'Fw-1 : 0',
'intfc_port' => 'flit_in'
},
'credit_in' => {
'intfc_name' => 'socket:ni[0]',
'intfc_port' => 'credit_in',
'range' => 'V-1 : 0',
'type' => 'input'
},
'current_y' => {
'intfc_name' => 'socket:ni[0]',
'range' => 'Yw-1 : 0',
'intfc_port' => 'current_y',
'type' => 'input'
},
'ctrl_we_i' => {
'type' => 'input',
'intfc_port' => 'we_i',
'range' => '',
'intfc_name' => 'plug:wb_slave[0]'
},
'reset' => {
'type' => 'input',
'intfc_port' => 'reset_i',
'range' => '',
'intfc_name' => 'plug:reset[0]'
},
'out_ack_o' => {
'intfc_name' => 'plug:wb_slave[2]',
'type' => 'output',
'intfc_port' => 'ack_o',
'range' => ''
},
'ctrl_stb_i' => {
'range' => '',
'intfc_port' => 'stb_i',
'type' => 'input',
'intfc_name' => 'plug:wb_slave[0]'
},
'irq' => {
'intfc_name' => 'plug:interrupt_peripheral[0]',
'intfc_port' => 'int_o',
'range' => '',
'type' => 'output'
}
},
'module_name' => 'ni_slave',
'file_name' => '/home/alireza/mywork/mpsoc/src_peripheral/ni/ni_slave.v',
'system_h' => ' /* NI wb registers addresses
0 : STATUS1_WB_ADDR // status1: {send_enable_binarry,receive_enable_binarry,send_vc_is_busy,receive_vc_is_busy,receive_vc_got_packet}
1 : STATUS2_WB_ADDR // status2:
2 : BURST_SIZE_WB_ADDR // The busrt size in words
3 : SEND_DATA_SIZE_WB_ADDR, // The size of data to be sent in byte
4 : SEND_STRT_WB_ADDR, // The address of data to be sent in byte
5 : SEND_DEST_WB_ADDR // The destination router address
6 : SEND_CTRL_WB_ADDR
7 : RECEIVE_DATA_SIZE_WB_ADDR // The size of recieved data in byte
8 : RECEIVE_STRT_WB_ADDR // The address pointer of reciever memory in byte
9 : RECEIVE_SRC_WB_ADDR // The source router (the router which is sent this packet).
10 : RECEIVE_CTRL_WB_ADDR // The NI reciever control register
11 : RECEIVE_MAX_BUFF_SIZ // The receiver\'s allocated buffer size in words. If the packet size is bigger tha the buffer size the rest of will be discarred
*/
 
 
 
#define ${IP}_STATUS1_REG (*((volatile unsigned int *) ($BASE))) //0
#define ${IP}_STATUS2_REG (*((volatile unsigned int *) ($BASE+4))) //1
#define ${IP}_BURST_SIZE_REG (*((volatile unsigned int *) ($BASE+8))) //2
 
 
#define ${IP}_NUM_VCs ${V}
 
#define ${IP}_SEND_DATA_SIZE_REG(v) (*((volatile unsigned int *) ($BASE+12+(v<<6)))) //3
#define ${IP}_SEND_START_ADDR_REG(v) (*((volatile unsigned int *) ($BASE+16+(v<<6)))) //4
#define ${IP}_SEND_DEST_REG(v) (*((volatile unsigned int *) ($BASE+20+(v<<6)))) //5
#define ${IP}_SEND_CTRL_REG(v) (*((volatile unsigned int *) ($BASE+24+(v<<6)))) //6
 
#define ${IP}_RECEIVE_DATA_SIZE_REG(v) (*((volatile unsigned int *) ($BASE+28+(v<<6)))) //7
#define ${IP}_RECEIVE_STRT_ADDR_REG(v) (*((volatile unsigned int *) ($BASE+32+(v<<6)))) //8
#define ${IP}_RECEIVE_CTRL_REG(v) (*((volatile unsigned int *) ($BASE+36+(v<<6)))) //9
#define ${IP}_RECEIVE_MAX_BUFF_SIZ_REG(v) (*((volatile unsigned int *) ($BASE+40+(v<<6)))) //10
#define ${IP}_RECEIVE_CRC_MATCH_REG(v) (*((volatile unsigned int *) ($BASE+44+(v<<6)))) //11
 
 
 
// assign status1= {send_vc_is_busy,receive_vc_is_busy,receive_vc_packet_is_saved,receive_vc_got_packet};
// assign status2= {send_enable_binarry,receive_enable_binarry,crc_miss_match,got_pck_isr, save_done_isr,send_done_isr,got_pck_int_en, save_done_int_en,send_done_int_en};
 
#define ${IP}_got_packet(v) ((${IP}_STATUS1_REG >> (v)) & 0x1)
#define ${IP}_packet_is_saved(v) ((${IP}_STATUS1_REG >> (${V}+v)) & 0x1)
#define ${IP}_receive_is_busy(v) ((${IP}_STATUS1_REG >> (2*${V}+v)) & 0x1)
#define ${IP}_send_is_busy(v) ((${IP}_STATUS1_REG >> (3*${V}+v)) & 0x1)
 
 
 
void ${IP}_initial (unsigned int burst_size) {
${IP}_BURST_SIZE_REG = burst_size;
}
 
 
void ${IP}_transfer (unsigned int v, unsigned int class_num, unsigned int data_start_addr, unsigned int data_size, unsigned int dest_x,unsigned int dest_y){
while (${IP}_send_is_busy(v)); // wait until VC is busy sending previous packet
 
${IP}_SEND_DATA_SIZE_REG(v) = data_size;
${IP}_SEND_START_ADDR_REG(v) = data_start_addr;
${IP}_SEND_DEST_REG(v) = dest_x | (dest_y<<4)| (class_num<<8) ;
}
 
void ${IP}_receive (unsigned int v, unsigned int data_start_addr, unsigned int max_buffer_size){
while (${IP}_receive_is_busy(v)); // wait until VC is busy saving previous packet
 
${IP}_RECEIVE_STRT_ADDR_REG(v) = data_start_addr;
${IP}_RECEIVE_MAX_BUFF_SIZ_REG(v) = max_buffer_size;
${IP}_RECEIVE_CTRL_REG(v) = 1;
 
}',
'ip_name' => 'ni_slave',
'description' => '',
'sockets' => {
'ni' => {
'connection_num' => 'single connection',
'ni' => {},
'value' => 1,
'type' => 'num',
'0' => {
'name' => 'ni'
}
}
},
'gui_status' => {
'status' => 'ideal',
'timeout' => 0
},
'version' => 45,
'ports_order' => [
'reset',
'clk',
'current_x',
'current_y',
'flit_out',
'flit_out_wr',
'credit_in',
'flit_in',
'flit_in_wr',
'credit_out',
'ctrl_dat_i',
'ctrl_sel_i',
'ctrl_addr_i',
'ctrl_cti_i',
'ctrl_stb_i',
'ctrl_cyc_i',
'ctrl_we_i',
'ctrl_dat_o',
'ctrl_ack_o',
'in_dat_i',
'in_sel_i',
'in_addr_i',
'in_cti_i',
'in_stb_i',
'in_cyc_i',
'in_we_i',
'in_dat_o',
'in_ack_o',
'out_dat_i',
'out_sel_i',
'out_addr_i',
'out_cti_i',
'out_stb_i',
'out_cyc_i',
'out_we_i',
'out_dat_o',
'out_ack_o',
'irq'
],
'hdl_files' => [
'/mpsoc/src_noc/arbiter.v',
'/mpsoc/src_noc/flit_buffer.v',
'/mpsoc/src_noc/input_ports.v',
'/mpsoc/src_noc/main_comp.v',
'/mpsoc/src_noc/route_mesh.v',
'/mpsoc/src_noc/route_torus.v',
'/mpsoc/src_noc/routing.v',
'/mpsoc/src_peripheral/ni/ni_vc_dma.v',
'/mpsoc/src_peripheral/ni/ni_vc_wb_slave_regs.v',
'/mpsoc/src_peripheral/ni/ni_slave.v',
'/mpsoc/src_peripheral/ni/ni_crc32.v',
'/mpsoc/src_peripheral/ram/byte_enabled_generic_ram.sv',
'/mpsoc/src_peripheral/ram/generic_ram.v',
'/mpsoc/src_peripheral/ram/wb_bram_ctrl.v',
'/mpsoc/src_peripheral/ram/wb_dual_port_ram.v',
'/mpsoc/src_peripheral/ram/wb_single_port_ram.v'
],
'unused' => {
'plug:wb_slave[0]' => [
'rty_o',
'tag_i',
'bte_i',
'err_o'
],
'plug:wb_slave[1]' => [
'rty_o',
'tag_i',
'bte_i',
'err_o'
],
'plug:wb_slave[2]' => [
'rty_o',
'tag_i',
'bte_i',
'err_o'
]
},
'parameters' => {
'S_Aw' => {
'type' => 'Fixed',
'global_param' => 'Localparam',
'content' => '',
'default' => '8',
'info' => 'Parameter',
'redefine_param' => 1
},
'SELw' => {
'type' => 'Fixed',
'default' => '4',
'content' => '',
'global_param' => 'Localparam',
'redefine_param' => 1,
'info' => 'Parameter'
},
'Fw' => {
'info' => undef,
'redefine_param' => 0,
'global_param' => 'Localparam',
'content' => '',
'default' => '2+V+Fpay',
'type' => 'Fixed'
},
'V' => {
'info' => 'Parameter',
'redefine_param' => 1,
'global_param' => 'Parameter',
'content' => '',
'default' => '4',
'type' => 'Fixed'
},
'INPUT_MEM_Aw' => {
'redefine_param' => 1,
'info' => 'Parameter',
'default' => ' 10',
'content' => '4,32,1',
'global_param' => 'Parameter',
'type' => 'Spin-button'
},
'B' => {
'global_param' => 'Parameter',
'content' => '',
'default' => ' 4',
'type' => 'Fixed',
'info' => 'Parameter',
'redefine_param' => 1
},
'MAX_TRANSACTION_WIDTH' => {
'type' => 'Spin-button',
'content' => '4,32,1',
'global_param' => 'Localparam',
'default' => '13',
'info' => 'maximum packet size width in words.
The maximum data that can be sent via one packet will be 2 power of MAX_DMA_TRANSACTION_WIDTH in words.',
'redefine_param' => 1
},
'Xw' => {
'redefine_param' => 0,
'info' => undef,
'default' => 'log2(NX)',
'content' => '',
'global_param' => 'Localparam',
'type' => 'Fixed'
},
'ROUTE_NAME' => {
'type' => 'Fixed',
'default' => '"XY" ',
'global_param' => 'Parameter',
'content' => '',
'redefine_param' => 1,
'info' => 'Parameter'
},
'OUT_MEM_BYTEw' => {
'type' => 'Fixed',
'default' => 'OUTPUT_MEM_Aw+(Dw/8)',
'content' => '',
'global_param' => 'Don\'t include',
'redefine_param' => 1,
'info' => undef
},
'Dw' => {
'global_param' => 'Localparam',
'content' => '32,256,8',
'default' => '32',
'type' => 'Spin-button',
'info' => 'wishbone_bus data width in bits.',
'redefine_param' => 1
},
'SRC_ADR_HDR_WIDTH' => {
'redefine_param' => 1,
'info' => 'Parameter',
'type' => 'Fixed',
'default' => '8',
'content' => '',
'global_param' => 'Localparam'
},
'M_Aw' => {
'global_param' => 'Localparam',
'content' => 'Dw',
'default' => '32',
'type' => 'Fixed',
'info' => 'Parameter',
'redefine_param' => 1
},
'C' => {
'info' => 'Parameter',
'redefine_param' => 1,
'type' => 'Fixed',
'content' => '',
'global_param' => 'Parameter',
'default' => ' 4'
},
'CRC_EN' => {
'info' => 'The parameter can be selected as "YES" or "NO".
If CRC is enabled, then two CRC32 generator modules will be added to the NI. One CRC generator for calculating CRC of sending packets and another for receiving packets. The CRC32 value of each packet is send via tail flit and at destination NI, is will be compared with received packet generated CRC32. The matching results can be used for error-detection and can be read via NI slave interface. ',
'redefine_param' => 1,
'type' => 'Combo-box',
'content' => '"YES","NO"',
'global_param' => 'Localparam',
'default' => '"NO"'
},
'NX' => {
'info' => 'Parameter',
'redefine_param' => 1,
'global_param' => 'Parameter',
'content' => '',
'default' => ' 4',
'type' => 'Fixed'
},
'MAX_BURST_SIZE' => {
'type' => 'Combo-box',
'content' => '2,4,8,16,32,64,128,256,512,1024,2048',
'global_param' => 'Localparam',
'default' => '16',
'info' => 'Maximum burst size in words.
The NI release wishbone bus each time one burst is completed or when the VC\'s internal FIFO becomes full. The bus will be released for one clock cycle. Then in case, there are other active VCs, another active VC will get access to the bus using round robin arbiter. This process will be continued until all desired data is transferred. ',
'redefine_param' => 1
},
'CLASS_HDR_WIDTH' => {
'default' => '8',
'content' => '',
'global_param' => 'Localparam',
'type' => 'Fixed',
'redefine_param' => 1,
'info' => 'Parameter'
},
'Fpay' => {
'default' => ' 32',
'global_param' => 'Parameter',
'content' => '',
'type' => 'Fixed',
'redefine_param' => 1,
'info' => 'Parameter'
},
'ROUTE_TYPE' => {
'type' => 'Fixed',
'default' => ' ',
'content' => '',
'global_param' => 'Parameter',
'redefine_param' => 1,
'info' => 'Parameter'
},
'IN_MEM_BYTEw' => {
'redefine_param' => 1,
'info' => undef,
'type' => 'Fixed',
'default' => 'INPUT_MEM_Aw+(Dw/8)',
'global_param' => 'Don\'t include',
'content' => ''
},
'SWA_ARBITER_TYPE' => {
'redefine_param' => 1,
'info' => undef,
'type' => 'Fixed',
'default' => '"RRA"',
'content' => '',
'global_param' => 'Parameter'
},
'WEIGHTw' => {
'default' => '4',
'global_param' => 'Parameter',
'content' => '',
'type' => 'Fixed',
'redefine_param' => 1,
'info' => undef
},
'OUTPUT_MEM_Aw' => {
'type' => 'Spin-button',
'default' => ' 10',
'content' => '4,32,1',
'global_param' => 'Parameter',
'redefine_param' => 1,
'info' => 'Parameter'
},
'DEBUG_EN' => {
'redefine_param' => 1,
'info' => 'Parameter',
'default' => ' 1',
'content' => '',
'global_param' => 'Parameter',
'type' => 'Fixed'
},
'TOPOLOGY' => {
'info' => 'Parameter',
'redefine_param' => 1,
'type' => 'Fixed',
'global_param' => 'Parameter',
'content' => '',
'default' => '"MESH"'
},
'DST_ADR_HDR_WIDTH' => {
'type' => 'Fixed',
'default' => '8',
'content' => '',
'global_param' => 'Localparam',
'redefine_param' => 1,
'info' => 'Parameter'
},
'ROUTING_HDR_WIDTH' => {
'redefine_param' => 1,
'info' => 'Parameter',
'default' => '8',
'global_param' => 'Localparam',
'content' => '',
'type' => 'Fixed'
},
'P' => {
'default' => '5',
'content' => '',
'global_param' => 'Parameter',
'type' => 'Fixed',
'redefine_param' => 1,
'info' => 'Parameter'
},
'TAGw' => {
'default' => '3',
'global_param' => 'Localparam',
'content' => '',
'type' => 'Fixed',
'redefine_param' => 1,
'info' => 'Parameter'
},
'Yw' => {
'content' => '',
'global_param' => 'Localparam',
'default' => 'log2(NY)',
'type' => 'Fixed',
'info' => undef,
'redefine_param' => 0
},
'NY' => {
'type' => 'Fixed',
'content' => '',
'global_param' => 'Parameter',
'default' => ' 4',
'info' => 'Parameter',
'redefine_param' => 1
}
},
'modules' => {
'ni_slave' => {}
}
}, 'ip_gen' );
/old/ni.IP
0,0 → 1,639
#######################################################################
## File: ni.IP
##
## Copyright (C) 2014-2016 Alireza Monemi
##
## This file is part of ProNoC 1.5.0
##
## WARNING: THIS IS AN AUTO-GENERATED FILE. CHANGES TO IT
## MAY CAUSE UNEXPECTED BEHAIVOR.
################################################################################
 
$ni = bless( {
'hdl_files' => [
'/mpsoc/src_peripheral/ni/ni.v',
'/mpsoc/src_noc/arbiter.v',
'/mpsoc/src_noc/flit_buffer.v',
'/mpsoc/src_noc/inout_ports.v',
'/mpsoc/src_noc/main_comp.v',
'/mpsoc/src_noc/route_mesh.v',
'/mpsoc/src_noc/route_torus.v',
'/mpsoc/src_noc/routing.v'
],
'system_h' => ' #define ${IP}_BASE_ADDR ${BASE}
#define ${IP}_STATUS (*((volatile unsigned int *) (${IP}_BASE_ADDR )))
#define ${IP}_MEM_PCKSIZ (*((volatile unsigned int *) (${IP}_BASE_ADDR+4 )))
#define ${IP}_PCKSIZE (*((volatile unsigned int *) (${IP}_BASE_ADDR+8)))
#define ${IP}_MEM (*((volatile unsigned int *) (${IP}_BASE_ADDR+12)))
 
#define ${IP}_VC_WR_ADDR(v) (*((volatile unsigned int *) (${IP}_BASE_ADDR+4 + (1<<5)+ (v<<6) )))
#define ${IP}_VC_RD_ADDR(v) (*((volatile unsigned int *) (${IP}_BASE_ADDR+4 + (v<<6) )))
 
 
#define ${IP}_VC_NUM ${V}
#define ${IP}_VC_MASK ((1<<${V})-1)
#define ${IP}_CLASS_IN_HDR_WIDTH 8
#define ${IP}_DEST_IN_HDR_WIDTH 8
#define ${IP}_X_Y_IN_HDR_WIDTH 4
/*
[14+V : 14+2V-1]rd_vc_not_empty
[14 : 14+V-1] wr_vc_not_empty
13 rsv_pck_isr
12 rd_done_isr
11 wr_done_isr
10 rsv_pck_int_en
9 rd_done_int_en
8 wr_done_int_en
7 all_wr_vcs_full
6 any_rd_vc_has_data
5 rd_no_pck_err
4 rd_ovr_size_err
3 rd_done
2 wr_done
1 rd_busy
0 wr_busy
*/
#define ${IP}_WR_BUSY (1<<0)
#define ${IP}_RD_BUSY (1<<1)
#define ${IP}_WR_DONE (1<<2)
#define ${IP}_RD_DONE (1<<3)
#define ${IP}_RD_OVR_ERR (1<<4)
#define ${IP}_RD_NPCK_ERR (1<<5)
#define ${IP}_HAS_PCK (1<<6)
#define ${IP}_ALL_VCS_FULL (1<<7)
#define ${IP}_WR_DONE_INT_EN (1<<8)
#define ${IP}_RD_DONE_INT_EN (1<<9)
#define ${IP}_RSV_PCK_INT_EN (1<<10)
#define ${IP}_WR_DONE_ISR (1<<11)
#define ${IP}_RD_DONE_ISR (1<<12)
#define ${IP}_RSV_PCK_ISR (1<<13)
#define ${IP}WR_VCS_NO_EMPTY (${IP}_VC_MASK <<14)
#define ${IP}RD_VCS_NO_EMPTY (${IP}_VC_MASK << (14+${V}))
#define ${IP}_PTR_WIDTH 20
#define ${IP}_PCK_SIZE_WIDTH 12
 
 
 
#define ${IP}_HDR_DEST_CORE_ADDR(DES_X, DES_Y) ((DES_X << ${IP}_X_Y_IN_HDR_WIDTH) | DES_Y)<<(2*${IP}_X_Y_IN_HDR_WIDTH)
#define ${IP}_HDR_CLASS(pck_class) (pck_class << ( ${IP}_DEST_IN_HDR_WIDTH+ (4* ${IP}_X_Y_IN_HDR_WIDTH)))
 
#define ${IP}_wait_for_sending_pck() while (!(${IP}_STATUS & ${IP}_WR_DONE))
#define ${IP}_wait_for_reading_pck() while (!(${IP}_STATUS & ${IP}_RD_DONE))
#define ${IP}_wait_for_getting_pck() while (!(${IP}_STATUS & ${IP}_HAS_PCK))
 
/*****************************************
void send_pck (unsigned int * pck_buffer, unsigned int data_size, unsigned int vc_num);
sending a packet through NoC network;
(unsigned int des_x,unsigned int des_y : destination core address;
unsigned int * pck_buffer : the buffer which hold the packet; The data must start from buff[1];
unsigned int data_size : the size of data which wanted to be sent out in word = packet_size-1;
unsigned int class
 
****************************************/
inline void ${IP}_send_pck (unsigned int des_x, unsigned int des_y, volatile unsigned int * pck_buffer, unsigned int data_size, unsigned int pck_class, unsigned int vc_num){
pck_buffer [0] = ${IP}_HDR_DEST_CORE_ADDR(des_x, des_y) | ${IP}_HDR_CLASS(pck_class);
${IP}_VC_WR_ADDR(vc_num) = (unsigned int) (& pck_buffer [0]) + (data_size<<${IP}_PTR_WIDTH);
${IP}_wait_for_sending_pck();
}
 
/*******************************************
void save_pck (volatile unsigned int * pck_buffer, unsigned int buffer_size);
save a received packet on pck_buffer
unsigned int * pck_buffer: the buffer for storing the packet; The read data start from buff[1];
********************************************/
inline void ${IP}_save_pck (volatile unsigned int * pck_buffer, unsigned int buffer_size,unsigned int vc_num){
${IP}_wait_for_getting_pck();
${IP}_VC_RD_ADDR(vc_num) = (unsigned int) (& pck_buffer [0]) + (buffer_size<<${IP}_PTR_WIDTH);
${IP}_wait_for_reading_pck();
}',
'ip_name' => 'ni',
'parameters_order' => [
'V',
'B',
'NX',
'NY',
'Fpay',
'TOPOLOGY',
'ROUTE_NAME',
'DEBUG_EN',
'COMB_MEM_PTR_W',
'COMB_PCK_SIZE_W',
'Dw',
'S_Aw',
'M_Aw',
'TAGw',
'SELw',
'Yw',
'Fw',
'Xw'
],
'ports_order' => [
'reset',
'clk',
'current_x',
'current_y',
'flit_out',
'flit_out_wr',
'credit_in',
'flit_in',
'flit_in_wr',
'credit_out',
's_dat_i',
's_sel_i',
's_addr_i',
's_cti_i',
's_stb_i',
's_cyc_i',
's_we_i',
's_dat_o',
's_ack_o',
's_err_o',
's_rty_o',
'm_sel_o',
'm_dat_o',
'm_addr_o',
'm_cti_o',
'm_stb_o',
'm_cyc_o',
'm_we_o',
'm_dat_i',
'm_ack_i',
'm_err_i',
'm_rty_i',
'irq'
],
'sockets' => {
'ni' => {
'connection_num' => 'single connection',
'value' => 1,
'0' => {
'name' => 'ni'
},
'type' => 'num',
'ni' => {}
}
},
'file_name' => '/home/alireza/Mywork/mpsoc/src_peripheral/ni/ni.v',
'module_name' => 'ni',
'unused' => {
'plug:wb_slave[0]' => [
'tag_i',
'bte_i'
],
'plug:wb_master[0]' => [
'tag_o',
'bte_o'
]
},
'category' => 'NoC',
'description' => 'Network interface',
'parameters' => {
'Dw' => {
'info' => undef,
'default' => ' 32',
'global_param' => 0,
'content' => '',
'type' => 'Fixed',
'redefine_param' => 1
},
'NY' => {
'info' => undef,
'default' => ' 2',
'global_param' => 1,
'content' => '',
'type' => 'Fixed',
'redefine_param' => 1
},
'DEBUG_EN' => {
'info' => undef,
'default' => '0',
'global_param' => 1,
'content' => '',
'type' => 'Fixed',
'redefine_param' => 1
},
'NX' => {
'info' => undef,
'default' => ' 2',
'global_param' => 1,
'content' => '',
'type' => 'Fixed',
'redefine_param' => 1
},
'V' => {
'info' => '',
'default' => ' 4',
'global_param' => 1,
'content' => '',
'type' => 'Fixed',
'redefine_param' => 1
},
'CONGESTION_INDEX' => {
'info' => undef,
'default' => '3',
'global_param' => 1,
'content' => '',
'type' => 'Fixed',
'redefine_param' => 1
},
'Fw' => {
'info' => undef,
'default' => '2+V+Fpay',
'global_param' => 0,
'content' => '',
'type' => 'Fixed',
'redefine_param' => 0
},
'COMB_PCK_SIZE_W' => {
'info' => undef,
'default' => '12',
'global_param' => 0,
'content' => '',
'type' => 'Fixed',
'redefine_param' => 1
},
'TAGw' => {
'info' => undef,
'default' => '3',
'global_param' => 0,
'content' => '',
'type' => 'Fixed',
'redefine_param' => 1
},
'COMB_MEM_PTR_W' => {
'info' => undef,
'default' => '20',
'global_param' => 0,
'content' => '',
'type' => 'Fixed',
'redefine_param' => 1
},
'M_Aw' => {
'info' => undef,
'default' => '32',
'global_param' => 0,
'content' => '',
'type' => 'Fixed',
'redefine_param' => 1
},
'ROUTE_NAME' => {
'info' => undef,
'default' => '"XY"',
'global_param' => 1,
'content' => '',
'type' => 'Fixed',
'redefine_param' => 1
},
'Xw ' => {
'info' => undef,
'default' => 'log2(NX)',
'global_param' => 0,
'content' => '',
'redefine_param' => 0,
'type' => 'Fixed'
},
'Fpay' => {
'info' => undef,
'default' => ' 32',
'global_param' => 1,
'content' => '',
'type' => 'Fixed',
'redefine_param' => 1
},
'ROUTE_TYPE' => {
'info' => undef,
'default' => '"DETERMINISTIC"',
'global_param' => 1,
'content' => '',
'redefine_param' => 1,
'type' => 'Fixed'
},
'SELw' => {
'info' => undef,
'default' => '4 ',
'global_param' => 0,
'content' => '',
'type' => 'Fixed',
'redefine_param' => 1
},
'P' => {
'info' => undef,
'default' => ' 5',
'global_param' => 1,
'content' => '',
'redefine_param' => 1,
'type' => 'Fixed'
},
'B' => {
'info' => '',
'default' => ' 4',
'global_param' => 1,
'content' => '',
'type' => 'Fixed',
'redefine_param' => 1
},
'Xw' => {
'info' => undef,
'default' => 'log2(NX)',
'global_param' => 0,
'content' => '',
'redefine_param' => 0,
'type' => 'Fixed'
},
'TOPOLOGY' => {
'info' => undef,
'default' => '"MESH"',
'global_param' => 1,
'content' => '',
'type' => 'Fixed',
'redefine_param' => 1
},
'S_Aw' => {
'info' => undef,
'default' => '7',
'global_param' => 0,
'content' => '',
'type' => 'Fixed',
'redefine_param' => 1
},
'Yw' => {
'info' => undef,
'default' => 'log2(NY)',
'global_param' => 0,
'content' => '',
'type' => 'Fixed',
'redefine_param' => 0
},
'Xwj' => {
'info' => undef,
'default' => 'fvf',
'global_param' => 0,
'content' => '',
'redefine_param' => 1,
'type' => 'Fixed'
},
'SSA_EN' => {
'info' => undef,
'default' => '"NO"',
'global_param' => 1,
'content' => '',
'type' => 'Fixed',
'redefine_param' => 1
}
},
'plugs' => {
'wb_master' => {
'wb_master' => {},
'0' => {
'name' => 'wb_master'
},
'value' => 1,
'type' => 'num'
},
'clk' => {
'clk' => {},
'value' => 1,
'0' => {
'name' => 'clk'
},
'type' => 'num'
},
'reset' => {
'reset' => {},
'0' => {
'name' => 'reset'
},
'value' => 1,
'type' => 'num'
},
'interrupt_peripheral' => {
'interrupt_peripheral' => {},
'0' => {
'name' => 'int_peripheral'
},
'value' => 1,
'type' => 'num'
},
'wb_slave' => {
'0' => {
'width' => 9,
'name' => 'wb_slave',
'addr' => '0xb800_0000 0xbfff_ffff custom devices'
},
'value' => 1,
'type' => 'num',
'wb_slave' => {}
}
},
'modules' => {
'ni' => {}
},
'gui_status' => {
'timeout' => 0,
'status' => 'ideal'
},
'ports' => {
'm_addr_o' => {
'intfc_name' => 'plug:wb_master[0]',
'intfc_port' => 'adr_o',
'range' => 'M_Aw-1 : 0',
'type' => 'output'
},
'm_cyc_o' => {
'intfc_name' => 'plug:wb_master[0]',
'intfc_port' => 'cyc_o',
'range' => '',
'type' => 'output'
},
's_cyc_i' => {
'intfc_name' => 'plug:wb_slave[0]',
'intfc_port' => 'cyc_i',
'range' => '',
'type' => 'input'
},
's_dat_i' => {
'intfc_name' => 'plug:wb_slave[0]',
'intfc_port' => 'dat_i',
'range' => 'Dw-1 : 0',
'type' => 'input'
},
'm_we_o' => {
'intfc_name' => 'plug:wb_master[0]',
'intfc_port' => 'we_o',
'range' => '',
'type' => 'output'
},
'credit_out' => {
'intfc_name' => 'socket:ni[0]',
'intfc_port' => 'credit_out',
'range' => 'V-1: 0',
'type' => 'output'
},
'flit_in_wr' => {
'intfc_name' => 'socket:ni[0]',
'intfc_port' => 'flit_in_wr',
'range' => '',
'type' => 'input'
},
'm_ack_i' => {
'intfc_name' => 'plug:wb_master[0]',
'intfc_port' => 'ack_i',
'range' => '',
'type' => 'input'
},
's_addr_i' => {
'intfc_name' => 'plug:wb_slave[0]',
'intfc_port' => 'adr_i',
'range' => 'S_Aw-1 : 0',
'type' => 'input'
},
's_dat_o' => {
'intfc_name' => 'plug:wb_slave[0]',
'intfc_port' => 'dat_o',
'range' => 'Dw-1 : 0',
'type' => 'output'
},
's_cti_i' => {
'intfc_name' => 'plug:wb_slave[0]',
'intfc_port' => 'cti_i',
'range' => 'TAGw-1 : 0',
'type' => 'input'
},
'current_y' => {
'intfc_name' => 'socket:ni[0]',
'intfc_port' => 'current_y',
'range' => 'Yw-1 : 0',
'type' => 'input'
},
's_sel_i' => {
'intfc_name' => 'plug:wb_slave[0]',
'intfc_port' => 'sel_i',
'range' => 'SELw-1 : 0',
'type' => 'input'
},
's_we_i' => {
'intfc_name' => 'plug:wb_slave[0]',
'intfc_port' => 'we_i',
'range' => '',
'type' => 'input'
},
'm_stb_o' => {
'intfc_name' => 'plug:wb_master[0]',
'intfc_port' => 'stb_o',
'range' => '',
'type' => 'output'
},
's_stb_i' => {
'intfc_name' => 'plug:wb_slave[0]',
'intfc_port' => 'stb_i',
'range' => '',
'type' => 'input'
},
'flit_out_wr' => {
'intfc_name' => 'socket:ni[0]',
'intfc_port' => 'flit_out_wr',
'range' => '',
'type' => 'output'
},
'm_dat_i' => {
'intfc_name' => 'plug:wb_master[0]',
'intfc_port' => 'dat_i',
'range' => 'Dw-1 : 0',
'type' => 'input'
},
'm_dat_o' => {
'intfc_name' => 'plug:wb_master[0]',
'intfc_port' => 'dat_o',
'range' => 'Dw-1 : 0',
'type' => 'output'
},
's_err_o' => {
'intfc_name' => 'plug:wb_slave[0]',
'intfc_port' => 'err_o',
'range' => '',
'type' => 'output'
},
'm_cti_o' => {
'intfc_name' => 'plug:wb_master[0]',
'intfc_port' => 'cti_o',
'range' => 'TAGw-1 : 0',
'type' => 'output'
},
's_ack_o' => {
'intfc_name' => 'plug:wb_slave[0]',
'intfc_port' => 'ack_o',
'range' => '',
'type' => 'output'
},
'flit_out' => {
'intfc_name' => 'socket:ni[0]',
'intfc_port' => 'flit_out',
'range' => 'Fw-1 : 0',
'type' => 'output'
},
'credit_in' => {
'intfc_name' => 'socket:ni[0]',
'intfc_port' => 'credit_in',
'range' => 'V-1 : 0',
'type' => 'input'
},
'reset' => {
'intfc_name' => 'plug:reset[0]',
'intfc_port' => 'reset_i',
'range' => '',
'type' => 'input'
},
'm_err_i' => {
'intfc_name' => 'plug:wb_master[0]',
'intfc_port' => 'err_i',
'range' => '',
'type' => 'input'
},
'm_rty_i' => {
'intfc_name' => 'plug:wb_master[0]',
'intfc_port' => 'rty_i',
'range' => '',
'type' => 'input'
},
'm_sel_o' => {
'intfc_name' => 'plug:wb_master[0]',
'intfc_port' => 'sel_o',
'range' => 'SELw-1 : 0',
'type' => 'output'
},
'flit_in' => {
'intfc_name' => 'socket:ni[0]',
'intfc_port' => 'flit_in',
'range' => 'Fw-1 : 0',
'type' => 'input'
},
'current_x' => {
'intfc_name' => 'socket:ni[0]',
'intfc_port' => 'current_x',
'range' => 'Xw-1 : 0',
'type' => 'input'
},
'irq' => {
'intfc_name' => 'plug:interrupt_peripheral[0]',
'intfc_port' => 'int_o',
'range' => '',
'type' => 'output'
},
'clk' => {
'intfc_name' => 'plug:clk[0]',
'intfc_port' => 'clk_i',
'range' => '',
'type' => 'input'
},
's_rty_o' => {
'intfc_name' => 'plug:wb_slave[0]',
'intfc_port' => 'rty_o',
'range' => '',
'type' => 'output'
}
}
}, 'ip_gen' );
old/ni.IP Property changes : Added: svn:executable ## -0,0 +1 ## +* \ No newline at end of property Index: old/ni_sep.IP =================================================================== --- old/ni_sep.IP (nonexistent) +++ old/ni_sep.IP (revision 38) @@ -0,0 +1,680 @@ +####################################################################### +## File: ni_sep.IP +## +## Copyright (C) 2014-2016 Alireza Monemi +## +## This file is part of ProNoC 1.5.1 +## +## WARNING: THIS IS AN AUTO-GENERATED FILE. CHANGES TO IT +## MAY CAUSE UNEXPECTED BEHAIVOR. +################################################################################ + +$ni_sep = bless( { + 'hdl_files' => [ + '/mpsoc/src_peripheral/ni/ni_sep.v', + '/mpsoc/src_peripheral/ni/sub_ni_rd.v', + '/mpsoc/src_peripheral/ni/sub_ni_wr.v', + '/mpsoc/src_noc/arbiter.v', + '/mpsoc/src_noc/flit_buffer.v', + '/mpsoc/src_noc/inout_ports.v', + '/mpsoc/src_noc/main_comp.v', + '/mpsoc/src_noc/route_mesh.v', + '/mpsoc/src_noc/route_torus.v', + '/mpsoc/src_noc/routing.v' + ], + 'system_h' => '#define ${IP}_BASE_ADDR ${BASE} + #define ${IP}_STATUS (*((volatile unsigned int *) (${IP}_BASE_ADDR ))) + #define ${IP}_MEM_PCKSIZ (*((volatile unsigned int *) (${IP}_BASE_ADDR+4 ))) + #define ${IP}_PCKSIZE (*((volatile unsigned int *) (${IP}_BASE_ADDR+8))) + #define ${IP}_MEM (*((volatile unsigned int *) (${IP}_BASE_ADDR+12))) + + #define ${IP}_VC_WR_ADDR(v) (*((volatile unsigned int *) (${IP}_BASE_ADDR+4 + (1<<5)+ (v<<6) ))) + #define ${IP}_VC_RD_ADDR(v) (*((volatile unsigned int *) (${IP}_BASE_ADDR+4 + (v<<6) ))) + + + #define ${IP}_VC_NUM ${V} + #define ${IP}_VC_MASK ((1<<${V})-1) + #define ${IP}_CLASS_IN_HDR_WIDTH 8 + #define ${IP}_DEST_IN_HDR_WIDTH 8 + #define ${IP}_X_Y_IN_HDR_WIDTH 4 + +/* + [14+V : 14+2V-1]rd_vc_not_empty + [14 : 14+V-1] wr_vc_not_empty + 13 rsv_pck_isr + 12 rd_done_isr + 11 wr_done_isr + 10 rsv_pck_int_en + 9 rd_done_int_en + 8 wr_done_int_en + 7 all_wr_vcs_full + 6 any_rd_vc_has_data + 5 rd_no_pck_err + 4 rd_ovr_size_err + 3 rd_done + 2 wr_done + 1 rd_busy + 0 wr_busy +*/ + #define ${IP}_WR_BUSY (1<<0) + #define ${IP}_RD_BUSY (1<<1) + #define ${IP}_WR_DONE (1<<2) + #define ${IP}_RD_DONE (1<<3) + #define ${IP}_RD_OVR_ERR (1<<4) + #define ${IP}_RD_NPCK_ERR (1<<5) + #define ${IP}_HAS_PCK (1<<6) + #define ${IP}_ALL_VCS_FULL (1<<7) + #define ${IP}_WR_DONE_INT_EN (1<<8) + #define ${IP}_RD_DONE_INT_EN (1<<9) + #define ${IP}_RSV_PCK_INT_EN (1<<10) + #define ${IP}_WR_DONE_ISR (1<<11) + #define ${IP}_RD_DONE_ISR (1<<12) + #define ${IP}_RSV_PCK_ISR (1<<13) + #define ${IP}WR_VCS_NO_EMPTY (${IP}_VC_MASK <<14) + #define ${IP}RD_VCS_NO_EMPTY (${IP}_VC_MASK << (14+${V})) + + #define ${IP}_PTR_WIDTH 20 + #define ${IP}_PCK_SIZE_WIDTH 12 + + + + + #define ${IP}_HDR_DEST_CORE_ADDR(DES_X, DES_Y) ((DES_X << ${IP}_X_Y_IN_HDR_WIDTH) | DES_Y)<<(2*${IP}_X_Y_IN_HDR_WIDTH) + #define ${IP}_HDR_CLASS(pck_class) (pck_class << ( ${IP}_DEST_IN_HDR_WIDTH+ (4* ${IP}_X_Y_IN_HDR_WIDTH))) + + + #define ${IP}_wait_for_sending_pck() while (!(${IP}_STATUS & ${IP}_WR_DONE)) + #define ${IP}_wait_for_reading_pck() while (!(${IP}_STATUS & ${IP}_RD_DONE)) + #define ${IP}_wait_for_getting_pck() while (!(${IP}_STATUS & ${IP}_HAS_PCK)) + +/***************************************** +void send_pck (unsigned int * pck_buffer, unsigned int data_size, unsigned int vc_num); +sending a packet through NoC network; +(unsigned int des_x,unsigned int des_y : destination core address; +unsigned int * pck_buffer : the buffer which hold the packet; The data must start from buff[1]; +unsigned int data_size : the size of data which wanted to be sent out in word = packet_size-1; +unsigned int class + +****************************************/ + inline void ${IP}_send_pck (unsigned int des_x, unsigned int des_y, volatile unsigned int * pck_buffer, unsigned int data_size, unsigned int pck_class, unsigned int vc_num){ + pck_buffer [0] = ${IP}_HDR_DEST_CORE_ADDR(des_x, des_y) | ${IP}_HDR_CLASS(pck_class); + ${IP}_VC_WR_ADDR(vc_num) = (unsigned int) (& pck_buffer [0]) + (data_size<<${IP}_PTR_WIDTH); + ${IP}_wait_for_sending_pck(); + } + +/******************************************* +void save_pck (volatile unsigned int * pck_buffer, unsigned int buffer_size); +save a received packet on pck_buffer +unsigned int * pck_buffer: the buffer for storing the packet; The read data start from buff[1]; +********************************************/ + inline void ${IP}_save_pck (volatile unsigned int * pck_buffer, unsigned int buffer_size,unsigned int vc_num){ + ${IP}_VC_RD_ADDR(vc_num) = (unsigned int) (& pck_buffer [0]) + (buffer_size<<${IP}_PTR_WIDTH); + ${IP}_wait_for_reading_pck(); + }', + 'ip_name' => 'ni_sep', + 'parameters_order' => [ + 'V', + 'B', + 'NX', + 'NY', + 'Fpay', + 'TOPOLOGY', + 'ROUTE_NAME', + 'DEBUG_EN', + 'COMB_MEM_PTR_W', + 'COMB_PCK_SIZE_W', + 'Dw', + 'S_Aw', + 'M_Aw', + 'TAGw', + 'SELw', + 'Yw', + 'Fw', + 'Xw' + ], + 'ports_order' => [ + 'reset', + 'clk', + 'current_x', + 'current_y', + 'flit_out', + 'flit_out_wr', + 'credit_in', + 'flit_in', + 'flit_in_wr', + 'credit_out', + 's_dat_i', + 's_sel_i', + 's_addr_i', + 's_cti_i', + 's_stb_i', + 's_cyc_i', + 's_we_i', + 's_dat_o', + 's_ack_o', + 'm_rd_sel_o', + 'm_rd_dat_o', + 'm_rd_addr_o', + 'm_rd_cti_o', + 'm_rd_stb_o', + 'm_rd_cyc_o', + 'm_rd_we_o', + 'm_rd_ack_i', + 'm_wr_sel_o', + 'm_wr_addr_o', + 'm_wr_cti_o', + 'm_wr_stb_o', + 'm_wr_cyc_o', + 'm_wr_we_o', + 'm_wr_dat_i', + 'm_wr_ack_i', + 'irq' + ], + 'file_name' => '/home/alireza/Mywork/mpsoc/src_peripheral/ni/ni_sep.v', + 'sockets' => { + 'ni' => { + 'connection_num' => 'single connection', + '0' => { + 'name' => 'ni' + }, + 'value' => 1, + 'type' => 'num', + 'ni' => {} + } + }, + 'module_name' => 'ni_sep', + 'unused' => { + 'plug:wb_master[1]' => [ + 'tag_o', + 'bte_o', + 'dat_o', + 'err_i', + 'rty_i' + ], + 'plug:wb_slave[0]' => [ + 'err_o', + 'rty_o', + 'tag_i', + 'bte_i' + ], + 'plug:wb_master[0]' => [ + 'tag_o', + 'dat_i', + 'bte_o', + 'err_i', + 'rty_i' + ] + }, + 'category' => 'NoC', + 'plugs' => { + 'wb_master' => { + 'wb_master' => {}, + '1' => { + 'name' => 'wb_wr' + }, + '0' => { + 'name' => 'wb_rd' + }, + 'value' => 2, + 'type' => 'num' + }, + 'reset' => { + 'reset' => {}, + '0' => { + 'name' => 'reset' + }, + 'value' => 1, + 'type' => 'num' + }, + 'clk' => { + 'clk' => {}, + '0' => { + 'name' => 'clk' + }, + 'value' => 1, + 'type' => 'num' + }, + 'interrupt_peripheral' => { + 'interrupt_peripheral' => {}, + 'value' => 1, + '0' => { + 'name' => 'intrpt_prhl' + }, + 'type' => 'num' + }, + 'wb_slave' => { + '1' => { + 'width' => 1, + 'name' => 'wb_slave_1', + 'addr' => '0x9100_0000 0x91ff_ffff General-Purpose I/O' + }, + '0' => { + 'width' => 9, + 'name' => 'wb_slave', + 'addr' => '0xb800_0000 0xbfff_ffff custom devices' + }, + 'value' => 1, + 'type' => 'num', + 'wb_slave' => {} + } + }, + 'modules' => { + 'ni_sep' => {} + }, + 'parameters' => { + 'Dw' => { + 'info' => undef, + 'default' => ' 32', + 'global_param' => 'Localparam', + 'content' => '', + 'redefine_param' => 1, + 'type' => 'Fixed' + }, + 'DEBUG_EN' => { + 'info' => undef, + 'default' => '0', + 'global_param' => 'Parameter', + 'content' => '', + 'redefine_param' => 1, + 'type' => 'Fixed' + }, + 'NY' => { + 'info' => undef, + 'default' => ' 2', + 'global_param' => 'Parameter', + 'content' => '', + 'redefine_param' => 1, + 'type' => 'Fixed' + }, + 'NX' => { + 'info' => undef, + 'default' => ' 2', + 'global_param' => 'Parameter', + 'content' => '', + 'redefine_param' => 1, + 'type' => 'Fixed' + }, + 'V' => { + 'info' => '', + 'default' => ' 4', + 'global_param' => 'Parameter', + 'content' => '', + 'redefine_param' => 1, + 'type' => 'Fixed' + }, + 'CONGESTION_INDEX' => { + 'info' => undef, + 'default' => '3', + 'global_param' => 1, + 'content' => '', + 'redefine_param' => 1, + 'type' => 'Fixed' + }, + 'Fw' => { + 'info' => undef, + 'default' => '2+V+Fpay', + 'global_param' => 'Localparam', + 'content' => '', + 'redefine_param' => 0, + 'type' => 'Fixed' + }, + 'COMB_PCK_SIZE_W' => { + 'info' => undef, + 'default' => '12', + 'global_param' => 'Localparam', + 'content' => '', + 'redefine_param' => 1, + 'type' => 'Fixed' + }, + 'TAGw' => { + 'info' => undef, + 'default' => '3', + 'global_param' => 'Localparam', + 'content' => '', + 'redefine_param' => 1, + 'type' => 'Fixed' + }, + 'M_Aw' => { + 'info' => undef, + 'default' => '32', + 'global_param' => 'Localparam', + 'content' => '', + 'redefine_param' => 1, + 'type' => 'Fixed' + }, + 'COMB_MEM_PTR_W' => { + 'info' => undef, + 'default' => '20', + 'global_param' => 'Localparam', + 'content' => '', + 'redefine_param' => 1, + 'type' => 'Fixed' + }, + 'ROUTE_NAME' => { + 'info' => undef, + 'default' => '"XY"', + 'global_param' => 'Parameter', + 'content' => '', + 'redefine_param' => 1, + 'type' => 'Fixed' + }, + 'Xw ' => { + 'info' => undef, + 'default' => 'log2(NX)', + 'global_param' => 0, + 'content' => '', + 'type' => 'Fixed', + 'redefine_param' => 0 + }, + 'Fpay' => { + 'info' => undef, + 'default' => ' 32', + 'global_param' => 'Parameter', + 'content' => '', + 'redefine_param' => 1, + 'type' => 'Fixed' + }, + 'ROUTE_TYPE' => { + 'info' => undef, + 'default' => '"DETERMINISTIC"', + 'global_param' => 1, + 'content' => '', + 'type' => 'Fixed', + 'redefine_param' => 1 + }, + 'SELw' => { + 'info' => undef, + 'default' => '4 ', + 'global_param' => 'Localparam', + 'content' => '', + 'redefine_param' => 1, + 'type' => 'Fixed' + }, + 'P' => { + 'info' => undef, + 'default' => ' 5', + 'global_param' => 1, + 'content' => '', + 'type' => 'Fixed', + 'redefine_param' => 1 + }, + 'B' => { + 'info' => '', + 'default' => ' 4', + 'global_param' => 'Parameter', + 'content' => '', + 'redefine_param' => 1, + 'type' => 'Fixed' + }, + 'S_Aw' => { + 'info' => undef, + 'default' => '7', + 'global_param' => 'Localparam', + 'content' => '', + 'redefine_param' => 1, + 'type' => 'Fixed' + }, + 'TOPOLOGY' => { + 'info' => undef, + 'default' => '"MESH"', + 'global_param' => 'Parameter', + 'content' => '', + 'redefine_param' => 1, + 'type' => 'Fixed' + }, + 'Xw' => { + 'info' => undef, + 'default' => 'log2(NX)', + 'global_param' => 'Localparam', + 'content' => '', + 'type' => 'Fixed', + 'redefine_param' => 0 + }, + 'Yw' => { + 'info' => undef, + 'default' => 'log2(NY)', + 'global_param' => 'Localparam', + 'content' => '', + 'redefine_param' => 0, + 'type' => 'Fixed' + }, + 'SSA_EN' => { + 'info' => undef, + 'default' => '"NO"', + 'global_param' => 1, + 'content' => '', + 'redefine_param' => 1, + 'type' => 'Fixed' + }, + 'Xwj' => { + 'info' => undef, + 'default' => 'fvf', + 'global_param' => 0, + 'content' => '', + 'type' => 'Fixed', + 'redefine_param' => 1 + } + }, + 'gui_status' => { + 'timeout' => 0, + 'status' => 'ideal' + }, + 'ports' => { + 'm_rd_cyc_o' => { + 'intfc_port' => 'cyc_o', + 'intfc_name' => 'plug:wb_master[0]', + 'range' => '', + 'type' => 'output' + }, + 's_dat_i' => { + 'intfc_port' => 'dat_i', + 'intfc_name' => 'plug:wb_slave[0]', + 'range' => 'Dw-1 : 0', + 'type' => 'input' + }, + 's_cyc_i' => { + 'intfc_port' => 'cyc_i', + 'intfc_name' => 'plug:wb_slave[0]', + 'range' => '', + 'type' => 'input' + }, + 'm_wr_sel_o' => { + 'intfc_port' => 'sel_o', + 'intfc_name' => 'plug:wb_master[1]', + 'range' => 'SELw-1 : 0', + 'type' => 'output' + }, + 'm_wr_dat_i' => { + 'intfc_port' => 'dat_i', + 'intfc_name' => 'plug:wb_master[1]', + 'range' => 'Dw-1 : 0', + 'type' => 'input' + }, + 'm_wr_addr_o' => { + 'intfc_port' => 'adr_o', + 'intfc_name' => 'plug:wb_master[1]', + 'range' => 'M_Aw-1 : 0', + 'type' => 'output' + }, + 'credit_out' => { + 'intfc_port' => 'credit_out', + 'intfc_name' => 'socket:ni[0]', + 'range' => 'V-1 : 0', + 'type' => 'output' + }, + 'flit_in_wr' => { + 'intfc_port' => 'flit_in_wr', + 'intfc_name' => 'socket:ni[0]', + 'range' => '', + 'type' => 'input' + }, + 's_dat_o' => { + 'intfc_port' => 'dat_o', + 'intfc_name' => 'plug:wb_slave[0]', + 'range' => 'Dw-1 : 0', + 'type' => 'output' + }, + 's_addr_i' => { + 'intfc_port' => 'adr_i', + 'intfc_name' => 'plug:wb_slave[0]', + 'range' => 'S_Aw-1 : 0', + 'type' => 'input' + }, + 's_cti_i' => { + 'intfc_port' => 'cti_i', + 'intfc_name' => 'plug:wb_slave[0]', + 'range' => 'TAGw-1 : 0', + 'type' => 'input' + }, + 'current_y' => { + 'intfc_port' => 'current_y', + 'intfc_name' => 'socket:ni[0]', + 'range' => 'Yw-1 : 0', + 'type' => 'input' + }, + 'm_wr_cti_o' => { + 'intfc_port' => 'cti_o', + 'intfc_name' => 'plug:wb_master[1]', + 'range' => 'TAGw-1 : 0', + 'type' => 'output' + }, + 'm_rd_ack_i' => { + 'intfc_port' => 'ack_i', + 'intfc_name' => 'plug:wb_master[0]', + 'range' => '', + 'type' => 'input' + }, + 's_sel_i' => { + 'intfc_port' => 'sel_i', + 'intfc_name' => 'plug:wb_slave[0]', + 'range' => 'SELw-1 : 0', + 'type' => 'input' + }, + 's_we_i' => { + 'intfc_port' => 'we_i', + 'intfc_name' => 'plug:wb_slave[0]', + 'range' => '', + 'type' => 'input' + }, + 'm_rd_dat_o' => { + 'intfc_port' => 'dat_o', + 'intfc_name' => 'plug:wb_master[0]', + 'range' => 'Dw-1 : 0', + 'type' => 'output' + }, + 's_stb_i' => { + 'intfc_port' => 'stb_i', + 'intfc_name' => 'plug:wb_slave[0]', + 'range' => '', + 'type' => 'input' + }, + 'm_wr_stb_o' => { + 'intfc_port' => 'stb_o', + 'intfc_name' => 'plug:wb_master[1]', + 'range' => '', + 'type' => 'output' + }, + 'flit_out_wr' => { + 'intfc_port' => 'flit_out_wr', + 'intfc_name' => 'socket:ni[0]', + 'range' => '', + 'type' => 'output' + }, + 'm_rd_sel_o' => { + 'intfc_port' => 'sel_o', + 'intfc_name' => 'plug:wb_master[0]', + 'range' => 'SELw-1 : 0', + 'type' => 'output' + }, + 'm_rd_addr_o' => { + 'intfc_port' => 'adr_o', + 'intfc_name' => 'plug:wb_master[0]', + 'range' => 'M_Aw-1 : 0', + 'type' => 'output' + }, + 's_ack_o' => { + 'intfc_port' => 'ack_o', + 'intfc_name' => 'plug:wb_slave[0]', + 'range' => '', + 'type' => 'output' + }, + 'm_wr_ack_i' => { + 'intfc_port' => 'ack_i', + 'intfc_name' => 'plug:wb_master[1]', + 'range' => '', + 'type' => 'input' + }, + 'm_rd_we_o' => { + 'intfc_port' => 'we_o', + 'intfc_name' => 'plug:wb_master[0]', + 'range' => '', + 'type' => 'output' + }, + 'flit_out' => { + 'intfc_port' => 'flit_out', + 'intfc_name' => 'socket:ni[0]', + 'range' => 'Fw-1 : 0', + 'type' => 'output' + }, + 'credit_in' => { + 'intfc_port' => 'credit_in', + 'intfc_name' => 'socket:ni[0]', + 'range' => 'V-1 : 0', + 'type' => 'input' + }, + 'reset' => { + 'intfc_port' => 'reset_i', + 'intfc_name' => 'plug:reset[0]', + 'range' => '', + 'type' => 'input' + }, + 'm_rd_stb_o' => { + 'intfc_port' => 'stb_o', + 'intfc_name' => 'plug:wb_master[0]', + 'range' => '', + 'type' => 'output' + }, + 'flit_in' => { + 'intfc_port' => 'flit_in', + 'intfc_name' => 'socket:ni[0]', + 'range' => 'Fw-1 : 0', + 'type' => 'input' + }, + 'm_rd_cti_o' => { + 'intfc_port' => 'cti_o', + 'intfc_name' => 'plug:wb_master[0]', + 'range' => 'TAGw-1 : 0', + 'type' => 'output' + }, + 'm_wr_we_o' => { + 'intfc_port' => 'we_o', + 'intfc_name' => 'plug:wb_master[1]', + 'range' => '', + 'type' => 'output' + }, + 'current_x' => { + 'intfc_port' => 'current_x', + 'intfc_name' => 'socket:ni[0]', + 'range' => 'Xw-1 : 0', + 'type' => 'input' + }, + 'irq' => { + 'intfc_port' => 'int_o', + 'intfc_name' => 'plug:interrupt_peripheral[0]', + 'range' => '', + 'type' => 'output' + }, + 'clk' => { + 'intfc_port' => 'clk_i', + 'intfc_name' => 'plug:clk[0]', + 'range' => '', + 'type' => 'input' + }, + 'm_wr_cyc_o' => { + 'intfc_port' => 'cyc_o', + 'intfc_name' => 'plug:wb_master[1]', + 'range' => '', + 'type' => 'output' + } + } + }, 'ip_gen' );
old/ni_sep.IP Property changes : Added: svn:executable ## -0,0 +1 ## +* \ No newline at end of property

powered by: WebSVN 2.1.0

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