Verification Guild
A Community of Verification Professionals

 Create an AccountHome | Calendar | Downloads | FAQ | Links | Site Admin | Your Account  

Login
Nickname

Password

Security Code: Security Code
Type Security Code
BACKWARD

Don't have an account yet? You can create one. As a registered user you have some advantages like theme manager, comments configuration and post comments with your name.

Modules
· Home
· Downloads
· FAQ
· Feedback
· Recommend Us
· Web Links
· Your Account

Advertising

Who's Online
There are currently, 52 guest(s) and 2 member(s) that are online.

You are Anonymous user. You can register for free by clicking here

  
Verification Guild: Forums

 Forum FAQForum FAQ   SearchSearch   UsergroupsUsergroups   ProfileProfile  ProfileDigest    Log inLog in 

ABV of serial protocols

 
This forum is locked: you cannot post, reply to, or edit topics.   This topic is locked: you cannot edit posts or make replies.    Verification Guild Forum Index -> Assertions
View previous topic :: View next topic  
Author Message
Gareth
Senior
Senior


Joined: Jan 12, 2004
Posts: 21
Location: Edinburgh, Scotland

PostPosted: Wed Oct 20, 2004 5:21 am    Post subject: ABV of serial protocols Reply with quote

I'm a bit of a noob to ABV so this may be a stupid question ("there is no such thing as a stupid question, only a stupid questioner").

What would be the be best way to verify a serial based protocol using ABV? For example, I2C or MDIO from the Ethernet standard? In these cases, the state of the system at any particular moment is a function of all the previous bits on the wire in that particular serial word or transaction.

Property specification languages seem to be good as specifying the correct behaviour of parallel interfaces with control or handshaking signals. However, serial protocols frequently embed this information into the data stream itself in one way or another, and on the face of it property specification appears to be operating at the wrong level of abstraction.

I've seen a verification methodology in a Synopsys seminar for a simple UART design that used an HDL behavioural process to count from the start of the serial word (say, when a start bit is detected), and the value of that counter used as a state variable in the assertions layered on top of the HDL testbench.

However, it's my feeling that this hybrid HDL/Assertion language approach to building the property will not transfer well, say, to any of the formal or hybrid tools (I have had no experience with this kind of software so I can't say for definite).

The issues becomes even more severe in the higher speed serial protocols, that may be munged by an 8B10B encoder in the case of 1-Gigabit Ethernet or a shift-register scrambler in the case of 10-Gigabit Ethernet? How could one go about building a property specification for this kind of protocol? Or do you just forget it and only verify "behind" the scrambler or encoder?

Cheers
Gareth
Back to top
View user's profile
Gadi
Newbie
Newbie


Joined: Oct 24, 2004
Posts: 2

PostPosted: Tue Oct 26, 2004 5:37 am    Post subject: Reply with quote

Control-path verification is similar in serial protocols and other protocols. PSL sequences are useful.
Code:

-- start and stop are predefined auxiliary signals.
-- between start and stop,
--                  after every eight bits of data transfer datain is received.
assert always  {{start; [*8]; {datain; [*8]}[*]} && !stop}|=> {datain};

Endpoints and the before operator may be used to refer to the past.
Code:

-- if stop occurs than start occurred somewhere in the past.
endpoint after_start := {start; [+]};
assert always (stop -> after_start);

-- datain must be received between start and stop.
assert always (start -> next (datain before stop));

Data-path verification can be done with few data bits only. So, there is no need to monitor all data bits on the serial bus.
If a serial protocol is checked together with neighbor components, you can access buffers that store data before and after it was transferred on the bus.
The forall construct is useful to gather bits directly from a serial bus.
Code:

assert forall d(0..4) in boolean: always {start; data=write; data=d(0); data=d(1); data=d(2); data=d(3); [*]; start; data=read} |=>
{data=d(0); data=d(1); data=d(2); data=d(3)};

Quote:

