I agree to Ajeetha on the fact that verification is doable using any language, you can live with limitations and also the fact that main difference is the AOP(E) and OOP(SV) language.
But let me guide you thru one main advantage of E and also some advantage of SV , You need to think what will suit you.
Advantage of E:
It is simple AOP
what is that ? OK , here it comes , it is allowing you keep your imaginations unlimited for future. Something like ,The AOP features of e mean flexibility is built into your verification designs by default. Incase your code has to be reused in future by chance, your re-users/modifiers can make your verification design useful to them. OOP on the other hand is only flexible if you make it flexible. OOP is flexible only by design not default- you cannot design all of the things your re-users/modifiers may wish to do from your code, because you are not oracle and will not add hooks, callbacks, publicly accessible types, virtual methods, etc everywhere for future any not-anticipated change or request.
The inbuilt flexibility of OOP is inheritance. Good for marketing, but actually not good. There are Non-virtual methods ,private and protected member variables that you want to replace with your new class type. The default inbuilt flexibility of OOP relies on the code writer has to think ahead of making their code virtual and accessible.
Advantage of SV :
1.People can a feel of their old language verilog : But that too very less part of SV for verification.
2.No linking of simulator to specman : But That is just one time.
debugging may be easy for design folks : Do they really debug verification stuff , do all of them get into verification and constructs like classes.
3.Can put SVA between RTL code : This one scores over E/specman, But E also has temporal expressions . This helps verification engineers to shift their load to RTLers for writing the assertions(verification folks have to still define them)
If you have the choice to choose the best for you , choose E , as in bigger environements and codes coming and going to all places you may find E more handy as for code maintenance and reusing existing code AOP is almost indispensable. By using AOP extensions, users can methodically update an existing environment with concerns that were missed in the initial planning, or are the result of changes that occur later on in the project. This sort of "after-the-fact" manipulation can be difficult in a standard OOP environment and/or if you only hold yourself to strict OOP practices. In the context of reusing existing Verification IP, AOP allows you to configure, control and add functionality to the existing VIP without touching the base code set - hence the reference to "safety" above since you don't have to muck with proven code. This can become critical when sharing IP across multiple projects or groups.
With AOP , You will be allowed to write tests that need a tweak in the environment for a special case but which can spoil other cases.
I am not sure if these things are supported in SV nowadays with VCS.Please ask for dynamic AOP / advice from Synopsys folks.
Think on this !!!
Sarika Varshney