tps/test: test07 working.

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