In reply to bmorris:
There are two areas to work on: one is the testbench and another one ist the reuse of tests and sequences.
Migrating blocklevel environments into a toplevel environment is quite easy and straight forward.
One question you have to decide is whether you want to integrate really the environments or only the agents. Both approaches are possible. In my projects I reuse the agents. In my eyes it is more easy. This requires only a new toplevel env with all the agents you need inside. This is one file to create. Then you have to adopt the toplevel module to pass all interfaces to the virtual interfaces, connect the DUT and implement all clock gens you need.