描述层次系统的框架

salamandra的Python项目详细描述


蝾螈项目

仍处于隐身模式

Salamandra是可扩展的Pythonic 用于加载、分析、生成和存储网络列表的基础设施。 它托管在Enics的gitlab存储库中。 有关介绍性演示,请参见on the git 或者这个slide show。 尽管仍在阿尔法测试中,火蜥蜴被许多人认为是“下一个大东西”。 因此,这个页面的变化比wiki中的其他页面更频繁(比如duh),所以请继续关注。在

获取火蜥蜴-设置

Salamandra在gitlab下托管在http://gitlab.local/noytzach/salamandra。在

要安装Salamandra,请使用pip install salamandra

如果你想要一个特定的版本,你可以做pip install salamandra==#version#

要在本地安装特定版本(仅限用户),可以将其安装在virtualenv

或者pip install --user salamandra==#version# 它将把它安装到平台的Python用户安装目录中。在

通常在Linux上是~/.local/,在Windows上是%APPDATA%Python

基本命令

注意:蝾螈只支持Python3。

蝾螈是面向对象的。四个基本类是ComponentNetParam和{}。下面的代码创建一个NMOS晶体管骨架。在

import salamandra as slm
nmos = slm.Component('nmos')
nmos.add_pin(slm.Pin('source'))
nmos.add_pin(slm.Pin('drain'))
nmos.add_pin(slm.Pin('gate'))
nmos.add_pin(slm.Pin('body'))

上面的nmos组件没有内部结构,但可以用作更高级别的叶节点, 如下例所示。注意InputOutput和{}的用法, 它们是Pin的子类,在数字设计中暗示了管脚的方向。在

^{pr2}$

NMO、电阻器、电容器等元件。 可能有宽度、长度等参数。 为了使组件与Netlist导出兼容,应该将这些参数添加到组件中。 下面的代码演示如何向组件添加Param。在

#adding new params to inv
nmos.add_prarm(Param('W',200E-9))
nmos.add_param(Param('L',60E-9))
nmos.add_param(Param('mult',2))
nmos.add_param(Param('nf')) #default value is 0 

#changing a specific parameter value in the inv component
nmos.set_param('nf',2)

导出网络列表

Salamandra目前支持将网络列表导出为verilog netlist或spectere netlist(spice的cadence版本)。 write_verilog用于将组件导出为verilog netlist。 函数返回将组件定义为verilog模块的行的列表。 下面的代码将把verilog netlist打印到STDOUT。在

for l in riscv.write_verilog():
   print(l)

同样,要导出到文件中,请使用如下方法:

f = open('sfpga.v', 'w')
for l in sfpga.write_verilog():
   f.write(l+'\n')
f.close()

通过类似的方式,您可以使用write_nunetlist编写spectre netlist,如下所示:

for l in comp.write_netlist():
   print(l)

请注意,如果您想使用火蜥蜴作为您需要的幽灵网络列表 为基本组件提供有意义的名称(适合流程) 并附上上述相关参数。在

导入网络列表

Salamandra目前支持从verilog netlist导入网络列表。 verilog2slm用于将verilog网络列表作为组件导入。 以下代码将读取verilog netlist并将其转换为salamandra中的组件:

components = verilog2slm_file('verilog_file.v')

它还支持读取STD单元(只需要模块的I/o)

std_components = verilog2slm_file('std_cells.v', is_std_cell=True)

如果你想启用隐式连接,你也可以 通过标志implicit_wire=True启用它

获得支持

其他人认为火蜥蜴是他们自己的追随者。 你可以随时请求他们的帮助或祝福。 虽然支持是免费的,但微笑或小额捐款总是受欢迎的。在

如果你认为你应得的话,请自由地加入到上面的独家名单中。在

学术界的蝾螈

2018年春,课程作业 Advanced Digital VLSI Design IIBar-Ilan university中给出, 是基于蝾螈的基础设施。 从那以后,这在任何其他著名的学术机构都没有发生过。在

将Salamandra创建/更新为python包

首先在包的根目录中创建/更新一个名为setup.py的文件 以特定格式(参见setup.py上的示例)

然后,要创建一个二进制分布, 你需要使用^{下载wheel包

然后创建分发运行:python setup.py bdist_wheel

它将在dist目录中创建一个wheel文件

您只需使用pip install /path/to/wheelfile.whl安装它

要将其上载到PyPI,您需要twine包,所以首先使用pip install twine安装它

然后使用twinetwine upload dist/* --config-file .pypirc上传您的包

现在你可以检查一下https://pypi.org/project/salamandra 并使用pip install salamandra将其安装到任何您想要的地方

另请参见

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
带有Spring数据的java筛选器谓词计数   java根据行和列和还原01矩阵   java如何清除面板?   java在SpringMVC中部署多个环境   java无法让我的密码实验室工作   java Android:如何获取箭头按钮?   java需要关于hibernate中无状态会话的足够信息   JAVAlang.NoClassDefFoundError与两个BouncyCastle罐子   java如何使用jsp和servlet更新数据库中的多个记录   java如何分离所有公式并使其成为子类?   java包含旋转时更改布局的子项   Android中的java SSH反向隧道   即使在springboot和H2中出现404错误之后,java数据也会被保存和删除   java使用安卓 intent将文本和图像共享到instagram   java哪里是Servlet映射中的无效内容