罗风 · 2021年01月05日

RTL 加密

生活是需要热爱的,尤其在隆冬季节。据说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 的公开密钥是:

image1.png

image2.png

如,用M 的工具加密RTL 用C 的工具去读取:

命令:_vcom +protect=r.vhdlp r.vhd_ 将左侧带有C 家公开密钥的RTL 加密成右侧内容:

image3.png

同样可以用C 的工具加密,用M 的工具去读取:

image4.png

除了用公开密钥外,还可以用用户自定义密钥,以C 家工具为例:

  1. 生成私钥,默认的密钥长度是512 bits, 密钥长度可以定义为256 ~ 4096 bits. 密钥越长安全性越高,执行如下命令会生成两个文件:key.pub 跟key.prv.

    xmprotect -messages -rsakeygenerate -keylength 512 -keyname <name>

  2. 密钥格式转换,用UNIX 命令uuencode 将二进制密钥转换成base 64 格式:

    uuencode -m key.pub <file>

  3. 配置加密参数,将第二步转换后的密钥赋给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>

    _

  4. 将加密后的RTL 跟key.prv 一起提供给用户。
  5. 用户将key.prv 所在路径指给环境变量NCPROTECT\_KEYDB 即可。

image5.png

至于每家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
作者微信公众号
微信号二维码.jpg


相关文章推荐

更多IC设计技术干货请关注IC设计技术专栏。
推荐阅读
关注数
10943
内容数
1211
主要交流IC以及SoC设计流程相关的技术和知识
目录
极术微信服务号
关注极术微信号
实时接收点赞提醒和评论通知
安谋科技学堂公众号
关注安谋科技学堂
实时获取安谋科技及 Arm 教学资源
安谋科技招聘公众号
关注安谋科技招聘
实时获取安谋科技中国职位信息