code: def decryption(self, ciphertext, key):
          
          if len(ciphertext) != self._key_len:
              raise pyrtl.PyrtlError("Ciphertext length is invalid")
          if len(key) != self._key_len:
              raise pyrtl.PyrtlError("key length is invalid")
          key_list = self._key_gen(key)
          t = self._add_round_key(ciphertext, key_list[10])
  
          for round in range(1, 11):
              t = self._inv_shift_rows(t)
              t = self._sub_bytes(t, True)
              t = self._add_round_key(t, key_list[10 - round])
              if round != 10:
                  t = self._mix_columns(t, True)
  
          return t
docs: Builds a single cycle AES Decryption circuit
  
          :param WireVector ciphertext: data to decrypt
          :param WireVector key: AES key to use to encrypt (AES is symmetric)
          :return: a WireVector containing the plaintext