Thanks for the reply. Well, the testbench you refer to would be a good test for the whole system. My point however, is that during development of this system, I would want to test the sub-modules (like s_box for example). This makes it easier to explore every module more closely (test its boundaries etc.), and check that it behaves as it should, before connecting it to other modules, making the bugs harder to find. For the AES system that might not be strictly neccessary. But for larger systems, having just one testbench such as this one serves good as a "final test", but is of little use during development of the system.
To illustrate, lets say your system has 40 modules. Many of these are large and complex (several FSMs and complex computational units etc.).
I mean, you can't just design all 40 modules without testing them and see how they behave in the top level testbench. That makes it very difficult to test the boundaries of each module etc.. That is my opinion anyway.
My goal is to be able to reuse these "separate" tests up the hierarchy, in a way. I am however beginning to think I am stuck with having separate testbenches for every major module and one for the top-level module, like I have done in the past.