Example #1
0
 def test_pattern_start(self):
     result = to_statements(sync_header())
     expected = to_statements([
         PatternVector(['1', 'X', '0', 'X', 'X']),
         PatternVector(['1', 'X', '1', 'X', 'X'],
                       opcode='repeat(5)',
                       comment='Sync header'),
     ])
     self.assertEqual(result, expected)
Example #2
0
 def test_read_value_cmd(self):
     result = to_statements(read_value_cmd())
     expected = to_statements([
         PatternVector(['0', '0', 'X', '1'], comment='Read Value Command'),
         PatternVector(['0', '1', 'X', '1'], comment='Read Value Command'),
         PatternVector(['0', '0', 'X', '1'], comment='Read Value Command'),
         PatternVector(['0', '0', 'X', '1'], comment='Read Value Command'),
         PatternVector(['0', '0', 'X', '1'], comment='Read Value Command'),
     ])
     self.assertEqual(result, expected)
Example #3
0
 def test_write_cmd(self):
     result = to_statements(write_cmd())
     expected = to_statements([
         PatternVector(['0', '0', 'X', '1'], comment='Write Command'),
         PatternVector(['0', '1', 'X', '1'], comment='Write Command'),
         PatternVector(['0', '0', 'X', '1'], comment='Write Command'),
         PatternVector(['0', '0', 'X', '1'], comment='Write Command'),
         PatternVector(['0', '0', 'X', '1'], comment='Write Command'),
     ])
     self.assertEqual(result, expected)
Example #4
0
 def test_wait(self):
     result = to_statements(wait(3))
     expected_result = PatternVector(
         ['1', 'X', '0', 'X', 'X'],
         opcode=f'repeat(3)',
         comment=f'Wait for 3 Timesets').get_statement()
     self.assertEqual(result, expected_result)
Example #5
0
 def test_data_frame(self):
     result = to_statements(data_frame('0xab;0xcd'))
     expected_result = '\n'.join([
         self._expect_writing_bits('0110100101', 'Data 0xab'),
         self._expect_writing_bits('0101100011', 'Data 0xcd')
     ])
     self.maxDiff = None
     self.assertEqual(result, expected_result)
Example #6
0
 def test_write_address(self):
     result = to_statements(write_address('0x3cd'))
     # 0x3cd = 011 1100 1101 b
     expected = to_statements([
         PatternVector(['0', '0', 'X', '1'], comment='Address 0x3cd'),
         PatternVector(['0', '1', 'X', '1'], comment='Address 0x3cd'),
         PatternVector(['0', '1', 'X', '1'], comment='Address 0x3cd'),
         PatternVector(['0', '1', 'X', '1'], comment='Address 0x3cd'),
         PatternVector(['0', '1', 'X', '1'], comment='Address 0x3cd'),
         PatternVector(['0', '0', 'X', '1'], comment='Address 0x3cd'),
         PatternVector(['0', '0', 'X', '1'], comment='Address 0x3cd'),
         PatternVector(['0', '1', 'X', '1'], comment='Address 0x3cd'),
         PatternVector(['0', '1', 'X', '1'], comment='Address 0x3cd'),
         PatternVector(['0', '0', 'X', '1'], comment='Address 0x3cd'),
         PatternVector(['0', '1', 'X', '1'], comment='Address 0x3cd'),
     ])
     self.assertEqual(result, expected)
Example #7
0
 def test_to_statements(self):
     vectors = [
         PatternVector(['1', 'X'], 'this is a comment', 'opcode1'),
         PatternVector(['V', '0'], 'another comment', 'opcode2'),
     ]
     expected_statement = '\n'.join([
         'opcode1        	-              	1	X; // this is a comment',
         'opcode2        	-              	V	0; // another comment'
     ])
     self.assertEqual(to_statements(vectors), expected_statement)
Example #8
0
 def test_generate_ok(self):
     contents = [
         {
             'OM': '1',
             'Burst Length': '2',
             'FSN': '0',
             'Start Address': '0x0100',
             'Data': '0xFF;0xFF',
             'R/W': 'W',
             'ChipID': '1'
         },
         # {'R/W':'R', 'Address':'0x102'}
     ]
     result = to_statements(self.dpg.generate(contents))
     expected = to_statements(bml_vectors.sync_header() +
                              bml_vectors.chip_select('1') +
                              bml_vectors.operation_mode('1', 'W') +
                              bml_vectors.burst_length('2') +
                              bml_vectors.fast_switch_number('0') +
                              bml_vectors.addr_frame('0x0100') +
                              bml_vectors.data_frame('0xFF;0xFF'))
     self.maxDiff = None
     self.assertEqual(result, expected)
