understanding hardware IP design