Пример #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)
Пример #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)
Пример #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)
Пример #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)
Пример #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)
Пример #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)
Пример #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)
Пример #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)
Пример #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)
Пример #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)
Пример #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)
Пример #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
     ])
Пример #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)
Пример #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)
Пример #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)
Пример #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)
Пример #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)
Пример #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)
Пример #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)
Пример #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)