930 likes | 1.07k Views
EDA 原理及应用. 何宾 2008.09. 第九章. 第 9 章. 设计实现和时序仿真 - - 主要内容. 本章首先对建立用户约束文件的方法和设计分区进行了介绍。 随后,本章对 ISE 设计流程的实现过程进行了详细的介绍,其中包括翻译、映射和布局布线的过程。在每个实现步骤中,介绍了属性参数的设置以及查看时序报告的方法。 在此基础上,对布局布线后的设计进行了时序仿真,对设计进行时序仿真分别使用了 Modelsim 仿真器和 ISE 仿真器完成。. 第九章. ●. 设计实现和时序仿真 - 实现过程概述.
E N D
EDA原理及应用 何宾 2008.09
第九章 第9章 设计实现和时序仿真--主要内容 本章首先对建立用户约束文件的方法和设计分区进行了介绍。 随后,本章对ISE设计流程的实现过程进行了详细的介绍,其中包括翻译、映射和布局布线的过程。在每个实现步骤中,介绍了属性参数的设置以及查看时序报告的方法。 在此基础上,对布局布线后的设计进行了时序仿真,对设计进行时序仿真分别使用了Modelsim仿真器和ISE仿真器完成。
第九章 ● 设计实现和时序仿真-实现过程概述 在ISE中的实现(Implement)过程,是将综合输出的逻辑网表翻译成所选器件的底层模块与硬件原语,将设计映射到器件结构上,进行布局布线,达到在选定器件上实现设计的目的。 实现过程主要分为3个步骤:翻译(Translate)逻辑网表,映射(Map)到器件单元与布局布线(Place & Route)。
第九章 ● 设计实现和时序仿真-实现过程概述 翻译的主要作用是将综合输出的逻辑网表翻译为Xilinx特定器件的底层结构和硬件原语。 映射的主要作用是将设计映射到具体型号的器件上。 布局布线的主要作用是调用Xilinx布局布线器,根据用户约束和物理约束,对设计模块进行实际的布局,并根据设计连接,对布局后的模块进行布线,产生PLD配置文件。
第九章 ● 设计实现和时序仿真-建立约束文件 前几章仿真设计的秒表系统,包括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。
第九章 ● 设计实现和时序仿真-设置实现属性参数 实现属性决定了软件映射,布局布线及优化过程。这一部分介绍如何在设计实现中设置其属性的过程,下面给出了设置属性的步骤和方法: 1、在Source Tab选项卡中,选择顶层文件stopwatch; 2、在Processes选项卡中,右键单击Implement Design; 3、选择右键菜单栏中的Properties选项,Processes Properties对话框提供了翻译,映射,布局布线,仿真和时序报告等属性,注意设计实现中不同方面的属性类型; 4、如图9.1,在对话框的右下角,设置属性的显示级别为Advanced,这个全局性的设置,可看到所有可用的属性;
第九章 图9.1 静态时序报告属性设置 ● 设计实现和时序仿真-设置实现属性参数
第九章 设计实现和时序仿真-设置实现属性参数 ● 5、单击Post-Map Static Timing Report Properties类型; 6、将报告类型改为Verbose Report,这个报告将会在映射完成之后产生; 7、单击Post-Place & Route Static Timing Report Properties(布局布线后静态时序报告)类型; 8、将报告类型改为Verbose Report,这个报告将会在布局布线完成之后产生; 9、单击Place & Route Properties类型; 10、如图9.2,将Place & Route Effort Level (Overall)设置为High,这个选项将提高在实现过程中全局布局布线的水平; 11、单击OK退出Process Properties对话框;
第九章 图9.2 布局布线属性设置 设计实现和时序仿真-设置实现属性参数 ●
第九章 ● 设计实现和时序仿真-创建分区 在逻辑设置中一个实例创建一个分区是为了表明在实现过程中这个实例可与重复利用。分区可以嵌套分级并在任何一个设计的HDL模块中定义。在Verilog中分区设置基于模块实例,而在VHDL中,分区设置是基于实体构造。一个由多个实例构成的模块将有多个分区—一个分区对应一个实例。HDL设计的顶层有一个默认分区。分区自动识别输入源的变化,包括HDL的改变,约束改变和命令行的改变。分区的创建在综合工具中完成。下面给出完成设计中的分区操作使能的步骤:
第九章 ● 设计实现和时序仿真-创建分区 1、在Source Tab选项卡中,选择lcd_cntrl_inst 模块并右键单击; 2、在右键菜单中选项New Partition 3、同样对timer_state 执行上述操作 4、同样对timer_inst 执行上述操作 注意:在ISE9.1i中,如果分区设置在原理图模块中,那么不允许进行反复映射。
第九章 图9.3 创建新的分区 ● 设计实现和时序仿真-创建分区 保存状态为继承关系,取决于顶层分区,顶层分区默认为Routing,可以改为Routing,Placement,或Sysnthesis。可在Partition Properties中进行设置。
第九章 ● 设计实现和时序仿真-创建时序约束 用户约束文件(UCF)提供了一个无需回到设计输入工具就能约束逻辑设计的构造方法。可使用约束编辑器和平面图编辑器的图形化界面进行时序和管脚约束。启动约束编辑器,下面给出创建时序约束的步骤: 1、在Source Tab选项卡中,选择Stopwatch; 2、在Processes选项卡中,展开User Constraints层级目录; 3、双击Create Timing Constraints,如图9.4,这时自动执行翻译步骤,然后约束编辑器自动打开。
第九章 图9.4 创建时序约束 ● 设计实现和时序仿真-创建时序约束
第九章 ● 设计实现和时序仿真-设计翻译 在实现过程中,ISE管理文件的创建。ISE工具的属性对话框对其进行设置,这将完全控制设计的实现(implement)过程。一般情况下,先设置选项,然后双击Implement Design执行整个流程,下面将给出设计实现过程中的每一步骤的详细过程。在翻译过程中,NGDBuild程序完成以下功能: 1、将输入设计网表和写入的结果转换成单个综合NGD网表。这个网表描述了设计逻辑,包括布局及时序约束; 2、完成时序规范及逻辑设计规则的检查校验; 3、从用户约束文件(UCF)中,将约束加入综合网表中;
第九章 ● 设计实现和时序仿真-时序约束 当运行创建时序约束(Create Timing Constraints)时,这时自动执行翻译步骤,然后打开约束编辑器。约束编辑器的作用主要包括以下几个方面的内容: 1、编辑在原有UCF文件中的约束; 2、在设计加入新的约束; 约束编辑器中的输入文件包括: 1、NGD(Native Generic Database)文件 NGD文件为映射的输入文件,然后输出NCD (Native Circuit Description)文件; 2、UCF (User Constraint File)文件 默认情况下,当NGD文件打开后,那么使用现存的UCF文件,当然也可重新指定UCF文件;
第九章 图9.5 约束编辑器-全局分支 ● 设计实现和时序仿真-时序约束
第九章 ● 设计实现和时序仿真-时序约束 如图9.5所示,约束编辑器产生一个有效的UCF文件,翻译步骤(NGDBuild)通过使用UCF文件和其设计源网表文件,产生一个新NGD文件。映射过程读取NGD文件。在该设计中,stopwatch.ngd 和stopwatch.ucf文件自动输入到约束编辑器中。 在下面一部分中,与PERIOD,全局OFFSET IN,全局OFFSET OUT和TIMEGRP OFFSET IN有关的约束条件将写入UCF并在随后的实现过程中使用。如图9.6所示,时序约束的全局分支自动显示设计中的所有时钟网络。
第九章 图9.6约束编辑器-全局分支 ● 设计实现和时序仿真-时序约束 下面给出在约束编辑器中编辑约束的步骤: 1、双击与时钟网络CLK相关的周期单元,打开时钟周期对话框; 2、为定义时钟信号,选择Specify Time:可明确地定义时钟的周期; 3、在Time框中输入7.0;
第九章 ● 设计实现和时序仿真-时序约束 4、在单元选择下拉菜单中选择ns; 5、在输入抖动部分, Time框中输入60; 6、在单元选择下拉菜单中选择ps; 7、单击OK,通过全局时钟约束设定来更新周期单元(默认为50%运行周期); 8、单击选择时钟信号的Pad to Setup单元,并输入6ns:设置了输入信号的Global OFFSET IN约束; 9、单击选择时钟信号的Clock to Pad 单元,如图9.7,输入38ns:设置了输入信号的Global OFFSET OUT约束;
第九章 图9.7 时序约束 ● 设计实现和时序仿真-时序约束 10、在Souces界面中,选择时序约束的端口(Port),左侧即为当前的端口列表; 11、在Port Name栏中,选择SF_D<0>; 12、按住Shift键并选择SF_D<7>,即为选择了一组端口; 13、在Group Name框中,输入display_grp,并单击Create Group按钮创建分组; 14、在Select Group下拉菜单中,选择你所创建的分组;
第九章 图9.8 管脚约束 ● 设计实现和时序仿真-时序约束
第九章 图9.9 时序约束 ● 设计实现和时序仿真-时序约束 15、单击Clock to Pad,Clock to Pad对话框被打开; 16、在Timing Requirement 中输入32; 17、在Relative to Clock Pad Net中选择CLK; 18、单击OK; 19、选择File→Save,那么所有的改动都将保存在当前目录下的stopwatch.ucf文件中; 20、选择File→Close,关闭约束编辑器;
第九章 设计实现和时序仿真-管脚和面积约束 ● 利用Floorplan编辑器能添加和编辑定义在NGD文件中的管脚和面积约束。Floorplan 编辑器可以产生一个有效的UCF文件,翻译步骤中使用UCF文件和设计网表文件来产生一个新的NGD文件。Floorplan 编辑器主要是将各个模块进行类似于电路板的全局布局,如Ram模块,数字时钟管理单元 (DCMs), 吉比特收发器 (GTs), 和BUFGs等。 下面主要介绍输入输出模块(IOB)分配信号的过程。Floorplan编辑器通过编辑UCF文件来添加新的布局布线约束。下面给出添加新的布局布线约束的过程:
第九章 设计实现和时序仿真-管脚和面积约束 ● 1、在Sources窗口中,选择stopwatch模块; 2、单击+展开Implement Design目录层级; 3、单击+展开Translate目录层级; 4、如图9.11所示,双击Assign Package Pins Post-Translate,那么Floorplan编辑器自动启动;如果是EDIF工程,双击用户约束目录下的Assign Package Pins; 5、如图9.12所示,选择工作区中的Package标签:视图显示器件封装;
第九章 图9.11 编辑管脚位置 ● 设计实现和时序仿真-管脚和面积约束
第九章 图9.12 Floorplan编辑器 ● 设计实现和时序仿真-管脚和面积约束 6、选择Processes 面板中选择Design Object标签:窗口显示所有设计对象; 7、在Design Object标签中, 在选择过滤器中将 ALL改为IOs, 并输入“LCD_”;
第九章 图9.13 管脚约束 设计实现和时序仿真-管脚和面积约束 ● 8、如图9.13所示,在LOC栏中,约束以下管脚: LCD_E->AB4; LCD_RS->Y14; LCD_RW->W13;
第九章 设计实现和时序仿真-管脚和面积约束 ● 9、在Design Object标签中,选择一下信号进行管脚关联: LAP_LOAD → T16; RESET → U15; MODE → T14; STRTSTOP → T15; 10、一旦管脚锁定,选择File→Save,那么所有修改将被保存在当前目录下的stopwatch.ucf文件中; 11、选择File→Close,关闭Floorplan编辑器;
第九章 ● 设计实现和时序仿真-设计映射 当设计实现策略已经定义完毕(属性及约束)时,可以开始设计映射过程。下面给出实现映射过程的步骤: 1、在Sources窗口中,选择stopwatch模块; 2、在Processes选项卡中,右键单击Map并选择Run(或双击Map); 3、展开Implement Design目录层级,可以实现完成情况;
第九章 ● 设计实现和时序仿真-设计映射 设计映射到CLBs和IOBs,映射完成以下功能: 1、为设计中的所有基本逻辑单元分配CLB和IOB资源; 2、处理布局和时序约束,完成目标器件的优化过程,并在最终的映射网表中执行设计规则的检查。每一步骤都将产生该处理过程的报告,如下表所示:
第九章 设计实现和时序仿真-设计映射 ●
第九章 ● 设计实现和时序仿真-设计映射 下面给出浏览报告的步骤: 1、如图9.14展开翻译(Translate)或映射(Map)目录; 图9.14 映射和翻译进度
第九章 ● 设计实现和时序仿真-设计映射 2、双击翻译报告(Translate report)或映射报告(Map repor); 3、如图9.15,浏览报告并阅读Warnings, Errors和Information等相关信息。设计概要(Design Summary)中也包含这些报告;
第九章 图9.15 对设计的实现报告 ● 设计实现和时序仿真-设计映射
第九章 ● 设计实现和时序仿真-使用时序分析评估块延迟 映射完成后,在映射后静态时序报告(Post-Map Static Timing Report)中有逻辑水平的详细评价来评估设计中的逻辑路径。评估验证了设计中模块延迟的合理性。由于设计还没有真正地布局布线,所以报告中并没有给出实际的布线延迟信息。时序报告描述了逻辑模块的延迟和估算的布局延迟。网络延迟给出了基于模块之间的最优的距离。
第九章 ● 设计实现和时序仿真- 50/50 规则估计时序目标 在映射阶段之后,通过估算设计来预测设计的时延目标的可行性。根据粗略估算准则(50/50 规则)规定在设计布局后在任意一个路由中模块延迟占了总延迟的大概50%。 例如,模块延迟为10ns,那么布局布线后的延迟约束至少为20ns。如果设计较为紧凑,那么映射后静态时序报告中会给出基于模块延迟的和布局延迟的大概的延迟时序约束分析。这个分析帮助计算时序约束是否满足条件,这个报告在映射之后,布局布线之前生成。
第九章 ● 设计实现和时序仿真-时序约束选项中报告路径 使用映射后静态时序报告来计算布局布线过程中可能出现的违反时序规则的情况。下面给出浏览映射后静态时序报告以及检查PERIOD约束步骤: 1、在Processes选项卡中,单击+展开Map层级目录; 2、双击Generate Post-Map Static Timing; 3、如图9.16,打开映射后静态时序报告,双击Analyze Post-Map Static Timing Report,那么分析过程自动启动并显示报告;
第九章 图9.16 处理映射后静态时序报告 ● 设计实现和时序仿真-时序约束选项中报告路径 4、如图9.17所示,选择timing constraint(时序约束)目录下的TS_dcm_inst_CLKX_BUF;
第九章 图9.17 选择映射后时序约束 ● 设计实现和时序仿真-时序约束选项中报告路径 工作区域显示了所选择的约束报告,在这份报告的上方,会发现选定的约束和经过映射工具后的获得的最小周期。默认情况下,只有对三条路径时间约束显示,选择其中一个路由可以看到一个包含的器件和路由的极限延迟。
第九章 ● 设计实现和时序仿真-时序约束选项中报告路径 需要注意的是,该报告显示逻辑的百分比和路由百分比(例如逻辑的88.0 % , 12.0 %的路线)。未布局布线的层的延迟估计根据最佳的模块布线给出。5、报告浏览完毕,选择File → Close来关闭时序分析器。
第九章 设计实现和时序仿真-布局布线验证 ● 设计进过映射后,就可以进行布局布线(PAR,Place & Route)了。通过两种算法完成布局布线过程: 1、时序驱动布局布线:通过输入网表或是约束文件中的时序约束来进行布局布线; 2、非时序驱动布局布线:布局布线过程中忽略所有时序约束; 一旦在前面的步骤中定义了时序约束,那么只会采用第一种算法完成PAR过程;
第九章 ● 设计实现和时序仿真-布局布线验证 下面给出PAR完成后,报告的浏览步骤: 1、在Processes选项卡中,双击Place & Route。布局布线执行完毕后,同样可浏览其报告文件; 2、单击+展开Place & Route层级目录; 3、双击Place & Route Report; 如表9.2所示,同样可以浏览检查Pad Report和Asynchronous Delay Report报告文件。
第九章 设计实现和时序仿真-布局布线验证 ●
第九章 图9.18 布局布线后的报告 ● 设计实现和时序仿真-布局布线验证 如图9.18,给出了布局布线后的详细报告。
第九章 ● 设计实现和时序仿真-用FPGA Editor验证布局布线 使用FPGA Editor(FPGA)编辑器来显示和配置FPGAs,FPGA编辑器可对NCD文件,NMC宏文件和PCF物理约束(Physical Constraints)文件进行读写。FPGA编辑器的功能主要有: 1、在执行自动布局布线之前,对关键性的元件进行布局布线; 2、可手动进行布局布线; 3、在目标器件上增加探针以监测信号状态; 4、可运行BitGen程序并将bitstream文件下载到目标器件中; 5、浏览或改变设置中连接到Integrated Logic Analyzer (ILA)核捕获单元的网络;
第九章 图9.19 观察和编辑路径设计 ● 设计实现和时序仿真-用FPGA Editor验证布局布线 下面给出浏览实际的FPGA布局步骤: 1、单击+展开Place & Route层级目录,双击View/Edit Routed Design (FPGA Editor),如图2.19所示,出现该界面;
第九章 图9.20 FPGA编辑器列表窗口 ● 设计实现和时序仿真-用FPGA Editor验证布局布线 2、如图2.20所示,在FPGA编辑器中,将列表窗口选为All Nets:将看到设计中的所有网络;
第九章 图9.21 时钟网络 ● 设计实现和时序仿真-用FPGA Editor验证布局布线 3、如图2.21所示,选择clk_262144K (时钟) 网络查看时钟网络的输出;
第九章 ● 设计实现和时序仿真-评估布局后时序 设计的布局布线完成后,默认情况下会产生一个布局后时序报告(Post Layout Timing Report)来验证设计是否满足时序要求。报告评估逻辑块延迟及布线延迟。下面给出显示此报告的过程: 1、展开Generate Post-Place & Route Static Timing 层级目录; 2、双击Analyze Post-Place & Route Static Timing Report打开在Timing Analyzer中的报告或者在Design Summary(设计概要)中选择Timing Constraint超链接到Timing Analyzer;