OpenCores
URL https://opencores.org/ocsvn/kiss-board/kiss-board/trunk

Subversion Repositories kiss-board

[/] [kiss-board/] [trunk/] [kiss-board_soc/] [sim/] [inc/] [test.inc.v] - Rev 11

Compare with Previous | Blame | View Log

 
//`define CLK_PERIOD	100_000
//`define CLK_OFFSET	0_000
//`define MISC_OFFSET 	70_000
 
`define CLK_PERIOD	50_000
`define CLK_OFFSET	 0_000
`define MISC_OFFSET 	 5_000
 
	// Terminal
	wire		t_sys_reset_n;
	wire		t_sys_init_n;
	wire		t_sys_clk0;
	wire		t_sys_clk1;
	wire		t_sys_clk2;
	wire		t_sys_clk3;
	//
	//wire		t_jtag_tms;
	//wire		t_jtag_tck;
	//wire		t_jtag_trst;
	//wire		t_jtag_tdi;
	//wire		t_jtag_tdo;
	//
	wire		t_uart_txd;
	wire		t_uart_rxd;
	wire		t_uart_rts_n;
	wire		t_uart_cts_n;
	wire		t_uart_dtr_n;
	wire		t_uart_dsr_n;
	wire		t_uart_dcd_n;
	wire		t_uart_ri_n;
	//
	wire		t_mem_cs2_rstdrv;
	wire		t_mem_cs2_int;
	wire		t_mem_cs2_dir;
	wire		t_mem_cs2_g_n;
	wire		t_mem_cs2_n;
	wire		t_mem_cs2_iochrdy;
	wire		t_mem_cs1_rst_n;
	wire		t_mem_cs1_n;
	wire		t_mem_cs1_rdy;
	wire		t_mem_cs0_n;
	wire		t_mem_we_n;
	wire		t_mem_oe_n;
	wire	[22:0]	t_mem_a;
	wire	[7:0]	t_mem_d;
	//
	//wire		t_sram_r_cen;
	//wire		t_sram_r0_wen;
	//wire		t_sram_r1_wen;
	//wire		t_sram_r_oen;
	//wire	[18:0]	t_sram_r_a;
	//wire	[15:0]	t_sram_r_d;
	//wire		t_sram_l_cen;
	//wire		t_sram_l0_wen;
	//wire		t_sram_l1_wen;
	//wire		t_sram_l_oen;
	//wire	[18:0]	t_sram_l_a;
	//wire	[15:0]	t_sram_l_d;
	//
	wire			t_sdram0_clk;
	wire		#2_000	t_sdram0_cke;
	wire	[1:0]	#2_000	t_sdram0_cs_n;
	wire		#2_000	t_sdram0_ras_n;
	wire		#2_000	t_sdram0_cas_n;
	wire		#2_000	t_sdram0_we_n;
	wire	[1:0]	#2_000	t_sdram0_dqm;
	wire	[1:0]	#2_000	t_sdram0_ba;
	wire	[12:0]	#2_000	t_sdram0_a;
	wire	[15:0]	#2_000	t_sdram0_d;
	//
	wire		t_sdram1_clk;
	wire		#2_000	t_sdram1_cke;
	wire	[1:0]	#2_000	t_sdram1_cs_n;
	wire		#2_000	t_sdram1_ras_n;
	wire		#2_000	t_sdram1_cas_n;
	wire		#2_000	t_sdram1_we_n;
	wire	[1:0]	#2_000	t_sdram1_dqm;
	wire	[1:0]	#2_000	t_sdram1_ba;
	wire	[12:0]	#2_000	t_sdram1_a;
	wire	[15:0]	#2_000	t_sdram1_d;
	//
	wire		t_vga_clkp;
	wire		t_vga_clkn;
	wire		t_vga_hsync;
	wire		t_vga_vsync;
	wire		t_vga_blank;
	wire	[23:0]	t_vga_d;
	//
	wire	[3:0]	t_misc_gpio;
	wire		t_misc_tp;
 
	// Register
	reg		r_clk;
	reg		r_res_n;
	//reg		r_jtag_tms;
	//reg		r_jtag_tck;
	//reg		r_jtag_trst;
	//reg		r_jtag_tdi;
	reg		r_uart_data;
	reg		r_uart_dsr_n;
	always	begin
		r_clk = 1'b1;
		#( `CLK_PERIOD / 2 );
		r_clk = 1'b0;
		#( `CLK_PERIOD - ( `CLK_PERIOD / 2 ) );
	end
	initial begin
	// system
		r_res_n		= 1'b0;
	// jtag
		//r_jtag_tms	= 1'b0;
		//r_jtag_tck	= 1'b0;
		//r_jtag_trst	= 1'b0;
		//r_jtag_tdi	= 1'b0;
	// uart
		r_uart_data	= 1'b1;
		r_uart_dsr_n	= 1'b1;
	end
 
	// task
	task task_reset;
	begin
		@(posedge r_clk) r_res_n <= 1'b0;
		@(posedge r_clk) r_res_n <= 1'b1;
	end
	endtask
 
	task task_idle;
		input	[31:0]	n;
		reg	[31:0]	i;
		for (i=0;i<n;i=i+1) @(posedge r_clk);
	endtask
 
	task task_uart_data;
		input	[7:0]	d;
		integer		i;
	begin
		// start
		r_uart_data <= 1'b0;
		task_idle(1024);
		// data
		for (i=0;i<8;i=i+1) begin
			r_uart_data = d[i];
			task_idle(1024);
		end
		// stop
		r_uart_data <= 1'b1;
		task_idle(1024);
	end
	endtask
	task task_uart_dsr_n;
		input		d;
	begin
		task_idle(1);
		r_uart_dsr_n <= d;
		task_idle(1);
	end
	endtask
 
