SystemVerilog断言学习笔记 - 图文 (2)

似如千厥歌 分享 2020-06-21 下载文档

<8>点击―Simulate—>Restart…‖,―OK‖,接着点击―Simulate—>Run—>Run –All‖,再接着点击―Wave—>Zoom—>Zoom Full‖,其波形如下所示:

<9>在transcript状态栏下会出现断言失败的信息,通过双击它,可在Wave中显示断言失败的地方,如下图所示:

# ** Error: Assertion error. # Time: 25 ns Started: 25 ns Scope: assert_test.a_cc File: D:/electron/modelsim/assert_test/assert_test.sv Line: 38 # ** Error: Assertion error. # Time: 35 ns Started: 35 ns Scope: assert_test.a_cc File: D:/electron/modelsim/assert_test/assert_test.sv Line: 38 # ** Error: Assertion error. # Time: 55 ns Started: 55 ns Scope: assert_test.a_cc File: D:/electron/modelsim/assert_test/assert_test.sv Line: 38 # ** Error: Assertion error. # Time: 105 ns Started: 105 ns Scope: assert_test.a_cc File: D:/electron/modelsim/assert_test/assert_test.sv Line: 38 # ** Error: Assertion error. # Time: 155 ns Started: 155 ns Scope: assert_test.a_cc File: D:/electron/modelsim/assert_test/assert_test.sv Line: 38 # ** Error: Assertion error. # Time: 205 ns Started: 205 ns Scope: assert_test.a_cc File: D:/electron/modelsim/assert_test/assert_test.sv Line: 38 <10>也可以通过点击―View—>Coverage—>assertions‖查看断言的情况,如下所示: 很明显,断言失败有6处地方。 2、即时断言 <1>操作基本跟上面的一样,即时断言的一个例子如下所示: /******************************************************* 作者 : CrazyBird 文件 : assert_test.sv 日期 : 2015-5-1 功能 : 即时断言 ********************************************************/ `timescale 1ns/1ps module assert_test( output reg clk, output reg a, output reg b ); // 时钟的产生 parameter PERIOD = 10; initial begin clk = 0; forever #(PERIOD/2) clk = ~clk; end // 激励的产生 initial begin a = 0; b = 1; repeat(20)@(negedge clk) begin a = {$random()}%2; b = {$random()}%2; end @(negedge clk); $stop; end // 即时断言 always_comb begin a_ia: assert (a&&b); end endmodule 该段代码断言信号a和信号b同时为1,否则断言失败。 <2>其断言情况如下所示:

# ** Error: Assertion error. # Time: 0 ps Scope: assert_test.a_ia File: D:/electron/modelsim/assert_test/assert_test.sv Line: 41 # ** Error: Assertion error. # Time: 40 ns Scope: assert_test.a_ia File: D:/electron/modelsim/assert_test/assert_test.sv Line: 41 # ** Error: Assertion error. # Time: 60 ns Scope: assert_test.a_ia File: D:/electron/modelsim/assert_test/assert_test.sv Line: 41 # ** Error: Assertion error. # Time: 70 ns Scope: assert_test.a_ia File: D:/electron/modelsim/assert_test/assert_test.sv Line: 41 # ** Error: Assertion error. # Time: 110 ns Scope: assert_test.a_ia File: D:/electron/modelsim/assert_test/assert_test.sv Line: 41 # ** Error: Assertion error. # Time: 120 ns Scope: assert_test.a_ia File: D:/electron/modelsim/assert_test/assert_test.sv Line: 41 # ** Error: Assertion error. # Time: 130 ns Scope: assert_test.a_ia File: D:/electron/modelsim/assert_test/assert_test.sv Line: 41 # ** Error: Assertion error. # Time: 160 ns Scope: assert_test.a_ia File: D:/electron/modelsim/assert_test/assert_test.sv Line: 41 # ** Error: Assertion error. # Time: 170 ns Scope: assert_test.a_ia File: D:/electron/modelsim/assert_test/assert_test.sv Line: 41 # ** Error: Assertion error. # Time: 180 ns Scope: assert_test.a_ia File: D:/electron/modelsim/assert_test/assert_test.sv Line: 41 很明显,断言失败有10处地方。

【SystemVerilog断言学习笔记3】SVA块的建立

不管学什么东西,如果掌握了技巧、规律,我们将很容易上手。同样,如果我们掌握了建立SystemVerilog断言(简称SVA)块的步骤,在后面SVA的深入学习中将起到事半功倍的效果。SVA块的建立步骤如下。

步骤一、建立布尔表达式 步骤二、建立序列表达式

关键词序列‖sequence‖可以用来表示逻辑事件,包括同一个时钟边沿被求值的布尔表达式或者经过几个时钟周期的求值事件。 序列基本语法:

sequence name_of_sequence; ; endsequence

步骤三、建立属性

关键词属性‖property‖可以用来表示复杂序列的行为。 属性基本语法:


SystemVerilog断言学习笔记 - 图文 (2).doc 将本文的Word文档下载到电脑

下一篇:温州市中小学教师优秀教科研论文获奖名单平阳部

相关推荐
相关阅读
本类排行
× 游客快捷下载通道(下载后可以自由复制和排版)

下载本文档需要支付 7 元

支付方式:

开通VIP包月会员 特价:29元/月

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:xxxxxx QQ:xxxxxx