tag 标签: fgpa

相关博文
  • 热度 26
    2015-4-6 09:47
    1564 次阅读|
    3 个评论
    Analyzing Results 这部分算是最重要的一个环节了,不是因为它很难,而因为其他的文档都会跳过分析的环节。 我已经无数次看到设计者花大力气在.sdc上,但却不了解它在final analysis下是什么样的。而这个是一个很重要的技巧。因为可以完善设计者对设计的理解,并帮助设计者完善该.sdc文件。 The Iterative Methodology 当输入约束时,设计者可能会输入错误,所以希望有一个快速的修正、分析、并报告出.sdc文件错误的方法。 首先,进入TimeQuest: 首先推荐点击”Report all Summaries“: 这个操作将会执行以下命令: 1)创建Timing Netlist。默认会创建一个slow timing model netlist。如果设计这想要有一个不同的netlist,可以使用Netlist下拉菜单去 Create Timing Netlist。 2)读取SDC文档。如果有SDC文件被添加入工程(即Assignment-Setting-TimeQuest-Files),那么就被读入,否则系统会搜索和项目名称相符的.sdc文件。如果设计者修改了.sdc文件,则必须重新加载TimeQuest; 3)Update Timing Netlist接下来会将SDC约束加载到设计好的netlist中。 4) Report All Summaries 命令会运行Setup, Hold, Recovery, Removal Summaries,Minimum Pulse Width 检查。这只是基本的概要分析( Device Specific  checks are not run…) 一旦设计者修改了.sdc并保存后,则需要双击Reset Design。这将会退回到TimeQuest创建了netlist但还没读取SDC文件的状态。再双击 Report All Summaries 将会重新读入sdc文件并进行时序分析。 本质来说,方法如下: 1) Open TimeQuest 2) Double-click "Report All Summaries" 3) Analyze results 4) Make changes to .sdc file and save 5) Double-click "Reset Design" 6) Double-click “Report All Summaries” 7) Analyze results 8) Repeat steps 4-7 as necessary 注意这个方法仅仅是在新的约束下重新开展时序分析,但是布线(Fitter)并没有改变。布线仍然是由老的sdc约束决定的,只不过设计者使用新的约束 来分析在原来约束下的布线。所以即使时序约束报错了,那也仅仅代表这设计者需要重新运行place-and-route来重新布线。 A diving tool 之前的章节已经让设计者们运行了“Report All Summaries”, 这一操作将会运行4个主要的时序分析: setup hold recovery removal 左上角的任务框叫做Reports。 面框显示了每一个时钟域的Slack。举例来说,第五行,对于每个由sys_clk驱动的目的寄存器,最差的setup slack是6.975ns。 slack是正的,表示这些路径满足了时序要求。End Point TNS代表了所有的Toltal Negative Slack。 当然,这些仅仅是概述。想要了解更多细节,那么设计者需要右击当前行,然后选择Report Timing…… report timing 对话框弹出的时候会自动选择setup Radio并填好To clock的内容。这个例子中,10条最差的路径会被显示出来,设计者可以随意修改这里的 Tcl command 命令。 注意到,任何report_timing命令都可以从console中复制到用户自己的Tcl 文件中,所以设计者可以在将来的设计中,直接手动输入命令,而不用按这么多按钮。 report_timing       report_timing      - from   source_nodes      - from_clock   source_clock_names      - rise_from_clock   source_clock_names      - fall_from_clock   source_clock_names      - through   thru_node      - to   destination_nodes      - to_clock   destination_clock_names      - rise_to_clock   destination_clock_names      - fall_to_clock   destination_clock_names      - setup   |   -   hold |   - recovery |   - removal      - detail   summary | path_only | path_and_clock   | full_path      - file   file_name      - append      - panel_name   report_name      - stdout      - less_than_slack   slack_limit      - npaths   #_of_paths_to_display // number of paths to report; defaults to 10      - nworst   max_ #_of_paths_per_endpoint      - false_path      - pairs_only      - show_routing      TimeQuest中的report_timing命令是非常重要的一个工具。让我们看上面的那个截图,主要的选项已经显示出来了。From clock 和 To Clock可以将所选时钟的路径过滤出来。下拉菜单允许我们选择已经存在的时钟。      Targets框中的From 和To允许我们只报告特定的点到点路径,也可以使用通配符 “*”指定多路径。看下面的一个例子:           report_timing -from *|egress:egress_inst|* -to *|egress:egress_inst|* -(other options)      如果-from/-to/-through 选项是空着的,那么将被默认为“*”,即所有可能的设备对象都包含在内。      -through选项是为了限制 经过组合逻辑或特定cell引脚的路径。我的个人设计经验指出,这个是很少用到的,而且有时候用起来很麻烦。所以我一直尝试尽可能只使用- from 和-to选项。同时,在每个选项后的 中括号将会开启name finder,这是GUI用来找寻指定name的。这能够保证输入的name和设计中的nodes是匹配的。      我们可以去分析-setup,-hold,-recovery,-removal。这些将会在之后被讨论。      -detail 选项是一个需要被重点关注的项,它有四个options,这里只讨论其中三个。首先讨论summary,选这个只会列出概要信息,即Source Register, Destination Register, Source Clock,Destination Clock, Slack, Setup Relationship, Clock Skew and Data Delay. summary report会报告出更多的细节,如果我们不想要这些细节信息,那么可以使用summary option。一个很好的示例是,将report写到txt文档中,-detail summary可以让文档变得很简洁。      下一个level就是 -path_only。这样就能报告出所有信息,除了clock tree是被报告成一行。当设计者知道所有的clock tree 是正确的,而不想关注它的信息,则可以用这种report。我们可以看summary report中Clock Skew 这一列,如果数值很小,比如比+-150ps小,那么我们就可以认为clock tree在目标和源之间是平衡的。      如果存在时钟偏斜clock skew,那么应当使用-detail full_path来report。这样就能把clock tree的细节详细的报告出来,显示经过的每一个cell,包括input buffer,pll,global buffer(叫做CLKCTRL)等等。如果有clock skew,这样报告出来的细节就可以让设计者知道clock skew 是怎么产生的。-detail full_path选项也推荐在IO分析中使用,因为只有source clock 或者destination clock在FPGA中,其延时在满足时序要求中起了很大作用。      下面是一副对比截图,对比了-detail summary 、-detail path_only 和-detail full_path。注意到clock delay在path_only和full_path命令中都是完全相同的,只是full_path有更多的细节。 quartus II 添加了 +/- 展开功能在Data Path report中。这样我们就可以,即使在使用-detail full_path命令下,也不会被一大堆信息搞的头晕脑胀。 report_timing命令会显示出所有的路径,两点之间可能会存在许多不同的路径。同样的,一个目的地也会包含很多抵达它的路径。因为这样,设计者就可能需要列出很多很多的路径。而checkbox 选项则可以源、目的地间的一条路径。甚至可以通过限制到达目的寄存器的最大点数来过滤report。 最后,在底部,是Tcl 命令输入输出窗口。它可以显示在TimeQuest中运行的Tcl语句的语法。我经常会添加-false_path命令。这样就只有false path被列出来。 Correlating Constraints to the Timing Report 让我们接下来看看一些特定路径的时序报告, 上面是setup analysis,下面则是hold analysis: 我们关注上图第一列。这里我们得到一个8ns的 setup relationship和0ns的hold relationship。中间一列,我们通过添加多周期来open the window,这样setup relationship就变成16ns,而hold relationship仍然是0ns。第三列,我们使用set_max_delay和set_min_delay命令,注意到唯一变化的是setup hold 分析时候Launch edge和latch Edge的时间点。 对于IO口的约束来说,除了要添加 -max -min的值,其他都和上面一样。 setup关系会减去 -max的值,这样就让setup relationship更难满足了,因为Data需要比之前更早到达。而-min值也是被减去的,负值让hold timing 更加严格,因为我们想让数据到达时间在数据要求时间之后。(The -min value is also subtracted, which is why a negative numbermakes hold timing more restrictive, since we want the Data Arrival Path to be longer than theData Required Path.)            
  • 热度 24
    2012-11-13 23:27
    1374 次阅读|
    0 个评论
      郁闷,这已经是第三次写这篇博客,因为前面两次因没保存丢了,你说郁闷不??   说说今天,早上骑着“宝马”上班,早餐没有像往常一样吃包子、喝豆浆,而是吃了个什么粉,怎一个香子了得。上班早上就是无聊的测灵敏度,下午画了画C8051F340的原理图(为做LED显示屏),晚上来准备做自己喜欢吃的“干饭”,就边做边听歌,结果呢,一首“今天”太好听,就忘了自己是谁,“干饭”成了“灰碳饭”!!可只好吃,不吃怎么搞TestBench… 输入激励设置为reg型,输出相应设置为wire类型,双向端口inout在测试中需要进行处理。方法见下: inout bi_dir_port; wire bi_dir_port; reg bi_dir_port_reg; reg bi_dir_port_oe; assign bi_dir_port=bi_dir_port_oe?bi_dir_port_reg:1'bz; 先来个简单的例子: `timescale 1ns/1ns module shift_reg(CLK,RSTn,Load,Sel,Data,Shift_Out); input CLK,RSTn; input Load; input Sel; input Data; output Shift_Out; reg rShift_Out; always @ (posedge CLK or negedge RSTn) begin   if(!RSTn) rShift_Out = 7'b0;   else if(Load) rShift_Out = Data;   else     case (Sel)       2'b00: rShift_Out = rShift_Out;       2'b01: rShift_Out = rShift_Out 1;       2'b10: rShift_Out = rShift_Out 1;       default: rShift_Out = rShift_Out;     endcase end assign Shift_Out = rShift_Out; endmodule 测试激励.v `timescale 1ns/1ns module shift_reg_tp; reg CLK; reg RSTn; reg Load; reg Sel; reg Data; wire Shift_Out;   shift_reg LUT(                 .CLK(CLK),                 .RSTn(RSTn),                 .Load(Load),                 .Sel(Sel),                 .Data(Data),                 .Shift_Out(Shift_Out)                 ); initial begin   CLK = 0;   forever #50 CLK = ~CLK; end initial begin   RSTn = 1;   Sel = 2'b00;   Load = 0;   Data = 8'b0;   #200 RSTn = 0;   #200 RSTn = 1;   #100 Load = 1;   #100 Data = 8'b0000_0001;   #100 Load = 0;   #200 Sel = 2'b00;   #200 Sel = 2'b01;   #200 Sel = 2'b10;   #200 Sel = 2'b11;   #400 $stop; end initial begin   $timeformat(-9,1,"ns",12);   $display(" Time Clk Rst Ld SftRg Data Sel");   $monitor("%t %b %b %b %b %b %b", $realtime,   CLK, RSTn, Load, Shift_Out, Data, Sel); end endmodule 关于ModelSim 仿真小结: 1、当然见工程,来两个.v文件,肯定是要编译通过的,若通不过,希望自己静下心来,逐字逐行慢慢分析吧。 2、Simulate - Start Simulation 则会出现一个对话框,选择测试激励。选择Object 中的任意一个,右击选择Add View 也就添加波形。在之后就是开始仿真,最后看美丽的波形吧!! 不仔细,不静下来,没有红色字体行,是永远也仿真不成功的。好了,赶紧保存,否则有麻烦了!!    
