最近经常发现有人有rtl代码加密的需求,于是写一下之前用过的两种方式
一、Synopsys
工具:Design_Compiler,现在叫syn
命令:synenc
使用方法:
synenc test.v
具体路径:
dc安装目录下
amd64/syn/bin/synenc
****这个路径要注意,并不是dc安装目录下的bin下,这也是很多人找不到命令的原因****
二、Cadence
工具:Xcelium
命令:ncprotect
使用方法:
ncprotect -autoprotect test.v
具体路径:
xcelium安装路径下
tools/bin/ncprotect
三、简便用法
写个脚本去执行就好。
synenc:
find . -name \*.v | xargs synenc
ncprotect:
find . -name \*.v | xargs ncprotect -autoprotect
补充:关于模拟的网表的加密(来自谭晓强)
工具:
Synopsys xa
Synopsys hspice
Synopsys finesim
命令:
metaencrypt
使用案例:
metaencrypt -i opamp.va -o opamp_spi.inc -t randkey
补充:VCS加密(2025年7月补充,来自不知名网友X)
VCS提供以下四种加密Verilog代码的方法,适用于不同安全需求和场景
# 方法1:全模块加密
vcs -full64 -autoprotect128 design.v
# 方法2:部分加密(保留接口)
vcs -auto2protect128 -f filelist.f
# 方法3:标记加密(需预先在代码中添加保护标记)
vcs -protect128 -sverilog design.sv
# 方法4:生成综合工具不可读的加密文件
vcs -gen_ip design.v -o encrypted.v.e
网友留言: