<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;
步骤三、建立属性
关键词属性‖property‖可以用来表示复杂序列的行为。 属性基本语法:
搜索“diyifanwen.net”或“第一范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,第一范文网,提供最新小学教育SystemVerilog断言学习笔记 - 图文 (2)全文阅读和word下载服务。
相关推荐: