SVA BIND 读书笔记

《SystemVerilog Assertions Design Tricks and SVA Bind Files》

1 Introduction

This paper details some SVA methodology techniques that I highly recommend, especially for design engineers

what should never happen using "not sequence" assertions is even more important than using assertions to describe always true conditions.

Immediate assertions
   execute once and are placed inline with the code

Concurrent assertions
   are the most valuable and most widely used type of assertion

2 Long Labels 

The long labels help to debug the assertions in a waveform display

3 Immediate Assertions 

There are a couple of places where Immediate Assertions can be quite useful
  Dynamic casting with immediate assertion
  Randomization

where user care about success or fail of these SV methods

4 Concurrent Assertions

The most valuable assertion style is Concurrent Assertions

5 Concise Assertion Coding Styles

useful techniques
  (1) to define default clocking blocks and always blocks that will disable
      assertions during reset

  (2) use simple macro definitions
     The concise `assert_clk and `assert_async_reset macros significantly reduce the
     effort required to add assertions to an RTL design

6 SVA Bind Files

bind an SVA file to the golden model that cant be modified
bind can be done with both Verilog and VHDL RTL files

SVA bind files require that:
  the assertions be wrapped in a module that includes port declarations
  // fifo1 u1 (.*);
  // bind fifo1: u1 pLib_fifo p1 (.*);
  // bind fifo1: u1 pLib_fifo p1 (.a(A).b(B));

7 SVA File Methodologies

Using assertions with an RTL file:
  adding
  include
  instanciate
  bind

To preserve the same assertions in the gate-level design after synthesis
  dont use adding

8 Summary & Conclusions

Concised Assertion Style using macro is recommended
Bind Assertion is useful

9 Acknowledgements

 

10 References

 

11 Author & Contact Information

 

12 Appendix

12.1 Synchronous FIFO assertions
  Asynchronous reset assertion
  FIFO full condition assertions 
    ...
  FIFO empty condition assertions 
    ...
  The FIFO cnt (word count) should never be negative
  If read & write occur at the same time, the FIFO should not be full or empty.

12.2 Separate property and assertion style
12.3 Combined assert property style
12.4 Assertion macro style

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
There are some simple tricks that every design engineer should know to facilitate the usage of SystemVerilog Assertions. Although this paper is not intended to be a comprehensive tutorial on SystemVerilog Assertions, it is worthwhile to give a simplified definition of a property and the concurrent assertion of a property. 1.1 What is an assertion? An assertion is basically a "statement of fact" or "claim of truth" made about a design by a design or verification engineer. An engineer will assert or "claim" that certain conditions are always true or never true about a design. If that claim can ever be proven false, then the assertion fails (the "claim" was false). Assertions essentially become active design comments, and one important methodology treats them exactly like active design comments. More on this in Section 2. A trusted colleague and formal analysis expert[1] reports that for formal analysis, describing what should never happen using "not sequence" assertions is even more important than using assertions to describe always true conditions. 1.2 What is a property? A property is basically a rule that will be asserted (enabled) to passively test a design. The property can be a simple Boolean test regarding conditions that should always hold true about the design, or it can be a sampled sequence of signals that should follow a legal and prescribed protocol. For formal analysis, a property describes the environment of the block under verification, i.e. what is legal behavior of the inputs. 1.3 Two types of SystemVerilog assertions SystemVerilog has two types of assertions: (1) Immediate assertions (2) Concurrent assertions Immediate assertions execute once and are placed inline with the code. Immediate assertions are not exceptionally useful except in a few places, which are detailed in Section 3.

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值