当前位置:首页 > ug909 - partial - config - christine
示了第二个配置的命令。
open_checkpoint
update_design -cells
为RM模块添加多个网表
如果RM网表的子模块也是网表,有2种方法: Method1:
创建一个包含所有网表的dcp.在这种情况下,所有的edif/ngc都可以用add_files命令添加,link_design可以用于分解文件到各自相应的cells。(resolve)
add_files [list rm.edf ip_1.edf...ip_n.edf] # Run if RM XDC exists add_files rm.xdc
link_design -top
link_design -top
Method2:
把子模块网表与RM顶层网表放在同样的路径下。
add_files static.dcp
link_design -top
update_design -cells
确保把子模块网表跟RM的顶层网表放在同一目录下。执行update_design -cell命令时会自动加上。这个方法比方法一隐晦,但是步骤少。
实现
每个PR设计的实现叫做一个配置。每个设计模块都可以实现或者导入(如果以前实现过了直接导入即可)。
静态设计的实现结果必须是一致的,所以在一个配置中实现以后,将其导入接下来的配置。其余的配置可以导入静态和每个可重配置模块的实现结果。
# Run if all constraints are not already loaded read_xdc
# Optional command opt_design place_design # Optional command phys_opt_design route_design
保持实现数据
第一个配置的静态实现必须被保存成一个checkpoint。必须被锁定。 如果要锁定导入的checkpoint(静态或者可重配置),使用
lock_design -level routing [cell_name]其中cell_name可以忽略。 如果要锁定导入RM的结果,全部层次的名字必须被指定。例如: lock_design -level routing u0_RM_instance 对于部分重配置,唯一保存的水平是布线。
部分重配置的约束和性质
定义一个模块为可重配(必须)
为可重配区域创建一个floorplan(必须) 配置后使用复位(可选) 打开可视化脚本(可选)
1定义一个模块为可重配(必须)
set_property HD.RECONFIGURABLE TRUE [get_cells inst_count] HD.RECONFIGURABLE属性表明默认下列约束:
为指定cell和接口网络设置DONT_TOUCH,就可以避免模块边界优化
为Pblock设置EXCLUDE_PLACEMENT,可以避免静态逻辑布线到可重配置分区中 为Pblock设置CONTAIN_ROUTING,可以限制可重配置逻辑布线在指定的约束区域内 使能DRC,时钟路由的特殊代码
2为可重配区域创建一个floorplan(必须) Pblock不能重叠
多个PBLOCK区间的缝隙允许非可重构资源,但是为了布线成功,最好是连续的Pblock。 如果7系列的器件使用了RESET_AFTER_RECONFIG属性,Pblock的高度一定要和时钟区域对齐。
7系列的Pblock一定不能将interconnect columns分开。
例子
#define a new pblock create_pblock pblock_count
#add a hierarchical module to the pblock
add_cells_to_pblock [get_pblocks pblock_count] [get_cells [list inst_count]] #define the size and components within the pblock
resize_pblock [get_pblocks pblock_count] -add {SLICE_X136Y50:SLICE_X145Y99} resize_pblock [get_pblocks pblock_count] -add {RAMB18_X6Y20:RAMB18_X6Y39} resize_pblock [get_pblocks pblock_count] -add {RAMB36_X6Y10:RAMB36_X6Y19}
Floorplan in the Vivado IDE
尽管还不支持Project模式,但是IDE环境可以用于planning and visualization任务。最好的例子就是create and modify Pblock约束。
open_checkpoint synth/Static/top_synth.dcp
read_checkpoint -cell [get_cells inst_count] synth/count_up/count_synth.dcp read_checkpoint -cell [get_cells inst_shift] synth/shift_right/shift_synth.dcp set_property HD.RECONFIGURABLE true [get_cells inst_count] set_property HD.RECONFIGURABLE true [get_cells inst_shift]
圈之前需要打开综合后的结果。
在Vivado环境中可以圈出一个矩形来选择一个RM分区。如果是L形,可以在Device视图中右击Pblock然后选择增加Pblock矩形。(与Planahead中圈矩形相似)。 要进行DRC检查。
write_xdc top_fplan.xdc执行此条命令将floorplan约束保存起来。
注意:千万不要通过Vivado IDE File> Save Checkpoint保存整个设计。如果保存了,就会覆盖掉之前保存的dcp。
时序约束:分别做时序分析。
Partion pins
是在Pblock边界自动创建的接口点。是在interconnect tiles里的虚拟I/O。不需要任何物理资源,也不需要有任何附加的延迟。
布线器根据源、驱动和时序要求为其选择位置,但是它们的位置也可以通过用户约束确定。如:
set_property HD.PARTPIN_LOCS INT_R_X4Y153 [get_ports
interconnect tile的实例名可以在Device View视图中看到。 3配置后复位
使用这个特性,reconfig region可以在局部重构过程中保持稳定状态。静态逻辑不受影响,可以继续正常工作。带有这个特性的Partial Reconfig就像FPGA的初始化配置一样,同步元素处于一种已知的初始化状态。
注意:全局信号GSR和GWE的释放不一定保证是同步的。如果RM模块的功能依赖于同步的startup,那个模块的时钟驱动逻辑或者时钟使能信号可以在局部重构过程中禁用,然后局部重构完成后再启用。static logic不允许,但是static routing(在实际的布线中显示出来是虚线/实线?)是允许的。
set_property RESET_AFTER_RECONFIG true [get_pblocks
Pblock模块必须与时钟区域垂直。
Pblock_shift是帧对齐的,因为顶和底与时钟区域X1Y3对齐。Pblock_count是不能用RESET_AFTER_RECONFIG的,因为顶部不对齐。Ultrascale器件两个Pblock都可以使用RESET_AFTER_RECONFIG因为不再受GSR(全局复位)的影响。
共分享92篇相关文档