如何对Verilog/SystemVerilog代码加密

电子说

1.3w人已加入

描述

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

审核编辑:黄飞

 

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分