UPGRADE YOUR BROWSER

We have detected your current browser version is not the latest one. Xilinx.com uses the latest web technologies to bring you the best online experience possible. Please upgrade to a Xilinx.com supported browser:Chrome, Firefox, Internet Explorer 11, Safari. Thank you!

cancel
Showing results for 
Search instead for 
Did you mean: 
Highlighted
Observer wanqingxilinx
Observer
119 Views
Registered: ‎01-22-2008

Why is MSI Data Message not Changed as Each intx_msi_request is Granted?

With the following MSI configuration is simulation for "AXI Bridge for PCI Express Gen3 Subsystem v3.0 PG194" ip core (configured as endpoint), I hope to see the MSI Message Data change from the memory address 32'h0000001c indicated by MSI Message Address Register at 94h as interrupt message is sent to the RP. However, I do not see it changing. It is always 0x00000000 at address  32'h0000001c. Could you please help to see if there is anything wrong in the configuration? I am able to see intx_msi_grant pulse for each intx_msi_request pulse. Thanks!

$display("[%t] : whdb-5 Start: MSI Configuration", $realtime );		 
TSK_TX_TYPE0_CONFIGURATION_READ(DEFAULT_TAG, 12'h90, 4'hF); // MSI Control register
TSK_WAIT_FOR_READ_DATA;
$display("[%t] :   Read MSI Control Register 90h: %x", $realtime,P_READ_DATA);
		 
// P_READ_DATA = P_READ_DATA | 32'h00510000;
P_READ_DATA = P_READ_DATA | 32'h00410000;
$display("[%t] :   Write MSI Enable bit to MSI Control Register 90h[16]=1", $realtime);
//$display("[%t] :   Write MSI Multiple Message Enable to MSI Control Register 90h[22:20]=101", $realtime);
$display("[%t] :   Write MSI Multiple Message Enable to MSI Control Register 90h[22:20]=100", $realtime);
DEFAULT_TAG = DEFAULT_TAG + 1;
TSK_TX_TYPE0_CONFIGURATION_WRITE(DEFAULT_TAG, 12'h90, P_READ_DATA, 4'hF);
TSK_TX_CLK_EAT(1000);
		 
DEFAULT_TAG = DEFAULT_TAG + 1;
TSK_TX_TYPE0_CONFIGURATION_READ(DEFAULT_TAG, 12'h90, 4'hF); // MSI Control register
TSK_WAIT_FOR_READ_DATA;
$display("[%t] :   Read MSI Control Register 90h: %x", $realtime,P_READ_DATA);
		 
DEFAULT_TAG = DEFAULT_TAG + 1;
TSK_TX_TYPE0_CONFIGURATION_READ(DEFAULT_TAG, 12'h9c, 4'hF); // MSI Message data
TSK_WAIT_FOR_READ_DATA;
$display("\n[%t] :   Read MSI Message Data Register 9Ch with %x", $realtime,P_READ_DATA);

$display("[%t] :   Write MSI Message Data Register 9ch[15:0] with 0xba5e", $realtime);
// P_READ_DATA = P_READ_DATA | 32'h0000ba5e;
P_READ_DATA =  32'h00005000;
DEFAULT_TAG = DEFAULT_TAG + 1;
TSK_TX_TYPE0_CONFIGURATION_WRITE(DEFAULT_TAG, 12'h9c, P_READ_DATA, 4'h3);
TSK_TX_CLK_EAT(1000);
		 
DEFAULT_TAG = DEFAULT_TAG + 1;
TSK_TX_TYPE0_CONFIGURATION_READ(DEFAULT_TAG, 12'h9c, 4'hF); // MSI Message data
TSK_WAIT_FOR_READ_DATA;
$display("[%t] :   Read MSI Message Data Register 9ch: %x", $realtime,P_READ_DATA);
		 
P_READ_DATA =  32'h0000001c;
DEFAULT_TAG = DEFAULT_TAG + 1;
TSK_TX_TYPE0_CONFIGURATION_WRITE(DEFAULT_TAG, 12'h94, P_READ_DATA, 4'hF);
TSK_TX_CLK_EAT(1000);
         
DEFAULT_TAG = DEFAULT_TAG + 1;
TSK_TX_TYPE0_CONFIGURATION_READ(DEFAULT_TAG, 12'h94, 4'hF); // MSI Message Address
TSK_WAIT_FOR_READ_DATA;
$display("\n[%t] :   Read MSI Message Address Register (lower) 94h: %x", $realtime,P_READ_DATA);
		 
DEFAULT_TAG = DEFAULT_TAG + 1;
TSK_TX_TYPE0_CONFIGURATION_READ(DEFAULT_TAG, 12'h98, 4'hF); // MSI Message Address
TSK_WAIT_FOR_READ_DATA;
$display("[%t] :   Read MSI Message Address Register (upper) 98h: %x", $realtime,P_READ_DATA);

 

0 Kudos