如何定义具有多个输出的组合用户定义基元 (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
。
是否可以定义一个具有多个输出的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
。