1. A computer-implemented method for implementing a design having both a hardware portion and a software portion, comprising: receiving a specification for the design; generating one or more models for the hardware portion and the software portion; generating an interface between the software portion and the hardware portion, wherein the interface converts semantics between the software portion and the hardware portion; verifying the design using the one or more models by using the interface; and displaying results of verifying the design on a display device or storing the results in a data structure configured on a computer readable medium for storing the results.