The issues becomes even more severe in the higher speed serial protocols, that may be munged by an 8B10B encoder in the case of 1-Gigabit Ethernet or a shift-register scrambler in the case of 10-Gigabit Ethernet? How could one go about building a property specification for this kind of protocol? Or do you just forget it and only verify "behind" the scrambler or encoder?

It's easier to check the data behind the encoder or the scrambler, that is, to check the data before it was encoded or after it was decoded.
In order to check the encoded bits you will have to write some kind of decoder/descrambler that fits your needs. The implementation of the decoder that is used by the protocol can help.
Back to top
View user's profile AIM Address
alexg
Senior
Senior


Joined: Jan 07, 2004
Posts: 586
Location: Ottawa

PostPosted: Tue Oct 26, 2004 8:48 pm    Post subject: Reply with quote

Gadi wrote:
Data-path verification can be done with few data bits only. So, there is no need to monitor all data bits on the serial bus.


Does in mean that with few data bits we can formally validate the datapath function?

And another question: can we use 8/10 encoders/decoders or shift-reg scramblers in formal verification?

Regards,
Alexander Gnusin
Back to top
View user's profile Send e-mail
Gadi
Newbie
Newbie


Joined: Oct 24, 2004
Posts: 2

PostPosted: Wed Oct 27, 2004 9:06 am    Post subject: Reply with quote

Quote:
Does in mean that with few data bits we can formally validate the datapath function?

It's better to check all data bits but often the model becomes to big for formal verification. It is enough to check few data bits in case a data path merely transfers some data buffer across the design. If some part of the bits get corrupted and others are transferred correctly, simulation should discover it.
In case data paths involve more complex functionality, such as arithmetic and data-integrity operations, all bits must be examined.
The decision between data paths and control path is not clear cut, for example, a packet address determines the packet destination and then being treated as a part of the data.
Quote:
can we use 8/10 encoders/decoders or shift-reg scramblers in formal verification?
I don't understand the question.
Back to top
View user's profile AIM Address
alexg
Senior
Senior


Joined: Jan 07, 2004
Posts: 586
Location: Ottawa

PostPosted: Wed Oct 27, 2004 8:54 pm    Post subject: Reply with quote

Quote:
alexg wrote:
can we use 8/10 encoders/decoders or shift-reg scramblers in formal verification?

I don't understand the question.


I think, it is impossible to develop the set of assertions (aka bus checker) for the formal verification of serial protocol interfaces (pci express, gigE). First, there is no clock: it is buried within data. Second, formal tools will have problems with LFSR-based data scramblers /descrambles (the same as they have problems with CRC validation). So, formal strategy for serial protocol verification have to be different from the one used for the parallel protocol. Assertions have to be more chip-specific, being applied to internal nodes of design, and not to the protocol interface.

Quote:
It's better to check all data bits but often the model becomes to big for formal verification. It is enough to check few data bits in case a data path merely transfers some data buffer across the design. If some part of the bits get corrupted and others are transferred correctly, simulation should discover it.


I would be more interested to formally verify data transfer not across the design, but across the protocol interface. It means that formal verification environment has to include both sender and transmitter devices.

The idea of verifyng few data bits sounds interesting to me. If these belong to the the packet CRC, then the probablility that whole packets match if checkums partially match is still high. Here, we also have to assume that CRC function works correctly for both transmitter and receiver.

Regards,
Alexander Gnusin
Back to top
View user's profile Send e-mail
Display posts from previous:   
This forum is locked: you cannot post, reply to, or edit topics.   This topic is locked: you cannot edit posts or make replies.    Verification Guild Forum Index -> Assertions All times are GMT - 5 Hours
Page 1 of 1

 
Jump to:  
You can post new topics in this forum
You can reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum
Verification Guild © 2006 Janick Bergeron
Web site engine's code is Copyright © 2003 by PHP-Nuke. All Rights Reserved. PHP-Nuke is Free Software released under the GNU/GPL license.
Page Generation: 0.855 Seconds