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

[/] [an-fpga-implementation-of-low-latency-noc-based-mpsoc/] [trunk/] [mpsoc/] [src_c/] [jtag/] [test_rtl/] [jtag_ram_test/] [src_verilog/] [ram_test.v] - Rev 48

Compare with Previous | Blame | View Log

 
/**************************************************************************
**	WARNING: THIS IS AN AUTO-GENERATED FILE. CHANGES TO IT ARE LIKELY TO BE
**	OVERWRITTEN AND LOST. Rename this file if you wish to do any modification.
****************************************************************************/
 
 
/**********************************************************************
**	File: ram_test.v
**    
**	Copyright (C) 2014-2018  Alireza Monemi
**    
**	This file is part of ProNoC 1.7.0 
**
**	ProNoC ( stands for Prototype Network-on-chip)  is free software: 
**	you can redistribute it and/or modify it under the terms of the GNU
**	Lesser General Public License as published by the Free Software Foundation,
**	either version 2 of the License, or (at your option) any later version.
**
** 	ProNoC is distributed in the hope that it will be useful, but WITHOUT
** 	ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
** 	or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU Lesser General
** 	Public License for more details.
**
** 	You should have received a copy of the GNU Lesser General Public
** 	License along with ProNoC. If not, see <http:**www.gnu.org/licenses/>.
******************************************************************************/ 
 
