Verilog有内建原语如门,传输管,开关等,这些都是相当小的原语,如果我们需要更为复杂的原语,verilog提供了UDP,也就是用户定义原语(User Defined Primitives). 使用UDP可以建模组合电路和时序电路。\\ UDP以保留字primitive开始,以endprimitive结束,并紧接着原语的Ports/terminals。这与module的定义类似。UDP应该定义在module和endmoudle外面。\\ View Code\\ 1 //This code shows how input/output ports 2 // and primitve is declared 3 primitive udp_syntax ( 4 a, // Port a 5 b, // Port b 6 c, // Port c 7 d // Port d 8 ); 9 output a; 10 input b,c,d; 11 12 // UDP function code here 13 endprimitive 在上面的语法中,udp_syntax是原语的名字,包含端口a,b,c,d。\\ - 一个UDP只可以包含一个输出和最多10个输入。 - 输出端口应该是第一个端口,然后才是一个或多个输入端口。 - 所有的UDP都是标量,也就是,向量端口不允许。 - UDP不能是双向端口。 - 时序UDP的输出端需要额外声明为reg类型。 - 组合UDP的输出端声明为reg类型是非法的。