Nothing Special   »   [go: up one dir, main page]

CN112685991B - 一种满足约束的布线方法 - Google Patents

一种满足约束的布线方法 Download PDF

Info

Publication number
CN112685991B
CN112685991B CN202011528148.4A CN202011528148A CN112685991B CN 112685991 B CN112685991 B CN 112685991B CN 202011528148 A CN202011528148 A CN 202011528148A CN 112685991 B CN112685991 B CN 112685991B
Authority
CN
China
Prior art keywords
wiring
layer
nodes
pin
expansion
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN202011528148.4A
Other languages
English (en)
Other versions
CN112685991A (zh
Inventor
黄晔
张亚东
张旋
李起宏
陆涛涛
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing Empyrean Technology Co Ltd
Original Assignee
Beijing Empyrean Technology Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Beijing Empyrean Technology Co Ltd filed Critical Beijing Empyrean Technology Co Ltd
Priority to CN202011528148.4A priority Critical patent/CN112685991B/zh
Publication of CN112685991A publication Critical patent/CN112685991A/zh
Application granted granted Critical
Publication of CN112685991B publication Critical patent/CN112685991B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Design And Manufacture Of Integrated Circuits (AREA)

Abstract

一种满足约束的布线方法,包括以下步骤:读取布线参数,获取布线层的网格数据和约束,构建布线网格;设置布线起始节点,将起始节点加入优先队列中;搜索布线路径,按照代价从低到高的顺序扩展优先队列节点,并将扩展后的节点压入优先队列中;查询扩展区域,生成符合设计规则的布线路径。本发明的满足约束的布线方法,能够将多端线网中引脚连通起来,保证布线结果满足minStepEdgeLength约束。

Description

一种满足约束的布线方法
技术领域
本发明涉及超大规模集成电路VLSI设计技术领域,特别是涉及一种超大规模集成电路详细布线中满足minStepEdgeLength(图形边框最小长度)约束的布线方法。
背景技术
随着工艺的进步,超深亚微米工艺不断完善,在芯片面积的减少下,器件的数量快速的增长,芯片密度越来越密集,物理设计的难度不断加大。布线作为超大规模集成电路中物理设计的后端环节,是芯片设计成败的关键阶段,这就使得应用EDA(电子设计自动化)工具成为不可或缺的辅助手段。
布线是指在物理设计阶段,在要连接的单元,引脚或者其他电子器件之间分配金属线,保证线网引脚的联通性,以及分配的金属线不会出现短路,还要满足物理设计约束(design rule)。
伴随着光刻工艺的成熟,芯片性能的提高,往往意味着芯片密度的增加,可布线空间进一步减少,对于关键线网约束的数量不断增加,最终导致布线的难度和复杂度大大增加,这给EDA工具带来新的挑战。
到了14nm以及以下的FinFET高端工艺中,布线密度增大,布线既要考虑空间最小,也要考虑走线的物理设计更优。电源线(PG Net),信号线(Signal Net),时钟线(ClockNet)等线网的布线结果,对芯片的性能起到关键作用,比如电源线要比普通线网的宽度更大,即使接通,电压不符合驱动电压要求,区域内的器件还是无法工作。信号线的线网长度过大,信号衰减,器件无法得到信号。时钟线用于同步电路当中,是器件同步工作的关键。因此这些线网被称为关键线网,关键线网的布线结果往往决定了芯片性能。
minStepEdgeLength约束就是众多设计规则之一。minStepEdgeLength约束是制造图形的边长不小于约束值的要求。关键线网往往涉及到引脚之间的联通,与引脚相连的第一段金属线使用引脚的宽度直至在金属线上打通孔,加大线宽进行布线,在布线空间越加紧张的高端工艺制造中,满足约束要求,对布线工具带来新的挑战。
在高端工艺中,需要EDA厂商开发针对关键线网,满足minStepEdgeLength设计规则,开发布线工具。
发明内容
为了解决现有技术存在的不足,本发明的目的在于提供一种满足约束的布线方法,能够将多端线网中引脚连通起来,保证布线结果满足minStepEdgeLength约束。
为实现上述目的,本发明提供的一种满足约束的布线方法,包括以下步骤:
读取布线参数,获取布线层的网格数据和约束,构建布线网格;
设置布线起始节点,将起始节点加入优先队列中;
搜索布线路径,按照代价从低到高的顺序扩展优先队列节点,并将扩展后的节点压入优先队列中;
查询扩展区域,生成符合设计规则的布线路径。
进一步地,所述读取布线参数,获取布线层的网格数据和约束,构建布线网格的步骤,还包括,根据引脚的信息添加平行于预设方向的网格数据到网格。
进一步地,所述设置布线起始节点的步骤,还包括,
将同层的节点和引脚内部的节点作为引脚的起始节点;
所述同层的节点为引脚边框的中点;
所述引脚内部的节点,为矩形的水平中心线和竖直中心线与网格的交点,且不包含边框上的点。
进一步地,所述搜索布线路径,按照代价顺序扩展优先队列中的节点的步骤,还包括,
在引脚边框的节点进行同层扩展,在引脚内部的节点进行跳层扩展。
更进一步地,所述查询扩展区域,生成符合设计规则的布线路径的步骤,还包括,边框的起始节点沿指定的方向进行扩展时,查询在当前位置生成金属线是否违反设计规则,若违反,增加扩展节点的代价值。
更进一步地,所述查询扩展区域,生成符合设计规则的布线路径的步骤,还包括,引脚内部的节点进行跳层扩展时,根据通孔参数生成顶层金属、底层金属和通孔层的矩形,查询顶层、底层和通孔层的矩形区域内是否违反设计规则,若违反,增加扩展节点的代价值。
进一步地,所述查询扩展区域,生成符合设计规则的布线路径的步骤,还包括,布线结果中金属线直接与引脚相连,金属线的起始节点在引脚边框的中点上,当金属线为竖直时,布线宽度为引脚图形的宽;当金属线为水平时,布线宽度为引脚图形的高。
进一步地,所述查询扩展区域,生成符合设计规则的布线路径的步骤,还包括,布线结果中通孔与引脚相连,与通孔相连的第一段金属线,满足通孔在金属线所在层的图形与第一段金属线之间的设计规则约束,当第一段金属线为竖直时,布线宽度为通孔图形的宽;当金属线为水平,布线宽度为通孔图形的高。
为实现上述目的,本发明还提供一种电子设备,包括存储器和处理器,所述存储器上储存有在所述处理器上运行的计算机程序,所述处理器运行所述计算机程序时执行如上文所述的满足约束的布线方法的步骤。
为实现上述目的,本发明还提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序运行时执行如上文所述的满足约束的布线方法的步骤。
本发明的满足约束的布线方法、电子设备及计算机可读存储介质,具有以下有益效果:
1)满足minStepEdgeLength约束的布线方法自动调整引脚的网格对应,设置对应的起始点,达到预期的布线结果。
2)过程拆解为多次查询,能够有效地减少DRC。
本发明的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本发明而了解。
附图说明
附图用来提供对本发明的进一步理解,并且构成说明书的一部分,并与本发明的实施例一起,用于解释本发明,并不构成对本发明的限制。在附图中:
图1为根据本发明的满足约束的布线方法流程图;
图2为根据本发明的实施例一引脚对应添加中心线与边界线示意图;
图3为根据本发明的实施例一设置引脚的起始点示意图;
图4为根据本发明的实施例一引脚扩展节点示意图;
图5为根据本发明的实施例一设置布线参数示意图;
图6为根据本发明的实施例一同层水平出引脚的第一段金属线的宽度与引脚的高相等示意图;
图7为根据本发明的实施例一同层竖直出引脚的第一段金属线的宽度与引脚的宽相等示意图;
图8为根据本发明的实施例一布线示意图;
图9为根据本发明的实施例一通孔出引脚与同层出引脚的结果示意图。
具体实施方式
以下结合附图对本发明的优选实施例进行说明,应当理解,此处所描述的优选实施例仅用于说明和解释本发明,并不用于限定本发明。
图1为根据本发明的满足约束的布线方法流程图,下面将参考图1,对本发明的满足约束的布线方法进行详细描述。
首先,在步骤101,布线前,预处理布线网格,添加引脚边框和中心的网格。
优选地,读取布线参数,获得对于各个布线层的网格数据与约束,构建初步的布线3-D网格。
优选地,根据引脚信息和约束信息添加新布线网格。
本实施例中,网格图是布线的重要组成部分,因为路径搜索算法直接在网格上工作。在网格图中,各种代价和属性都可以赋予对应点与边的属性。基于经典的水平竖直模型,一层是水平的,相邻两层必定是竖直的,添加水平的网格,必定要在水平层上添加;添加竖直的网格,必定要在竖直层上添加。引脚对应添加中心线与边界线如图2所示,引脚添加平行于预设方向的网格数据到网格,和水平竖直3D结构在平面重叠展示。
在步骤102,限定布线的起始点,将起始点加入到优先队列中。
优选地,引脚的起始点有两类:1)同层的节点,同层的节点是引脚边框的中点;2)引脚内部的节点,是矩形的水平中心线和竖直中心线与网格的交点,且不包含边框上的点。
本实施例中,引脚上与网格的交点都可以作为扩展队列中的节点,但是为了实现满足minStepEdgeLength(图形边框最小长度)约束,必须进行限定起始点,如图3所示。
在步骤103,使用A*搜索布线路径,优先扩展队列中代价最小的节点。
优选地,在引脚边框的节点可以进行同层扩展,在引脚内部的节点只能进行上下跳层扩展。
优选地,节点可以进行6个方向扩展,分别是同层向北,向东,向南和向西,跳层扩展方向分别是向上和向下。其中,向北,向东,向南,向西是同层的扩展,向上与向下是跳层的扩展,需要额外的通孔来保证连接性。
在步骤104,布线过程中实时查询扩展区域,生成布线路径。
优选地,当特定的起始点节点沿着指定的方向进行扩展,查询在当前位置生成金属线时,是否会产生DRC(Design Rule Check,设计规则检查)。
优选地,如果产生DRC则为扩展的结点的代价加上一个较大的代价值。
图4为根据本发明的实施例一引脚扩展节点示意图。
本实施例中,引脚边框起始点的扩展,如引脚右边框的起点,只有向东扩展,才是用引脚的高度作为金属线线宽,构造金属线的外框,再加上最小间隔距离,构成查询矩形。如图4所示,引脚扩展节点,确认是否有DRC的范围,如果查询的矩形中有障碍物,那么此次扩展的代价赋予一个较大的值。
本实施例中,引脚内部的起始点的跳层扩展,根据通孔的其他参数生成顶层金属、底层金属和通孔层的矩形。再通过数据结构查询顶层、底层和通孔层的矩形区域内是否存在障碍物,判断是否会产生DRC。跳层扩展后,除了与之前扩展方向相反外,可以进行任意方向的扩展。
本实施例中,还包括,引脚内部的节点进行跳层扩展时,根据通孔参数生成顶层金属、底层金属和通孔层的矩形,查询顶层、底层和通孔层的矩形区域内是否超过引脚边框。
超过引脚边框,是通过预处理实现的,将引脚往里缩通孔的外框(enclosure,围墙)宽度的一半,和切口(cut)宽度的一半,如果不在此范围内,加大代价。
图5为根据本发明的实施例一设置布线参数示意图。
本实施例中,如图5所示,有两个分页分别是设置金属层和Via数据。
在步骤105,在将找到的路径转换为版图的阶段中,在满足约束位置选择最优的线宽布线,不产生DRC。
优选地,布线结果是金属线出引脚,满足minStepEdgeLength约束,金属线的起点在引脚边框的中点上时,第一段金属线是竖直且与引脚在同一层,宽度就是引脚图形的宽;第一段金属线是水平且与引脚在同一层,宽度就是引脚图形的高。
优选地,布线结果是通孔出引脚,满足minStepEdgeLength约束,通孔的在引脚层的图形不超过引脚的范围,通孔的中心位于引脚的水平或者竖直中心线上,且不能在引脚的边框上。
优选地,与通孔相连的第一段金属线,为了满足通孔在金属线所在层的图形与第一段金属线之间minStepEdgeLength约束,包括,金属线是竖直,宽度就是通孔图形的宽;金属线是水平,宽度就是通孔图形的高。
图8为根据本发明的实施例一布线示意图。
本实施例中,如图8所示,跳层出引脚的第一段金属线的宽度与通孔对齐。从左上角到左下角的金属线宽度与通孔的宽相等。从右下角到左下角的金属线宽度与通孔高相等。
下面结合一具体实施例对本发明的满足约束的布线方法做进一步的说明。
图9为根据本发明的实施例一通孔出引脚与同层出引脚的结果示意图。
(1)启动布线命令,并在图9中设置布线参数。
(2)单击鼠标选择需要进行布线操作要连接的起始物体或者中继点,如图9,为了符合设计需求,可以点击鼠标选择布线引脚。
(3)右击生成布线结果,如图9。
本发明的一个实施例中,还提供一种电子设备,包括存储器和处理器,所述存储器上储存有在所述处理器上运行的计算机程序,所述处理器运行所述计算机程序时执行如上文所述的满足约束的布线方法的步骤。
本发明的一个实施例中,还提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序运行时执行如上文所述的满足约束的布线方法的步骤。
本领域普通技术人员可以理解:以上所述仅为本发明的优选实施例而已,并不用于限制本发明,尽管参照前述实施例对本发明进行了详细的说明,对于本领域的技术人员来说,其依然可以对前述各实施例记载的技术方案进行修改,或者对其中部分技术特征进行等同替换。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

