随机变量的值通过由约束块声明的约束表达式来确定。像任务、函数和变量一样,随机块是类的成员。在一个类中,约束块的名字必须是唯一的。
一 语法定义
声明约束块的语法如下:
(1)constraint_identifier是约束块的名字。使用constraint_mode()(参见12.8节)方法,这个名字可以用来使能或关闭一个约束
(2)constraint_block是一个表达式语句的列表,它用来限制一个变量的取值范围或者定义变量间的关系。constraint_expression是任意SystemVerilog表达式,或者是约束专用操作符->和dist(参见12.4.4节和12.4.5节)中的一个。
约束的说明状态对约束表达式强加了下列限制:
- 函数可以具有某种限制(参见12.4.11节)。
- 不允许使用具有边带效应的操作符,例如++和--。
- 在排序约束中不能指定randc变量(参见12.4.9节中的solve...before)。
- dist表达式不能出现在其它表达式中。
二 常见约束
2.1 外部约束块
约束体可以像外部任务和函数体一样在一个类声明之外声明: