基于fpga的寄存器使能信号优化方法

xiaoxiao2021-2-28  205

基于fpga的寄存器使能信号优化方法
【技术领域】
[0001] 本发明涉及微电子领域中的集成电路设计技术领域,特别是基于现场可编程逻辑 门阵列(Field Programmable Gate Array, FPGA)的寄存器使能信号优化方法。
【背景技术】
[0002] 在FPGA芯片中,寄存器通常都带有使能(CE)端口,该端口可以通过关闭 寄存器的时钟输入(CLK),使得寄存器的输出为保持状态。但是,在寄存器传输级 (Register-transfer Level, RTL)代码的控制逻辑较为复杂时,提取出的使能信号不够优 化,导致在布局布线后,FPGA芯片的耗电量大,而且使用查找表(L 〇〇k-Up-Table,LUT)的次 数增加,造成了资源使用量增加。

【发明内容】

[0003] 本发明的目的是解决现有技术中的RTL代码较为复杂时,优化使能信号,进而降 低FPGA芯片的耗电量以及减少LUT的资源使用量。
[0004] 本发明实施例提供了一种基于FPGA的寄存器使能信号优化方法,所述方法包括:
[0005] 对RTL代码进行综合,生成第一门级网表,所述第一门级网表包括节点;
[0006] 取出所述节点中的第一节点,将所述第一节点放入第一队列中;
[0007] 查询所述第一门级网表,获取第二节点;
[0008] 如果所述第二节点为寄存器的输出端口,获取寄存器输出保持第一路径,修改所 述第一门级网表和所述寄存器输出保持第一路径中的多路选择器的使能信号,生成第二门 级网表,其中,所述第二节点是所述第一节点的源节点;
[0009] 如果所述第二节点不为寄存器的输出端口,判断所述第二节点是否为多路选择器 的输出端口;
[0010] 当所述第二节点是多路选择器的输出端口时,将第三节点和第四节点放入所述第 一队列中,其中,所述第三节点和第四节点为所述多路选择器的输入端口;
[0011] 遍历所述第一队列中的节点,直至所述第一队列为空。
[0012] 优选地,所述节点具体为寄存器的输出端口和/或寄存器与多路选择器相连的端 口和/或多路选择器间相连的端口。
[0013] 优选地,所述如果所述第二节点为寄存器的输出端口,获取寄存器输出保持第一 路径,修改所述第一门级网表和所述寄存器输出保持第一路径中的多路选择器的使能信 号,生成第二门级网表具体包括:
[0014] 如果所述第二节点为寄存器的输出端口,删除所述第一门级网表中的所述第二节 点所在的多路选择器,并将该多路选择器的输入端口的源节点与该多路选择器输出端口驱 动的全部节点相连;
[0015] 将所述寄存器输出保持第一路径中的多路选择器的使能信号连接至与非门的输 入端;
[0016] 当所述寄存器不具有使能信号时,所述与非门输出第一信号,将所述第一信号输 入至所述寄存器的使能端,生成第二门级网表。
[0017] 优选地,所述将所述寄存器输出保持第一路径中的多路选择器的使能信号连接至 与非门的输入端具体包括:
[0018] 当所述寄存器输出保持第一路径中的多路选择器的数据输入端为0时,将所述数 据输入端为〇的多路选择器的使能端经非门后,连接至与非门的输入端。
[0019] 优选地,所述方法还包括:
[0020] 当所述寄存器具有寄存器使能信号时,将所述与非门的输出端连接至与门的一输 入端,将所述寄存器使能信号连接至所述与门的另一输入端,将所述与门的输出端连接至 寄存器的使能端;
[0021] 所述与门输出第二信号,将所述第二信号输入至所述寄存器的使能端,生成第二 门级网表。
[0022] 优选地,所述第一队列具体为为先进先出队列。
[0023] 优选地,所述寄存器为8位寄存器组。
[0024] 本发明通过对RTL代码进行综合,生成第一门级网表,所述第一门级网表包括节 点;取出节点中的第一节点,将第一节点放入第一队列中;查询第一门级网表,获取第二节 点;如果第二节点为寄存器的输出端口,获取寄存器输出保持第一路径,修改第一门级网表 和寄存器输出保持第一路径中的多路选择器的使能信号,生成第二门级网表,其中,第二节 点是第一节点的源节点;如果第二节点不为寄存器的输出端口,判断第二节点是否为多路 选择器的输出端口;当第二节点是多路选择器的输出端口时,将第三节点和第四节点放入 所述第一队列中,其中,第三节点和第四节点为所述多路选择器的输入端口;遍历所述第一 队列中的节点,直至所述第一队列为空,本发明实施例优化了寄存器的使能信号,降低了布 局布线后FPGA芯片耗电量,而且减少了 LUT的资源使用量。
【附图说明】
[0025] 图1为本发明实施例一提供的基于FPGA的寄存器使能信号优化方法流程图;
[0026] 图2a为本发明实施例一提供的寄存器输出保持第一路径示意图;
[0027] 图2b为图2a的寄存器使能/[目号优化后的电路一7K意图;
[0028] 图2c为图2a的寄存器使能信号优化后的电路又一示意图;
[0029] 图3为本发明实施例一提供的将RTL代码映射为门级电路的结构图;
[0030] 图4为图3中LUT示意图;
[0031 ] 图5为图3中使能信号优化后的门级电路示意图;
[0032] 图6为图5中LUT示意图;
[0033] 图7为图5中使能信号优化后的门级电路示意图;
[0034] 图8为图7中LUT示意图。
【具体实施方式】
[0035] 为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例 中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是 本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员 在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0036] 为便于对本发明实施例的理解,下面将结合附图以具体实施例做进一步的解释说 明,实施例并不构成对本发明实施例的限定。
[0037] 本申请实施例提供的基于FPGA的寄存器使能信号优化方法,适用于在进行FPGA 设计时,从传输级综合到门级映射的场景,尤其应用于FPGA芯片设计时,RTL代码综合后, 生成门级网表时,存在着若干使能信号的场景,若干使能信号导致布局布线时,FPGA芯片耗 电量大,而且需要使用LUT的次数多,资源浪费较大。
[0038] 下面以图1为例详细说明本发明实施例一提供的基于FPGA的寄存器使能信号优 化方法,图1为本发明实施例一提供的基于FPGA的寄存器使能信号优化方法流程图,在本 发明实施例中,实施主体为具有处理能力的设备:处理器或者系统或者装置,如图1所示, 所述方法具体包括:
[0039] S101,对RTL代码进行综合,生成第一门级网表。
[0040] 第一门级网表中包括各个逻辑器件之间的连接关系,可以将逻辑器件的连接点在 门级网表中称为节点,比如,在FPGA芯片中,节点包括但不限于寄存器的输出端口和/或寄 存器与多路选择器相连的端口和/或多路选择器间相连的端口,更进一步的,节点包括寄 存器的输出端口、寄存器的数据输入端口、多路选择器的数据输入端口、多路选择器的输出 端口。
[0041] S102,取出所述节点中的第一节点,将所述第一节点放入第一队列中。
[0042] 遍历第一门级网表中的节点,可以将第一门级网表中的任一节点作为第一节点。
[0043] 在本实施例中,在初始时,可以将寄存器的数据输入端口作为第一节点。
[0044] S103,查询第一门级网表,获取第二节点。
[0045] S104,如果第二节点为寄存器的输出端口,获取寄存器输出保持第一路径,修改第 一门级网表和寄存器输出保持第一路径中的多路选择器的使能信号,生成第二门级网表。
[0046] 查询第一门级网表,获取第二节点,可以将第一节点的源节点(上一级节点)作为 第二节点。
[0047] 在本实施例中,当初始时,如果将寄存器的数据输入端口作为第一节点,则寄存器 的数据输入端口的源节点为第二节点。
[0048] 如果第二节点为寄存器的输出端口,则获取寄存器输出保持第一路径,然后可以 修改第一门级网表和寄存器输出保持第一路径中的多路选择器的使能信号,更改后的第一 门级网表为第二门级网表。
[0049] 具体地,如果第二节点为寄存器的输出端口,在第一门级网表中,可以将第二节点 所在的多路选择器删除,并将第二节点所在的多路选择器的数据输入端口的源节点与该多 路选择器输出端口驱动的全部节点相连,将寄存器输出保持第一路径中的多路选择器的使 能信号连接至与非门的输入端。
[0050] 当寄存器不具有使能信号时,与非门输出第一信号,将第一信号输入至寄存器的 使能端,生成第二门级网表。
[0051] 其中,寄存器输出保持第一路径中的多路选择器的个数可以是1个,也可以是多 个,当寄存器输出保持第一路径中的多路选择器的是多个时,将每一个所述寄存器输出保 持第一路径中的多路选择器的使能信号连接至与非门的输入端。
[0052] 当所述寄存器输出保持第一路径中的所有多路选择器的数据输入端都为"1"时, 将寄存器输出保持第一路径中的所有多路选择器的使能信号连接至与非门的输入端。
[0053] 当所述寄存器输出保持第一路径中的部分多路选择器的数据输入端为"0",另一 部分多路选择器的数据输出端为" 1"时,将数据输出端为" 1"的多路选择器的使能信号连 接至与非门的输入端,将数据输出端为"〇"的多路选择器的使能信号经非门后,连接至与非 门的输入端。
[0054] 当寄存器输出保持第一路径中的所有多路选择器的数据输入端都为"0"时,将所 述多路选择器的使能信号经非门后,连接至与非门的输入端。其中,可以是将每一个多路选 择器分别连接一个非门,将每一个非门的输出端分别连接至与非门。
[0055] 下面结合图2a_2c对S104做具体描述。如图2a所示,图2a为本发明实施例一提 供的寄存器输出保 持第一路径示意图。在图2a中,寄存器输出保持第一路径中包括N+1个 多路选择器,其中第N+1多路选择器满足S104的判别条件。这N+1个多路选择器的使能信 号依次为S。,Si……S n,这N个多路选择器的数据输入端依次为D。,Di……Dn。
[0056] 当寄存器没有使能信号时,此时以D。,Di……Dn都为1为例,寄存器使能信号的连 接方式如图2b所示,图2b中,包括与非门201,将该N+1个多路选择器的使能信号S。,Si…… Sn,分别连接至与非门201的输入端,叠加生成第一信号,将该第一信号输入至寄存器的使 能端。
[0057] 当寄存器有使能信号,比如,该寄存器有使能信号ΕΝ0时,此时以DyDi……Dn都为 1为例,寄存器使能信号的连接方式如图2c所示,图2c中,包括与非门201和与门202,将 该N+1个多路选择器的使能信号S。,Si……S n,分别连接至与非门201的输入端后,将与非 门201的输出端,连接至与门202的一输入端,将该寄存器的使能信号ΕΝ0,连接至与门202 的另一输出端,生成第二信号,将第二信号连接至寄存器的使能端。
[0058] 以此类推,在进行下一轮的使能信号优化时,当寄存器中存在寄存器输出保持第 二路径时,可以将上一次的寄存器使能端的信号作为本次寄存器使能端信号,将寄存器输 出保持第二路径中的多路选择器的使能信号进行叠加,将叠加后的信号和寄存器使能端信 号进行叠加,生成新的寄存器使能端信号。具体的叠加方式与图2b_2c类似,此处不再赘 述。
[0059] 当第二节点不为寄存器的输出端口时,执行S105。
[0060] S105,如果所述第二节点不为寄存器的输出端口时,判断所述第二节点是否为多 路选择器的输出端口。
[0061] S106,当第二节点是多路选择器的输出端口时,将第三节点和第四节点放入所述 第一队列中。
[0062] 当第二节点是多路选择器的输出端口时,将多路选择器的输入端口,即第三节点 和第四节点放入第一队列中。
[0063] 当第二节点不是多路选择器的输出端口时,跳转至S107。
[0064] S107,遍历所述第一队列中的节点,直至所述第一队列为空。
[0065] 遍历第一队列中的节点,比如,取上述S103-106中的第二节点为第一节点,取第 三节点为第二节点,进行如S103-106的判断,或者,取上述S103-106中的第二节点为第一 节点,取第四节点为第二节点,进行如S103-106的判断。
[0066] 在进行下一轮的判断时,判断方法和S103-S106的判断方法相同。
[0067] 以此类推,再进行又一轮的判断时,和S103-S106的方法相同,此处不再赘述。
[0068] 需要说明的是,第一队列为先进先出队列,即最先进入第一队列中的节点,最先进 行节点的遍历。
[0069] 下面以一段具体的RTL代码,说明如何进行寄存器使能信号的优化。在RTL代码 中,通过if/else语句产生寄存器的控制逻辑的,一种典型的RTL代码如下:
[0071] 其中,每一条if/else语句,都可以通过二选一的多路选择器表示,此段代码对应 的原理图如图3所示,图3为本发明实施例一提供的将RTL代码映射为门级电路的结构图, 在图3中,节点之间的连接关系保存在门级网表中。
[0072] c〇Unt_〇ut信号是寄存器的输出信号,寄存器可以设定为任意位宽的寄存器组,示 例而非限定,寄存器可以为位宽为8位的寄存器组,16位的寄存器组。如图3所示,在将该 RTL代码映射为门级网表后,如果未提取出任何使能信号,那么在完成映射之后,每个寄存 器会占用3个查找表来完成相关的控制逻辑。如图4所示,图4为图3中LUT示意图。在 图4中,有两条寄存器输出保持路径,每一条路径对应一查找表,两条路径之间的多路选择 器对应一查找表,对于寄存器,一共存在3张查找表,当寄存器为8位宽的寄存器组时,该设 计总共需要3*8 = 24个查找表。
[0073] 当采用本发明实施例一提供的基于FPGA的寄存器使能信号优化方法,进行使能 信号的第一次优化后,优化后的门级电路的结构示意图如图5所示。图5为图3中使能信 号优化后的门级电路示意图。
[0074] 进行一次优化后,查找表的使用情况如图6所示,图6为图5中LUT示意图。在图 6中,当将enable提取为寄存器的使能信号后,寄存器组会占用2个查找表来完成相关的控 制逻辑,对于8位宽的寄存器组,该设计总共需要2*8 = 16个查找表。
[0075] 当采用本发明实施例一提供的基于FPGA的寄存器使能信号优化方法,在图5的基 础上,进行使能信号的又一次优化后,所对应的门级电路示意图如图7所示,图7所对应的 查找表的使用情况如图8所不,在图8中,将enable和cnt_en提取为寄存器的使能/[目号后, 每个寄存器组会占用1个查找表来完成相关的控制逻辑,对于具有8位宽的寄存器组,该设 计总共需要1*8+1 = 9个查找表。
[0076] 通过本发明实施例提供的基于FPGA的寄存器使能信号优化方法,大大减少了寄 存器输出保持路径,因此,在布局布线后,减少了 FPGA芯片的耗电量,从而减少了 LUT的资 源使用量。
[0077] 专业人员应该还可以进一步意识到,结合本文中所公开的实施例描述的各示例的 单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬 件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。 这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。 专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现 不应认为超出本发明的范围。
[0078] 结合本文中所公开的实施例描述的方法或算法的步骤可以用硬件、处理器执行的 软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(RAM)、内存、只读存储器 (ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域 内所公知的任意其它形式的存储介质中。
[0079] 以上所述的【具体实施方式】,对本发明的目的、技术方案和有益效果进行了进一步 详细说明,所应理解的是,以上所述仅为本发明的【具体实施方式】而已,并不用于限定本发明 的保护范围,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含 在本发明的保护范围之内。
【主权项】
1. 一种基于FPGA的寄存器使能信号优化方法,其特征在于,所述方法包括: 对寄存器传输级RTL代码进行综合,生成第一门级网表,所述第一门级网表包括节点; 取出所述节点中的第一节点,将所述第一节点放入第一队列中; 查询所述第一门级网表,获取第二节点; 如果所述第二节点为寄存器的输出端口,获取寄存器输出保持第一路径,修改所述第 一门级网表和所述寄存器输出保持第一路径中的多路选择器的使能信号,生成第二门级网 表,其中,所述第二节点是所述第一节点的源节点; 如果所述第二节点不为寄存器的输出端口,判断所述第二节点是否为多路选择器的输 出端口; 当所述第二节点是多路选择器的输出端口时,将第三节点和第四节点放入所述第一队 列中,其中,所述第三节点和第四节点为所述多路选择器的输入端口; 遍历所述第一队列中的节点,直至所述第一队列为空。2. 根据权利要求1所述的方法,其特征在于,所述节点具体为寄存器的输出端口和/或 寄存器与多路选择器相连的端口和/或多路选择器间相连的端口。3. 根据权利要求1所述的方法,其特征在于,所述如果所述第二节点为寄存器的输出 端口,获取寄存器输出保持第一路径,修改所述第一门级网表和所述寄存器输出保持第一 路径中的多路选择器的使能信号,生成第二门级网表具体包括: 如果所述第二节点为寄存器的输出端口,删除所述第一门级网表中的所述第二节点所 在的多路选择器,并将该多路选择器的输入端口的源节点与该多路选择器输出端口驱动的 全部节点相连; 将所述寄存器输出保持第一路径中的多路选择器的使能信号连接至与非门的输入 端; 当所述寄存器不具有使能信号时,所述与非门输出第一信号,将所述第一信号输入至 所述寄存器的使能端,生成第二门级网表。4. 根据权利要求3所述的方法,其特征在于,所述将所述寄存器输出保持第一路径中 的多路选择器的使能信号连接至与非门的输入端具体包括: 当所述寄存器输出保持第一路径中的多路选择器的数据输入端为0时,将所述数据输 入端为〇的多路选择器的使能端经非门后,连接至与非门的输入端。5. 根据权利要求3或4所述的方法,其特征在于,所述方法还包括: 当所述寄存器具有寄存器使能信号时,将所述与非门的输出端连接至与门的一输入 端,将所述寄存器使能信号连接至所述与门的另一输入端,将所述与门的输出端连接至寄 存器的使能端; 所述与门输出第二信号,将所述第二信号输入至所述寄存器的使能端,生成第二门级 网表。6. 根据权利要求1所述的方法,其特征在于,所述第一队列具体为为先进先出队列。7. 根据权利要求1-6任一项所述的方法,其特征在于,所述寄存器为8位寄存器组。
【专利摘要】本发明涉及一种基于FPGA的寄存器使能信号优化方法。包括:对RTL代码进行综合,生成第一门级网表;取出节点中的第一节点,将第一节点放入第一队列中;查询第一门级网表,获取第二节点;如果第二节点为寄存器的输出端口,获取寄存器输出保持第一路径,修改第一门级网表和寄存器输出保持第一路径中的多路选择器的使能信号,生成第二门级网表;如果第二节点不为寄存器的输出端口,判断第二节点是否为多路选择器的输出端口;当第二节点是多路选择器的输出端口时,将第三节点和第四节点放入所述第一队列中;遍历第一队列中的节点,直至第一队列为空。本发明实施例优化了寄存器的使能信号,降低了FPGA芯片耗电量,而且减少了LUT的资源使用量。
【IPC分类】G06F17/50
【公开号】CN105488237
【申请号】CN201410483079
【发明人】耿嘉, 刘明
【申请人】京微雅格(北京)科技有限公司
【公开日】2016年4月13日
【申请日】2014年9月19日

最新回复(0)