Function VHDL在Generate中使用库函数

Function VHDL在Generate中使用库函数,function,package,vhdl,Function,Package,Vhdl,因此,我使用一种算法来创建一个类似于link()中的结构。所以我创建了一个函数,它将决定下一步跳转到哪里。 在我的VHDL交换机体系结构中,我试图使用一个generate语句来定义节点并适当地映射它们的端口,但是当我综合它时,它说 “banyan”不能用于此表达式(banyan是库中的函数)。下面是一些示例代码: INPUT: IF ( l = 1 ) GENERATE NODE_Element : BN PORT MAP(

因此,我使用一种算法来创建一个类似于link()中的结构。所以我创建了一个函数,它将决定下一步跳转到哪里。 在我的VHDL交换机体系结构中,我试图使用一个generate语句来定义节点并适当地映射它们的端口,但是当我综合它时,它说 “banyan”不能用于此表达式(banyan是库中的函数)。下面是一些示例代码:

INPUT: IF ( l = 1 ) GENERATE 
            NODE_Element : BN PORT MAP( 
                                                clk, reset, 
                                                Input((2*n)-1), 
                                                Input((2*n)), 
                                                SyncIn, 
                                                con(l+1,Banyan(l,n),BanyanPort(l,n)), 
                                                con(l+1,Banyan(l,n),BanyanPort(l,n)), 
                                                sync(l+1,n)
                                            ); --GENERIC MAP(...)
        END GENERATE INPUT;

有人知道如何解决这个问题吗。。。这似乎很基本,但我可以找到一个解决方案。

看起来问题不是生成,而是端口映射。在端口映射中可以执行的操作有一些限制,并且许多工具(您不能说这是哪个synth工具!)都有自己的严格限制

我建议将函数结果分配给临时信号,并在端口映射中使用该信号

INPUT: IF l = 1 GENERATE 
Banyan1     <= Banyan(l,n);
BanyanPort1 <= BanyanPort(l,n);
Con1        <= con(l+1,Banyan(l,n),BanyanPort(l,n)); 

 NODE_Element : BN PORT MAP( 
                              clk, reset, 
                              Con1, 
                           );
END GENERATE INPUT; 
输入:如果l=1,则生成

班扬1干杯,布莱恩。。。我愚蠢地拥有另一个名字叫榕树的实体。我猜这是连续10个小时在荧幕上主演的结果。顺便说一句,我使用的是Xilinx ISE,很抱歉没有提到这一点。