Hi Guys,
Can someone help me educate on the topic : comparison of the advantages/disadvantages of using VHDL or Verilog for hardware verification
Please help
Hi Guys,
Can someone help me educate on the topic : comparison of the advantages/disadvantages of using VHDL or Verilog for hardware verification
Please help
If you are asking specifically about verification, and not design, then we will suggest that you make the comparison with SystemVerilog versus VHDL or Verilog. Developing a verification test is a software programming task, not a design task. SystemVerilog was developed to merge the two worlds together in a single language, plus added features specifically for functional coverage and constrained random test generation. The UVM base class library and methodology is the established standard for writing verification testbenches, and that gives you access to a plethora of standard methodology guidelines, training, and Verification IP.
In reply to dave_59:
so is it likee using Verilog or VHDL doesnt matter much when it comes to verification ?
In reply to jvkodali:
If you are asking whether it matters whether you use Verilog or VHDL for RTL design when you are using SystemVerilog/UVM for verification, I would say use the language that you have the resources to support. IMHO, it think it would be better if everyone used SystemVerilog for both design and verification. That way it is easier to shift resources between design and verification. However, there are some people that believe it is best for verification if verification engineers did not understand how to read RTL code. I don’t agree with that.
In reply to dave_59:
I completely get your point and I support it to the core.
But here my context is to just know the comparision so that I get a better understanding of the subject ( as i am a begginer ) and present the comparision.
I have been googling but haven’t been successful yet. I would appreciate if you could help me get the main reasons what are adv or disadv of using Verilog or VHDL in Verification domain only (Not DESIGN)
Thank you
In reply to jvkodali:
If you are only talking about the verification domain, then the comparison needs to be between VHDL and SystemVerilog, not Verilog. SystemVerilog has all the dynamic software programming features that you need to create a testbench, and the object-oriented programming features to make that testbench reusable. And then there are are the testbench specific features that I mentioned at the beginning of my response. But you can’t just look at the technical features. There is the cost of getting people trained, especially if you have only VHDL expertise in-house. And then you have to look at the available verification IP that you may need in case you do not have the resources available to write it yourself (How much time to you want to spend verifying your testbench instead of your DUT?). That’s where SystemVerilog along with standard UVM based verification IP can help you tremendously.
In reply to jvkodali:
I was asked to prepare a presentation on the topic below for a job interview:
Comparision of Advantages/Disadvantges of Verilog or VHDL in Hardware verification
That’s a good interview question because it demonstrates how much you really know about design and verification. It is also a tricky question because it can also show the weaknesses in your understanding of the whole verification problems. Thus, you need to address the process of verification, including:
I authored several books on VHDL and Verilog (which represents the RTL part of SystemVerilog) and to me, the two languages are pretty much similar, except for syntax. After being a very strong advocate of VHDL, I changed my beliefs and switched to SystemVerilog, even for just the Verilog subset of it. It is less restrictive, but requires good coding guidelines. I am also a very strong advocate of SystemVerilog assertions (SVA) because they help in the clarification of the requirements and in the debugging and verification process. Formal verification is gaining wide acceptance, and uses SVA for the definitions of the properties of the design. I also like the UVM methodology and approaches, though UVM is not very straightforward, and requires care, with a good understanding of SystemVerilog. However, with some guidance and rules, I believe that one can effectively use UVM with a lesser than full
understanding of SystemVerilog. What I am talking about it is the use of predefined templates for the basic building blocks.
Ben Cohen
http://www.systemverilog.us/ ben@systemverilog.us
In reply to ben@SystemVerilog.us:
Hi Ben,
Thanks for your insight. I understand that a lot depends on the Verification methodology.
Are there any language specific features that help in Verification. I would appreciate any information contrasting Verilog, VHDL and System Verilog for Verification.
Because of various opinions and no clear resourses on Web on this particualar topic, I am finding it difficult. All comparisions are in general talking about the general features.
I came accross one of your thread from 2000.
http://verificationguild.com/modules.php?name=Forums&file=viewtopic&t=66
I look forward to hearing from you soon.
In reply to jvkodali:
Are there any language specific features that help in Verification.
SV supports specific features for verifcation, and those are not supported by VHDL.
Several aspects are needed in verif:
In SystemVerilog seeding will be done hierachily. Every module instance, interface instance, program instance and package has initialization RNG. Every thread and object has independent RNG . When ever dynamic thread is created its RNG is initialized with the next random value from its parent thread. RNG initialization and RNG generation are different process (see the link for more info). But that works with the $urandom,$urandom_range, or std::randomize()
Thus, in a nutshell, the $random is verilog thingy, whereas $urandom,$urandom_range, or std::randomize() are SV where each thread has its own RNG; if one thread adds another RNG call, it does not disturb the other RNGs in the other threads.
Verification of results:
This is supported by SVA and by dta structures needed for verif. Am thinking of stuff like associative arrays, queus, mailboxes, the generate statement (like VHDL), vectors.
Coverage to determine when done, or how much was done.
SV has the cSVA cover and the covergroup to help in that respect.
flexibility for changes
SV has classes that can be extended and dynamically linked to other classes to accommodate changes and tests.
standards: UVM was developed to facilitate the standardization for the development of TBs.
On Verilog, as Dave mentioned, it is a subset of SV, and more at the RTL level. Not very useful for the verif of large designs.
On VHDL, it lacks the above aspects.
Ben Cohen systemverilog.us
In reply to ben@SystemVerilog.us:
But using VHDL or Verilog will help designers verify in the eariler stages of design right.
What are the features in VHDl that makes it good.
In reply to jvkodali:
But using VHDL or Verilog will help designers verify in the earlier stages of design right.
For VHDL, you would need to add a randomize package (have not use VHDL for many, many years, so I cant give a link or more info, but you need a package). The randomize package is not “stable”, as explained in my previous reply. Also, you would need to create some code to define or emulate constraints. Of course, in both languages, you can define directed tests … have fun!!!
What are the features in VHDl that makes it good.
Ben Cohen
http://www.systemverilog.us/ ben@systemverilog.us