Allegro 基于MySQL 数据库的数据录入系统设计*

2022-06-07 08:56深圳
电子技术应用 2022年5期
关键词:板卡进程网页

刘 涛,付 深圳,张 柱,周 冬

(1.高效能服务器和存储技术国家重点实验室,山东 济南 250014;2.浪潮电子信息产业股份有限公司,山东 济南 250014)

0 引言

近几年随着新基建加快落地,云、大数据、人工智能、区块链、5G 等新技术与实体经济将加速融合,随之带来的是计算量的增加。在当前数据为王的时代,计算无处不在,计算量每几个月翻一倍。Open AI 根据这些年的实际数据进行拟合,发现最先进AI 模型的计算量每3、4 个月翻一番,也就是每年增长10 倍,比摩尔定律2 年增长一倍快得多[1]。数据量的计算离不开背后服务器集群的支撑。

公司每年研发的PCB 板卡数量逐渐增加,为了后续设计参考和设计统计,每张板卡的详细设计数据都需要记录。目前公司都是通过工程师手动录入到Windchill、RDM 等研发管理系统中,由于板卡数据量多,人工统计、人工录入大大降低了工作效率,并且人工操作的出错率比较高,而且同一张板卡处于不同设计阶段,板卡设计信息也随之变化,板卡信息重复统计、重复录入也加重了工程师的工作负担。

目前PTC 公司旗下Windchill 与Cadence Concept HDL产品集成度比较高,Windchill 可以支持产品开发生命周期,因而允许在Windchill 和ERP 系统之间互换零件原件、材料清单和工程变更信息。在整个产品制造过程中,产品生命周期事件会自动触发与产品有关的信息的互换,并且它还能保证所有相关系统都同步,包括Concept HDL 库。Windchill 更擅长的是产片与物料、零部件BOM的管理[2]。

上述解决方案对于PCB 设计软件Cadence Allegro PCB Editor 集成度较低。因此,针对此问题,本文通过研究学习Allegro 二次开发,结合IPC 通信原理,研究并设计Allegro 基于MySQL 数据库的数据录入系统。

1 开发环境

1.1 SKILL 语言简介

SKILL 语言是Cadence 提供的二次开发语言,它是一种基于通用人工智能语言——LISP 的交互式高级编程语言(LISP 即List Processing(表处理),是最早和最终要的符号处理编程语言之一,它于1958 年由美国的J.McCarthy提出,LISP 在人工智能AI 方面获得广泛应用)[3]。SKILL可以于底层系统交互,同时Cadence 也提供了各个工具的丰富接口,用户可以通过SKILL 语言来访问,可以开发自己的基于Cadence 平台的工具[4-6]。

1.2 AXL-SKILL 接口函数

AXL-SKILL 接口函数是Cadence 专门为开发者提供的用于Allegro 软件二次开发的API 接口函数,专门用于访问Allegro PCB 编辑器数据库及其显示用户界面。AXL-SKILL 函数随Allegro PCB Editor 软件启动加载,可通过SKILL 核心编程语言调用AXL-SKILL 函数访问Allegro PCB 编辑器数据库,并对数据库进行操作。用户可以通过自定义菜单或者控制台输入命令的方式调用编写好的程序[7]。底层数据交互原理如图1所示。

图1 AXL-SKILL 函数交互原理图

1.3 Cadence IPC 通信原理

Cadence 提供了进程间通信(IPC 通信)函数,它是基于PIPE 管道通信原理,是一种半双工的通信方式。管道将一系列进程的标准输入输出链接起来,其中每一个进程的输出被直接作为下一个进程的输入[6]。通过SKILL 核心编程语言开发接口运行子进程建立通信通道,进而实现SKILL 程序与系统级编程通信。这种通信方式可通过标准IO 接口与其他应用程序通信,通过发送kill、interrupt、stop 和continue 等信号控制应用程序,能够在远程机器上运行子程序,在父进程中允许应用程序执行SKILL 命令[8-9]。父进程通过写入子进程的stdin 通道并从其stdout 和stderr 通道中读取来与子进程通信。

SKILL 调用IPC 接口函数,将要发送的数据放在内存缓存区,通过系统调用进入内核缓存区。子进程在接收数据时在自己的用户空间开辟一块内存缓存区,通过系统调用将数据从内核缓存区拷贝到接收进程的内存缓存区。这样就实现了SKILL 与子进程的一次数据传输,如图2 所示。

图2 Cadence IPC 通信原理

2 总体设计

2.1 总体流程

系统分为两个流程,一个是前端数据采集流程,另一个是数据网页展示统计流程。流程如图3 所示。

图3 Allegro 录入系统流程图

(1)前端数据采集

前端数据采集模块用户打开Allegro PCB Editor,点击菜单数据采集工具,弹出用户登录界面,首次登录需要进行注册。输入用户名和密码登录,后台信息验证成功,弹出信息采集工具UI 界面,信息采集工具会与Allegro软件底层数据交互,获取当前PCB Board File 文件中的板卡尺寸信息、板卡引脚数量、板卡叠层、板卡厚度、板卡料号、项目名等信息,并显示在UI 界面上,用户确认无误后进行提交上传到后台,完成板卡信息自动采集。

(2)数据网页显示

用户可通过网页端登录,查看统计信息,根据使用人员分配不同权限,不同权限查看内容不同。用户可以查看统计数据,进行数据筛选、数据统计等操作。

