wujian100_open的FPGA实现——如何用vivado生成wujian100_open的比特流文件

简介: 本文将使用Xilinx的FPGA开发工具vivado综合和实现wujian100,并最终生成可以直接下载到FPGA里的比特流文件。

上次我们用开源EDA工具iverilog在Linux系统上成功仿真了wujian100_open,那么这次我们将使用Xilinx的FPGA开发工具vivado综合和实现wujian100,并最终生成可以直接下载到FPGA里的比特流文件。

不过这次我们不用Linux系统了,因为我之前已经在Windows系统上安装了Vivado 2018.3,没在Linux上装vivado,vivado这个软件也挺庞大的,下载安装有点儿麻烦,而且我也没在Linux上装别的综合工具(比如官方推荐的Synplify),所以我就直接在Windows系统上用vivado实现吧。

  • 确定工程所用文件

因为官方是用在Linux系统上用Synplify + Vivado生成比特流的,我们要在Windows系统上实现的话,就不能直接用官方的脚本文件啊啥的了,那么我们第一步就是要搞清楚,工程要用到哪些文件。我们打开synplify目录下的“wujian100_open_200t_3b.prj”文件,看看Synplify工程的建立细节。

image.png
image.png

好了,工程所用的源文件我们现在知道了,到时候用vivado创建工程的时候再对照着添进去就行了。注意,添加的时候要仔细看好,不要不要添错了哦,别一股脑地 全选,添加。

这里注意一下“wujian100_open_200t_3b.prj”文件下面的内容。

image.png

红色框框的那里是时序约束文件,“wujian100_open-masterfpgaxdcXC7A200T3B.xdc”这个约束文件只是管脚约束,到时候我们还要把红色框框那个文件里的时序约束内容添到“XC7A200T3B.xdc”里。蓝色框框里的是包含文件,添源文件时别忘记把“soc/param”里的包含文件也添进去。绿色框框里是器件信息,到时候建立工程时选器件要用上。

然后我们来看一下“wujian100_open.sdc”这个约束文件里有什么内容。

image.png

# Clocks
#top
define_clock   {n:PIN_EHS} -name PIN_EHS  -freq 20 -clockgroup clkgroup_2
define_clock   {n:PAD_JTAG_TCLK} -name PAD_JTAG_TCLK  -freq 2 -clockgroup clkgroup_3
define_clock   {n:x_aou_top.x_rtc0_sec_top.x_rtc_aou_top.x_rtc_clk_div.i_rtc_ext_clk} -name I_RTC_EXT_CLK -freq 1 -clockgroup clkgroup_4
define_clock   {n:x_aou_top.x_rtc0_sec_top.x_rtc_aou_top.x_rtc_clk_div.rtc_clk_div} -name RTC_CLK_DIV -freq 0.5 -clockgroup clkgroup_4
#pwm
define_clock   {n:x_pdu_top.x_sub_apb0_top.x_pwm_sec_top.x_pwm.x_pwm_ctrl.clkdiv} -name CLKDIV  -freq 5 -clockgroup clkgroup_2
#

完了之后,再把下面图片中的红色框框中的“_c”给删掉(看了群友的博文,说不然后面会报错,本着不给自己找麻烦的原则,咱也删了嘻嘻……)。然后保存。

image.png

好的我们现在可以打开vivado,建立工程了。

  • 用建立Vivado工程并综合实现

打开vivado,点击左侧的“create project”建立工程。

image.png

选“RTL Project”。

image.png

点击“Add Files”添加源文件,选择准备好的源文件。完了之后红框框里的全给勾上。

image.png

点击“Add Files”添加约束文件,选择准备好的约束文件。

image.png

器件选择“XC7A200TFBG484-2L”。

image.png

然后工程创建成功之后会自动打开。工程打开后,在“Sources”窗口中,切换到“Compile Order”,在“Design Sources”下找到“wujian100_open_fpga_top.v”,右键点击它,然后在弹出的菜单中点击“Move to Top”这个选项,调整综合顺序。

image.png

然后我们就可以开始综合实现了。点击“Run Implementation”,进行综合实现。

image.png
image.png

然后,我们等待它完成。

  • 根据综合实现结果更改约束文件重新综合实现

    综合实现完成之后,我们看一下结果如何。

image.png

我们看到WHS为负,保持时间不满足。我们双击查看详细的实现报告。

image.png

点击红色框框的数字,查看时序违例的具体路径。

image.png

双击违例路径“Path 31”查看详细情况。

image.png

我们看到时钟路径和数据路径的终点都是同一个元件。我们再右键点击“Path 31”,选择“Schematic”,打开这条路径的电路原理图。

image.png
image.png

再双击器件的时钟端口C(红色框框处),查看器件时钟的连接。

image.png

我们可以看到器件的时钟端口C和数据端口D是连在一起的,导致这一条路径不满足保持时间要求。要把这条“奇怪的路径”设为时序例外,静态时序分析时跳过这条路径。

