nvdla epython用于自动生成状态机编码的实例

本文介绍了如何利用NVIDIA的nvdla项目中的epython工具,结合python脚本自动生成Verilog状态机的编码,包括二进制、十进制、十六进制、格雷码和独热码。通过示例展示了如何简化状态机编码的维护,详细解析了vloglib.py代码实现,并提供了源码下载链接。
摘要由CSDN通过智能技术生成

英伟达深度学习加速器开源项目nvdla(NVIDIA Deep Learning Accelerator)中用到了一个python脚本epython。源代码地址:https://github.com/nvdla/hw/blob/master/tools/bin/epython 。epython全称embeded python utility,简单地说,就是用来预处理verilog文件中嵌入的python脚本。利用python语法的简洁性,来自动生成一些重复的、有规律的代码。

 

提出问题

我们在写Verilog代码时,状态机的编码一般是由parameter定义,如下:

​localparam IDLE  = 3'd0;
localparam START = 3'd1;
...
localparam START = 3'd7;

如果中间需要插入一个新状态,就可能要修改两部分。一是位宽可能加1,二是新插入的后面所有的状态都需要加1。

二进制、十进制、十六进制,可以利用Vim或Emacs列编辑、数据填充、格式化来重新编码。如果是格雷码或者独热码就会麻烦很多。

那么有没有一种比较简便的方法呢?

 

epython的一个应用

我们知道epython可以让verilog中嵌入python脚本,那么我们可以写一个脚本来做这个事情。

假设我们有若干个状态,用python的列表来描述就是:

st = ['IDLE', &#

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值