目录

  • 1 IP-Centric设计流程
  • 2 基于IP设计
    • 2.2 IP设置
    • 2.3 IP Cache的设置
      • 2.3.1 为新项目配置IP cache
    • 2.7 管理IP约束
      • 2.7.1 更改IP综合运行属性
      • 2.7.2 约束文件处理顺序
    • 2.8 设置目标时钟周期
      • 2.8.1 使用Tcl命令设置目标时钟周期
    • 2.14 关于核容器
    • 什么是核容器

1 IP-Centric设计流程

IP: intellectual property,知识产权。

IP catalog 包含XIlinx发布的 Plug-and-Play(即插即用)IP,即添加可用。
拓展IP catalog的四种方式:

  • matlab上的System Generator for DSP designs
  • Vivado High-Level synthesis(HLS)设计(C/C++ 算法)
  • 第三方IP
  • Vivado IP packager工具打包的设计

IP 术语:

  • IP Definition: IP定义。使用 IP-XACT 特性描述的IP。
  • IP Customization: IP定制。从IP Definition上定制IP,生成XCI文件。XCI文件存储用户指定的配置。
  • IP Location: IP位置。包含当前项目中的一个或多个自定义IP的目录。
  • IP Repository: IP库。添加到Xilinx IP catalog的IP Definition集合的统一视图。
  • IP Catalog: IP目录允许检索Xilinx Plug-and-Play知识产权(IP),以及第三方供应商提供的其他与IP-XACT兼容的IP。也可以包含自己打包的IP。
  • Output Products: 为IP Customization而生成的文件。他们包括HDL、约束条件和仿真目标。在生成输出产品期间,Vivado工具将IP定制存储在XCI文件中,并使用XCI文件生成综合和仿真期间使用的文件。
  • Global Synthesis: 将IP与top-level用户逻辑一起综合。
  • Out-Of-Context (OOC) Design Flow: OOC设计流程为生成的输出产品创建一个独立的综合设计run。这个默认流创建一个设计检查点文件(DCP)和一个Xilinx设计约束文件(_ooc.xdc)。
  • Hierarchical IP and Subsystem IP: 这些术语可以互换地用来描述一个IP,它是一个由多个IP组成的子系统,这些IP是作为块设计或RTL流的一部分的分层拓扑结构。
  • Sub-core IP: 指在另一个非Hierarchical (Subsystem) IP使用的IP。这可以是来自Vivado IP目录、用户定义的IP、第三方IP或IP核心库的IP。

IP-XACT:IP-XACT是一个标准的电子知识产权(IP)的说明。由SPIRIT联盟发布。它使IP提供商能够为组件和设计提供可读和可机器处理的IP的单一描述,并与其他所需的数据一起分享给IP用户。

2 基于IP设计

可以通过以下方式创建IP Customization:

  • 从IP catalog
  • 使用Manage IP project流创建一个独立的IP Customization,以便在当前项目和其他项目中使用。
  • 使用Tcl脚本。
  • 添加或创建block design(BD)

定制完成后,可以直接创建output product或在之后创建。

2.2 IP设置

  • Core Containers: 核容器功能。是否将IP和所有生成的输出文件包含在一个扩展名为XCIX的压缩二进制文件中。

  • Simulation:

    • 选择是否使用预编译好的库文件。
    • 是否自动生成IP的仿真脚本。
      为每个IP产生仿真脚本。Vivado把脚本放在.ip_user_files路径。
  • Upgrade IP
    在更新IP时产生ip_upgrade.log文件。日志文件存储在项目目录的根位置(项目XPR文件所在的位置)。

  • Default IP Location:可以使用它来设置创建和存储IP和输出产品的位置。默认放在.src/sources_1/ip路径。

  • IP Cache:定义Vivado如何为项目使用IP缓存。缓存选项包括:

    • Cache scope:disabled、local(默认设置)或remote。Local选项路径是默认的。remote为指定的路径。
    • Cache location:: 文件路径
    • Clear Cache:在Tcl控制台中执行以下命令:config_ip_cache,从磁盘中删除缓存文件:
      config_ip_cache -clear_output_repo

