1、中华人民共和国国家标准集成电路计算机硬件描述语言发布 实施国家质量技术监督局 发布前言本标准等同采用 美国 电气与电子工程师协会 基于硬件描述语言的标准硬件描述语言 其技术内容与 完全一致 标准结构也无任何改动只是增加了附录 专用术语中英文对照表 以利于本标准专业术语的统一标准已被世界各工业发达国家普遍接受将其等同采用为我国国家标准将使我国的集成电路 软件技术在使用方法上与国际保持一致有利于我国与国际集成电路设计技术标准化接轨 也有利于我国硬件描述语言按国际惯例规范化是一项重要的集成电路软件技术 是当前 硬件描述语言 设计方法学的基础受到半导体及集成电路设计行业的普遍重视 世界各大半导体公司大
2、多采用了该标准 当前国际微电子技术正在迅猛发展 我国正处在突破集成电路产业落后局面的关键时刻而集成电路设计是有可能首先取得成功的行业 这一点在国内已取得共识 因此 本标准的发布实施必将会对我国的 发展有重要的推动作用硬件描述语言 是 于 年在英格兰阿克顿市的硬件描述语言公司设计出来的该公司在同一年发布了 及其模拟器 并于年推出改进产品 年 月 公司并购了这家公司并于 年将公开成立了 是由 用户和 供应商组成的行业协会负责推动和制定工业标准 在 年 月 日被 接纳为工业标准 下文简称从诞生起就与生产实际紧密结合在一起具有结构清晰文法简明功能强大高速模拟和多库支持等优点 并获得许多工具的支持 深受
3、用户的喜爱 虽然另一种硬件描述语言 于年首先成为 标准 并于 年扩展为 标准使它得到迅速发展但是 实际上是 行业标准 特别是在 年 月被 接纳为正式标准后 使它成为一种很有竞争力的硬件描述语言标准包含的内容十分丰富主要有词法约定 数据类型表达式 语义调度赋值语句门级建模和开关级建模用户定义的基元 行为级建模 任务和函数 有名称的块和任务的停用层次化结构 指定块 系统任务和函数值变转储文件 编译指令 和 接口机制程序定义及 程序的使用 程序定义及 程序的应用 程序定义及 程序的使用等内容本标准中黑体字和斜体字的说明见本标准的附录 附录 附录 附录 附录 都是标准的附录本标准的附录 附录 附录 和
4、附录 都是提示的附录本标准由中国标准研究中心和北京理工大学提出本标准由全国信息技术标准化技术委员会归口本标准起草单位北京理工大学和中国标准研究中心本标准主要起草人刘明业 蒋敬旗董连续 石峰胡燕翔 叶梅龙董国华 樊孝忠中华人民共和国国家标准集成电路 计算机硬件描述语言国家质量技术监督局 批准 实施概述本标准的目的本标准旨在作为 硬件描述语言 的完整规范 本文档包括所有结构的形式化语法和语义模拟系统的任务和函数 例如文本输出显示命令编译指令例如文本替代宏和模拟的时间刻度编程语言接口 的连接机制存取例行程序 任务例行程序函数例行程序以及 的过程化接口例行程序的形式化语法和语义应用实例头文件列表本标准
5、使用的一些约定本标准分为多章 每章集中阐述该语言的某个特定问题 每章中各条论述单独的结构和概念 论述中首先是对结构或概念的介绍和基本原理接着是语法和语义描述 以及一些举例和注释本标准中使用的动词 表示强制要求而动词 表示可选择性 这些动词对于不同的读者表示不同的含义对于 的工具开发人员来说 动词 表示标准强加的要求 要求最终实现的结果能够实现这些要求如果要求不能得到满足就报错对于 模型开发人员来说动词 表示 的特性是语言定义的自然结果 要求模型开发人员能够遵循这些特性所隐含的约束 动词 表示可选择性 模型开发人员可以随意操作 如果采用则要求模型开发人员遵循语言定义所阐明的要求对于使用 模型的用
6、户来说动词 表示模型的特性是语言定义的自然结果模型用户可以依赖 源文本隐含的模型特性语法描述使用 范式 进行 的形式化描述 使用以下约定使用小写字母下划线表示语法范畴 例如使用黑体字表示保留的关键词 操作符标点符号作为语法要求的一部分 这些字以较大的字体出现以便于区别 例如使用竖线将可选项分开 除非它以黑体字出现 此时它表示其本身 例如使用方括号将选择项括起来 例如使用大括号将重复项括起来 除非它以黑体字出现 此时它表示其本身 可选项可以出现 次或多次重复项按从左到右的顺序出现 遵循左递归的规则 因此下面的两条规则是相同的如果语法范畴的名称以斜体字开始 那么它与没有斜体字部分的范畴名称是相同的
7、 斜体字部分是为了传达一些语义信息 例如 和 等效于当定义一个术语时例如定义常量宽度字体或文件名时 或者当引用常数时 特别是引用 和值时主文本使用斜体字本标准的内容各章和附录的大纲以快速参考的形式呈现 总共有 章和 个附录 所有章条和附录 到附录都是本标准的正式内容 附录 到附录 只是为了提供一些信息第 章概述本章讨论本标准使用的约定及其内容第 章 词法约定本章描述如何指定和解释词法符号第 章 数据类型本章描述数据类型 和 本章也讨论用作常数值的参数数据类型 并描述 上数值的驱动和电荷强度第 章 表达式本章描述表达式中使用的操作符和操作数第 章 语义调度本章描述 的语义调度第 章 赋值语句本章
8、对 中两种主要的赋值语句 持续赋值语句和过程赋值语句进行比较描述将数值驱动到 上的持续赋值语句第 章 门级建模和开关级建模本章描述门级建模 开关级基元和逻辑强度建模第 章 用户定义的基元本章描述如何在 中定义基元以及这些基元如何包含在 模型中第 章 行为建模本章描述过程赋值语句 过程持续赋值语句和行为语句第 章 任务和函数本章描述任务和函数 在行为模型中可以从一个以上的地方进行调用的过程 描述如何像子程序一样使用任务 以及如何使用函数定义新的操作符第 章 有名称的块和任务的停用本章描述如何停止使用任务和具有指定名称的语句块第 章 层次化结构本章描述如何在 中建立层次如何重载在模块中说明的参数值
9、第 章 指定块本章描述如何指定模块中输入端口和输出端口之间的时序关系第 章 系统任务和函数本章描述系统任务和函数第 章 值变转储 文件本章描述与值变转储 文件有关的系统任务和文件格式第 章 编译指令本章描述编译指令第 章 和 的接口机制本章描述一种接口机制 该接口机制提供一种方法使用户将 任务 函数 例行程序和存取例行程序连接到 软件工具上第 章 例行程序的使用本章主要描述 例行程序包括如何使用以及为什么使用这些 例行程序第 章 例行程序的定义本章描述特殊的 例行程序解释它们的功能 语法和使用方法第 章 例行程序的使用本章描述 例行程序使用的操作类型第 章 例行程序的定义本章描述专有的 例行程
10、序解释它们的功能 语法和使用方法第 章 例行程序的使用本章描述 编程接口 例行程序使用的操作类型第 章 例行程序的定义本章描述 例行程序附录 形式化语法定义本附录使用 描述 的语法附录 关键词列表本附录列出 的关键词附录 文件本附录列出 文件的内容附录 文件本附录列出 文件的内容附录 文件本附录列出 文件的内容附录 系统任务和函数本附录描述经常用到的系统任务和函数 但这些并不是标准的一部分附录 编译指令本附录描述经常用到的编译指令但这些并不是标准的一部分附录 参考文献本附录包括本标准的参考书目附录 专用术语中英文对照表本附录包括本标准用到的中英文专用术语头文件清单头文件清单包含在附录 和 中
11、分别是 和 这些是本标准的正式内容 所有匹配的软件工具都应使用这些头文件中包含的相同的函数说明常数定义和结构定义举例本标准中给出一些用 和 编程语言描述的举例 这些举例用于说明在简单的环境下结构和 函数的使用方法 并没有给出全部的语法定义先决条件第 章至第 章和附录 至附录 以具有 编程语言的应用知识为先决条件词法约定本章描述 源文本中使用的词法标记和它们的约定词法标记语法 整数和实数的语法源文本文件应当是一个词法标记流 一个词法标记应当包括一个或多个字符 源文件中的标记格式应当是自由格式 即除了转义标识符以外空格和换行除了作为分隔符外 在语句构成上不应当具有特殊意义见语言中词法标记有以下类型
12、空白注释操作符数字字符串标识符关键词空白空白包括空格符 制表符 换行符 走纸符 这些字符除了用于分隔其它词法标记外没有另外意义但是间隔符和制表符在字符串中应看作是具有特殊意义的字符 见注释具有两种注释形式 单行注释以符号 开始 以换行符结束 块注释以 开始 以结束 块注释不应当嵌套 单行注释标记 在块注释中没有特殊含义操作符在表达式中使用的操作符有一元字符二元字符和三元字符 第 章讨论表达式中操作符的使用一元操作符应出现在操作数的左边 二元操作符出现在操作数之间 条件操作符具有两个操作符用于将三个操作数分开数字常数可表示为整常数和实常数 见语法整常数整常数可以用十进制 十六进制 八进制或二进制
13、几种格式表示表示整常数的格式有两种 第一种格式是简单的十进制数 可表示为数字 到 的一个序列 可以用一元加或一元减操作符起始第二种格式表示长度固定的常数 由三种标记组成 一个可选择的长度常数一个后面跟随基数格式字符的单引号以及表示数值的多个数字第一个标记是一个长度固定的常数 它应当根据精确的位数表示常数的长度 它应当表示为一个无符号的十进制数 例如 两个十六进制数的长度指定是 因为一个十六进制数要求 位第二个标记是一个基数格式 它应当由表示数字基数的一个字母组成 前面加上一个单引号符合法的基数指定为 分别作为十进制 十六进制八进制和二进制的基数在定义一个数字的值时 和 的使用不区分大小写单引号
14、和基数格式符号之间不应当有空格第三个标记是一个无符号的数字 它应当由合法基数格式的数字组成 无符号数字标记应直接跟在基数格式后面 前面可以有空格 十六进制数 到 应当不区分大小写不带有长度和基数格式的简单十进制数应视为带符号的整数而由基数格式表示的数字应视为无符号整数在长度固定的常数前面的加号或减号是常数的符号 长度固定的常数不带符号 在基数格式和数字之间的加号或减号是非法的语法负数应当以 的补码的形式表示表示十六进制八进制和二进制数中的未知数 表示高阻值 见 中对 数值集合的讨论 在十六进制中 应设置为 位未知数在八进制中应设置为 位在二进制中应设置为 位同样 应分别设置为 位 位和 位的高
15、阻值如果无符号数的长度比要表示的常数的长度小 则无符号数的左边应用 填充 如果无符号数最左边的位是 或者 则应当分别用 或者 填充到左边在 中 数字表示中使用的问号 可以替代表示字符 它在十六进制中设置为 位高阻值 在八进制中设置为 位在二进制中设置为 位 在高阻值是无关项的情况下 可以使用问号增强可读性 见 中对 和 进行讨论 也可以在用户定义基元的状态表中使用问号 见下划线 除了作为第一个字符外 在一个数字的任何地方使用都是合法的 下划线字符可以忽略可以用这个特性将很长的数字分隔开以便易于阅读举例长度不固定的常数是一个十进制数是一个十六进制数是一个八进制数非法 十六进制格式要求长度固定的常
16、数是一个 位二进制数是一个 位十进制数是一个最低位为未知数的 位数是一个 位的未知数是一个 位的高阻数使用符号的常数这是一个非法的语法这定义出 的补码是 位数与 等效自动左填充生成生成生成生成在数字中使用下划线注当对一个寄存器数据类型进行赋值时一个固定长度的负数是符号不扩展的数表示数字的三个标记都可用宏替换构成长度不固定数字的位数 可以是一个简单的十进制数或者是一个没有长度规范的数应当至少为实常数实常数应表示为由 标准 描述的双精度浮点数实数可以用十进制计数法 例如 或者用科学计数法 例如 表示 乘以 的 次幂表示 带小数点的实数在小数点的每一边至少有一个数字举例指数符号可以是 或下划线可以忽
17、略下面的实数形式无效因为在小数点的每一边至少应当有一个数字 而它们没有转换实数可以通过四舍五入转换成相近的整数 而不是将小数截断 当把实数赋值给整数时 应进行隐式转换举例当转换为整数时实数 和 都变成 而 变成转换成整数时成为 而 转换成整数时成为字符串一个字符串是一个由双引号 括起来并包含在单独一行的字符序列 在表达式和赋值语句中用作操作数的字符串应视为无符号整常数 由一个 位 值的序列表示 而一个 位 值表示一个字符字符串变量说明字符串变量是寄存器类型 见 的变量宽度等于字符串中的字符数乘以举例为了存储 个字符的字符串 要求一个 或者 位宽的寄存器字符串的操作字符串可以使用 操作符进行操作
18、 操作符操作的值是 位 值的序列举例输出是注 当一个变量比要求保存的赋值还长时 那么赋值后左边要用 填充 这与非字符串赋值时的填充方法相同 如果一个字符串比目标字符串变量更长 那么字符串截断左边位 并丢失最左边字符字符串中的特殊字符一些字符只能使用在字符串中 前面介绍的这样的字符称为转义字符 表 右栏列出这些字符表示字符的转义序列在左栏表 字符串中特殊字符的说明转义字符串 由转义字符串产生的字符换行字符制表符字符字符用 个八进制数字 表示的一个字符标识符 关键词和系统名称标识符用于为一个对象给出一个唯一的名称以便引用 标识符应当是字母数字 美元号 和下划线 的任意序列标识符的第一个字符不能是数
19、字或 可以是字母或下划线 标识符应当区分大小写举例注 工具可以对标识符的最大长度进行限制 但至少应当为 个字符 如果标识符超过工具规定的长度极限应当报错转义标识符转义标识符应当以反斜线符号 开始以空白空格制表符换行符结束 这些转义标识符为打印标识符十进制数 到 或者十六进制数 到 中任何可打印的 字符提供了一种方法前面的反斜线和后面的空白不是标识符的一部分 因此转义标识符 与非转义标识符是相同的举例关键词关键词是预定义的非转义标识符 用于定义语言的结构 关键词前面如果加上转义字符就不是关键词系统任务和函数字符引进一种可以使用用户定义的任务和函数的语言结构 跟在 后面的名称是系统任务或系统函数语
20、法 给出系统任务或函数的语法语法 系统任务和函数的语法标识符系统任务和函数可以在三种情况下定义标识符系统函数和任务的标准集 如第 章所定义附加的 标识符系统函数和任务 可以使用 定义如第 章中所描述附加的 标识符系统函数和任务 由软件工具定义除了这个结构外任何有效的标识符包括已经在上下文中使用的关键词 都可以用作系统任务或函数的名称 第 章中描述的函数和任务是本标准的一部分 带有 标识符结构的附加的系统任务和函数不是本标准的一部分举例编译指令符号 值为 称作打开符号 或重音符号 引入一个用于实现编译指令的语言结构 编译器一读到指令 由编译指令规定的编译行为立即生效 在编译过程中 指令一直保持有
21、效 除非出现其它不同的编译指令 所以一个描述文件中的编译指令可以控制多个描述文件中的编译行为标识符编译指令结构可以在两种情况下定义标识符编译指令的一个标准集在第 章中定义附加的标识符编译指令 由软件工具定义任何有效的标识符 除了这个结构外 包括已经在上下文中使用的关键词 都可以用作编译指令名称 在第 章中描述的编译指令是本标准的一部分 带有 标识符结构的附加的编译指令不是本标准的一部分举例数据类型数据类型集的设计是为了表示数字硬件中的数据存储和传输元件值集合值集合由四种基本的值组成表示逻辑 或条件为假表示逻辑 或条件为真表示未知逻辑值表示高阻状态值 和 互为逻辑补码当 值出现在一个门的输入端或
22、出现在一个表达式中时 其效果通常与 值的效果相同 金属氧化半导体 基元例外 它可以传递 值中几乎所有的数据类型均存储全部四种基本的值 只有事件 类型 见例外它没有存储 向量的每一位均可独立地设置成四种基本值中的一种除了线网变量的基本值信息外 本语言还包括强度信息 详细描述见本标准的第 章线网和寄存器有两组主要的数据类型寄存器 数据类型和线网 数据类型 这两组数据类型在赋值和保持值的方法上是不同的它们表示不同的硬件结构线网线网数据类型表示结构实体之间的物理连接如门与门之间的连接 线网不存储值 线网除外 它的值由其驱动器的值决定例如一个持续赋值语句或者一个门 对这些结构的定义见第 章和第章 如果没
23、有驱动器连接到线网上线网的值是高阻 除非线网是一个 在这种情况下 它保持以前的驱动值语法 给出线网说明的语法本章描述线网说明的前两种形式 第三种形式称为线网赋值 在第 章描述寄存器寄存器是数据存储元件的一种抽象 寄存器数据类型的关键词是 寄存器存储从一个赋值语句到下一个赋值语句之间的值 在程序中一个赋值语句相当于一个触发器可以改变数据存储元件中的值 数据类型的缺省的初始化值是未知值语法 线网说明的语法语法 说明的语法语法 给出 说明的语法如果一组线网或一组寄存器具有相同的特征 那么可以使用相同的说明语句对它们进行说明注意可以把负值赋给寄存器 但是当寄存器是表达中的操作数时其值可看作是一个无符号
24、的正值 例如如果寄存器是一个表达式的操作数则 位寄存器中的负 起到数字 的作用 有关表达中的数字约定的详细信息请见向量无范围指定的线网或寄存器说明是 位位宽是一个标量 具有多位的线网数据类型和寄存器数据类型通过指定一个范围进行说明 它是一个向量向量说明范围指定给出多位线网或多位寄存器中的各个位的地址 由 常数表达式指定的最高位是范围域值中的左边值 由 常数表达式指定的最低位是范围域值中的右边值常数表达式和 常数表达式都是常数表达式 常数表达式和 常数表达式可以是任意值 正值负值或零 常数表达式可以大于等于或小于 常数表达式向量线网和向量寄存器遵守 次幂模数为 的算术规则 其中 是向量中的位数
25、将向量线网和寄存器作为无符号量处理举例类型的标量线网三态 位总线小强度的电荷存储节点标量寄存器位向量寄存器由 和从最高有效位到最低有效位组成位向量寄存器说明两根连线说明 个 位寄存器注不同的实现工具可以对向量的最大长度进行限制 但其最大长度至少为 位不同的实现工具没有必要诊断整数操作的溢出向量线网的可访问性在向量线网或寄存器说明中 和 是可选的关键词 如果实现这些关键词 可以限制向量的某些操作 如果使用关键词 则不允许位选择 部分选择 和强度指定而 可以考虑未扩展的 对象 如果使用关键词 则允许对象的位选择和部分选择 而 考虑扩展的 对象举例将要扩展的一个总线可以扩展或者不可以扩展的一个总线强
26、度在一个 的说明中可以指定两种类型的强度 它们是电荷强度 应用于说明一个 类型的线网驱动强度 应用于将持续赋值语句驱动到线网上 该线网所在的语句与说明线网的语句是同一个语句门的说明也可指定驱动强度 有关门和强度的更多信息请见第 章电荷强度电荷强度指定仅用于 线网 线网用于建立电荷存储模型 电荷强度指定电容量 并用以下关键词指明其容量大小线网的缺省电荷强度是线网可以对电荷超时衰减的电荷存储节点进行建模 电荷衰减的模拟时间在 线网的延迟说明中加以指定见驱动强度驱动强度说明容许以说明线网的同一语句对线网进行持续赋值 详见第 章 线网的强度特性的详细描述见第 章隐式说明中给出的语法用于显式地说明线网和
27、寄存器 在没有线网或寄存器的显式说明的情况下 门用户定义的基元和模块例示等语句采用隐式的线网说明 当一个名称使用在门实例 用户定义的基元或者模块该模块先前在例示模块的说明语句中没有显式说明 的终端表中时会采用隐式说明 见将这些隐式说明的线网应作为 类型的标量线网进行处理 对于带有 编译指令的隐式说明线网的类型控制在第 章中论述线网的初始化线网的缺省初始值是 值 带有驱动器的线网设定其驱动器的输出值 但 线网除外 线网的缺省值为 由线网说明进行强度指定线网类型有 种不同的线网类型如表 所示表 线网类型线网和 线网线网和 线网将元件连接起来 线网和 线网在语法和功能方面是相同的 提供这两个名称的目
28、的是线网的名称可以标识线网在模型中的用途 线网可以当一个门或一个持续赋值所驱动 线网类型可以用于多个驱动器驱动一个线网的情况除非线网由逻辑强度控制 否则多个源对一个 线网或者 线网的逻辑冲突会导致未知值表 是一个真值表 用于分辨 线网和 线网上的多个驱动器 请注意该表假设两个驱动器强度相等 有关逻辑强度建模的论述见表 线网和 线网的真值表线网线网类型有 和 用于建立布线逻辑配置模型 线网使用不同的真值表解决多个驱动器驱动同一个线网导致的冲突 线网和 线网创建线或 配置当任一驱动器为 时线网的结果值为 线网和 网建立 配置当任一驱动器为时 线网的结果值为线网类型 和 在其语法和功能方面是相同的
29、线网类型 和 在其语法和功能方面是相同的 表 和表 给出 线网的真值表 注意表中假设两个驱动器强度相等 对逻辑强度建模的论述见表 和 线网的真值表表 和 线网的真值表线网线网保存值 并用于建立电荷存储节点的模型 线网可处于两种状态之一驱动状态 当 线网至少有一个驱动器具有 或 值时所决定的值传输给 线网并成为 线网的驱动值电容状态 当 线网的所有驱动器均为高阻值 时 线网保持其最后面的驱动值 高阻值不从驱动器传输给在电容状态下的 线网的值强度可以是 或者 根据 线网说明中所指定的大小而定 在驱动状态下的三态线网强度可以是 或 依驱动器强度而定举例图 是一个示意图 包括大小为 的 线网驱动器和模
30、拟结果图 及其驱动器的模拟值在模拟时间为 时连线 和连线 的值为 带有 强度的值 从 门通过由连线 互相连接的 开关传输到 线网在模拟时间为 时 连线 改变值为 断开 门与连线 的连接 当连线 不再与 门连接时 连线 的值改变为 连线 的值保持为 所以连线 通过 开关与 线网 连接 值不从连线 传输到 线网 这样 线网 进入电容状态 保存上次的驱动值 所保存的 具有的强度为电容网络电容网络是两个或多个 线网的连接 在 线网处于电容状态的电容网络中逻辑值和强度值可以在 线网之间传输图 电容网络的模拟结果举例图 给出一个电容网络在该线网络中某些 线网的逻辑值改变其它容量相等或容量更小的 线网的逻辑
31、值在图 中 线网的电容强度为 和 的电容强度为的电容强度为 模拟结果报告以下顺序的事件在模拟时间 连线 和连线 的值为 连线 将 值驱动到 和 上 连线将 值驱动到 和 上在模拟时间 连线 的值变为 使 和 从它们的驱动源中断开 这些线网进入电容状态并存储值 它们的上一个驱动值在模拟时间 连线 将值 驱动到在模拟时间 连线 将值 驱动到在模拟时间 连线 的值变为 使 和 从它们的驱动源中断开 这些线网进入电容状态并存储值在模拟时间 连线 的值变为连线 的值的变化连接 和 这些 线网具有不同的规模并存储不同的值 这一连接较小的 线网存储较大的 线网的值并且 现在存储值连线 的值的变化同样也连接
32、和 这些 线网具有相同的规模并存储不同的值 这一连接使 和 的值都变为在电容网络中电荷强度从较大的 线网向较小的 线网传送 图 显示出一个电容网络及其模拟结果图 电荷共享的模拟结果在图 中 的电容强度是 的电容强度是 模拟报告如下结果在模拟时间 连线 连线 连线 的值是 并且连线 驱动 到 和在模拟时间 连线 的值变为 使 和 从连线 中断开 和线网进入电容状态 因为这两个 线网是通过 保持连接的所以它们共享的 电荷在模拟时间 连线 的值变为 使 和 断开连接 不再共享的 电荷 而是存储 电荷在模拟时间 连线 的值变为 将两个 线网连接起来 这些 线网共享同样的电荷在模拟时间 连线 的值又变为
33、 使 和 断开连接 再一次不再共享 的 电荷 而存储 电荷理想的电容状态和电荷衰减一个 线网能够无限期地保持它的值 或者它的电荷随着时间而衰减 电荷衰减的模拟时间在线网的延迟指定中说明 参见 的电荷衰减解释线网和 线网和 线网使用电阻性的 和电阻性的 器件对线网进行建模 当没有驱动源驱动 线网时 它的值为 当没有驱动源驱动 线网时它的值为 这个值的强度是 参见第 章强度建模的描述表 给出 的真值表 表 给出 的真值表表 线网的真值表表 线网的真值表电源线网和 线网可用于对电路中的电源进行建模 这些线网具有 强度寄存器数组可用于对只读存储器 随机存储器 以及寄存器堆 进行建模 数组中的每个寄存器
34、是一个单元 或者一个字 并通过单一的数组下标寻址 不应当有多维数组 注意在 标准中允许多维数组存储器是通过在寄存器说明语句中指定跟在寄存器标识符后面的单元地址范围来进行说明的 见指定数组下标的表达式是常数表达式 常量表达式的值可以是正整数 负整数或者零一个说明语句可用于说明寄存器和存储器这使得说明某个存储器和某些寄存器很方便 该存储器和寄存器将保存同一说明语句中要读出或写入存储器的数据一个 位寄存器可以在一个赋值语句中赋值 但是一个完整的存储器却不能这样 要对一个存储字进行赋值应当指定一个下标 该下标可以是一个表达式 这可以提供一种机制通过依靠电路中其它的寄存器和线网的值引用不同的存储字 例如
35、一个程序计数寄存器用于对一个 进行标注举例例 存储器说明说明 个 位寄存器的存储器下标是 到参数是运行时间常数 见说明 位存储器加两个寄存器组成的 字等同于等同于例 个 位寄存器的存储器与一个 位向量寄存器是不同的一个 位向量寄存器不同于个 位寄存器的存储器例 存储字的赋值合法的语法不合法的语法把 赋值给 的第一个元素注 实现工具可以限制寄存器数组的最大值 但至少是和除了对硬件进行建模外 模型中的寄存器还有其它用途 尽管 变量可被当作通常的用途例如对一个特殊线网改变值的次数进行计数为方便起见还提供 和 寄存器数据类型使描述更易于自动归档语法 从语法 中给出说明 和 寄存器的语法语法 说明的语法
36、寄存器变量表的语法在 中定义寄存器是通用的寄存器 用于处理不是硬件寄存器的参数或值寄存器用于存储和操纵在需要时序判别诊断和调试情况下的模拟时间量 该数据类型典型地用于连接 系统函数见 章寄存器和 寄存器的数组使用与 类型数组相同的方式进行说明见寄存器和 寄存器使用与 相同的方式进行赋值 过程赋值语句用于触发它们的值改变寄存器的行为与一个至少 位的寄存器的行为相同 它们是无符号量并且它们执行无符号的运算 相反 寄存器作为有符号量进行处理 在 寄存器上执行的算术运算产生结果为的补码除了整数寄存器和时间寄存器数据类型外还支持实数常量和实数寄存器数据类型除了以下限制外说明为实数型寄存器可以用在与整数寄
37、存器和时间寄存器使用的相同的地方并不是所有的 操作符都能使用实数值 表 列出实数和实数寄存器的有效的和无效的操作符实数寄存器不在说明中使用范围实数寄存器缺省的初始值为说明和实数说明同义地对待 并能在内部互换使用举例个整数值的数组个时间值的数组存储实数值的寄存器将时间存贮为实数值的寄存器注 实现工具可以限制 整数变量的最大范围 但至少是 位操作符和实数在实数和实数寄存器中使用逻辑操作符和关系操作符的结果是 位的标量值 并不是所有的操作符都可以使用实数表达式和实数寄存器表达式 表 列出使用实数和实数寄存器的有效的操作符 实数常量和实数寄存器在下列情形中也是禁止的用于实数寄存器的边描述说明为实数的变
38、量的位选择或部分选择的引用向量的位选择或部分选择引用的实数下标表达式存储器实数寄存器的队列 说明转换通过四舍五入将实数转换成最接近的整数而不是截短实数转化为整数 当一个实数赋值给一个整数时 将进行隐式转换 即舍掉小数点后面的值当线网或寄存器赋值为实数时 将会发生隐式转换 在线网或寄存器中 或 的各个位在转换中当作 进行处理进行显式转换的系统任务的论述请参阅第 章参数参数既不属于寄存器组也不属于线网组 参数不是变量 而是常量参数说明的语法在语法 中给出语法 参数说明的语法赋值表是一个逗号分开的赋值表 其中赋值语句的右边是一个常量表达式 即仅包括常数和以前定义参数的表达式参数表示常量因此 在运行时
39、修改其值是不合法的 然而参数可以在编译时修改 以便具有与说明赋值中所指定的不同的值 这允许模块实例的用户化 一个参数可以使用 语句进行修改或者在模块实例语句中进行修改 参数的典型应用是确定变量的延迟和宽度 参数值赋值语句的细节参见第 章举例将 定义为常数值定义两个常数定义 作为一个实数参数名称空间在 中 有六个名称空间 两个是全局的 四个是局部的 全局的名称空间是定义和文本宏 定义名称空间统一了所有的 见 见和 见 的定义 也就是 模块宏模块和基元不可以具有相同的名称文本宏名称空间是全局的 由于文本宏名称使用前导的字符引入和使用 所以它们和其它的名称空间是无歧义的 见 文本宏名称以输入文件出现
40、的线性顺序进行定义的 该输入文件构成设计单元的描述 为平衡输入文件同名的后来定义取代先前的定义有四个局部名称空间 块 模块 端口和指定块块名称空间通过有名称的块 见 函数 见 和任务 见 结构引入 它统一了有名称的块函数任务和说明的寄存器类型见 的定义 说明的寄存器类型包括和 说明模块名称空间由 和 结构引入 它统一了函数 任务 有名称的块实例名称 说明的线网类型和说明的寄存器类型的定义 说明的线网类型包括和 见端口名称空间由 和 结构引入它提供一种从结构上定义在不同名称空间的两个对象之间连接的方法 连接可以是单向的 或者 也可以是双向的 端口名称空间重叠模块和块名称空间 实际上 端口名称空间
41、指定在不同名称空间的名称之间的连接类型 说明的端口类型包括 和 见 通过使用与端口名称相同的名称对寄存器和连线进行说明 可以在模块名称空间中重新引入在端口名称空间中引入的端口名称指定的块名称空间由 结构见 引入 名称仅能在指定块名称空间内定义和使用 任何其它类型的名称不能在该名称空间内定义表达式本章描述 中的操作符和操作数 以及怎样用这些操作符和操作数组成表达式表达式是将操作符和操作数结合起来产生计算结果的一个结构它是操作数数值和操作符语义的函数 任何不带操作符的合法操作数 例如一个线网的位选 认为是一个表达式 无论在什么情况下当语句中需要一个数值时 需要用到表达式一些语句结构需要常数表达式
42、一个常数表达式的操作数只能由常数 参数名称 参数的常数位选择和参数的常数部分选择组成 但是它们可以使用表 中定义的任何操作符标量表达式是计算标量 位 结果的表达式 如果表达式计算一个向量 多位结果则结果的最低有效位作为标量结果数据类型 和 都是寄存器数据类型 关于寄存器用法的描述适用于所有这些数据类型一个操作数可以是下面任何一种常数 包括实数线网和 类型的寄存器变量线网的位选择和 类型的位选择线网的部分选择和 类型的部分选择存储字对用户定义的函数或系统定义的函数的调用 该函数返回上述任何一种类型操作符操作符的符号与 编程语言中的符号类似 表 列出这些操作符表 中的操作符连接复制算术操作符取模数
43、操作符关系操作符逻辑非逻辑与逻辑或逻辑相等逻辑不等情况相等情况不等按位非按位与按位或按位异或或 按位等价归约与归约与非归约或归约或非归约异或或 归约异或非左移右移条件运算事件或注 归约操作符为一元操作符 对操作数的各位进行逻辑操作结果为二进制数带实型操作数的操作符表 所示的操作符当应用于实型操作数时是合法的 所有的其它操作符当使用实型操作数时认为是非法的表 应用于实型表达式中的合法操作符一元 一元 一元操作符算术操作符关系操作符逻辑操作符逻辑相等操作符条件操作符事件或操作符对实数使用逻辑操作符或关系操作符的结果是一个 位的标量值表 列出不能用于对实数进行操作的操作符表 不能用于实型表达式的操作
44、符连接 复制取模数情况相等按位运算归约运算移位关于实数的使用信息见二元操作符优先级表 列出二元操作符和条件操作符 的优先级顺序 有两个相等操作符 在中论述表 操作符的优先级一元 最高优先级二元条件操作符 最低优先级表 中处在同一行的操作符具有相同的优先级 每一个行按操作符优先级的降序排列 例如和 具有相同的优先级且优先级高于二元操作符 和除了条件操作符条件操作符从右到左关联 外所有的操作符都从左到右关联 结合性是指具有相同优先级的操作符的计算顺序 因此 在下例中 加 再从 的结果中减去当操作符优先级不同时具有较高优先级的操作符先计算 在下例中 除以 除法优先级高于加法 再将结果与 相加括号可以
45、用于改变操作符的优先级不同于在表达式中使用整数整数可以用作表达式中的操作数 一个整数可以表示为没有指定长度的 无基数的整数 例如没有指定长度的 带基数的整数 例如指定长度的 带基数的整数 例如不带基数说明符的一个整数的负值与带基数说明符的整数的解释不同 一个不带基数说明符的整数解释为以 的补码形式表示的一个带符号的值 一个带基数说明符的整数解释为一个不带符号的值举例本例给出写表达式负 除以 的两种方法 注意 和 都计算相同的 的补码位组合但是在一个表达式中 丢失作为一个带符号负数的等同性结果为结果为表达式的计算顺序当计算表达式时操作符遵循结合性规则如 中所述 但是如果表达式的最终结果可以早些确
46、定 则不必计算整个表达式 这称作简化一个表达式计算举例如果 为 则不必计算子表达式 就可以确定表达式的结果为算术操作符表 给出二元算术操作符表 定义的算术操作符加减乘除以对 取模数整数除法舍去接近 的小数部分 取模数操作符例如 给出第一个操作数被第二个操作数除时所产生的余数因此当 整除 时结果为 取模数运算的结果应取第一个操作数的符号一元算术操作符优先级高于二元操作符 表 给出一元操作符表 定义的一元操作符一元加 与 相同一元减对于算术操作符来说 如果任意操作数的位值是未知值 或高阻值 则整个结果值是举例表 给出取模数运算的举例表 取模数运算的举例取模数表达式 结果注释产生余数产生余数不产生余
47、数结果取第一个操作数的符号结果取第一个操作数的符号看作是一个大的正数当被 除时余数为带有寄存器和整数的算术表达式对 类型寄存器的算术运算不同于对整型数据类型的算术运算 一个 数据类型看作是一个无符号的值而一个整型数据类型看作是一个有符号的值 因此如果一个带负值的指定长度的常数存储在一个 类型的寄存器中那么一个正常数它是指定长度的常数 的补码 是存储在 类型寄存器中的值 当该寄存器使用在算术表达式中时 那个正常数当作寄存器的值 相反 如果一个带负值的指定长度的常数存储在一个整数类型的寄存器中并且用在一个算术表达式中 则该表达式使用带符号的运算进行求值表 列出算术操作符如何解释每个数据类型表 使用
48、算术操作符解释数据类型数据类型 解 释不带符号不带符号带符号 的补码不带符号带符号 浮点型举例下例给出 负 除以 的不同方法 在表达式中使用 和 数据类型表达式结果为是 数据类型 是是表达式结果为是 数据类型表达式结果为是一个有效的 位的 数据类型表达式结果为是一个有效的 数据类型 是关系操作符表 列举和定义出关系操作符表 关系操作符的定义小于大于小于或等于大于或等于使用这些关系操作符的表达式如果指定的关系为 则产生标量值 如果关系为 则产生值 如果由于操作数为未知数或高阻位关系是有歧义的 则结果为一个 位的未知值当使用位长不等的两个操作数时较小的操作数将最高有效位填为 以扩展到较大操作数的位
49、数长度所有的关系操作符具有相同的优先级 关系操作符的优先级低于算术操作符举例下例列举出优先级规则的含义这个表达式与下面这个表达式相同这个表达式与下面这个表达式不同当计算 时先计算关系表达式然后再从 中减去 或 当计算 时先用 减去 再与 进行比较相等操作符相等操作符的优先级低于关系操作符 表 列举和定义出相等操作符表 相等操作符的定义等于 包括 和不等于 包括 和等于 结果可以是未知数不等于 结果可以是未知数这 个相等操作符具有相同的优先级 这 个操作符对操作数进行按位比较时 如果两个操作数的位长不等则用 填充 如同关系操作符一样如果比较失败则结果为 如果比较成功则结果为对于逻辑相等和逻辑不等操作符 和 来说如果任一个操作数包含一个 或 则结果应为未知值对于情况相等和情况不等操作符 和 来说所进行的比较就像在程序的 语句 见中所进行的比较一样 或 的位应包含在比较中并且与相等的结果相匹配 这些操作符的结果应总是一个已知值 或逻辑操作符逻辑操作符逻辑与 或逻辑或 是逻辑连接词 逻辑比较运算的结果是 定义为定义为 或者如果结果是二义性的则为未知值 的优先级高于 的优先级 两者的优先级都低于关系操作符和相等操作符第三个逻辑操作符是一元的逻辑非操作符 逻辑非操作符把一个非 或者为真的操作数转变为把 或者为假的操作数转变为 一个二义性的真值保留为举例例 如果寄存器 拥有整数值 拥有 值则
copyright@ 2008-2019 麦多课文库(www.mydoc123.com)网站版权所有
备案/许可证编号:苏ICP备17064731号-1