如何定义具有多个输出的组合用户定义基元 (UDP)?

how can I define a combinational user define primitive (UDP) with more than one output?

是否可以定义一个具有多个输出的UDP?我什至尝试按如下方式制作捆绑输出,但它会出现一些错误。 我正在尝试编写 8 位前缀加法器的代码,并且我想将操作定义为 UDP 以计算 G 和 P 的值。 这是代码:

primitive preaddprimitive(pgout,p2,p1,g2,g1);
input p2,p1,g2,g1;
output pgout;
table
// p2 p1 g2 g1 : {pout,gout}
  0 ? 0 ? : 00;
  ? 0 1 ? : 01;
  0 ? 1 ? : 01;
  1 0 0 0 : 00;
  1 0 0 1 : 01;
  1 1 0 0 : 10;
  1 1 0 1 : 11;
  1 1 1 ? : 11;
endtable
endprimitive

这是错误信息:

near "0": syntax error, unexpected '0', expecting ';'

我尝试定义为输出,但还是报了同样的错误。 我在 modelsim 10.c.

上测试了代码

不,无法定义具有多个输出的 UDP。根据 IEEE 标准 1800-2012,第 29.2 节 概述:

Each UDP has exactly one output, which can be in one of three states: 0, 1, or x.

和第 29.3.1 节 UDP header

All ports of a UDP shall be scalar; vector ports are not permitted.

您可以使用 module 而不是 primitive