FPGA系列:1、FPGA/verilog源代码保护:基于Quartus13.1平台保护verilog源码发给第三方但不泄露源码

需求

  • 有时需要将源码交付给第三方,但是源码中部分模块涉及到的核心代码无法暴漏给第三方。因此,我们需要一种能够让第三方拿到源码对部分参数进行修改、但同时又无法触及到核心代码的代码保护方法。
  • 本文结合部分资料,给出了如何将quartus工程中核心moduleverilog文件导出为网表文件的具体步骤

具体步骤

工程描述

原始工程如下:共包含TestSpi.vW5500_DEF.vW5500HAL.vTimer.vSpiTransmit.vVLC_OOK.v共6个文件。

  • 其中TestSpi.v是工程的顶层文件。
  • VLC_OOK.vTimer.v是要完全暴漏给第三方的功能模块。
  • W5500HAL.v则是不需要暴漏给第三方但同时不希望泄露核心功能的代码,在W5500HAL.v中调用了SpiTransmit.vW5500_DEF.v

因此本项目对W5500HAL.vSpiTransmit.vW5500_DEF.v这三个文件进行加密。

在这里插入图片描述

去掉相关调试文件

  • 在上图中的工程文件中,TestW5500HAL.stp是用于工程调试的signal tap工程文件,我们直接将其删除,并在工程中取消掉signal tap选项。如下:
  • 找到setting选项:
    在这里插入图片描述
  • 取消勾选signal tap:
    在这里插入图片描述
  • 我们对比去掉signal tap前后编译生成的工程占用资源大小:第一张图片是带signal tap的,第二张是不带signal tap的,可以发现signal tap差不多消耗了13%的资源。
    在这里插入图片描述在这里插入图片描述

切换顶层模块并导出相应模块为网表文件

  • 现在我们工程的顶层模块是TestSpi.v模块,其结构如下:顶层模块为TestSpi.v,其中包含3个子模块。
    在这里插入图片描述
  • 我们要保护的模块是MyW5500HAL模块,因此我们在Settings选项中切换顶层模块为MyW5500HAL,如下:
    在这里插入图片描述
  • 然后对工程进行编译,看到W5500HAL模块占用资源如下:
    在这里插入图片描述
  • 此时FPGA工程架构如下:顶层模块为W5500HAL.v,其中包含4个子模块。
    在这里插入图片描述
  • 将模块W5500HAL.v导出为.QXP(QuartusII Exported Partition)网表文件:
  • 步骤1:
    在这里插入图片描述
  • 步骤2:
    在这里插入图片描述

切换回原顶层模块并添加相应保护模块的qxp文件

  • 首先,我们切换回顶层模块为TestSpi.v,并删除W5500HAL模块中相应的源码文件:W5500HAL.vW5500_DEF.vSpiTransmit.v,然后添加导出的W5500HAL.qxp文件到工程,最终文件列表如下:
    在这里插入图片描述

再次编译工程

  • 此时我们的工程中已经不包含W5500HAL模块的源码了,我们再次编译工程,编译成功,说明设置生效,此时我们再将工程打包发送给客户即可:
    在这里插入图片描述

注意事项

parameter参数

  • 如果module中含有parameter参数,则在生成qxp文件后,顶层模块调用该模块时,不可以对parameter参数进行修改,否则会报如下错误:
    Error (12236): QXP instance has incompatible value for parameter "W5500_S0_DPort_1"
    在这里插入图片描述

参考:

(原创)详解Quartus导出网表文件:.qxp和.vqm

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

天城寺电子

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值