对于DFX设计,那么就只能使用实例化方式插入ILA。但即便如此,仍有一些特殊之处。为便于说明,我们看一个实际案例。这个DFX设计中的RP(Reconfigurable Partition)为math,该RP下有两个RM(Reconfigurable Module),分别为add和mult,如下图所示。每个RM中均包含一个ILA。这个ILA无论参数配置是否一致,都要分别调用ILA IP Core,单独例化。这是DFX设计所要求的,即每个IP都要以唯一的方式存在于RM中。
到这里我们看到的例化ILA的方式与传统的非DFX设计并没有什么不同。但是在每个RM的顶层,需要添加12个BSCAN端口,如下图所示。这12个端口最终会与dbg_hub相连。这里要求端口名字必须与图中红色方框内的名字完全一致,如果不一致,则要通过属性X_INTERFACE_INFO设定。
在整个设计的顶层,对RM进行实例化时,这12个端口的端口映射为空,如下图所示,如果使用的是VHDL,端口映射内填写open。
在综合阶段生成的网表中,dbg_hub是以黑盒子的形式存在,在设计顶层和RM内分别有一个dbg_hub,如下图所示。dbg_hub与ILA的连接关系由工具自动处理,无需人工干预。
实际上,在opt_design阶段,Vivado会自动生成dbg_hub,这可在runme.log文件中查看到,如下图所示。
打开布线后的网表文件,执行命令get_debug_cores,可以看到当前网表中的ILA、VIO和dbg_hub。如下图所示,设计顶层和RM中各有一个dbg_hub。
如果某个RM中并没有使用ILA或VIO,而其他RM中至少有一个使用了ILA或VIO,那么所有的RM都要列出上文提到的12个BSCAN端口,以确保所有RM接口的一致性。
转载事宜请私信 | 获得授权后方可转载