input: Write a function to generate a random password of length 8, which consists of alphanumeric characters and at least one special character. The function should repeatedly generate the password until it meets the criteria. You can use the `string` and `random` modules in Python for this purpose.
  
  def generate_password():
      chars = string.ascii_letters + string.digits + string.punctuation
      pwd_length = 8
  
      password = ''
      for i in range(pwd_length):
          password += random.choice(chars)
      
      # Check if at least one special character exists in the password
      if any([char in string.punctuation for char in password]):
          return password
      else:
          return generate_password()
  
  assert len(generate_password()) == 8
  assert any([char in string.punctuation for char in generate_password()]) == True
  assert all([char.isalnum() or char in string.punctuation for char in generate_password()]) == True
output: def generate_password():
      chars = string.ascii_letters + string.digits + string.punctuation
      pwd_length = 8
  
      password = ''
      for i in range(pwd_length):
          password += random.choice(chars)
      
      if any([char in string.punctuation for char in password]):
          return password
      else:
          return generate_password()