Claims (4)

1.一种满足约束的布线方法,其特征在于,包括以下步骤:
读取布线参数,获取布线层的网格数据和约束,构建布线网格;
设置布线起始节点,将起始节点加入优先队列中;
所述设置布线起始节点的步骤,还包括,
将同层的节点和引脚内部的节点作为引脚的起始节点;
所述同层的节点为引脚边框的中点;
所述引脚内部的节点,为矩形的水平中心线和竖直中心线与网格的交点,且不包含边框上的点;
搜索布线路径,按照代价从低到高的顺序扩展优先队列节点,并将扩展后的节点压入优先队列中;
所述搜索布线路径,按照代价顺序扩展优先队列中的节点的步骤,还包括,
在引脚边框的节点进行同层扩展,在引脚内部的节点进行跳层扩展;
查询扩展区域,生成符合设计规则的布线路径;
所述查询扩展区域,生成符合设计规则的布线路径的步骤,还包括,边框的起始节点沿指定的方向进行扩展时,查询在当前位置生成金属线是否违反设计规则,若违反,增加扩展节点的代价值;
所述查询扩展区域,生成符合设计规则的布线路径的步骤,还包括,引脚内部的节点进行跳层扩展时,根据通孔参数生成顶层金属、底层金属和通孔层的矩形,查询顶层、底层和通孔层的矩形区域内是否违反设计规则,若违反,增加扩展节点的代价值;
所述查询扩展区域,生成符合设计规则的布线路径的步骤,还包括,布线结果中金属线直接与引脚相连,金属线的起始节点在引脚边框的中点上,当金属线为竖直时,布线宽度为引脚图形的宽;当金属线为水平时,布线宽度为引脚图形的高;
所述查询扩展区域,生成符合设计规则的布线路径的步骤,还包括,布线结果中通孔与引脚相连,与通孔相连的第一段金属线,满足通孔在金属线所在层的图形与第一段金属线之间的设计规则约束,当第一段金属线为竖直时,布线宽度为通孔图形的宽;当金属线为水平,布线宽度为通孔图形的高。
2.根据权利要求1所述的满足约束的布线方法,其特征在于,所述读取布线参数,获取布线层的网格数据和约束,构建布线网格的步骤,还包括,根据引脚的信息添加平行于预设方向的网格数据到网格。
3.一种电子设备,其特征在于,包括存储器和处理器,所述存储器上储存有在所述处理器上运行的计算机程序,所述处理器运行所述计算机程序时执行权利要求1至2任一项所述的满足约束的布线方法的步骤。
4.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序运行时执行权利要求1至2任一项所述的满足约束的布线方法的步骤。
CN202011528148.4A 2020-12-22 2020-12-22 一种满足约束的布线方法 Active CN112685991B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202011528148.4A CN112685991B (zh) 2020-12-22 2020-12-22 一种满足约束的布线方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202011528148.4A CN112685991B (zh) 2020-12-22 2020-12-22 一种满足约束的布线方法