// sys assign
	assign #(`MISC_OFFSET) t_sys_reset_n	= r_res_n;
	assign #(`CLK_OFFSET)  t_sys_clk0	= r_clk;
	assign #(`CLK_OFFSET)  t_sys_clk1	= 1'b0;
	assign #(`CLK_OFFSET)  t_sys_clk2	= 1'b0;
	assign #(`CLK_OFFSET)  t_sys_clk3	= 1'b0;
 
// uart assign
	//assign t_uart_rxd			= t_uart_txd;	// uart loopbacked
	//assign t_uart_rxd			= 1'b1;		// uart clamp
	assign t_uart_rxd			= r_uart_data;	// uart
	assign t_uart_cts_n			= 1'b1;
	assign t_uart_dsr_n			= r_uart_dsr_n;
	assign t_uart_dcd_n			= 1'b1;
	assign t_uart_ri_n			= 1'b1;
 
// mem assign
	assign t_mem_cs2_int			= 1'b0;
	assign t_mem_cs2_iochrdy		= 1'b0;
	assign t_mem_cs1_rdy			= 1'b0;
 
// misc assign
	assign t_misc_gpio			= 4'b0110;
 
// jtag assign	
	//assign #(`MISC_OFFSET) t_jtag_tms  = r_jtag_tms;
	//assign #(`MISC_OFFSET) t_jtag_tck  = r_jtag_tck;
	//assign #(`MISC_OFFSET) t_jtag_trst = r_jtag_trst;
	//assign #(`MISC_OFFSET) t_jtag_tdi  = r_jtag_tdi;
 
	//A512Kx8 sram_r0 (
	//	.CE_bar(	t_sram_r_cen),
	//	.OE_bar(	t_sram_r_oen),
	//	.WE_bar(	t_sram_r0_wen),
	//	.dataIO(	t_sram_r_d[7:0]),
	//	.Address(	t_sram_r_a)
	//);
	//A512Kx8 sram_r1 (
	//	.CE_bar(	t_sram_r_cen),
	//	.OE_bar(	t_sram_r_oen),
	//	.WE_bar(	t_sram_r1_wen),
	//	.dataIO(	t_sram_r_d[15:8]),
	//	.Address(	t_sram_r_a)
	//);
	//A512Kx8 sram_l0 (
	//	.CE_bar(	t_sram_l_cen),
	//	.OE_bar(	t_sram_l_oen),
	//	.WE_bar(	t_sram_l0_wen),
	//	.dataIO(	t_sram_l_d[7:0]),
	//	.Address(	t_sram_l_a)
	//);
	//A512Kx8 sram_l1 (
	//	.CE_bar(	t_sram_l_cen),
	//	.OE_bar(	t_sram_l_oen),
	//	.WE_bar(	t_sram_l1_wen),
	//	.dataIO(	t_sram_l_d[15:8]),
	//	.Address(	t_sram_l_a)
	//);