Example #9
0
 def test_write_data(self):
     result = to_statements(write_data('0xabcd'))
     # 0xabcd = 1010 1011 1100 1101 b
     expected = to_statements([
         PatternVector(['0', '1', 'X', '1'], comment='Data 0xabcd'),
         PatternVector(['0', '0', 'X', '1'], comment='Data 0xabcd'),
         PatternVector(['0', '1', 'X', '1'], comment='Data 0xabcd'),
         PatternVector(['0', '0', 'X', '1'], comment='Data 0xabcd'),
         PatternVector(['0', '1', 'X', '1'], comment='Data 0xabcd'),
         PatternVector(['0', '0', 'X', '1'], comment='Data 0xabcd'),
         PatternVector(['0', '1', 'X', '1'], comment='Data 0xabcd'),
         PatternVector(['0', '1', 'X', '1'], comment='Data 0xabcd'),
         PatternVector(['0', '1', 'X', '1'], comment='Data 0xabcd'),
         PatternVector(['0', '1', 'X', '1'], comment='Data 0xabcd'),
         PatternVector(['0', '0', 'X', '1'], comment='Data 0xabcd'),
         PatternVector(['0', '0', 'X', '1'], comment='Data 0xabcd'),
         PatternVector(['0', '1', 'X', '1'], comment='Data 0xabcd'),
         PatternVector(['0', '1', 'X', '1'], comment='Data 0xabcd'),
         PatternVector(['0', '0', 'X', '1'], comment='Data 0xabcd'),
         PatternVector(['0', '1', 'X', '1'], comment='Data 0xabcd'),
     ])
     self.maxDiff = None
     self.assertEqual(result, expected)
Example #10
0
 def test_burst_length(self):
     test_cases = [
         #len, expected result
         ('0', self._expect_writing_bits('000', 'BurstLength 0')),
         ('2', self._expect_writing_bits('100', 'BurstLength 2')),
         ('3', self._expect_writing_bits('010', 'BurstLength 3')),
         ('4', self._expect_writing_bits('110', 'BurstLength 4')),
         ('5', self._expect_writing_bits('001', 'BurstLength 5')),
         ('8', self._expect_writing_bits('101', 'BurstLength 8')),
         ('16', self._expect_writing_bits('011', 'BurstLength 16')),
         ('32', self._expect_writing_bits('111', 'BurstLength 32')),
     ]
     for (len, expected_result) in test_cases:
         with self.subTest(f'Burst Length={len}'):
             result = to_statements(burst_length(len))
             self.assertEqual(result, expected_result)
Example #11
0
 def test_operation_mode(self):
     test_cases = [
         #Input:           Expected Ouput:
         #op_mode, r_w,    op_bits, op comment,    r_w bit, r_w comment
         ('0', 'r', '00', 'Normal', '1', 'Read'),
         ('0', 'w', '00', 'Normal', '0', 'Write'),
         ('1', 'w', '10', 'ImmeEffect', '0', 'Write'),
         ('2', 'w', '01', 'InitSlaveID', '0', 'Write'),
         ('3', 'r', '11', 'LoadData', '1', 'Read')
     ]
     for (op_mode, r_w, exp_op_bits, exp_op_comment, exp_rw_bit,
          exp_rw_comment) in test_cases:
         with self.subTest(f'Operation Mode={op_mode}, R/W={r_w}'):
             result = to_statements(operation_mode(op_mode, r_w))
             expected_result = '\n'.join([
                 self._expect_writing_bits(exp_op_bits, exp_op_comment),
                 self._expect_writing_bits(exp_rw_bit, exp_rw_comment)
             ])
             self.assertEqual(result, expected_result)
Example #12
0
 def _expect_writing_bits(self, bits_str, comment):
     return to_statements([
         PatternVector(['1', 'X', bit, 'X', 'X'], comment=comment)
         for bit in bits_str
     ])
Example #13
0
 def test_chip_select(self):
     result = to_statements(chip_select('30'))
     expected = self._expect_writing_bits('0011101', 'ChipID 30')
     self.assertEqual(result, expected)
Example #14
0
 def test_pattern_end(self):
     result = to_statements(pattern_end())
     expected = PatternVector(['X', 'X', 'X', 'X'], comment='End of the pattern', opcode='halt').get_statement()
     self.assertEqual(result, expected)
Example #15
0
 def test_frame_end(self):
     result = to_statements(frame_end())
     expected = PatternVector(['1', '0', 'X', '0'], comment='End of SPI 4W Frame', opcode='repeat(5)').get_statement()
     self.assertEqual(result, expected)
Example #16
0
 def test_capture_stop(self):
     result = to_statements(capture_stop())
     expected = PatternVector(['1', '0', 'X', '1'], opcode='capture_stop').get_statement()
     self.assertEqual(result, expected)
Example #17
0
 def test_addr_frame(self):
     result = to_statements(addr_frame('0xabcd'))
     expected_result = self._expect_writing_bits('01011000110110100101',
                                                 'Addr 0xabcd')
     self.maxDiff = None
     self.assertEqual(result, expected_result)
Example #18
0
 def test_fast_switch_number(self):
     result = to_statements(fast_switch_number('6'))
     expected_result = self._expect_writing_bits('00110', 'FSN 6')
     self.assertEqual(result, expected_result)
Example #19
0
 def test_read_data(self):
     result = to_statements(read_data())
     expected = to_statements([PatternVector(['0', 'X', 'V', '1'], comment='Read', opcode='capture')] * 16)
     self.assertEqual(result, expected)
Example #20
0
 def test_pattern_start(self):
     result = to_statements(pattern_start('Test_Timeset'))
     expected = PatternVector(['1', '0', 'X', '0'], comment='Start of the pattern', timeset='Test_Timeset').get_statement()
     self.assertEqual(result, expected)