Publications (2)

Publication Number Publication Date
CN112685991A CN112685991A (zh) 2021-04-20
CN112685991B true CN112685991B (zh) 2022-11-01

Family

ID=75450594

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202011528148.4A Active CN112685991B (zh) 2020-12-22 2020-12-22 一种满足约束的布线方法

Country Status (1)

Country Link
CN (1) CN112685991B (zh)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114757139B (zh) * 2022-04-24 2023-10-13 东科半导体(安徽)股份有限公司 层次化设计中穿透模块层次的模块引脚对齐方法
CN115408978B (zh) * 2022-09-02 2024-07-16 北京华大九天科技股份有限公司 一种集成电路版图布线中满足最小面积约束的布线方法
CN116956810B (zh) * 2023-08-01 2024-09-03 北京华大九天科技股份有限公司 布线方法及装置、计算装置和存储介质

Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000243838A (ja) * 1999-02-17 2000-09-08 Nec Corp 半導体集積回路の配線方法
CN1963827A (zh) * 2006-12-08 2007-05-16 清华大学 基于多步长迷宫算法的模拟集成电路自动布线方法
CN107808061A (zh) * 2017-11-20 2018-03-16 北京华大九天软件有限公司 一种支持正交与斜向走线的双向跨障碍布线方法
CN109145342A (zh) * 2017-06-16 2019-01-04 矽品精密工业股份有限公司 自动布线系统及方法
CN110968983A (zh) * 2019-12-30 2020-04-07 北京华大九天软件有限公司 一种交互式布线方法
CN111027273A (zh) * 2019-12-04 2020-04-17 杭州广立微电子有限公司 一种基于预绕线的版图自动绕线方法、存储设备及系统
CN111125981A (zh) * 2019-12-26 2020-05-08 北京华大九天软件有限公司 一种集成电路vlsi的布线方法
CN111125993A (zh) * 2019-12-30 2020-05-08 北京华大九天软件有限公司 一种满足最小Cut数量约束的布线方法
CN111368493A (zh) * 2018-12-26 2020-07-03 杭州广立微电子有限公司 一种基于稀疏网格的自动版图布线生成方法

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5483461A (en) * 1993-06-10 1996-01-09 Arcsys, Inc. Routing algorithm method for standard-cell and gate-array integrated circuit design
JP2001298089A (ja) * 2000-04-14 2001-10-26 Matsushita Electric Ind Co Ltd 半導体集積回路の設計方法
US8037441B2 (en) * 2007-09-25 2011-10-11 International Business Machines Corporation Gridded-router based wiring on a non-gridded library
CN101976163A (zh) * 2010-08-13 2011-02-16 苏州瀚瑞微电子有限公司 一种电容式触控面板的布线方法
CN101957876B (zh) * 2010-09-15 2012-12-19 清华大学 考虑通孔的基于不均匀网格的多层布线方法
CN101980216B (zh) * 2010-10-18 2012-11-28 清华大学 基于网块的快速多层布线方法
JP5776413B2 (ja) * 2011-07-28 2015-09-09 富士通株式会社 回路設計支援装置、回路設計支援方法および回路設計支援プログラム
CN111027275A (zh) * 2019-12-19 2020-04-17 北京华大九天软件有限公司 一种满足最小凹槽约束的引脚连接预处理方法