/*
	ram sram_r0 (
		.cex(		t_sram_r_cen),
		.oex(		t_sram_r_oen),
		.wex(		t_sram_r0_wen),
		.data(		t_sram_r_d[7:0]),
		.address(	t_sram_r_a)
	);
	ram sram_r1 (
		.cex(		t_sram_r_cen),
		.oex(		t_sram_r_oen),
		.wex(		t_sram_r1_wen),
		.data(		t_sram_r_d[15:8]),
		.address(	t_sram_r_a)
	);
	ram sram_l0 (
		.cex(		t_sram_l_cen),
		.oex(		t_sram_l_oen),
		.wex(		t_sram_l0_wen),
		.data(		t_sram_l_d[7:0]),
		.address(	t_sram_l_a)
	);
	ram sram_l1 (
		.cex(		t_sram_l_cen),
		.oex(		t_sram_l_oen),
		.wex(		t_sram_l1_wen),
		.data(		t_sram_l_d[15:8]),
		.address(	t_sram_l_a)
	);
*/
/*
	SDRAM i0_H_SDRAM (
		.SD_BA(		t_sdram0_ba),
		.SD_ADR(	t_sdram0_a),
		.SD_CS(		t_sdram0_cs_n[0]),
		.SD_RAS(	t_sdram0_ras_n),
		.SD_CAS(	t_sdram0_cas_n),
		.SD_WE(		t_sdram0_we_n),
		.SD_DQM(	t_sdram0_dqm[1]),
		.SD_CKE(	t_sdram0_cke),
		.SD_CLK(	t_sdram0_clk),
		.SD_DAT(	t_sdram0_d[15:8])
	);
	SDRAM i0_L_SDRAM (
		.SD_BA(		t_sdram0_ba),
		.SD_ADR(	t_sdram0_a),
		.SD_CS(		t_sdram0_cs_n[0]),
		.SD_RAS(	t_sdram0_ras_n),
		.SD_CAS(	t_sdram0_cas_n),
		.SD_WE(		t_sdram0_we_n),
		.SD_DQM(	t_sdram0_dqm[0]),
		.SD_CKE(	t_sdram0_cke),
		.SD_CLK(	t_sdram0_clk),
		.SD_DAT(	t_sdram0_d[7:0])
	);
	SDRAM i1_H_SDRAM (
		.SD_BA(		t_sdram1_ba),
		.SD_ADR(	t_sdram1_a),
		.SD_CS(		t_sdram1_cs_n[0]),
		.SD_RAS(	t_sdram1_ras_n),
		.SD_CAS(	t_sdram1_cas_n),
		.SD_WE(		t_sdram1_we_n),
		.SD_DQM(	t_sdram1_dqm[1]),
		.SD_CKE(	t_sdram1_cke),
		.SD_CLK(	t_sdram1_clk),
		.SD_DAT(	t_sdram1_d[15:8])		
	);
	SDRAM i1_L_SDRAM (
		.SD_BA(		t_sdram1_ba),
		.SD_ADR(	t_sdram1_a),
		.SD_CS(		t_sdram1_cs_n[0]),
		.SD_RAS(	t_sdram1_ras_n),
		.SD_CAS(	t_sdram1_cas_n),
		.SD_WE(		t_sdram1_we_n),
		.SD_DQM(	t_sdram1_dqm[0]),
		.SD_CKE(	t_sdram1_cke),
		.SD_CLK(	t_sdram1_clk),
		.SD_DAT(	t_sdram1_d[7:0])		
	);
*/
	initial force i_sdram0_cs0.Debug = 0;
	mt48lc8m16a2 i_sdram0_cs0 (
		.Dq(	t_sdram0_d),
		.Addr(	t_sdram0_a[11:0]),
		.Ba(	t_sdram0_ba),
		.Clk(	t_sdram0_clk),
		.Cke(	t_sdram0_cke),
		.Cs_n(	t_sdram0_cs_n[0]),
		.Ras_n(	t_sdram0_ras_n),
		.Cas_n(	t_sdram0_cas_n),
		.We_n(	t_sdram0_we_n),
		.Dqm(	t_sdram0_dqm)
	);
	initial force i_sdram0_cs1.Debug = 0;
	mt48lc8m16a2 i_sdram0_cs1 (
		.Dq(	t_sdram0_d),
		.Addr(	t_sdram0_a[11:0]),
		.Ba(	t_sdram0_ba),
		.Clk(	t_sdram0_clk),
		.Cke(	t_sdram0_cke),
		.Cs_n(	t_sdram0_cs_n[1]),
		.Ras_n(	t_sdram0_ras_n),
		.Cas_n(	t_sdram0_cas_n),
		.We_n(	t_sdram0_we_n),
		.Dqm(	t_sdram0_dqm)
	);
	initial force i_sdram1_cs0.Debug = 0;
	mt48lc8m16a2 i_sdram1_cs0 (
		.Dq(	t_sdram1_d),
		.Addr(	t_sdram1_a[11:0]),
		.Ba(	t_sdram1_ba),
		.Clk(	t_sdram1_clk),
		.Cke(	t_sdram1_cke),
		.Cs_n(	t_sdram1_cs_n[0]),
		.Ras_n(	t_sdram1_ras_n),
		.Cas_n(	t_sdram1_cas_n),
		.We_n(	t_sdram1_we_n),
		.Dqm(	t_sdram1_dqm)
	);
	initial force i_sdram1_cs1.Debug = 0;
	mt48lc8m16a2 i_sdram1_cs1 (
		.Dq(	t_sdram1_d),
		.Addr(	t_sdram1_a[11:0]),
		.Ba(	t_sdram1_ba),
		.Clk(	t_sdram1_clk),
		.Cke(	t_sdram1_cke),
		.Cs_n(	t_sdram1_cs_n[1]),
		.Ras_n(	t_sdram1_ras_n),
		.Cas_n(	t_sdram1_cas_n),
		.We_n(	t_sdram1_we_n),
		.Dqm(	t_sdram1_dqm)
	);
