heyuanpi

vivado non-project 的一些问题

1
阅读(3608)

之前做FPGA设计的方法是:用synplify将设计综合好,到vivado中进行布局布线。


好处1:synplify和design compiler处理文件的顺序是一样的,可以直接移植芯片版本的filelist

好处2:同上,文件中的各种`define是和芯片版本中一样的


坏处1:综合出来edif文件后需要到viavado中进行布局布线,这样要维护synplify和vivado两套环境

坏处2:两套环境中,timing约束无法兼容,也要搞两套。


------------------------------------------------------------------------------

为了避免上述坏处,决定摒弃synplify,在vivado中进行整个流程。

为了能进行版本管理,采用vivado的non-project mode的方式,但是最终碰到了如下问题,放弃了:


问题1:vivado中不支持hierachy name,想在top上面用hiearchy name的方式拉debug信号无法实现。

问题2:vivado处理`define的方式不一样。我将控制整个工程的`define放在一个头文件中,并放在filelist的第一行,理论上这样后续的所有source file都应该看到这些`define,但在vivado中并没有,看起来必须要在每个source file中`include头文件才行。

这个有绕过的办法,那就是用综合选项将这些`define传递进去,但是这种方法只对全局的`define比较有用,而对于模块级的`define,这种方法不适用,比如synopsys的一些IP,通常在IP模块开始的头文件中`define一些宏,然后在IP模块结束的头文件中`undef这些宏,这让我怎么传参数?只能说vivado这种处理方式比较蠢,而且和主流的synplify design_compiler不一致。


以上两个问题,尤其是问题2导致我放弃用vivado来进行整个流程的设计。退回到原来用synplify综合出edf,然后vivado布局布线的方式。

------------------------------------------------------------------------------

我使用的是vivado2016.3,期待以后能改进,non-project mode已经有了一些雏形,期待能更好用一些

------------------------------------------------------------------------------

更新

更新

更新

更新

更新


问题1.hierarchy name的问题,在vivado2018.1中已经支持

问题2.实际上是我使用的方法不对,搜一下xilinx关于vivado如何对待compilation unit的视频,就知道了


再也不用synplify vivado组合拳了



vivado真香