门级建模中介绍的内置门单元,例如 and,or , nor 等,均属于 Verilog 自带的一整套标准原语,即通常所说的内置原语。此外,Verilog 还为用户提供了自己编写原语的能力,这种原语就是用户自定义原语(User Defined Primitive,简称 UDP)。在 UDP 中,不能调用其他 module 或 primitive,调用方式和门级原语完全相同。
UDP 类型主要有以下 2 种,后面将逐一介绍。
UDP 的定义不依赖于模块定义,因此可以出现在模块定义外,也可以单独在文件里定义。
UDP 格式定义如下:
- primitive UDP_name (
- output_name,
- list_of_input) ;
-
- output_declaration ;
- list_of_input_declaration ;
- [reg_declaration] ;
- [initial_statement] ;
-
- table
- list_of_table_entries ;
- endtable
- endprimitive
端口声明:
初始化
可以用 initial 语句对时序逻辑 UDP 的输出端口(reg 类型)进行初始化,该语句是可选的。
状态表