2.3 IP Cache的设置

在项目模式中使用OOC流程可以加速综合过程的output product。IP Cache是默认勾选的,此时Vivado产生综合output product(比如DCP和stub文件)以及一个cache entry。

一个cache entry包含两个硬盘路径:

  • :包含XCI、DCP、sim_netlist和stub文件。
  • .logs:包含综合log文件(runme.log)

在产生缓存后,当用相同的属性创建新的IP自定义时,产生IP的时候不会再次进行综合。相反,Vivado引用缓存并复制综合的输出。IP指的是已经完成综合的IP,消除了对相同定制的其他IP运行OOC合成的需要。

当生成一个启用缓存的IP时,如果没有缓存命中,Vivado工具将创建一个正常的设计运行。但是,如果有缓存命中,则综合结果(DCP和存根文件)从缓存目录复制到IP目录并重命名。没有创建设计运行,但是添加了一个报告缓存命中的条目,如下图所示。

2.3.1 为新项目配置IP cache

一个新项目默认使能 IP Cache 并配置路径为local。但是如果多人指向相同的cache路径可以减少硬盘的使用。每个用户不需要创建别人正在使用的相同的IP cache。

通过给 Vivado_init.tcl 添加 project.defaultIPCacheSetting 参数的控制来实现新项目关闭cache或者配置一个remote location。

2.7 管理IP约束

2.7.1 更改IP综合运行属性

IP目录中的大多数IP基于用户自定义产生特定于IP的XDC约束。IP提供的约束使用默认的综合设置进行优化。

推荐:不要为任何IP设计运行更改这些设置,因为在应用约束时可能会遇到问题。如果必须更改IP OOC运行的综合设置,可以在Tcl控制台中使用以下set_property命令:
<synthesis_option> [get_runs <IP_Name>_synth_1]
例子:set_property STEPS.SYNTH.DESIGN.ARGS.FSM_EXTRACTION sequential [get_runs my_IP_synth_1]

2.7.2 约束文件处理顺序

默认情况下,IP XDC约束的PROCESSING_ORDER值为EARLY。用户约束标记为NORMAL。这样,后面处理的约束可以覆盖前面处理的同一对象上的约束。

处理IP XDC文件的顺序如下:

  • 设置为EARLY的用户XDC
  • 设置为EARLY的IP XDC
  • 设置为NORMAL的用户XDC(默认)
  • 设置为LATE的IP XDC
  • 设置为LATE的用户XDC

通过这种方法,可以在IP XDC 之前或之后运行一个用户XDC。

Vivado IP可以生成多个XDC约束文件。默认情况下,IP约束优先于用户约束,原因如下:

  • IP可能会产生一个时钟,它必须对终端用户的约束是可用的。
  • 如果IP提供物理约束,终端用户可以在必要时覆盖它们。

使用report_compile_order Tcl命令报告约束编译顺序的示例如下:
report_compile_order -constraints

IP交付的一些约束可能依赖于来自终端用户或其他IP的时钟对象。这些约束在一个单独的XDC文件中提供,并在终端用户约束之后进行处理。

  • <ip_name>.xdc
    通常,IP提供一个core XDC文件,该文件可以包含时钟创建命令以及不依赖外部时钟的命令。约束文件名为<ip_name>.xdc,称为core xdc文件。
  • <ip_name>_clocks.xdc
    IP还可以包含另一个XDC文件,该文件包含依赖时钟的命令。
    因为顶层时钟可以来自其他约束,或者来自具有依赖关系的其他IP,所以需要 预先定义这些时钟 的任何约束都应该放在<ip_name>_clocks.xdc中。默认情况下,Vivado IDE在用户约束和其他IP核心xdc文件后处理<ip_name>_clocks.xdc。
  • <ip_name>_OOC.xdc
    大多数IP也产生一个OOC XDC文件(<ip_name>_OOC.xdc)。该文件包含IP输入时钟的默认顶层定义。此文件仅在使用推荐的默认流(将IP综合为顶层设计的OOC)时在DCP创建中使用。当Vivado综合顶层设计的IP OOC时,由终端用户或其他IP创建的时钟是不可用的;因此,这个文件对于提供综合IP的时钟定义是必要的。就是OOC过程中暂时使用的一个时钟约束。
    用户逻辑implementation期间不需要<ip_name>_ooc.xdc,因为在应用约束之前,所有的网络列表都是链接在一起的。此时,任何需要时钟的IP都可以使用用户创建的时钟或IP创建的时钟。
  • 额外的XDC
    有些IP可以产生额外的XDC文件。这可能是因为它们产生了仅在综合或实现期间使用的约束。