/*
	sdram i_sdram0_cs0 (
		.dqi(	t_sdram0_d),
		.ad(	t_sdram0_a[11:0]),
		.ba(	t_sdram0_ba),
		.clk(	t_sdram0_clk),
		.cke(	t_sdram0_cke),
		.csb(	t_sdram0_cs_n[0]),
		.rasb(	t_sdram0_ras_n),
		.casb(	t_sdram0_cas_n),
		.web(	t_sdram0_we_n),
		.dqm(	t_sdram0_dqm)
	);
	sdram i_sdram0_cs1 (
		.dqi(	t_sdram0_d),
		.ad(	t_sdram0_a[11:0]),
		.ba(	t_sdram0_ba),
		.clk(	t_sdram0_clk),
		.cke(	t_sdram0_cke),
		.csb(	t_sdram0_cs_n[1]),
		.rasb(	t_sdram0_ras_n),
		.casb(	t_sdram0_cas_n),
		.web(	t_sdram0_we_n),
		.dqm(	t_sdram0_dqm)
	);
	sdram i_sdram1_cs0 (
		.dqi(	t_sdram1_d),
		.ad(	t_sdram1_a[11:0]),
		.ba(	t_sdram1_ba),
		.clk(	t_sdram1_clk),
		.cke(	t_sdram1_cke),
		.csb(	t_sdram1_cs_n[0]),
		.rasb(	t_sdram1_ras_n),
		.casb(	t_sdram1_cas_n),
		.web(	t_sdram1_we_n),
		.dqm(	t_sdram1_dqm)
	);
	sdram i_sdram1_cs1 (
		.dqi(	t_sdram1_d),
		.ad(	t_sdram1_a[11:0]),
		.ba(	t_sdram1_ba),
		.clk(	t_sdram1_clk),
		.cke(	t_sdram1_cke),
		.csb(	t_sdram1_cs_n[1]),
		.rasb(	t_sdram1_ras_n),
		.casb(	t_sdram1_cas_n),
		.web(	t_sdram1_we_n),
		.dqm(	t_sdram1_dqm)
	);
*/	
	//i28f016s3 flash (
	//	.rpb(		t_flash_rstn),
	//	.ceb(		t_flash_cen),
	//	.oeb(		t_flash_oen),
	//	.web(		t_flash_wen),
	//	.ryby(		t_flash_rdy),
	//	.dq(		t_flash_d),
	//	.addr(		t_flash_a),
	//	.vpp(		32'h00002ee0/* flash_vpp */),
	//	.vcc(		32'h00001388/* flash_vcc */),
	//	.rpblevel(	2'b10/*flash_rpblevel*/)
	//);
	rom i_flash (
		.cex(		t_mem_cs0_n),
		.oex(		t_mem_oe_n),
		.data(		t_mem_d),
		.address(	t_mem_a[20:0])
	);
 
	tessera_top i_tessera_top (
		//
		.sys_reset_n(		t_sys_reset_n),
		.sys_init_n(		t_sys_init_n),
		.sys_clk0(		t_sys_clk0),
		.sys_clk1(		t_sys_clk1),
		.sys_clk2(		t_sys_clk2),
		.sys_clk3(		t_sys_clk3),
		//
		//.jtag_tms(		t_jtag_tms),
		//.jtag_tck(		t_jtag_tck),
		//.jtag_trst(		t_jtag_trst),
		//.jtag_tdi(		t_jtag_tdi),
		//.jtag_tdo(		t_jtag_tdo),
		//
		.uart_txd(		t_uart_txd),
		.uart_rxd(		t_uart_rxd),
		.uart_rts_n(		t_uart_rts_n),
		.uart_cts_n(		t_uart_cts_n),
		.uart_dtr_n(		t_uart_dtr_n),
		.uart_dsr_n(		t_uart_dsr_n),
		.uart_dcd_n(		t_uart_dcd_n),
		.uart_ri_n(		t_uart_ri_n),
		//
		.mem_cs2_rstdrv(	t_mem_cs2_rstdrv),
		.mem_cs2_int(		t_mem_cs2_int),
		.mem_cs2_dir(		t_mem_cs2_dir),
		.mem_cs2_g_n(		t_mem_cs2_g_n),
		.mem_cs2_n( 		t_mem_cs2_n),
		.mem_cs2_iochrdy(	t_mem_cs2_iochrdy),
		.mem_cs1_rst_n(		t_mem_cs1_rst_n),
		.mem_cs1_n(		t_mem_cs1_n),
		.mem_cs1_rdy(		t_mem_cs1_rdy),
		.mem_cs0_n(		t_mem_cs0_n),
		.mem_we_n(		t_mem_we_n),
		.mem_oe_n(		t_mem_oe_n),
		.mem_a( 		t_mem_a),
		.mem_d(			t_mem_d),
		//	
		.sdram0_clk(		t_sdram0_clk),
		.sdram0_cke(		t_sdram0_cke),
		.sdram0_cs_n(		t_sdram0_cs_n),
		.sdram0_ras_n(		t_sdram0_ras_n),
		.sdram0_cas_n(		t_sdram0_cas_n),
		.sdram0_we_n(		t_sdram0_we_n),
		.sdram0_dqm(		t_sdram0_dqm),
		.sdram0_ba(		t_sdram0_ba),
		.sdram0_a(		t_sdram0_a),
		.sdram0_d(		t_sdram0_d),
		//
		.sdram1_clk(		t_sdram1_clk),
		.sdram1_cke(		t_sdram1_cke),
		.sdram1_cs_n(		t_sdram1_cs_n),
		.sdram1_ras_n(		t_sdram1_ras_n),
		.sdram1_cas_n(		t_sdram1_cas_n),
		.sdram1_we_n(		t_sdram1_we_n),
		.sdram1_dqm(		t_sdram1_dqm),
		.sdram1_ba(		t_sdram1_ba),
		.sdram1_a(		t_sdram1_a),
		.sdram1_d(		t_sdram1_d),
		//
		.vga_clkp(		t_vga_clkp),
		.vga_clkn(		t_vga_clkn),
		.vga_hsync(		t_vga_hsync),
		.vga_vsync(		t_vga_vsync),
		.vga_blank(		t_vga_blank),
		.vga_d(			t_vga_d),
		//
		.misc_gpio(		t_misc_gpio),
		.misc_tp(		t_misc_tp)
	);
	//dbg_comm2 dbg_comm2(
	//	.P_TMS(		t_jtag_tms),
	//	.P_TCK(		t_jtag_tck),
	//	.P_TRST(	t_jtag_trst),
	//	.P_TDI(		t_jtag_tdi),
	//	.P_TDO(		t_jtag_tdo)
	//);
