
1 如果时钟互联报告有很多(或者一个)红色的"Timed (unsafe)" 或者还有桔色的"Partial False Path (unsafe)"方框,那你应该是没有正确地对异步时钟约束。如果你的设计中有大量的跨时钟域的异步时钟,那么你需要对那些时钟互联约束。
2 在时钟互联报告中看"Clock Pair Classification" 和 "Inter-Clock
Constraints"这两列。如果时钟对类型是"No Common Clock" 或者 "No Common
Period"或者Inter-clock约束显示"Timed (unsafe)",就要把这种互联当作异步时钟。
3 如果“Path Requirement (WNS)”列显示时序非常紧,典型的是小于1ns,或者“Inter-Clock
Constraints”列标记为时序“Unsafe”,或者“Partial False Path
(unsafe)”,那么你需要把这种时钟互联看作异步时钟。
如果“WNS Path Requirement (ns)”这一列的值是合理的(>1 ns), 并且"Inter-Clock
Constraints”是满足的,同时,“Clock Pair
Classification”是“干净”的,那么这样的时钟互联可以被看作是同步的,你不需要添加任何时序约束。时序工具会自动的把那些路径当作同步路径处理。
为了正确约束跨时钟域的路径,需要考虑以下4个方面:
1 如果两个时钟之间没有路径,在两个时钟之间可以简单的使用set_clock_groups 或者set_false_path约束
2 如果跨时钟域路径都是一位的,那么你可以在两个时钟之间使用set_clock_groups 或者 set_false_path。
3 如果路径都是多位的路径,你需要考虑延迟和数据位的偏移,然后使用set_max_delay –datapath_only 和set_bus_skew约束。
4 如果在两个时钟域之间存在单位和多位混合的跨时钟域路径,那么对于单位的跨时钟域路径要明确的对每一条路径设置伪路径来约束,对于多位的跨时钟域路径,使用set_max_delay –datapath_only 和 set_bus_skew约束。
如果时钟是同步的,不需要任何约束。vivado的静态时钟分析工具会自动的设定路径的时序。
vivado hls和vivado的关系:其有推出了新软件VIVADO,其实主要原因还是用这个软件来支持zyqn芯片。vivado hls 的全称是 high-level synthesis 高性能综合。
本文通过对OpenCV中图像类型和函数处理方法的介绍,通过设计实例描述在vivadoHLS中调用OpenCV库函数实现图像处理的几个基本步骤,完成从OpenCV设计到RTL转换综合的开发流程。 开源计算机视觉 (OpenCV) 被广泛用于开发计算机视觉应用。
Vivado工具:
“All-Programmable”器件不只是涵盖可编程逻辑设计,还涉及到可编程系统集成,要在更少的芯片上集成越来越多的系统功能。为了构建上述系统,我们会面临一系列全新的集成和实现设计生产力瓶颈,这是我们必须要解决的问题。
集成瓶颈,集成C 语言算法和RTL 级IP,混合DSP、嵌入式、连接功能、逻辑领域,模块和“系统”验证,设计和IP 重用,实现瓶颈,层次化芯片布局规划与分区,多领域和多晶片物理优化,多变量“设计”和“时序”收敛的冲突,设计后期发生的ECO及变更引起的连锁反应。
_delay 。其中,只有那些从 FPGA 管脚进入和/或输出都不经过任何时序元件的纯组合逻辑路径可以用 set_max_delay / set_min_delay 来约束,其余 I/O 时序路径都必须由set_input_delay / set_output_delay 来约束。如果对 FPGA 的 I/O 不加任何约束,Vivado 会缺省认为时序要求为无穷大,不仅综合和实现时不会考虑 I/O 时序,而且在时序分析时也不会报出这些未约束的路径。本文以下章节将会着重
vivado是干什么的
Vivado设计套件,是FPGA厂商赛灵思公司2012年发布的集成设计环境。包括高度集成的设计环境和新一代从系统到IC级的工具,这些均建立在共享的可扩展数据模型和通用调试环境基础上。集成的设计环境——Vivado设计套件包括高度集成的设计环境和新一代从系统到IC级的工具,这些均建立在共享的可扩展数据模型和通用调试环境基础上。
这也是一个基于AMBAAXI4互联规范、IP-XACTIP封装元数据、工具命令语言(TCL)、Synopsys系统约束(SDC)以及其它有助于根据客户需求量身定制设计流程并符合业界标准的开放式环境。赛灵思构建的的Vivado工具把各类可编程技术结合在一起,能够扩展多达1亿个等效ASIC门的设计。
为了解决集成的瓶颈问题,Vivado 设计套件采用了用于快速综合和验证C 语言算法IP 的ESL 设计,实现重用的标准算法和RTL IP 封装技术,标准IP 封装和各类系统构建模块的系统集成,模块和系统验证的仿真速度提高了3 倍,与此同时,硬件协仿真性能提升了100倍。
为了解决实现的瓶颈,Vivado工具采用层次化器件编辑器和布局规划器、速度提升了3 至15 倍,且为SystemVerilog提供了业界最好支持的逻辑综合工具、速度提升4 倍且确定性更高的布局布线引擎,以及通过分析技术可最小化时序、线长、路由拥堵等多个变量的“成本”函数。
此外,增量式流程能让工程变更通知单(ECO) 的任何修改只需对设计的一小部分进行重新实现就能快速处理,同时确保性能不受影响。最后,Vivado 工具通过利用最新共享的可扩展数据模型,能够估算设计流程各个阶段的功耗、时序和占用面积,从而达到预先分析,进而优化自动化时钟门等集成功能。
一个是时序约束,另一个就是逻辑锁定。时序约束是按照你的时序要求去布局布线。而逻辑锁定则是指设计者将某个模块或者某个网络指定在器件的某个位置。尽管有时序约束,但综合器也不能保证每次都能达到要求;而只有当逻辑锁定后,它能保证被锁定的模块在下一次综合不被改变。 vivado中SRIO IP核的使用姓名:孙健强
学号:19021210841
嵌牛导读通常在信号处理板卡上,会用到FPGA和DSP的组合,这就涉及到了FPGA和DSP之间的通信问题。它们之间的通信协议是RapidIO协议,而在FPGA中则需要添加SRIO的IP核来实现与DSP的通信。
嵌牛鼻子XILINX FPGA、VIVADO、DSP、 RapidIO协议、SRIO
嵌牛提问如何使用vivado中自带的SRIO的IP核?
嵌牛正文:
一、srio基础知识
高速接口-RapidIO4、Xilinx RapidIO核详解
>Vivado Logic Analyzer的使用
chipscope中,通常有两种方法设置需要捕获的信号。
1添加cdc文件,然后在网表中寻找并添加信号
2添加ICON、ILA和VIO的IP Core
第一种方法,代码的修改量小,适当的保留设计的层级和网线名,图形化界面便于找到
需要捕获的信号。
第二种方法,对代码的改动量大一些,同时需要熟悉相关IP的设置,优点是,可以控制
ICON,并调用VIO。
与之类似,Vivado也有着两种方法进行设置。
1在综合后的网表中寻找相关信号,右键点开菜单,然后设置mark debug
2添加ILA,VIO的IP Core
第一种方法与chipscope的第一种方法极为类似:
1都需要综合后才能设置;
2都需要保留一定的设计层级或者网线名来便于寻找信号;
3并非所有信号都可以被捕获,不能捕获的信号,chipscope中是显示为灰色,vivado
中是没有mark debug的选项在右键菜单中;
第二种方法就更为类似了,vivado可以兼容ISE的IP,所以可以直接调用chipscope的相
关IP,调试时也只是用Chipscope,另外可以使用Vivado自己的ILA IP,来进行设计,
但最大的问题是Vivado不提供ICON的IP以供选择,进一步埋没了ICON的地位。
另外,早起的Vivado IP Catalog提供Chipscope的ICON、ILA和VIO IP Core可以选择,目前已经取消了这些IP,只支持Vivado自己的ILA/VIO IP Core。
这里提供一个非常简单的设计代码,用于Vivado Logic Analyzer的研究。
`timescale 1ns / 1ps
module Nexy_4 (
input I_CLK,
output [3:0] O_ST_COUNTER,
output O_TIMECOUNTER_OUTPUT
);
wire CLK_100;
clk_wiz_0 CLK_UNIT
(
clk_in1 (I_CLK),
clk_out1 (CLK_100),
locked ()
);
reg [7:0] startup_counter = 'b0;
always @ (posedge CLK_100)begin
if(startup_counter == 8'b11111111)begin
startup_counter <= 8'b00000011;
end else begin
startup_counter <= startup_counter + 8'b1;
end
end
assign O_ST_COUNTER = startup_counter[7:4];
wire [47:0] TimeCounter_Result_wire ;
reg [47:0] TimeCounter_Result_reg = 'b0 ;
reg TimeCounter_Output ;
always @ (posedge CLK_100)begin
TimeCounter_Result_reg <= TimeCounter_Result_wire;
end
TimeCounter TimeCounter_Unit (
CLK ( CLK_100 ), // input wire CLK
A ( 2'b01 ), // input wire [1 : 0] A
C ( TimeCounter_Result_reg ), // input wire [47 : 0] C
P ( TimeCounter_Result_wire ) // output wire [47 : 0] P
);
always @ ( posedge CLK_100 )begin
TimeCounter_Output <= TimeCounter_Result_reg[47];
end
assign O_TIMECOUNTER_OUTPUT = TimeCounter_Output ;
endmodule
综合后的Netlist中选择信号进行捕获的方法。
只有Nets下的信号可以设置mark debug。
从原理上来说是很不合理的。Chipscope的捕获界面中,只有Reg信号可以被抓取,而Vivado是Net,从实际的角度说也是很不合理的,LUT可以直接被抓去,从原理上和时序上,对设计都是不合适的。
在Set Up Debug中,工具会自动分析信号的所在时钟域,并添加时钟。少数情况,可以通过右键点击Select Clock Domain来修改时钟域。
下一页设置存储深度,相比较ChipScope,信号的宽度不需要事先设定好,而是根据捕获信号来自动设定,Vivado确实方便了很多。
设置好之后,可以在属性中修改ILA Core的属性。确认无误后进行Implementation。
不过,从Implementation的结果可以看到,虽然抓取的是LUT的信号,但是ILA的IP已经添加了寄存器进行隔离。从这一结果考虑,Vivado的ILA设计还是很优秀的。
但即使是这样,为了netlist中的Reg型信号无法设置mark debug,确实是一个不好理解的解释。
最终,Vivado Logic Analyzer的设置会以Tcl脚本的形式反应到XDC文件中。
完成Implementation后,生成bit文件,打开Hardware Manager,下载并配置好FPGA,开始Vivado Logic Analyzer的使用。
1 下载好bit文件后的界面如下图所示。
2 这里有个问题,Vivado 20142中,Debug Probes窗口不会自动打开,可以再Windows选项单中找到该窗口。
3 打开Debug Probes窗口后的界面如下图所示。
4 在Debug Probes中,把需要观察的信号拖到Basic Trigger Setup中,可以设置触发信号。
5 设置好触发信号之后,就可以开始捕获信号。
6 每一组触发条件可以设置Operator、Radix和Value来设置具体的触发条件,多个触发条件还可以进行组合。
7 为了便于观察,在Window data depth将数据设为16个数据。
8 设置好之后重新捕获数据,可以看到一次只捕获16个数据。
9 可以设置窗口的数目,这里将Number of Windows设为2,代表两个窗口,每次捕获的数据为4个。
10 重新触发后,可以看到,触发了两次,每次的触发条件都是一致的,即startup_counter = 8’h03。从下方的两个计数器可以看到,是先后的两次捕获。
其实,与chipscope类似,可以设置捕获数据的条件。
1 将Capture mode设置为BASIC。
2 在Basic Trigger Setup下面可以看到Basic Capture Setup的界面。
3 从上两张图可以看到,触发信号为starup_counter,触发条件为03,捕获条件为88,触发位置为7。
4 从捕获结果图来看,一共捕获了16个数据,触发条件处在第7个数据的位置上,该触发条件会被捕获。另外,在触发条件前后的数据,只有数据位88时才会被捕获。
5 将触发位置设为0后重新捕获,可以看到第一个数据是触发条件,随后的数据只有为88才会被捕获。
6 这里,对ChipScope和Vivado Logic Analyzer的功能进行一个初步的比较。
ChipScope Vivado Logic Analyzer Basic
多种触发值 支持 支持
触发条件组合 支持 支持
触发位置选择 支持 支持
多窗口触发 支持 支持
重复触发 支持 支持
条件捕获 支持 支持
状态机触发 16状态 不支持
计数器辅助 支持 不支持
标志位显示 不支持 不支持
重复触发功能在文章中没有涉及。
从该表可以看到,ChipScope的功能似乎较为强大。虽然在设置捕获信号时Vivado较为便捷,但是在调试时似乎不如ChipScope的方便。
需要注意的是,Vivado并没有确实这些功能,而是没有提供在Basic功能中,关于Advancedd用法,会在后续博文中描述。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)