用于分析和转换网络列表的Python包
spydrnet的Python项目详细描述
分析和转换netlists的灵活框架。填补了FPGA在可靠性和研究上的一个重要空白。目前作为纯Python包提供。在
- 网站和文档:https://byuccl.github.io/spydrnet
- 邮件列表:https://groups.google.com/forum/#!forum/spydrnet-discuss
- 源:https://github.com/byuccl/spydrnet
- 错误报告:https://github.com/byuccl/spydrnet/issues
简单的例子
SpyDrNet可以用来从头开始创建网络列表。因为它是一个低级的框架,所以手工创建netlist可能很乏味(很像在汇编中编写高级应用程序)。为了帮助快速生产,为常见的网络列表格式提供了解析器和编写器。目前只支持EDIF,但路线图包括结构化Verilog、structural VHDL、Verilog Quartus映射文件(Intel’s VQM)和JSON。在
正在加载示例网络列表
包中包含了几个示例网络列表,以介绍框架、其特性和功能。要列出和加载这些网络列表,请修改以下示例:
>>>importspydrnetassdn>>>sdn.example_netlist_names['4bitadder','8051',...,'zpu4']>>>netlist=sdn.load_example_netlist_by_name('4bitadder')
正在解析网络列表
^{pr2}$查看与任何Netlist元素关联的数据
>>>netlist.data{'.NAME':'adder','EDIF.identifier':'Z4bitadder',...}
列出网络列表中的库
>>>list(library.nameforlibraryinnetlist.libraries)['VIRTEX','UNILIB','work']
列出库中的定义
>>>library=netlist.libraries[2]>>>list(definition.namefordefinitioninlibrary.definitions)['adder']
列出定义中的端口、电缆和实例
>>>definition=library.definitions[0]>>>list(port.nameforportindefinition.ports)['data1(3:0)','data2(3:0)','answer(3:0)','clk','reset','enable']>>>list(cable.nameforcableindefinition.cables)['answer_1(0)','answer_1(1)','answer_1_(2)','answer_1(3)',...]>>>list(instance.nameforinstanceindefinition.children)['un3_answer1_axbxc3','un2_answer2_axbxc3','reset_c_i',...]
组成网络列表
此示例按给定名称将网络列表导出到EDIF格式的网络列表文件中。在
>>>sdn.compose(netlist,'<filename>.edf')
也可使用以下等效代码。在
>>>netlist.compose('<filename>.edf')
其他示例
文档中提供了有关网络列表创建、分析和转换的其他示例。在
安装
SpyDrNet的稳定版本可以使用pip安装:
> pip install spydrnet
要使用所有可选依赖项从PyPI安装:
> pip install spydrnet[all]
有关更多安装说明,请参见安装.rst。在
虫子
bug可以在issues page上报告,也可以通过fork/pull请求修复。所有的改变都是受欢迎的。关于新特性的讨论可以在mailing list上找到。在
简史
BYU Configurable Computing Lab主动维护BYU EDIF Tools-一个用于创建、修改或分析EDIF网络列表的Java API。这些工具绑定到EDIF网络列表格式,并提供JEDIF工具,能够使电路扁平化(通过删除分层组织)并应用容错技术,如triple modular redundancy (TMR)。SpyDNet的开发始于2016年,其理念是创建一个可访问、独立于格式的网络列表分析和转换工具。底层的中间数据结构被设计为保留适当的网表关系作为通用网表,同时允许保留格式特定的构造。一个语言无关的原型被开发出来,这个原型很快就在实验室中用于网络列表分析和可靠性转换研究。这里介绍了一个更成熟的(尽管仍有增长空间)工具。在
设计说明
我们试图围绕可扩展性和模块化的原则来构建这个工具。我们注意以有组织的方式将项目的不同部分分开。在
如何作出贡献
如果这个工具对您有用,或者您有新的特性想法,您可以随意提出请求,或者查看问题以了解如何做出贡献。我们也欢迎新的想法、错误修复和建议(请参见贡献.rst)。在
特别感谢
特别感谢NetworkX-“一个用于创建、操作和研究结构的python包,这个成熟的项目已经被用作SpyDrNet文档和代码结构的模板。作为一个用于分析电路节点之间关系的健壮和完整的库,它也节省了大量的精力。在
许可证
根据BSD 3条款许可发布(参见许可证):
Copyright (C) 2019, Brigham Young University All rights reserved.
- 项目
标签: