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 42 to Rev 43
    Reverse comparison

Rev 42 → Rev 43

/old/ni.IP File deleted
old/ni.IP Property changes : Deleted: svn:executable ## -1 +0,0 ## -* \ No newline at end of property Index: old/ni_sep.IP =================================================================== --- old/ni_sep.IP (revision 42) +++ old/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, - '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 : Deleted: svn:executable ## -1 +0,0 ## -* \ No newline at end of property Index: ni_master.IP =================================================================== --- ni_master.IP (revision 42) +++ ni_master.IP (revision 43) @@ -11,523 +11,229 @@ $ipgen = bless( { 'ports' => { - 's_cti_i' => { - 'type' => 'input', - 'intfc_port' => 'cti_i', - 'range' => 'TAGw-1 : 0', - 'intfc_name' => 'plug:wb_slave[0]' - }, - 'm_send_sel_o' => { - 'intfc_port' => 'sel_o', - 'type' => 'output', - 'range' => 'SELw-1 : 0', + 'm_send_dat_i' => { + 'range' => 'Dw-1 : 0', + 'type' => 'input', + 'intfc_port' => 'dat_i', 'intfc_name' => 'plug:wb_master[0]' }, - 'm_receive_cyc_o' => { - 'intfc_port' => 'cyc_o', + 's_addr_i' => { + 'intfc_port' => 'adr_i', + 'intfc_name' => 'plug:wb_slave[0]', + 'range' => 'S_Aw-1 : 0', + 'type' => 'input' + }, + 'm_receive_sel_o' => { 'type' => 'output', - 'range' => '', - 'intfc_name' => 'plug:wb_master[1]' + 'range' => 'SELw-1 : 0', + 'intfc_name' => 'plug:wb_master[1]', + 'intfc_port' => 'sel_o' }, - 'm_send_ack_i' => { - 'intfc_port' => 'ack_i', - 'type' => 'input', - 'intfc_name' => 'plug:wb_master[0]', - 'range' => '' - }, - 'flit_out_wr' => { - 'range' => '', - 'intfc_name' => 'socket:ni[0]', - 'intfc_port' => 'flit_out_wr', - 'type' => 'output' - }, + 'flit_in_wr' => { + 'type' => 'input', + 'range' => '', + 'intfc_name' => 'socket:ni[0]', + 'intfc_port' => 'flit_in_wr' + }, 'm_send_stb_o' => { + 'range' => '', + 'type' => 'output', 'intfc_port' => 'stb_o', - 'type' => 'output', - 'range' => '', 'intfc_name' => 'plug:wb_master[0]' }, - 'm_receive_addr_o' => { - 'range' => 'M_Aw-1 : 0', - 'intfc_name' => 'plug:wb_master[1]', - 'intfc_port' => 'adr_o', - 'type' => 'output' - }, - 'flit_in' => { - 'intfc_name' => 'socket:ni[0]', - 'range' => 'Fw-1 : 0', - 'intfc_port' => 'flit_in', - 'type' => 'input' + 'clk' => { + 'intfc_port' => 'clk_i', + 'intfc_name' => 'plug:clk[0]', + 'range' => '', + 'type' => 'input' + }, + 's_sel_i' => { + 'intfc_name' => 'plug:wb_slave[0]', + 'intfc_port' => 'sel_i', + 'type' => 'input', + 'range' => 'SELw-1 : 0' }, + 's_cyc_i' => { + 'intfc_name' => 'plug:wb_slave[0]', + 'intfc_port' => 'cyc_i', + 'type' => 'input', + 'range' => '' + }, + 'm_receive_ack_i' => { + 'intfc_name' => 'plug:wb_master[1]', + 'intfc_port' => 'ack_i', + 'type' => 'input', + 'range' => '' + }, + 's_ack_o' => { + 'intfc_port' => 'ack_o', + 'intfc_name' => 'plug:wb_slave[0]', + 'range' => '', + 'type' => 'output' + }, 'reset' => { - 'intfc_name' => 'plug:reset[0]', 'range' => '', + 'type' => 'input', 'intfc_port' => 'reset_i', - 'type' => 'input' + 'intfc_name' => 'plug:reset[0]' }, + 's_dat_i' => { + 'intfc_port' => 'dat_i', + 'intfc_name' => 'plug:wb_slave[0]', + 'range' => 'Dw-1 : 0', + 'type' => 'input' + }, + 'm_send_ack_i' => { + 'intfc_port' => 'ack_i', + 'intfc_name' => 'plug:wb_master[0]', + 'range' => '', + 'type' => 'input' + }, + 'm_receive_cti_o' => { + 'range' => 'TAGw-1 : 0', + 'type' => 'output', + 'intfc_port' => 'cti_o', + 'intfc_name' => 'plug:wb_master[1]' + }, + 'irq' => { + 'intfc_port' => 'int_o', + 'intfc_name' => 'plug:interrupt_peripheral[0]', + 'range' => '', + 'type' => 'output' + }, + 'flit_out_wr' => { + 'range' => '', + 'type' => 'output', + 'intfc_port' => 'flit_out_wr', + 'intfc_name' => 'socket:ni[0]' + }, + 'credit_out' => { + 'intfc_name' => 'socket:ni[0]', + 'intfc_port' => 'credit_out', + 'type' => 'output', + 'range' => 'V-1 : 0' + }, 's_dat_o' => { + 'range' => 'Dw-1 : 0', 'type' => 'output', 'intfc_port' => 'dat_o', - 'range' => 'Dw-1 : 0', 'intfc_name' => 'plug:wb_slave[0]' }, + 'flit_in' => { + 'type' => 'input', + 'range' => 'Fw-1 : 0', + 'intfc_name' => 'socket:ni[0]', + 'intfc_port' => 'flit_in' + }, 's_stb_i' => { + 'intfc_name' => 'plug:wb_slave[0]', 'intfc_port' => 'stb_i', 'type' => 'input', - 'intfc_name' => 'plug:wb_slave[0]', 'range' => '' }, - 'current_x' => { - 'intfc_name' => 'socket:ni[0]', - 'range' => 'Xw-1 : 0', - 'type' => 'input', - 'intfc_port' => 'current_x' - }, - 'm_receive_cti_o' => { - 'type' => 'output', - 'intfc_port' => 'cti_o', - 'range' => 'TAGw-1 : 0', - 'intfc_name' => 'plug:wb_master[1]' - }, - 's_we_i' => { - 'intfc_port' => 'we_i', - 'type' => 'input', - 'intfc_name' => 'plug:wb_slave[0]', - 'range' => '' - }, + 'current_r_addr' => { + 'intfc_port' => 'current_r_addr', + 'intfc_name' => 'socket:ni[0]', + 'range' => 'RAw-1 : 0', + 'type' => 'input' + }, + 'm_send_addr_o' => { + 'type' => 'output', + 'range' => 'M_Aw-1 : 0', + 'intfc_name' => 'plug:wb_master[0]', + 'intfc_port' => 'adr_o' + }, + 'm_send_sel_o' => { + 'type' => 'output', + 'range' => 'SELw-1 : 0', + 'intfc_name' => 'plug:wb_master[0]', + 'intfc_port' => 'sel_o' + }, 'm_receive_we_o' => { 'type' => 'output', - 'intfc_port' => 'we_o', 'range' => '', - 'intfc_name' => 'plug:wb_master[1]' + 'intfc_name' => 'plug:wb_master[1]', + 'intfc_port' => 'we_o' }, - 'm_send_dat_i' => { - 'type' => 'input', - 'intfc_port' => 'dat_i', - 'range' => 'Dw-1 : 0', - 'intfc_name' => 'plug:wb_master[0]' + 'm_receive_cyc_o' => { + 'intfc_name' => 'plug:wb_master[1]', + 'intfc_port' => 'cyc_o', + 'type' => 'output', + 'range' => '' + }, + 'm_receive_dat_o' => { + 'range' => 'Dw-1 : 0', + 'type' => 'output', + 'intfc_port' => 'dat_o', + 'intfc_name' => 'plug:wb_master[1]' + }, + 'm_send_cti_o' => { + 'type' => 'output', + 'range' => 'TAGw-1 : 0', + 'intfc_name' => 'plug:wb_master[0]', + 'intfc_port' => 'cti_o' }, - 'flit_in_wr' => { - 'type' => 'input', - 'intfc_port' => 'flit_in_wr', - 'range' => '', - 'intfc_name' => 'socket:ni[0]' - }, - 's_sel_i' => { - 'range' => 'SELw-1 : 0', - 'intfc_name' => 'plug:wb_slave[0]', - 'type' => 'input', - 'intfc_port' => 'sel_i' - }, 'm_send_we_o' => { 'intfc_name' => 'plug:wb_master[0]', - 'range' => '', + 'intfc_port' => 'we_o', 'type' => 'output', - 'intfc_port' => 'we_o' + 'range' => '' }, + 's_cti_i' => { + 'range' => 'TAGw-1 : 0', + 'type' => 'input', + 'intfc_port' => 'cti_i', + 'intfc_name' => 'plug:wb_slave[0]' + }, 'flit_out' => { + 'range' => 'Fw-1 : 0', + 'type' => 'output', 'intfc_port' => 'flit_out', - 'type' => 'output', - 'intfc_name' => 'socket:ni[0]', - 'range' => 'Fw-1 : 0' + 'intfc_name' => 'socket:ni[0]' }, - 'm_send_cti_o' => { - 'range' => 'TAGw-1 : 0', - 'intfc_name' => 'plug:wb_master[0]', - 'intfc_port' => 'cti_o', - 'type' => 'output' - }, + 's_we_i' => { + 'intfc_name' => 'plug:wb_slave[0]', + 'intfc_port' => 'we_i', + 'type' => 'input', + 'range' => '' + }, + 'current_e_addr' => { + 'intfc_name' => 'socket:ni[0]', + 'intfc_port' => 'current_e_addr', + 'type' => 'input', + 'range' => 'EAw-1 : 0' + }, 'm_receive_stb_o' => { - 'type' => 'output', 'intfc_port' => 'stb_o', + 'intfc_name' => 'plug:wb_master[1]', 'range' => '', - 'intfc_name' => 'plug:wb_master[1]' + 'type' => 'output' }, 'm_send_cyc_o' => { 'type' => 'output', - 'intfc_port' => 'cyc_o', 'range' => '', - 'intfc_name' => 'plug:wb_master[0]' + 'intfc_name' => 'plug:wb_master[0]', + 'intfc_port' => 'cyc_o' }, - 's_cyc_i' => { - 'intfc_port' => 'cyc_i', - 'type' => 'input', - 'range' => '', - 'intfc_name' => 'plug:wb_slave[0]' - }, - 'm_send_addr_o' => { - 'range' => 'M_Aw-1 : 0', - 'intfc_name' => 'plug:wb_master[0]', - 'type' => 'output', - 'intfc_port' => 'adr_o' - }, - 'm_receive_dat_o' => { - 'intfc_name' => 'plug:wb_master[1]', - 'range' => 'Dw-1 : 0', - 'type' => 'output', - 'intfc_port' => 'dat_o' - }, - 's_dat_i' => { - 'intfc_name' => 'plug:wb_slave[0]', - 'range' => 'Dw-1 : 0', - 'type' => 'input', - 'intfc_port' => 'dat_i' - }, - 'm_receive_sel_o' => { - 'intfc_port' => 'sel_o', - 'type' => 'output', - 'intfc_name' => 'plug:wb_master[1]', - 'range' => 'SELw-1 : 0' - }, - 'clk' => { - 'intfc_port' => 'clk_i', - 'type' => 'input', - 'intfc_name' => 'plug:clk[0]', - 'range' => '' - }, - 'current_y' => { - 'type' => 'input', - 'intfc_port' => 'current_y', - 'range' => 'Yw-1 : 0', - 'intfc_name' => 'socket:ni[0]' - }, - 'm_receive_ack_i' => { - 'range' => '', - 'intfc_name' => 'plug:wb_master[1]', - 'type' => 'input', - 'intfc_port' => 'ack_i' - }, - 's_addr_i' => { - 'intfc_port' => 'adr_i', - 'type' => 'input', - 'range' => 'S_Aw-1 : 0', - 'intfc_name' => 'plug:wb_slave[0]' - }, - 'credit_out' => { - 'range' => 'V-1 : 0', - 'intfc_name' => 'socket:ni[0]', - 'intfc_port' => 'credit_out', - 'type' => 'output' - }, - 's_ack_o' => { - 'intfc_name' => 'plug:wb_slave[0]', - 'range' => '', - 'type' => 'output', - 'intfc_port' => 'ack_o' - }, - 'irq' => { - 'type' => 'output', - 'intfc_port' => 'int_o', - 'range' => '', - 'intfc_name' => 'plug:interrupt_peripheral[0]' - }, 'credit_in' => { - 'type' => 'input', 'intfc_port' => 'credit_in', 'intfc_name' => 'socket:ni[0]', - 'range' => 'V-1 : 0' - } + 'range' => 'V-1 : 0', + 'type' => 'input' + }, + 'm_receive_addr_o' => { + 'range' => 'M_Aw-1 : 0', + 'type' => 'output', + 'intfc_port' => 'adr_o', + 'intfc_name' => 'plug:wb_master[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' - ], - 'sockets' => { - 'ni' => { - '0' => { - 'name' => 'ni' - }, - 'value' => 1, - 'ni' => {}, - 'type' => 'num', - 'connection_num' => 'single connection' - } - }, - 'module_name' => 'ni_master', - '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' - ], - 'unused' => { - 'plug:wb_slave[0]' => [ - 'err_o', - 'rty_o', - 'tag_i', - 'bte_i' - ], - 'plug:wb_master[1]' => [ - 'tag_o', - 'rty_i', - 'bte_o', - 'err_i', - 'dat_i' - ], - 'plug:wb_master[0]' => [ - 'tag_o', - 'rty_i', - 'dat_o', - 'bte_o', - 'err_i' - ] - }, - 'description_pdf' => '/mpsoc/src_peripheral/ni/NI.pdf', - 'parameters' => { - 'C' => { - 'content' => '', - 'info' => 'Parameter', - 'default' => ' 4', - 'global_param' => 'Parameter', - 'type' => 'Fixed', - 'redefine_param' => 1 - }, - 'Dw' => { - 'type' => 'Spin-button', - 'global_param' => 'Localparam', - 'default' => '32', - 'info' => 'wishbone_bus data width in bits.', - 'content' => '32,256,8', - 'redefine_param' => 1 - }, - 'SRC_ADR_HDR_WIDTH' => { - 'global_param' => 'Localparam', - 'type' => 'Fixed', - 'content' => '', - 'default' => '8', - 'info' => 'Parameter', - 'redefine_param' => 1 - }, - 'SELw' => { - 'redefine_param' => 1, - 'type' => 'Fixed', - 'global_param' => 'Localparam', - 'info' => 'Parameter', - 'default' => '4', - 'content' => '' - }, - 'DEBUG_EN' => { - 'redefine_param' => 1, - 'type' => 'Fixed', - 'global_param' => 'Parameter', - 'default' => ' 1', - 'info' => 'Parameter', - 'content' => '' - }, - 'NY' => { - 'content' => '', - 'info' => 'Parameter', - 'default' => ' 4', - 'global_param' => 'Parameter', - 'type' => 'Fixed', - 'redefine_param' => 1 - }, - 'TOPOLOGY' => { - 'default' => '"MESH"', - 'info' => 'Parameter', - 'content' => '', - 'type' => 'Fixed', - 'global_param' => 'Parameter', - 'redefine_param' => 1 - }, - 'Fpay' => { - 'type' => 'Fixed', - 'global_param' => 'Parameter', - 'info' => 'Parameter', - 'default' => ' 32', - 'content' => '', - 'redefine_param' => 1 - }, - 'S_Aw' => { - 'content' => '', - 'default' => '8', - 'info' => 'Parameter', - 'global_param' => 'Localparam', - 'type' => 'Fixed', - 'redefine_param' => 1 - }, - 'CLASS_HDR_WIDTH' => { - 'redefine_param' => 1, - 'global_param' => 'Localparam', - 'type' => 'Fixed', - 'content' => '', - 'default' => '8', - 'info' => 'Parameter' - }, - 'DST_ADR_HDR_WIDTH' => { - 'redefine_param' => 1, - 'type' => 'Fixed', - 'global_param' => 'Localparam', - 'default' => '8', - 'info' => 'Parameter', - 'content' => '' - }, - 'NX' => { - 'type' => 'Fixed', - 'global_param' => 'Parameter', - 'info' => 'Parameter', - 'default' => ' 4', - 'content' => '', - 'redefine_param' => 1 - }, - 'ROUTE_NAME' => { - 'redefine_param' => 1, - 'info' => 'Parameter', - 'default' => '"XY" ', - 'content' => '', - 'type' => 'Fixed', - 'global_param' => 'Parameter' - }, - 'MAX_BURST_SIZE' => { - 'type' => 'Combo-box', - 'global_param' => 'Localparam', - 'default' => '16', - 'info' => 'Maximum burst size in words. -The NI releases the 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 of the desired data is transferred. ', - 'content' => '2,4,8,16,32,64,128,256,512,1024,2048', - 'redefine_param' => 1 - }, - 'M_Aw' => { - 'default' => '32', - 'info' => 'Parameter', - 'content' => 'Dw', - 'type' => 'Fixed', - 'global_param' => 'Localparam', - 'redefine_param' => 1 - }, - 'Fw' => { - 'content' => '', - 'default' => '2+V+Fpay', - 'info' => undef, - 'global_param' => 'Localparam', - 'type' => 'Fixed', - 'redefine_param' => 0 - }, - 'TAGw' => { - 'global_param' => 'Localparam', - 'type' => 'Fixed', - 'content' => '', - 'info' => 'Parameter', - 'default' => '3', - 'redefine_param' => 1 - }, - 'ROUTING_HDR_WIDTH' => { - 'redefine_param' => 1, - 'default' => '8', - 'info' => 'Parameter', - 'content' => '', - 'type' => 'Fixed', - 'global_param' => 'Localparam' - }, - 'Xw' => { - 'type' => 'Fixed', - 'global_param' => 'Localparam', - 'info' => undef, - 'default' => 'log2(NX)', - 'content' => '', - 'redefine_param' => 0 - }, - 'CRC_EN' => { - 'redefine_param' => 1, - 'global_param' => 'Localparam', - 'type' => 'Combo-box', - 'content' => '"YES","NO"', - 'default' => '"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. ' - }, - 'Yw' => { - 'redefine_param' => 0, - 'content' => '', - 'info' => undef, - 'default' => 'log2(NY)', - 'global_param' => 'Localparam', - 'type' => 'Fixed' - }, - 'V' => { - 'content' => '', - 'default' => '4', - 'info' => 'Parameter', - 'global_param' => 'Parameter', - 'type' => 'Fixed', - 'redefine_param' => 1 - }, - 'B' => { - 'content' => '', - 'info' => 'Parameter', - 'default' => ' 4', - 'global_param' => 'Parameter', - 'type' => 'Fixed', - 'redefine_param' => 1 - }, - 'MAX_TRANSACTION_WIDTH' => { - 'content' => '4,32,1', - '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.', - 'global_param' => 'Localparam', - 'type' => 'Spin-button', - 'redefine_param' => 1 - } - }, - 'modules' => { - 'vc_wb_slave_registers' => {}, - 'ovc_status' => {}, - 'header_flit_generator' => {}, - 'ni_master' => {}, - 'ni_vc_dma' => {} - }, - 'category' => 'NoC', 'parameters_order' => [ - 'CLASS_HDR_WIDTH', - 'ROUTING_HDR_WIDTH', - 'DST_ADR_HDR_WIDTH', - 'SRC_ADR_HDR_WIDTH', 'TOPOLOGY', 'ROUTE_NAME', - 'NX', - 'NY', + 'T1', + 'T2', + 'T3', 'C', 'V', 'B', @@ -540,64 +246,28 @@ 'M_Aw', 'TAGw', 'SELw', - 'Xw', - 'Yw', 'Fw', - 'CRC_EN' + 'CRC_EN', + 'RAw', + 'EAw' ], - 'plugs' => { - 'clk' => { - '0' => { - 'name' => 'clk' - }, - 'clk' => {}, - 'type' => 'num', - 'value' => 1 - }, - 'reset' => { - '0' => { - 'name' => 'reset' - }, - 'type' => 'num', - 'reset' => {}, - 'value' => 1 - }, - 'wb_slave' => { - 'wb_slave' => {}, - 'type' => 'num', - 'value' => 1, - '0' => { - 'name' => 'wb_slave', - 'width' => 10, - 'addr' => '0xb800_0000 0xbfff_ffff custom devices' - } - }, - 'interrupt_peripheral' => { - 'value' => 1, - 'type' => 'num', - '0' => { - 'name' => 'interrupt' - }, - 'interrupt_peripheral' => {} - }, - 'wb_master' => { - '0' => { - 'name' => 'wb_send' - }, - 'wb_master' => {}, - 'type' => 'num', - 'value' => 2, - '1' => { - 'name' => 'wb_receive' - } - } - }, - 'file_name' => '/home/alireza/mywork/mpsoc/src_peripheral/ni/ni_master.v', - 'version' => 40, - 'ip_name' => 'ni_master', - 'system_h' => ' /* NI wb registers addresses + 'description_pdf' => '/mpsoc/src_peripheral/ni/NI.pdf', + 'system_v' => '`define INCLUDE_TOPOLOGY_LOCALPARAM + `include "topology_localparam.v"', + 'modules' => { + 'header_flit_generator' => {}, + 'ni_master' => {}, + 'ni_vc_dma' => {}, + 'vc_wb_slave_registers' => {}, + 'ovc_status' => {} + }, + 'category' => 'NoC', + 'system_h' => '#include +#include "../phy_addr.h" + +/* NI wb registers addresses 0 : STATUS1_WB_ADDR // status1: {send_vc_is_busy,receive_vc_is_busy,receive_vc_packet_is_saved,receive_vc_got_packet}; - 1 : STATUS2_WB_ADDR // status2: {send_enable_binary,receive_enable_binary,vc_got_error,any_error_isr,got_pck_isr, save_done_isr,send_done_isr,any_error_int_en,got_pck_int_en, save_done_int_en,send_done_int_en}; + 1 : STATUS2_WB_ADDR // status2: {send_enable_binary,receive_enable_binary,vc_got_error,aT2_error_isr,got_pck_isr, save_done_isr,send_done_isr,aT2_error_int_en,got_pck_int_en, save_done_int_en,send_done_int_en}; 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 @@ -613,15 +283,10 @@ 12 : ERROR_FLAGS // errors: {crc_miss_match,burst_size_error,send_data_size_error,rcive_buff_ovrflw_err}; */ -#define CORID ${CORE_ID} -#define MAX_X_ADDR ${NX} -#define MAX_Y_ADDR ${NY} +#define COREID ${CORE_ID} +#define CORE_PHY_ADDR PHY_ADDR_ENDP_${CORE_ID} -#define Y_ADDR (CORID / MAX_X_ADDR) -#define X_ADDR (CORID % MAX_X_ADDR) - - #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 @@ -644,7 +309,7 @@ // assign status1= {send_vc_is_busy,receive_vc_is_busy,receive_vc_packet_is_saved,receive_vc_got_packet}; -// assign status2= {send_enable_binary,receive_enable_binary,vc_got_error,any_error_isr,got_pck_isr, save_done_isr,send_done_isr,any_error_int_en,got_pck_int_en, save_done_int_en,send_done_int_en}; +// assign status2= {send_enable_binary,receive_enable_binary,vc_got_error,aT2_error_isr,got_pck_isr, save_done_isr,send_done_isr,aT2_error_int_en,got_pck_int_en, save_done_int_en,send_done_int_en}; #define ${IP}_got_packet(v) ((${IP}_STATUS1_REG >> (v)) & 0x1) @@ -651,7 +316,7 @@ #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) -#define ${IP}_got_any_error(v) ((${IP}_STATUS2_REG >> (8+v)) & 0x1) +#define ${IP}_got_aT2_error(v) ((${IP}_STATUS2_REG >> (8+v)) & 0x1) #define SEND_DONE_INT_EN (1<<0) #define SAVE_DONE_INT_EN (1<<1) @@ -685,8 +350,7 @@ struct SRC_INFOS{ unsigned char r; // reserved unsigned char c; // message class - unsigned char y; //y address - unsigned char x ; //x address + int16_t addr; // phy_addr } ; inline struct SRC_INFOS get_src_info(unsigned char v){ @@ -716,17 +380,16 @@ class_num: message class number. Diffrent message classes can be sent via isolated network resources to avoid protocol deadlock data_start_addr : The address pointer to the start location of the packet to be sent in the memory data_size: the message data size in words - dest_x: the x address of destination core - dest_y: the y address of destination core + dest_phy_addr: the destination endpoint physical address. check phy_adr.h file for knowing each endpoint physical address */ -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){ +void ${IP}_transfer (unsigned int init_weight, unsigned int v, unsigned int class_num, unsigned int data_start_addr, unsigned int data_size, unsigned int dest_phy_addr){ 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) ; + ${IP}_SEND_DEST_REG(v) = dest_phy_addr | (class_num<<16) | (init_weight<<24); } @@ -746,9 +409,318 @@ }', + 'parameters' => { + 'ROUTE_NAME' => { + 'global_param' => 'Parameter', + 'type' => 'Fixed', + 'default' => '"XY" ', + 'redefine_param' => 1, + 'content' => '', + 'info' => 'Parameter' + }, + 'Fpay' => { + 'global_param' => 'Parameter', + 'type' => 'Fixed', + 'default' => ' 32', + 'redefine_param' => 1, + 'content' => '', + 'info' => 'Parameter' + }, + 'TAGw' => { + 'default' => '3', + 'global_param' => 'Localparam', + 'type' => 'Fixed', + 'content' => '', + 'info' => 'Parameter', + 'redefine_param' => 1 + }, + 'S_Aw' => { + 'content' => '', + 'info' => 'Parameter', + 'redefine_param' => 1, + 'default' => '8', + 'global_param' => 'Localparam', + 'type' => 'Fixed' + }, + 'T3' => { + 'type' => 'Fixed', + 'global_param' => 'Parameter', + 'default' => '1', + 'redefine_param' => 1, + 'info' => 'Parameter', + 'content' => '' + }, + 'MAX_BURST_SIZE' => { + 'content' => '2,4,8,16,32,64,128,256,512,1024,2048', + 'info' => 'Maximum burst size in words. +The NI releases the 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 of the desired data is transferred. ', + 'redefine_param' => 1, + 'default' => '16', + 'global_param' => 'Localparam', + 'type' => 'Combo-box' + }, + 'M_Aw' => { + 'global_param' => 'Localparam', + 'type' => 'Fixed', + 'default' => '32', + 'redefine_param' => 1, + 'content' => 'Dw', + 'info' => 'Parameter' + }, + 'DEBUG_EN' => { + 'info' => 'Parameter', + 'content' => '', + 'redefine_param' => 1, + 'default' => ' 1', + 'type' => 'Fixed', + 'global_param' => 'Parameter' + }, + 'SELw' => { + 'info' => 'Parameter', + 'content' => '', + 'redefine_param' => 1, + 'default' => '4', + 'type' => 'Fixed', + 'global_param' => 'Localparam' + }, + 'Dw' => { + 'global_param' => 'Localparam', + 'type' => 'Spin-button', + 'default' => '32', + 'redefine_param' => 1, + 'content' => '32,256,8', + 'info' => 'wishbone_bus data width in bits.' + }, + 'Fw' => { + 'redefine_param' => 0, + 'content' => '', + 'info' => undef, + 'global_param' => 'Localparam', + 'type' => 'Fixed', + 'default' => '2+V+Fpay' + }, + 'B' => { + 'global_param' => 'Parameter', + 'type' => 'Fixed', + 'default' => ' 4', + 'redefine_param' => 1, + 'content' => '', + 'info' => 'Parameter' + }, + 'CRC_EN' => { + 'type' => 'Combo-box', + 'global_param' => 'Localparam', + 'default' => '"NO"', + 'redefine_param' => 1, + '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"' + }, + 'V' => { + 'type' => 'Fixed', + 'global_param' => 'Parameter', + 'default' => '4', + 'redefine_param' => 1, + 'info' => 'Parameter', + 'content' => '' + }, + 'RAw' => { + 'type' => 'Fixed', + 'global_param' => 'Parameter', + 'default' => '16', + 'redefine_param' => 0, + 'info' => undef, + 'content' => '' + }, + 'T2' => { + 'content' => '', + 'info' => 'Parameter', + 'redefine_param' => 1, + 'default' => ' 4', + 'global_param' => 'Parameter', + 'type' => 'Fixed' + }, + 'T1' => { + 'global_param' => 'Parameter', + 'type' => 'Fixed', + 'default' => ' 4', + 'redefine_param' => 1, + 'content' => '', + 'info' => 'Parameter' + }, + 'TOPOLOGY' => { + 'global_param' => 'Parameter', + 'type' => 'Fixed', + 'default' => '"MESH"', + 'redefine_param' => 1, + 'content' => '', + 'info' => 'Parameter' + }, + 'EAw' => { + 'redefine_param' => 0, + 'content' => '', + 'info' => undef, + 'global_param' => 'Parameter', + 'type' => 'Fixed', + 'default' => '16' + }, + 'C' => { + 'default' => ' 4', + 'type' => 'Fixed', + 'global_param' => 'Parameter', + 'info' => 'Parameter', + 'content' => '', + 'redefine_param' => 1 + }, + 'MAX_TRANSACTION_WIDTH' => { + 'default' => '13', + 'type' => 'Spin-button', + 'global_param' => 'Localparam', + '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', + 'redefine_param' => 1 + } + }, + 'plugs' => { + 'wb_master' => { + 'type' => 'num', + '0' => { + 'name' => 'wb_send' + }, + 'value' => 2, + '1' => { + 'name' => 'wb_receive' + }, + 'wb_master' => {} + }, + 'interrupt_peripheral' => { + 'type' => 'num', + '0' => { + 'name' => 'interrupt' + }, + 'value' => 1, + 'interrupt_peripheral' => {} + }, + 'reset' => { + '0' => { + 'name' => 'reset' + }, + 'value' => 1, + 'type' => 'num', + 'reset' => {} + }, + 'wb_slave' => { + 'wb_slave' => {}, + 'value' => 1, + '0' => { + 'addr' => '0xb800_0000 0xbfff_ffff custom devices', + 'width' => 10, + 'name' => 'wb_slave' + }, + 'type' => 'num' + }, + 'clk' => { + 'type' => 'num', + '0' => { + 'name' => 'clk' + }, + 'value' => 1, + 'clk' => {} + } + }, + 'file_name' => '/home/alireza/mywork/mpsoc/src_peripheral/ni/ni_master.v', + 'ip_name' => 'ni_master', + 'sockets' => { + 'ni' => { + 'connection_num' => 'single connection', + 'ni' => {}, + 'value' => 1, + '0' => { + 'name' => 'ni' + }, + 'type' => 'num' + } + }, + 'ports_order' => [ + 'reset', + 'clk', + 'current_e_addr', + 'current_r_addr', + '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' + ], 'description' => '', + 'unused' => { + 'plug:wb_master[1]' => [ + 'tag_o', + 'dat_i', + 'bte_o', + 'err_i', + 'rty_i' + ], + 'plug:wb_master[0]' => [ + 'tag_o', + 'bte_o', + 'err_i', + 'dat_o', + 'rty_i' + ], + 'plug:wb_slave[0]' => [ + 'tag_i', + 'err_o', + 'rty_o', + 'bte_i' + ] + }, 'gui_status' => { - 'timeout' => 0, - 'status' => 'ideal' - } + 'status' => 'ideal', + 'timeout' => 0 + }, + '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', + '/mpsoc/src_noc/topology_localparam.v' + ], + 'module_name' => 'ni_master', + 'version' => 60 }, 'ip_gen' );

powered by: WebSVN 2.1.0

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