一种通过建立数学几何模型来辅助PCB设计方法
技术领域
本发明涉及电路板设计技术领域,具体的说,是涉及一种通过建立数学几何模型来辅助PCB设计方法。
背景技术
随着高速时代的发展,电子产品实现的功能越来越多,同时一个产品上的元器件也随之越来越多,从而使PCB设计将变得更复杂,新产品的研发周期越来越短。
在传统的PCB设计过程中全部需要人工进行线路的设计、修改和调整。这不仅加重了操作工人的施工强度,同时影响了设计过程的效率与精确度。
上述缺陷,值得解决。
发明内容
为了克服现有的技术的不足,本发明提供一种通过建立数学几何模型来辅助PCB设计方法。
本发明技术方案如下所述:
一种通过建立数学几何模型来辅助PCB设计方法,其特征在于,包括以下步骤:
步骤1、通过Skill设计程序,读取指定PCB的数据信息;
步骤2、将读取指定PCB的数据信息转化为数学几何模型,建立二维、三维坐标系统及其相关参数定义;
步骤3、业务处理模块中,通过人机交互程序,接受指令,通过对指定PCB数据信息转化的数学几何模型进行各项参数的调整与运算,从而得到期望或是优化的结果;
步骤4、将处理后的结果,转化为PCB的数据信息;
步骤5、运行结束。
根据上述方案的本发明,其特征在于,所述Skill设计程序通过CADENCE AXLSKILL语言进行开发。
根据上述方案的本发明,其特征在于,在所述步骤2中,将PCB上的走线转换成直线方程或弧线方程。
进一步的,PCB的某一层中,第m条网络完整走线定义为Netm,Netm为集合了n条直线的集合,则Netm的集合为Netm:Zi(L1L2…Ln),其中Ln的数学方程为Ln:anx+bny+cn=0(xnynxn'yn'),其中(xnyn xn'yn')表示为该直线段的两点,an、bn分别x、y的系数,cn为常数项,Zi表示第i层,如2层,i可以是1或是2,i就是实际PCB的层数。
根据上述方案的本发明,其特征在于,在所述步骤3中,通过矢量D对数学几何模型中的走线间距及方向进行调整。
进一步的,在PCB走线间距优化自动调整过程中,
(1)BUS信号中有m个网络在第i层,分别为Net1~Netm,定义Netm从起始换层孔的起点Sm到终止换层孔的终点S'1-m,
(2)记录其中的转折点及线段为:
Net1中,转折点分别为S1、A1、B1……S'1,线段分别为L1-1、L1-2、L1-3……L1-n;
Net2中,转折点分别为S2、A2、B2……S'2,线段分别为L2-1、L2-2、L2-3……L2-n;
以此类推,
Netm中,转折点分别为Sm、Am、Bm……S'm,线段分别为Lm-1、Lm-2、Lm-3……Lm-n;
(3)定义:
Net1:Zi(L1-1 L1-2 L1-3……L1-n),
Net2:Zi(L2-1 L2-2 L2-3……L2-n),
……
Netm:Zi(Lm-1 Lm-2 Lm-3……Lm-n);
(4)根据两点确定一条直线,则L1-1:ax+by+c=0(S1,A1),a、b、分别x、y的系数,c为常数项,进而可以确定Net1~Netm的方程为:
Net1:Zi(a1-1x+b1-1y+c1-1=0(S1,A1))
Zi(a1-2x+b1-2y+c1-2=0(A1,B1))
……
Zi(a1-nx+b1-ny+c1-n=0(X1,S'1)),X1为S'1前面一点,
Net2:Zi(a2-1x+b2-1y+c2-1=0(S2,A2))
Zi(a2-2x+b2-2y+c2-2=0(A2,B2))
……
Zi(a2-nx+b2-ny+c2-n=0(X2,S'2)),X2为S'2前面一点,
以此类推,
Netm:Zi(am-1x+bm-1y+cm-1=0(Sm,Am))
Zi(am-2x+bm-2y+cm-2=0(Am,Bm))
……
Zi(am-nx+bm-ny+cm-n=0(Xm,S'm)),Xm为S'm前面一点,
(5)得到Net1~Netm为由只通过确定两点的直线方程的集合,通过对方程参数调整,对PCB走线间距优化调整。
根据上述方案的本发明,其特征在于,在PCB通流能力检查的过程中,通过直线方程:a'x+b'y+c'=0对铜箔进行扫描,即扫描线为a'x+b'y+c'=0,其中a’、b’分别为x和y的系数,c’为常数项;
强制直线方程过黄色高亮的铜箔区域内的一点,即检测点,检测点按X Y方向增量的形式变动,精度高则增量小,反之增量大;
在每一个检测点,扫描线a'x+b'y+c'=0从0-360度按角度增量变化,也就是直线斜率K的调整,精度高则角度增量小,反之角度增量大;
记录扫描线a'x+b'y+c'=0通过扫描区域内最短的直线方程,相应就是铜箔的最小宽度,从而计算出铜箔的通流能力。
根据上述方案的本发明,其有益效果在于,本发明通过利用数学几何模型对PCB设计数据进行读取、生成、修改调整、检查优化、精确测量等一系列的操作,减少了设计人员的操作强度,还可以扩展客户定制化的功能,通过数学几何模型建立的二、三维坐标系统和介入的数学运算可以极大的提高效率与精确能力,从而提高PCB设计效率与精确能力。
附图说明
图1为本发明的流程图。
图2-4为本发明一个实施例中PCB项目的布线设计图。
图5-6为本发明另一个实施例中PCB项目的布线设计图。
图7为本发明确定三维坐标与PCB走线关系的示意图。
图8-13为本发明应用实例一的设计示意图。
图14为本发明应用实例二的设计示意图。
具体实施方式
下面结合附图以及实施方式对本发明进行进一步的描述:
如图1所示,一种通过建立数学几何模型来辅助PCB设计方法,包括以下步骤:
步骤1、通过CADENCE AXLSKILL语言设计开发Skill设计程序,读取指定PCB的数据信息。
步骤2、将读取指定PCB的数据信息转化为数学几何模型,建立二维、三维坐标系统及其相关参数定义。
步骤3、业务处理模块中,通过人机交互程序,接受指令,通过对指定PCB数据信息转化的数学几何模型进行各项参数的调整与运算,从而得到期望或是优化的结果。
步骤4、将处理后的结果,转化为PCB的数据信息。
步骤5、运行结束。
如图2-6所示,在PCB项目的布线设计图中,加入了X与Y坐标轴,所有的PCB数据信息将都包含于这个二维的坐标系当中。在PCB项目的布线设计图中走线包括了直线与圆弧线。
将PCB上的走线转换成直线方程(平面直角坐标系中的一个二元一次方程),用直线方程表示PCB走线上各直线形式的走线,通过直线方程来了解与计算该直线的空间方向、对称图形、距离计算、直线交点、对称轴、位置关系等。对于PCB设计来说,在调整、优化、检查走线也是同理,通过直线方程来处理PCB上面的走线了。
PCB上的走线的圆弧段也是同理。
当前电子产品的功能多样化,尺寸又向小型化,导致实际PCB很难在一层或是2层来完成,目前绝大部分的PCB都是多层,甚至几十层。所以在上面二维的基础之上,加入Z轴来表示PCB的层(例:Z1表示TOP层,Zi表成第i层)。
如图7所示,PCB的某一层中,第m条网络完整走线定义为Netm,Netm为集合了n条直线的集合,在本实施例中,定义Netm主要分为A B C三点组成,其中BC段由L1~L7组成,L1~L7的直线方程表示为:
L1:Zi(a1x+b1y+c1=0(x1y1 x1'y1'))
……
L7:Zi(a7x+b7y+c7=0(x7y7 x7'y7'))其中(xnyn xn'yn')表示为该直线段的两点,an、bn分别x、y的系数,cn为常数项,Zi表示第i层,如2层,i可以是1,也可以是2,就是实际PCB的层数。由此可见,组成Netm在BC段的走线,其实就是L1~L7所组成的一个集合,这样用数学的知识就对应到了PCB上的数据了,即:Netm:Zi(L1L2…L7)。
通过二、三维坐标系的知识,通过数学的方式来表示PCB的相关数据信息,并充分运用解方程组的高效运算来对PCB数据的生成、修改调整、检查优化、精确测量等分析运算处理,从而实现PCB数据信息转化成数学模型运算后再生成PCB信息的一个过程。
如图8-12所示,实际PCB布线设计时,由于手动布线以及其它因素,对于BUS信号的走线常会出现同一BUS走线不均匀、间距不等,不单是看起来不美观,且由于BUS走线间距有些地方过近,在一定程度上影响信号的质量,如信号过近会增加信号间的窜扰。为了提高设计的美观同时更重要的保证信号的设计质量,由平面几何知识,通过矢量D对数学几何模型中的走线间距及方向进行调整。
在PCB走线间距优化自动调整过程中,
(1)BUS信号中有m个网络(本实施中设有3个网络),分别为Net1~Net3,定义Net1从起始换层孔的起点S1到终止换层孔的终点E1,Net2从起始换层孔的起点S2到终止换层孔的终点E2,Net3从起始换层孔的起点S3到终止换层孔的终点E3,
(2)记录其中的转折点及线段为:
Net1的组成:
6个点:S1、A1、B1、C1、D1、E1;
5线段:L1-1、L1-2、L1-3、L1-4、L1-5。
Net2的组成:
6个点:S2、A2、B2、C2、D2、E2;
5线段:L2-1、L2-2、L2-3、L2-4、L2-5。
Net3的组成:
6个点:S3、A3、B3、C3、D3、E3;
5线段:L3-1、L3-2、L3-3、L3-4、L3-5。
(3)定义:
Net1:Zi(L1-1L1-2L1-3L1-4L1-5);
Net2:Zi(L2-1L2-2L2-3L2-4L2-5);
Net3:Zi(L3-1L3-2L3-3L3-4L3-5)。
(4)根据两点确定一条直线,则L1-1:ax+by+c=0(S1,A1),a、b分别x、y的系数,c为常数项,进而可以确定Net1~Net3的方程为:
Net1:
Zi(a1_1x+b1_1y+c1_1=0(S1,A1))
Zi(a1_2x+b1_2y+c1_2=0(A1,B1))
Zi(a1_3x+b1_3y+c1_3=0(B1,C1))
Zi(a1_4x+b1_4y+c1_4=0(C1,D1))
Zi(a1_5x+b1_5y+c1_5=0(D1,E1))
Net2、Net3按理类推。
(5)得到Net1~Net3为由只通过确定两点的直线方程的集合,通过对方程参数调整,对PCB走线间距优化调整。
步骤4中数学模型转化为PCB数据信号,就是以上过程的逆过程。
如图13所示,开发出的allegro工具的界面中,箭头表示方向,右侧数据为间距参数的调整、中心间距、边到边、等间距等等,箭头与Value就是矢量D,鼠标画出的路径代表方向,左边的窗口Value:25代表矢量D值为25,方向为箭头所示。
关于过程中涉及的程序代码已是较为成熟的技术,本实施例中采用的部分程序代码如下:
axlCmdRegister(“equal cline”ˋmr_equal_cline)
;################################################
defun(mr_equal_cline()
)
defun(equal_form(equal_file)
)
defun(equal_form_Action(form)
)
defun(act_dir()
)
defun(all_cline()
)
defun(find_cline()
)
;################################################
;Ax+By+C=0
;A=y2-y1
;B=x1-x2
;C=x2*y1-x1*y2
;ax?
;ay?
;k=y2-y1/x2-x1
;k1*k2=-1
;################################################
defun(act_cline()
)
其中,上述代码为整体的功能函数模块,find_cline定义了通过人机交互参数找到需要处理的在PCB上的走线,act_cline为通过人机交互参数调整优化走线后转化成PCB信息的模块。
下面为将PCB信息转化成直线方程模块的部分代码行:
item1_e_xy=cadr(item1_xy)
item1_e_x=nth(0item1_e_xy)
item1_e_y=nth(1item1_e_xy)
A1=item1_e_y-item1_s_y
B1=item1_s_x-item1_e_x
C1=item1_e_x*item1_s_y-item1_s_x*item1_e_y
;aclMsgPut(“L1:%L*x+%L*y+%L=0%L”A1 B1 C1 iteml_xy)
item2=nth(1all_cline_table[i])
item2_xy=item2->startEnd
item2_s_xy=car(item2_xy)
item2_s_x=nth(0item2_s_xy)
item2_s_y=nth(1item2_s_xy)
item2_e_xy=cadr(item2_xy)
item2_e_x=nth(0 item2_e_xy)
item2_e_y=nth(1 item2_e_xy)
A2=item2_e_y–item2_s_y
B2=item2_s_x–item2_e_x
C2=item2_e_x*item2_s_y–item2_s_x*item2_e_y
;aclMsgPut(“L2:%L*x+%L*y+%L=0%L”A2 B2 C2 item2_xy)
Item3=nth(2 all_cline_table[i])
Item3_xy=item3->startEnd
Item3_s_xy=car(item3_xy)
Item3_s_x=nth(0 item3_s_xy)
Item3_s_y=nth(1 item3_s_xy)
Item3_e_xy=cadr(item2_xy)
Item3_e_x=nth(0 item3_e_xy)
Item3_e_y=nth(1 item3_e_xy)
A3=item3_e_y–item3_s_y
B3=item3_s_x–item3_e_x
C2=item3_e_x*item3_s_y–item3_s_x*item3_e_y
如图14所示,在日常生活中,常常涉及到对PCB检测铜箔区域1通流能力检查(铜箔宽度检查)。
在PCB通流能力检查的过程中,通过直线方程:a'x+b'y+c'=0对铜箔进行扫描,即扫描线为a'x+b'y+c'=0,其中a’、b’分别为x和y的系数,c’为常数项。a’、b’c’是动态的变量,实际上,扫描线a'x+b'y+c'=0是在一个个坐标点进行360度旋转,而直线的旋转是通过调整a’、b’c’实现的。
强制直线方程过黄色高亮的铜箔区域内的一点,即检测点,检测点按X Y方向增量的形式变动,精度高则增量小,反之增量大。
在每一个检测点,扫描线a'x+b'y+c'=0从0-360度按角度增量变化,也就是直线斜率K的调整,精度高则角度增量小,反之角度增量大。
记录扫描线a'x+b'y+c'=0通过扫描区域内最短的直线方程,相应就是铜箔的最小宽度,从而计算出铜箔的通流能力。
应当理解的是,对本领域普通技术人员来说,可以根据上述说明加以改进或变换,而所有这些改进和变换都应属于本发明所附权利要求的保护范围。
上面结合附图对本发明专利进行了示例性的描述,显然本发明专利的实现并不受上述方式的限制,只要采用了本发明专利的方法构思和技术方案进行的各种改进,或未经改进将本发明专利的构思和技术方案直接应用于其它场合的,均在本发明的保护范围内。