Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
970 views
in Technique[技术] by (71.8m points)

system verilog - SVA for the following protocol

I have to write a single SVA for the complete protocol shown in this image

I wrote the following SVA but it doesn't capture the immediate ack. How do I fix that

@(posedge clk) 
  $rose(val) |=> 
    ( $stable(data) && !ack && val ) ##[1:64] ( ack && val ) ##1 ( !ack && !val ) 
question from:https://stackoverflow.com/questions/65938352/sva-for-the-following-protocol

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

Looking at your assertion, it won't capture the immediate ACK because you are expecting a sequence excluding an immediate ACK with !ack. I would re-write your assertion as:

sequence seq;
  $stable({address, data}) ##[0:63] (val && ack && $stable({address, data})) ##1 !ack ##1 !val;
endsequence
 
property p;
  @(posedge clk) 
     $rose(val) |=> seq;
endproperty

as_protocol : assert property(p);

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

1.4m articles

1.4m replys

5 comments

56.9k users

...