System Verilog Assertion for debug

System Verilog Assertion是非常好的验证方法,通过SVA可以显式描述需要验证的电路逻辑,并且仿真工具可以在仿真的过程中自动输出波形出错信息,从而替代传统的看波形调试方法,提高前端设计验证效率。

 RTL代码结构

`ifdef SVA
module m_sva(input wire signal);
    property p1;
        expression;
    endproperty
    a: assert property(p1);
endmdule
bind m m_sva m_sva_inst(signal);
`endif

主要断言语法

a: assert property(@(posedge clk) red_main && $past( red_main ) |-> $past( yellow_main, 2 ))

@(posedge clk): 在时钟上升沿时验证断言,验证上升沿的前一个周期信号值  
$past(signal, n): signal信号往前数n个周期  
signal_a |-> signal_b: signal_a与signal_b信号的关系,signal_a可以是组合逻辑,结果为真时判断与signal_b的关系  

property e2;
    @ ( posedge clk) (!reset && $countones({ce0_N,ce1_N,ce2_N,ce3_N})==3) |-> ##1 $countones({ce0_N,ce1_N,ce2_N,ce3_N})==4;
endproperty

$countones(signal): 数signal信号值为1的比特位数  

property e1;
    @(posedge clk) ( ($rose( ce0_N )) || ($rose( ce1_N )) || ($rose( ce2_N )) || ($rose( ce3_N )) ) |-> (b_ce_idle) [*1:$] ##1 adxStrb;
endproperty

$rose(signal): 断言信号处在上升沿

$fell(): 断言信号处在下降沿

$stable(): 断言信号不变化
##[m, n]: 在[m, n]的时间窗内信号变化,如果`n=$`,代表没有上界

仿真命令

vcs命令中,加入-sverilog使得可以编译SystemVerilog语法,加入+define+SVA定义宏变量,$VCS_HOME/packages/sva目录下为assert_*模块。

rm -rf simv* csrc *.vpd *.log
vcs -sverilog \
+define+ASSERT_ON+SVA \
-y $VCS_HOME/packages/sva +libext+.v \
+incdir+$VCS_HOME/packages/sva \
traffic.v
./simv -l run.log

 


   

转载于:https://www.cnblogs.com/QifanHu/p/5199012.html

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: SystemVerilog Assertion 应用指南电子版提供了对于SystemVerilog Assertion(SVA)在硬件验证中的应用的详细指导和建议。 SVA是一种在硬件验证中使用的特殊语言,用于对设计规范和行为进行验证。它与Verilog HDL结合使用,可以对设计中的时序和功能进行表达和验证。SVA在验证过程中可以帮助设计人员更好地发现和排除设计中的错误,并提高验证效率。 在SystemVerilog Assertion 应用指南电子版中,主要包括以下内容: 1. SVA基础知识:介绍SVA的语法和基本语句,包括property语句、assertion语句、sequence语句等。通过学习这些基础知识,读者可以了解SVA的基本用法和功能。 2. SVA高级应用:介绍一些复杂的SVA用法和技巧,如时序检查、复杂约束、错误定位等。这些高级应用可以帮助读者更好地应用SVA进行验证。 3. SVA调试技巧:提供了一些在验证过程中调试SVA的实用技巧和方法,帮助读者定位问题和提高调试效率。 4. SVA实例:给出了一些实际的SVA验证案例,在实例中展示了如何使用SVA进行验证,并提供了相关的代码和解释。 通过阅读SystemVerilog Assertion 应用指南电子版,读者可以全面了解SVA的应用和使用方法,掌握SVA在硬件验证中的关键技巧,提高验证效率和准确性。无论是初学者还是有一定经验的验证工程师,都可以从中获得实用的知识和指导,提高自己在硬件验证中的能力。 ### 回答2: SystemVerilog是一种硬件描述语言,它支持断言(Assertion)的应用。系统级别验证是确保设计和验证的正确性的重要步骤,断言在此过程中起着关键作用。断言是一种用于描述设计预期行为和验证目标的形式规范。以下是SystemVerilog断言的应用指南。 1.断言语法:SystemVerilog提供了一种断言语言来描述设计和验证要求。断言语句使用assert、assume和cover等关键字来定义,可以包含条件表达式和时序属性。 2.时序属性:时序属性是断言的重要组成部分。它们描述了信号行为在时间上的相对顺序。SystemVerilog提供了丰富的时序属性,如延迟(delay)、周期周期(repeat)和到达(property)等。 3.设计验证目标:在使用断言时,首先需要明确验证目标。验证目标可以是功能、性能、时序或其他特定方面的需求。这有助于确定需要编写的断言类型和属性。 4.模块划分:将设计划分为多个模块可以更好地管理断言。根据设计功能不同,可以设计独立的断言来验证每个模块的功能。 5.调试和报告:SystemVerilog断言提供了一种检测设计错误的方法。在验证过程中,可以通过断言的报告和调试信息来定位错误。根据断言的触发条件和时序属性,可以确定错误出现的位置。 6.性能优化:断言的数量和复杂性可能会对验证过程产生负面影响。因此,应该根据设计的规模和复杂性进行性能优化,以确保验证效率。 7.仿真和形式验证:SystemVerilog断言可以用于仿真和形式验证。在仿真中,通过断言验证设计行为的正确性。在形式验证中,断言可以指导形式验证工具进行验证,以寻找潜在错误。 总结:使用SystemVerilog断言,可以更好地管理系统级别验证的过程。它提供了丰富的语法和时序属性,用于描述设计预期行为和验证目标。通过模块划分和性能优化,可以提高验证效率。同时,以断言为基础的调试和报告方法可以快速定位设计错误,从而加快验证过程。无论是在仿真还是形式验证中,断言都是验证流程中不可或缺的一部分。 ### 回答3: 《SystemVerilog 断言应用指南》是一本非常有用的电子书,旨在帮助工程师们更好地理解和应用 SystemVerilog 断言。以下是对该电子书的简要回答。 该电子书通过简单明了的方式解释了 SystemVerilog 断言的基本概念和语法,并提供了丰富的示例来帮助读者快速上手。它深入讲解了断言的不同类型和用法,例如基本断言、连续断言和并发断言等。对于初学者来说,这些示例有助于更好地理解断言在各种情况下的实际应用。 此外,该电子书还介绍了断言的调试技巧和最佳实践。通过详细讲解断言的调试过程和常见的问题,读者可以了解到如何有效地调试断言并解决相关问题。此外,最佳实践部分提供了一些建议和技巧,包括如何编写清晰、可读性强的断言以及如何在实际项目中集成断言等。 除了基本内容之外,这本电子书还提供了一些高级主题,如在面向对象设计中使用断言、如何使用参数化断言以及如何在验证环境中使用断言等。这些主题对于有一定经验的工程师来说非常有价值,可以帮助他们进一步提升断言的应用水平。 总的来说,《SystemVerilog 断言应用指南》是一本全面而实用的电子书,对于想要学习和应用 SystemVerilog 断言的工程师来说是一本不可或缺的参考书。无论你是初学者还是有经验的工程师,这本电子书都能够帮助你更好地理解和应用断言,并提升你的设计和验证能力。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值