当创建一个以平台板而不是目标部件为目标的项目时,该板在IP自定义期间是可用的,允许指定在连接到IP时使用板上的哪些连接。这将生成一个<ip_name>_board.xdc文件,其中包含PACKAGE_PIN、IOSTANDARD和其他物理约束。
Vivado Design Suite User Guide: Using Constraints (UG903)

Vivado 处理IP时产生的一些约束文件:

  • dont_touch.xdc
    Vivado工具使用dont_touch.xdc以在综合IP时在IP顶层设置DONT_TOUCH属性。这样可以防止接口端口被移除。
    可以在综合日志文件中看到这个约束文件正在被处理,或者是在使用OOC(默认流)综合IP时,或者是在使用 end-user RTL综合IP时,在全局综合日志文件中。
  • in_context.xdc
    默认情况下,IP在顶层综合期间被视为黑盒,因为它是使用OOC综合的。在创建IP DCP的过程中,在以下情况下,会创建<ip_name>_in_context.xdc文件并保存在IP DCP文件中:

    • 该IP产生一个时钟,可以在IP边界上引用
    • 该IP具有任何I/O缓冲的实例
      如果存在,则在综合用户逻辑时,在end-user约束之前处理<ip_name>_in_context.XDC文件。在实现过程中不需要这个文件,因为IP不再是一个黑盒。
      如果创建了时钟,它们被放置在IP黑盒子单元的边界pin上。时钟可以有以下几种类型:
    • IP输入端口上的主时钟(例如时钟向导IP)
    • IP输出端口上的主时钟
    • 在IP的输出端口上产生的时钟,主时钟是输入时钟(例如时钟向导IP)
      只有在IP包含input buffer的情况下,才会在IP的输入端口上创建时钟。默认情况下,时钟向导是这样配置的。这个时钟在顶层用户逻辑综合期间接到顶层端口。
      如果一个用户约束必须引用一个IP产生的时钟,它应该通过引用产生时钟的IP的pin来间接完成,例如在get_clocks命令中:
      get_clocks –of_objects [get_pins <IP_clock_pin>]
      如果有I/O buffer,对于有I/O buffer的接口引脚,IO_BUFFER_TYPE属性被设置为NONE。设置此属性可防止在顶层综合期间插入额外的I/O buffer。

2.8 设置目标时钟周期

默认情况下,IP是独立综合的,而OOC与设计的其余部分分离。

  • 在用户逻辑的综合过程中,IP被视为一个黑盒子。
  • 在实现过程中,IP网表与其他IP网表或用户网表进行链接。

因为IP独立于顶层综合,Vivado工具在OOC完成为IP提供时钟定义后创建_ooc.xdc。
如果不指定目标周期,则使用默认的时钟周期。当用于独立IP的周期与合成顶级IP时所看到的周期不同时,这可能会导致警告:

该警告通知,如果使用了全局综合,将使用与综合OOC IP时不同的时钟周期来综合IP。也就是说在OOC看到这个警告,如果我们确定给IP的时钟在外部约束过了,就可以忽略,因为在全局综合的时候会使用我们自己约束的时钟周期。

IP有多种时钟选项:

  • IP可能在定制GUI中有选项来设置在OOC合成期间使用的目标频率/周期。您可以使用Tcl控制台查询和设置IP的配置选项。
  • IP可能有一个标签为“时钟”的标签,它允许您为IP设置目标频率。
  • IP可能将目标设置与其他设置混在一起。通常,有一个工具提示来解释设置。
  • IP不提供GUI选项自定义目标时钟频率或周期必须依赖其他时钟源的频率

IP的时钟端口有一个以FREQ_HZ结尾的属性。改变这些属性会导致_ooc.xdc文件用于在为IP生成输出产品时使用这些值。

2.8.1 使用Tcl命令设置目标时钟周期

名为char_fifo的FIFO生成器IP设置目标时钟的步骤示例,它在Wave generator示例设计中使用。IP被定制为在读写端口和本机接口上使用公共时钟:

  1. 使用report_property命令报告IP可用的属性。
    report_property [get_ips char_fifo]
  2. 从输出中,可以看到这个IP有5个以FREQ_HZ结尾的属性:
    • CONFIG.core_clk.FREQ_HZ:适用于使用普通时钟时(本例)
    • CONFIG.read_clk.FREQ_HZ: 适用于使用独立时钟时
    • CONFIG.write_clk.FREQ_HZ:适用于使用独立时钟时
    • CONFIG.slave_aclk.FREQ_HZ:适用于使用AXI
    • CONFIG.master_aclk.FREQ_HZ: 适用于使用AXI
      只有第一个输出适用于具有公共时钟的本机接口。CONFIG.core_clk。FREQ_HZ默认设置为100000000或100MHz。
      如果已经生成了IP,可以查看char_fifo_ooc.XDC文件并查看以下行:
      create_clock -period 10 -name clk [get_ports clk]
  3. 对于本例,需要的时钟频率为250MHZ,设置如下:
    set_property CONFIG.core_clk.FREQ_HZ 250000000 [get_ips char_fifo]
  4. 设置属性后,生成IP。这将导致OOC运行(如果存在)被重置并重新运行。
    综合完成后,char_fifo_ooc.XDC可以看到:
    create_clock -period 4 -name clk [get_ports clk]

2.14 关于核容器

什么是核容器

核容器特性通过提供IP的单一文件表示。这个可选特性选择将IP和所有生成的输出文件包含在一个扩展名为XCIX的压缩二进制文件中。这个扩展类似于用于IP定制文件的XCI文件,并以类似的方式工作。

在添加或读取IP时,需要指定XCI文件,在启用了核心容器的情况下,需要添加或读取XCIX文件。

当为现有IP启用核心容器特性时,XCIX文件将替换IP目录和输出产品。当禁用IP的核心容器特性时,
XCIX文件被转换为包含XCI文件在内的所有输出产品的IP目录。

为IP启用核心容器会改变该IP实例的磁盘表示;在Vivado中,IP的内部表示保持不变。

在Vivado Sources视图中,这两个IP看起来是相同的,都列出了输出产品,所有这些产品都可以在Vivado IDE中打开查看

在磁盘上,有一个用于clk_core的文件夹和一个用于char_fifo IP的XCIX文件。
当IP使用Core Container时,Vivado工具从这个XCIX文件中读取合成和实现所需的IP源文件。文件不会被解压缩到临时目录中,而是直接从二进制文件中读取。

基于IP的设计学习1:ug896.一些基本概念相关推荐

  1. C++基于MFC课程设计——学习公社

    学习公社课程设计 学习公社 一.系统使用展示 二.系统主要结构 1.系统功能介绍 2.数据库表的设计 用户表 资源表 3.MySQL数据库与vs连接 三.主要源代码及分析: ==VS和MySQL的连接 ...

  2. 基于ssm网页设计学习网站

    开发工具(eclipse/idea): eclipse4.5/4.8或者idea2018,jdk1.8 数据库:mysql 功能模块: 1.输入网址,进入首页页面.用户可以选择登陆或者注册,也可以在未 ...

  3. 基于Pytorch的强化学习(DQN)之 Baseline 基本概念

    目录 1. 引言 2. 数学推导 2.1 引理 2.2 改进的策略梯度 2.3 蒙特卡罗模拟 3. baseline的选择 1. 引言 我们前面讲过策略梯度下降算法 ,现在来介绍一种加快收敛速度的方法 ...

  4. 基于风险的测试学习总结

    基于风险的测试学习总结 一.RBT的概念 二.什么是风险,为什么需要RBT 2.1什么是风险 2.2为什么需要RBT 三.如何进行RBT 3.1风险识别 3.1.1风险识别的手段 3.1.2风险识别中 ...

  5. 计算机网络课程设计之基于 IP 多播的网络会议程序

    前言 本实验难点在于环境的配置,尤其是多网卡配置,经过查阅资料和多次小伙伴们测试,最后终于找到问题的根源 问题分析和配置主要放在实验结果与分析栏中 结尾附上指导书的IP多播源码 白嫖容易,创作不易,本 ...

  6. 基于android的交流平台,基于Android的移动学习交流平台的设计与实现

    摘要: 随着移动互联网技术的不断发展,智能手机的不断普及,现在越来越多的人通过手机等智能设备来进行学习和交流.为了满足教师和学生实时的沟通交流,提高学生的学习兴趣和效率,本文设计了基于Android的 ...

  7. 基于html5的在线教育,基于HTML5的在线学习系统的设计与实现

    基于HTML5的在线学习系统的设计与实现 发布时间:2019-11-18所属分类:科技论文浏览:1次 摘 要: 摘 要: 在线课程学习网站的发展迅速,吸引了广大用户.基于 HTML5 的在线学习系统经 ...

  8. 基于JSP的在线学习网站的设计与实现

    欢迎添加微信互相交流学习哦! 项目源码:https://gitee.com/oklongmm/biye2 摘 要 本文采用自顶向下的结构化的系统分析方法,阐述了一个功能全面的在线学习网站的开发过程.操 ...

  9. 基于JSP的在线学习网站 的设计与实现

    欢迎添加微信互相交流学习哦! 项目源码:https://gitee.com/oklongmm/biye2 摘    要 本文采用自顶向下的结构化的系统分析方法,阐述了一个功能全面的在线学习网站的开发过 ...

最新文章

  1. MySQL8索引篇:性能提升了100%!!
  2. 云计算介绍 、TCP/IP协议及配置
  3. Android7.1选择时区由默认的GMT+00:00改为GMT+08:00中国标准时间
  4. linux进程通信中有名管道的特点,linux进程通信之(四):有名管道的读与写
  5. 【毕设狗】【单片机毕业设计】基于单片机的智能密码锁的设计
  6. 无人机运动规划4:ego-swarm无人机群运动规划
  7. 机器学习——聚类算法(一)
  8. Power BI Desktop 微软官方入门教程
  9. 真正优秀的人,为何都那么尊重别人?(非常深刻)
  10. 周报 | 吉吉拍助力消费者转变
  11. 恢复SQL Server简单模式下误删除堆表记录
  12. android 仿微信 视频播放器,Android仿微信多媒体选择器 - SmartMediaPicker
  13. android 摄像头同时打开方式,Android,同时打开前置和后置摄像头
  14. 网站内嵌百度地图定向到公司位置
  15. java video src请求视频流,视频不能拖拽快进问题解决方案
  16. 深入理解互斥锁的实现
  17. 金融科技大数据产品推荐:易鑫大数据风控平台
  18. AlexNet网络的搭建
  19. NOI2002银河英雄传说
  20. import os总结

热门文章

  1. php token放到head,我觉得把 Token 放在 Header 里更好一些
  2. pyLDAvis3.3.1 报错 OSError: [Errno 22] Invalid argument: ‘https://cdn.jsdelivr.net/gh/bmabey/pyLDAvis@
  3. Armadillo C++ Library
  4. 常用的BOM属性 - Kaiqisan
  5. jenkins 构建异常_jenkins构建失败的原因是什么?
  6. 08蚂蚁-互联网安全架构——4.OAuth2.0
  7. 详解Paint的setXfermode(Xfermode xfermode)
  8. 赛门铁克:中国挤掉美国成僵尸电脑超级大国
  9. 卫星服务器网站系统,广西卫星同步系统
  10. 学习前端,需要掌握的单词集汇总