A soft computing approach to hardware software codesign