Fuxi软件是基于公司自研芯片进行编程的软件,核心功能是提供平台和可视化工具,为用户进行fpga设计提供便利。本人开发和维护的功能有以下几块:
1. Console控制台:(1)收集和管理插件和工具的输出消息,支持如保存,加载历史日志,筛选,查找等功能;(2)通过命令行的形式运行工具
2. Flow Runs工具:(1)控制工作流的执行流程;(2)监控工作流的状态
3. FpgaEditor:(1)分级显示芯片细节,最大程度可显示芯片端口信息;(2)支持可视化编辑单元器件
FpgaEditor的实现:
1)Place Data:基于文件驱动的数据结构,保存Device的Arch信息
2)Place Model:数据和UI的中间件,生成和控制Placer View上的Graphics Items
3)Tile Load Thread Handler:加载线程管理类,负责管理包括arv,ara,apa等文件的加载过程,并返回加载结果
4)Tile Create Thread Handler:处理线程管理类,负责对加载线程返回的结果进行处理,处理结果返回给UI进行显示
5)GuiDesignDataInterface:保存读取到的arv,apa等文件信息
6)Fpga File Interface:管理工具所需要的所有文件
7)GUI Function Flag:管理Placer View和Router View之间共享状态的类,通过对共享状态的单独处理,降低代码耦合性,提高工具响应速度
8)Instance Lock,Instance Highlight,Instance Usage,Instance Movement,Instance Selection,Instance Mark,Metrics Handler,NetLine Handler:功能交互管理类,保存功能的数据和状态信息,同时负责与Placer View和Router View交互,使功能独立于操作窗口,降低耦合性,并提高代码复用性
经优化后的工具:大型项目占用内存由10g降低至2g左右,打开时间由130秒左右降低至25秒左右,关闭时间由12秒左右降低至3秒左右,同时操作流畅度大幅提高