ddrc_register_set.set_word('dram_param_reg4',0x0,force)# reset all fields. This register is controlled by the hardware during automatic initialization
#Maybe just the LSBB (reg_ddrc_en_2t_timing_mode) is needed for "2t timing mode" - is it non-common?
ddrc_register_set.set_bitfields('dram_param_reg4',(('reg_ddrc_max_rank_rd',0xf)),force,warn)# Not documented, but appears to be set in 2-nd and 3-rd round
ddrc_register_set.set_bitfields('dram_param_reg4',(('reg_ddrc_max_rank_rd',(0xf,0)[self.silicon==3])),force,warn)# Not documented, but appears to be set in 2-nd and 3-rd round
('reg_phy_data_slice_in_use',slice_in_use3),# 1 Data bus width for read FIFO generation. 0 - read data responses are ignored, 1 - data slice 3 is valid (always 1)
ddrc_register_set.set_bitfields('phy_rd_dqs_cfg0',(# PHY read DQS configuration register for data slice 0
('reg_phy_rd_dqs_slave_delay',0),# 0 If reg_phy_rd_dqs_slave_force is 1, use this tap/delay value for read DQS slave DLL, data slice 0
('reg_phy_rd_dqs_slave_force',0),# 0 0 - use reg_phy_rd_dqs_slave_ratio for the read DQS slave DLL, 1 - use provided in reg_phy_rd_dqs_slave_delay, data slice 0
('reg_phy_rd_dqs_slave_ratio',dqs_slave_ratio0),# 0x35 Fraction of the clock cycle (256 = full period) for the read DQS slave DLL, data slice 0
('reg_phy_rd_dqs_slave_ratio',rd_dqs_slave_ratio0),# 0x35 Fraction of the clock cycle (256 = full period) for the read DQS slave DLL, data slice 0
ddrc_register_set.set_bitfields('phy_rd_dqs_cfg1',(# PHY read DQS configuration register for data slice 1
('reg_phy_rd_dqs_slave_delay',0),# 0 If reg_phy_rd_dqs_slave_force is 1, use this tap/delay value for read DQS slave DLL, data slice 1
('reg_phy_rd_dqs_slave_force',0),# 0 0 - use reg_phy_rd_dqs_slave_ratio for the read DQS slave DLL, 1 - use provided in reg_phy_rd_dqs_slave_delay, data slice 1
('reg_phy_rd_dqs_slave_ratio',dqs_slave_ratio1),# 0x35 Fraction of the clock cycle (256 = full period) for the read DQS slave DLL, data slice 1
('reg_phy_rd_dqs_slave_ratio',rd_dqs_slave_ratio1),# 0x35 Fraction of the clock cycle (256 = full period) for the read DQS slave DLL, data slice 1
ddrc_register_set.set_bitfields('phy_rd_dqs_cfg2',(# PHY read DQS configuration register for data slice 2
('reg_phy_rd_dqs_slave_delay',0),# 0 If reg_phy_rd_dqs_slave_force is 1, use this tap/delay value for read DQS slave DLL, data slice 2
('reg_phy_rd_dqs_slave_force',0),# 0 0 - use reg_phy_rd_dqs_slave_ratio for the read DQS slave DLL, 1 - use provided in reg_phy_rd_dqs_slave_delay, data slice 2
('reg_phy_rd_dqs_slave_ratio',dqs_slave_ratio2),# 0x35 Fraction of the clock cycle (256 = full period) for the read DQS slave DLL, data slice 2
('reg_phy_rd_dqs_slave_ratio',rd_dqs_slave_ratio2),# 0x35 Fraction of the clock cycle (256 = full period) for the read DQS slave DLL, data slice 2
ddrc_register_set.set_bitfields('phy_rd_dqs_cfg3',(# PHY read DQS configuration register for data slice 3
('reg_phy_rd_dqs_slave_delay',0),# 0 If reg_phy_rd_dqs_slave_force is 1, use this tap/delay value for read DQS slave DLL, data slice 3
('reg_phy_rd_dqs_slave_force',0),# 0 0 - use reg_phy_rd_dqs_slave_ratio for the read DQS slave DLL, 1 - use provided in reg_phy_rd_dqs_slave_delay, data slice 3
('reg_phy_rd_dqs_slave_ratio',dqs_slave_ratio3),# 0x35 Fraction of the clock cycle (256 = full period) for the read DQS slave DLL, data slice 3
('reg_phy_rd_dqs_slave_ratio',rd_dqs_slave_ratio3),# 0x35 Fraction of the clock cycle (256 = full period) for the read DQS slave DLL, data slice 3
ddrc_register_set.set_bitfields('phy_wr_dqs_cfg0',(# ,PHY write DQS configuration register for data slice 0
('reg_phy_wr_dqs_slave_delay',0),# 0 If reg_phy_wr_dqs_slave_force is 1, use this tap/delay value for write DQS slave DLL, data slice 0
('reg_phy_wr_dqs_slave_force',0),# 0 0 - use reg_phy_wr_dqs_slave_ratio for the write DQS slave DLL, 1 - use provided in reg_phy_wr_dqs_slave_delay, data slice 0
('reg_phy_wr_dqs_slave_ratio',0),# 0 Fraction of the clock cycle (256 = full period) for the write DQS slave DLL, data slice 0. Program manual training ratio
('reg_phy_wr_dqs_slave_ratio',wr_dqs_slave_ratio0),# 0 Fraction of the clock cycle (256 = full period) for the write DQS slave DLL, data slice 0. Program manual training ratio
ddrc_register_set.set_bitfields('phy_wr_dqs_cfg1',(# ,PHY write DQS configuration register for data slice 1
('reg_phy_wr_dqs_slave_delay',0),# 0 If reg_phy_wr_dqs_slave_force is 1, use this tap/delay value for write DQS slave DLL, data slice 1
('reg_phy_wr_dqs_slave_force',0),# 0 0 - use reg_phy_wr_dqs_slave_ratio for the write DQS slave DLL, 1 - use provided in reg_phy_wr_dqs_slave_delay, data slice 1
('reg_phy_wr_dqs_slave_ratio',0),# 0 Fraction of the clock cycle (256 = full period) for the write DQS slave DLL, data slice 1. Program manual training ratio
('reg_phy_wr_dqs_slave_ratio',wr_dqs_slave_ratio1),# 0 Fraction of the clock cycle (256 = full period) for the write DQS slave DLL, data slice 1. Program manual training ratio
ddrc_register_set.set_bitfields('phy_wr_dqs_cfg2',(# ,PHY write DQS configuration register for data slice 2
('reg_phy_wr_dqs_slave_delay',0),# 0 If reg_phy_wr_dqs_slave_force is 1, use this tap/delay value for write DQS slave DLL, data slice 2
('reg_phy_wr_dqs_slave_force',0),# 0 0 - use reg_phy_wr_dqs_slave_ratio for the write DQS slave DLL, 1 - use provided in reg_phy_wr_dqs_slave_delay, data slice 2
('reg_phy_wr_dqs_slave_ratio',0),# 0 Fraction of the clock cycle (256 = full period) for the write DQS slave DLL, data slice 2. Program manual training ratio
('reg_phy_wr_dqs_slave_ratio',wr_dqs_slave_ratio2),# 0 Fraction of the clock cycle (256 = full period) for the write DQS slave DLL, data slice 2. Program manual training ratio
ddrc_register_set.set_bitfields('phy_wr_dqs_cfg3',(# ,PHY write DQS configuration register for data slice 3
('reg_phy_wr_dqs_slave_delay',0),# 0 If reg_phy_wr_dqs_slave_force is 1, use this tap/delay value for write DQS slave DLL, data slice 3
('reg_phy_wr_dqs_slave_force',0),# 0 0 - use reg_phy_wr_dqs_slave_ratio for the write DQS slave DLL, 1 - use provided in reg_phy_wr_dqs_slave_delay, data slice 3
('reg_phy_wr_dqs_slave_ratio',0),# 0 Fraction of the clock cycle (256 = full period) for the write DQS slave DLL, data slice 3. Program manual training ratio
('reg_phy_wr_dqs_slave_ratio',wr_dqs_slave_ratio3),# 0 Fraction of the clock cycle (256 = full period) for the write DQS slave DLL, data slice 3. Program manual training ratio
ddrc_register_set.set_bitfields('phy_we_cfg0',(# PHY FIFO write enable configuration register for data slice 0
...
...
@@ -1132,10 +1182,10 @@ class EzynqDDR:
('reg_phy_fifo_we_in_force',0),# 0 0 - use reg_phy_fifo_we_slave_ratio for fifo_we_0 slave DLL, 1 - use provided in reg_phy_fifo_we_in_delay, data slice 3
('reg_phy_fifo_we_slave_ratio',fifo_we_slave_ratio3),# 0x35 Fraction of the clock cycle (256 = full period) for fifo_we_0 slave DLL, data slice 3. Program manual training ratio
ddrc_register_set.set_bitfields('wr_data_slv0',(# PHY write data slave ratio configuration register for data slice 0
('reg_phy_wr_data_slave_delay',0),# 0 If reg_phy_wr_dqs_slave_force is 1, use this tap/delay value for write data slave DLL, data slice 0
...
...
@@ -1161,10 +1211,16 @@ class EzynqDDR:
('reg_phy_wr_data_slave_ratio',wr_data_slave_ratio3),# 0x40 Fraction of the clock cycle (256 = full period) for the write data slave DLL, data slice 3. Program manual training ratio