十二 · 2021年10月28日

Vivado—DCP复用

在Xilinx的Vivado开发流程中,出于设计源代码保密的考虑,有时我们并不会交付源代码,而是以网表的形式进行交付,本篇就在Vivado中进行DCP复用方式进行说明。

初见面,一切如故

    先看一个简单的example project,里面包含两个verilog文件:

2285e674f32274f5264b8919ddb13175.png

e4f3163919799cb706443d7877743e49.png

    在顶层top里,我们例化了一个adder模块,adder为一个简单的加法器。当我们把这两个文件导入VIvado后即可进行正常的布局布线。

    那么问题来了,假设adder是我的一个核心设计(加法器代表一下哈),当其他人想使用我这个adder IP时我不想交付给对方源代码,那么我应该如何做呢?

交付DCP!

何为DCP

    在Vivado的设计流程各个阶段里,采用统一的数据模型:DCP(design checkpoint),在Vivado的设计流程里,无论是综合还是布局布线的各个阶段,工具都会生成DCP文件,每一步的执行设计输入均为上一阶段的DCP文件(综合阶段除外)。那么当我们想把adder以网表形式进行交付时,我们就可以生成对应的综合后的DCP文件,随后将DCP文件交付给合作方即可。

甲方:DCP制作流程

    在我们的设计中,我们把adder这个模块作为设计的顶层:

945b3c14b946f966ef6b2a97a637ac00.png

    随后进行综合,当完成后,我们会在对应的目录下看到生成了adder的DCP文件:

3bcc0582b24660b421259d862974685e.png

    同时,我们准备一个我们adder对应的设计顶层:

1f6a244b0ff0e8e336b5e666885cfa52.png

    这里的adder模块不包含任何设计代码,仅包含端口声明。同时我们将这个模块声明为“black\_box”

    随后,我们就可以把这个DCP文件和black box文件交付给别人使用了,而不用担心我们的源代码泄漏。

乙方:DCP的使用

    当我们拿到别人的DCP文件和black box端口声明文件后,我们还需要准备一个tcl文件:

8371f2191ca24bcd5f1824d75595ec48.png

    tcl文件中制定了adder.dcp的读取位置。

    随后,我们将balck box文件和tcl文件导入到我们的设计中,top.v文件保持不变:

9b5cb803baf5440b12b17420c013c977.png

    随后我们在Implement Setting中的opt\_Desing中的tcl.pre中关联导入的balck.tcl文件:

95bf6100d49a9873586989ad24d786b9.png

    Finally,我们就可以进行正常的综合及布局布线了,布局布线完成后我们得到的网表和正常工程一模一样。

b582ec7d1a0fa074382cceb2b9dec122.png

END

作者:玉骐
原文链接:https://mp.weixin.qq.com/s/ypkvCGGfzJ6AOKGIoPIY9A
微信公众号:
 title=

推荐阅读

更多SpinalHDL技术干货请关注Spinal FPGA专栏。
推荐阅读
关注数
1581
内容数
133
用SpinalHDL提升生产力
目录
极术微信服务号
关注极术微信号
实时接收点赞提醒和评论通知
安谋科技学堂公众号
关注安谋科技学堂
实时获取安谋科技及 Arm 教学资源
安谋科技招聘公众号
关注安谋科技招聘
实时获取安谋科技中国职位信息