In addition to signals, there can also be tasks and functions inside the interface. This
lets you create tasks specific to that interface. Interfaces can be parameterized. In
the previous example, data1 and data2 were both 10-bit
vectors, but you can modify those interfaces to be any size depending on a parameter
that is set.