Commit bda74800 authored by Andrey Filippov's avatar Andrey Filippov

preparing for testing membridge module on the target system

parent 079114c1
...@@ -62,77 +62,77 @@ ...@@ -62,77 +62,77 @@
<link> <link>
<name>vivado_logs/VivadoBitstream.log</name> <name>vivado_logs/VivadoBitstream.log</name>
<type>1</type> <type>1</type>
<location>/home/andrey/git/x393/vivado_logs/VivadoBitstream-20150428234740722.log</location> <location>/home/andrey/git/x393/vivado_logs/VivadoBitstream-20150430123957882.log</location>
</link> </link>
<link> <link>
<name>vivado_logs/VivadoOpt.log</name> <name>vivado_logs/VivadoOpt.log</name>
<type>1</type> <type>1</type>
<location>/home/andrey/git/x393/vivado_logs/VivadoOpt-20150428234740722.log</location> <location>/home/andrey/git/x393/vivado_logs/VivadoOpt-20150430123957882.log</location>
</link> </link>
<link> <link>
<name>vivado_logs/VivadoOptPhys.log</name> <name>vivado_logs/VivadoOptPhys.log</name>
<type>1</type> <type>1</type>
<location>/home/andrey/git/x393/vivado_logs/VivadoOptPhys-20150428234740722.log</location> <location>/home/andrey/git/x393/vivado_logs/VivadoOptPhys-20150430123957882.log</location>
</link> </link>
<link> <link>
<name>vivado_logs/VivadoOptPower.log</name> <name>vivado_logs/VivadoOptPower.log</name>
<type>1</type> <type>1</type>
<location>/home/andrey/git/x393/vivado_logs/VivadoOptPower-20150428234740722.log</location> <location>/home/andrey/git/x393/vivado_logs/VivadoOptPower-20150430123957882.log</location>
</link> </link>
<link> <link>
<name>vivado_logs/VivadoPlace.log</name> <name>vivado_logs/VivadoPlace.log</name>
<type>1</type> <type>1</type>
<location>/home/andrey/git/x393/vivado_logs/VivadoPlace-20150428234740722.log</location> <location>/home/andrey/git/x393/vivado_logs/VivadoPlace-20150430123957882.log</location>
</link> </link>
<link> <link>
<name>vivado_logs/VivadoRoute.log</name> <name>vivado_logs/VivadoRoute.log</name>
<type>1</type> <type>1</type>
<location>/home/andrey/git/x393/vivado_logs/VivadoRoute-20150428234740722.log</location> <location>/home/andrey/git/x393/vivado_logs/VivadoRoute-20150430123957882.log</location>
</link> </link>
<link> <link>
<name>vivado_logs/VivadoSynthesis.log</name> <name>vivado_logs/VivadoSynthesis.log</name>
<type>1</type> <type>1</type>
<location>/home/andrey/git/x393/vivado_logs/VivadoSynthesis-20150428234540494.log</location> <location>/home/andrey/git/x393/vivado_logs/VivadoSynthesis-20150430123759800.log</location>
</link> </link>
<link> <link>
<name>vivado_logs/VivadoTimimgSummaryReportImplemented.log</name> <name>vivado_logs/VivadoTimimgSummaryReportImplemented.log</name>
<type>1</type> <type>1</type>
<location>/home/andrey/git/x393/vivado_logs/VivadoTimimgSummaryReportImplemented-20150428234740722.log</location> <location>/home/andrey/git/x393/vivado_logs/VivadoTimimgSummaryReportImplemented-20150430123957882.log</location>
</link> </link>
<link> <link>
<name>vivado_logs/VivadoTimimgSummaryReportSynthesis.log</name> <name>vivado_logs/VivadoTimimgSummaryReportSynthesis.log</name>
<type>1</type> <type>1</type>
<location>/home/andrey/git/x393/vivado_logs/VivadoTimimgSummaryReportSynthesis-20150428234540494.log</location> <location>/home/andrey/git/x393/vivado_logs/VivadoTimimgSummaryReportSynthesis-20150430123759800.log</location>
</link> </link>
<link> <link>
<name>vivado_logs/VivadoTimingReportImplemented.log</name> <name>vivado_logs/VivadoTimingReportImplemented.log</name>
<type>1</type> <type>1</type>
<location>/home/andrey/git/x393/vivado_logs/VivadoTimingReportImplemented-20150428234740722.log</location> <location>/home/andrey/git/x393/vivado_logs/VivadoTimingReportImplemented-20150430123957882.log</location>
</link> </link>
<link> <link>
<name>vivado_logs/VivadoTimingReportSynthesis.log</name> <name>vivado_logs/VivadoTimingReportSynthesis.log</name>
<type>1</type> <type>1</type>
<location>/home/andrey/git/x393/vivado_logs/VivadoTimingReportSynthesis-20150428234540494.log</location> <location>/home/andrey/git/x393/vivado_logs/VivadoTimingReportSynthesis-20150430123759800.log</location>
</link> </link>
<link> <link>
<name>vivado_state/x393-opt-phys.dcp</name> <name>vivado_state/x393-opt-phys.dcp</name>
<type>1</type> <type>1</type>
<location>/home/andrey/git/x393/vivado_state/x393-opt-phys-20150428234740722.dcp</location> <location>/home/andrey/git/x393/vivado_state/x393-opt-phys-20150430123957882.dcp</location>
</link> </link>
<link> <link>
<name>vivado_state/x393-place.dcp</name> <name>vivado_state/x393-place.dcp</name>
<type>1</type> <type>1</type>
<location>/home/andrey/git/x393/vivado_state/x393-place-20150428234740722.dcp</location> <location>/home/andrey/git/x393/vivado_state/x393-place-20150430123957882.dcp</location>
</link> </link>
<link> <link>
<name>vivado_state/x393-route.dcp</name> <name>vivado_state/x393-route.dcp</name>
<type>1</type> <type>1</type>
<location>/home/andrey/git/x393/vivado_state/x393-route-20150428234740722.dcp</location> <location>/home/andrey/git/x393/vivado_state/x393-route-20150430123957882.dcp</location>
</link> </link>
<link> <link>
<name>vivado_state/x393-synth.dcp</name> <name>vivado_state/x393-synth.dcp</name>
<type>1</type> <type>1</type>
<location>/home/andrey/git/x393/vivado_state/x393-synth-20150428234540494.dcp</location> <location>/home/andrey/git/x393/vivado_state/x393-synth-20150430123759800.dcp</location>
</link> </link>
</linkedResources> </linkedResources>
</projectDescription> </projectDescription>
This source diff could not be displayed because it is too large. You can view the blob instead.
...@@ -56,6 +56,7 @@ import x393_mcntrl_buffers ...@@ -56,6 +56,7 @@ import x393_mcntrl_buffers
import x393_mcntrl_tests import x393_mcntrl_tests
import x393_mcntrl_eyepatterns import x393_mcntrl_eyepatterns
import x393_mcntrl_adjust import x393_mcntrl_adjust
import x393_mcntrl_membridge
import vrlg import vrlg
__all__ = [] __all__ = []
__version__ = 0.1 __version__ = 0.1
...@@ -330,7 +331,7 @@ USAGE ...@@ -330,7 +331,7 @@ USAGE
x393Tests= x393_mcntrl_tests.X393McntrlTests(verbose,args.simulated) x393Tests= x393_mcntrl_tests.X393McntrlTests(verbose,args.simulated)
x393Eyepatterns= x393_mcntrl_eyepatterns.X393McntrlEyepattern(verbose,args.simulated) x393Eyepatterns= x393_mcntrl_eyepatterns.X393McntrlEyepattern(verbose,args.simulated)
x393Adjust= x393_mcntrl_adjust.X393McntrlAdjust(verbose,args.simulated,args.localparams) x393Adjust= x393_mcntrl_adjust.X393McntrlAdjust(verbose,args.simulated,args.localparams)
X393Membridge= x393_mcntrl_membridge.X393McntrlMembridge(verbose,args.simulated)
''' '''
print ("----------------------") print ("----------------------")
print("x393_mem.__dict__="+str(x393_mem.__dict__)) print("x393_mem.__dict__="+str(x393_mem.__dict__))
...@@ -354,6 +355,8 @@ USAGE ...@@ -354,6 +355,8 @@ USAGE
extractTasks(x393_mcntrl_tests.X393McntrlTests,x393Tests) extractTasks(x393_mcntrl_tests.X393McntrlTests,x393Tests)
extractTasks(x393_mcntrl_eyepatterns.X393McntrlEyepattern,x393Eyepatterns) extractTasks(x393_mcntrl_eyepatterns.X393McntrlEyepattern,x393Eyepatterns)
extractTasks(x393_mcntrl_adjust.X393McntrlAdjust,x393Adjust) extractTasks(x393_mcntrl_adjust.X393McntrlAdjust,x393Adjust)
extractTasks(x393_mcntrl_membridge.X393McntrlMembridge,X393Membridge)
for cmdLine in commands: for cmdLine in commands:
print ('Running task: '+str(cmdLine)) print ('Running task: '+str(cmdLine))
......
...@@ -121,14 +121,16 @@ def restore_default(vname=None): ...@@ -121,14 +121,16 @@ def restore_default(vname=None):
DFLT_REFRESH_ADDR__TYPE = str DFLT_REFRESH_ADDR__TYPE = str
NUM_CYCLES_09__RAW = str NUM_CYCLES_09__RAW = str
MEMBRIDGE_SIZE64__TYPE = str
DQSTRI_LAST__TYPE = str DQSTRI_LAST__TYPE = str
DLY_LD_MASK__TYPE = str DLY_LD_MASK__TYPE = str
STATUS_MSB_RSHFT__TYPE = str STATUS_MSB_RSHFT__TYPE = str
MCONTR_BUF0_RD_ADDR = int MCONTR_BUF0_RD_ADDR = int
MCNTRL_SCANLINE_WINDOW_WH__RAW = str MCNTRL_SCANLINE_WINDOW_WH__RAW = str
MCNTRL_TEST01_STATUS_REG_CHN4_ADDR = int MCNTRL_TEST01_STATUS_REG_CHN4_ADDR = int
WSEL = int
MCNTRL_TEST01_CHN3_STATUS_CNTRL = int MCNTRL_TEST01_CHN3_STATUS_CNTRL = int
MCNTRL_PS_EN_RST__TYPE = str LD_DLY_LANE1_IDELAY = int
MCONTR_TOP_16BIT_STATUS_CNTRL__TYPE = str MCONTR_TOP_16BIT_STATUS_CNTRL__TYPE = str
MCNTRL_TILED_CHN4_ADDR = int MCNTRL_TILED_CHN4_ADDR = int
WINDOW_Y0__RAW = str WINDOW_Y0__RAW = str
...@@ -146,26 +148,29 @@ TILED_STARTX__TYPE = str ...@@ -146,26 +148,29 @@ TILED_STARTX__TYPE = str
HIGH_PERFORMANCE_MODE__TYPE = str HIGH_PERFORMANCE_MODE__TYPE = str
MCONTR_PHY_STATUS_REG_ADDR__TYPE = str MCONTR_PHY_STATUS_REG_ADDR__TYPE = str
MCONTR_TOP_16BIT_ADDR__TYPE = str MCONTR_TOP_16BIT_ADDR__TYPE = str
AFI_LO_ADDR64__TYPE = str
WBUF_DLY_WLV__TYPE = str WBUF_DLY_WLV__TYPE = str
TEST01_SUSPEND = int TEST01_SUSPEND = int
MCONTR_TOP_16BIT_CHN_EN = int MCONTR_TOP_16BIT_CHN_EN = int
NUM_XFER_BITS__TYPE = str NUM_XFER_BITS__TYPE = str
AFI_SIZE64 = int
DLY_LANE1_IDELAY__TYPE = str DLY_LANE1_IDELAY__TYPE = str
REF_JITTER1__RAW = str REF_JITTER1__RAW = str
MCNTRL_TILED_MASK__TYPE = str MCNTRL_TILED_MASK__TYPE = str
MCONTR_BUF1_WR_ADDR = int MCNTRL_SCANLINE_MASK__TYPE = str
DFLT_DQ_TRI_ON_PATTERN = int DFLT_DQ_TRI_ON_PATTERN = int
MCONTR_PHY_0BIT_SDRST_ACT = int MCONTR_PHY_0BIT_SDRST_ACT = int
DEFAULT_STATUS_MODE = int DEFAULT_STATUS_MODE = int
MEMBRIDGE_START64__TYPE = str
TILED_EXTRA_PAGES__TYPE = str TILED_EXTRA_PAGES__TYPE = str
DLY_LD__TYPE = str DLY_LD__TYPE = str
MCNTRL_TEST01_CHN2_STATUS_CNTRL__TYPE = str MCNTRL_TEST01_CHN2_STATUS_CNTRL__TYPE = str
MCNTRL_SCANLINE_FRAME_PAGE_RESET = int MCNTRL_SCANLINE_FRAME_PAGE_RESET = int
STATUS_2LSB_SHFT__TYPE = str STATUS_2LSB_SHFT__TYPE = str
DFLT_WBUF_DELAY__RAW = str DFLT_WBUF_DELAY__RAW = str
DLY_LANE1_ODELAY__TYPE = str MCNTRL_TILED_FRAME_PAGE_RESET__TYPE = str
TILE_VSTEP__RAW = str TILE_VSTEP__RAW = str
MCNTRL_SCANLINE_STATUS_REG_CHN1_ADDR__RAW = str MEMBRIDGE_LEN64__TYPE = str
NUM_CYCLES_04 = int NUM_CYCLES_04 = int
NUM_CYCLES_05 = int NUM_CYCLES_05 = int
DLY_LD = int DLY_LD = int
...@@ -180,7 +185,7 @@ MCNTRL_TEST01_CHN4_STATUS_CNTRL__TYPE = str ...@@ -180,7 +185,7 @@ MCNTRL_TEST01_CHN4_STATUS_CNTRL__TYPE = str
NUM_CYCLES_13__RAW = str NUM_CYCLES_13__RAW = str
MCONTR_BUF0_RD_ADDR__TYPE = str MCONTR_BUF0_RD_ADDR__TYPE = str
STATUS_ADDR__RAW = str STATUS_ADDR__RAW = str
MCNTRL_SCANLINE_MASK__TYPE = str DLY_LANE0_IDELAY__TYPE = str
MCNTRL_PS_ADDR__TYPE = str MCNTRL_PS_ADDR__TYPE = str
WINDOW_WIDTH__RAW = str WINDOW_WIDTH__RAW = str
CHNBUF_READ_LATENCY = int CHNBUF_READ_LATENCY = int
...@@ -199,7 +204,8 @@ MCNTRL_TILED_TILE_WHS = int ...@@ -199,7 +204,8 @@ MCNTRL_TILED_TILE_WHS = int
FRAME_START_ADDRESS__TYPE = str FRAME_START_ADDRESS__TYPE = str
MCNTRL_TILED_STATUS_REG_CHN2_ADDR = int MCNTRL_TILED_STATUS_REG_CHN2_ADDR = int
MCNTRL_TILED_STATUS_CNTRL__RAW = str MCNTRL_TILED_STATUS_CNTRL__RAW = str
DQSTRI_FIRST = int MEMBRIDGE_ADDR__RAW = str
DLY_PHASE = int
DFLT_DQS_TRI_OFF_PATTERN = int DFLT_DQS_TRI_OFF_PATTERN = int
NUM_CYCLES_03__TYPE = str NUM_CYCLES_03__TYPE = str
MCONTR_TOP_16BIT_CHN_EN__TYPE = str MCONTR_TOP_16BIT_CHN_EN__TYPE = str
...@@ -211,8 +217,9 @@ VERBOSE = int ...@@ -211,8 +217,9 @@ VERBOSE = int
DLY_LANE1_ODELAY = long DLY_LANE1_ODELAY = long
MCONTR_TOP_16BIT_REFRESH_ADDRESS__TYPE = str MCONTR_TOP_16BIT_REFRESH_ADDRESS__TYPE = str
CMD_DONE_BIT__TYPE = str CMD_DONE_BIT__TYPE = str
MCNTRL_SCANLINE_STATUS_REG_CHN1_ADDR__RAW = str
MCNTRL_SCANLINE_STATUS_CNTRL__TYPE = str MCNTRL_SCANLINE_STATUS_CNTRL__TYPE = str
DLY_LANE0_IDELAY = long CLKFBOUT_DIV_AXIHP = int
NUM_CYCLES_13__TYPE = str NUM_CYCLES_13__TYPE = str
AXI_RD_ADDR_BITS__RAW = str AXI_RD_ADDR_BITS__RAW = str
MCNTRL_TEST01_CHN3_STATUS_CNTRL__TYPE = str MCNTRL_TEST01_CHN3_STATUS_CNTRL__TYPE = str
...@@ -220,11 +227,13 @@ MCONTR_WR_MASK__RAW = str ...@@ -220,11 +227,13 @@ MCONTR_WR_MASK__RAW = str
MCNTRL_TILED_WINDOW_STARTXY = int MCNTRL_TILED_WINDOW_STARTXY = int
MCONTR_TOP_0BIT_MCONTR_EN = int MCONTR_TOP_0BIT_MCONTR_EN = int
SCANLINE_EXTRA_PAGES__RAW = str SCANLINE_EXTRA_PAGES__RAW = str
MEMBRIDGE_LEN64__RAW = str
MCONTR_PHY_16BIT_EXTRA = int MCONTR_PHY_16BIT_EXTRA = int
MCONTR_ARBIT_ADDR_MASK__TYPE = str MCONTR_ARBIT_ADDR_MASK__TYPE = str
TEST01_NEXT_PAGE__TYPE = str TEST01_NEXT_PAGE__TYPE = str
MCONTR_PHY_0BIT_DLY_SET__TYPE = str MCONTR_PHY_0BIT_DLY_SET__TYPE = str
MCONTR_PHY_STATUS_REG_ADDR = int MCONTR_PHY_STATUS_REG_ADDR = int
NUM_CYCLES_LOW_BIT = int
CLKFBOUT_MULT_REF = int CLKFBOUT_MULT_REF = int
NUM_CYCLES_14__RAW = str NUM_CYCLES_14__RAW = str
MCONTR_PHY_0BIT_CMDA_EN__TYPE = str MCONTR_PHY_0BIT_CMDA_EN__TYPE = str
...@@ -254,7 +263,7 @@ MCONTR_BUF2_WR_ADDR__RAW = str ...@@ -254,7 +263,7 @@ MCONTR_BUF2_WR_ADDR__RAW = str
NUM_CYCLES_11__TYPE = str NUM_CYCLES_11__TYPE = str
MCNTRL_SCANLINE_STARTADDR__TYPE = str MCNTRL_SCANLINE_STARTADDR__TYPE = str
WBUF_DLY_DFLT__RAW = str WBUF_DLY_DFLT__RAW = str
DLY_PHASE = int DQSTRI_FIRST = int
LD_DLY_CMDA__TYPE = str LD_DLY_CMDA__TYPE = str
DLY_CMDA_ODELAY__TYPE = str DLY_CMDA_ODELAY__TYPE = str
LD_DLY_CMDA = int LD_DLY_CMDA = int
...@@ -267,10 +276,13 @@ MCNTRL_SCANLINE_MASK = int ...@@ -267,10 +276,13 @@ MCNTRL_SCANLINE_MASK = int
TILE_HEIGHT = int TILE_HEIGHT = int
AXI_WR_ADDR_BITS__TYPE = str AXI_WR_ADDR_BITS__TYPE = str
MCNTRL_PS_MASK = int MCNTRL_PS_MASK = int
MEMBRIDGE_CTRL = int
MCNTRL_TEST01_STATUS_REG_CHN3_ADDR = int MCNTRL_TEST01_STATUS_REG_CHN3_ADDR = int
COLADDR_NUMBER = int
MCONTR_PHY_STATUS_CNTRL = int MCONTR_PHY_STATUS_CNTRL = int
MCNTRL_PS_ADDR__RAW = str MCNTRL_PS_ADDR__RAW = str
MCONTR_BUF2_RD_ADDR__TYPE = str MCONTR_BUF2_RD_ADDR__TYPE = str
CLKFBOUT_DIV_AXIHP__RAW = str
TILED_STARTX__RAW = str TILED_STARTX__RAW = str
WRITE_BLOCK_OFFSET__TYPE = str WRITE_BLOCK_OFFSET__TYPE = str
STATUS_ADDR_MASK = int STATUS_ADDR_MASK = int
...@@ -279,7 +291,7 @@ AXI_WR_ADDR_BITS = int ...@@ -279,7 +291,7 @@ AXI_WR_ADDR_BITS = int
TEST01_NEXT_PAGE = int TEST01_NEXT_PAGE = int
CLKFBOUT_MULT__RAW = str CLKFBOUT_MULT__RAW = str
MAX_TILE_HEIGHT__RAW = str MAX_TILE_HEIGHT__RAW = str
INITIALIZE_OFFSET__TYPE = str MCNTRL_TEST01_CHN1_STATUS_CNTRL = int
IBUF_LOW_PWR = str IBUF_LOW_PWR = str
CONTROL_ADDR = int CONTROL_ADDR = int
DQSTRI_FIRST__TYPE = str DQSTRI_FIRST__TYPE = str
...@@ -318,7 +330,9 @@ LD_DLY_LANE1_ODELAY__RAW = str ...@@ -318,7 +330,9 @@ LD_DLY_LANE1_ODELAY__RAW = str
MCNTRL_TILED_WINDOW_WH__TYPE = str MCNTRL_TILED_WINDOW_WH__TYPE = str
MCONTR_WR_MASK__TYPE = str MCONTR_WR_MASK__TYPE = str
SS_MOD_PERIOD__RAW = str SS_MOD_PERIOD__RAW = str
MEMBRIDGE_WIDTH64__TYPE = str
MAX_TILE_HEIGHT = int MAX_TILE_HEIGHT = int
AFI_LO_ADDR64__RAW = str
MCNTRL_SCANLINE_STARTADDR__RAW = str MCNTRL_SCANLINE_STARTADDR__RAW = str
MCNTRL_SCANLINE_FRAME_FULL_WIDTH__RAW = str MCNTRL_SCANLINE_FRAME_FULL_WIDTH__RAW = str
MCNTRL_SCANLINE_STATUS_REG_CHN3_ADDR__TYPE = str MCNTRL_SCANLINE_STATUS_REG_CHN3_ADDR__TYPE = str
...@@ -329,8 +343,10 @@ MCONTR_TOP_STATUS_REG_ADDR__TYPE = str ...@@ -329,8 +343,10 @@ MCONTR_TOP_STATUS_REG_ADDR__TYPE = str
MCONTR_PHY_16BIT_WBUF_DELAY = int MCONTR_PHY_16BIT_WBUF_DELAY = int
DEFAULT_STATUS_MODE__RAW = str DEFAULT_STATUS_MODE__RAW = str
DLY_LANE1_DQS_WLV_IDELAY__TYPE = str DLY_LANE1_DQS_WLV_IDELAY__TYPE = str
TILE_HEIGHT__RAW = str
FRAME_WIDTH_BITS = int FRAME_WIDTH_BITS = int
MCNTRL_TILED_STATUS_REG_CHN2_ADDR__TYPE = str MCNTRL_TILED_STATUS_REG_CHN2_ADDR__TYPE = str
MEMBRIDGE_STATUS_CNTRL = int
SLEW_CMDA__TYPE = str SLEW_CMDA__TYPE = str
MCONTR_RD_MASK__TYPE = str MCONTR_RD_MASK__TYPE = str
READ_BLOCK_OFFSET__RAW = str READ_BLOCK_OFFSET__RAW = str
...@@ -339,6 +355,7 @@ SLEW_DQ__RAW = str ...@@ -339,6 +355,7 @@ SLEW_DQ__RAW = str
FRAME_HEIGHT_BITS__TYPE = str FRAME_HEIGHT_BITS__TYPE = str
DLY_DQS_IDELAY = long DLY_DQS_IDELAY = long
MCONTR_BUF3_RD_ADDR__TYPE = str MCONTR_BUF3_RD_ADDR__TYPE = str
MEMBRIDGE_ADDR = int
DLY_DQ_ODELAY__TYPE = str DLY_DQ_ODELAY__TYPE = str
MCONTR_PHY_16BIT_PATTERNS_TRI__RAW = str MCONTR_PHY_16BIT_PATTERNS_TRI__RAW = str
MCNTRL_TEST01_STATUS_REG_CHN4_ADDR__RAW = str MCNTRL_TEST01_STATUS_REG_CHN4_ADDR__RAW = str
...@@ -352,11 +369,13 @@ DLY_LANE0_DQS_WLV_IDELAY__TYPE = str ...@@ -352,11 +369,13 @@ DLY_LANE0_DQS_WLV_IDELAY__TYPE = str
MCNTRL_SCANLINE_STATUS_CNTRL__RAW = str MCNTRL_SCANLINE_STATUS_CNTRL__RAW = str
SCANLINE_EXTRA_PAGES__TYPE = str SCANLINE_EXTRA_PAGES__TYPE = str
PHASE_WIDTH__RAW = str PHASE_WIDTH__RAW = str
MEMBRIDGE_START64 = int
MEMBRIDGE_SIZE64__RAW = str
DFLT_DQS_PATTERN = int DFLT_DQS_PATTERN = int
DLY_LANE0_DQS_WLV_IDELAY__RAW = str DLY_LANE0_DQS_WLV_IDELAY__RAW = str
MCNTRL_TEST01_CHN2_MODE__TYPE = str MCNTRL_TEST01_CHN2_MODE__TYPE = str
DLY_LANE1_IDELAY__RAW = str DLY_LANE1_IDELAY__RAW = str
MCONTR_BUF1_RD_ADDR = int MCNTRL_SCANLINE_WINDOW_X0Y0__TYPE = str
SLEW_CLK = str SLEW_CLK = str
LD_DLY_LANE1_ODELAY__TYPE = str LD_DLY_LANE1_ODELAY__TYPE = str
MCNTRL_PS_STATUS_CNTRL = int MCNTRL_PS_STATUS_CNTRL = int
...@@ -365,7 +384,7 @@ SS_MODE__TYPE = str ...@@ -365,7 +384,7 @@ SS_MODE__TYPE = str
MCONTR_TOP_16BIT_REFRESH_ADDRESS__RAW = str MCONTR_TOP_16BIT_REFRESH_ADDRESS__RAW = str
WINDOW_Y0__TYPE = str WINDOW_Y0__TYPE = str
MCONTR_PHY_0BIT_DLY_RST__TYPE = str MCONTR_PHY_0BIT_DLY_RST__TYPE = str
MCONTR_BUF1_WR_ADDR__TYPE = str CLKFBOUT_MULT_AXIHP__RAW = str
BUFFER_DEPTH32__TYPE = str BUFFER_DEPTH32__TYPE = str
MCONTR_TOP_16BIT_STATUS_CNTRL = int MCONTR_TOP_16BIT_STATUS_CNTRL = int
MCONTR_BUF4_RD_ADDR__RAW = str MCONTR_BUF4_RD_ADDR__RAW = str
...@@ -380,8 +399,10 @@ DLY_CMDA = long ...@@ -380,8 +399,10 @@ DLY_CMDA = long
DLY_LANE0_IDELAY__RAW = str DLY_LANE0_IDELAY__RAW = str
MCONTR_ARBIT_ADDR = int MCONTR_ARBIT_ADDR = int
MCNTRL_TEST01_CHN1_STATUS_CNTRL__RAW = str MCNTRL_TEST01_CHN1_STATUS_CNTRL__RAW = str
MEMBRIDGE_CTRL__RAW = str
CLKFBOUT_DIV_REF__TYPE = str CLKFBOUT_DIV_REF__TYPE = str
NUM_CYCLES_04__TYPE = str NUM_CYCLES_04__TYPE = str
WSEL__RAW = str
MCNTRL_SCANLINE_MODE__RAW = str MCNTRL_SCANLINE_MODE__RAW = str
READ_PATTERN_OFFSET__TYPE = str READ_PATTERN_OFFSET__TYPE = str
MCNTRL_TILED_PENDING_CNTR_BITS = int MCNTRL_TILED_PENDING_CNTR_BITS = int
...@@ -390,14 +411,15 @@ MAX_TILE_WIDTH__TYPE = str ...@@ -390,14 +411,15 @@ MAX_TILE_WIDTH__TYPE = str
MCONTR_CMD_WR_ADDR = int MCONTR_CMD_WR_ADDR = int
MCONTR_BUF3_RD_ADDR__RAW = str MCONTR_BUF3_RD_ADDR__RAW = str
CLKIN_PERIOD = int CLKIN_PERIOD = int
MCNTRL_TILED_FRAME_PAGE_RESET__TYPE = str DLY_LANE1_ODELAY__TYPE = str
RSEL__TYPE = str
MCNTRL_TEST01_MASK__RAW = str MCNTRL_TEST01_MASK__RAW = str
MCONTR_PHY_16BIT_ADDR_MASK = int MCONTR_PHY_16BIT_ADDR_MASK = int
MCNTRL_SCANLINE_STATUS_REG_CHN1_ADDR__TYPE = str MCNTRL_SCANLINE_STATUS_REG_CHN1_ADDR__TYPE = str
HIGH_PERFORMANCE_MODE = str HIGH_PERFORMANCE_MODE = str
NUM_CYCLES_07__RAW = str NUM_CYCLES_07__RAW = str
DQTRI_LAST__RAW = str DQTRI_LAST__RAW = str
MCONTR_BUF1_RD_ADDR__RAW = str TILE_WIDTH = int
CLKFBOUT_PHASE = float CLKFBOUT_PHASE = float
DFLT_DQM_PATTERN = int DFLT_DQM_PATTERN = int
MCNTRL_TILED_STATUS_REG_CHN2_ADDR__RAW = str MCNTRL_TILED_STATUS_REG_CHN2_ADDR__RAW = str
...@@ -438,8 +460,8 @@ MCNTRL_PS_CMD__RAW = str ...@@ -438,8 +460,8 @@ MCNTRL_PS_CMD__RAW = str
MCONTR_BUF3_WR_ADDR = int MCONTR_BUF3_WR_ADDR = int
NEWPAR = int NEWPAR = int
MCNTRL_PS_MASK__RAW = str MCNTRL_PS_MASK__RAW = str
AFI_SIZE64__RAW = str
MCONTR_PHY_0BIT_CKE_EN = int MCONTR_PHY_0BIT_CKE_EN = int
MCNTRL_SCANLINE_WINDOW_X0Y0__TYPE = str
BUFFER_DEPTH32 = int BUFFER_DEPTH32 = int
MCNTRL_TILED_CHN2_ADDR__TYPE = str MCNTRL_TILED_CHN2_ADDR__TYPE = str
SLEW_DQS = str SLEW_DQS = str
...@@ -447,6 +469,7 @@ DFLT_REFRESH_ADDR = int ...@@ -447,6 +469,7 @@ DFLT_REFRESH_ADDR = int
MCONTR_WR_MASK = int MCONTR_WR_MASK = int
MCNTRL_SCANLINE_STATUS_REG_CHN1_ADDR = int MCNTRL_SCANLINE_STATUS_REG_CHN1_ADDR = int
TEST01_SUSPEND__RAW = str TEST01_SUSPEND__RAW = str
MEMBRIDGE_STATUS_CNTRL__TYPE = str
T_REFI__TYPE = str T_REFI__TYPE = str
STATUS_DEPTH__RAW = str STATUS_DEPTH__RAW = str
DFLT_DQ_TRI_ON_PATTERN__TYPE = str DFLT_DQ_TRI_ON_PATTERN__TYPE = str
...@@ -454,7 +477,6 @@ MCONTR_TOP_0BIT_ADDR_MASK__RAW = str ...@@ -454,7 +477,6 @@ MCONTR_TOP_0BIT_ADDR_MASK__RAW = str
TEST01_START_FRAME = int TEST01_START_FRAME = int
DQTRI_FIRST__TYPE = str DQTRI_FIRST__TYPE = str
MCONTR_PHY_0BIT_ADDR_MASK__TYPE = str MCONTR_PHY_0BIT_ADDR_MASK__TYPE = str
DLY_LANE0_IDELAY__TYPE = str
T_RFC__RAW = str T_RFC__RAW = str
DLY_CMDA__TYPE = str DLY_CMDA__TYPE = str
CLKFBOUT_MULT__TYPE = str CLKFBOUT_MULT__TYPE = str
...@@ -477,20 +499,24 @@ COLADDR_NUMBER__TYPE = str ...@@ -477,20 +499,24 @@ COLADDR_NUMBER__TYPE = str
MCNTRL_SCANLINE_FRAME_FULL_WIDTH = int MCNTRL_SCANLINE_FRAME_FULL_WIDTH = int
TEST01_SUSPEND__TYPE = str TEST01_SUSPEND__TYPE = str
PICKLE = str PICKLE = str
AFI_SIZE64__TYPE = str
NUM_CYCLES_15__RAW = str NUM_CYCLES_15__RAW = str
MCONTR_PHY_0BIT_ADDR_MASK = int MCONTR_PHY_0BIT_ADDR_MASK = int
MCNTRL_TILED_TILE_WHS__TYPE = str MCNTRL_TILED_TILE_WHS__TYPE = str
DLY_DQ_IDELAY = long DLY_DQ_IDELAY = long
WINDOW_X0 = int WINDOW_X0 = int
DFLT_WBUF_DELAY__TYPE = str DFLT_WBUF_DELAY__TYPE = str
MCNTRL_TEST01_CHN1_STATUS_CNTRL = int INITIALIZE_OFFSET__TYPE = str
LD_DLY_LANE0_ODELAY = int LD_DLY_LANE0_ODELAY = int
SCANLINE_EXTRA_PAGES = int SCANLINE_EXTRA_PAGES = int
READ_PATTERN_OFFSET__RAW = str READ_PATTERN_OFFSET__RAW = str
MCNTRL_SCANLINE_CHN1_ADDR__RAW = str MCNTRL_SCANLINE_CHN1_ADDR__RAW = str
TILE_HEIGHT__RAW = str MEMBRIDGE_LEN64 = int
MEMBRIDGE_SIZE64 = int
PICKLE__TYPE = str PICKLE__TYPE = str
MCONTR_PHY_0BIT_CKE_EN__TYPE = str MCONTR_PHY_0BIT_CKE_EN__TYPE = str
AFI_LO_ADDR64 = int
RSEL = int
MCNTRL_TILED_MODE__TYPE = str MCNTRL_TILED_MODE__TYPE = str
DIVCLK_DIVIDE = int DIVCLK_DIVIDE = int
NUM_CYCLES_07__TYPE = str NUM_CYCLES_07__TYPE = str
...@@ -512,23 +538,25 @@ MCONTR_PHY_0BIT_DLY_RST = int ...@@ -512,23 +538,25 @@ MCONTR_PHY_0BIT_DLY_RST = int
MCONTR_PHY_16BIT_ADDR__TYPE = str MCONTR_PHY_16BIT_ADDR__TYPE = str
TILED_STARTY = int TILED_STARTY = int
TILED_STARTX = int TILED_STARTX = int
MEMBRIDGE_MASK__TYPE = str
AXI_WR_ADDR_BITS__RAW = str AXI_WR_ADDR_BITS__RAW = str
MCONTR_BUF3_RD_ADDR = int MCONTR_BUF3_RD_ADDR = int
DFLT_REFRESH_PERIOD__TYPE = str DFLT_REFRESH_PERIOD__TYPE = str
MCNTRL_TILED_FRAME_FULL_WIDTH__RAW = str MCNTRL_TILED_FRAME_FULL_WIDTH__RAW = str
MCNTRL_TILED_MASK = int MCNTRL_TILED_MASK = int
NUM_CYCLES_03__RAW = str NUM_CYCLES_03__RAW = str
MCONTR_BUF1_WR_ADDR__RAW = str CLKFBOUT_PHASE__TYPE = str
MCONTR_PHY_16BIT_ADDR_MASK__RAW = str MCONTR_PHY_16BIT_ADDR_MASK__RAW = str
DLY_LANE1_DQS_WLV_IDELAY = long DLY_LANE1_DQS_WLV_IDELAY = long
MCNTRL_TILED_WINDOW_WH = int MCNTRL_TILED_WINDOW_WH = int
CLKFBOUT_PHASE__TYPE = str
NUM_CYCLES_06__RAW = str NUM_CYCLES_06__RAW = str
MCNTRL_TILED_WINDOW_X0Y0__TYPE = str MCNTRL_TILED_WINDOW_X0Y0__TYPE = str
NUM_XFER_BITS__RAW = str NUM_XFER_BITS__RAW = str
MCNTRL_TILED_WINDOW_STARTXY__RAW = str MCNTRL_TILED_WINDOW_STARTXY__RAW = str
CLKFBOUT_MULT_AXIHP = int
DLY_CMDA_ODELAY = long DLY_CMDA_ODELAY = long
MCONTR_TOP_0BIT_ADDR = int MCONTR_TOP_0BIT_ADDR = int
MEMBRIDGE_LO_ADDR64__TYPE = str
MCNTRL_SCANLINE_MODE = int MCNTRL_SCANLINE_MODE = int
MCONTR_ARBIT_ADDR_MASK = int MCONTR_ARBIT_ADDR_MASK = int
NUM_CYCLES_05__RAW = str NUM_CYCLES_05__RAW = str
...@@ -541,6 +569,7 @@ MCONTR_TOP_0BIT_REFRESH_EN = int ...@@ -541,6 +569,7 @@ MCONTR_TOP_0BIT_REFRESH_EN = int
MCNTRL_TILED_STATUS_REG_CHN4_ADDR = int MCNTRL_TILED_STATUS_REG_CHN4_ADDR = int
SLEW_CMDA__RAW = str SLEW_CMDA__RAW = str
MCNTRL_TEST01_CHN2_MODE__RAW = str MCNTRL_TEST01_CHN2_MODE__RAW = str
CLKFBOUT_MULT_AXIHP__TYPE = str
LD_DLY_PHASE__RAW = str LD_DLY_PHASE__RAW = str
MCONTR_TOP_STATUS_REG_ADDR__RAW = str MCONTR_TOP_STATUS_REG_ADDR__RAW = str
MCONTR_ARBIT_ADDR__TYPE = str MCONTR_ARBIT_ADDR__TYPE = str
...@@ -560,12 +589,13 @@ MCONTR_BUF2_RD_ADDR = int ...@@ -560,12 +589,13 @@ MCONTR_BUF2_RD_ADDR = int
MCONTR_BUF2_WR_ADDR__TYPE = str MCONTR_BUF2_WR_ADDR__TYPE = str
NUM_CYCLES_02__TYPE = str NUM_CYCLES_02__TYPE = str
DQTRI_LAST__TYPE = str DQTRI_LAST__TYPE = str
TILE_WIDTH = int TEST_INITIAL_BURST = int
FRAME_HEIGHT_BITS__RAW = str FRAME_HEIGHT_BITS__RAW = str
MCNTRL_TILED_STARTADDR = int MCNTRL_TILED_STARTADDR = int
WINDOW_HEIGHT__TYPE = str WINDOW_HEIGHT__TYPE = str
MCNTRL_TILED_FRAME_FULL_WIDTH = int MCNTRL_TILED_FRAME_FULL_WIDTH = int
TILE_HEIGHT__TYPE = str TILE_HEIGHT__TYPE = str
CLKFBOUT_DIV_AXIHP__TYPE = str
MCNTRL_TILED_CHN4_ADDR__TYPE = str MCNTRL_TILED_CHN4_ADDR__TYPE = str
FRAME_HEIGHT_BITS = int FRAME_HEIGHT_BITS = int
MCONTR_PHY_16BIT_ADDR_MASK__TYPE = str MCONTR_PHY_16BIT_ADDR_MASK__TYPE = str
...@@ -590,15 +620,16 @@ REF_JITTER1__TYPE = str ...@@ -590,15 +620,16 @@ REF_JITTER1__TYPE = str
MCNTRL_SCANLINE_MODE__TYPE = str MCNTRL_SCANLINE_MODE__TYPE = str
MCONTR_PHY_16BIT_PATTERNS_TRI = int MCONTR_PHY_16BIT_PATTERNS_TRI = int
DLY_CMDA__RAW = str DLY_CMDA__RAW = str
NUM_CYCLES_LOW_BIT = int MEMBRIDGE_MASK = int
READ_BLOCK_OFFSET = int READ_BLOCK_OFFSET = int
T_REFI__RAW = str T_REFI__RAW = str
STATUS_MSB_RSHFT = int STATUS_MSB_RSHFT = int
BUFFER_DEPTH32__RAW = str BUFFER_DEPTH32__RAW = str
RSEL__RAW = str
CLKIN_PERIOD__TYPE = str CLKIN_PERIOD__TYPE = str
DIVCLK_DIVIDE__RAW = str DIVCLK_DIVIDE__RAW = str
DLY_LANE0_ODELAY__TYPE = str DLY_LANE0_ODELAY__TYPE = str
COLADDR_NUMBER = int DLY_LANE0_IDELAY = long
SDCLK_PHASE__TYPE = str SDCLK_PHASE__TYPE = str
SCANLINE_STARTY__TYPE = str SCANLINE_STARTY__TYPE = str
REFRESH_OFFSET__RAW = str REFRESH_OFFSET__RAW = str
...@@ -607,14 +638,17 @@ MCNTRL_TEST01_CHN1_MODE__RAW = str ...@@ -607,14 +638,17 @@ MCNTRL_TEST01_CHN1_MODE__RAW = str
MCONTR_BUF4_RD_ADDR__TYPE = str MCONTR_BUF4_RD_ADDR__TYPE = str
LD_DLY_LANE0_ODELAY__TYPE = str LD_DLY_LANE0_ODELAY__TYPE = str
MCONTR_TOP_16BIT_ADDR__RAW = str MCONTR_TOP_16BIT_ADDR__RAW = str
MEMBRIDGE_LO_ADDR64 = int
MCNTRL_SCANLINE_PENDING_CNTR_BITS = int MCNTRL_SCANLINE_PENDING_CNTR_BITS = int
DFLT_DQS_TRI_ON_PATTERN__TYPE = str DFLT_DQS_TRI_ON_PATTERN__TYPE = str
MCONTR_PHY_0BIT_SDRST_ACT__TYPE = str MCONTR_PHY_0BIT_SDRST_ACT__TYPE = str
TILED_KEEP_OPEN__RAW = str TILED_KEEP_OPEN__RAW = str
MCNTRL_SCANLINE_STARTADDR = int MCNTRL_SCANLINE_STARTADDR = int
MEMBRIDGE_WIDTH64__RAW = str
MCONTR_TOP_0BIT_ADDR__TYPE = str MCONTR_TOP_0BIT_ADDR__TYPE = str
CLKFBOUT_MULT_REF__TYPE = str CLKFBOUT_MULT_REF__TYPE = str
MCNTRL_PS_CMD__TYPE = str MCNTRL_PS_CMD__TYPE = str
MEMBRIDGE_START64__RAW = str
STATUS_MSB_RSHFT__RAW = str STATUS_MSB_RSHFT__RAW = str
STATUS_PSHIFTER_RDY_MASK = int STATUS_PSHIFTER_RDY_MASK = int
NUM_CYCLES_04__RAW = str NUM_CYCLES_04__RAW = str
...@@ -632,6 +666,8 @@ MCNTRL_SCANLINE_FRAME_PAGE_RESET__TYPE = str ...@@ -632,6 +666,8 @@ MCNTRL_SCANLINE_FRAME_PAGE_RESET__TYPE = str
VERBOSE__RAW = str VERBOSE__RAW = str
WBUF_DLY_WLV = int WBUF_DLY_WLV = int
MCONTR_BUF3_WR_ADDR__RAW = str MCONTR_BUF3_WR_ADDR__RAW = str
MEMBRIDGE_LO_ADDR64__RAW = str
MEMBRIDGE_WIDTH64 = int
MCNTRL_TEST01_CHN3_MODE = int MCNTRL_TEST01_CHN3_MODE = int
LD_DLY_PHASE__TYPE = str LD_DLY_PHASE__TYPE = str
MCONTR_PHY_0BIT_ADDR__TYPE = str MCONTR_PHY_0BIT_ADDR__TYPE = str
...@@ -644,11 +680,12 @@ STATUS_ADDR_MASK__RAW = str ...@@ -644,11 +680,12 @@ STATUS_ADDR_MASK__RAW = str
MCNTRL_SCANLINE_CHN3_ADDR = int MCNTRL_SCANLINE_CHN3_ADDR = int
DLY_SET__TYPE = str DLY_SET__TYPE = str
MCONTR_TOP_16BIT_ADDR = int MCONTR_TOP_16BIT_ADDR = int
MCONTR_BUF1_RD_ADDR__TYPE = str
DLY_DM_ODELAY = long DLY_DM_ODELAY = long
MEMBRIDGE_STATUS_CNTRL__RAW = str
MCONTR_TOP_16BIT_REFRESH_ADDRESS = int MCONTR_TOP_16BIT_REFRESH_ADDRESS = int
DFLT_DQS_TRI_OFF_PATTERN__RAW = str DFLT_DQS_TRI_OFF_PATTERN__RAW = str
FRAME_FULL_WIDTH = int FRAME_FULL_WIDTH = int
MEMBRIDGE_STATUS_REG = int
NUM_CYCLES_13 = int NUM_CYCLES_13 = int
NUM_CYCLES_12 = int NUM_CYCLES_12 = int
NUM_CYCLES_11 = int NUM_CYCLES_11 = int
...@@ -690,7 +727,7 @@ CLKIN_PERIOD__RAW = str ...@@ -690,7 +727,7 @@ CLKIN_PERIOD__RAW = str
INITIALIZE_OFFSET = int INITIALIZE_OFFSET = int
MCNTRL_PS_MASK__TYPE = str MCNTRL_PS_MASK__TYPE = str
CLK_DIV_PHASE__RAW = str CLK_DIV_PHASE__RAW = str
LD_DLY_LANE1_IDELAY = int MCNTRL_PS_EN_RST__TYPE = str
MCONTR_PHY_16BIT_PATTERNS__TYPE = str MCONTR_PHY_16BIT_PATTERNS__TYPE = str
MCONTR_PHY_0BIT_CKE_EN__RAW = str MCONTR_PHY_0BIT_CKE_EN__RAW = str
PICKLE__RAW = str PICKLE__RAW = str
...@@ -727,6 +764,7 @@ MCLK_PHASE__RAW = str ...@@ -727,6 +764,7 @@ MCLK_PHASE__RAW = str
MCONTR_TOP_16BIT_REFRESH_PERIOD = int MCONTR_TOP_16BIT_REFRESH_PERIOD = int
T_REFI = int T_REFI = int
MCNTRL_TILED_FRAME_FULL_WIDTH__TYPE = str MCNTRL_TILED_FRAME_FULL_WIDTH__TYPE = str
WSEL__TYPE = str
STATUS_SEQ_SHFT__TYPE = str STATUS_SEQ_SHFT__TYPE = str
DFLT_CHN_EN__TYPE = str DFLT_CHN_EN__TYPE = str
MCNTRL_SCANLINE_PENDING_CNTR_BITS__RAW = str MCNTRL_SCANLINE_PENDING_CNTR_BITS__RAW = str
...@@ -747,15 +785,17 @@ SS_EN = str ...@@ -747,15 +785,17 @@ SS_EN = str
DLY_LANE0_ODELAY = long DLY_LANE0_ODELAY = long
CLKFBOUT_DIV_REF = int CLKFBOUT_DIV_REF = int
WRITELEV_OFFSET = int WRITELEV_OFFSET = int
MEMBRIDGE_ADDR__TYPE = str
MCONTR_TOP_16BIT_ADDR_MASK__TYPE = str MCONTR_TOP_16BIT_ADDR_MASK__TYPE = str
VERBOSE__TYPE = str VERBOSE__TYPE = str
TILED_KEEP_OPEN = int TILED_KEEP_OPEN = int
MCNTRL_SCANLINE_MASK__RAW = str MCNTRL_SCANLINE_MASK__RAW = str
MCNTRL_SCANLINE_WINDOW_STARTXY = int MCNTRL_SCANLINE_WINDOW_STARTXY = int
TEST_INITIAL_BURST = int
MCONTR_ARBIT_ADDR__RAW = str MCONTR_ARBIT_ADDR__RAW = str
MEMBRIDGE_MASK__RAW = str
MCNTRL_TEST01_ADDR = int MCNTRL_TEST01_ADDR = int
MCONTR_TOP_0BIT_MCONTR_EN__TYPE = str MCONTR_TOP_0BIT_MCONTR_EN__TYPE = str
MEMBRIDGE_CTRL__TYPE = str
MCONTR_BUF4_WR_ADDR__RAW = str MCONTR_BUF4_WR_ADDR__RAW = str
TILED_KEEP_OPEN__TYPE = str TILED_KEEP_OPEN__TYPE = str
CONTROL_ADDR_MASK__TYPE = str CONTROL_ADDR_MASK__TYPE = str
...@@ -771,6 +811,7 @@ REFRESH_OFFSET__TYPE = str ...@@ -771,6 +811,7 @@ REFRESH_OFFSET__TYPE = str
DFLT_INV_CLK_DIV__TYPE = str DFLT_INV_CLK_DIV__TYPE = str
MAX_TILE_WIDTH = int MAX_TILE_WIDTH = int
CHNBUF_READ_LATENCY__RAW = str CHNBUF_READ_LATENCY__RAW = str
MEMBRIDGE_STATUS_REG__TYPE = str
MCONTR_BUF4_RD_ADDR = int MCONTR_BUF4_RD_ADDR = int
SS_MOD_PERIOD__TYPE = str SS_MOD_PERIOD__TYPE = str
MCNTRL_PS_STATUS_REG_ADDR__TYPE = str MCNTRL_PS_STATUS_REG_ADDR__TYPE = str
...@@ -783,6 +824,7 @@ INITIALIZE_OFFSET__RAW = str ...@@ -783,6 +824,7 @@ INITIALIZE_OFFSET__RAW = str
CMD_DONE_BIT__RAW = str CMD_DONE_BIT__RAW = str
MCONTR_TOP_0BIT_REFRESH_EN__TYPE = str MCONTR_TOP_0BIT_REFRESH_EN__TYPE = str
CLK_DIV_PHASE = float CLK_DIV_PHASE = float
MEMBRIDGE_STATUS_REG__RAW = str
MCONTR_TOP_16BIT_REFRESH_PERIOD__TYPE = str MCONTR_TOP_16BIT_REFRESH_PERIOD__TYPE = str
MCNTRL_TEST01_CHN4_STATUS_CNTRL__RAW = str MCNTRL_TEST01_CHN4_STATUS_CNTRL__RAW = str
MCONTR_BUF0_WR_ADDR__TYPE = str MCONTR_BUF0_WR_ADDR__TYPE = str
......
...@@ -187,19 +187,19 @@ class X393AxiControlStatus(object): ...@@ -187,19 +187,19 @@ class X393AxiControlStatus(object):
timeout=10.0): # maximal timeout (0 - no timeout) timeout=10.0): # maximal timeout (0 - no timeout)
""" """
Poll specified status register until some condition is matched Poll specified status register until some condition is matched
<status_address> - status register address (currently 0..255) @param status_address status register address (currently 0..255)
<status_control_address> - control register address (to control status generation) @param status_control_address> - control register address (to control status generation)
<status_mode> - status generation mode: @param status_mode status generation mode:
0: disable status generation, 0: disable status generation,
1: single status request, 1: single status request,
2: auto status, keep specified seq number, 2: auto status, keep specified seq number,
4: auto, inc sequence number 4: auto, inc sequence number
<pattern> - 26-bit pattern to match @param pattern 26-bit pattern to match
<mask> - 26-bit mask to enable pattern matching (0-s - ignore) @param mask 26-bit mask to enable pattern matching (0-s - ignore)
<invert_match> - invert match (wait until matching condition becomes false) @param invert_match invert match (wait until matching condition becomes false)
<wait_seq>- wait for the correct sequence number, if False - assume always correct @param wait_seq wait for the correct sequence number, if False - assume always correct
<timeout> maximal time to wait for condition @param timeout maximal time to wait for condition
Return 1 if success, 0 - if timeout @return 1 if success, 0 - if timeout
""" """
match=False match=False
endTime=None endTime=None
...@@ -245,10 +245,11 @@ class X393AxiControlStatus(object): ...@@ -245,10 +245,11 @@ class X393AxiControlStatus(object):
print ("MCNTRL_SCANLINE_STATUS_REG_CHN3_ADDR:%s"%(hx(self.read_status(vrlg.MCNTRL_SCANLINE_STATUS_REG_CHN3_ADDR),8))) print ("MCNTRL_SCANLINE_STATUS_REG_CHN3_ADDR:%s"%(hx(self.read_status(vrlg.MCNTRL_SCANLINE_STATUS_REG_CHN3_ADDR),8)))
print ("MCNTRL_TILED_STATUS_REG_CHN2_ADDR: %s"%(hx(self.read_status(vrlg.MCNTRL_TILED_STATUS_REG_CHN2_ADDR),8))) print ("MCNTRL_TILED_STATUS_REG_CHN2_ADDR: %s"%(hx(self.read_status(vrlg.MCNTRL_TILED_STATUS_REG_CHN2_ADDR),8)))
print ("MCNTRL_TILED_STATUS_REG_CHN4_ADDR: %s"%(hx(self.read_status(vrlg.MCNTRL_TILED_STATUS_REG_CHN4_ADDR),8))) print ("MCNTRL_TILED_STATUS_REG_CHN4_ADDR: %s"%(hx(self.read_status(vrlg.MCNTRL_TILED_STATUS_REG_CHN4_ADDR),8)))
print ("MCNTRL_TEST01_STATUS_REG_CHN1_ADDR: %s"%(hx(self.read_status(vrlg.MCNTRL_TEST01_STATUS_REG_CHN1_ADDR),8))) # print ("MCNTRL_TEST01_STATUS_REG_CHN1_ADDR: %s"%(hx(self.read_status(vrlg.MCNTRL_TEST01_STATUS_REG_CHN1_ADDR),8)))
print ("MCNTRL_TEST01_STATUS_REG_CHN2_ADDR: %s"%(hx(self.read_status(vrlg.MCNTRL_TEST01_STATUS_REG_CHN2_ADDR),8))) print ("MCNTRL_TEST01_STATUS_REG_CHN2_ADDR: %s"%(hx(self.read_status(vrlg.MCNTRL_TEST01_STATUS_REG_CHN2_ADDR),8)))
print ("MCNTRL_TEST01_STATUS_REG_CHN3_ADDR: %s"%(hx(self.read_status(vrlg.MCNTRL_TEST01_STATUS_REG_CHN3_ADDR),8))) print ("MCNTRL_TEST01_STATUS_REG_CHN3_ADDR: %s"%(hx(self.read_status(vrlg.MCNTRL_TEST01_STATUS_REG_CHN3_ADDR),8)))
print ("MCNTRL_TEST01_STATUS_REG_CHN4_ADDR: %s"%(hx(self.read_status(vrlg.MCNTRL_TEST01_STATUS_REG_CHN4_ADDR),8))) print ("MCNTRL_TEST01_STATUS_REG_CHN4_ADDR: %s"%(hx(self.read_status(vrlg.MCNTRL_TEST01_STATUS_REG_CHN4_ADDR),8)))
print ("MEMBRIDGE_STATUS_REG: %s"%(hx(self.read_status(vrlg.MEMBRIDGE_STATUS_REG),8)))
def program_status(self, def program_status(self,
base_addr, # input [29:0] base_addr; base_addr, # input [29:0] base_addr;
...@@ -289,10 +290,11 @@ class X393AxiControlStatus(object): ...@@ -289,10 +290,11 @@ class X393AxiControlStatus(object):
self.program_status (vrlg.MCNTRL_SCANLINE_CHN3_ADDR, vrlg.MCNTRL_SCANLINE_STATUS_CNTRL, mode,seq_num)# //MCNTRL_SCANLINE_STATUS_REG_CHN3_ADDR='h5, self.program_status (vrlg.MCNTRL_SCANLINE_CHN3_ADDR, vrlg.MCNTRL_SCANLINE_STATUS_CNTRL, mode,seq_num)# //MCNTRL_SCANLINE_STATUS_REG_CHN3_ADDR='h5,
self.program_status (vrlg.MCNTRL_TILED_CHN2_ADDR, vrlg.MCNTRL_TILED_STATUS_CNTRL, mode,seq_num)# //MCNTRL_TILED_STATUS_REG_CHN4_ADDR= 'h6, self.program_status (vrlg.MCNTRL_TILED_CHN2_ADDR, vrlg.MCNTRL_TILED_STATUS_CNTRL, mode,seq_num)# //MCNTRL_TILED_STATUS_REG_CHN4_ADDR= 'h6,
self.program_status (vrlg.MCNTRL_TILED_CHN4_ADDR, vrlg.MCNTRL_TILED_STATUS_CNTRL, mode,seq_num)#; //MCNTRL_TILED_STATUS_REG_CHN4_ADDR= 'h6, self.program_status (vrlg.MCNTRL_TILED_CHN4_ADDR, vrlg.MCNTRL_TILED_STATUS_CNTRL, mode,seq_num)#; //MCNTRL_TILED_STATUS_REG_CHN4_ADDR= 'h6,
self.program_status (vrlg.MCNTRL_TEST01_ADDR, vrlg.MCNTRL_TEST01_CHN1_STATUS_CNTRL,mode,seq_num)#; //MCNTRL_TEST01_STATUS_REG_CHN2_ADDR= 'h3c, # self.program_status (vrlg.MCNTRL_TEST01_ADDR, vrlg.MCNTRL_TEST01_CHN1_STATUS_CNTRL,mode,seq_num)#; //MCNTRL_TEST01_STATUS_REG_CHN2_ADDR= 'h3c,
self.program_status (vrlg.MCNTRL_TEST01_ADDR, vrlg.MCNTRL_TEST01_CHN2_STATUS_CNTRL,mode,seq_num)#; //MCNTRL_TEST01_STATUS_REG_CHN2_ADDR= 'h3c, self.program_status (vrlg.MCNTRL_TEST01_ADDR, vrlg.MCNTRL_TEST01_CHN2_STATUS_CNTRL,mode,seq_num)#; //MCNTRL_TEST01_STATUS_REG_CHN2_ADDR= 'h3c,
self.program_status (vrlg.MCNTRL_TEST01_ADDR, vrlg.MCNTRL_TEST01_CHN3_STATUS_CNTRL,mode,seq_num)#; //MCNTRL_TEST01_STATUS_REG_CHN3_ADDR= 'h3d, self.program_status (vrlg.MCNTRL_TEST01_ADDR, vrlg.MCNTRL_TEST01_CHN3_STATUS_CNTRL,mode,seq_num)#; //MCNTRL_TEST01_STATUS_REG_CHN3_ADDR= 'h3d,
self.program_status (vrlg.MCNTRL_TEST01_ADDR, vrlg.MCNTRL_TEST01_CHN4_STATUS_CNTRL,mode,seq_num)#; //MCNTRL_TEST01_STATUS_REG_CHN4_ADDR= 'h3e, self.program_status (vrlg.MCNTRL_TEST01_ADDR, vrlg.MCNTRL_TEST01_CHN4_STATUS_CNTRL,mode,seq_num)#; //MCNTRL_TEST01_STATUS_REG_CHN4_ADDR= 'h3e,
self.program_status (vrlg.MEMBRIDGE_ADDR, vrlg.MEMBRIDGE_STATUS_CNTRL, mode,seq_num)#; //MCNTRL_TEST01_STATUS_REG_CHN4_ADDR= 'h3e,
def enable_cmda(self, def enable_cmda(self,
en): # input en; en): # input en;
......
...@@ -5007,6 +5007,7 @@ write_settings= { ...@@ -5007,6 +5007,7 @@ write_settings= {
quiet=3): quiet=3):
""" """
@param tasks - "*" - load bitfile @param tasks - "*" - load bitfile
"I" - initialize memory, set defaults
"C" cmda, "W' - write levelling, "R" - read levelling (DQI-DQSI), "P" - dqs input phase (DQSI-PHASE), "C" cmda, "W' - write levelling, "R" - read levelling (DQI-DQSI), "P" - dqs input phase (DQSI-PHASE),
"O" - output timing (DQ odelay vs DQS odelay), "A" - address/bank lines output delays, "Z" - print results, "O" - output timing (DQ odelay vs DQS odelay), "A" - address/bank lines output delays, "Z" - print results,
"B" - select R/W brances and get the optimal phase "B" - select R/W brances and get the optimal phase
......
...@@ -77,7 +77,7 @@ class X393McntrlBuffers(object): ...@@ -77,7 +77,7 @@ class X393McntrlBuffers(object):
if self.DEBUG_MODE > 1: if self.DEBUG_MODE > 1:
print("====== write_block_scanline_chn:%d page: %x X=0x%x Y=0x%x num=%dt"%(chn, page, startX, startY,num_bursts)) print("====== write_block_scanline_chn:%d page: %x X=0x%x Y=0x%x num=%dt"%(chn, page, startX, startY,num_bursts))
if chn == 0: start_addr=vrlg.MCONTR_BUF0_WR_ADDR + (page << 8) if chn == 0: start_addr=vrlg.MCONTR_BUF0_WR_ADDR + (page << 8)
elif chn == 1: start_addr=vrlg.MCONTR_BUF1_WR_ADDR + (page << 8) # elif chn == 1: start_addr=vrlg.MCONTR_BUF1_WR_ADDR + (page << 8)
elif chn == 2: start_addr=vrlg.MCONTR_BUF2_WR_ADDR + (page << 8) elif chn == 2: start_addr=vrlg.MCONTR_BUF2_WR_ADDR + (page << 8)
elif chn == 3: start_addr=vrlg.MCONTR_BUF3_WR_ADDR + (page << 8) elif chn == 3: start_addr=vrlg.MCONTR_BUF3_WR_ADDR + (page << 8)
elif chn == 4: start_addr=vrlg.MCONTR_BUF4_WR_ADDR + (page << 8) elif chn == 4: start_addr=vrlg.MCONTR_BUF4_WR_ADDR + (page << 8)
...@@ -154,7 +154,7 @@ class X393McntrlBuffers(object): ...@@ -154,7 +154,7 @@ class X393McntrlBuffers(object):
print("===") print("===")
start_addr=-1 start_addr=-1
if chn==0:start_addr=vrlg.MCONTR_BUF0_WR_ADDR + (page << 8) if chn==0:start_addr=vrlg.MCONTR_BUF0_WR_ADDR + (page << 8)
elif chn==1:start_addr=vrlg.MCONTR_BUF1_WR_ADDR + (page << 8) # elif chn==1:start_addr=vrlg.MCONTR_BUF1_WR_ADDR + (page << 8)
elif chn==2:start_addr=vrlg.MCONTR_BUF2_WR_ADDR + (page << 8) elif chn==2:start_addr=vrlg.MCONTR_BUF2_WR_ADDR + (page << 8)
elif chn==3:start_addr=vrlg.MCONTR_BUF3_WR_ADDR + (page << 8) elif chn==3:start_addr=vrlg.MCONTR_BUF3_WR_ADDR + (page << 8)
elif chn==4:start_addr=vrlg.MCONTR_BUF4_WR_ADDR + (page << 8) elif chn==4:start_addr=vrlg.MCONTR_BUF4_WR_ADDR + (page << 8)
...@@ -221,7 +221,7 @@ class X393McntrlBuffers(object): ...@@ -221,7 +221,7 @@ class X393McntrlBuffers(object):
""" """
start_addr=-1 start_addr=-1
if chn==0: start_addr=vrlg.MCONTR_BUF0_RD_ADDR + (page << 8) if chn==0: start_addr=vrlg.MCONTR_BUF0_RD_ADDR + (page << 8)
elif chn==1: start_addr=vrlg.MCONTR_BUF1_RD_ADDR + (page << 8) # elif chn==1: start_addr=vrlg.MCONTR_BUF1_RD_ADDR + (page << 8)
elif chn==2: start_addr=vrlg.MCONTR_BUF2_RD_ADDR + (page << 8) elif chn==2: start_addr=vrlg.MCONTR_BUF2_RD_ADDR + (page << 8)
elif chn==3: start_addr=vrlg.MCONTR_BUF3_RD_ADDR + (page << 8) elif chn==3: start_addr=vrlg.MCONTR_BUF3_RD_ADDR + (page << 8)
elif chn==4: start_addr=vrlg.MCONTR_BUF4_RD_ADDR + (page << 8) elif chn==4: start_addr=vrlg.MCONTR_BUF4_RD_ADDR + (page << 8)
......
...@@ -333,22 +333,24 @@ class X393McntrlTests(object): ...@@ -333,22 +333,24 @@ class X393McntrlTests(object):
pages_per_row= (window_width>>vrlg.NUM_XFER_BITS)+(0,1)[(window_width & ((1<<vrlg.NUM_XFER_BITS))-1)==0] # (window_width>>NUM_XFER_BITS)+((window_width[NUM_XFER_BITS-1:0]==0)?0:1); pages_per_row= (window_width>>vrlg.NUM_XFER_BITS)+(0,1)[(window_width & ((1<<vrlg.NUM_XFER_BITS))-1)==0] # (window_width>>NUM_XFER_BITS)+((window_width[NUM_XFER_BITS-1:0]==0)?0:1);
print("====== test_scanline_write: channel=%d, extra_pages=%d, wait_done=%d"% print("====== test_scanline_write: channel=%d, extra_pages=%d, wait_done=%d"%
(channel, extra_pages, wait_done)) (channel, extra_pages, wait_done))
'''
if channel == 1: if channel == 1:
start_addr= vrlg.MCNTRL_SCANLINE_CHN1_ADDR start_addr= vrlg.MCNTRL_SCANLINE_CHN1_ADDR
status_address= vrlg.MCNTRL_TEST01_STATUS_REG_CHN1_ADDR status_address= vrlg.MCNTRL_TEST01_STATUS_REG_CHN1_ADDR
status_control_address= vrlg.MCNTRL_TEST01_ADDR + vrlg.MCNTRL_TEST01_CHN1_STATUS_CNTRL status_control_address= vrlg.MCNTRL_TEST01_ADDR + vrlg.MCNTRL_TEST01_CHN1_STATUS_CNTRL
test_mode_address= vrlg.MCNTRL_TEST01_ADDR + vrlg.MCNTRL_TEST01_CHN1_MODE test_mode_address= vrlg.MCNTRL_TEST01_ADDR + vrlg.MCNTRL_TEST01_CHN1_MODE
elif channel == 3: '''
if channel == 3:
start_addr= vrlg.MCNTRL_SCANLINE_CHN3_ADDR start_addr= vrlg.MCNTRL_SCANLINE_CHN3_ADDR
status_address= vrlg.MCNTRL_TEST01_STATUS_REG_CHN3_ADDR status_address= vrlg.MCNTRL_TEST01_STATUS_REG_CHN3_ADDR
status_control_address= vrlg.MCNTRL_TEST01_ADDR + vrlg.MCNTRL_TEST01_CHN3_STATUS_CNTRL status_control_address= vrlg.MCNTRL_TEST01_ADDR + vrlg.MCNTRL_TEST01_CHN3_STATUS_CNTRL
test_mode_address= vrlg.MCNTRL_TEST01_ADDR + vrlg.MCNTRL_TEST01_CHN3_MODE test_mode_address= vrlg.MCNTRL_TEST01_ADDR + vrlg.MCNTRL_TEST01_CHN3_MODE
else: else:
print("**** ERROR: Invalid channel, only 1 and 3 are valid") print("**** ERROR: Invalid channel, only 3 is valid")
start_addr= vrlg.MCNTRL_SCANLINE_CHN1_ADDR start_addr= vrlg.MCNTRL_SCANLINE_CHN1_ADDR
status_address= vrlg.MCNTRL_TEST01_STATUS_REG_CHN1_ADDR status_address= vrlg.MCNTRL_TEST01_STATUS_REG_CHN3_ADDR
status_control_address= vrlg.MCNTRL_TEST01_ADDR + vrlg.MCNTRL_TEST01_CHN1_STATUS_CNTRL status_control_address= vrlg.MCNTRL_TEST01_ADDR + vrlg.MCNTRL_TEST01_CHN3_STATUS_CNTRL
test_mode_address= vrlg.MCNTRL_TEST01_ADDR + vrlg.MCNTRL_TEST01_CHN1_MODE test_mode_address= vrlg.MCNTRL_TEST01_ADDR + vrlg.MCNTRL_TEST01_CHN3_MODE
mode= self.func_encode_mode_scanline( mode= self.func_encode_mode_scanline(
extra_pages, extra_pages,
...@@ -452,22 +454,24 @@ class X393McntrlTests(object): ...@@ -452,22 +454,24 @@ class X393McntrlTests(object):
print("====== test_scanline_read: channel=%d, extra_pages=%d, show_data=%d"% print("====== test_scanline_read: channel=%d, extra_pages=%d, show_data=%d"%
(channel, extra_pages, show_data)) (channel, extra_pages, show_data))
'''
if channel == 1: if channel == 1:
start_addr= vrlg.MCNTRL_SCANLINE_CHN1_ADDR start_addr= vrlg.MCNTRL_SCANLINE_CHN1_ADDR
status_address= vrlg.MCNTRL_TEST01_STATUS_REG_CHN1_ADDR status_address= vrlg.MCNTRL_TEST01_STATUS_REG_CHN1_ADDR
status_control_address= vrlg.MCNTRL_TEST01_ADDR + vrlg.MCNTRL_TEST01_CHN1_STATUS_CNTRL status_control_address= vrlg.MCNTRL_TEST01_ADDR + vrlg.MCNTRL_TEST01_CHN1_STATUS_CNTRL
test_mode_address= vrlg.MCNTRL_TEST01_ADDR + vrlg.MCNTRL_TEST01_CHN1_MODE test_mode_address= vrlg.MCNTRL_TEST01_ADDR + vrlg.MCNTRL_TEST01_CHN1_MODE
elif channel == 3: '''
if channel == 3:
start_addr= vrlg.MCNTRL_SCANLINE_CHN3_ADDR start_addr= vrlg.MCNTRL_SCANLINE_CHN3_ADDR
status_address= vrlg.MCNTRL_TEST01_STATUS_REG_CHN3_ADDR status_address= vrlg.MCNTRL_TEST01_STATUS_REG_CHN3_ADDR
status_control_address= vrlg.MCNTRL_TEST01_ADDR + vrlg.MCNTRL_TEST01_CHN3_STATUS_CNTRL status_control_address= vrlg.MCNTRL_TEST01_ADDR + vrlg.MCNTRL_TEST01_CHN3_STATUS_CNTRL
test_mode_address= vrlg.MCNTRL_TEST01_ADDR + vrlg.MCNTRL_TEST01_CHN3_MODE test_mode_address= vrlg.MCNTRL_TEST01_ADDR + vrlg.MCNTRL_TEST01_CHN3_MODE
else: else:
print("**** ERROR: Invalid channel, only 1 and 3 are valid") print("**** ERROR: Invalid channel, only 3 is valid")
start_addr= vrlg.MCNTRL_SCANLINE_CHN1_ADDR start_addr= vrlg.MCNTRL_SCANLINE_CHN1_ADDR
status_address= vrlg.MCNTRL_TEST01_STATUS_REG_CHN1_ADDR status_address= vrlg.MCNTRL_TEST01_STATUS_REG_CHN3_ADDR
status_control_address= vrlg.MCNTRL_TEST01_ADDR + vrlg.MCNTRL_TEST01_CHN1_STATUS_CNTRL status_control_address= vrlg.MCNTRL_TEST01_ADDR + vrlg.MCNTRL_TEST01_CHN3_STATUS_CNTRL
test_mode_address= vrlg.MCNTRL_TEST01_ADDR + vrlg.MCNTRL_TEST01_CHN1_MODE test_mode_address= vrlg.MCNTRL_TEST01_ADDR + vrlg.MCNTRL_TEST01_CHN3_MODE
mode= self.func_encode_mode_scanline( mode= self.func_encode_mode_scanline(
extra_pages, extra_pages,
0, # write_mem, 0, # write_mem,
......
...@@ -44,11 +44,12 @@ class X393Mem(object): ...@@ -44,11 +44,12 @@ class X393Mem(object):
def __init__(self, debug_mode=1,dry_mode=True): def __init__(self, debug_mode=1,dry_mode=True):
self.DEBUG_MODE=debug_mode self.DEBUG_MODE=debug_mode
self.DRY_MODE=dry_mode self.DRY_MODE=dry_mode
def write_mem (self,addr, data): def write_mem (self,addr, data,quiet=1):
""" """
Write 32-bit word to physical memory Write 32-bit word to physical memory
<addr> - physical byte address @param addr - physical byte address
<data> - 32-bit data to write @param data - 32-bit data to write
@param quiet - reduce output
""" """
if self.DRY_MODE: if self.DRY_MODE:
print ("simulated: write_mem(0x%x,0x%x)"%(addr,data)) print ("simulated: write_mem(0x%x,0x%x)"%(addr,data))
...@@ -62,7 +63,7 @@ class X393Mem(object): ...@@ -62,7 +63,7 @@ class X393Mem(object):
packedData=struct.pack(self.ENDIAN+"L",data) packedData=struct.pack(self.ENDIAN+"L",data)
d=struct.unpack(self.ENDIAN+"L",packedData)[0] d=struct.unpack(self.ENDIAN+"L",packedData)[0]
mm[page_offs:page_offs+4]=packedData mm[page_offs:page_offs+4]=packedData
if self.DEBUG_MODE > 2: if quiet <1:
print ("0x%08x <== 0x%08x (%d)"%(addr,d,d)) print ("0x%08x <== 0x%08x (%d)"%(addr,d,d))
''' '''
if MONITOR_EMIO and VEBOSE: if MONITOR_EMIO and VEBOSE:
...@@ -74,10 +75,11 @@ class X393Mem(object): ...@@ -74,10 +75,11 @@ class X393Mem(object):
exit (0) exit (0)
''' '''
def read_mem (self,addr): def read_mem (self,addr,quiet=1):
''' '''
Read 32-bit word from physical memory Read 32-bit word from physical memory
<addr> - physical byte address @param addr physical byte address
@param quiet - reduce output
''' '''
if self.DRY_MODE: if self.DRY_MODE:
print ("simulated: read_mem(0x%x)"%(addr)) print ("simulated: read_mem(0x%x)"%(addr))
...@@ -90,45 +92,102 @@ class X393Mem(object): ...@@ -90,45 +92,102 @@ class X393Mem(object):
mm = mmap.mmap(f.fileno(), self.PAGE_SIZE, offset=page_addr) mm = mmap.mmap(f.fileno(), self.PAGE_SIZE, offset=page_addr)
data=struct.unpack(self.ENDIAN+"L",mm[page_offs:page_offs+4]) data=struct.unpack(self.ENDIAN+"L",mm[page_offs:page_offs+4])
d=data[0] d=data[0]
if self.DEBUG_MODE > 2: if quiet < 1:
print ("0x%08x ==> 0x%08x (%d)"%(addr,d,d)) print ("0x%08x ==> 0x%08x (%d)"%(addr,d,d))
return d return d
# mm.close() #probably not needed with "with"
def mem_dump (self,start_addr,end_addr=0): def mem_dump (self, start_addr, end_addr=1, byte_mode=4):
''' '''
Read and print memory range from physical memory Read and print memory range from physical memory
<start_addr> - physical byte start address @param start_addr physical byte start address
<end_addr> - physical byte end address (inclusive) @param end_addr physical byte end address (inclusive), if negative/less than start_addr - number of items
Returns list of read values @param byte_mode number of bytes per item (1,2,4,8)
@return list of read values
''' '''
frmt_bytes={1:'B',2:'H',4:'L',8:'Q'}
bytes_per_line_mask={1:0x1f,2:0x1f,4:0x3f,8:0x3f}
default_byte_mode=4
if not byte_mode in frmt_bytes.keys():
print ("Invalid byte mode: '%s'. Only %s are supported. Using %d"%(str(byte_mode),str(frmt_bytes.keys()),default_byte_mode))
byte_mode=default_byte_mode
data_frmt= "%%0%dx"%(2*byte_mode)
simul_mask= (1 << (8*byte_mode)) -1
addr_mask=0xffffffff ^ (byte_mode-1)
start_addr &= addr_mask
if end_addr < start_addr:
end_addr=start_addr + abs(end_addr*byte_mode) -1
end_addr &= addr_mask
# align start address to 32-bit word even if the mode is byte/short
start_addr &= 0xfffffffc start_addr &= 0xfffffffc
end_addr &= 0xfffffffc print_mask=bytes_per_line_mask[byte_mode]
if end_addr<start_addr:
end_addr = start_addr
rslt=[] rslt=[]
if self.DRY_MODE: if self.DRY_MODE:
rslt=range(start_addr,end_addr+1,4) rslt=[d & simul_mask for d in range(start_addr,end_addr+byte_mode,byte_mode)]
else: else:
with open("/dev/mem", "r+b") as f: with open("/dev/mem", "r+b") as f:
for addr in range (start_addr,end_addr+4,4): for addr in range (start_addr,end_addr+byte_mode,byte_mode):
page_addr=addr & (~(self.PAGE_SIZE-1)) page_addr=addr & (~(self.PAGE_SIZE-1))
page_offs=addr-page_addr page_offs=addr-page_addr
if (page_addr>=0x80000000): if (page_addr>=0x80000000):
page_addr-= (1<<32) page_addr-= (1<<32)
mm = mmap.mmap(f.fileno(), self.PAGE_SIZE, offset=page_addr) mm = mmap.mmap(f.fileno(), self.PAGE_SIZE, offset=page_addr)
data=struct.unpack(self.ENDIAN+"L",mm[page_offs:page_offs+4]) data=struct.unpack_from(self.ENDIAN+frmt_bytes[byte_mode],mm, page_offs)
rslt.append(data[0]) rslt.append(data[0])
for addr in range (start_addr,end_addr+4,4): for addr in range (start_addr,end_addr+byte_mode,byte_mode):
if (addr == start_addr) or ((addr & 0x3f) == 0): if (addr == start_addr) or ((addr & print_mask) == 0):
if self.DRY_MODE: if self.DRY_MODE:
print ("\nsimulated: 0x%08x:"%addr,end="") print ("\nsimulated: 0x%08x:"%addr,end="")
else: else:
print ("\n0x%08x:"%addr,end="") print ("\n0x%08x:"%addr,end="")
d=rslt[(addr-start_addr) >> 2] d=rslt[(addr-start_addr) // byte_mode]
print ("%08x "%d,end=""), print (data_frmt%(d),end=" ")
print("") print("")
return rslt return rslt
def mem_fill (self, start_addr, start_data=0, end_addr=1, inc_data=0, byte_mode=4):
'''
Read and print memory range from physical memory
@param start_addr physical byte start address
@param start_data data/start data to write
@param end_addr physical byte end address (inclusive), if negative/less than start_addr - number of items
@param inc_data increment each next item by this value
@param byte_mode number of bytes per item (1,2,4,8)
'''
frmt_bytes={1:'B',2:'H',4:'L',8:'Q'}
default_byte_mode=4
if not byte_mode in frmt_bytes.keys():
print ("Invalid byte mode: '%s'. Only %s are supported. Using %d"%(str(byte_mode),str(frmt_bytes.keys()),default_byte_mode))
byte_mode=default_byte_mode
data_mask= (1 << (8*byte_mode)) -1
addr_mask=0xffffffff ^ (byte_mode-1)
start_addr &= addr_mask
if end_addr < start_addr:
end_addr=start_addr + abs(end_addr*byte_mode) -1
end_addr &= addr_mask
# align start address to 32-bit word even if the mode is byte/short
start_addr &= 0xfffffffc
if self.DRY_MODE:
print ("Simulated mem_fill(0x%x, 0x%x, 0x%x, 0x%x, %d)"%(start_addr, start_data, end_addr, inc_data, byte_mode))
data_frmt= "%%0%dx"%(2*byte_mode)
for addr in range (start_addr,end_addr+byte_mode,byte_mode):
data = (start_data + ((addr-start_addr) // byte_mode)*inc_data) & data_mask
page_addr=addr & (~(self.PAGE_SIZE-1))
page_offs=addr-page_addr
if (page_addr>=0x80000000):
page_addr-= (1<<32)
print (("0x%08x: "+ data_frmt)%(addr,data))
else:
with open("/dev/mem", "r+b") as f:
for addr in range (start_addr,end_addr+byte_mode,byte_mode):
data = (start_data + ((addr-start_addr) // byte_mode)*inc_data) & data_mask
page_addr=addr & (~(self.PAGE_SIZE-1))
page_offs=addr-page_addr
if (page_addr>=0x80000000):
page_addr-= (1<<32)
mm = mmap.mmap(f.fileno(), self.PAGE_SIZE, offset=page_addr)
struct.pack_into(self.ENDIAN+frmt_bytes[byte_mode],mm, page_offs, data)
''' '''
Read/write slave AXI using byte addresses relative to the AXI memory region Read/write slave AXI using byte addresses relative to the AXI memory region
''' '''
......
[*] [*]
[*] GTKWave Analyzer v3.3.64 (w)1999-2014 BSI [*] GTKWave Analyzer v3.3.64 (w)1999-2014 BSI
[*] Thu Apr 30 18:06:37 2015 [*] Thu Apr 30 18:37:14 2015
[*] [*]
[dumpfile] "/home/andrey/git/x393/simulation/x393_testbench01-20150430115913649.lxt" [dumpfile] "/home/andrey/git/x393/simulation/x393_testbench01-20150430120701234.lxt"
[dumpfile_mtime] "Thu Apr 30 18:02:38 2015" [dumpfile_mtime] "Thu Apr 30 18:10:21 2015"
[dumpfile_size] 174024137 [dumpfile_size] 174023349
[savefile] "/home/andrey/git/x393/x393_testbench01.sav" [savefile] "/home/andrey/git/x393/x393_testbench01.sav"
[timestart] 37450000 [timestart] 37450000
[size] 1823 1180 [size] 1823 1180
...@@ -15,7 +15,7 @@ ...@@ -15,7 +15,7 @@
[treeopen] x393_testbench01.simul_axi_hp_wr_i. [treeopen] x393_testbench01.simul_axi_hp_wr_i.
[treeopen] x393_testbench01.x393_i. [treeopen] x393_testbench01.x393_i.
[sst_width] 301 [sst_width] 301
[signals_width] 333 [signals_width] 446
[sst_expanded] 1 [sst_expanded] 1
[sst_vpaned_height] 367 [sst_vpaned_height] 367
@800200 @800200
...@@ -370,7 +370,6 @@ x393_testbench01.simul_axi_hp_wr_i.wresp_re[0] ...@@ -370,7 +370,6 @@ x393_testbench01.simul_axi_hp_wr_i.wresp_re[0]
x393_testbench01.x393_i.membridge_i.afi_bvalid[0] x393_testbench01.x393_i.membridge_i.afi_bvalid[0]
x393_testbench01.x393_i.membridge_i.afi_bvalid_r[0] x393_testbench01.x393_i.membridge_i.afi_bvalid_r[0]
@22 @22
x393_testbench01.x393_i.membridge_i.wresp_pending[7:0]
x393_testbench01.x393_i.membridge_i.axi_arw_requested[7:0] x393_testbench01.x393_i.membridge_i.axi_arw_requested[7:0]
x393_testbench01.x393_i.membridge_i.wresp_conf[7:0] x393_testbench01.x393_i.membridge_i.wresp_conf[7:0]
x393_testbench01.x393_i.membridge_i.axi_wr_pending[7:0] x393_testbench01.x393_i.membridge_i.axi_wr_pending[7:0]
...@@ -589,17 +588,8 @@ x393_testbench01.x393_i.membridge_i.wr_id[4:0] ...@@ -589,17 +588,8 @@ x393_testbench01.x393_i.membridge_i.wr_id[4:0]
@28 @28
x393_testbench01.x393_i.membridge_i.wr_mode[0] x393_testbench01.x393_i.membridge_i.wr_mode[0]
x393_testbench01.x393_i.membridge_i.wr_start[0] x393_testbench01.x393_i.membridge_i.wr_start[0]
@c00022 @c00200
x393_testbench01.x393_i.membridge_i.wresp_pending[7:0] -x393_testbench01.x393_i.membridge_i.wresp_pending
@28
(0)x393_testbench01.x393_i.membridge_i.wresp_pending[7:0]
(1)x393_testbench01.x393_i.membridge_i.wresp_pending[7:0]
(2)x393_testbench01.x393_i.membridge_i.wresp_pending[7:0]
(3)x393_testbench01.x393_i.membridge_i.wresp_pending[7:0]
(4)x393_testbench01.x393_i.membridge_i.wresp_pending[7:0]
(5)x393_testbench01.x393_i.membridge_i.wresp_pending[7:0]
(6)x393_testbench01.x393_i.membridge_i.wresp_pending[7:0]
(7)x393_testbench01.x393_i.membridge_i.wresp_pending[7:0]
@1401200 @1401200
-group_end -group_end
@28 @28
......
...@@ -1405,103 +1405,6 @@ task test_read_block; // SuppressThisWarning VEditor - may be unused ...@@ -1405,103 +1405,6 @@ task test_read_block; // SuppressThisWarning VEditor - may be unused
end end
endtask endtask
task membridge_setup;
input [28:0] len64; // number of 64-bit words to transfer
input [28:0] width64; // frame width in 64-bit words
input [28:0] start64; // relative start adderss of the transfer (set to 0 when writing lo_addr64)
input [28:0] lo_addr64; // low address of the system memory range, in 64-bit words
input [28:0] size64; // size of the system memory range in 64-bit words
begin
write_contol_register(MEMBRIDGE_ADDR + MEMBRIDGE_LO_ADDR64, {3'b0,lo_addr64});
write_contol_register(MEMBRIDGE_ADDR + MEMBRIDGE_SIZE64, {3'b0,size64});
write_contol_register(MEMBRIDGE_ADDR + MEMBRIDGE_START64, {3'b0,start64});
write_contol_register(MEMBRIDGE_ADDR + MEMBRIDGE_LEN64, {3'b0,len64});
write_contol_register(MEMBRIDGE_ADDR + MEMBRIDGE_WIDTH64, {3'b0,width64});
end
endtask
task membridge_start;
input continue; // 0 start from start64, 1 - continue from where it was
begin
write_contol_register(MEMBRIDGE_ADDR + MEMBRIDGE_CTRL, {29'b0,continue,2'b11});
end
endtask
task membridge_en; // SuppressThisWarning VEditor - may be unused
input en; // not needed to start, pauses axi if set to 0 whil running, resets "done" status bit
begin
write_contol_register(MEMBRIDGE_ADDR + MEMBRIDGE_CTRL, {31'b0,en});
end
endtask
task afi_setup;
input [1:0] port_num;
begin
afi_write_reg(port_num, 'h0, 0); // AFI_RDCHAN_CTRL
afi_write_reg(port_num, 'h4, 7); // AFI_RDCHAN_ISSUINGCAP
afi_write_reg(port_num, 'h8, 0); // AFI_RDQOS
//afi_write_reg(port_num, 'hc, 0); // AFI_RDDATAFIFO_LEVEL
//afi_write_reg(port_num, 'h10, 0); // AFI_RDDEBUG
afi_write_reg(port_num, 'h14, 'hf00); // AFI_WRCHAN_CTRL
afi_write_reg(port_num, 'h18, 0); // AFI_WRCHAN_ISSUINGCAP
afi_write_reg(port_num, 'h1c, 0); // AFI_WRQOS
//afi_write_reg(port_num, 'h20, 0); // AFI_WRDATAFIFO_LEVEL
//afi_write_reg(port_num, 'h24, 0); // AFI_WRDEBUG
end
endtask
task afi_write_reg;
input [1:0] port_num;
input integer rel_baddr; // relative byte address
input [31:0] data;
begin
ps_write_reg(32'hf8008000+ (port_num << 12) + (rel_baddr & 'hfffffffc), data);
end
endtask
task afi_read_reg; // SuppressThisWarning VEditor - may be unused
input [1:0] port_num;
input integer rel_baddr; // relative byte address
input verbose;
begin
ps_read_reg(32'hf8008000+ (port_num << 12) + (rel_baddr & 'hfffffffc), verbose);
end
endtask
task ps_write_reg;
input [31:0] ps_reg_addr;
input [31:0] ps_reg_data;
begin
@(posedge HCLK);
PS_REG_ADDR <= ps_reg_addr;
PS_REG_DIN <= ps_reg_data;
PS_REG_WR <= 1'b1;
@(posedge HCLK);
PS_REG_ADDR <= 'bx;
PS_REG_DIN <= 'bx;
PS_REG_WR <= 1'b0;
end
endtask
task ps_read_reg;
input [31:0] ps_reg_addr;
input verbose;
begin
@(posedge HCLK);
PS_REG_ADDR <= ps_reg_addr;
PS_REG_RD <= 1'b1;
@(posedge HCLK);
PS_REG_ADDR <= 'bx;
PS_REG_DIN <= 'bx;
PS_REG_WR <= 1'b0;
@(negedge HCLK);
if (verbose) begin
$display("ps_read_reg(%x) -> %x @%t",ps_reg_addr,PS_RDATA,$time);
end
end
endtask
// above - move to include // above - move to include
...@@ -2102,7 +2005,7 @@ task enable_memcntrl_en_dis; ...@@ -2102,7 +2005,7 @@ task enable_memcntrl_en_dis;
end end
endtask endtask
*/ */
`include "includes/x393_tasks_afi.vh" // SuppressThisWarning VEditor - may be unused
`include "includes/x393_tasks_mcntrl_en_dis_priority.vh" `include "includes/x393_tasks_mcntrl_en_dis_priority.vh"
`include "includes/x393_tasks_mcntrl_buffers.vh" `include "includes/x393_tasks_mcntrl_buffers.vh"
`include "includes/x393_tasks_pio_sequences.vh" `include "includes/x393_tasks_pio_sequences.vh"
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment