vivado之时序约束(一)

vivado之时序约束(一),第1张

1输入端口到FPGA内部时序单元的路径

2FPGN内部时序单元间的路径

3 FPGA部序单元到输出端口的路径

单元计时弧-单元输入引脚和输出引脚之间的计时弧。网络定时弧- 驱动器(输出引脚)和负载(输入引脚)之间的网络(线)的定时弧。 

起点- 所有输入端口/引脚或时序单元的时钟端口/引脚都被视为起点。

终点- 顺序单元的所有输出端口/引脚或 D 引脚都被视为终点。

这里 就是setup time, 就是那个hold time。setup time和hold time对于一个触发器来说是固定的参数。也就是说要完成一次正常的数据锁存,数据必须要在setup time和hold time的时候保持稳定。在实际的电路当中一个触发器的运行周期必须满足:

                                                                                             

这里只有 (传输延时)是可变的,与具体的电路结构设计有关。 传输的延时越短,FPGA可运行的时钟速率就越高。

检验 Setup是否满足要求,这边引入setup slack概念,只要setup slack的直大于零即setup检查满足要求,其计算公式如下:

     setup slack = data required time - data arrival time

其中:

data required time = destination clock edge time + destination clock path delay - clock uncertainty- setup time

data arrival time    = source clock edge time + source clock path delay + clock to output time + data path delay

公式代入可得到:

setup slack = ( destination clock edge time - source clock edge time) +(destination clock path delay - source clock path delay) - clock uncertainty - setup time - clock to output time - data path delay

                   =  +( - )- -   -  - 

在 Setup检查中source clock一定超前于destination clock

、 可以通过时序约束确定其值, , 是时序单元的属性值,( - )在布局布线后其值也能确定,剩下 对 影响最大,一个设计Setup检查中的关键路径往往是 值最大的一条路径,影响其值有很多原因,如逻辑级数过多,扇出导致布线延时过大

 setup slack = data arrival time -  data required time

其中:

data required time = destination clock edge time + destination clock path delay + clock uncertainty + setup time

data arrival time    = source clock edge time + source clock path delay + clock to output time + data path delay

公式代入可得到:

setup slack = ( source clock edge time - destination clock edge time) + (source clock path delay - destination clock path delay) - clock uncertainty - setup time + clock to output time + data path delay

                   =   

        与Setup检查不同,在Hold检查下destination clock超前于source clock在Setup检查中,Tdestination to source的值选取destination clock和l source clock相差最小的情况下进行分析;而Hold检查中 Tsource to destination的值选取所有Setup关系分别进行分析,每一种 Setup关系对应有两种情况,然后选取所有情况中 的值大于计算对应的 :

        a取 Setup关系的前一个destination clock沿

        b取 Setup关系的destination clock沿

Vivado进行时序分析,对时钟的约束是必不可少的,设计中的时钟可分为一下几种:

Primary Clocks主时钟;

Generated Clocks衍生时钟;

Virtual Clocks 虚拟时钟。

1 Primary Clocks
主时钟一般是FPGA外部芯片如品振提供的时钟,通过FPGA引脚输入。Vivado进行时序分析时,以主时钟的源端点作为延时计算起始点Ons 点)。主时钟的约束命令如下:

create_clock -name <clock_name> -period <period> -waveform {<rise_time> <fall_time>}[get_ports <input_port>]

2 Generated Clocks

衍生时钟是由设计内部产生,一般由时钟模块MMCM or PL或者逻辑产生,并且对应有一个源时钟,源时钟可以是系统的主时钟或者另外一个衍生时钟。约束衍生时钟时,除了定义周期,占空比,还需要指明与源时钟的关系。通过create_generated_clock命令约束衍生时钟,命令如下:

create_generated_clock -name<generated clock name> -source <master clock source pin or port> -divide_by <div_factor> <pin_or_port>

3 Virtual Clocks

虚拟时钟是在FPGA设计不存在的时钟,但是FPGA与板上的其它芯片间有数据交互,属于FPGA 内部时序单元到输出端口的路径。芯片上的时钟并不是由FPGA提供,Vivado在进行这部分时序分析时并不知道芯片的时钟,因此需要定义一个虚拟时钟,然后约束输出端口的output delay。

约束虚拟时钟的命令也是create_clock,但是其不需要指定-source,如下指令:

create_clock -period 100000 -name SCLK -waveform {0000 50000}

