发明内容
(一)要解决的技术问题
为了解决上述问题,本发明提出了一种具有MUX模式的LUT结构及与其相配套的EDA优化方法。
(二)技术方案
为达到上述目的,本发明提供了一种具有多路选择器模式的查找表结构,该具有多路选择器模式的查找表结构是在传统查找表结构的基础上新增一个模式配置单元MODE、由模式配置单元MODE控制的第一及第二N型管开关(SW1,SW2)、以及第二及第三信号输入端(D2,D3),其中:模式配置单元MODE连接于第一及第二N型管开关(SW1,SW2)的栅极之间;第一N型管开关SW1的漏极连接于传统查找表结构的第二4选1MUX(M2)的输出端,第一N型管开关SW1的源极连接于第二信号输入端D2及传统查找表结构的第四4选1MUX(M4)的第三输入端10;第二N型管开关SW2的漏极连接于传统LUT结构的第三4选1MUX(M3)的输出端,第二N型管开关SW2的源极连接于第三信号输入端D3及传统LUT结构的第四4选1MUX(M4)的第四输入端11;该具有多路选择器模式的查找表结构是基于复用传统查找表结构中的第四4选1MUX(M4)的方式来实现的,通过配置该模式配置单元MODE的值来决定该具有多路选择器模式的查找表结构的工作模式。
上述方案中,该具有多路选择器模式的查找表结构的工作模式包括MUX模式和普通模式。
上述方案中,所述通过配置该模式配置单元MODE的值来决定该具有多路选择器模式的查找表结构的工作模式时,配置该具有多路选择器模式的查找表结构的MUX模式具体如下:
将配置单元MODE配置为0,第一及第二N型管开关(SW1,SW2)处于开路状态,第二信号输入端D2连接第四4选1MUX(M4)的第三输入端10,第三信号输入端D3连接第四4选1MUX(M4)的第四输入端11,由第二及第三信号输入端(D2,D3)输入的数据信号作为第四4选1MUX(M4)的两路数据输入信号;
将接入第零4选1MUX(M0)的信号配置为1010,第零4选1MUX(M0)的输出端连接于第四4选1MUX(M4)的第一输入端00,由第零4选1MUX(M0)的输出信号D0作为第四4选1MUX(M4)的第三路数据输入信号;
将接入第一4选1MUX(M1)的信号配置为1100,第一4选1MUX(M1)的输出端连接于第四4选1MUX(M4)的第二输入端01,由第一4选1MUX(M1)的输出信号D1作为第四4选1MUX(M4)的第四路数据输入信号;
第零及第一控制信号(S0,S1)分别作为第四4选1MUX(M4)的两个控制信号。
上述方案中,所述通过配置该模式配置单元MODE的值来决定该具有多路选择器模式的查找表结构的工作模式时,配置该具有多路选择器模式的查找表结构的普通模式具体如下:
将配置单元MODE配置为1,第一及第二N型管开关(SW1,SW2)处于通路状态;
令第二及第三信号输入端(D2,D3)的输入端悬空。
为达到上述目的,本发明还提供了一种与所述的具有多路选择器模式的查找表结构相配套的EDA优化方法,该方法先于逻辑优化执行,基于多路选择器树进行优化。该方法具体包括:
多路选择器分组,识别网表中全部最大多路选择器树;
多路选择器树同构化,将多路选择器树内全部节点转换为2选1MUX(MUX2)节点;
多路选择器树重构与映射,将多路选择器树最大程度地划分出2选1MUX(MUX2)三联体并映射至权利要求1所述的具有多路选择器模式的查找表结构。
上述方案中,所述多路选择器分组是在网表中找出所有的最大多路选择器树,每个最大多路选择器树即为一个多路选择器分组;对于网表中某个多路选择器节点M,如果其为多扇出节点,则M为根节点;又或者M为单扇出节点且其后继不是多路选择器,则M为根节点;将根节点命名为R,从R出发递归寻找前驱节点,如果前驱节点是单扇出多路选择器,则将此多路选择器节点加入R所在分组,迭代结束后即建立起了以R为根节点的最大多路选择器树。
上述方案中,所述多路选择器树同构化是将多路选择器树内全部多路选择器节点都分解为2选1MUX(MUX2),以便后续对多路选择器树结构进行调整。
上述方案中,所述多路选择器树重构与映射是将多路选择器树尽可能多的划分出2选1MUX(MUX2)三联体,然后将该三联体映射为具有多路选择器模式的查找表结构。所述多路选择器树重构的基本操作是:一个2选1MUX(MUX2)能够携带其一个分支跨跃到其后继节点之后,而另一分支则接入其后继节点;所述多路选择器树映射是一个起始于根节点的递归过程。
(三)有益效果
从上述的技术方案可以看出,本发明的有益效果在于:
应用本发明中具有MUX模式的MLUT结构,仅需一个配置为MUX模式的MLUT即可实现一个MUX4功能,且延迟仅为1级LUT延迟,相对于传统LUT结构既节省了逻辑资源开销,又降低了电路延迟。应用本发明中为MLUT设计的配套EDA优化方法,可以将电路中的MUX树最大限度地映射为MLUT结构,保证了MLUT结构的利用率,减少了MUX树实现的逻辑资源开销,同时有助于降低电路延迟。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚明白,以下结合具体实施例,并参照附图,对本发明进一步详细说明。
图2(a)所示为本发明提出的MLUT结构,其中阴影框以外的部分是典型的传统LUT结构,阴影框内的部分则是在传统LUT基础上添加的结构。该MLUT结构是在传统LUT结构的基础上新增一个模式配置单元MODE、由模式配置单元MODE直接控制的第一及第二N型管开关(SW1,SW2)以及第二及第三信号输入端(D2,D3)。其中,模式配置单元MODE连接于第一及第二N型管开关(SW1,SW2)的栅极之间;第一N型管开关SW1的漏极连接于传统LUT结构的第二4选1MUX(M2)的输出端,第一N型管开关SW1的源极连接于第二信号输入端D2及传统LUT结构的第四4选1MUX(M4)的第三输入端01;第二N型管开关SW2的漏极连接于传统LUT结构的第三4选1MUX(M3)的输出端,第二N型管开关SW2的源极连接于第三信号输入端D3及传统LUT结构的第四4选1MUX(M4)的第四输入端11。
图2(b)是图2(a)对应的原理图,从图中可知,传统LUT结构具有第零至第四共5个MUX4(M0~M4)。本发明提出的MLUT结构的核心思想是尽可能复用传统LUT结构具有的MUX4来提高实现MUX的逻辑利用率。由于传统LUT结构中的第零至第三MUX4(M0~M3)的输入是与配置单元的硬连接,欠缺灵活性,复用代价较大,故本发明中MLUT是基于复用传统LUT结构中的第四4选1MUX(M4)的方式来实现的,通过配置该MODE的值来决定该MLUT的工作模式。该MLUT的工作模式包括MUX模式和普通模式。
如图2所示,所述通过配置该模式配置单元MODE的值来决定该具有多路选择器模式的查找表结构的工作模式时,配置该具有多路选择器模式的查找表结构的MUX模式具体如下:
将配置单元MODE配置为0,第一及第二N型管开关(SW1,SW2)处于开路状态,第二信号输入端D2连接第四4选1MUX(M4)的第三输入端10,第三信号输入端D3连接第四4选1MUX(M4)的第四输入端11,由第二及第三信号输入端(D2,D3)输入的数据信号作为第四4选1MUX(M4)的两路数据输入信号;
将接入第零4选1MUX(M0)的信号配置为1010,第零4选1MUX(M0)的输出端连接于第四4选1MUX(M4)的第一输入端00,由第零4选1MUX(M0)的输出信号D0作为第四4选1MUX(M4)的第三路数据输入信号;
将接入第一4选1MUX(M1)的信号配置为1100,第一4选1MUX(M1)的输出端连接于第四4选1MUX(M4)的第二输入端01,由第一4选1MUX(M1)的输出信号D1作为第四4选1MUX(M4)的第四路数据输入信号;以及
第零及第一控制信号(S0,S1)分别作为第四4选1MUX(M4)的两个控制信号。
经上述方式配置后,MLUT就实现了一个MUX4的功能,电路延迟仅为一级LUT延迟。
如图2所示,所述通过配置该模式配置单元MODE的值来决定该具有多路选择器模式的查找表结构的工作模式时,配置该具有多路选择器模式的查找表结构的普通模式具体如下:
将配置单元MODE配置为1,第一及第二N型管开关(SW1,SW2)处于通路状态;
令第二及第三信号输入端(D2,D3)的输入端悬空。
经上述配置后MLUT即退化为传统LUT模式,完全兼容传统LUT结构的所有功能。
为了充分高效的利用该MLUT,还需要对电路网表中的MUX进行针对性的优化,在阐述配套EDA优化方法之前需要明确如下几个概念:
MUX树:电路网表中除根节点以外的全部节点均为单扇出MUX的有根树。
最大MUX树:如果某个MUX树不被任何其它MUX树包含则该树即为一个最大MUX树。
MUX2三联体:图3(a)所示的电路结构称作MUX2三联体,即由三个MUX2节点构成的满二叉树。经过对控制端进行重编码后,MUX2三联体可以转换为图3(b)所示的二进制MUX4,这样的二进制MUX4恰好可以通过一个MLUT实现。这种转换将作为本发明EDA优化方法的基础。
MLUT配套EDA优化方法技术方案描述如下:
MUX优化方法分为MUX分组、MUX树同构化、MUX树重构与映射三个步骤,下面对每个步骤分别进行阐述。
步骤1,MUX分组:
MUX分组就是在网表中找出所有的最大MUX树,每个最大MUX树即为一个MUX分组。图4所示为MUX分组函数伪代码。对于网表中某个MUX节点M,如果其为多扇出节点,则M为根节点;又或者M为单扇出节点且其后继不是MUX,则M为根节点。将根节点命名为R,从R出发递归寻找前驱节点,如果前驱节点是单扇出MUX,则将此MUX节点加入R所在分组,迭代结束后即建立起了以R为根节点的最大MUX树。
步骤2,MUX树同构化:
MUX树同构化即将MUX树内全部MUX节点都分解为最简单的MUX结构-MUX2,以便后续对MUX树结构进行调整。图5(a)所示的MUX树经同构化处理后转换为图5(b)所示的结构。
步骤3,MUX树重构与映射:
MUX树重构与映射步骤将MUX树尽可能多的划分出MUX2三联体,然后将三联体映射为MLUT。MUX树重构的基本操作是,一个MUX2可以携带其一个分支跨跃到其后继节点之后,而另一分支则接入其后继节点。
MUX树映射的过程中需要用到图6所示的三种基本重构形式。图6(a)MUX树中M1携带左分支移动后,MUX树重构为图6(b)所示的MUX2三联体。图6(c)MUX树中M1携带右分支移动后,MUX树重构为图6(d)所示的结构,在树的末端形成一个MUX2三联体。图6(e)MUX树中M2携带右分支移动后,MUX树重构为图6(f)所示结构,进一步令M3携带左分支移动后,MUX树重构为图6(g)所示结构,在树的末端形成一个MUX2三联体。
MUX树映射是一个起始于根节点的递归过程,其伪代码如图7所示。函数Map()的返回值是尚未映射的MUX2个数,Map()函数的每次递归过程中待处理的MUX2个数Nunmapped只会在1到5之间。当Nunmapped为1或2时,不做任何处理;当Nunmapped=3且MUX子树为三联体时,直接将三联体映射为MLUT;当Nunmapped=3但MUX子树为图6(a)结构时,通过图6的第一种方式重构为三联体后再映射至MLUT;当Nunmapped=4或Nunmapped=5时,MUX子树必定是图6(c)和图6(e)所示的结构,通过图6的第二、第三种方式在子树的末端重构出三联体映射至MLUT,同时将零散的MUX2节点归入MUX树尚未映射的部分以待进一步递归处理,按此映射方法可以保证最大限度的将MUX2映射至MLUT。
如图8所示,MLUT配套EDA优化方法具体实施方式如下:
图8(a)是图5中MUX树同构化示例中同构化处理后得到的MUX树,至少需要5个传统LUT结构才能实现。而通过前移M1重构变换为图8(b)后,MUX树主体仅需2个MLUT就可以实现,大幅降低了逻辑资源的占用。
三联体转化为二进制MUX4以及MUX树重构过程中都会引入额外的控制逻辑,但MUX树主体优化后减小的面积可抵消控制逻辑方面增大的面积。尤其当MUX树为总线结构时,总线的每一位都共享同一套控制逻辑,控制逻辑面积的增大被每一位分摊弱化,此时MUX树主体每一位面积都有所减小的优势将得以明显体现。
为了进一步显示本发明的有益效果,随机抽取了20个OpenCores官方发布的实用设计进行了对比实验,OpenCores是著名的开源芯片设计组织,该组织下的开源项目绝大多数都是采用HDL语言开发的实用设计,因此以这些设计作为测试用例最能反映测试项目在实际应用中的效果。
图9所示的实验结果显示,与采用传统LUT结构相比,采用MLUT结构加配套EDA优化方法的综合结果,在LUT逻辑资源占用上平均减少了8.4%,同时电路时钟频率平均提高了3.1%,充分证明了MLUT作为MUX实现方案的面积和延迟优势。另外综合过程的运行时间和内存占用也分别有3.2%和1.6%的改善,这主要得益于MUX优化后网表结构得到了简化,缩短了后续逻辑优化的运行时间。
以上所述的具体实施例,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施例而已,并不用于限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。