diff options
author | spashabk-in <shakeebbk@in.ibm.com> | 2017-02-08 06:26:33 -0600 |
---|---|---|
committer | Sachin Gupta <sgupta2m@in.ibm.com> | 2017-03-01 05:23:06 -0500 |
commit | 15b2150ba77b261db8ee59e249704f2d05c93fca (patch) | |
tree | df9ec0d7744c574ca439e2d492d55683a41ea211 /src/test/testcases/testMemUtil.py | |
parent | c32c107be03edaa48c49050877394d14e72ed0f2 (diff) | |
download | talos-sbe-15b2150ba77b261db8ee59e249704f2d05c93fca.tar.gz talos-sbe-15b2150ba77b261db8ee59e249704f2d05c93fca.zip |
PBA and ADU updated testcase
Change-Id: Ib43f05ea46ef3389519b5d5bc31c403e61d4171c
Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/36128
Tested-by: Jenkins Server <pfd-jenkins+hostboot@us.ibm.com>
Tested-by: FSP CI Jenkins <fsp-CI-jenkins+hostboot@us.ibm.com>
Reviewed-by: RAJA DAS <rajadas2@in.ibm.com>
Reviewed-by: Sachin Gupta <sgupta2m@in.ibm.com>
Diffstat (limited to 'src/test/testcases/testMemUtil.py')
-rw-r--r-- | src/test/testcases/testMemUtil.py | 114 |
1 files changed, 114 insertions, 0 deletions
diff --git a/src/test/testcases/testMemUtil.py b/src/test/testcases/testMemUtil.py new file mode 100644 index 00000000..95ed304b --- /dev/null +++ b/src/test/testcases/testMemUtil.py @@ -0,0 +1,114 @@ +# IBM_PROLOG_BEGIN_TAG +# This is an automatically generated prolog. +# +# $Source: src/test/testcases/testMemUtil.py $ +# +# OpenPOWER sbe Project +# +# Contributors Listed Below - COPYRIGHT 2017 +# +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or +# implied. See the License for the specific language governing +# permissions and limitations under the License. +# +# IBM_PROLOG_END_TAG +import sys +import os +import struct +sys.path.append("targets/p9_nimbus/sbeTest" ) +import testUtil +err = False + +def gethalfword(dataInInt): + hex_string = '0'*(4-len(str(hex(dataInInt))[2:])) + str(hex(dataInInt))[2:] + return list(struct.unpack('<BB',hex_string.decode('hex'))) +def getsingleword(dataInInt): + hex_string = '0'*(8-len(str(hex(dataInInt))[2:])) + str(hex(dataInInt))[2:] + return list(struct.unpack('<BBBB',hex_string.decode('hex'))) +def getdoubleword(dataInInt): + hex_string = '0'*(16-len(str(hex(dataInInt))[:18][2:])) + str(hex(dataInInt))[:18][2:] + return list(struct.unpack('<BBBBBBBB',hex_string.decode('hex'))) + +def addItagEcc(arr, itag, ecc, eccVal=0): + arrs = [] + while len(arr) > 8: + pice = arr[:8] + arrs += pice + if(itag): + arrs += [1] + if(ecc): + arrs += [eccVal] + arr = arr[8:] + arrs += arr + if(itag): + arrs += [1] + if(ecc): + arrs += [eccVal] + return arrs + +def putmem(addr, data, flags, ecc=0): + totalLen = 5 + len(data)/4 + req = (getsingleword(totalLen) + +[ 0,0,0xA4,0x02] + +[0, ecc] + +gethalfword(flags) + #0,0,0x0,0xA5] #CoreChipletId/EccByte/Flags -> NoEccOverride/CacheInhibit/FastMode/NoTag/NoEcc/AutoIncr/Adu/Proc + + getdoubleword(addr) + + getsingleword(len(data)) # length of data + + data) + testUtil.writeUsFifo(req) + testUtil.writeEot( ) + testUtil.runCycles( 10000000 ) + lenWritten = len(data) + if(flags & 0x0008): + lenWritten += int(len(data)/8) + if(flags & 0x0010): + lenWritten += int(len(data)/8) + expData = (getsingleword(lenWritten) + +[0xc0,0xde,0xa4,0x02, + 0x0,0x0,0x0,0x0, + 0x00,0x0,0x0,0x03]) + testUtil.readDsFifo(expData) + testUtil.readEot( ) + +def getmem(addr, len, flags): + req = (getsingleword(6) + + [0, 0, 0xA4, 0x01] + + getsingleword(flags) + #[0,0,0x0,0xA5] + + getdoubleword(addr) + + getsingleword(len)) + testUtil.writeUsFifo(req) + testUtil.writeEot( ) + + # read data + data = [] + lenExp = len + if(flags & 0x0008): + lenExp += int(len/8) + if(flags & 0x0010): + lenExp += int(len/8) + for i in range(0, int(-(-float(lenExp)//4))): + data += list(testUtil.readDsEntryReturnVal()) + + readLen = testUtil.readDsEntryReturnVal() + if(getsingleword(lenExp) != list(readLen)): + print getsingleword(lenExp) + print list(readLen) + raise Exception("Invalid Length") + + expResp = [0xc0,0xde,0xa4,0x01, + 0x0,0x0,0x0,0x0, + 0x00,0x0,0x0,0x03]; + testUtil.readDsFifo(expResp) + testUtil.readEot( ) + return data[:lenExp] |