一、简要说明
python是很好用的一门语言,功能也越来越强大。慢慢的,它的触角也伸到了FPGA上,最近有传言PYNQ,我先呵呵一下,毕竟新东西,想打破之前的思维另立门户,还有很长一段路要走的。
python有第三方支持的pyverilog库,目前已经亮相了。使用pycharm的同学,在Files目录下面的setting里,可以安装。还是比较方便的。
前段时间,pyverilog的那个大会,给了一些测试例程,感觉这东西写verilog还是有些繁琐,没有verilog简单。
当然,万事万物都有一个进化的过程,我相信,经过几次更新,会有更大的提高。
二、下面是verilog和pyverilog的代码,可以对比下
verilog实现的功能还是非常简单的,就是给8bit的led一个常数,assign一下。
module top
(
input CLK ,
input RST ,
output [7:0] led
);
assign led = 8;
endmodule
pyverilog就比较麻烦了,写起来各种调用
#pyverilog库
import pyverilog.vparser.ast as vast
from pyverilog.ast_code_generator.codegen import ASTCodeGenerator
params = vast.Paramlist(())
#输入接口CLK
clk = vast.Ioport(vast.Input('CLK'))
#输入接口RST
rst = vast.Ioport(vast.Input('RST'))
#定义一个长度为7的width信号量
width = vast.Width(vast.IntConst('7'),vast.IntConst('0'))
#定义输出接口led
led = vast.Ioport(vast.Output('led',width=width))
#将CLK、RST、led放入接口列表
ports = vast.Portlist((clk,rst,led ))
#给led赋值为8
items = (vast.Assign(vast.Identifier('led'),vast.IntConst('8')),)
#model的名称为top
ast = vast.ModuleDef("top",params,ports,items)
#生成代码
codegen = ASTCodeGenerator()
rslt = codegen.visit(ast)
print(rslt)
本来只有6行的代码,用pyverilog写出来,就好长了。
这确实是一种方法,给编译提供了接口。python的运算能力超强,估计以后FPGA的综合布局布线都会用python来写。
来源:oschina
链接:https://my.oschina.net/u/4374968/blog/3899345