1. A method of testing an IDE controller design, comprising the acts of: providing an IDE controller model having a primary and secondary channel and a host interface; transmitting data patterns from a pattern driver model to a primary device model via a primary channel and to a secondary device model via a secondary channel; receiving the data patterns into the pattern driver model from the primary device model via the primary device channel and from the secondary device model via the secondary device channel; arbitrating the transfer of the data patterns to and from the primary and secondary device models via a request/acknowledge protocol on a host interface; and determining whether the data patterns returned from the primary and secondary device models match expected values.