// sim
	integer	sim_cycle_current;
	initial sim_cycle_current = 0;
	parameter sim_cycle_max = 30000000;
	always @(posedge r_clk) sim_cycle_current <= sim_cycle_current + 1;
	always @(posedge r_clk) if (sim_cycle_max==sim_cycle_current) $stop;
 
// monitor VGA-RAM
	wire			vga_triger;
	wire			vga_clk;
	wire			vga_clk_delay1;
	wire			vga_clk_delay2;
	wire	[31:0]		vga_address;
	wire	[15:0]		vga_data;
	wire	[(32+16)-1:0]	vga_dump;
	// risky routin
	assign vga_clk			= i_sdram1_cs0.Sys_clk;
	assign #1 vga_clk_delay1	= vga_clk;
	assign #1 vga_clk_delay2	= vga_clk_delay1;
	assign vga_triger		= (vga_clk_delay1&&!vga_clk_delay2) && i_sdram1_cs0.Data_in_enable;
	assign vga_address		= {i_sdram1_cs0.Bank,i_sdram1_cs0.Row,i_sdram1_cs0.Col};
	assign vga_data			= i_sdram1_cs0.Dq_dqm;
	assign vga_dump			= {vga_address,vga_data};
	initial #1 $pan(vga_triger,vga_dump,"./c/ram/ram monitor_ram"/*"cat - >./vga.log"*/);
	//initial #1 $pan(vga_triger,vga_dump,"cat - >./vga.log");
 
