如何使用DFX的Abstract Shell Flow

作者:Hong Han,来源:AMD工程师;来源:AMD开发者社区

在使用DFX流程时,有用户希望在完成初始Configuration的Implementation之后,能加速后续RM的实现过程; 有用户在和其他工程师合作开发DFX设计过程中,自己负责静态逻辑,其他RP让不同的工程师编写逻辑,相互之间不希望过多暴露自己逻辑网表;从Vivado 2022.2开始支持的DFX Abstract Shell流程,可以很好地解决这些问题。

在标准的DFX设计中,完成初始的Configuration的实现之后会锁住所有的静态逻辑,对于被替换过的RP继续做实现. 这时由于被锁住,这些静态逻辑的布局布线信息在后续的configuration中是无法改变的, Abstract Shell流程的原理就是在完成初始的Configuration的实现之后,只保留静态逻辑中和动态逻辑有关系的那一部分,其他的信息直接去掉,那么在合入新的RM之后,新的网表会大大小于原本静态加动态的逻辑的网表(这里的前提是静态部分的逻辑比较多), 可以有效地降低对于内存的负担,从而加速后续RM的实现过程. 由于在新的网表中静态逻辑的主要逻辑已经被去掉,那么其他工程师得到经过精简的静态网表之后,可以合入自己的RM逻辑,生成RM的partial bit文件,但是无法看到原本静态网表中的内容. 同时静态网表中如果包含一些付费IP的话,在Abstract Shell流程中,合入自身的RM之后,运行实现时不再需要有只在静态逻辑中用到的付费IP的License。

和传统的DFX流程相比,Abstract Shell的流程并不复杂,只是在原有的基础上做了微调。

在非工程模式中,标准DFX流程基于初始Configuration实现之后的config1_routed.dcp对新的RM做实现的命令。

 Ex:
     open_checkpoint config1_routed.dcp
     update_design -cell rp1 -black_box
     lock_design -level routing
     write_checkpoint static_routed.dcp
     read_checkpoint -cell rp1 rp1_b_synth.dcp
     opt_design
      …

应用Abstract Shell的流程时,对于初始Configuration实现之后的config1_routed.dcp直接使用write_abstract_shell 命令:

write_abstract_shell -cell <arg> [-force] [-quiet] [-verbose] <file>

这一条命令直接做了以下一系列操作:

  • 去掉一个RP中已经完成布局布线的动态逻辑

  • 锁定剩余的逻辑(包括其他RP的逻辑)

  • 为目标RP生成Abstract Shell 网表

  • 对新生成的Abstract Shell 网表和原来的网表做pr_verify, 验证边界逻辑的一致性。

Ex:
     open_checkpoint config1_routed.dcp
     write_abstract_shell -cell rp1  static_ab_routed.dcp
     read_checkpoint -cell rp1 rp1_b_synth.dcp
     opt_design
     ..
     route_design
     write_checkpoint ./ab_rp1_routed.dcp

剩下的实现步骤与标准DFX流程没有区别。

完成后续RM的实现之后,需要做pr_verify确保边界无变化. 选择合适的网表作对比很重要,否则即使看到pr_verify也是没有意义的。

常见的错误比对:
包含完整静态逻辑的网表 vs 的write_abstract_shell的网表
针对不同RP生成的abstract shell网表之间的对比

应该比对完成实现之后的针对特定RP的带abstract shell网表和其未write_abstract_shell生成的网表(上述例子的中static_ab_routed.dcp和ab_rp1_routed.dcp)

pr_verify命令执行没有错误后,可以使用以下命令生成特定RP的partial 比特流文件。

 write_checkpoint -cell rp1 ./rm_partial.bit

在工程模式中,abstract shell的使用也非常简单,只需在DFX Wizard的"Edit Configuration Runs"窗口中在DFX mode下拉菜单中选择Abstract Shell即可。

DFX.png

目前所有的UltraScale Plus器件和Versal器件都支持这个流程. 这个流程可以同时支持工程模式和非工程模式的流程. 但是只有在非工程模式下,用户才可以选择隐藏自己设计的一些细节或特定信息,或者绕过某些IP的license检查。

最新文章

最新文章