相关阅读
Verilog基础https://blog.csdn.net/weixin_45791458/category_12263729.html?spm=1001.2014.3001.5482
标识符(identifier)是一个为了引用而给一个对象起的名字。一个标识符可以是一个简单标识符,也可以是一个转义标识符。本文将对两者进行详细阐述。
简单标识符
简单标识符是一个有限制的字符序列,由字母,数字,美元符($),下划线(_)组成,区分字母大小写。下面给出了简单标识符的命名限制。
- 序列的第一个字符不能是数字或美元符。
- 序列不能和Verilog中的关键字同名,下表列出了Verilog中的关键字。
- 简单标识符的最大长度至少为1024,取决于具体实现。
下面给出了一些简单标识符的例子。
test \\ 正确
data_bus \\ 正确
dollar$ \\ 正确
_bus3 \\ 正确
*****************************************
1data_bus \\ 以数字开头,错误
a signal \\ 包含空格,错误
data@bus \\ 包含特殊字符,错误
module \\ 与关键词冲突,错误
转义标识符
转义标识符也是一个序列,这个序列的开头字符必须是反斜杠(\),这个序列的最后一个字符是空白(空格、制表符或换行符)。序列中可以包含任何ASCII字符集中的除(space)外的可打印字符(以10进制说,即从33到126的字符)。
尽管转义标识符的开始、结尾字符固定,但其实它们并不认为是转义标识符的一部分,只是为了标志着这是一个转义标识符。
下面列出了一些转义标识符的例子。
[tab]表示制表符
\1test[tab] \\ 正确
\te%st[tab] \\ 正确
\module[tab] \\ 正确
\test[tab] \\ 正确,且与test等价,这出现在escaped identifier也是一个合法的simple identifier时
\a_reg[0][tab] \\ 正确,注意:此时的[0]也是标识符的一部分,这和选中a_reg标识符的第0位是有区别的
上面的最后一个例子可能用过DC的读者会遇到,因为默认情况下,DC在综合后可能会将向量信号(BUS)展开为单比特信号,此时这个信号由含有中括号的转义标识符表示,因此综合后的Verilog网表中,会出现反斜杠。这可以通过使用change_names命令,更改DC的命名规则,从而避免出现转义标识符。