diff options
author | Michael Pavone <pavone@retrodev.com> | 2016-02-02 22:24:40 -0800 |
---|---|---|
committer | Michael Pavone <pavone@retrodev.com> | 2016-02-02 22:24:40 -0800 |
commit | 046179315b057bd3a8eafadcbc3d38a3b0f01c76 (patch) | |
tree | ad43a20e356bece6a84a97f70b5b391b1efb5f6d /analyze_olp.py | |
parent | 7ae7ef63b11bba0f477e0c726f143a829c5baf31 (diff) |
Added some stuff for detecting refresh delays in one of my old logic analyzer scripts. Needs cleanup
Diffstat (limited to 'analyze_olp.py')
-rwxr-xr-x | analyze_olp.py | 53 |
1 files changed, 50 insertions, 3 deletions
diff --git a/analyze_olp.py b/analyze_olp.py index 652edc4..4d7b935 100755 --- a/analyze_olp.py +++ b/analyze_olp.py @@ -20,9 +20,16 @@ def detect_low(sample, bit): return not sample & mask def analyze_delays(chanmap, datafile): - m68k_clk = chanmap['M68K CLK'] + if 'M68K_CLK' in chanmap: + m68k_clk = chanmap['M68K CLK'] + elif 'CLK' in chanmap: + m68k_clk = chanmap['CLK'] m_as = chanmap['!AS'] + ram_oe = chanmap['RAM !LOE/!RFSH'] + ram_ce = chanmap['RAM !CE'] last = False + prev = False + prevRefresh = False clks = 0 as_start = 0 for line in datafile.readlines(): @@ -36,10 +43,47 @@ def analyze_delays(chanmap, datafile): if detect_rise(last, sample, m_as): as_clks = clks - as_start if as_clks > 2: - print '!AS held for', as_clks, 'cycles starting (delay of ' + str(as_clks - 2) + ') at', as_start, 'and ending at', clks + if not (prev is False): + print '!AS held for', as_clks, 'cycles starting (delay of ' + str(as_clks - 2) + ') at', as_start, 'and ending at', clks, 'delta since last delay:', as_start - prev + else: + print '!AS held for', as_clks, 'cycles starting (delay of ' + str(as_clks - 2) + ') at', as_start, 'and ending at', clks + prev = as_start elif detect_fall(last, sample, m_as): as_start = clks + if detect_fall(last, sample, ram_oe) and detect_high( sample, ram_ce): + if prevRefresh is False: + print 'RAM refresh at ', clks + else: + print 'RAM refresh at', clks, 'delta since last:', clks-prevRefresh + prevRefresh = clks last = sample + +def analyze_refresh(chanmap, datafile): + if 'M68K_CLK' in chanmap: + m68k_clk = chanmap['M68K CLK'] + elif 'CLK' in chanmap: + m68k_clk = chanmap['CLK'] + ram_oe = chanmap['RAM !LOE/!RFSH'] + ram_ce = chanmap['RAM !CE'] + clks = 0 + last = False + prevRefresh = False + for line in datafile.readlines(): + line = line.strip() + if line and not line.startswith(';'): + sample,_,num = line.partition('@') + sample = int(sample, 16) + if not (last is False): + if detect_rise(last, sample, m68k_clk): + clks = clks + 1 + if detect_fall(last, sample, ram_oe) and detect_high( sample, ram_ce): + if prevRefresh is False: + print 'RAM refresh at ', clks + else: + print 'RAM refresh at', clks, 'delta since last:', clks-prevRefresh + prevRefresh = clks + last = sample + def main(args): if len(args) < 2: @@ -49,12 +93,15 @@ def main(args): channelfile = olpfile.open('channel.labels') channels = [line.strip() for line in channelfile.readlines()] channelfile.close() + print channels chanmap = {} for i in xrange(0, len(channels)): chanmap[channels[i]] = i datafile = olpfile.open('data.ols') analyze_delays(chanmap, datafile) - + datafile.close() + #datafile = olpfile.open('data.ols') + #analyze_refresh(chanmap, datafile) if __name__ == '__main__': main(argv) |