http://www.cnblogs.com/YanRuoChuanFPGA/p/9336823.html
一、简要说明
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来写。