A data parallel approach to Boolean function manipulation using BDDs