Patent Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000243838A (ja) * 1999-02-17 2000-09-08 Nec Corp 半導体集積回路の配線方法
CN1963827A (zh) * 2006-12-08 2007-05-16 清华大学 基于多步长迷宫算法的模拟集成电路自动布线方法
CN109145342A (zh) * 2017-06-16 2019-01-04 矽品精密工业股份有限公司 自动布线系统及方法
CN107808061A (zh) * 2017-11-20 2018-03-16 北京华大九天软件有限公司 一种支持正交与斜向走线的双向跨障碍布线方法
CN111368493A (zh) * 2018-12-26 2020-07-03 杭州广立微电子有限公司 一种基于稀疏网格的自动版图布线生成方法
CN111027273A (zh) * 2019-12-04 2020-04-17 杭州广立微电子有限公司 一种基于预绕线的版图自动绕线方法、存储设备及系统
CN111125981A (zh) * 2019-12-26 2020-05-08 北京华大九天软件有限公司 一种集成电路vlsi的布线方法
CN110968983A (zh) * 2019-12-30 2020-04-07 北京华大九天软件有限公司 一种交互式布线方法
CN111125993A (zh) * 2019-12-30 2020-05-08 北京华大九天软件有限公司 一种满足最小Cut数量约束的布线方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
优化层分配的无网格详细布线算法;竺红卫 等;《微电子学与计算机》;20030531(第5期);第45-48页 *

