tps/test: test07 working.

parent 880276f2
...@@ -50,18 +50,18 @@ def main (default_directory='.'): ...@@ -50,18 +50,18 @@ def main (default_directory='.'):
# Get host memory pages physical address # Get host memory pages physical address
pages = gennum.get_physical_addr() pages = gennum.get_physical_addr()
num_addr_lines = 17; num_addr_lines = 16;
num_data_lines = 16; num_data_lines = 16;
if (len(pages) < (num_addr_lines + 2)) : if (len(pages) < (num_addr_lines + 2)) :
raise Exception("Not enough pages"); raise TpsError("Not enough pages");
data = 0xDEADBABA; data = 0xDEADBABE
# Clear memory pages # Clear memory pages
gennum.set_memory_page(0, 0x0) gennum.set_memory_page(0, 0x0)
gennum.set_memory_page(1, data); gennum.set_memory_page(1, data);
gennum.set_memory_page(2, 0x0) gennum.set_memory_page(2, 0x0)
dma_length = 0x80 # DMA length in bytes dma_length = 0x4 # DMA length in bytes
t1 = time.time(); t1 = time.time();
...@@ -69,31 +69,32 @@ def main (default_directory='.'): ...@@ -69,31 +69,32 @@ def main (default_directory='.'):
print "Checking if some pin is tied to GND" print "Checking if some pin is tied to GND"
error = 0; error = 0;
for i in range(num_addr_lines) : for i in range(2,num_addr_lines) :
print "[%d]" % i print "[%d]" % i
for j in range(num_addr_lines) : for j in range(2,num_addr_lines) :
gennum.add_dma_item((1 << j), pages[0], dma_length, 1, 0)
if (i != j) :
gennum.add_dma_item((1 << j), pages[2], dma_length, 1, 0)
gennum.start_dma() gennum.start_dma()
gennum.wait_irq() gennum.wait_irq()
time.sleep(0.01)
time.sleep(0.01)
gennum.add_dma_item((1 << i), pages[1], dma_length, 1, 0) gennum.add_dma_item((1 << i), pages[1], dma_length, 1, 0)
gennum.start_dma() gennum.start_dma()
gennum.wait_irq() gennum.wait_irq()
# Read all the pages # Read all the pages
for j in range(2,num_addr_lines) :
for j in range(num_addr_lines) : time.sleep(0.01)
gennum.add_dma_item((1 << j), pages[3+j], dma_length, 0, 0) gennum.add_dma_item((1 << j), pages[3+j], dma_length, 0, 0)
gennum.start_dma() gennum.start_dma()
gennum.wait_irq() gennum.wait_irq()
# Compare # Compare
page_data = [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]; page_data = [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0];
for j in range(num_addr_lines): for j in range(2,num_addr_lines):
page_data[j] = gennum.get_memory_page(3+j) page_data[j] = gennum.get_memory_page(3+j)
if (j == i) : if (j == i) :
if (page_data[j][0] != data): if (page_data[j][0] != data):
...@@ -103,63 +104,68 @@ def main (default_directory='.'): ...@@ -103,63 +104,68 @@ def main (default_directory='.'):
if(page_data[j][0] != 0x0): if(page_data[j][0] != 0x0):
print("\n### Compare error (pin is tied to GND?) @ addr line: %d wr:0x%.8X rd:0x%.8X") % (j,0x0, page_data[j][0]) print("\n### Compare error (pin is tied to GND?) @ addr line: %d wr:0x%.8X rd:0x%.8X") % (j,0x0, page_data[j][0])
error = 1; error = 1;
sys.exit();
print "Checking if some pin is tied to Vcc" print "Checking if some pin is tied to Vcc"
addr_mask = 0xFFFFFFFFFFFFFFFF; addr_mask = 0xFFFFFFFFFFFFFFFF;
for i in range(num_addr_lines) :
gennum.add_dma_item(addr_mask, pages[2], dma_length, 1, 1) for i in range(2,num_addr_lines) :
gennum.add_dma_item(addr_mask, pages[3], dma_length, 0, 0) print "[%d]" % i
for j in range(2,num_addr_lines) :
gennum.add_dma_item(~(1 << j), pages[0], dma_length, 1, 0)
gennum.start_dma()
gennum.wait_irq()
time.sleep(0.01)
time.sleep(0.01)
gennum.add_dma_item(~(1 << i), pages[1], dma_length, 1, 0)
gennum.start_dma() gennum.start_dma()
gennum.wait_irq() gennum.wait_irq()
for j in range(num_addr_lines/2) : # Read all the pages
if (i != 2*j) : for j in range(2,num_addr_lines) :
gennum.add_dma_item(addr_mask & (~(1 << 2*j)), pages[2], dma_length, 1, 1) time.sleep(0.01)
gennum.add_dma_item( addr_mask & (~(1 << 2*j)), pages[4+2*j], dma_length, 0, 0) gennum.add_dma_item(~(1 << j), pages[3+j], dma_length, 0, 0)
gennum.start_dma()
gennum.wait_irq()
if ((2*j+1) != i) :
gennum.add_dma_item(addr_mask & (~(1 << 2*j)), pages[2], dma_length, 1, 1)
gennum.add_dma_item(addr_mask & (~(1 << 2*j)), pages[4+(2*j+1)], dma_length, 0, 0)
gennum.start_dma() gennum.start_dma()
gennum.wait_irq() gennum.wait_irq()
gennum.add_dma_item(addr_mask & (~(1 << i)), pages[1], dma_length, 1, 1)
gennum.add_dma_item(addr_mask & (~(1 << i)), pages[4+i], dma_length, 0, 0)
gennum.start_dma()
gennum.wait_irq()
time.sleep(0.01)
page_data = [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]; page_data = [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0];
for j in range(num_addr_lines): for j in range(2,num_addr_lines):
page_data[j] = gennum.get_memory_page(3+j) page_data[j] = gennum.get_memory_page(3+j)
if (j == (i +1)) : if (j == i) :
if (page_data[j][0] != 0xFFFFFFFF): if (page_data[j][0] != data):
print("\n### Compare error (pin is tied to Vcc?) @ addr line:0x%.8X wr:0x%.8X rd:0x%.8X") % (j,0xFFFFFFFF, page_data[j][0]) print("\n### Compare error (pin is tied to Vcc?) @ addr line:0x%.8X wr:0x%.8X rd:0x%.8X") % (j,data, page_data[j][0])
error = 1; error = 1;
else : else :
if(page_data[j][0] != 0x0): if(page_data[j][0] != 0x0):
print("\n### Compare error (pin is tied to Vcc?) @ addr line:0x%.8X wr:0x%.8X rd:0x%.8X") % (j,0x0, page_data[j][0]) print("\n### Compare error (pin is tied to Vcc?) @ addr line:0x%.8X wr:0x%.8X rd:0x%.8X") % (j,0x0, page_data[j][0])
error = 1; error = 1;
if (error) :
print "RESULT: [FAILED]"
raise TpsError ("Error in DDR address lines. Please check log file for more information")
else :
print "RESULT: [OK]"
print "Test Data lines" print "Test Data lines"
error = 0;
for i in range(num_data_lines) : for i in range(num_data_lines) :
print "[%d]" % i
gennum.set_memory_page(1, (1<<i)) gennum.set_memory_page(1, (1<<i))
gennum.add_dma_item(0, pages[1], dma_length, 1, 1) gennum.add_dma_item(0, pages[1], dma_length, 1, 0)
gennum.start_dma()
gennum.wait_irq()
time.sleep(0.01)
gennum.add_dma_item(0, pages[2], dma_length, 0, 0) gennum.add_dma_item(0, pages[2], dma_length, 0, 0)
gennum.start_dma() gennum.start_dma()
gennum.wait_irq() gennum.wait_irq()
time.sleep(0.01)
page_data = gennum.get_memory_page(2); page_data = gennum.get_memory_page(2);
if (page_data[0] != (1 << i)) : if (page_data[0] != (1 << i)) :
...@@ -168,7 +174,7 @@ def main (default_directory='.'): ...@@ -168,7 +174,7 @@ def main (default_directory='.'):
if (error) : if (error) :
print "RESULT: [FAILED]" print "RESULT: [FAILED]"
raise TpsError ("Error in DDR data lines. Please check log file for more information") raise TpsError ("Error in DDR data/address lines. Please check log file for more information")
else : else :
print "RESULT: [OK]" print "RESULT: [OK]"
......
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