wujian100学习笔记(4)修改RTL后综合,实现以及生成比特流

本篇笔记介绍

这篇笔记主要是记录我对wujian100_open综合,实现以及生成比特流中的一些问题。

工具:

      ~~~~~       使用官方推荐的Synplify,我之前第一次进行综合的时候使用的是Vivado,因为Synplify用不了,然后看到网上有人只用Vivado就按照他的步骤进行综合、实现以及生成BitStream。确实可以哈,但是整个过程超级慢。现在我之所以重新进行综合是因为我对SoC的RTL代码进行了修改,需要重新综合。
      ~~~~~       首选当然是继续Vivado啦,确实综合可以过,但是在做逻辑优化的时候就崩了,就是那种不显示任何错误的崩了,用Vivado的黑盒检查RTL代码也会有问题。(主要是没用过Vivado,在进行综合之前我已经完成了仿真,基于VCS的)。这个问题就一直卡着(Vivado我装的Windows版本的),后来就在我的Linux机上也装了一个Vivado,发现逻辑优化竟然过了。然后就考虑Synplify综合了。

综上,综合使用windows版本的Synplify,实现以及生成BitStream使用Ubuntu下的Vivado。

下面贴出步骤以及Vivado和Synplify综合比较:

Synplify我是直接load平头哥给的project,比较方便,当然如果你修改了RTL代码,记得重新添加,也可以设计自己时序约束。我上个学期学习过ASIC的综合工具DC,都是Synopsys比较强大的工具。只是面向领域不同。

添加工程

wujian100学习笔记(4)修改RTL后综合,实现以及生成比特流_第1张图片

(1)Synplify吐出来的网表(部分):

也就是Vivado要吃的
wujian100学习笔记(4)修改RTL后综合,实现以及生成比特流_第2张图片
      ~~~~~      综合结束之后最好认真的看一下报告,或RTL的电路和MAP之后的电路图,主要是因为可能你的代码有点小问题,导致综合出来的网表不符合预期,就像我有一次综合把我的IO口全给综合掉了。网上说加synkeep,我并没有那样,因为肯定是RTL源代码的问题。综合具体流程就不具体介绍了,就记录一些问题。

以及用在Vivado的时序约束:

wujian100学习笔记(4)修改RTL后综合,实现以及生成比特流_第3张图片

(2)在Ubuntu上进行实现以及生成BitStream:

方法1:Run Tcl的脚本,直接吃进来网表elf文件,时序,管脚,管脚约束有一行有点问题,要把_c去掉,网上都有相关的博客讲到了。
方法2:Create Project,将需要吃的文件add进入工程即可。

时序文件如果不修改的话,应该有一个路径的时序过不去,我看了一下电路图,是CLK和D连到一起了,设置为时序例外即可(set_false_path)。

这里贴实现之后的两张图:
device:

main_bus层的电路图:

想要学习很具体的流程,可以自行在网上搜索,都有的,我也是这样学习的。将比特流文件拷贝到SD卡后,进行验证,功能是完全的。虽然我专业是IC设计,但是毕竟在读本科,也是第一次自己真正修改大工程的RTL,虽然改的不多,但学习到了很多的东西,开心,继续努力!!!

"你付出多少努力,就会有多少回报!"

你可能感兴趣的:(笔记)