DFX模式下要求在设计的顶层文件,每个RP对应的RM只以一个空的接口形式存在,这样对顶层综合时,RM就是黑盒子。而对每个RM要采用OOC的综合方式。OOC综合本质上就是工具不会对设计的输入/输出端口插入IBUF/OBUF,同时生成该模块对应的网表文件。不论是第三方工具还是Vivado都是如此。对RM执行OOC综合,这在DFX过程中是必要的。在后续布局布线时,工具要依次读入静态区的网表文件(RM为黑盒子)、每个RP对应的RM的网表文件,这样才能形成完整的网表文件。这就要求同一个RP下的所有RM的输入/输出端口必须完全相同,包括端口的名字、方式、位宽。那么一旦静态区的网表文件和动态区的RM的网表文件准备好之后,如何读入以便Vivado后续执行布局布线?这里我们给出三种可行方法。
方法1:通过add_files命令添加dcp文件
首先,通过create_project命令创建工程:
create_project -part <具体型号> -in_memory
通过add_files添加顶层和各个RP对应的dcp
add_files top.dcp
add_files rp1_rm1.dcp
add_files rp2_rm1.dcp
接下来要通过属性SCOPED_TO_CELLS确保上一步读入的dcp文件与顶层dcp中的RM的对应关系是正确的。
set_property SCOPED_TO_CELLS [get_cells rp1_rm1] [get_filesrp1_rm1.dcp]
set_property SCOPED_TO_CELLS [get_cells rp2_rm1] [get_filesrp2_rm1.dcp]
之后通过link_design将这些dcp绑定在一起。
link_design -top top -part
这里的rp1_rm1和rp2_rm1是这两个RM在顶层中的网表中的名字。
方法2:直接读入网表文件
该方法适用于网表由第三方综合工具提供。需要用到命令read_edif。
read_edif top.edn/edf
read_edif rp1_rm1.edn/edf
read_edif rp2_rm1.edn/edf
link_design -top top -part
方法3:打开/读入checkpoint
open_checkpoint top.dcp
read_checkpoint -cell rp1_rm1 [get_files rp1_rm1.dcp]-strict
-strict用于确保读入的dcp对应模块的端口与顶层模块内已嵌入的黑盒子端口一致。但是要注意read_checkpoint不支持嵌套的网表。
方法4:打开checkpoint更新设计
当RM是以EDF或EDN形式存在时,如果已经获取了顶层布局布线后的网表文件,可以使用如下命令:
open_checkpoint top.dcp
lock_design -level routing
update_design -cells rp1_rm1 -from_file rp1_rm1.edf/edn
update_design -cells rp2_rm1 -from_file rp2_rm1.edf/edn
审核编辑:汤梓红
全部0条评论
快来发表一下你的评论吧 !