2.2 系统设计

(1)数据库建设

数据库主要完成数据的记录、清理、数据解析,并对用户登录进行权限验证,对用户需求进行统计、分类。

在服务器上安装MySQL 数据库,创建数据库账号和密码,并创建两个数据表,一个用于身份信息验证,另一个用于记录采集数据信息,设计数据库表如下:

①用户基本信息及登录权限数据表:用于存储用户基本信息、用户账号和密码等信息。该数据表是整个系统的基础。

②录入信息统计表:用于保存采集模块采集的信息,如板卡项目、板卡料号、板卡时间、板卡引脚数量、板卡备份路径、板卡叠层等信息。

(2)模块划分

系统主要核心模块分为前端数据采集模块和网页数据展示模块,前端数据采集模块采集板卡数据通过接口发送到数据库,网页数据展示模块获取数据库信息显示。前端数据采集模块包括身份注册模块、身份验证模块和板卡信息采集模块,网页显示模块包括身份验证模块、数据显示模块、数据筛选模块、数据统计模块。Allegro 数据录入系统模块如图4 所示。

图4 Allegro 数据录入系统模块

3 关键技术

本系统需要进行不同进程间通信,使用的是IPC 通信方式,要解决的关键问题是IPC 通信协议制定以及通信接口的开发。

3.1 通信协议

通信协议是指双方实体完成通信或服务所必须遵循的规则和约定[8]。通信协议一般都有一个HEADER,即“头”字节,接下来是地址,然后是数据。发送端发送信号,接收端接收到信号进行解析,并根据“头”字节触发相应的事件,告诉进程“做”什么,而数据data 可以补充做的内容以及具体的参数[10-12]。进程间相互驱动的协议数据格式如表1 所示。

本系统采用字符串方式解析,触发的事件主要是对MySQL 数据库的读写、删除、查询等操作。一共定义7 类触发事件,如表2 所示。

表2 触发事件对照表

接收端接收到发送端命令,对命令进行解析,并对数据库进行操作,返回相应值,如表3 所示。

表3 接收端返回值

3.2 接口设计

接口设计是系统的核心功能,是实现客户端Allegro软件与MySQL 数据库连接的关键,客户端Allegro 软件使用SKILL 语言编写接口,Python 语言与服务端MySQL数据库连接,Allegro 与MySQL 数据库通过SKILL 接口、IPC 通信、Python 接口连通。通信方式如图5 所示。

图5 通信方式

(1)SKILL 进程之间通信函数[13]:

ipcBeginProcess(t_command)开始一个SKILL 的进程,通过stdin/stdio 与子程序进行通信;

ipcReadProcess(o_childId)从一个进程读取数据,读取来自子程序传送过来的数据;

ipcWriteProcess(o_childId)向子程序通过stdin 写数据,发送的字符串以” ”为结束符;

ipcCloseProcess(o_childId)关闭子程序。

函数调用示意图如图6 所示。

图6 SKILL 函数调用示意图

(2)Allegro 软件数据发送接口,发送数据接口核心代码如下:

子进程接口使用Python 编程,调用sys 库对缓冲区进行读写,获取缓冲区数据并对其解析,根据解析命令对数据库进行相应操作。

子进程读取数据接口核心代码如下:

数据解析:子进程获取到数据后,对数据进行解析,并根据表1 触发事件对数据库进行操作。

4 功能实现

用户打开Allegro 软件选择录入系统菜单,点击“注册”按钮进行身份信息注册。填写账号、密码、部门、二级处、联系方式,点击“提交”按钮,完成信息注册。数据库中可查看提交的信息,即说明注册成功,如图7 所示。

图7 身份信息注册

前端使用SKILL 语言编程,集成到Allegro 软件菜单中,首次登录进行信息注册,登录成功后调用数据采集模块,数据采集模块通过AXL-SKILL 函数实现与Allegro软件底层交互,获取板卡信息。通过IPC 通信发送到后台数据库中。

在客户端进行身份验证,用户打开Allegro 软件,填写身份信息进行验证。身份验证成功后,调用采集模块,自动获取板卡信息,包括尺寸、叠层数量、叠层厚度、Pin数量、器件数量等信息,用户确认无误后提交。数据库中可查看到板卡信息,即说明数据采集正确,如图8 所示。

图8 板卡信息采集

用户可通过网页登录到后台,后台根据不同用户控制不同权限,权限低的用户只能查看自己提交的信息,权限高的用户可以查看所有人员提交。用户可以根据时间段筛选,对所有信息可进行图形统计,如图9 所示。

图9 网页显示

5 结论

本文设计了Allegro 基于IPC 通信与MySQL 数据库进行通信的系统,通过研究IPC 通信原理,制定通信协议,编写Allegro 与MySQL 数据库通信接口,在Allegro 中对MySQL 数据进行读写、删除等操作,实现底层数据获取、数据录入、数据展示等功能。

猜你喜欢
板卡进程网页
MACH2系统板卡程序下装平台的研制
基于HTML5与CSS3的网页设计技术研究
车载控制器CVRE板卡显红故障分析及处理
债券市场对外开放的进程与展望
改革开放进程中的国际收支统计
基于CSS的网页导航栏的设计
基于HTML5静态网页设计
基于URL和网页类型的网页信息采集研究
基于组态王软件和泓格PIO-D64 板卡的流水灯控制
一种基于光纤数据传输的多板卡软件程序烧写技术