//
// debug
//
	reg			stack_push;
	always @(posedge i_tessera_top.i_tessera_core.sys_wb_clk)
		stack_push <=
       			i_tessera_top.i_tessera_core.wb_ram1s_cyc_i &
       			i_tessera_top.i_tessera_core.wb_ram1s_stb_i &
       			i_tessera_top.i_tessera_core.wb_ram1s_we_i &
			(i_tessera_top.i_tessera_core.wb_ram1s_adr_i<=32'h0100_2000) &
			(i_tessera_top.i_tessera_core.wb_ram1s_adr_i>=32'h0100_1000);
	reg			stack_pop;
	always @(posedge i_tessera_top.i_tessera_core.sys_wb_clk)
		stack_pop <=
       			i_tessera_top.i_tessera_core.wb_ram1s_cyc_i &
       			i_tessera_top.i_tessera_core.wb_ram1s_stb_i &
       			!i_tessera_top.i_tessera_core.wb_ram1s_we_i &
			(i_tessera_top.i_tessera_core.wb_ram1s_adr_i<=32'h0100_2000) &
			(i_tessera_top.i_tessera_core.wb_ram1s_adr_i>=32'h0100_1000);
	reg			stack_check;
	always @(posedge i_tessera_top.i_tessera_core.sys_wb_clk)
		stack_check <=
       			i_tessera_top.i_tessera_core.wb_ram1s_cyc_i &
       			i_tessera_top.i_tessera_core.wb_ram1s_stb_i &
			(i_tessera_top.i_tessera_core.wb_ram1s_adr_i==32'h0100_1fb0);
 
//
//
//
/*	wire			debug_triger;
	wire			debug_clk;
	wire			debug_clk_delay1;
	wire			debug_clk_delay2;
	wire	[31:0]		debug_address;
	wire	[15:0]		debug_data;
	reg			debug_hit;
	assign debug_clk		= i_sdram0_cs0.Sys_clk;
	assign #1 debug_clk_delay1	= debug_clk;
	assign #1 debug_clk_delay2	= debug_clk_delay1;
	assign debug_triger		= (debug_clk_delay1&&!debug_clk_delay2) && i_sdram0_cs0.Data_in_enable;
	assign debug_address		= {i_sdram0_cs0.Bank,i_sdram0_cs0.Row,i_sdram0_cs0.Col};
	assign debug_data		= i_sdram0_cs0.Dq_dqm;
	always @(posedge debug_clk)
		debug_hit <= (debug_address==32'h0000_0004);
*/	
 

Compare with Previous | Blame | View Log

powered by: WebSVN 2.1.0

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