正如我在问题中提到的,我想知道是否可以定义一个具有多个输出的UDP?我甚至尝试将bundle输出如下所示,但它会产生一些错误。 我试图为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
这是错误消息: 接近" 0":语法错误,意外' 0',期待&#39 ;;'
我甚至尝试定义输出,但它也犯了同样的错误。 我在modelsim 10.c上测试了代码。
答案 0 :(得分:2)
不,无法定义具有多个输出的UDP。根据IEEE Std 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标头
All ports of a UDP shall be scalar; vector ports are not permitted.
您可以使用module
代替primitive
。