Extract SERDES config

This commit is contained in:
Miodrag Milanovic 2025-04-30 09:57:28 +02:00
parent 69ed9f73ab
commit 415de01bbe
2 changed files with 256 additions and 4 deletions

View File

@ -426,9 +426,259 @@ TileBitDatabase::TileBitDatabase(const int x, const int y) : BaseBitDatabase(Die
SerdesBitDatabase::SerdesBitDatabase() : BaseBitDatabase(Die::SERDES_CFG_SIZE * 8) SerdesBitDatabase::SerdesBitDatabase() : BaseBitDatabase(Die::SERDES_CFG_SIZE * 8)
{ {
for (int i = 0; i < Die::SERDES_CFG_SIZE/2; i++) { add_word_settings("RX_BUF_RESET_TIME", (0x00<<4) + 0, 5);
add_word_settings(stringf("REG_%02X",i), i*16, 16); add_word_settings("RX_PCS_RESET_TIME", (0x00<<4) + 5, 5);
} add_word_settings("RX_RESET_TIMER_PRESC", (0x00<<4) + 10, 5);
add_word_settings("RX_RESET_DONE_GATE", (0x00<<4) + 15, 1);
add_word_settings("RX_CDR_RESET_TIME", (0x01<<4) + 0, 5);
add_word_settings("RX_EQA_RESET_TIME", (0x01<<4) + 5, 5);
add_word_settings("RX_PMA_RESET_TIME", (0x01<<4) + 10, 5);
add_word_settings("RX_WAIT_CDR_LOCK", (0x01<<4) + 15, 1);
add_word_settings("RX_CALIB_EN", (0x02<<4) + 0, 1);
add_word_settings("RX_CALIB_DONE", (0x02<<4) + 1, 1);
add_word_settings("RX_CALIB_OVR", (0x02<<4) + 2, 1);
add_word_settings("RX_CALIB_VAL", (0x02<<4) + 3, 4);
add_word_settings("RX_CALIB_CAL", (0x02<<4) + 7, 4);
add_word_settings("RX_RTERM_VCMSEL", (0x02<<4) + 11, 3);
add_word_settings("RX_RTERM_PD", (0x02<<4) + 14, 1);
add_word_settings("RX_EQA_CKP_LF", (0x03<<4) + 0, 8);
add_word_settings("RX_EQA_CKP_HF", (0x03<<4) + 8, 8);
add_word_settings("RX_EQA_CKP_OFFSET", (0x04<<4) + 0, 8);
add_word_settings("RX_EN_EQA", (0x04<<4) + 8, 1);
add_word_settings("RX_EQA_LOCK_CFG", (0x04<<4) + 9, 4);
add_word_settings("RX_EQA_LOCKED", (0x04<<4) + 13, 1);
add_word_settings("RX_TH_MON1", (0x05<<4) + 0, 5);
add_word_settings("RX_EN_EQA_EXT_VALUE_0", (0x05<<4) + 5, 1);
add_word_settings("RX_TH_MON2", (0x05<<4) + 6, 5);
add_word_settings("RX_EN_EQA_EXT_VALUE_1", (0x05<<4) + 11, 1);
add_word_settings("RX_TAPW", (0x06<<4) + 0, 5);
add_word_settings("RX_EN_EQA_EXT_VALUE_2", (0x06<<4) + 5, 1);
add_word_settings("RX_AFE_OFFSET", (0x06<<4) + 6, 5);
add_word_settings("RX_EN_EQA_EXT_VALUE_3", (0x06<<4) + 11, 1);
add_word_settings("RX_EQA_TAPW", (0x07<<4) + 0, 5);
add_word_settings("RX_TH_MON", (0x07<<4) + 5, 5);
add_word_settings("RX_OFFSET", (0x07<<4) + 10, 4);
add_word_settings("RX_EQA_CONFIG", (0x08<<4) + 0, 16);
add_word_settings("RX_AFE_PEAK", (0x09<<4) + 0, 5);
add_word_settings("RX_AFE_GAIN", (0x09<<4) + 5, 4);
add_word_settings("RX_AFE_VCMSEL", (0x09<<4) + 9, 3);
add_word_settings("RX_CDR_CKP", (0x0a<<4) + 0, 8);
add_word_settings("RX_CDR_CKI", (0x0a<<4) + 8, 8);
add_word_settings("RX_CDR_TRANS_TH", (0x0b<<4) + 0, 9);
add_word_settings("RX_CDR_LOCK_CFG", (0x0b<<4) + 9, 6);
add_word_settings("RX_CDR_LOCKED", (0x0b<<4) + 15, 1);
add_word_settings("RX_CDR_FREQ_ACC_VAL", (0x0c<<4) + 0, 15);
add_word_settings("RX_CDR_PHASE_ACC_VAL", (0x0d<<4) + 0, 16);
add_word_settings("RX_CDR_FREQ_ACC", (0x0e<<4) + 0, 15);
add_word_settings("RX_CDR_PHASE_ACC", (0x0f<<4) + 0, 16);
add_word_settings("RX_CDR_SET_ACC_CONFIG", (0x10<<4) + 0, 2);
add_word_settings("RX_CDR_FORCE_LOCK", (0x10<<4) + 2, 1);
add_word_settings("RX_ALIGN_MCOMMA_VALUE", (0x11<<4) + 0, 10);
add_word_settings("RX_MCOMMA_ALIGN_OVR", (0x11<<4) + 10, 1);
add_word_settings("RX_MCOMMA_ALIGN", (0x11<<4) + 11, 1);
add_word_settings("RX_ALIGN_PCOMMA_VALUE", (0x12<<4) + 0, 10);
add_word_settings("RX_PCOMMA_ALIGN_OVR", (0x12<<4) + 10, 1);
add_word_settings("RX_PCOMMA_ALIGN", (0x12<<4) + 11, 1);
add_word_settings("RX_ALIGN_COMMA_WORD", (0x12<<4) + 12, 2);
add_word_settings("RX_ALIGN_COMMA_ENABLE", (0x13<<4) + 0, 10);
add_word_settings("RX_SLIDE_MODE", (0x13<<4) + 10, 2);
add_word_settings("RX_COMMA_DETECT_EN_OVR", (0x13<<4) + 12, 1);
add_word_settings("RX_COMMA_DETECT_EN", (0x13<<4) + 13, 1);
add_word_settings("RX_SLIDE", (0x13<<4) + 14, 2);
add_word_settings("RX_EYE_MEAS_EN", (0x14<<4) + 0, 1);
add_word_settings("RX_EYE_MEAS_CFG", (0x14<<4) + 1, 15);
add_word_settings("RX_MON_PH_OFFSET", (0x15<<4) + 0, 6);
add_word_settings("RX_EYE_MEAS_CORRECT_11S", (0x16<<4) + 0, 16);
add_word_settings("RX_EYE_MEAS_WRONG_11S", (0x17<<4) + 0, 16);
add_word_settings("RX_EYE_MEAS_CORRECT_00S", (0x18<<4) + 0, 16);
add_word_settings("RX_EYE_MEAS_WRONG_00S", (0x19<<4) + 0, 16);
add_word_settings("RX_EYE_MEAS_CORRECT_001S", (0x1a<<4) + 0, 16);
add_word_settings("RX_EYE_MEAS_WRONG_001S", (0x1b<<4) + 0, 16);
add_word_settings("RX_EYE_MEAS_CORRECT_110S", (0x1c<<4) + 0, 16);
add_word_settings("RX_EYE_MEAS_WRONG_110S", (0x1d<<4) + 0, 16);
add_word_settings("RX_EI_BIAS", (0x1e<<4) + 0, 4);
add_word_settings("RX_EI_BW_SEL", (0x1e<<4) + 4, 4);
add_word_settings("RX_EN_EI_DETECTOR_OVR", (0x1e<<4) + 8, 1);
add_word_settings("RX_EN_EI_DETECTOR", (0x1e<<4) + 9, 1);
add_word_settings("RX_EI_EN", (0x1e<<4) + 10, 1);
add_word_settings("RX_PRBS_ERR_CNT", (0x1f<<4) + 0, 15);
add_word_settings("RX_PRBS_LOCKED", (0x1f<<4) + 15, 1);
add_word_settings("RX_DATA_SEL", (0x20<<4) + 0, 1);
add_word_settings("RX_DATA", (0x20<<4) + 1, 15 + 16*4);
add_word_settings("RX_BUF_BYPASS", (0x25<<4) + 0, 1);
add_word_settings("RX_CLKCOR_USE", (0x25<<4) + 1, 1);
add_word_settings("RX_CLKCOR_MIN_LAT", (0x25<<4) + 2, 6);
add_word_settings("RX_CLKCOR_MAX_LAT", (0x25<<4) + 8, 6);
add_word_settings("RX_CLKCOR_SEQ_1_0", (0x26<<4) + 0, 10);
add_word_settings("RX_CLKCOR_SEQ_1_1", (0x27<<4) + 0, 10);
add_word_settings("RX_CLKCOR_SEQ_1_2", (0x28<<4) + 0, 10);
add_word_settings("RX_CLKCOR_SEQ_1_3", (0x29<<4) + 0, 10);
add_word_settings("RX_PMA_LOOPBACK", (0x2a<<4) + 0, 1);
add_word_settings("RX_PCS_LOOPBACK", (0x2a<<4) + 1, 1);
add_word_settings("RX_DATAPATH_SEL", (0x2a<<4) + 2, 2);
add_word_settings("RX_PRBS_OVR", (0x2a<<4) + 4, 1);
add_word_settings("RX_PRBS_SEL", (0x2a<<4) + 5, 3);
add_word_settings("RX_LOOPBACK_OVR", (0x2a<<4) + 8, 1);
add_word_settings("RX_PRBS_CNT_RESET", (0x2a<<4) + 9, 1);
add_word_settings("RX_POWER_DOWN_OVR", (0x2a<<4) + 10, 1);
add_word_settings("RX_POWER_DOWN_N", (0x2a<<4) + 11, 1);
add_word_settings("RX_PRESENT", (0x2a<<4) + 12, 1);
add_word_settings("RX_DETECT_DONE", (0x2a<<4) + 13, 1);
add_word_settings("RX_BUF_ERR", (0x2a<<4) + 14, 1);
add_word_settings("RX_RESET_OVR", (0x2b<<4) + 0, 1);
add_word_settings("RX_RESET", (0x2b<<4) + 1, 1);
add_word_settings("RX_PMA_RESET_OVR", (0x2b<<4) + 2, 1);
add_word_settings("RX_PMA_RESET", (0x2b<<4) + 3, 1);
add_word_settings("RX_EQA_RESET_OVR", (0x2b<<4) + 4, 1);
add_word_settings("RX_EQA_RESET", (0x2b<<4) + 5, 1);
add_word_settings("RX_CDR_RESET_OVR", (0x2b<<4) + 6, 1);
add_word_settings("RX_CDR_RESET", (0x2b<<4) + 7, 1);
add_word_settings("RX_PCS_RESET_OVR", (0x2b<<4) + 8, 1);
add_word_settings("RX_PCS_RESET", (0x2b<<4) + 9, 1);
add_word_settings("RX_BUF_RESET_OVR", (0x2b<<4) + 10, 1);
add_word_settings("RX_BUF_RESET", (0x2b<<4) + 11, 1);
add_word_settings("RX_POLARITY_OVR", (0x2b<<4) + 12, 1);
add_word_settings("RX_POLARITY", (0x2b<<4) + 13, 1);
add_word_settings("RX_8B10B_EN_OVR", (0x2b<<4) + 14, 1);
add_word_settings("RX_8B10B_EN", (0x2b<<4) + 15, 1);
add_word_settings("RX_8B10B_BYPASS", (0x2c<<4) + 0, 8);
add_word_settings("RX_BYTE_IS_ALIGNED", (0x2c<<4) + 8, 1);
add_word_settings("RX_BYTE_REALIGN", (0x2c<<4) + 9, 1);
add_word_settings("RX_RESET_DONE", (0x2c<<4) + 10, 1);
add_word_settings("RX_DBG_EN", (0x2d<<4) + 0, 1);
add_word_settings("RX_DBG_SEL", (0x2d<<4) + 1, 4);
add_word_settings("RX_DBG_MODE", (0x2d<<4) + 5, 1);
add_word_settings("RX_DBG_SRAM_DELAY", (0x2d<<4) + 6, 6);
add_word_settings("RX_DBG_ADDR", (0x2e<<4) + 0, 10);
add_word_settings("RX_DBG_RE", (0x2e<<4) + 10, 1);
add_word_settings("RX_DBG_WE", (0x2e<<4) + 11, 1);
add_word_settings("RX_DBG_DATA", (0x2e<<4) + 12, 20);
add_word_settings("TX_SEL_PRE", (0x30<<4) + 0, 5);
add_word_settings("TX_SEL_POST", (0x30<<4) + 5, 5);
add_word_settings("TX_AMP", (0x30<<4) + 10, 5);
add_word_settings("TX_BRANCH_EN_PRE", (0x31<<4) + 0, 5);
add_word_settings("TX_BRANCH_EN_MAIN", (0x31<<4) + 5, 6);
add_word_settings("TX_BRANCH_EN_POST", (0x31<<4) + 11, 5);
add_word_settings("TX_TAIL_CASCODE", (0x32<<4) + 0, 3);
add_word_settings("TX_DC_ENABLE", (0x32<<4) + 3, 7);
add_word_settings("TX_DC_OFFSET", (0x32<<4) + 10, 5);
add_word_settings("TX_CM_RAISE", (0x33<<4) + 0, 5);
add_word_settings("TX_CM_THRESHOLD_0", (0x33<<4) + 5, 5);
add_word_settings("TX_CM_THRESHOLD_1", (0x33<<4) + 10, 5);
add_word_settings("TX_SEL_PRE_EI", (0x34<<4) + 0, 5);
add_word_settings("TX_SEL_POST_EI", (0x34<<4) + 5, 5);
add_word_settings("TX_AMP_EI", (0x34<<4) + 10, 5);
add_word_settings("TX_BRANCH_EN_PRE_EI", (0x35<<4) + 0, 5);
add_word_settings("TX_BRANCH_EN_MAIN_EI", (0x35<<4) + 5, 6);
add_word_settings("TX_BRANCH_EN_POST_EI", (0x35<<4) + 11, 5);
add_word_settings("TX_TAIL_CASCODE_EI", (0x36<<4) + 0, 3);
add_word_settings("TX_DC_ENABLE_EI", (0x36<<4) + 3, 7);
add_word_settings("TX_DC_OFFSET_EI", (0x36<<4) + 10, 5);
add_word_settings("TX_CM_RAISE_EI", (0x37<<4) + 0, 5);
add_word_settings("TX_CM_THRESHOLD_0_EI", (0x37<<4) + 5, 5);
add_word_settings("TX_CM_THRESHOLD_1_EI", (0x37<<4) + 10, 5);
add_word_settings("TX_SEL_PRE_RXDET", (0x38<<4) + 0, 5);
add_word_settings("TX_SEL_POST_RXDET", (0x38<<4) + 5, 5);
add_word_settings("TX_AMP_RXDET", (0x38<<4) + 10, 5);
add_word_settings("TX_BRANCH_EN_PRE_RXDET", (0x39<<4) + 0, 5);
add_word_settings("TX_BRANCH_EN_MAIN_RXDET", (0x39<<4) + 5, 6);
add_word_settings("TX_BRANCH_EN_POST_RXDET", (0x39<<4) + 11, 5);
add_word_settings("TX_TAIL_CASCODE_RXDET", (0x3a<<4) + 0, 3);
add_word_settings("TX_DC_ENABLE_RXDET", (0x3a<<4) + 3, 7);
add_word_settings("TX_DC_OFFSET_RXDET", (0x3a<<4) + 10, 5);
add_word_settings("TX_CM_RAISE_RXDET", (0x3b<<4) + 0, 5);
add_word_settings("TX_CM_THRESHOLD_0_RXDET", (0x3b<<4) + 5, 5);
add_word_settings("TX_CM_THRESHOLD_1_RXDET", (0x3b<<4) + 10, 5);
add_word_settings("TX_CALIB_EN", (0x3c<<4) + 0, 1);
add_word_settings("TX_CALIB_DONE", (0x3c<<4) + 1, 1);
add_word_settings("TX_CALIB_OVR", (0x3c<<4) + 2, 1);
add_word_settings("TX_CALIB_VAL", (0x3c<<4) + 3, 4);
add_word_settings("TX_CALIB_CAL", (0x3c<<4) + 7, 4);
add_word_settings("TX_CM_REG_KI", (0x3d<<4) + 0, 8);
add_word_settings("TX_CM_SAR_EN", (0x3d<<4) + 8, 1);
add_word_settings("TX_CM_REG_EN", (0x3d<<4) + 9, 1);
add_word_settings("TX_CM_SAR_RESULT_0", (0x3e<<4) + 0, 5);
add_word_settings("TX_CM_SAR_RESULT_1", (0x3e<<4) + 5, 5);
add_word_settings("TX_PMA_RESET_TIME", (0x3f<<4) + 0, 5);
add_word_settings("TX_PCS_RESET_TIME", (0x3f<<4) + 5, 5);
add_word_settings("TX_PCS_RESET_OVR", (0x3f<<4) + 10, 1);
add_word_settings("TX_PCS_RESET", (0x3f<<4) + 11, 1);
add_word_settings("TX_PMA_RESET_OVR", (0x3f<<4) + 12, 1);
add_word_settings("TX_PMA_RESET", (0x3f<<4) + 13, 1);
add_word_settings("TX_RESET_OVR", (0x3f<<4) + 14, 1);
add_word_settings("TX_RESET", (0x3f<<4) + 15, 1);
add_word_settings("TX_PMA_LOOPBACK", (0x40<<4) + 0, 2);
add_word_settings("TX_PCS_LOOPBACK", (0x40<<4) + 2, 1);
add_word_settings("TX_DATAPATH_SEL", (0x40<<4) + 3, 2);
add_word_settings("TX_PRBS_OVR", (0x40<<4) + 5, 1);
add_word_settings("TX_PRBS_SEL", (0x40<<4) + 6, 3);
add_word_settings("TX_PRBS_FORCE_ERR", (0x40<<4) + 9, 1);
add_word_settings("TX_LOOPBACK_OVR", (0x40<<4) + 10, 1);
add_word_settings("TX_POWER_DOWN_OVR", (0x40<<4) + 11, 1);
add_word_settings("TX_POWER_DOWN_N", (0x40<<4) + 12, 1);
add_word_settings("TX_ELEC_IDLE_OVR", (0x41<<4) + 0, 1);
add_word_settings("TX_ELEC_IDLE", (0x41<<4) + 1, 1);
add_word_settings("TX_DETECT_RX_OVR", (0x41<<4) + 2, 1);
add_word_settings("TX_DETECT_RX", (0x41<<4) + 3, 1);
add_word_settings("TX_POLARITY_OVR", (0x41<<4) + 4, 1);
add_word_settings("TX_POLARITY", (0x41<<4) + 5, 1);
add_word_settings("TX_8B10B_EN_OVR", (0x41<<4) + 6, 1);
add_word_settings("TX_8B10B_EN", (0x41<<4) + 7, 1);
add_word_settings("TX_DATA_OVR", (0x41<<4) + 8, 1);
add_word_settings("TX_DATA_CNT", (0x41<<4) + 9, 3);
add_word_settings("TX_DATA_VALID", (0x41<<4) + 12, 1);
add_word_settings("TX_BUF_ERR", (0x41<<4) + 13, 1);
add_word_settings("TX_RESET_DONE", (0x41<<4) + 14, 1);
add_word_settings("TX_DATA", (0x42<<4) + 0, 16);
add_word_settings("PLL_EN_ADPLL_CTRL", (0x50<<4) + 0, 1);
add_word_settings("PLL_CONFIG_SEL", (0x50<<4) + 1, 1);
add_word_settings("PLL_SET_OP_LOCK", (0x50<<4) + 2, 1);
add_word_settings("PLL_ENFORCE_LOCK", (0x50<<4) + 3, 1);
add_word_settings("PLL_DISABLE_LOCK", (0x50<<4) + 4, 1);
add_word_settings("PLL_LOCK_WINDOW", (0x50<<4) + 5, 1);
add_word_settings("PLL_FAST_LOCK", (0x50<<4) + 6, 1);
add_word_settings("PLL_SYNC_BYPASS", (0x50<<4) + 7, 1);
add_word_settings("PLL_PFD_SELECT", (0x50<<4) + 8, 1);
add_word_settings("PLL_REF_BYPASS", (0x50<<4) + 9, 1);
add_word_settings("PLL_REF_SEL", (0x50<<4) + 10, 1);
add_word_settings("PLL_REF_RTERM", (0x50<<4) + 11, 1);
add_word_settings("PLL_FCNTRL", (0x51<<4) + 0, 6);
add_word_settings("PLL_MAIN_DIVSEL", (0x51<<4) + 6, 6);
add_word_settings("PLL_OUT_DIVSEL", (0x51<<4) + 12, 2);
add_word_settings("PLL_CI", (0x52<<4) + 0, 5);
add_word_settings("PLL_CP", (0x52<<4) + 5, 10);
add_word_settings("PLL_AO", (0x53<<4) + 0, 4);
add_word_settings("PLL_SCAP", (0x53<<4) + 4, 3);
add_word_settings("PLL_FILTER_SHIFT", (0x53<<4) + 7, 2);
add_word_settings("PLL_SAR_LIMIT", (0x53<<4) + 9, 3);
add_word_settings("PLL_FT", (0x54<<4) + 0, 11);
add_word_settings("PLL_OPEN_LOOP", (0x54<<4) + 11, 1);
add_word_settings("PLL_SCAP_AUTO_CAL", (0x54<<4) + 12, 1);
add_word_settings("PLL_LOCKED", (0x55<<4) + 0, 1);
add_word_settings("PLL_CAP_FT_OF", (0x55<<4) + 1, 1);
add_word_settings("PLL_CAP_FT_UF", (0x55<<4) + 2, 1);
add_word_settings("PLL_CAP_FT", (0x55<<4) + 3, 10);
add_word_settings("PLL_CAP_STATE", (0x55<<4) + 13, 2);
add_word_settings("PLL_SYNC_VALUE", (0x56<<4) + 0, 8);
add_word_settings("PLL_BISC_MODE", (0x57<<4) + 0, 3);
add_word_settings("PLL_BISC_TIMER_MAX", (0x57<<4) + 3, 4);
add_word_settings("PLL_BISC_OPT_DET_IND", (0x57<<4) + 7, 1);
add_word_settings("PLL_BISC_PFD_SEL", (0x57<<4) + 8, 1);
add_word_settings("PLL_BISC_DLY_DIR", (0x57<<4) + 9, 1);
add_word_settings("PLL_BISC_COR_DLY", (0x57<<4) + 10, 3);
add_word_settings("PLL_BISC_CAL_SIGN", (0x57<<4) + 13, 1);
add_word_settings("PLL_BISC_CAL_AUTO", (0x57<<4) + 14, 1);
add_word_settings("PLL_BISC_CP_MIN", (0x58<<4) + 0, 5);
add_word_settings("PLL_BISC_CP_MAX", (0x58<<4) + 5, 5);
add_word_settings("PLL_BISC_CP_START", (0x58<<4) + 10, 5);
add_word_settings("PLL_BISC_DLY_PFD_MON_REF", (0x59<<4) + 0, 5);
add_word_settings("PLL_BISC_DLY_PFD_MON_DIV", (0x59<<4) + 5, 5);
add_word_settings("PLL_BISC_TIMER_DONE", (0x5a<<4) + 0, 1);
add_word_settings("PLL_BISC_CP", (0x5a<<4) + 1, 7);
add_word_settings("PLL_BISC_CO", (0x5b<<4) + 0, 16);
add_word_settings("SERDES_ENABLE", (0x5c<<4) + 0, 1);
add_word_settings("SERDES_AUTO_INIT", (0x5c<<4) + 1, 1);
add_word_settings("SERDES_TESTMODE", (0x5c<<4) + 2, 1);
} }
RamBitDatabase::RamBitDatabase() : BaseBitDatabase(Die::RAM_BLOCK_SIZE * 8) RamBitDatabase::RamBitDatabase() : BaseBitDatabase(Die::RAM_BLOCK_SIZE * 8)

View File

@ -19,7 +19,9 @@ def export_name(name,fout):
print(f"//X({name})", file=fout) print(f"//X({name})", file=fout)
def parse_line(item,fout): def parse_line(item,fout):
line = item.strip().split(" ") line = item.strip().split()
if len(line)==0:
return
if line[0] == "module": if line[0] == "module":
name = line[1].split("(")[0] name = line[1].split("(")[0]
print(f"// primitive {name}", file=fout) print(f"// primitive {name}", file=fout)