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

catlog

  • 需求
  • 具体步骤
    • 工程描述
    • 去掉相关调试文件
    • 切换顶层模块并导出相应模块为网表文件
    • 切换回原顶层模块并添加相应保护模块的qxp文件
    • 再次编译工程
  • 参考:

需求

  • 有时需要将源码交付给第三方,但是源码中部分模块涉及到的核心代码无法暴漏给第三方。因此,我们需要一种能够让第三方拿到源码对部分参数进行修改、但同时又无法触及到核心代码的代码保护方法。
  • 本文结合部分资料,给出了如何将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模块的源码了,我们再次编译工程,编译成功,说明设置生效,此时我们再将工程打包发送给客户即可:
    在这里插入图片描述

参考:

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/169390.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

IIC总线逻辑

一、 我们习以为常的IIC通常是什么样子? 在我们研发/应用工程师眼中,IIC的形象通常是如图这样的吧?(你们说是不是?) 是的,对于理想的硬件调程序,这个层…

改进YOLOv8:结合ConvNeXt V2骨干网络!使用MAE共同设计和扩展ConvNet

🗝️YOLOv8实战宝典--星级指南:从入门到精通,您不可错过的技巧   -- 聚焦于YOLO的 最新版本, 对颈部网络改进、添加局部注意力、增加检测头部,实测涨点 💡 深入浅出YOLOv8:我的专业笔记与技术总结   -- YOLOv8轻松上手, 适用技术小白,文章代码齐全,仅需 …

开发仿抖音APP遇到的问题和解决方案

uni-app如何引入阿里矢量库图标/uniapp 中引入 iconfont 文件报错文件查找失败 uni-app如何引入阿里矢量库图标 - 知乎 uniapp 中引入 iconfont 文件报错文件查找失败:‘./iconfont.woff?t1673007495384‘ at App.vue:6_宝马金鞍901的博客-CSDN博客 将课件中的cs…

8.6 矢量图层点要素基于规则(Rule-based)渲染使用

文章目录 前言基于规则(Rule-based)QGis代码实现 总结 前言 前面介绍了矢量-点要素-单一符号、矢量-点要素-分类符号以及矢量-点要素-分级符号的使用本章介绍如何使用基于规则的渲染说明:文章中的示例代码均来自开源项目qgis_cpp_api_apps …

Codeforces Round 908 (Div. 2)

一个教训:做题的时候一定要自己模拟一遍所有样例,这样思路出来的很快!!! C. Anonymous Informant Example input Copy 6 5 3 4 3 3 2 3 3 100 7 2 1 5 5 6 1 1 1 1 1 1000000000 1 8 48 9 10 11 12 13 14 …

CTFHub Git泄露

Log 前言 根据题目描述,这个题目需要使用到工具 GitHack 来完成,而 CTFHub 上提供的工具需要在 python2 环境中执行,注意 python3 环境无法使用。 GitHack准备(kali Linux) 打开虚拟机 sudo su 以管理员的身份运行…

力扣刷题-二叉树-完全二叉树的节点个数

222.完全二叉树的节点个数 给出一个完全二叉树,求出该树的节点个数。 示例 1: 输入:root [1,2,3,4,5,6] 输出:6 示例 2: 输入:root [] 输出:0 示例 3: 输入:root [1]…

如何修改dpi为300?96dpi怎么改成300dpi?

平时使用的图片dpi一般都是96,但是我们在打印的时候,都要求dpi为300以上,这时候就需要修改图片分辨率,如何改图片分辨率成了一个问题,所以今天就教大家一个图片分辨率提高在线处理的方法,一起来了解一下吧。…

ArcEngine:如何进行缩放图层、属性信息显示、状态栏显示?

01 前言 如果以后不是工作相关,我或许以后再难了解ArcEngine相关的GIS桌面软件二次开发的内容? 02 要求 创建窗体应用程序;(10分)修改窗口标题为本人的“学号 姓名”;(5分)添加主…

gitlab利用CI多工程持续构建

