Functional Safety 是汽车电子的独特之处,在 P&R 阶段有以下几点需要特别处理:
placement 时,要对特定寄存器特别处理,要保证这些寄存器之间保持一定距离,而且这些寄存器不可以共用同一个『井』,如 TMR
Routing 时,要保证绕线不能跨越 Safety Island, 只能在岛内胡搞。
针对这一需求,Innovus 提供了一套以『 instance space group 』为核心的解决方案,该解决方案即可处理寄存器也可处理组合逻辑,相关命令:
create_inst_space_group, 用于创建 instance space group, 其中 -checking_box 是 Innovus 19.1 的新功能,当值为 all 时,如果 -spacing_x 或 -spacing_y 有 violation 就会认为 place 违规;当值为 cross_only 时,如果 -spacing_x 且 -spacing_y 有 violation 才会认为 place 违规。
delete_inst_space_group, 用于删除某个已创建的 instance space group.
report_inst_space_group, 用于 report 某个已创建的 instance space group.
创建好了 instance space group 后只需要在 Innovus 里使能 instance space group aware placement 即可,LUI 用第一个命令,CUI 用第二个命令。
place 完之后,需要将下面两个变量设成 TRUE 用命令 checkPlace/check_place 检查 instance space group 是否满足要求。
Instance space group 只是对 placer 的约束,在 database 里并没有对应的 object, 所以不可以用 dbGet 或 get_db 抓出来。如果想要在 GUI 中 highlight 出某个 instance space group 可以用如下 proc:
可以用如下 proc check 选定的 cell 是否满足指定的 instance space 如果不满足就标个 marker.
一个栗子:
创建 instance space group:
report instance space group:
Highlight instance space group:
驴说 IC
参考文献:https://support.cadence.com/apex/ArticleAttachmentPortal?id=a1O0V000007MqMBUA0&pageName=ArticleContenthttps://support.cadence.com/apex/ArticleAttachmentPortal?id=a1O0V000006DdEpUAK&pageName=ArticleContent