值字符串的解读是根据 HDL 对象的声明类型和 -radix
命令行选项来确定的。-radix
始终覆盖 HDL 对象类型确定的默认基数。
- 对于类型为
logic
的 HDL 对象,值是logic
类型的一维阵列,或者值是指定基数的数字字符串。- 如果字符串指定的位数少于该类型期望的位数,那么该字符串将采用隐式零位扩展(而非符号位扩展),以匹配该类型的长度。
- 如果该字符串指定的位数多于该类型期望的位数,那么 MSB 侧的额外的位必须为零,否则,该命令会生成大小不匹配错误。
例如,值 3F 指定 8 位(每个十六进制数字 4 位),含基数十六进制和 1 个 6 位
logic
阵列,等同于二进制 0011 1111。但由于 3 的上 2 个位为 0(零),该值可赋值给 HDL 对象。相较之下,值 7F 会生成错误,因为上 2 个位不为零。- 标量(非阵列或记录)
logic
HDL 对象的隐式长度为 1 位。 - 对于声明为
a [left:right]
(Verilog) 或a(left TO/DOWNTO right)
的logic
阵列,最左侧的值位(位于扩展/截断位之后)赋值给a[left]
,最右侧的值位赋值给a[right]
。