关于vcs加密verilog
时间:10-02
整理:3721RD
点击:
在vcs中使用protect等选项,可以对verilog文件的指定部分进行加密。
现在希望只提供一个加密后的vp文件给他人,以供仿真。
如果有一个顶层模块top.v,内部调用了位于subblock.v文件中的子模块subblock。
这种情况下,如果给top.v加密,则加密完成的vp文件中依然是实例化的subblock,而非将subblock中的内容也放到top中进行加密。
如此,在仿真时,除了提供加密后的top.vp外还要提供subblock.v。
可以将subblock中的内容直接全部写到top.v中,这样,提供给别人进行仿真,就只需要top.vp即可。
是否有什么办法,可以在对top.v进行加密时,自动将所用到的子模块的内容也添加到top.v中进行加密?
现在希望只提供一个加密后的vp文件给他人,以供仿真。
如果有一个顶层模块top.v,内部调用了位于subblock.v文件中的子模块subblock。
这种情况下,如果给top.v加密,则加密完成的vp文件中依然是实例化的subblock,而非将subblock中的内容也放到top中进行加密。
如此,在仿真时,除了提供加密后的top.vp外还要提供subblock.v。
可以将subblock中的内容直接全部写到top.v中,这样,提供给别人进行仿真,就只需要top.vp即可。
是否有什么办法,可以在对top.v进行加密时,自动将所用到的子模块的内容也添加到top.v中进行加密?
who know it ?!
你可以写一个很简单的makefile如:
encrypt: cat subblock.v top.v >> new_top.v
vcs new_top.v +protect
保存即可敲指令: make encrypt 就完成打包和加密。
结合3楼的方法,能够在仅提供一个文件时,仅显示module名和端口,其他信息加密。
具体做法如下:
1. 采用3楼的方法,将几个.v文件合并成一个design.v,其中最顶层的.v紧跟cat命令,以使合并之后的文件中,首先是最顶层的.v的内容;
2. 在design.v中添加`protect和`endprotect;
具体的,可在design.v中最顶层的端口声明之后,加`protect,在design.v文件的最后加`endprotect。
这样除了顶层module名和端口声明,其余部分都加密。
虽然其他子模块的module、endmodule之类的关键字都被加密了,但不影响仿真。
