一种自动导出PCB线长并产生关系报表的方法与流程

文档序号:12887406阅读:408来源:国知局
一种自动导出PCB线长并产生关系报表的方法与流程

本发明涉及pcb设计领域,具体的说,是涉及一种自动导出pcb线长并产生关系报表的方法。



背景技术:

在pcb设计过程中,信号是否超出要求的长度值一直影响设计人员。所谓长度值超长,可以认为声音超出范围后产生失真,所以对于这个问题尽可能在布线的初期进行评估确认。但是pcb设计为协同完成的工作,为了加快初期布线速度,一般都会选择多人进行作业,这样就导致原来一人评估完成的内容有可能中途发生变化。这种变化如果到后期才发现问题,有可能会造成大面积的返工。

在以往的设计中,都以人工将所有时序等长信号提取到excel中,然后进行信号数值的提取,并进行分支信号数值相加得到总长度,最后需要人工进行关系式的设定。这些工作在数据比较少的情况下对人工的考验较小,但是随着数据增加,如何确认信号名输入是否正确、数值相加是否正确、关系判定的设置是否正确等,这些都对评估工人提出较大的考验,无法准确判断会导致后期还需要其它人力再次投入进行反复检查和测试,进而影响了整个设计工作的进行。

上述缺陷,值得解决。



技术实现要素:

为了克服现有的技术的不足,本发明提供一种自动导出pcb线长并产生关系报表的方法。

本发明技术方案如下所述:

一种自动导出pcb线长并产生关系报表的方法,其特征在于,建立整个项目信号时序等长的bus,确认信号所有连接器件情况,对器件分支的xnet进行设定;链接产生xls表并进行符号转换,产生信号的长度报表;对xls内所有bus建立不同列表,填写时序等长判定值。

根据上述方案的本发明,其特征在于,具体包括以下步骤:

步骤1、建立需要对整个项目信号时序等长的bus处理,将信号时序都录入到allegro软件中;

步骤2、整理出所有信号串接电阻信号的关系,对上下拉电阻进行排除,保留对接电阻,并对电阻分支进行xnet设定;

步骤3、提取allegro的相关信息,再按相应的格式对xls档进行输出,并对allegro的report进行所有信号的长度输出,粘到excel中,进行符号的替换,使其导出的信号名得到相应的长度信息;

步骤4、对信号和长度的信息进行分类处理,放置到excel的各工作表中;

步骤5、进行信号分支和总net的max、min长度,分支和总net的误差数值的填写,而后产生error和pass两个判定来确认项目时序等长是否符合要求。

进一步的,在所述步骤1中,在bga的pin内提取bus的信号,或者通过输出、输出连接器来提取bus的信号;通过allegro下的edit->property来框选需要的信号,选择assign_route_layer参数来设定bus名。

进一步的,在所述步骤2中,对信号不是两个点产生net长度,而是中途有分支产生net的信号电阻进行xnet设定。

更进一步的,通过allegro下的analyze->si/emisim->modelassignment程序,并选择相应的电阻进行xnet设定。

进一步的,在所述步骤3中,运用skill的编程功能对allegro内的数据进行提取,将得到的数据输入到excel中,而且对xls档中数值相加,关系判定直接进行编入。

进一步的,在所述步骤5中,产生excel报表后对报表进行排版,关系式填写的操作。

更进一步的,在排版、填写的过程中具体包括:

(1)插件工作表sheet1,然后用allegro跑出所有长度报表,贴入工作表中;

(2)对每个bus进行不同工作表分类,形成统一的格式;

(3)填写相应max、min长度、长度误差的判定值;

(4)填写bus名、信号及对应的长度;

(5)排版bus分类栏,项目所有信号与长度栏;

(6)填写信号的长度总长、max值、group误差、diff误差、关系error及pass区。

根据上述方案的本发明,其有益效果在于,本发明使用skill程序将allegro和execl两个软件相结合,产生无缝链接;本发明使用程序使其按格式化处理,对信号的快速提取性、准确性、快速修正性、可延用性等都得到解决,减少人工输入的错误,加快复查人员投入的时间,从而提高工作效率。

附图说明

图1为本发明的流程图。

图2为本发明allegro软件操作部分的流程图。

图3为本发明skill程序部分的流程图。

