ug909 - partial - config - christine

2019-09-01 09:52

可重配置是通过下载可重配置比特文件,在不影响原有功能的情况下增加一些功能。可重配置特性让FPGA硬件资源像微处理器切换任务一样可以时分复用。因为FPGA是在硬件中切换资源,所以兼具了软件实现的灵活性以及硬件实现的高性能这两个优点。 优点:

减小资源利用率,降低功耗 提高算法或者协议选择的灵活性 提高FPGA容错率

适用于灵活改变功能的场合,比如logic equations,滤波器参数,I/O标准。如果改动大的话,不建议使用,比如说整个算法。因为改动不大,可重配置时间很短。

可重配置资源:

LUT 寄存器 BBRAM

DSP

不可重配置资源 BUFG BUFR MMCM PLL ISERDES、OSERDES BSCAN、STARTUP、ICAP、XADC IDELAYCTRL 串行收发器MGT 对于UltraScale器件,有更广泛的可重配置资源,BUFG、MMCM、PLL、SERDES、IDELAYCTRL等。

可重配置是一个属性。TCL命令如opt_design, place_design, route_design会检测到可重配置属性然后正确的去处理。

需要定义不同的可重配置区域,每个元素类型。

可重配置模块必须初始化为一个确定的状态。可以通过局部复位或者专用的GSR通过RESET_AFTER_CONFIG特性。对于ultrascale器件,该特性总是使能的。 举例:

1复用转发器

复用转发器的客户端可以支持多种接口协议,但是在配置FPGA之前不能预测使用哪个协议。为了避免FPGA重新配置时所有的端口都被禁用,为每个端口都实现了可能的接口协议。

这是一个低效的设计。高效的设计是使用可重配置模块。每个端口都是一个可重配置模块。同时也不再需要使用连接多个协议接口的开关MUX。此时,需要生成16个单独的局部比特文件。(为什么我觉得是3(3种协议)*4个port呢?)

通过PCIe接口配置程序

2数据包处理器可以利用可重配置根据接收的数据包类型更改其处理函数。 3非对称秘钥加密

在这种设计的真正的实现中,最初的比特文件是未加密的设计,不包含任何专有信息。最初的设计只包含生成公私密钥对和主机与FPGA和ICAP之间的连接接口的算法。初始的比特文件加载后,FPGA产生公私秘钥对。用于加密可重配置比特文件的公用秘钥会发送到主机。加密过的区域重配置文件通过ICAP接口重配置FPGA。 几个好处是:

1 公私秘钥对可以在任何时间产生。如果下载了新的配置,它也可以用一个不同的公用秘钥解密。如果FPGA使用同样的部分重配置比特文件,例如上电复位的时候,仍然可以使用一个不同的公用秘钥对。

2 私用秘钥存在SRAM中。如果FPGA掉电,私用秘钥不再存在。

VIVADO 软件流程

1 分别综合静态模块和可重配置模块

2 创建物理约束来定义可重配置区域

3 为每个可重配置分区设置RECONFIGURABLE属性

4 设计实现:实现一个完整的设计(静态和每一个可重新配置模块可重构分区)。 5 为完整布线的设计保存一个dcp。

6 从设计中移除可重配置模块,然后保存一个只有静态设计的检查点 7 锁定静态布线

8 给静态设计增加一个新的可重配置模块,然后实现这个新的配置,为整个设计保存一个检查点

9 重复第8步,直到所有的可重配置模块被实现 10 对所有的配置进行验证。pr_verify 11 为每个配置产生对应的比特文件

命令

综合

综合工具包括:XST,Synplify, Vivado Synthesis. 注意

1 UltraScale 器件在Vivado中不支持NGC。建议用户在vivado中重新生成IP或者使用NGC2EDIF命令将NGC改成EDIF格式。xilinx推荐使用本地Vivado IP而不是XST综合的NGC格式的文件.

2 自底向上的综合是指综合流程中每个模块都有自己的综合工程的流程。因此,需要为下级底层模块关掉自动插入I/O buffer.

–no_iobuf: Instructs the tool to not infer any input or output buffers. This is useful in a bottom-up flow where the output of the tool is used as a lower level later in the flow. This setting is a global setting that includes the whole design.

综合顶层模块

必须要有一个带有可重配置模块黑匣子的顶层网表。这就需要顶层综合为分区实例化的模块或实体声明,但是没有任何逻辑,模块(module)是空的。 可重配置模块不支持I/O逻辑。

综合可重配置模块

因为每个可重配模块都要能够实例化到同样的黑箱中,所以一定要有共同的接口。block的名字必须也相同,所有接口的属性(名字,宽度,方向)也必须相同。-mode out_of_context可以关掉自动插入BUFFER。

synth_design -mode out_of_context -flatten_hierarchy rebuilt -top -part

建议综合后关掉设计,然后独立运行实现。

读设计模块

有多种方法可以加载静态设计和RM。所有的配置都实现后,dcp可以仅仅用于获取布局布线数据。 有3种方法:

方法一:读取网表设计

用于模块不是通过Vivado综合的设计。

read_edif .edf/edn/ngc read_edif .edf/edn/ngc read_edif .edf/edn/ngc

link_design -top -part

方法二:Open/Read Checkpoint

如果综合或者实现的结果之前被保存成dcp的话。如果dcp是RM的,那么必须通过read_checkpoint -cell指定实例的名字(eg:inst_shift)。如果dcp是post-implementation的,必须加上-strict选项。如果要读取RM的dcp,顶层设计必须已经打开了,而且必须与指定的黑箱cell.

read_checkpoint -cell [-strict]

方法三:

用于综合结果是以网表的形式存在(edf/edn),但是静态设计已经实现过了。下面的例子演

示了第二个配置的命令。

open_checkpoint .dcp lock_design -level routing

update_design -cells -from_file .{edf/edn} update_design -cells -from_file .{edf/edn}

为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 -part write_checkpoint rm_v#.dcp close_project add_files static.dcp

link_design -top part lock_design -level routing read_checkpoint -cell rm_v#.dcp

Method2:

把子模块网表与RM顶层网表放在同样的路径下。

add_files static.dcp

link_design -top part lock_design -level routing

update_design -cells -from_file rm_v#.edf

确保把子模块网表跟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

保持实现数据


ug909 - partial - config - christine.doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:某钢结构施工组织设计方案

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: