SVA断言翻译笔记 16.7-16.8 Sequences 语法(11)

本文详细介绍了SystemVerilog中的序列声明与使用方法,包括序列的定义、不同类型的序列示例、序列间的依赖关系及序列声明中的形式参数等内容。

   16.7 Sequences

  1. ##[*] 等价于 ##[0:$]
  2. ##[+] 等价于 ##[1:$]
  3. a ##N b //a为真,则过N拍b为真;
  4. (a ##1 b ##1 c) ##0 (d ##1 e ##1 f ) 等价于 a ##1 b ##1 c && d ##1 e ##1 f
  5. req ## [4:32] gnt //延迟可以是时间窗范围内任何值;
  6. req ## [4:$] gnt //使用$将时间窗扩展到无穷;
  7. a ##1 b ##1 c ##3 `true //`define true 1,序列可以通过连接`true来无条件扩展。

16.8 Declaring sequences

        序列可以在module、interface、program、clocking block、package、compilation-unit scope、checker、generate block声明。

        例如,仅当实际参数是细化时间常数时,对非类型化形式参数的引用可能出现在循环延迟范围、布尔值或序列的规范中。

//例1
sequence delay_example(x, y, min, max, delay1);
x ##delay1 y[*min:max];
endsequence
// Legal
a1: assert property (@(posedge clk) delay_example(x, y, 3, $, 2));
int z, d;
// Illegal: z and d are not elaboration-time constants
a2_illegal: assert property (@(posedge clk) delay_example(x, y, z, $, d));

        下例,命名序列s1和s2在clk的连续posedge事件上进行计算,命名序列s3在clk的连续negedge事件上进行计算,命名序列s4在clk的连续交替posedge和negedge事件上进行计算:


//例2
sequence s1;
@(posedge clk) a ##1 b ##1 c;
endsequence
sequence s2;
@(posedge clk) d ##1 e ##1 f;
endsequence
sequence s
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值