M
Marcus Harnisch
Hi Andy
This is pretty much how OVL is implemented. Better than nothing, but
not what I would prefer over a real assertion language.
Sometimes this is exactly what you want to have. Diversity gives you a
better chance of catching bugs early. Introducing the same bug in two
entirely different solutions (RTL and PSL/SVA) is rather difficult.
Compare that to comments. We all carefuly comment our code, don't we
Why? Isn't the RTL description sufficient? Anyone reading well
written code knows immediately how a device will behave. In fact some
argue that comments in code are dangerous because nothing ensures that
they are up-to-date with the code they are supposed to describe, hence
causing more confusion that they were to solve. If you look at some
mature projects you will find some truth in that.
If you consider assertion languages as "formal comment" you'll get two
benefits:
1. Assuming a sufficiently complete test environment you'll get
feedback if comment (assertion) and code diverge.
2. A well specified formal language doesn't leave room for
interpretation. Prose is ambiguous, assertions are not.
Plus, if used in specifications (instead of or alongside timing
diagrams and prose), you can now easily verify the actual behavior
vs. specifed behavior.
Deliberatly in a way. To provide diversity (see above), and to get a
concise way to describe some behavior.
Regards
Marcus
Andy said:Can't most formal tools "prove" regular VHDL-87 assertions? So we
beg, borrow or steal a package of functions/procedures that can be
called in conjunction with an assert statement to accomplish all these
new-fangled properties?
This is pretty much how OVL is implemented. Better than nothing, but
not what I would prefer over a real assertion language.
What is nice about assertion statements (and maybe properties; I don't
know) is that they can be placed inside existing conditional
statements, etc. in you regular code, so you don't have to separately
account for those conditions in the property.
Sometimes this is exactly what you want to have. Diversity gives you a
better chance of catching bugs early. Introducing the same bug in two
entirely different solutions (RTL and PSL/SVA) is rather difficult.
Compare that to comments. We all carefuly comment our code, don't we
Why? Isn't the RTL description sufficient? Anyone reading well
written code knows immediately how a device will behave. In fact some
argue that comments in code are dangerous because nothing ensures that
they are up-to-date with the code they are supposed to describe, hence
causing more confusion that they were to solve. If you look at some
mature projects you will find some truth in that.
If you consider assertion languages as "formal comment" you'll get two
benefits:
1. Assuming a sufficiently complete test environment you'll get
feedback if comment (assertion) and code diverge.
2. A well specified formal language doesn't leave room for
interpretation. Prose is ambiguous, assertions are not.
Plus, if used in specifications (instead of or alongside timing
diagrams and prose), you can now easily verify the actual behavior
vs. specifed behavior.
Maybe it's just me, but it seems like properties were developed for
"bolting on" verification, where as I think we need to do more
"building in" verification.
Deliberatly in a way. To provide diversity (see above), and to get a
concise way to describe some behavior.
Regards
Marcus