Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
X
x393
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Commits
Open sidebar
Elphel
x393
Commits
8ffbbc62
Commit
8ffbbc62
authored
Apr 07, 2015
by
Andrey Filippov
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
added save/load state with pickle
parent
82800325
Changes
7
Hide whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
88 additions
and
16 deletions
+88
-16
args
py393/args
+1
-0
hargs
py393/hargs
+1
-1
hargs-auto
py393/hargs-auto
+1
-0
vrlg.py
py393/vrlg.py
+5
-2
x393_mcntrl_adjust.py
py393/x393_mcntrl_adjust.py
+43
-0
x393_mcntrl_buffers.py
py393/x393_mcntrl_buffers.py
+33
-9
x393_pio_sequences.py
py393/x393_pio_sequences.py
+4
-4
No files found.
py393/args
View file @
8ffbbc62
...
@@ -2,6 +2,7 @@
...
@@ -2,6 +2,7 @@
-f ../system_defines.vh
-f ../system_defines.vh
-f ../includes/x393_parameters.vh ../includes/x393_cur_params_target.vh ../includes/x393_localparams.vh
-f ../includes/x393_parameters.vh ../includes/x393_cur_params_target.vh ../includes/x393_localparams.vh
-l ../includes/x393_cur_params_target_gen.vh
-l ../includes/x393_cur_params_target_gen.vh
-p PICKLE="../includes/x393_mcntrl.pickle"
-p NEWPAR='h3ff
-p NEWPAR='h3ff
-c write_mem 0x377 25
-c write_mem 0x377 25
-c read_mem 0x3ff
-c read_mem 0x3ff
...
...
py393/hargs
View file @
8ffbbc62
...
@@ -2,5 +2,5 @@
...
@@ -2,5 +2,5 @@
-f /usr/local/verilog/system_defines.vh
-f /usr/local/verilog/system_defines.vh
-f /usr/local/verilog/x393_parameters.vh /usr/local/verilog/x393_cur_params_target.vh /usr/local/verilog/x393_localparams.vh
-f /usr/local/verilog/x393_parameters.vh /usr/local/verilog/x393_cur_params_target.vh /usr/local/verilog/x393_localparams.vh
-l /usr/local/verilog/x393_cur_params_target.vh
-l /usr/local/verilog/x393_cur_params_target.vh
-p
NEWPAR='h3ff
-p
PICKLE="/usr/local/verilog/x393_mcntrl.pickle
-i
-i
\ No newline at end of file
py393/hargs-auto
View file @
8ffbbc62
...
@@ -2,6 +2,7 @@
...
@@ -2,6 +2,7 @@
-f /usr/local/verilog/system_defines.vh
-f /usr/local/verilog/system_defines.vh
-f /usr/local/verilog/x393_parameters.vh /usr/local/verilog/x393_cur_params_target.vh /usr/local/verilog/x393_localparams.vh
-f /usr/local/verilog/x393_parameters.vh /usr/local/verilog/x393_cur_params_target.vh /usr/local/verilog/x393_localparams.vh
-l /usr/local/verilog/x393_cur_params_target.vh
-l /usr/local/verilog/x393_cur_params_target.vh
-p PICKLE="/usr/local/verilog/x393_mcntrl.pickle
-c measure_all "ICWRPOASZ" 1 2 2 3
-c measure_all "ICWRPOASZ" 1 2 2 3
-c set_phase_delays 15 'A' 'A' 1 None 0
-c set_phase_delays 15 'A' 'A' 1 None 0
-c save
-c save
py393/vrlg.py
View file @
8ffbbc62
...
@@ -463,7 +463,7 @@ STATUS_SEQ_SHFT__RAW = str
...
@@ -463,7 +463,7 @@ STATUS_SEQ_SHFT__RAW = str
DLY_DM_ODELAY__TYPE
=
str
DLY_DM_ODELAY__TYPE
=
str
MCONTR_PHY_0BIT_DCI_RST__RAW
=
str
MCONTR_PHY_0BIT_DCI_RST__RAW
=
str
REFCLK_FREQUENCY__RAW
=
str
REFCLK_FREQUENCY__RAW
=
str
MCONTR_
PHY_0BIT_DLY_RST
=
int
MCONTR_
RD_MASK__RAW
=
str
MCNTRL_TEST01_STATUS_REG_CHN3_ADDR__TYPE
=
str
MCNTRL_TEST01_STATUS_REG_CHN3_ADDR__TYPE
=
str
TILE_VSTEP
=
int
TILE_VSTEP
=
int
DFLT_DQS_TRI_OFF_PATTERN__TYPE
=
str
DFLT_DQS_TRI_OFF_PATTERN__TYPE
=
str
...
@@ -475,6 +475,7 @@ WRITE_BLOCK_OFFSET = int
...
@@ -475,6 +475,7 @@ WRITE_BLOCK_OFFSET = int
COLADDR_NUMBER__TYPE
=
str
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
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
...
@@ -487,6 +488,7 @@ SCANLINE_EXTRA_PAGES = int
...
@@ -487,6 +488,7 @@ 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
TILE_HEIGHT__RAW
=
str
PICKLE__TYPE
=
str
MCONTR_PHY_0BIT_CKE_EN__TYPE
=
str
MCONTR_PHY_0BIT_CKE_EN__TYPE
=
str
MCNTRL_TILED_MODE__TYPE
=
str
MCNTRL_TILED_MODE__TYPE
=
str
DIVCLK_DIVIDE
=
int
DIVCLK_DIVIDE
=
int
...
@@ -505,7 +507,7 @@ TILED_EXTRA_PAGES = int
...
@@ -505,7 +507,7 @@ TILED_EXTRA_PAGES = int
MCNTRL_PS_EN_RST__RAW
=
str
MCNTRL_PS_EN_RST__RAW
=
str
MCNTRL_SCANLINE_STATUS_REG_CHN3_ADDR__RAW
=
str
MCNTRL_SCANLINE_STATUS_REG_CHN3_ADDR__RAW
=
str
CLK_PHASE__RAW
=
str
CLK_PHASE__RAW
=
str
MCONTR_
RD_MASK__RAW
=
str
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
...
@@ -690,6 +692,7 @@ CLK_DIV_PHASE__RAW = str
...
@@ -690,6 +692,7 @@ CLK_DIV_PHASE__RAW = str
LD_DLY_LANE1_IDELAY
=
int
LD_DLY_LANE1_IDELAY
=
int
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
NUM_CYCLES_02__RAW
=
str
NUM_CYCLES_02__RAW
=
str
TEST01_NEXT_PAGE__RAW
=
str
TEST01_NEXT_PAGE__RAW
=
str
DQSTRI_LAST__RAW
=
str
DQSTRI_LAST__RAW
=
str
...
...
py393/x393_mcntrl_adjust.py
View file @
8ffbbc62
...
@@ -29,6 +29,7 @@ __maintainer__ = "Andrey Filippov"
...
@@ -29,6 +29,7 @@ __maintainer__ = "Andrey Filippov"
__email__
=
"andrey@elphel.com"
__email__
=
"andrey@elphel.com"
__status__
=
"Development"
__status__
=
"Development"
import
sys
import
sys
import
pickle
#import x393_mem
#import x393_mem
#x393_pio_sequences
#x393_pio_sequences
#from import_verilog_parameters import VerilogParameters
#from import_verilog_parameters import VerilogParameters
...
@@ -2973,6 +2974,11 @@ class X393McntrlAdjust(object):
...
@@ -2973,6 +2974,11 @@ class X393McntrlAdjust(object):
'keep_all'
:
False
,
'keep_all'
:
False
,
'set_table'
:
True
,
'set_table'
:
True
,
'quiet'
:
quiet
+
1
}},
'quiet'
:
quiet
+
1
}},
{
'key'
:
'S'
,
'func'
:
self
.
save_mcntrl
,
'comment'
:
'Save current state as Python pickle'
,
'params'
:{
'path'
:
None
,
# use path defined by the parameter 'PICKLE'
'quiet'
:
quiet
+
1
}},
{
'key'
:
'Z'
,
{
'key'
:
'Z'
,
'func'
:
self
.
show_all_vs_phase
,
'func'
:
self
.
show_all_vs_phase
,
'comment'
:
'Printing results table (delays and errors vs. phase)- all, including invalid phases'
,
'comment'
:
'Printing results table (delays and errors vs. phase)- all, including invalid phases'
,
...
@@ -3970,3 +3976,40 @@ class X393McntrlAdjust(object):
...
@@ -3970,3 +3976,40 @@ class X393McntrlAdjust(object):
keep_all
=
keep_all
,
keep_all
=
keep_all
,
set_table
=
False
,
set_table
=
False
,
quiet
=
2
)
quiet
=
2
)
def
save_mcntrl
(
self
,
path
=
None
,
quiet
=
1
):
"""
Save memory controller delays measuremnt/adjustment state to file
@param path location to save state or None to use path defined by parameter PICKLE
@return None, raises exception if path is not provided and PICKLE is not defined
"""
if
path
is
None
:
try
:
path
=
vrlg
.
PICKLE
except
:
raise
Exception
(
"path is not provided and Verilog parameter PICKLE is not defined"
)
pickle
.
dump
(
self
.
adjustment_state
,
open
(
path
,
"wb"
))
if
quiet
<
2
:
print
(
"mcntrl state (self.adjustment_state) is saved to
%
s"
%
(
path
))
def
load_mcntrl
(
self
,
path
=
None
,
quiet
=
1
):
"""
Load memory controller delays measuremnt/adjustment state from file
@param path location to load state from or None to use path defined by parameter PICKLE
@return None, raises exception if path is not provided and PICKLE is not defined
"""
if
path
is
None
:
try
:
path
=
vrlg
.
PICKLE
except
:
raise
Exception
(
"path is not provided and Verilog parameter PICKLE is not defined"
)
self
.
adjustment_state
=
pickle
.
load
(
open
(
path
,
"rb"
))
if
quiet
<
2
:
print
(
"mcntrl state (self.adjustment_state) is loaded from
%
s"
%
(
path
))
if
quiet
<
1
:
print
(
"self.adjustment_state="
,
self
.
adjustment_state
)
\ No newline at end of file
py393/x393_mcntrl_buffers.py
View file @
8ffbbc62
...
@@ -39,6 +39,8 @@ import x393_axi_control_status
...
@@ -39,6 +39,8 @@ import x393_axi_control_status
#from verilog_utils import hx, concat, bits, getParWidth
#from verilog_utils import hx, concat, bits, getParWidth
#from verilog_utils import concat, getParWidth
#from verilog_utils import concat, getParWidth
#from x393_axi_control_status import concat, bits
#from x393_axi_control_status import concat, bits
from
verilog_utils
import
convert_w32_to_mem16
#,convert_mem16_to_w32
import
vrlg
import
vrlg
class
X393McntrlBuffers
(
object
):
class
X393McntrlBuffers
(
object
):
DRY_MODE
=
True
# True
DRY_MODE
=
True
# True
...
@@ -167,19 +169,41 @@ class X393McntrlBuffers(object):
...
@@ -167,19 +169,41 @@ class X393McntrlBuffers(object):
show_rslt
=
True
):
show_rslt
=
True
):
"""
"""
Fill buffer the incremental data (each next register is written with previous register data + 1
Fill buffer the incremental data (each next register is written with previous register data + 1
<start_word_address>
full register address in AXI space (in 32-bit words, not bytes)
@param start_word_address
full register address in AXI space (in 32-bit words, not bytes)
<num_read>
number of 32-bit words to read
@param num_read
number of 32-bit words to read
<show_rslt> print buffer data read
@param show_rslt print buffer data read 1 - column, 16 - as 16-bit (memory words), 32 - as 32-bit (data words)
"""
"""
if
(
self
.
verbose
>
1
)
or
show_rslt
:
if
(
self
.
verbose
>
1
)
or
(
show_rslt
==
1
)
:
print
(
"**** read_block_buf, start_word_address=0x
%
x, num_read=0x
%
x "
%
(
start_word_address
,
num_read
))
print
(
"**** read_block_buf, start_word_address=0x
%
x, num_read=0x
%
x "
%
(
start_word_address
,
num_read
))
result
=
[]
result
=
[]
for
i
in
range
(
num_read
):
#for (i = 0; i < num_read; i = i + 16) begin
for
i
in
range
(
num_read
):
#for (i = 0; i < num_read; i = i + 16) begin
d
=
self
.
x393_mem
.
axi_read_addr_w
(
start_word_address
+
i
)
d
=
self
.
x393_mem
.
axi_read_addr_w
(
start_word_address
+
i
)
if
(
self
.
verbose
>
2
)
or
show_rslt
:
if
(
self
.
verbose
>
2
)
or
(
show_rslt
==
1
)
:
print
(
" read_block_buf 0x
%
x:0x
%
x"
%
(
start_word_address
+
i
,
d
))
print
(
" read_block_buf 0x
%
x:0x
%
x"
%
(
start_word_address
+
i
,
d
))
result
.
append
(
d
)
result
.
append
(
d
)
if
show_rslt
==
16
:
rslt16
=
convert_w32_to_mem16
(
result
)
sum_read16
=
0
for
d
in
rslt16
:
sum_read16
+=
d
print
(
"read16 (0x
%
x):"
%
(
sum_read16
),
end
=
""
)
for
i
in
range
(
len
(
rslt16
)):
if
(
i
&
0x1f
)
==
0
:
print
(
"
\n
%03
x:"
%
i
,
end
=
" "
)
print
(
"
%04
x"
%
rslt16
[
i
],
end
=
" "
)
print
(
"
\n
"
)
elif
show_rslt
==
32
:
sum_rd_buf
=
0
for
d
in
result
:
sum_rd_buf
+=
d
print
(
"read buffer: (0x
%
x):"
%
(
sum_rd_buf
),
end
=
""
)
for
i
in
range
(
len
(
result
)):
if
(
i
&
0xf
)
==
0
:
print
(
"
\n
%03
x:"
%
i
,
end
=
" "
)
print
(
"
%08
x"
%
result
[
i
],
end
=
" "
)
print
(
"
\n
"
)
return
result
return
result
def
read_block_buf_chn
(
self
,
# S uppressThisWarning VEditor : may be unused
def
read_block_buf_chn
(
self
,
# S uppressThisWarning VEditor : may be unused
...
@@ -189,10 +213,10 @@ class X393McntrlBuffers(object):
...
@@ -189,10 +213,10 @@ class X393McntrlBuffers(object):
show_rslt
=
True
):
show_rslt
=
True
):
"""
"""
Fill buffer the incremental data (each next register is written with previous register data + 1
Fill buffer the incremental data (each next register is written with previous register data + 1
<chn>
4-bit buffer channel (0..4) to read from
@param chn
4-bit buffer channel (0..4) to read from
<page>
2-bit buffer page to read from
@param page
2-bit buffer page to read from
<num_read>
number of 32-bit words to read
@param num_read
number of 32-bit words to read
<show_rslt> print buffer data read
@param show_rslt print buffer data read 1 - column, 16 - as 16-bit (memory words), 32 - as 32-bit (data words)
"""
"""
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
)
...
...
py393/x393_pio_sequences.py
View file @
8ffbbc62
...
@@ -958,10 +958,10 @@ class X393PIOSequences(object):
...
@@ -958,10 +958,10 @@ class X393PIOSequences(object):
wait_complete
=
1
):
# Wait for operation to complete
wait_complete
=
1
):
# Wait for operation to complete
"""
"""
Read pattern
Read pattern
<num>
number of 32-bit words to read
@param num
number of 32-bit words to read
<show_rslt> print read data
@param show_rslt print buffer data read 1 - column, 16 - as 16-bit (memory words), 32 - as 32-bit (data words)
<wait_complete>
wait read pattern operation to complete (0 - may initiate multiple PS PIO operations)
@param wait_complete
wait read pattern operation to complete (0 - may initiate multiple PS PIO operations)
returns
list of the read data
@return
list of the read data
"""
"""
self
.
schedule_ps_pio
(
# schedule software-control memory operation (may need to check FIFO status first)
self
.
schedule_ps_pio
(
# schedule software-control memory operation (may need to check FIFO status first)
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment