串行矢量格式  (SVF)  文件编程  
 
 注释 : 串行矢量格式  (SVF)  编程在  Versal ™  器件上不受支持。  
 
 对  FPGA  和配置存储器器件进行编程的另一种方法是通过使用串行矢量格式  (SVF)  文件来执行编程。通过  Vivado ® Design Suite 和  Vivado Lab Edition  生成的  SVF  文件包含对这些器件执行编程所需的低级别  JTAG  指令和数据。生成此 文件后, 即可通过独立于  Vivado IDE  的边界扫描测试工具来使用。  
 
 创建  SVF  文件的一般步骤如下所述 :  
 
 1.  创建  SVF  脱机目标。  
 
 2.  打开创建的  SVF  目标。  
 
 3.  向目标添加器件以定义  SVF JTAG  扫描链。  
 
 4.  对  FPGA  或配置存储器器件进行编程。  
 
 5.  编写  SVF 。  
 
 6.  关闭  SVF  目标。  
 
 7.  ( 可选 ) 执行  SVF 。  
 
 在步骤  4  中 , 编程操作将按顺序被记录并存储在高速缓存文件中。随后 , 此缓存文件将写出至步骤  5  中的目标。此文 件创建完成后, 即可通过边界扫描工具来使用 , 或者通过  Vivado Design Suite  或  Vivado Lab Edition  工具来执行。  
 
 重要提示 ! XSVF  文件格式在  Vivado IDE  中不受支持。  
 
 创建  SVF  目标  
 
 SVF  目标类似于有效的赛灵思平台电缆  USB  或  Digilent JTAG  线缆硬件目标。属性和  Tcl  命令全部相同 , 主要差异在于 SVF 目标并非实时有效的电缆。这表示对此目标执行的任何操作直至执行  SVF  后才会对硬件产生影响。请注意 , 您无 需将电缆连接至系统以创建 SVF 。  
 
 使用  Vivado IDE  
 
 要在  Vivado  硬件管理器中创建  SVF  目标 , 请通过启动  Vivado  或  Vivado Lab Edition  来打开  Vivado  硬件管理器。您可 通过依次选中“Tools ” → “ Create SVF Target ”来创建  SVF  目标。这样会在本地主机上自动打开服务器 , 还会打开 “创建 SVF  目标  (Create SVF Target) ”对话框 , 如下图中的对话框所示。 在任意可用服务器上, 您均可创建脱机  SVF  目标 , 如下所示。  
 
 
 
 这样会打开“ Create SVF Target ”对话框 , 如下所示。  
  
  提示 : 您可通过启用“ Copy from target ”选项来复制现有  SVF  链。或者 , 您也可以指定在先前运行的流程中使 用 Vivado  硬件管理器所创建的  SVF  文件。 Vivado IDE  会保存  SVF  链的规格 , 以便在回读时可重新创建该  SVF 链。 在 Vivado  硬件管理器的“硬件  (Hardware) ”窗口中您的服务器下 , 您刚创建的  SVF  目标会在显示“打开  (Open) ”。 
  
  要删除现有  SVF  目标 , 请在“ Hardware ”窗口中右键单击该  SVF  目标 , 然后选择“ Delete ”。  
  
  重要提示 ! 删除目标后 , 还会删除针对此目标创建的所有器件。此外 , 如果删除的目标先前处于打开状态 , 则会 被关闭。  
  您也可以在  Vivado IDE  中使用  Vivado Tcl  模式或  Tcl  控制台来创建  SVF  目标。  
  以下是初始启动  Vivado  或  Vivado Lab Edition  后创建  SVF  目标所需的步骤 :  
  使用命令行  
  以下是初始启动  Vivado  或  Vivado Lab Edition  后创建  SVF  目标所需的步骤 :  
  open_hw_manager  
  connect_hw_server  
  create_hw_target my_svf_target  
  if {[string length [get_hw_targets -quiet -filter  
  {IS_OPENED == TRUE}]] > 0} \  
  {close_hw_target [get_hw_targets * -filter {IS_OPENED == TRUE}  
  ] }; \  
  open_hw_target [get_hw_targets *my_svf_target]  
  current_hw_target  
  如已连接到服务器 , 则可省略前  2  条命令。执行  create_hw_target  命令可定义  my_svf_target 。请注意 , 同一 会话中不得存在 2  个同名目标。最后 , 关闭所有打开的目标并打开  svf  目标后 , 就会运行  create_hw_target  命令。这样 最终命令会显示已创建的 my_svf_target  的完整硬件目标处理名称。 针对目标执行的所有标准操作( 例如 , get_hw_targets  和  open_hw_target  commands ) 均受支持。您可使用 IS_SVF 硬件目标属性来区分活动目标和  SVF  目标。例如 , 以下命令行样本可从名为“ my_svf_target ”的目标读 取 IS_SVF  属性。  
  get_property IS_SVF [get_hw_targets -regexp .*my_svf_target]  
  此外 , 发出以下命令即可显示此会话中创建的所有  SVF  hw_targets :  
  get_hw_targets -filter {IS_SVF}  
  要删除已创建的目标 , 请使用  delete_hw_target  命令。例如 , 发出以下命令即可删除  my_svf_target :  
  delete_hw_target [get_hw_targets -regexp .*my_svf_target]  
  重要提示 ! 删除目标后 , 还会删除针对此目标创建的所有器件。此外 , 如果删除的目标先前处于打开状态 , 则会被关闭。