相关资源
  • 所需E币: 1
    时间: 2022-10-29 16:06
    大小: 714.36KB
    上传者: 秋刀红鱼
    XilinxFGPAverilog编码规范
  • 所需E币: 0
    时间: 2021-4-24 17:51
    大小: 111.92MB
    上传者: Argent
    随着FPGA技术的不断发展,许多消费类产品都嵌入了FPGA程序,ZYNQ架构属于主流,搜集的部分有关FPGA学习资料,希望对您有所帮助,欢迎下载。
  • 所需E币: 5
    时间: 2020-1-2 09:40
    大小: 189.92KB
    上传者: quw431979_163.com
    基于FPGA的相检宽带测频系统的设计……
  • 所需E币: 5
    时间: 2020-1-3 18:51
    大小: 1.06MB
    上传者: 二不过三
    灵活的体系结构推动夏普双视角和标准LCD技术……
  • 所需E币: 4
    时间: 2020-1-6 12:44
    大小: 226.54KB
    上传者: givh79_163.com
    High-PerformanceFPGAPLLAnalysiswithTimeQuest……
  • 所需E币: 4
    时间: 2019-12-24 20:07
    大小: 276.26KB
    上传者: quw431979_163.com
    CoolRunnerCPLD内的IrDA和UART设计ApplicationNote:CoolRunnerCPLDRIrDAandUARTDesigninaCoolRunnerCPLDXAPP345(v1.3)December23,2003SummaryThisapplicationnoteillustratestheimplementationofanIrDAandUARTsystemusingaCoolRunnerCPLD.Thefundamentalbuildingblocksrequiredtocreateahalf-duplexIrDAandfull-duplexUARTinterfacedesignisdescribed.Thesourcecodeforthisdesignisavailable……
  • 所需E币: 5
    时间: 2019-12-24 20:07
    大小: 108.17KB
    上传者: quw431979_163.com
    CoolRunner-IICPLD8051微控制器接口ApplicationNote:CoolRunner-IICPLDRCoolRunner-IICPLD8051MicrocontrollerInterfaceXAPP393(v1.0)January15,2003SummaryThisdocumentdetailstheVHDLimplementationofan8051microcontrollerinterfaceinaXilinxCoolRunner-IICPLD.CoolRunnerCPLDsarethelowestpowerCPLDsavailable,makingtheseCPLDstheperfectinterfacedevicesformanyoftoday’spopularmicrocontrollers.To……