搭建CI的过程中有多个工程的时候,一个完美的构建过程往往是子工程上的更新(push 或者是merge)触发父工程的构建,这就需要如下建立一个downstream pipeline 子仓库1 .gitlab-ci.yml stages:- buildbuild_job:stage: buildtrigger:project: test_user/tes…

IDEA运行thymeleaf的html文件打开端口为63342且连不上数据库

这边贴apple.html代码 <!DOCTYPE html> <html xmlns:th"http://www.thymeleaf.org"> <head><meta charset"UTF-8"><title>User List</title> </head> <body> <h1>User List</h1> <table&…

Vuex 组件间通讯

组件间通讯 Vuex https://vuex.vuejs.org/zh/ 基本原理 数据提取到父级 // index 文件 import Vue from vue import Vuex from "vuex" import tab from ./tab // 引入 modulesVue.use(Vuex) // 全局引入// 创建 Vuex 实例 export default new Vuex.Store({modules: …

Win10 开始菜单、微软app和设置都打不开(未解决)

环境&#xff1a; Win10专业版 问题描述&#xff1a; Win10 开始菜单、微软app和设置都打不开,桌面个性话打开就报错&#xff0c;打开个性化该文件没有与之关联的程序来执行该操作 解决方案&#xff1a; 一般造成原因是MS-Settings文件系统错误 1.先重启电脑&#xff08;重…

深入解析序列模型:全面阐释 RNN、LSTM 与 Seq2Seq 的秘密

探索序列建模的基础知识和应用。 简介 序列建模是许多领域的一个重要问题&#xff0c;包括自然语言处理 (NLP)、语音识别和语音合成、时间序列预测、音乐生成和「生物信息学」。所有这些任务的共同点是它们需要坚持。接下来的事情的预测是基于历史的。例如&#xff0c;在“哈桑…

面试题-6

1.精灵图和base64的区别是什么&#xff1f; 精灵图:把多张小图整合到一张大图上,利用定位的一些属性把小图显示在页面上,当访问页面可以减少请求,提高加载速度 base64&#xff1a;传输8bit字节代码的编码方式,把原本二进制形式转为64个字符的单位&#xff0c;最后组成字符串 …

Linux 串口应用编程

1 串口 API Linux串口通信&#xff1a; 在 Linux 系统中&#xff0c;操作设备的统一接口就是&#xff1a; open/ioctl/read/write 。 对于 UART &#xff0c;又在 ioctl 之上封装了很多函数&#xff0c;主要是用来设置行规程。所以对于 UART &#xff0c;编程的套路就是…

iceberg学习笔记(2)—— 与Hive集成

前置知识&#xff1a; 1.了解hadoop基础知识&#xff0c;并能够搭建hadoop集群 2.了解hive基础知识 3.Iceberg学习笔记&#xff08;1&#xff09;—— 基础知识-CSDN博客 可以参考&#xff1a; Hadoop基础入门&#xff08;1&#xff09;&#xff1a;框架概述及集群环境搭建_TH…

Chrome添加扩展程序

Crx4Chrome 下载crx 打开扩展程序 如果拖动crx文件到扩展程序提示只能通过Chrome应用商店添加此项内容 修改crx文件后缀为zip并解压&#xff0c;再拖动到扩展程序

CXL崛起:2024启航,2025年开启新时代

在2019年&#xff0c;Intel主导联合多家阿里巴巴、Facebook(也就是改名后Meta)、谷歌、Dell、华为、思科、微软、HPE最初的八巨头&#xff0c;发布了新的互联协议CXL&#xff0c;全称Comupte Express Link。由于在服务器领域享有绝对领导地位&#xff0c;Intel一经号令&#xf…

消息中间的应用场景

1、异步处理 比如用户在电商网站下单&#xff0c;下单完成后会给用户推送短信或邮件&#xff0c;发短信和邮件的过程就可以异步完成。因为下单付款是核心业务&#xff0c;发邮件和短信并不属于核心功能&#xff0c;并且可能耗时较长&#xff0c;所以针对这种业务场景可以选择先…