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 30 to Rev 34
    Reverse comparison

Rev 30 → Rev 34

/ni.IP File deleted
ni.IP Property changes : Deleted: svn:executable ## -1 +0,0 ## -* \ No newline at end of property Index: ni_sep.IP =================================================================== --- ni_sep.IP (revision 30) +++ ni_sep.IP (nonexistent) @@ -1,680 +0,0 @@ -####################################################################### -## 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, - 'deafult' => ' 32', - 'global_param' => 'Localparam', - 'content' => '', - 'redefine_param' => 1, - 'type' => 'Fixed' - }, - 'DEBUG_EN' => { - 'info' => undef, - 'deafult' => '0', - 'global_param' => 'Parameter', - 'content' => '', - 'redefine_param' => 1, - 'type' => 'Fixed' - }, - 'NY' => { - 'info' => undef, - 'deafult' => ' 2', - 'global_param' => 'Parameter', - 'content' => '', - 'redefine_param' => 1, - 'type' => 'Fixed' - }, - 'NX' => { - 'info' => undef, - 'deafult' => ' 2', - 'global_param' => 'Parameter', - 'content' => '', - 'redefine_param' => 1, - 'type' => 'Fixed' - }, - 'V' => { - 'info' => '', - 'deafult' => ' 4', - 'global_param' => 'Parameter', - 'content' => '', - 'redefine_param' => 1, - 'type' => 'Fixed' - }, - 'CONGESTION_INDEX' => { - 'info' => undef, - 'deafult' => '3', - 'global_param' => 1, - 'content' => '', - 'redefine_param' => 1, - 'type' => 'Fixed' - }, - 'Fw' => { - 'info' => undef, - 'deafult' => '2+V+Fpay', - 'global_param' => 'Localparam', - 'content' => '', - 'redefine_param' => 0, - 'type' => 'Fixed' - }, - 'COMB_PCK_SIZE_W' => { - 'info' => undef, - 'deafult' => '12', - 'global_param' => 'Localparam', - 'content' => '', - 'redefine_param' => 1, - 'type' => 'Fixed' - }, - 'TAGw' => { - 'info' => undef, - 'deafult' => '3', - 'global_param' => 'Localparam', - 'content' => '', - 'redefine_param' => 1, - 'type' => 'Fixed' - }, - 'M_Aw' => { - 'info' => undef, - 'deafult' => '32', - 'global_param' => 'Localparam', - 'content' => '', - 'redefine_param' => 1, - 'type' => 'Fixed' - }, - 'COMB_MEM_PTR_W' => { - 'info' => undef, - 'deafult' => '20', - 'global_param' => 'Localparam', - 'content' => '', - 'redefine_param' => 1, - 'type' => 'Fixed' - }, - 'ROUTE_NAME' => { - 'info' => undef, - 'deafult' => '"XY"', - 'global_param' => 'Parameter', - 'content' => '', - 'redefine_param' => 1, - 'type' => 'Fixed' - }, - 'Xw ' => { - 'info' => undef, - 'deafult' => 'log2(NX)', - 'global_param' => 0, - 'content' => '', - 'type' => 'Fixed', - 'redefine_param' => 0 - }, - 'Fpay' => { - 'info' => undef, - 'deafult' => ' 32', - 'global_param' => 'Parameter', - 'content' => '', - 'redefine_param' => 1, - 'type' => 'Fixed' - }, - 'ROUTE_TYPE' => { - 'info' => undef, - 'deafult' => '"DETERMINISTIC"', - 'global_param' => 1, - 'content' => '', - 'type' => 'Fixed', - 'redefine_param' => 1 - }, - 'SELw' => { - 'info' => undef, - 'deafult' => '4 ', - 'global_param' => 'Localparam', - 'content' => '', - 'redefine_param' => 1, - 'type' => 'Fixed' - }, - 'P' => { - 'info' => undef, - 'deafult' => ' 5', - 'global_param' => 1, - 'content' => '', - 'type' => 'Fixed', - 'redefine_param' => 1 - }, - 'B' => { - 'info' => '', - 'deafult' => ' 4', - 'global_param' => 'Parameter', - 'content' => '', - 'redefine_param' => 1, - 'type' => 'Fixed' - }, - 'S_Aw' => { - 'info' => undef, - 'deafult' => '7', - 'global_param' => 'Localparam', - 'content' => '', - 'redefine_param' => 1, - 'type' => 'Fixed' - }, - 'TOPOLOGY' => { - 'info' => undef, - 'deafult' => '"MESH"', - 'global_param' => 'Parameter', - 'content' => '', - 'redefine_param' => 1, - 'type' => 'Fixed' - }, - 'Xw' => { - 'info' => undef, - 'deafult' => 'log2(NX)', - 'global_param' => 'Localparam', - 'content' => '', - 'type' => 'Fixed', - 'redefine_param' => 0 - }, - 'Yw' => { - 'info' => undef, - 'deafult' => 'log2(NY)', - 'global_param' => 'Localparam', - 'content' => '', - 'redefine_param' => 0, - 'type' => 'Fixed' - }, - 'SSA_EN' => { - 'info' => undef, - 'deafult' => '"NO"', - 'global_param' => 1, - 'content' => '', - 'redefine_param' => 1, - 'type' => 'Fixed' - }, - 'Xwj' => { - 'info' => undef, - 'deafult' => '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' );
ni_sep.IP Property changes : Deleted: svn:executable ## -1 +0,0 ## -* \ No newline at end of property Index: ni_master.IP =================================================================== --- ni_master.IP (nonexistent) +++ ni_master.IP (revision 34) @@ -0,0 +1,693 @@ +####################################################################### +## File: ni_master.IP +## +## Copyright (C) 2014-2016 Alireza Monemi +## +## This file is part of ProNoC 1.6.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' => {}, + '0' => { + 'name' => 'reset' + }, + 'type' => 'num', + 'value' => 1 + }, + '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', + '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 + }, + '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', + 'redefine_param' => 1, + 'content' => '', + 'deafult' => '4', + 'info' => 'Parameter' + }, + 'Fpay' => { + 'redefine_param' => 1, + 'deafult' => ' 32', + 'content' => '', + 'info' => 'Parameter', + 'global_param' => 'Parameter', + 'type' => 'Fixed' + }, + '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. +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' => '', + 'redefine_param' => 1, + 'info' => 'Parameter', + 'global_param' => 'Parameter', + 'type' => 'Fixed' + }, + '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', + 'type' => 'Fixed', + 'redefine_param' => 1, + 'content' => '', + 'deafult' => '8', + 'info' => 'Parameter' + }, + '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' + }, + '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' => { + 'range' => '', + 'intfc_name' => 'socket:ni[0]', + 'intfc_port' => 'flit_out_wr', + 'type' => 'output' + }, + 's_cyc_i' => { + 'intfc_port' => 'cyc_i', + 'intfc_name' => 'plug:wb_slave[0]', + 'type' => 'input', + 'range' => '' + }, + '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' => '' + }, + 'm_send_stb_o' => { + 'range' => '', + 'intfc_name' => 'plug:wb_master[0]', + 'intfc_port' => 'stb_o', + 'type' => 'output' + }, + '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' => { + 'range' => '', + 'type' => 'output', + 'intfc_port' => 'int_o', + 'intfc_name' => 'plug:interrupt_peripheral[0]' + }, + 's_stb_i' => { + 'range' => '', + 'type' => 'input', + 'intfc_port' => 'stb_i', + 'intfc_name' => 'plug:wb_slave[0]' + }, + 'm_send_we_o' => { + 'range' => '', + 'intfc_name' => 'plug:wb_master[0]', + 'intfc_port' => 'we_o', + 'type' => 'output' + }, + 'flit_in' => { + 'range' => 'Fw-1 : 0', + 'type' => 'input', + 'intfc_name' => 'socket:ni[0]', + 'intfc_port' => 'flit_in' + }, + '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', + 'type' => 'output', + 'intfc_port' => 'credit_out', + 'intfc_name' => 'socket:ni[0]' + }, + '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', + 'type' => 'input' + }, + 's_we_i' => { + 'intfc_port' => 'we_i', + 'intfc_name' => 'plug:wb_slave[0]', + '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 + 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; + + +}', + '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' );

powered by: WebSVN 2.1.0

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