图4为本发明excel软件操作部分的流程图。

图5为本发明填写bus名、信号、长度等的界面图。

图6为本发明排版bus分类栏、项目所有信号与长度栏的界面图。

图7为本发明填写长度总长max值、误差、关系error、pass区等的界面图。

具体实施方式

下面结合附图以及实施方式对本发明进行进一步的描述:

如图1所示,一种自动导出pcb线长并产生关系报表的方法,建立整个项目信号时序等长的bus,确认信号所有连接器件情况,对器件分支的xnet进行设定;链接产生xls表并进行符号转换,产生信号的长度报表;对xls内所有bus建立不同列表,填写时序等长判定值。具体包括以下步骤:

1、建立需要对整个项目信号时序等长的bus处理,将信号时序都录入到allegro软件中。

如图2所示,在bga的pin内提取bus的信号,或者通过输出、输出连接器来提取bus的信号;通过allegro下的edit->property来框选需要的信号,选择assign_route_layer参数来设定bus名。

2、整理出所有信号串接电阻信号的关系,对上下拉电阻进行排除,保留对接电阻,并对电阻分支进行xnet设定。

对信号不是两个点产生net长度,而是中途有分支产生net的信号电阻进行xnet设定,通过allegro下的analyze->si/emisim->modelassignment程序,并选择相应的电阻进行xnet设定。

3、提取allegro的相关信息,再按相应的格式对xls档进行输出,并对allegro的report进行所有信号的长度输出,粘到excel中,进行符号的替换,使其导出的信号名得到相应的长度信息。

如图3所示,运用skill的编程功能对allegro内的数据进行提取,将得到的数据输入到excel中,而且对xls档中数值相加,关系判定直接进行编入。下面给出本实施例中采用的具体操作代码,代码分成6大区块:

(1)defunnetlengthlist()窗口设定与显示区块;

(2)netlengthlist_formplay()建立窗口字符,按钮等区块;

(3)netlengthlist_key_action(form)窗口内按钮运行区块;

(4)netlengthlist1()主程序区块,

对allegro所产生的数据导入程序中。对是否存在xnet进行区分。对diff和非diff进行区分。信号存在分支时,对前端信号和后端信号的顺序进行分析;

(5)netlengthlist_net()单线信号相加,关系式判定格式处理区块;

(6)netlengthlist_diff()diff信号相加,关系式判定格式处理区块。

具体代码如下:

foreach(f12_1f12_2

xneta_1=list()

xneta_2=axlselectbyproperty("net""assign_route_layer"f12_1)~>xnet

while(xneta_2

xneta_1=append1(xneta_1car(xneta_2))

xneta_2=remd(nthelem(1xneta_2)xneta_2)

);排除相同内容

a=append1(acons(f12_1xneta_1))

);把所有assign_route_layer分类并提取成xnet形式。