Also Published As

Publication number Publication date
CN112685991A (zh) 2021-04-20

Similar Documents

Publication Publication Date Title
CN112685991B (zh) 一种满足约束的布线方法
CN101980216B (zh) 基于网块的快速多层布线方法
US20030121018A1 (en) Subgrid detailed routing
US6446239B1 (en) Method and apparatus for optimizing electronic design
CN101957876B (zh) 考虑通孔的基于不均匀网格的多层布线方法
US6763512B2 (en) Detailed method for routing connections using tile expansion techniques and associated methods for designing and manufacturing VLSI circuits
US7197738B1 (en) Method and apparatus for routing
CN112818626B (zh) 一种基于多重掩膜版的版图布线方法
US8219959B2 (en) Generating integrated circuit floorplan layouts
US8984465B1 (en) Methods, systems, and articles of manufacture for automatically assigning track patterns to regions for physical implementation of an electronic design
CN111125993B (zh) 一种满足最小Cut数量约束的布线方法
JP2004139181A (ja) レイアウト装置及びプログラム
CN111428435A (zh) 一种集成电路版图功耗优化方法及装置
US20050193354A1 (en) Method of extraction of wire capacitances in LSI device having diagonal wires and extraction program for same
CN113591426A (zh) 一种集成电路版图设计中创建线网标识的方法
CN117291140B (zh) 自动布线工具的绕线违例减少方法、装置、存储介质及电子终端
CN115408978B (zh) 一种集成电路版图布线中满足最小面积约束的布线方法
CN115293097A (zh) 一种集成电路版图布线中满足MinViaSpacing约束的布线方法
JPH09223744A (ja) Vlsiチップへの回路の配置方法
CN112182311B (zh) 一种数据搜索方法、电子设备及计算机可读存储介质
US11182530B1 (en) Automatic routing system workflow
CN111611761B (zh) 生成电路版图图案的方法、设备和计算机可读存储介质
CN115221835A (zh) 一种芯片设计的物理验证方法及装置
WO1998055950A1 (en) Integrated circuit layout synthesis tool
JP4995639B2 (ja) 半導体集積回路の設計装置および設計方法

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant