cardbus_wrapper.tf

来自「VHDLVERILOG语言实现的CARDBUS的IP源码,已经实现现场应用」· TF 代码 · 共 829 行 · 第 1/3 页

TF
829
字号
	/*
	task target_access_pf(address, data, command, be, addr_parity,
                   data_parity, dword_count, initial_data_delay,
                   next_data_delay, m64bit, pass_fail, quiet);
	*/
	// DS added TEST CARDBUS FUNCTIONS
	$display("\n\nTest CardBus Wrapper Module at %0d\n\n", $time);
	//`include "cardbus_wrapper_test.tf"
	// --------------------------------------------------------//
	$display("\nTest Function Event Registers at %0d\n", $time);
	// --------------------------------------------------------//
	//read default values

	$display("Reading default values of all CSTSCHG-related registers at %0d", $time);	
	pad_wp <= 1'b0;			// bit 0
	pad_ready <= 1'b0;		// bit 1
	pad_bvd[2] <= 1'b0;		// bit 2
	pad_bvd[1] <= 1'b0;		// bit 3
	pad_gwake <= 1'b0;		// bit 4
	pad_intr <= 1'b0;		// bit 15

	repeat (5) @(posedge CLK);
	// read event register
	master_2.target_access_pf(CardBus_BAR+EVENT_OFFSET,32'h0,MEM_READ,8'hFF,1'b0,1'b0,1,1,1,1'b0, pass, 1'b0); 
	repeat (5) @(posedge CLK);
	// read event mask register
	master_2.target_access_pf(CardBus_BAR+MASK_OFFSET,32'h0,MEM_READ,8'hFF,1'b0,1'b0,1,1,1,1'b0, pass, 1'b0); 
	repeat (5) @(posedge CLK);
	// read present state register
	master_2.target_access_pf(CardBus_BAR+STATE_OFFSET,32'h0,MEM_READ,8'hFF,1'b0,1'b0,1,1,1,1'b0, pass, 1'b0); 
	repeat (5) @(posedge CLK);
	// read force event register
	master_2.target_access_pf(CardBus_BAR+FORCE_OFFSET,32'h0,MEM_READ,8'hFF,1'b0,1'b0,1,1,1,1'b0, pass, 1'b0); 

	repeat (5) @(posedge CLK);
	$display("Enabling all event sources for CSTSCHG generation at %0d", $time);
	master_2.target_access_pf(CardBus_BAR+MASK_OFFSET,32'hFFFFFFFF,MEM_WRITE,8'hFF,1'b0,1'b0,1,1,1,1'b0, pass, 1'b0); 

	/* ctu-------------------------
	CHANGE FIRST 3 BITS TO 1
	SO STATUS CHANGED SHOULD SHOW 1 
	AND PRESENT STATE IS ALSO 1
	---------------------------- */

	//change present state, read state and event, write to clear, read
	repeat (5) @(posedge CLK);
	$display("Toggling state inputs at %0d", $time);
	pad_wp <= 1'b1;			// bit 0
	pad_ready <= 1'b1;		// bit 1
	pad_bvd[2] <= 1'b1;		// bit 2
	pad_bvd[1] <= 1'b0;		// bit 3
	pad_gwake <= 1'b0;		// bit 4
	pad_intr <= 1'b0;		// bit 15
	repeat (5) @(posedge CLK);
	// read event register
	master_2.target_access_pf(CardBus_BAR+EVENT_OFFSET,32'h0007,MEM_READ,8'hFF,1'b0,1'b0,1,1,1,1'b0, pass, 1'b0); 
	repeat (5) @(posedge CLK);
	// read present state register
	master_2.target_access_pf(CardBus_BAR+STATE_OFFSET,32'h0007,MEM_READ,8'hFF,1'b0,1'b0,1,1,1,1'b0, pass, 1'b0); 
	repeat (5) @(posedge CLK);
	if (pad_CSTSCHG)
		$display("...CSTSCHG asserted, PASSED");
	else begin
		$display("...CSTSCHG not asserted, FAILED!!!!!!!!!!!");
		$stop;
	end
	$display("Clearing status change event notice...");
	master_2.target_access_pf(CardBus_BAR+EVENT_OFFSET,32'hFFFF,MEM_WRITE,8'hFF,1'b0,1'b0,1,1,1,1'b0, pass, 1'b0); 
	repeat (5) @(posedge CLK);
	if (!pad_CSTSCHG)
		$display("...CSTSCHG cleared, PASSED");
	else begin
		$display("...CSTSCHG not cleared, FAILED!!!!!!!!!!!");
		$stop;
	end

	/* ctu-------------------------
	CHANGE FIRST 3 BITS TO 0
	SO STATUS CHANGED SHOULD SHOW 1 
	AND PRESENT STATE IS 0
	---------------------------- */

	repeat (5) @(posedge CLK);
	$display("Toggling state inputs at %0d", $time);
	pad_wp <= 1'b0;			// bit 0
	pad_ready <= 1'b0;		// bit 1
	pad_bvd[2] <= 1'b0;		// bit 2
	pad_bvd[1] <= 1'b1;		// bit 3
	pad_gwake <= 1'b1;		// bit 4
	pad_intr <= 1'b1;		// bit 15
	repeat (5) @(posedge CLK);
	// read event register
	master_2.target_access_pf(CardBus_BAR+EVENT_OFFSET,32'h001F,MEM_READ,8'hFF,1'b0,1'b0,1,1,1,1'b0, pass, 1'b0); 
	repeat (5) @(posedge CLK);
	// read present state register
	master_2.target_access_pf(CardBus_BAR+STATE_OFFSET,32'h8018,MEM_READ,8'hFF,1'b0,1'b0,1,1,1,1'b0, pass, 1'b0); 
	repeat (5) @(posedge CLK);
	if (pad_CSTSCHG)
		$display("...CSTSCHG asserted, PASSED");
	else begin
		$display("...CSTSCHG not asserted, FAILED!!!!!!!!!!!");
		$stop;
	end
	$display("Clearing status change event notice...");
	master_2.target_access_pf(CardBus_BAR+EVENT_OFFSET,32'hFFFF,MEM_WRITE,8'hFF,1'b0,1'b0,1,1,1,1'b0, pass, 1'b0); 
	repeat (5) @(posedge CLK);
	if (!pad_CSTSCHG)
		$display("...CSTSCHG cleared, PASSED");
	else begin
		$display("...CSTSCHG not cleared, FAILED!!!!!!!!!!!");
		$stop;
	end

	/* ctu notes -------
	Test Event Function and Mask Register Events (6)
	------- */

	//enable and disable WKUP, change states, check event and interrupt
	pad_wp <= 1'b0;			// bit 0
	pad_ready <= 1'b0;		// bit 1
	pad_bvd[2] <= 1'b0;		// bit 2
	pad_bvd[1] <= 1'b0;		// bit 3
	pad_gwake <= 1'b0;		// bit 4
	pad_intr <= 1'b0;		// bit 15
	repeat (5) @(posedge CLK);
	$display("Masking event sources for CSTSCHG generation at %0d", $time);
	// enable WKUP and all sources
	master_2.target_access_pf(CardBus_BAR+MASK_OFFSET,32'hCFFF,MEM_WRITE,8'hFF,1'b0,1'b0,1,1,1,1'b0, pass, 1'b0); 
	repeat (2) @(posedge CLK);
	// read event register
	master_2.target_access_pf(CardBus_BAR+EVENT_OFFSET,32'h0018,MEM_READ,8'hFF,1'b0,1'b0,1,1,1,1'b0, pass, 1'b0); 
	repeat (2) @(posedge CLK);
	// read present state register
	master_2.target_access_pf(CardBus_BAR+STATE_OFFSET,32'h0,MEM_READ,8'hFF,1'b0,1'b0,1,1,1,1'b0, pass, 1'b0); 
	repeat (5) @(posedge CLK);
	if (pad_CSTSCHG)
		$display("...Event#1 detected and CSTSCHG asserted, PASSED");
	else begin
		$display("...CSTSCHG not asserted, FAILED!!!!!!!!!!!");
		$stop;
	end
	// disable WKUP (CSTSCHG will not be flagged)
	master_2.target_access_pf(CardBus_BAR+MASK_OFFSET,32'h8FFF,MEM_WRITE,8'hFF,1'b0,1'b0,1,1,1,1'b0, pass, 1'b0); 
	if (!pad_CSTSCHG)
		$display("...Event#2 detected and CSTSCHG not asserted, PASSED");
	else begin
		$display("...CSTSCHG asserted, FAILED!!!!!!!!!!!");
		$stop;
	end

	//write to mask, change present states, read to make sure updated but no interrupt
	repeat (2) @(posedge CLK);
	// clear event notice
	master_2.target_access_pf(CardBus_BAR+EVENT_OFFSET,32'hFFFF,MEM_WRITE,8'hFF,1'b0,1'b0,1,1,1,1'b0, pass, 1'b0); 
	pad_wp <= 1'b1;			// bit 0 event
	repeat (2) @(posedge CLK);
	// enable WKUP and enable all but WP
	master_2.target_access_pf(CardBus_BAR+MASK_OFFSET,32'hC01E,MEM_WRITE,8'hFF,1'b0,1'b0,1,1,1,1'b0, pass, 1'b0); 
	repeat (2) @(posedge CLK);
	// read event register
	master_2.target_access_pf(CardBus_BAR+EVENT_OFFSET,32'h1,MEM_READ,8'hFF,1'b0,1'b0,1,1,1,1'b0, pass, 1'b0); 
	repeat (2) @(posedge CLK);
	// read present state register
	master_2.target_access_pf(CardBus_BAR+STATE_OFFSET,32'h1,MEM_READ,8'hFF,1'b0,1'b0,1,1,1,1'b0, pass, 1'b0); 
	if (!pad_CSTSCHG)
		$display("...Event#3 detected and CSTSCHG not asserted, PASSED");
	else begin
		$display("...CSTSCHG asserted, FAILED!!!!!!!!!!!");
		$stop;
	end

	repeat (2) @(posedge CLK);
	// clear event notice
	master_2.target_access_pf(CardBus_BAR+EVENT_OFFSET,32'hFFFF,MEM_WRITE,8'hFF,1'b0,1'b0,1,1,1,1'b0, pass, 1'b0); 
	pad_ready <= 1'b1;		// bit 1 event
	repeat (2) @(posedge CLK);
	// enable WKUP and enable all but READY
	master_2.target_access_pf(CardBus_BAR+MASK_OFFSET,32'hC01D,MEM_WRITE,8'hFF,1'b0,1'b0,1,1,1,1'b0, pass, 1'b0); 
	repeat (2) @(posedge CLK);
	// read event register
	master_2.target_access_pf(CardBus_BAR+EVENT_OFFSET,32'h2,MEM_READ,8'hFF,1'b0,1'b0,1,1,1,1'b0, pass, 1'b0); 
	repeat (2) @(posedge CLK);
	// read present state register
	master_2.target_access_pf(CardBus_BAR+STATE_OFFSET,32'h3,MEM_READ,8'hFF,1'b0,1'b0,1,1,1,1'b0, pass, 1'b0); 
	if (!pad_CSTSCHG)
		$display("...Event#4 detected and CSTSCHG not asserted, PASSED");
	else begin
		$display("...CSTSCHG asserted, FAILED!!!!!!!!!!!");
		$stop;
	end

	repeat (2) @(posedge CLK);
	// clear event notice
	master_2.target_access_pf(CardBus_BAR+EVENT_OFFSET,32'hFFFF,MEM_WRITE,8'hFF,1'b0,1'b0,1,1,1,1'b0, pass, 1'b0); 
	pad_bvd[2:1] <= 2'b01;		// bit 2/3 event
	repeat (2) @(posedge CLK);
	// enable WKUP and enable all but BVD
	master_2.target_access_pf(CardBus_BAR+MASK_OFFSET,32'hC013,MEM_WRITE,8'hFF,1'b0,1'b0,1,1,1,1'b0, pass, 1'b0); 
	repeat (2) @(posedge CLK);
	// read event register
	master_2.target_access_pf(CardBus_BAR+EVENT_OFFSET,32'h8,MEM_READ,8'hFF,1'b0,1'b0,1,1,1,1'b0, pass, 1'b0); 
	repeat (2) @(posedge CLK);
	// read present state register
	master_2.target_access_pf(CardBus_BAR+STATE_OFFSET,32'hB,MEM_READ,8'hFF,1'b0,1'b0,1,1,1,1'b0, pass, 1'b0); 
	if (!pad_CSTSCHG)
		$display("...Event#5 detected and CSTSCHG not asserted, PASSED");
	else begin
		$display("...CSTSCHG asserted, FAILED!!!!!!!!!!!");
		$stop;
	end

	repeat (2) @(posedge CLK);
	// clear event notice
	master_2.target_access_pf(CardBus_BAR+EVENT_OFFSET,32'hFFFF,MEM_WRITE,8'hFF,1'b0,1'b0,1,1,1,1'b0, pass, 1'b0); 
	pad_gwake <= 1'b1;		// bit 4 event
	repeat (2) @(posedge CLK);
	// enable WKUP and enable all but GWAKE
	master_2.target_access_pf(CardBus_BAR+MASK_OFFSET,32'hC00F,MEM_WRITE,8'hFF,1'b0,1'b0,1,1,1,1'b0, pass, 1'b0); 
	repeat (2) @(posedge CLK);
	// read event register
	master_2.target_access_pf(CardBus_BAR+EVENT_OFFSET,32'h10,MEM_READ,8'hFF,1'b0,1'b0,1,1,1,1'b0, pass, 1'b0); 
	repeat (2) @(posedge CLK);
	// read present state register
	master_2.target_access_pf(CardBus_BAR+STATE_OFFSET,32'h1B,MEM_READ,8'hFF,1'b0,1'b0,1,1,1,1'b0, pass, 1'b0); 
	if (!pad_CSTSCHG)
		$display("...Event#6 detected and CSTSCHG not asserted, PASSED");
	else begin
		$display("...CSTSCHG asserted, FAILED!!!!!!!!!!!");
		$stop;
	end

	/* ctu notes -------
	Test Force Function Events (3)
	------- */

	//enable and disable WKUP, force states, check event and interrupt
	$display("Force Function Events at %0d", $time);
	repeat (2) @(posedge CLK);
	// clear event notice
	master_2.target_access_pf(CardBus_BAR+EVENT_OFFSET,32'hFFFF,MEM_WRITE,8'hFF,1'b0,1'b0,1,1,1,1'b0, pass, 1'b0); 
	repeat (2) @(posedge CLK);
	// enable WKUP and all sources
	master_2.target_access_pf(CardBus_BAR+MASK_OFFSET,32'hC01F,MEM_WRITE,8'hFF,1'b0,1'b0,1,1,1,1'b0, pass, 1'b0); 
	repeat (2) @(posedge CLK);
	// force events
	master_2.target_access_pf(CardBus_BAR+FORCE_OFFSET,32'h0011,MEM_WRITE,8'hFF,1'b0,1'b0,1,1,1,1'b0, pass, 1'b0); 
	repeat (2) @(posedge CLK);
	// read event register
	master_2.target_access_pf(CardBus_BAR+EVENT_OFFSET,32'h0011,MEM_READ,8'hFF,1'b0,1'b0,1,1,1,1'b0, pass, 1'b0); 
	repeat (2) @(posedge CLK);
	if (pad_CSTSCHG)
		$display("...Event#1 forced and CSTSCHG asserted, PASSED");
	else begin
		$display("...CSTSCHG not asserted, FAILED!!!!!!!!!!!");
		$stop;
	end
	repeat (2) @(posedge CLK);
	// force events
	master_2.target_access_pf(CardBus_BAR+FORCE_OFFSET,32'h8007,MEM_WRITE,8'hFF,1'b0,1'b0,1,1,1,1'b0, pass, 1'b0); 
	repeat (2) @(posedge CLK);
	// read event register
	master_2.target_access_pf(CardBus_BAR+EVENT_OFFSET,32'h8017,MEM_READ,8'hFF,1'b0,1'b0,1,1,1,1'b0, pass, 1'b0); 
	repeat (2) @(posedge CLK);
	if (pad_CSTSCHG)
		$display("...Event#2 forced and CSTSCHG asserted, PASSED");
	else begin
		$display("...CSTSCHG not asserted, FAILED!!!!!!!!!!!");
		$stop;
	end
	repeat (2) @(posedge CLK);
	// disable WKUP and enable all sources
	master_2.target_access_pf(CardBus_BAR+MASK_OFFSET,32'h801F,MEM_WRITE,8'hFF,1'b0,1'b0,1,1,1,1'b0, pass, 1'b0); 
	repeat (2) @(posedge CLK);
	// force events
	master_2.target_access_pf(CardBus_BAR+FORCE_OFFSET,32'h8,MEM_WRITE,8'hFF,1'b0,1'b0,1,1,1,1'b0, pass, 1'b0); 
	repeat (2) @(posedge CLK);
	// read event register

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?