生活是需要热爱的,尤其在隆冬季节。据说B站时下流行对对子,于是集美们见缝插针地对了起来,搬一个来图个热闹。
上联:lef, def, spef, flow 搭得舒舒服服,用户说声佩服佩服
下联:genus, joules, tempus, service 做得生生死死,老板道句nice nice
横批:卧薪尝胆,视死如归
来,回到正题,一些IP vendor 为了自我保护,或一些公司为了防抢防盗防AE 经常需要对RTL 进行加密,各家EDA 公司为了满足客户这一需求,都提供有适配于自家工具的加密方式,除此之外还有如下两种加密机制,IEEE1800 跟IEEE 1735, 貌似目前业界用得更多的是IEEE 1735 而且这也是IEEE 推荐的加密机制—— IEEE Std 1735™-2014: "IEEE Recommended Practice for Encryption and Management of Electronic Design Intellectual Property (IP)"
- The standard mechanism IEEE1800, which lets you protect Verilog files using the IEEE Verilog standard and VHDL files using the IEEE VHDL standard.
- The new mechanism IEEE 1735, which provides versioning for the encryption of pragma definitions and use models.
对于IP Vendor 或公司内部会使用多家EDA 工具,强烈建议使用1735 来加密,否则需要给每家都加一套,有版本对不齐的风险。1735 的好处是,既可以用用户定义的密钥加密也可以用三家EDA 公司公开的密钥加密,三家EDA 的公开密钥是:
如,用M 的工具加密RTL 用C 的工具去读取:
命令:_vcom +protect=r.vhdlp r.vhd_ 将左侧带有C 家公开密钥的RTL 加密成右侧内容:
同样可以用C 的工具加密,用M 的工具去读取:
除了用公开密钥外,还可以用用户自定义密钥,以C 家工具为例:
- 生成私钥,默认的密钥长度是512 bits, 密钥长度可以定义为256 ~ 4096 bits. 密钥越长安全性越高,执行如下命令会生成两个文件:key.pub 跟key.prv.
xmprotect -messages -rsakeygenerate -keylength 512 -keyname <name>
- 密钥格式转换,用UNIX 命令uuencode 将二进制密钥转换成base 64 格式:
uuencode -m key.pub <file>
- 配置加密参数,将第二步转换后的密钥赋给key\_public\_key, 推荐的data\_method 是AES128-CBC 和AES256-CBC. <AES: Advanced Encryption Standard, CBC: Cipher Block Chaining >.
_\`protect version = 1
\`protect data\_method = "AES128-CBC"\`protect key\_keyowner = "Cadence Design Systems.", key\_method = "rsa", key\_keyname = "cds\_rsa\_key",key\_public\_key = <generated base 64 key>
_
- 将加密后的RTL 跟key.prv 一起提供给用户。
- 用户将key.prv 所在路径指给环境变量NCPROTECT\_KEYDB 即可。
至于每家EDA 公司各自的加密方式都比较简单,也不需要密钥,如C 家用如下命令即可:
ncprotect -autoprotect -synthesis output\_netlist:cleartext -synthesis viewers:debugall
加密后的IP 不能被通过如下方式访问内部对象:
- Tcl, SimVision, and programming interfaces, including PLI/VPI, VHPI, and C interface.
- Schematic generators or state machine extraction.
- Warning and error messages from protected regions are either suppressed or generic messages are issued.
对于数字实现端而言,elaborate 之后就是GTECH, 如果工程师想要debug 只能去抠扒GTECH 了,综合之后的netlist 不要加密,应该到目前为止P&R 工具都不支持加密的netlist. 另外,有些IP Vendor 懒得加密,直接丢一个GTECH 给用户,强烈建议,如果非此不可请为每家EDA 公司都提供一套配套的GTECH, 否则一定会有驴头马嘴的事情发生,不是驴头得错也不是马嘴得过,纯粹是焦仲卿他妈的锅。
还有一个上联没有对出适合的下联,邀请广大驴友来对:
上联:ocv, aocv, socv, 喂饭喂得唯唯诺诺,大爷有钱为所欲为
冬至就要到了,可以准备着开始发春了,阴冷得时候可以阴阳怪气,阳光明媚得时候一定要岁月静好。
作者:陌上风骑驴
来源:https://mp.weixin.qq.com/s/bz17mjTW99r5YEVJoCnCuA
作者微信公众号
相关文章推荐
更多IC设计技术干货请关注IC设计技术专栏。