控制SystemVerilog Assertion的关闭打开

module my_control ();
  initial begin : disable_assertions_during_reset
    $display ("%0t %m Disabling assertions during init..", $time);
    $assertoff (0, top_tb.cpu_rtl_1);
    @ (top_tb.reset_n === 1'b1);
    $display ("%0t %m Enabling assertions after init..", $time);
    $asserton (0, top_tb.cpu_rtl_1);
   end
endmodule : my_control
module top_tb;
  logic clk =1’b0, reset_n = 1’b0;
  bus_if b_if; 
  cpu_rtl cpu_rtl_1(clk, reset_n, .*); // Instantiation of cpu module
  my_control my_control_1(); // instantiation of assertion control
..
endmodule : top_tb

在reset期间关闭assertion,reset后打开assertion。使用系统函数$asserton,$assertoff即可。

  • 3
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
SystemVerilog assertion 是一种用于验证设计的属性的语言和方法。它在设计的不同阶段都有广泛的应用,从功能验证到形式验证。下面是一些关于 SystemVerilog assertion 应用的指南: 1. 语法和语义:了解 SystemVerilog assertion 的基本语法和语义是必要的。它的语法类似于其他硬件描述语言,但有一些独特的特性和用法。熟悉这些特性并理解其语义是使用 SystemVerilog assertion 的基础。 2. 功能验证:SystemVerilog assertion 可以用于功能验证,通过检查设计是否满足特定的属性来验证其行为。在功能验证,可以使用属性描述设计的预期行为,并编写验证代码来检查这些属性是否得到满足。这有助于发现设计的问题并提前修复它们。 3. 形式验证:SystemVerilog assertion 还可以用于形式验证,用于证明设计在给定约束下是否满足某些属性。形式验证通常使用形式化验证工具,它可以自动地分析设计,并生成验证结果。使用形式验证可以提供更高的覆盖率和更全面的验证结果。 4. 属性编写:编写良好的属性是成功使用 SystemVerilog assertion 的关键。属性应该具备明确的描述设计行为和目标的特点。良好的属性应该容易验证,避免模糊和歧义的描述,并覆盖设计的所有关键方面。 5. 覆盖率评估:评估 SystemVerilog assertion 的覆盖率是非常重要的。覆盖率评估可以确定设计是否存在未覆盖的行为或属性。如果存在未覆盖的属性,可能需要进一步修改验证代码来增加覆盖率。 总之,了解 SystemVerilog assertion 的语法和语义,熟悉属性编写的技巧,以及进行有效的功能验证和形式验证是使用它的关键。通过正确地应用 SystemVerilog assertion,可以提高设计的可靠性和验证的效率。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值