Shmoo plots are a useful when it comes to debugging OSPI PHY tuning related issues. This FAQ explains the procedure of getting the shmoo plots from PDK PHY tuning algorithm.
This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
Shmoo plots are a useful when it comes to debugging OSPI PHY tuning related issues. This FAQ explains the procedure of getting the shmoo plots from PDK PHY tuning algorithm.
Shmoo plots are basically a set of scatter plots of passing Rx_DLL and Tx_DLL values for a given read delay window.
Please refer to the APP note in the link below get an understanding of the tuning algorithm.
PHY_Tuning_App_Note
1) Define the following Macros in nor_spi_phy_tune.c
#define NOR_log UART_printf #define SHMOO_TX_DLL_START (0U) #define SHMOO_TX_DLL_END (128U) #define SHMOO_RX_DLL_START (0U) #define SHMOO_RX_DLL_END (128U) #define SHMOO_RD_DELAY_START (0U) #define SHMOO_RD_DELAY_END (4U)
2) Add the following API in nor_spi_phy_tune.c
static void NOR_spiPhyFindShmoo(OSPI_Handle handle, uint32_t offset)
{
OSPI_v0_HwAttrs const *hwAttrs= (OSPI_v0_HwAttrs const *)handle->hwAttrs;
int32_t shmooTxDLL, shmooRxDLL, shmooRdDelay, status;
NOR_log("RD_Delay,\tTxDLL,\tRxDLL\n");
for(shmooRdDelay = SHMOO_RD_DELAY_START ; shmooRdDelay < SHMOO_RD_DELAY_END ; shmooRdDelay++)
{
NOR_spiRdDelayConfig(handle, shmooRdDelay);
for(shmooTxDLL = SHMOO_TX_DLL_START ; shmooTxDLL < SHMOO_TX_DLL_END ; shmooTxDLL+=4)
{
for(shmooRxDLL = SHMOO_RX_DLL_START ; shmooRxDLL < SHMOO_RX_DLL_END ; shmooRxDLL+=4)
{
NOR_spiTxRxDllConfig(handle,shmooTxDLL,shmooRxDLL);
status = NOR_spiPhyRdAttack(hwAttrs->dataAddr + offset);
if(status == NOR_PASS)
{
NOR_log("%d,\t%d,\t%d\n", shmooRdDelay, shmooTxDLL, shmooRxDLL);
}
}
}
}
}
3) Call this API from Nor_spiPhyDdrTune or Nor_spiPhySdrTune based on the mode you are using.
RD_Delay, TxDLL, RxDLL
2, 24, 0
2, 24, 4
2, 24, 8
2, 24, 12
…
…
…
2, 124, 68
2, 124, 72
2, 124, 76
2, 124, 80
2, 124, 84
You may get this data for more than one read delay.
Copy the data for each ready delay in excel and generate a scatter plot for Tx_DLL vs Rx_DLL, with Tx_DLL on x-asix. Please see the image for reference.

Regards,
Parth