此外,我们看一下实现后有哪些“warning”。

image.png

有三个时钟无法创建,找不到对应的端口(我之前在实现的时候也有这个报错,我到电路原理图上一层层找,也没有找到对应的cell)。我不太清除是我的语法错误还是其他原因,无法创建这三个时钟,那就只留下主时钟和边界扫描时钟吧,那三个时钟就不创建了。

所以我们修改“XC7A200T3B.xdc”文件,去掉那三个时钟,增加一条伪路径,修改一下时钟组。增加伪路径的语句如下:

set_false_path -from [get_ports PIN_EHS] -to [get_pins x_cpu_top/CPU/x_cr_tcipif_top/x_cr_coretim_top/refclk_ff1_reg/D]

image.png

保存.xdc文件后,点击“Run Implementation”,重新进行综合实现。

又是一番等待之后(论有一台好电脑的重要性!),Implementation终终终于Complete了。我们来看看结果如何。

image.png
image.png

好了,这次成功了。

  • 生成比特流文件

实现成功之后,我们可以生成比特流文件了。

image.png

等待一会儿之后,成功生成比特流文件。

image.png
image.png

  • 把比特流文件下载到FPGA上

有了比特流文件之后呢,就可以连接FPGA开发板,把比特流文件下载到FPGA上,这样,你设计的电路就真正实现在FPGA(硬件)上了,然后你就可以在FPGA上运行、验证你所设计的的电路啦~~

不过我手上没有开发板,这一步就做不了了~

终于肝完了,啥也不懂的小白 + 慢的一匹的电脑 + 又傻又轴的死脑筋 = 肝……不过虽然这样,这次对“约束”特别是“时序约束”有了更深一步的了解,之前对约束尤其是时序约束一窍不通,全靠别人写好的约束续命,碰到时序违例更是不知所措,这次查了很多资料,终于了解了一点点,以后再做东西会比之前好很多。总之,这次收获还是不少的,肝就肝了吧。

最后,一如既往地欢迎大家拍砖哦~~(飒~

原文作者:Lianglonghui
点击查看原文

相关文章
|
Ubuntu Linux Shell
Windows-下学习阿里平头哥-RISC-V-芯片开发平台-wujian100
上个月,在第六届互联网大会上,阿里的平头哥,对,就是那个人狠话不多的公司!他们宣布开源了 wujian100 这个芯片设计平台。搭载基于 RISC-V 架构的玄铁 902 处理器。
Windows-下学习阿里平头哥-RISC-V-芯片开发平台-wujian100
|
编解码 芯片 UED
高性能SoC FPGA原型验证系列——综述
本系列博文将结合自己在FPGA原型验证方面的工作经验,先从总体上探讨FPGA原型验证的优势和挑战,然后介绍市面常见的FPGA原型平台并分析各自的优缺点,随后重点介绍平头哥高性能SoC使用的FPGA原型平台,后续还会就FPGA原型中的关键技术进一步展开讨论,并给出自己的一些经验和技巧总结,希望通过系列博文能带给读者关于FPGA原型验证一个系统的认识。当然,我更希望参与FPGA原型平台工作的同学能够一起切磋技艺,为平台建设出谋划策,快速迭代我们的平台,让我们一起打造更加Smart的FPGA原型平台.
高性能SoC FPGA原型验证系列——综述
|
算法 物联网 开发工具
开放下载!《平头哥剑池CDK快速上手指南》
自定义自己平台的 SDK,平头哥芯片开放社区第三本系列电子书《平头哥剑池CDK快速上手指南》现已开放下载,立即下载阅读吧!
30128 0
开放下载!《平头哥剑池CDK快速上手指南》
|
物联网 开发工具 芯片
剑池CDK开发工具介绍 | 《平头哥剑池CDK快速上手指南》第一章
剑池CDK是平头哥推出的一款专业面向IoT开发领域的集成开发环境,该集成开发环境围绕平头哥“1天上手,5天出原型,20天出产品”1520技术理念,为开发者提供简洁统一的图形开发界面,帮助开发者进行应用开发。该开发环境目前已支持平头哥自研指令集C-SKY架构和RISC-V架构的芯片的开发。
剑池CDK开发工具介绍  |  《平头哥剑池CDK快速上手指南》第一章
|
数据建模 测试技术 Shell
【原型验证】SoC 原型验证环境说明
【原型验证】SoC 原型验证环境说明
383 0
|
存储 安全 前端开发
|
存储 安全 物联网
玄铁RISC-V处理器入门与实战-平头哥玄铁CPU IP-面向低功耗领域CPU
玄铁RISC-V处理器入门与实战-平头哥玄铁CPU IP-
3626 0
|
存储 人工智能 边缘计算
|
NoSQL IDE 物联网
平头哥玄铁CPU调试系统介绍
本文将简单介绍CPU的调试系统,并深入描述玄铁CPU的调试系统。
2348 1
平头哥玄铁CPU调试系统介绍