if(bb->diffpair==nil;对没有xnet信号与长度进行处理

then

num_1=0

abcd="acegikmoqsu"

foreach(ccbb->groupmembers

num_1=num_1+1

fprintf(writeoutfilecc->name)

fprintf(writeoutfile",")

indd=strcat("=vlookup("nthelem(num_1parsestring(abcd""))sprintf(nil"%d",num_all)"@sheet1!$a$1:$i$20000@2@false)")

fprintf(writeoutfileindd)

fprintf(writeoutfile",")

)

for(x114-length(bb->groupmembers)*2

fprintf(writeoutfile",")

)

netlengthlist_net()

num_all=num_all+1

fprintf(writeoutfile"\n")

else

if(bb->diffpair!=nil;对有xnet信号与长度进行处理

then

foreach(kk1k1

if(car(bb->diffpair->groupmembers)==kk1||cadr(bb->diffpair->groupmembers)==kk1;保证同信号不进行两次处理

then

del1=1

)

)

if(del1==0

then

name1=nil

name2=nil

foreach(cccar(bb->diffpair->groupmembers)->groupmembers

name1=append1(name1cc->name)

);diff+xnetp进行合并

foreach(cccadr(bb->diffpair->groupmembers)->groupmembers

name2=append1(name2cc->name)

);diff+xnetn进行合并

num_1=0

abcd="acegikmoqsu"

foreach(name_1sort(name1nil);跑出diff+xnetp信号列表

num_1=num_1+1

fprintf(writeoutfilename_1)

fprintf(writeoutfile",")

indd=strcat("=vlookup("nthelem(num_1parsestring(abcd""))sprintf(nil"%d",num_all)"@sheet1!$a$1:$i$20000@2@false)")

fprintf(writeoutfileindd)

fprintf(writeoutfile",")

)

for(x114-length(car(bb->diffpair->groupmembers)->groupmembers~>name)*2

fprintf(writeoutfile",")

)

diffa_1=0

diffa_2=1

netlengthlist_diff()

num_all=num_all+1

fprintf(writeoutfile"\n")

num_1=0

abcd="acegikmoqsu"

foreach(name_2sort(name2nil);跑出diff+xnetn信号列表

num_1=num_1+1

fprintf(writeoutfilename_2)

)

(defunnetlengthlist_net();xls档内单信号关系设定,

hh=sprintf(nil"%d",num_all)

fprintf(writeoutfilestrcat("=b"hh"+d"hh"+f"hh"+h"hh"+j"hh"+l"hh"+n"hh));所有相加

fprintf(writeoutfile",")

fprintf(writeoutfilestrcat("=if($p$"sprintf(nil"%d",input_n)"=\"na\"@\"\"@if($o$"sprintf(nil"%d",input_n)"-o"sprintf(nil"%d",num_all)"<=$p$"sprintf(nil"%d",input_n)"@\"pass\"@\"error\"))"));组误差

fprintf(writeoutfile",")

(defunnetlengthlist_diff();xls档内diff信号关系设定,

hh=sprintf(nil"%d",num_all)

fprintf(writeoutfilestrcat("=b"hh"+d"hh"+f"hh"+h"hh"+j"hh"+l"hh"+n"hh));所有相加

fprintf(writeoutfile",")

fprintf(writeoutfilestrcat("=if($p$"sprintf(nil"%d",input_n)"=\"na\"@\"\"@if($o$"sprintf(nil"%d",input_n)"-o"sprintf(nil"%d",num_all)"<=$p$"sprintf(nil"%d",input_n)"@\"pass\"@\"error\"))"));组误差

fprintf(writeoutfile",")

fprintf(writeoutfilestrcat("=if($q$"sprintf(nil"%d",input_n)"=\"na\"@\"\"@if(o"sprintf(nil"%d",num_all)"=\"\"@\"\"@if(o"sprintf(nil"%d",num_all)"<$q$"sprintf(nil"%d",input_n)"@\"pass\"@\"error\")))"));分段max

fprintf(writeoutfile",")

if(diffa_1!=diffa_2;差分两根信号误差。

then

fprintf(writeoutfilestrcat("=if($r$"sprintf(nil"%d",input_n)"=\"na\"@\"\"@if(o"sprintf(nil"%d",num_all)"=\"\"@\"\"@if(abs(o"sprintf(nil"%d",num_all)"-o"sprintf(nil"%d",num_all+1)")<=$r$"sprintf(nil"%d",input_n)"@\"pass\"@\"error\")))"))

)

4、对信号和长度的信息进行分类处理,放置到excel的各工作表中。

5、进行信号分支和总net的max、min长度,分支和总net的误差数值的填写,而后产生error和pass两个判定来确认项目时序等长是否符合要求。

如图4所示,产生excel报表后对报表进行排版,关系式填写的操作,具体包括:

(1)插件工作表sheet1,然后用allegro跑出所有长度报表,贴入工作表中;

(2)对每个bus进行不同工作表分类,形成统一的格式;

(3)填写相应max、min长度、长度误差的判定值;

(4)如图5所示,填写bus名、信号及对应的长度;

(5)如图6所示,排版bus分类栏,项目所有信号与长度栏;

(6)如图7所示,填写信号的长度总长、max值、group误差、diff误差、关系error及pass区。

应当理解的是,对本领域普通技术人员来说,可以根据上述说明加以改进或变换,而所有这些改进和变换都应属于本发明所附权利要求的保护范围。

上面结合附图对本发明专利进行了示例性的描述,显然本发明专利的实现并不受上述方式的限制,只要采用了本发明专利的方法构思和技术方案进行的各种改进,或未经改进将本发明专利的构思和技术方案直接应用于其它场合的,均在本发明的保护范围内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1