在设计时钟约束问题之前,需要注意两个概念,一个是建立时间、一个保存时间。建立时间是指,对于一个D触发器来说,时钟到达之前,数据应该保持稳定的时间。保持时间是指,时钟到达之后,数据应该保持稳定的 时间。

    我对于这个问题的理解是,建立时间,是在D触发器之前,需要进行组合逻辑计算的时间,包括线路的传输时间。

    保持时间是指,当上升沿到达之后,需要多少时间保持数据的稳定,相关数据才能被稳定准确地输出。

      在set_multicycle_path命令,需要明确两个概念,一个是setup requirement,建立时间需求。一个是hold requirement保持时间需求。建立时间需求很好理解,就是在源时钟控制寄存器到目的时钟寄存器之间传输数据的所用的时间。而然,一个源时钟发送数据的上升沿必须对应目的时钟接受数据的唯一一个上升沿。这就需要保持需求来维持。保持需要有以下两个原则:

1)当前发起沿发送的数据不能被前一个捕捉沿捕捉。

2)下一发起沿发送的数据不能被当前捕捉沿捕捉。

如下图所示,建立时间以及保持时间的组合,约束了目的时钟可以对数据进行捕捉的范围。

约束指令:

  set_multicycle_path -from [get_clocks clk1] -to [get_clocks clk2] -setup -end 3

set_multicycle_path -from [get_clocks clk1] -to [get_clocks clk2] -hold -end 2

上述的两个约束,一个(-setup)是建立时间,一个(-holf)是保持时间。

-end以目的端口时钟作为时钟周期计数基准,如果是-start 表示以源时钟作为时钟周期计数标准。
原文链接:>1)选项都在XDC和TCL中,要你手动增加,建议项目相关的放在TCL中,FPGA相关的放在XDC中,和ISE差别有点大,但速度杠杠的,ISE(多核不行,而且结果不稳定)要3个小时的vivado就40分钟搞定,最多8核,飞一般的感觉,服务器配置不能太低。2)我对chipscope持保留态度,testbench是王道,部分信号上示波器,尤其是相位调整。3)我对HLS持保留态度。4)算法还是一步一步自己verilog写出来,C+MATLAB做理论,verilog来实现,弯道超车现在不现实,再等若干年,说不定哪天就好用了。以上是个人看法

在vivado仿真中,没有提供直接导出波形文件的功能,我们要导出波形文件可以按照下面方式进行:

项目工程\mcusim\sim_1\synth\timing\xsim\dumpvcd
可以使用gtkwave直接打开查看信号了:

首先要去下载vivado的安装包。建议去官网下载下载好了安装解压。

这个时间有点长。安装好了就打开,打开之后会出现三个问题,三个全选I Agree,然后点击NEXT。之后的选择第三个,再点next之后就安装好了,开始加载license破解,安装完成后会自动跳出Vivado license manager界面,选择Load License,点击Copy License按钮;找到license文件目录,导入vivadolic文件,点击View License Status查看证书状态证书的截止有效时间Version Limit一栏都是到2037年5月,表示激活成功。

vivado是一款Xilinx开发的功能强大的产品加工分析软件。

Vivado设计有工程和非工程两种模式工程模式是使用Vivado设计套件工程自动管理设计源文件、设计配置和结果,使用图形化Vivado集成设计环境(IDE)交互式处理设计。关键优势在于Vivado工具可管理整个设计流程,包括工程文件管理、报告生成、数据存储等。在综合后修改HDL源文件,工具会自动生成时序和功耗报告。非工程模式是使用Tcl脚本流程,在非工程模式下,需要自己管理设计源文件和设计过程。源文件只能从当前位置访问,不能将其复制到其它位置。设计结果保留在已分配给Vivado工具进程的机器内存中。使用Tcl命令来设置设计参数和实现选项。可使用Tcl在设计过程的任何阶段保存设计检查点(DCP)并生成报告 。

首先加入数学库的头,再使用转换功能即可。
Vivado设计套件,是FPGA厂商赛灵思公司2012年发布的集成设计环境。包括高度集成的设计环境和新一代从系统到IC级的工具,这些均建立在共享的可扩展数据模型和通用调试环境基础上。这也是一个基于AMBAAXI4互联规范、IP-XACTIP封装元数据、工具命令语言(TCL)、Synopsys系统约束(SDC)以及其它有助于根据客户需求量身定制设计流程并符合业界标准的开放式环境。赛灵思构建的的Vivado工具把各类可编程技术结合在一起,能够扩展多达1亿个等效ASIC门的设计。
为了解决集成的瓶颈问题,Vivado设计套件采用了用于快速综合和验证C语言算法IP的ESL设计,实现重用的标准算法和RTLIP封装技术,标准IP封装和各类系统构建模块的系统集成,模块和系统验证的仿真速度提高了3倍,与此同时,硬件协仿真性能提升了100倍。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://www.outofmemory.cn/yw/13410453.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-07-30
下一篇 2023-07-30

发表评论

登录后才能评论

评论列表(0条)

保存