`timescale 1ns / 1ps
module ram_test #(
 	parameter	CORE_ID=0,
	parameter	SW_LOC="/home/alireza/mywork/mpsoc_work/SOC/ram_test/sw" ,
	parameter	ram_Dw=32 ,
	parameter	ram_Aw=12
)(
	ss_clk_in, 
	ss_reset_in
);
 
  	function integer log2;
  		input integer number; begin	
          	log2=0;	
          	while(2**log2<number) begin	
        		  	log2=log2+1;	
         		end	
        		end	
     	endfunction // log2 
 
     	function   [15:0]i2s;   
          input   integer c;  integer i;  integer tmp; begin 
              tmp =0; 
              for (i=0; i<2; i=i+1'b1) begin 
              tmp =  tmp +    (((c % 10)   + 6'd48) << i*8); 
                  c       =   c/10; 
              end 
              i2s = tmp[15:0];
          end     
     endfunction //i2s
 
 	localparam	programmer_DW=32;
	localparam	programmer_AW=32;
	localparam	programmer_S_Aw=   7;
	localparam	programmer_M_Aw=   32;
	localparam	programmer_TAGw=   3;
	localparam	programmer_SELw=   4;
	localparam	programmer_VJTAG_INDEX=CORE_ID;
 
 	localparam	ram_BYTE_WR_EN="YES";
	localparam	ram_FPGA_VENDOR="ALTERA";
	localparam	ram_JTAG_CONNECT= "ALTERA_IMCE";
	localparam	ram_JTAG_INDEX=CORE_ID;
	localparam	ram_TAGw=3;
	localparam	ram_SELw=ram_Dw/8;
	localparam	ram_CTIw=3;
	localparam	ram_BTEw=2;
	localparam	ram_BURST_MODE="DISABLED";
	localparam	ram_MEM_CONTENT_FILE_NAME="ram0";
	localparam	ram_INITIAL_EN="NO";
	localparam	ram_INIT_FILE_PATH=SW_LOC;
 
 	localparam	bus_M=1;
	localparam	bus_S=1;
	localparam	bus_Dw=32;
	localparam	bus_Aw=32;
	localparam	bus_SELw=bus_Dw/8;
	localparam	bus_TAGw=3;
	localparam	bus_CTIw=3;
	localparam	bus_BTEw=2 ;
 
 
//Wishbone slave base address based on instance name
 	localparam 	ram_WB0_BASE_ADDR	=	32'h00000000;
 	localparam 	ram_WB0_END_ADDR	=	32'h00000fff;
 
 
//Wishbone slave base address based on module name. 
 	localparam 	single_port_ram0_WB0_BASE_ADDR	=	32'h00000000;
 	localparam 	single_port_ram0_WB0_END_ADDR	=	32'h00000fff;
 
 	input			ss_clk_in;
 	input			ss_reset_in;
 
  	wire			 ss_socket_clk_0_clk_o;
 	wire			 ss_socket_reset_0_reset_o;
 
  	wire			 programmer_plug_clk_0_clk_i;
 	wire			 programmer_plug_wb_master_0_ack_i;
 	wire	[ programmer_M_Aw-1          :   0 ] programmer_plug_wb_master_0_adr_o;
 	wire	[ programmer_TAGw-1          :   0 ] programmer_plug_wb_master_0_cti_o;
 	wire			 programmer_plug_wb_master_0_cyc_o;
 	wire	[ programmer_DW-1           :  0 ] programmer_plug_wb_master_0_dat_i;
 	wire	[ programmer_DW-1            :   0 ] programmer_plug_wb_master_0_dat_o;
 	wire	[ programmer_SELw-1          :   0 ] programmer_plug_wb_master_0_sel_o;
 	wire			 programmer_plug_wb_master_0_stb_o;
 	wire			 programmer_plug_wb_master_0_we_o;
 	wire			 programmer_plug_reset_0_reset_i;
 
  	wire			 ram_plug_clk_0_clk_i;
 	wire			 ram_plug_reset_0_reset_i;
 	wire			 ram_plug_wb_slave_0_ack_o;
 	wire	[ ram_Aw-1       :   0 ] ram_plug_wb_slave_0_adr_i;
 	wire	[ ram_BTEw-1     :   0 ] ram_plug_wb_slave_0_bte_i;
 	wire	[ ram_CTIw-1     :   0 ] ram_plug_wb_slave_0_cti_i;
 	wire			 ram_plug_wb_slave_0_cyc_i;
 	wire	[ ram_Dw-1       :   0 ] ram_plug_wb_slave_0_dat_i;
 	wire	[ ram_Dw-1       :   0 ] ram_plug_wb_slave_0_dat_o;
 	wire			 ram_plug_wb_slave_0_err_o;
 	wire			 ram_plug_wb_slave_0_rty_o;
 	wire	[ ram_SELw-1     :   0 ] ram_plug_wb_slave_0_sel_i;
 	wire			 ram_plug_wb_slave_0_stb_i;
 	wire	[ ram_TAGw-1     :   0 ] ram_plug_wb_slave_0_tag_i;
 	wire			 ram_plug_wb_slave_0_we_i;
 
  	wire			 bus_plug_clk_0_clk_i;
 	wire	[ bus_M-1        :   0 ] bus_socket_wb_master_array_ack_o;
 	wire			 bus_socket_wb_master_0_ack_o;
 	wire	[ bus_Aw*bus_M-1      :   0 ] bus_socket_wb_master_array_adr_i;
 	wire	[ bus_Aw-1:0 ] bus_socket_wb_master_0_adr_i;
 	wire	[ bus_BTEw*bus_M-1    :   0 ] bus_socket_wb_master_array_bte_i;
 	wire	[ bus_BTEw-1:0 ] bus_socket_wb_master_0_bte_i;
 	wire	[ bus_CTIw*bus_M-1    :   0 ] bus_socket_wb_master_array_cti_i;
 	wire	[ bus_CTIw-1:0 ] bus_socket_wb_master_0_cti_i;
 	wire	[ bus_M-1        :   0 ] bus_socket_wb_master_array_cyc_i;
 	wire			 bus_socket_wb_master_0_cyc_i;
 	wire	[ bus_Dw*bus_M-1      :   0 ] bus_socket_wb_master_array_dat_i;
 	wire	[ bus_Dw-1:0 ] bus_socket_wb_master_0_dat_i;
 	wire	[ bus_Dw*bus_M-1      :   0 ] bus_socket_wb_master_array_dat_o;
 	wire	[ bus_Dw-1:0 ] bus_socket_wb_master_0_dat_o;
 	wire	[ bus_M-1        :   0 ] bus_socket_wb_master_array_err_o;
 	wire			 bus_socket_wb_master_0_err_o;
 	wire	[ bus_Aw-1       :   0 ] bus_socket_wb_addr_map_0_grant_addr;
 	wire	[ bus_M-1        :   0 ] bus_socket_wb_master_array_rty_o;
 	wire			 bus_socket_wb_master_0_rty_o;
 	wire	[ bus_SELw*bus_M-1    :   0 ] bus_socket_wb_master_array_sel_i;
 	wire	[ bus_SELw-1:0 ] bus_socket_wb_master_0_sel_i;
 	wire	[ bus_M-1        :   0 ] bus_socket_wb_master_array_stb_i;
 	wire			 bus_socket_wb_master_0_stb_i;
 	wire	[ bus_TAGw*bus_M-1    :   0 ] bus_socket_wb_master_array_tag_i;
 	wire	[ bus_TAGw-1:0 ] bus_socket_wb_master_0_tag_i;
 	wire	[ bus_M-1        :   0 ] bus_socket_wb_master_array_we_i;
 	wire			 bus_socket_wb_master_0_we_i;
 	wire			 bus_plug_reset_0_reset_i;
 	wire	[ bus_S-1        :   0 ] bus_socket_wb_slave_array_ack_i;
 	wire			 bus_socket_wb_slave_0_ack_i;
 	wire	[ bus_Aw*bus_S-1      :   0 ] bus_socket_wb_slave_array_adr_o;
 	wire	[ bus_Aw-1:0 ] bus_socket_wb_slave_0_adr_o;
 	wire	[ bus_BTEw*bus_S-1    :   0 ] bus_socket_wb_slave_array_bte_o;
 	wire	[ bus_BTEw-1:0 ] bus_socket_wb_slave_0_bte_o;
 	wire	[ bus_CTIw*bus_S-1    :   0 ] bus_socket_wb_slave_array_cti_o;
 	wire	[ bus_CTIw-1:0 ] bus_socket_wb_slave_0_cti_o;
 	wire	[ bus_S-1        :   0 ] bus_socket_wb_slave_array_cyc_o;
 	wire			 bus_socket_wb_slave_0_cyc_o;
 	wire	[ bus_Dw*bus_S-1      :   0 ] bus_socket_wb_slave_array_dat_i;
 	wire	[ bus_Dw-1:0 ] bus_socket_wb_slave_0_dat_i;
 	wire	[ bus_Dw*bus_S-1      :   0 ] bus_socket_wb_slave_array_dat_o;
 	wire	[ bus_Dw-1:0 ] bus_socket_wb_slave_0_dat_o;
 	wire	[ bus_S-1        :   0 ] bus_socket_wb_slave_array_err_i;
 	wire			 bus_socket_wb_slave_0_err_i;
 	wire	[ bus_S-1        :   0 ] bus_socket_wb_slave_array_rty_i;
 	wire			 bus_socket_wb_slave_0_rty_i;
 	wire	[ bus_SELw*bus_S-1    :   0 ] bus_socket_wb_slave_array_sel_o;
 	wire	[ bus_SELw-1:0 ] bus_socket_wb_slave_0_sel_o;
 	wire	[ bus_S-1        :   0 ] bus_socket_wb_addr_map_0_sel_one_hot;
 	wire	[ bus_S-1        :   0 ] bus_socket_wb_slave_array_stb_o;
 	wire			 bus_socket_wb_slave_0_stb_o;
 	wire	[ bus_TAGw*bus_S-1    :   0 ] bus_socket_wb_slave_array_tag_o;
 	wire	[ bus_TAGw-1:0 ] bus_socket_wb_slave_0_tag_o;
 	wire	[ bus_S-1        :   0 ] bus_socket_wb_slave_array_we_o;
 	wire			 bus_socket_wb_slave_0_we_o;
 
 
//Take the default value for ports that defined by interfaces but did not assigned to any wires.
 	assign bus_socket_wb_master_0_bte_i = {bus_BTEw{1'b0}};
 	assign bus_socket_wb_master_0_tag_i = {bus_TAGw{1'b0}};
 
 
 clk_source  ss 	(
		.clk_in(ss_clk_in),
		.clk_out(ss_socket_clk_0_clk_o),
		.reset_in(ss_reset_in),
		.reset_out(ss_socket_reset_0_reset_o)
	);
 vjtag_wb #(
 		.DW(programmer_DW),
		.AW(programmer_AW),
		.S_Aw(programmer_S_Aw),
		.M_Aw(programmer_M_Aw),
		.TAGw(programmer_TAGw),
		.SELw(programmer_SELw),
		.VJTAG_INDEX(programmer_VJTAG_INDEX)
	)  programmer 	(
		.clk(programmer_plug_clk_0_clk_i),
		.m_ack_i(programmer_plug_wb_master_0_ack_i),
		.m_addr_o(programmer_plug_wb_master_0_adr_o),
		.m_cti_o(programmer_plug_wb_master_0_cti_o),
		.m_cyc_o(programmer_plug_wb_master_0_cyc_o),
		.m_dat_i(programmer_plug_wb_master_0_dat_i),
		.m_dat_o(programmer_plug_wb_master_0_dat_o),
		.m_sel_o(programmer_plug_wb_master_0_sel_o),
		.m_stb_o(programmer_plug_wb_master_0_stb_o),
		.m_we_o(programmer_plug_wb_master_0_we_o),
		.reset(programmer_plug_reset_0_reset_i),
		.status_i()
	);
 wb_single_port_ram #(
 		.Dw(ram_Dw),
		.Aw(ram_Aw),
		.BYTE_WR_EN(ram_BYTE_WR_EN),
		.FPGA_VENDOR(ram_FPGA_VENDOR),
		.JTAG_CONNECT(ram_JTAG_CONNECT),
		.JTAG_INDEX(1),
		.TAGw(ram_TAGw),
		.SELw(ram_SELw),
		.CTIw(ram_CTIw),
		.BTEw(ram_BTEw),
		.BURST_MODE(ram_BURST_MODE),
		.MEM_CONTENT_FILE_NAME(ram_MEM_CONTENT_FILE_NAME),
		.INITIAL_EN(ram_INITIAL_EN),
		.INIT_FILE_PATH(ram_INIT_FILE_PATH)
	)  ram 	(
		.clk(ram_plug_clk_0_clk_i),
		.reset(ram_plug_reset_0_reset_i),
		.sa_ack_o(ram_plug_wb_slave_0_ack_o),
		.sa_addr_i(ram_plug_wb_slave_0_adr_i),
		.sa_bte_i(ram_plug_wb_slave_0_bte_i),
		.sa_cti_i(ram_plug_wb_slave_0_cti_i),
		.sa_cyc_i(ram_plug_wb_slave_0_cyc_i),
		.sa_dat_i(ram_plug_wb_slave_0_dat_i),
		.sa_dat_o(ram_plug_wb_slave_0_dat_o),
		.sa_err_o(ram_plug_wb_slave_0_err_o),
		.sa_rty_o(ram_plug_wb_slave_0_rty_o),
		.sa_sel_i(ram_plug_wb_slave_0_sel_i),
		.sa_stb_i(ram_plug_wb_slave_0_stb_i),
		.sa_tag_i(ram_plug_wb_slave_0_tag_i),
		.sa_we_i(ram_plug_wb_slave_0_we_i),
		.jtag_to_wb ( ), 
        .wb_to_jtag ( ) 
 
	);
 
 
 wishbone_bus #(
 		.M(bus_M),
		.S(bus_S),
		.Dw(bus_Dw),
		.Aw(bus_Aw),
		.SELw(bus_SELw),
		.TAGw(bus_TAGw),
		.CTIw(bus_CTIw),
		.BTEw(bus_BTEw)
	)  bus 	(
		.clk(bus_plug_clk_0_clk_i),
		.m_ack_o_all(bus_socket_wb_master_array_ack_o),
		.m_adr_i_all(bus_socket_wb_master_array_adr_i),
		.m_bte_i_all(bus_socket_wb_master_array_bte_i),
		.m_cti_i_all(bus_socket_wb_master_array_cti_i),
		.m_cyc_i_all(bus_socket_wb_master_array_cyc_i),
		.m_dat_i_all(bus_socket_wb_master_array_dat_i),
		.m_dat_o_all(bus_socket_wb_master_array_dat_o),
		.m_err_o_all(bus_socket_wb_master_array_err_o),
		.m_grant_addr(bus_socket_wb_addr_map_0_grant_addr),
		.m_rty_o_all(bus_socket_wb_master_array_rty_o),
		.m_sel_i_all(bus_socket_wb_master_array_sel_i),
		.m_stb_i_all(bus_socket_wb_master_array_stb_i),
		.m_tag_i_all(bus_socket_wb_master_array_tag_i),
		.m_we_i_all(bus_socket_wb_master_array_we_i),
		.reset(bus_plug_reset_0_reset_i),
		.s_ack_i_all(bus_socket_wb_slave_array_ack_i),
		.s_adr_o_all(bus_socket_wb_slave_array_adr_o),
		.s_bte_o_all(bus_socket_wb_slave_array_bte_o),
		.s_cti_o_all(bus_socket_wb_slave_array_cti_o),
		.s_cyc_o_all(bus_socket_wb_slave_array_cyc_o),
		.s_dat_i_all(bus_socket_wb_slave_array_dat_i),
		.s_dat_o_all(bus_socket_wb_slave_array_dat_o),
		.s_err_i_all(bus_socket_wb_slave_array_err_i),
		.s_rty_i_all(bus_socket_wb_slave_array_rty_i),
		.s_sel_o_all(bus_socket_wb_slave_array_sel_o),
		.s_sel_one_hot(bus_socket_wb_addr_map_0_sel_one_hot),
		.s_stb_o_all(bus_socket_wb_slave_array_stb_o),
		.s_tag_o_all(bus_socket_wb_slave_array_tag_o),
		.s_we_o_all(bus_socket_wb_slave_array_we_o),
		.snoop_adr_o(),
        .snoop_en_o()
	);
 
 
 
 	assign  programmer_plug_clk_0_clk_i = ss_socket_clk_0_clk_o;
 	assign  programmer_plug_wb_master_0_ack_i = bus_socket_wb_master_0_ack_o;
 	assign  bus_socket_wb_master_0_adr_i  = programmer_plug_wb_master_0_adr_o;
 	assign  bus_socket_wb_master_0_cti_i  = programmer_plug_wb_master_0_cti_o;
 	assign  bus_socket_wb_master_0_cyc_i  = programmer_plug_wb_master_0_cyc_o;
 	assign  programmer_plug_wb_master_0_dat_i = bus_socket_wb_master_0_dat_o[programmer_DW-1           :  0];
 	assign  bus_socket_wb_master_0_dat_i  = programmer_plug_wb_master_0_dat_o;
 	assign  bus_socket_wb_master_0_sel_i  = programmer_plug_wb_master_0_sel_o;
 	assign  bus_socket_wb_master_0_stb_i  = programmer_plug_wb_master_0_stb_o;
 	assign  bus_socket_wb_master_0_we_i  = programmer_plug_wb_master_0_we_o;
 	assign  programmer_plug_reset_0_reset_i = ss_socket_reset_0_reset_o;
 
 
 	assign  ram_plug_clk_0_clk_i = ss_socket_clk_0_clk_o;
 	assign  ram_plug_reset_0_reset_i = ss_socket_reset_0_reset_o;
 	assign  bus_socket_wb_slave_0_ack_i  = ram_plug_wb_slave_0_ack_o;
 	assign  ram_plug_wb_slave_0_adr_i = bus_socket_wb_slave_0_adr_o[ram_Aw-1       :   0];
 	assign  ram_plug_wb_slave_0_bte_i = bus_socket_wb_slave_0_bte_o[ram_BTEw-1     :   0];
 	assign  ram_plug_wb_slave_0_cti_i = bus_socket_wb_slave_0_cti_o[ram_CTIw-1     :   0];
 	assign  ram_plug_wb_slave_0_cyc_i = bus_socket_wb_slave_0_cyc_o;
 	assign  ram_plug_wb_slave_0_dat_i = bus_socket_wb_slave_0_dat_o[ram_Dw-1       :   0];
 	assign  bus_socket_wb_slave_0_dat_i  = ram_plug_wb_slave_0_dat_o;
 	assign  bus_socket_wb_slave_0_err_i  = ram_plug_wb_slave_0_err_o;
 	assign  bus_socket_wb_slave_0_rty_i  = ram_plug_wb_slave_0_rty_o;
 	assign  ram_plug_wb_slave_0_sel_i = bus_socket_wb_slave_0_sel_o[ram_SELw-1     :   0];
 	assign  ram_plug_wb_slave_0_stb_i = bus_socket_wb_slave_0_stb_o;
 	assign  ram_plug_wb_slave_0_tag_i = bus_socket_wb_slave_0_tag_o[ram_TAGw-1     :   0];
 	assign  ram_plug_wb_slave_0_we_i = bus_socket_wb_slave_0_we_o;
 
 
 	assign  bus_plug_clk_0_clk_i = ss_socket_clk_0_clk_o;
 	assign  bus_plug_reset_0_reset_i = ss_socket_reset_0_reset_o;
 
 	assign bus_socket_wb_master_0_ack_o = bus_socket_wb_master_array_ack_o;
 	assign bus_socket_wb_master_array_adr_i = bus_socket_wb_master_0_adr_i;
 	assign bus_socket_wb_master_array_bte_i = bus_socket_wb_master_0_bte_i;
 	assign bus_socket_wb_master_array_cti_i = bus_socket_wb_master_0_cti_i;
 	assign bus_socket_wb_master_array_cyc_i = bus_socket_wb_master_0_cyc_i;
 	assign bus_socket_wb_master_array_dat_i = bus_socket_wb_master_0_dat_i;
 	assign bus_socket_wb_master_0_dat_o = bus_socket_wb_master_array_dat_o;
 	assign bus_socket_wb_master_0_err_o = bus_socket_wb_master_array_err_o;
 	assign bus_socket_wb_master_0_rty_o = bus_socket_wb_master_array_rty_o;
 	assign bus_socket_wb_master_array_sel_i = bus_socket_wb_master_0_sel_i;
 	assign bus_socket_wb_master_array_stb_i = bus_socket_wb_master_0_stb_i;
 	assign bus_socket_wb_master_array_tag_i = bus_socket_wb_master_0_tag_i;
 	assign bus_socket_wb_master_array_we_i = bus_socket_wb_master_0_we_i;
 	assign bus_socket_wb_slave_array_ack_i = bus_socket_wb_slave_0_ack_i;
 	assign bus_socket_wb_slave_0_adr_o = bus_socket_wb_slave_array_adr_o;
 	assign bus_socket_wb_slave_0_bte_o = bus_socket_wb_slave_array_bte_o;
 	assign bus_socket_wb_slave_0_cti_o = bus_socket_wb_slave_array_cti_o;
 	assign bus_socket_wb_slave_0_cyc_o = bus_socket_wb_slave_array_cyc_o;
 	assign bus_socket_wb_slave_array_dat_i = bus_socket_wb_slave_0_dat_i;
 	assign bus_socket_wb_slave_0_dat_o = bus_socket_wb_slave_array_dat_o;
 	assign bus_socket_wb_slave_array_err_i = bus_socket_wb_slave_0_err_i;
 	assign bus_socket_wb_slave_array_rty_i = bus_socket_wb_slave_0_rty_i;
 	assign bus_socket_wb_slave_0_sel_o = bus_socket_wb_slave_array_sel_o;
 	assign bus_socket_wb_slave_0_stb_o = bus_socket_wb_slave_array_stb_o;
 	assign bus_socket_wb_slave_0_tag_o = bus_socket_wb_slave_array_tag_o;
 	assign bus_socket_wb_slave_0_we_o = bus_socket_wb_slave_array_we_o;
 
 
//Wishbone slave address match
 /* ram wb_slave 0 */
 	assign bus_socket_wb_addr_map_0_sel_one_hot[0] = ((bus_socket_wb_addr_map_0_grant_addr >= ram_WB0_BASE_ADDR)   & (bus_socket_wb_addr_map_0_grant_addr <= ram_WB0_END_ADDR));
 endmodule
 
 

Compare with Previous | Blame | View Log

powered by: WebSVN 2.1.0

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