在线咨询 切换到宽版
eetop公众号 创芯大讲堂 创芯人才网

EETOP 创芯网论坛 (原名:电子顶级开发网)

便捷登录,只需一步

找回密码

  登录   注册  

快捷导航
搜帖子
芯片精品文章合集(500篇!)    创芯人才网--重磅上线啦!
查看: 92010|回复: 477

[原创] 用Python写Verilog(非HLS)

[复制链接]
发表于 2018-7-25 09:54:24 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?注册

x

前段时间玩Python的时候好奇, 既然Python这么强大, 那么能不能用Python来写verilog呢?然后就上Bing搜了一下, 发现了MyHDL这个Python的扩展包, 似乎真的可以用Python来写Verilog, 已经有牛人把这个轮子造出来了.

略作了解后发现, MyHDL不是高层次综合, 它实际上是用Python的一些功能实现了一个Verilog仿真器, 能对用Python写的仿Verilog语言进行仿真, 并把Python代码翻译成Verilog. 省事的地方在于Python的简洁,以及可以很方便的看波形,还有可以和其它Python代码结合来进行仿真输入和查看仿真结果. 比如写图像处理的模块就很容易把图像输入进行仿真然后查看结果.

在Python Myhdl环境下仿真测试好的代码,翻译成Verilog后就可以直接拿去编译使用了,可以不需要再到ISE或Vivado中去仿真.也就是说MyHDL的仿真和翻译结果都是没有问题的.通过做这个项目俺已经能确认这一点. MyHDL的作者Jan Decaluwe是个设计芯片的工程师,用MyHDL设计过芯片, 所以在正确性上是没有问题的.

  • 使用Python MyHDL有以下几点需要注意,:

实际上只有@always_seq, @always_comb这两个语句块可用, 虽然MyHDL也支持assign, 但在翻译成Verilog时似乎会出问题, 所以就不要写assign了,全部用@always_comb.

在用@always_comb时, 如果你在一个@always_comb块中既赋值了一个信号,又引用了这个信号,MyHDL会报错. 这个问题不大, 可以再写一个@always_comb块,把赋值和引用语句分到不同@always_comb块里就行了.

对a = {b,c,d}这样的信号拼接支持的不好,虽然有个连接信号函数支持这个,但只支持仿真,翻译Verilog会出错.所以这样的信号拼接似乎也只能拆开来一个一个的写在@always_comb块里. 这也是用MyHDL要比Verilog麻烦的地方.

但总的来说Python MyHDL还是要比写Verilog省事一些的, 俺打算以后就用这个了,不再写Verilog了.

俺尝试用MyHDL写了一个FPGA以太网MAC, 可以通过UDP协议向PC机传原始视频, 代码在:


回帖可见下载链接 :


游客 ,如果您要查看本帖隐藏内容请回复


发表于 2018-7-26 19:57:18 | 显示全部楼层
厉害,想楼主学习学习
回复 支持 1 反对 0

使用道具 举报

发表于 2018-7-26 20:23:00 | 显示全部楼层
看到分享,特意来支持
也看见了赞赏码,已赞
回复 支持 反对

使用道具 举报

发表于 2018-7-31 14:04:07 | 显示全部楼层
回复 1# ccpp123

    thanks
回复 支持 反对

使用道具 举报

发表于 2018-8-7 19:19:52 | 显示全部楼层
非常酷,决定学习一下,谢谢分享!
回复 支持 反对

使用道具 举报

发表于 2018-8-9 07:51:49 | 显示全部楼层
非常酷,决定学习一下,谢谢分享!
回复 支持 反对

使用道具 举报

发表于 2018-9-13 10:41:49 | 显示全部楼层
thanks
回复 支持 反对

使用道具 举报

发表于 2018-9-17 16:30:59 | 显示全部楼层
赞一个,学习一下
回复 支持 反对

使用道具 举报

发表于 2018-9-19 07:55:09 | 显示全部楼层
其实,精通一种语言就好了
回复 支持 反对

使用道具 举报

发表于 2018-10-29 08:49:03 | 显示全部楼层
回复 1# ccpp123


    麻烦问下,用MYHDL怎么样进行模块调用那,我看它生成的没有.a(a);这种形式,纠结了很久了 ,谢谢
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网 ( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2022-12-3 18:09 , Processed in 0.062619 second(s), 8 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表