目录
一、SVA中的sequence
位于SystemVerilog Assertion (SVA)中的sequence,是描述一种信号时序关系的基本语句块,可以被包含于assertion的property块中。在《IEEE 1800-2012 systemverilog》P348中指出,sequence可以在module、interface、program等中声明:
但是,不能在A class类中声明。
一个典型的sequence应用于断言中的代码如下:
sequence s1;
@(posedge clk) a ##1 b ##1 c;
endsequence
sequence s2;
@(posedge clk) b ##1 c;
endsequence
property my_prop
s1 |=> s2;
endproperty
assert property my_prop else $error ("ERROR, please check your signal timing.");
二、UVM中的sequence
Universal Verification Methodology (UVM)中的sequence是UVM中一种非常重要的机制。uvm_sequence#(REQ,RSP)继承于uvm_sequence_base,又继承于uvm_sequence_item,最终来源于uvm_object。
uvm_sequence作为UVM验证方法学发送测试序列transactions的源头,可以完成包括transactions的创建(create_item)、挂载(start_item)、随机化(randomize)、卸载(finish_item)等工作,然后将transactions经由sequencer送给driver。
显然,SVA的sequence与UVM的sequence是两个完全不同的概念,分别服务于两个完全不同的芯片验证需求。