【教程】vivado加密ip核
一、前言
网上有很多vivado创建ip的教程,但是加密ip的教程很少...这让我很费解...
本文将参考vivado官方文档,尝试梳理加密ip核的详细步骤。
官方文档:https://docs.xilinx.com/r/en-US/ug1118-vivado-creating-packaging-custom-ip/Syntax
(官方文档也一般...)
二、语法
vivado加密ip使用tcl命令,其语法格式为:
encrypt [-key <arg>] -lang <arg> [-quiet] [-verbose] [-ext <arg>] <files>
各参数含义如下:
-key
:指定包含加密密钥和权限信息的RSA密钥文件;-lang
:指定源文件的语言类型- 如:
vhdl
、verilog
或systemverilog
- 如:
-quiet
:加密过程是否打印信息,使用此参数则不打印-verbose
:加密过程是否打印详细信息,使用此参数则打印-ext
:默认加密将覆盖源文件,使用此参数则在加密前备份一份源文件<files>
:想要加密的源文件
三、必要信息
3.1 许可证
vivado 从2016.4开始使用IEEE-1735-2014 V2加密标准(Quartus为IEEE-1735-2014 V1),需申请IEEE-1735-2014 V2许可证,官方申请条件是用户拥有Vivado ML Edition license
申请方法:https://support.xilinx.com/s/article/68071?language=en_US
3.2 密钥
获得许可证后,需要创建一个IEEE-1735-2014 V2标准能够读取的密钥文件,其支持vivado自带密钥或自定义密钥
其中,vivado安装时附带当前使用的密钥,位置在:
vivado安装目录/Vivado/<version>/data/pubkey/
密钥文件格式:
`pragma protect version = 2
`pragma protect encrypt_agent = "XILINX"
`pragma protect encrypt_agent_info = "Xilinx Encryption Tool 2021"
`pragma protect begin_commonblock
`pragma protect control error_handling = "delegated"
`pragma protect control child_visibility = "delegated"
`pragma protect control decryption = (activity==simulation)? "false" :"true"
`pragma protect end_commonblock
`pragma protect begin_toolblock
`pragma protect rights_digest_method="sha256"
`pragma protect key_keyowner = "Xilinx", key_keyname= "xilinxt_2021_01", key_method = "rsa", key_public_key
这里放密钥
`pragma protect control xilinx_configuration_visible = "false"
`pragma protect control xilinx_enable_modification = "false"
`pragma protect control xilinx_enable_probing = "false"
`pragma protect control xilinx_enable_netlist_export = "false"
`pragma protect control xilinx_enable_bitstream = "true"
`pragma protect control decryption = (xilinx_activity==simulation)?"false" : "true"
`pragma protect end_toolblock = ""
将vivado附带密钥放入上方段落中,并保存文件为key.txt
四、简单示例
使用一个简单例子帮助大家理解使用方法
可以在vivado tcl console或vivado tcl shell中执行:
encrypt -lang verilog -ext .vp -key E:/workspace_vivado/ip_work/src/key.txt E:/workspace_vivado/ip_work/src/top.v