电子说
Verilog代码
以VCS 2017为例,可以使用-autoprotect128/-auto2protect128/-auto3protect128选项,实现不同级别的自动代码加密。以auto2protect128为例,可以对module内除端口列表以外的内容加密。
vcs -auto2protect128 -f dut_file_list.f
还有一个-protect128选项,需要先在待加密代码前后添加“`protect128”和“`endprotect128”。
SystemVerilog代码
我个人实际测试下来,上面的-autoprotect128/-auto2protect128/-auto3protect128选项不能对SystemVerilog代码自动加密,只能借助于-protect128选项。如果平时写代码过程中就已经添加“`protect128”和“`endprotect128”,可以直接使用vcs命令加密:
vcs -protect128 -f tb_file_list.f
而如果平时写代码时没有加,下面提供一个Python脚本,在给定文件列表中每个文件的首行添加“`protect128”,末尾添加“`endprotect128”,具体使用sed和echo命令实现文件首尾添加内容。
#add_protect.py
import sys
import os
def main():
if(len(sys.argv) != 2):
print("Options illeagal.")
sys.exit()
else:
o_file = sys.argv[1]
add_protect(o_file)
def add_protect(o_file):
try:
f_obj = open(o_file)
except FileNOtFoundError:
print(o_file+" :no such file.")
else:
for line in f_obj:
os.system("sed -i '1i `protect128' " + line)
os.system("echo '`endprotect128' >> " + line)
f_obj.close()
main()
os模块中的system()函数接受一个字符串参数,其中包含要执行的命令。在21-22行中,line为字符串变量,和前面双引号中的linux命令拼接在一起,组成system()函数的字符串参数。
python add_protect.py tb_file_list.f
审核编辑:黄飞
全部0条评论
快来发表一下你的评论吧 !