A methodology for system-level design for verifiability