1 / 103

设计实现和时序仿真

设计实现和时序仿真. 何宾 2011.09. 设计实现和时序仿真 - 本章概要. 本章首先对建立用户约束文件的方法和设计分区进行 了介绍。 随后,本章对 ISE 设计流程的实现过程进行了详细的 介绍,其中包括翻译、映射和布局布线的过程。在每个 实现步骤中,介绍了属性参数的设置以及查看时序报告 的方法。 在此基础上,对布局布线后的设计进行了时序仿真, 对设计进行时序仿真分别使用了 Modelsim 仿真器和 ISE 仿真器完成。. 设计实现和时序仿真 - 实现过程概述. 在 ISE 中的实现( Implement )过程,是将综合输出的逻

cyrah
Download Presentation

设计实现和时序仿真

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 设计实现和时序仿真 何宾 2011.09

  2. 设计实现和时序仿真-本章概要 • 本章首先对建立用户约束文件的方法和设计分区进行 • 了介绍。 • 随后,本章对ISE设计流程的实现过程进行了详细的 • 介绍,其中包括翻译、映射和布局布线的过程。在每个 • 实现步骤中,介绍了属性参数的设置以及查看时序报告 • 的方法。 • 在此基础上,对布局布线后的设计进行了时序仿真, • 对设计进行时序仿真分别使用了Modelsim仿真器和ISE • 仿真器完成。

  3. 设计实现和时序仿真-实现过程概述 • 在ISE中的实现(Implement)过程,是将综合输出的逻 • 辑网表翻译成所选器件的底层模块与硬件原语,将设计映 • 射到器件结构上,进行布局布线,达到在选定器件上实现 • 设计的目的。 • 实现过程主要分为3个步骤:翻译(Translate)逻辑网 • 表,映射(Map)到器件单元与布局布线(Place & • Route)。

  4. 设计实现和时序仿真-实现过程概述 • 翻译的主要作用是将综合输出的逻辑网表翻译为 • Xilinx特定器件的底层结构和硬件原语。 • 映射的主要作用是将设计映射到具体型号的器件上。 • 布局布线的主要作用是调用Xilinx布局布线器,根据 • 用户约束和物理约束,对设计模块进行实际的布局,并根 • 据设计连接,对布局后的模块进行布线,产生PLD配置文 • 件。

  5. 设计实现和时序仿真-继续前面的设计 • 前几章仿真设计的秒表系统,包括5个输入:CLK, • RESET,LAP_LOAD,MODE和SRTSTP。如果已经通过 • 原理图或HDL输入创建了工程,并设计输入了源文件和 • EDIF网表文件。创建UCF文件的步骤: • 1、在Source Tab选项卡中,选择顶层文件stopwatch; • 2、选择Project→New Source,选择Implementation • Constraints File; • 3、输入 stopwatch.ucf 作为文件名,单击Next; • 4、在列表中选择stopwatch文件作为UCF的约束对象文 • 件(UCF一般情况下是对顶层文件的约束),单击Next, • 最后单击Finish。

  6. 设计实现和时序仿真-设计实现过程 • 如果从这章开始设计,需要下载Xilinx提供的前面综 • 合后的设计文件,在ISE中创建一个功能,并且把设计 • 文件添加到工程中。 • 1、解压缩文件wtut_edif.zip到空的工作目录下; • 2、在Zip文件中包含表9.1所给出的文件

  7. 设计实现和时序仿真-设计实现过程 • 3、打开ISE • 在ISim仿真器界面的工作台窗口下的ISim>提示 • 符后面输入ise • 在PC机上,选择开始->所有程序->Xilinx ISE Design • Suite 11->ISE->Project Navigator。

  8. 设计实现和时序仿真-设计实现过程 • 4、创建一个新的工程,然后添加EDIF网表: • 1)选择File->New Project • 2)输入EDIF_Flow作为工程名 • 3)选择EDIF作为top_level SourceType(顶层源文件类型) • 4)点击“Next”按钮 • 5)选择stopwatch.edf作为输入设计文件 • 6)选择stopwatch.ucf作为约束文件 • 7)点击“Next”按钮

  9. 设计实现和时序仿真-设计实现过程 • 8)选择下面: • --Device Family : Spartan3a • --Device : xc3s700a • --Speed Grade : -4 • --package : fg484 • 9)其它属性设置为默认值 • 10)点击“Next”按钮 • 11)点击“Finish”按钮 • 12)复制timer_preset.ngc到EDIF_Flow目录中 • 在Source标签下,选择顶层模块,stopwatch.edf或者 • stopwatch.edn,这使设计可以被实现(implement)。

  10. 设计实现和时序仿真-设置实现属性参数 • 实现属性决定了软件映射,布局布线及优化过程。这 • 一部分介绍如何在设计实现中设置其属性的过程,下面给 • 出了设置属性的步骤和方法: • 1、在Source Tab选项卡中,选择顶层文件stopwatch; • 2、在Processes选项卡中,右键单击Implement • Design; • 3、选择右键菜单栏中的Properties选项,Processes • Properties对话框提供了Translate(翻译),Map(映 • 射),Place and Route(布局布线),Timing Report(时 • 序报告)等属性,注意设计实现中不同方面的属性类型;

  11. 设计实现和时序仿真-设置实现属性参数 • 4、如图9.1,在对话框的右下角,设置属性的显示 • 级别为Advanced,这个全局性的设置,可看到所有可 • 用的属性; • 5、点击Place & Route Properies分类。 • 6、修改Place & Route Effort Level(Overall)为High, • 该属性提高布局布线时的努力级别。

  12. 设计实现和时序仿真-设置实现属性参数

  13. 设计实现和时序仿真-创建时序约束 • 用户约束文件(UCF)提供了一个无需回到设计输入工 • 具就能约束逻辑设计的构造方法。可使用约束编辑器和平 • 面图编辑器的图形化界面进行时序和管脚约束。启动约束 • 编辑器,下面给出创建时序约束的步骤: • 1、在Source Tab选项卡中,选择Stopwatch; • 2、在Processes选项卡中,展开User Constraints层级目 • 录; • 3、双击Create Timing Constraints,如图9.4,这时自动 • 执行翻译步骤,然后约束编辑器自动打开。

  14. 设计实现和时序仿真-创建时序约束

  15. 设计实现和时序仿真-设计翻译 • 在实现过程中,ISE管理文件的创建。ISE工具的属性对 • 话框对其进行设置,这将完全控制设计的实现 • (implement)过程。一般情况下,先设置选项,然后双 • 击Implement Design执行整个流程,下面将给出设计实现 • 过程中的每一步骤的详细过程。在翻译过程中, • NGDBuild程序完成以下功能: • 1、将输入设计网表和写入的结果转换成单个综合NGD • 网表。这个网表描述了设计逻辑,包括布局及时序约束; • 2、完成时序规范及逻辑设计规则的检查校验; • 3、从用户约束文件(UCF)中,将约束加入综合网表 • 中;

  16. 设计实现和时序仿真-时序约束 • 当运行创建时序约束(Create Timing Constraints) • 时,这时自动执行翻译步骤,然后打开约束编辑器。约束 • 编辑器的作用主要包括以下几个方面的内容: • 1、编辑在原有UCF文件中的约束; • 2、在设计加入新的约束; • 约束编辑器中的输入文件包括: • 1、NGD(Native Generic Database)文件 • NGD文件为映射的输入文件,然后输出NCD (Native Circuit Description)文件; • 2、UCF (User Constraint File)文件 • 默认情况下,当NGD文件打开后,那么使用现存的 • UCF文件,当然也可重新指定UCF文件;

  17. 设计实现和时序仿真-时序约束

  18. 设计实现和时序仿真-时序约束 • 如图9.3所示,约束编辑器产生一个有效的UCF文件, • 翻译步骤(NGDBuild)通过使用UCF文件和其设计源网 • 表文件,产生一个新NGD文件。映射过程读取NGD文 • 件。 • 在该设计中,stopwatch.ngd 和stopwatch.ucf文件自动输 • 入到约束编辑器中。 • 在下面一部分中,与PERIOD,全局OFFSET IN,全局 • OFFSET OUT和TIMEGRP OFFSET IN有关的约束条件将 • 写入UCF并在随后的实现过程中使用。如图9.6所示,时序 • 约束的全局分支自动显示设计中的所有时钟网络。

  19. 设计实现和时序仿真-时序约束 • 下面给出在约束编辑器中编辑约束的步骤: • 1、双击与时钟网络CLK相关的周期单元,打开时钟周 • 期对话框; • 2、为定义时钟信号,选择Specify Time:可明确地定义 • 时钟的周期; • 3、在Time框中输入7.0;

  20. 图9.5 INPUT JITTER约束值 设计实现和时序仿真-时序约束 • 4、在单元选择下拉菜单中选择ns; • 5、在输入抖动部分, Time框中输入60; • 6、在单元选择下拉菜单中选择ps; • 7、单击OK,通过全局时钟约束设定来更新周期单元(默认为50%运行周期); • 8、在Constraint Type tree(约束类型树视图)中的 • Timing Constraints(时序约束),选择Input分支条件; • 9、双击Global OFFSET IN约束表中的“clk”信号,来打 • 开创建建立时间(OFFSET IN)向导;

  21. 设计实现和时序仿真-时序约束 • 10、如图9.6所示,保持第一页的默认值,然后点击“Next”

  22. 图9.7 OFFSET IN约束 设计实现和时序仿真-时序约束 • 11、如图9.7所示,在“External setup time”(外部建立时间)(offset in)域中,输入6ns;

  23. 设计实现和时序仿真-时序约束 • 12、在“Data Valid duration”(数据有效周期)域中,输 • 入6ns;这为CLK信号创建一个Global OFFSET IN约束。 • 13、点击“Finish”按钮 . • 14、在Constraint Type tree(约束类型树视图)中 • 的Timing Constraints(时序约束),选择Output分支条 • 件; • 15、双击Global OFFSET OUT约束表中的“clk”信 • 号,来打开创建建立时间(OFFSET OUT)向导;

  24. 设计实现和时序仿真-时序约束 • 16、如图9.8所示,在“External clock to pad”(外部时钟 • 到引脚)(offset out)域中,输入38 ns;这为CLK信号创建一 • 个Global OFFSET OUT约束。 • 17、点击“OK”按钮

  25. 设计实现和时序仿真-时序约束 • 18、如图9.9所示,在没有约束的输出端口表中,使 • 用Shift-Click多重选择sf_d<0>到sf_d<7>信号 。

  26. 设计实现和时序仿真-时序约束 • 19、右击,选择Create Time Group(创建时间 • 组); • 20、在Create Time Group(创建时间组)对话框中, • 输入display_grp,并点击“OK”按钮; • 21、当提示if you would like to create an offset • constraint(是否想创建offset约束),点击“OK”按钮。

  27. 设计实现和时序仿真-时序约束 • 22、如图9.10 • 所示,在 • “External clock to • pad(offset out)”域 • 中输入32ns;

  28. 设计实现和时序仿真-时序约束 • 23、点击“OK”按钮; • 24、在约束编辑器中选择File->Save • 25、选择File->Close,关闭约束编辑器。

  29. 设计实现和时序仿真-使用PlanAhead分配I/O位置 • 利用PlanAhead能添加和编辑定义在NGD文件中的管 • 脚位置和面积组约束。PlanAhead写约束到工程用户约束 • 文件(User Constraint File,UCF)文件。当工程中有多个 • UCF文件的情况下,将问设计人员新的约束写到哪个约 • 束文件中。如果修改了已经存在的约束,它们将写回到 • 最初创建的约束文件中。PlanAhead也提供了设备指定的 • 设计规则检查(Design Rule Check,DRC),来帮助进行引 • 脚规划和布局。

  30. 设计实现和时序仿真-使用PlanAhead分配I/O位置 • 翻译步骤中使用UCF文件和设计网表文件来产生 • 一个新的NGD文件。下面主要介绍输入输出模块 • (IOB)分配信号的过程: • 1、在Sources窗口中,选择stopwatch模块; • 2、单击+展开User Constraints目录层级; • 3、如图9.11所示,双击I/O Pin Planning • (PlanAhead)-Post-Synthesis,将完成用户约束

  31. 设计实现和时序仿真-使用PlanAhead分配I/O位置

  32. 设计实现和时序仿真-使用PlanAhead分配I/O位置 • I/O引脚规划可以在综合前和综合后实现。推荐使用 • 综合后运行I/O引脚规划,这是因为设计包含I/O所需要 • 的信息和时钟相关的设计规则检查,然后能通过 • PlanAhead执行。 • 这个过程启动PlanAhead。如果设计没有完成综合, • ISE将自动运行综合过程,然后再打开PlanAhead。

  33. 设计实现和时序仿真-使用PlanAhead分配I/O位置 • 如图9.12所示,在Welcome to PlanAhead(欢迎 • PlanAhead)屏幕中提供了详细的文档,辅导和其它培训 • 材料的链接,帮助设计人员更好的了解这个工具。更详 • 细的信息可以参考先关的网站。 • 4、点击图9.12界面上的“Close”按钮,进入到 • PlanAhead处理过程中。

  34. 图9.12 PlanAhead欢迎界面 设计实现和时序仿真-使用PlanAhead分配I/O位置

  35. 设计实现和时序仿真-使用PlanAhead分配I/O位置 • 5、如图9.13所示,在I/O端口标签中,在所有端 • 口下展开Scalar Ports。将为lcd_e,lcd_cs,lcd_rw信号 • 创建引脚分配。

  36. 图9.13 PlanAhead界面 设计实现和时序仿真-使用PlanAhead分配I/O位置

  37. 设计实现和时序仿真-使用PlanAhead分配I/O位置 • 6、如图9.14所示,定 • 位lcd_e输出信号,然后 • 点击和拖拽该信号到封 • 装查看界面(Package • view),然后将其放到 • AB4引脚位置。

  38. 设计实现和时序仿真-使用PlanAhead分配I/O位置 • 7、重复前面的过程,放置其它的输出信号: • LCD_RS: Y14 • LCD_RW: W13 • 如图9.15所示,也可以在I/O Port Properities标签中的\ • Site域中输入引脚的位置。

  39. 设计实现和时序仿真-使用PlanAhead分配I/O位置

  40. 设计实现和时序仿真-使用PlanAhead分配I/O位置 • 8、使用拖拽方式,或者输入I/O引脚的方式,将 • 下面的信号放到合适的I/O引脚位置: • LAP_LOAD → T16; • RESET → U15; • MODE → T14; • STRTSTOP → T15; • 9、一旦管脚锁定,选择File→Save Project,那么 • 所有修改将被保存在当前目录下的stopwatch.ucf文件 • 中; • 10、选择File→Exit,关闭PlanAhead工具;

  41. 设计实现和时序仿真-设计映射及时序分析 • 当设计实现策略已经定义完毕(属性及约束) • 时,可以开始设计映射过程。下面给出实现映射过 • 程的步骤: • 1、在Sources窗口中,选择stopwatch模块; • 2、在Processes选项卡中,右键单击Map并选择 • Run(或双击Map);

  42. 设计实现和时序仿真-设计映射及时序分析 • 设计映射到CLBs和IOBs,映射完成以下功能: • 1、为设计中的所有基本逻辑单元分配CLB和IOB资 • 源; • 2、处理布局和时序约束,完成目标器件的优化过程, • 并在最终的映射网表中执行设计规则的检查。每一步骤都 • 将产生该处理过程的报告,如下表所示:

  43. 设计实现和时序仿真-设计映射及时序分析

  44. 设计实现和时序仿真-设计映射及时序分析 • 下面给出浏览报告的步骤: • 1、如图9.16,打开Design Summary/Report窗口;

  45. 设计实现和时序仿真-设计映射及时序分析 • 2、在Design Summary(设计总结)中的Detailed • Reports(详细报告)部分,选择Translation Report(翻译 • 报告)或Map report(映射报告); • 3、查看报告 • 4、设计总结将提供设计结果的总结,并且列出了实 • 现过程中所有的消息(错误,警告、信息)。

  46. 设计实现和时序仿真-设计映射及时序分析

  47. 设计实现和时序仿真-使用时序分析评估块延迟设计实现和时序仿真-使用时序分析评估块延迟 • 映射完成后,在映射后静态时序报告(Post-Map Static • Timing Report)中有逻辑水平的详细评价来评估设计中的 • 逻辑路径。评估验证了设计中模块延迟的合理性。由于设 • 计还没有真正地布局布线,所以报告中并没有给出实际的 • 布线延迟信息。时序报告描述了逻辑模块的延迟和估算的 • 布局延迟。网络延迟给出了基于模块之间的最优的距离。

  48. 设计实现和时序仿真- 50/50 规则估计时序目标 • 在映射阶段之后,通过估算设计来预测设计的时延目标 • 的可行性。根据粗略估算准则(50/50 规则)规定在设计 • 布局后在任意一个路由中模块延迟占了总延迟的大概50%。 • 例如,模块延迟为10ns,那么布局布线后的延迟约束至少 • 为20ns。如果设计较为紧凑,那么映射后静态时序报告中 • 会给出基于模块延迟的和布局延迟的大概的延迟时序约束 • 分析。这个分析帮助计算时序约束是否满足条件,这个报 • 告在映射之后,布局布线之前生成。

  49. 设计实现和时序仿真-时序约束选项中报告路径设计实现和时序仿真-时序约束选项中报告路径 • 使用映射后静态时序报告来计算布局布线过程中可能 • 出现的违反时序规则的情况。下面给出浏览映射后静态时 • 序报告以及检查PERIOD约束步骤: • 1、在Processes选项卡中,单击+展开Map层级目录; • 2、双击Generate Post-Map Static Timing; • 3、如图9.16,打开映射后静态时序报告,双击Analyze • Post-Map Static Timing Report,那么分析过程自动启动 • 并显示报告;

  50. 设计实现和时序仿真-时序约束选项中报告路径设计实现和时序仿真-时序约束选项中报告路径

More Related