微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 硬件工程师文库 > 专家支招:如何快速解决隔离FPGA设计中的错误

专家支招:如何快速解决隔离FPGA设计中的错误

时间:07-15 来源:Synopsys公司 点击:

效综合或布局布线。由于存在成千上万的RTL和约束源文件,因此可能需要几个星期才能完成首次综合与布局布线。进行FPGA原型设计时,应让ASIC 设计源文件处于"FPGA就绪"状态。举例来说,就是要进行门时钟转换。

  在 FPGA中原型设计的ASIC门控时钟结构并非FPGA实现中的必要环节,这会导致FPGA资源使用效率低下。解决该问题的有效办法就是用FPGA综合软件转换时钟。例如,门控或生成时钟转换功能可将生成时钟和门控时钟逻辑从顺序组件的时钟引脚转移到使能引脚,这样您就能将顺序组件直接绑定到源时钟,消除偏移问题,并减少设计中所需的时钟源数量,进而节约资源。

  在Synplify Premier 软件中启用门控时钟选项:

  – 选择Project->Implementation Options

  – 在GCC & Prototyping Tools 标签中点击Clock Conversion checkbox

  或在TCL中使用以下命令

  set_option -fix_gated_and_generated_ clocks 1

  在Synplify Pro/Premier 中执行门控和生成时钟转换,而set_option -conv_mux_xor_gated_clocks 1则针对基于Synopsys HAPS 的设计在Synplify Premier 时钟树的多路选择器或OR 门上执行门控时钟转换。

  "完整"的系列时钟约束包括在所有正确位置定义时钟并在生成的时钟之间定义关系。有时候,时钟会出于某种原因与真正的源断开关联,例如时钟源和时钟目标端间产生了黑盒,这样会造成顺序组件的时钟缺失或时钟约束放置错误,导致首次时钟转换因为缺少时钟约束而失败。在许多情况下,转换失败是由约束不完整造成的。举例来说,门控逻辑中可能存在一个组合回路,应在时钟转换之前利用异常处理约束将其打破。综合编译阶段之后会提供一个门控时钟报告,告诉您有哪些门控和生成时钟已被转换以及被转换时钟的名称、类型、分组和相关约束。另一个时钟列表则显示的是未转换的时钟,并包含故障信息,用于说明原因。图2 给出了报告实例。

  

  举例来说,如果设计中有黑盒子,您可以在RTL中指定具体的软件命令,用于为自动化门控时钟转换提供辅助。比方说,采用 syn_gatedclk_clock_en 指令在黑盒子中指定启用引脚的名称,用syn_gatedclk_clock_en_polarity 指令指出黑盒子上时钟使能端口的极性。每个转换实例和驱动实例的时钟引脚都被赋予一个可搜索的属性,从而能在设计数据库中识别,并提取到定制 TLC/Find 脚本生成报告中。

  端口不匹配

  设计包含公司内外部提供的文件。在设计中进行IP 实例化或预验证分级模块时,经常会出现"端口不匹配"错误,而且难以检测,特别是出现在混合语言设计中更是如此。举例来说,如果顶层VHDL实体 "Top"实例化Verilog 模块"sub",那么顶层VHDL声明sub 有4 位端口,而实际Verilog 模块只有3 位端口。就Synplify Premier 软件而言,会立即将其标记为不匹配,并在单独的日志报告中通过超级链接引用该错误。

  视图work.sub.syn_black_box 和视图work.sub.verilog 之间的接口不匹配

  细节:

  ========

  源视图work.sub.syn_black_box 中的以下位端口在目标视图work.sub.verilog 中不存在。

  =======================================

  Bit Port in1[4]

  Bit Port in2[4]

  Bit Port dout[4]

  多级层次中,如何将不匹配问题追踪到问题模块的RTL定义呢?工具应以某种方式给所有模块实例打标签,比方说采用orig_inst_of 属性。属性的值包括模块的原始RTL名称,可方便地检索至RTL。例如,假设sub_3s 导致端口不匹配错误,那么我们就能用以下TCL命令找回RTL模块的原始名称"sub":get_prop -prop orig_inst_of {v:sub_3s} 返回值为"sub"。

  约束的清除

  指定充足且正确的约束将影响到结果质量和功能。约束声明通常应包括三个元素:主时钟和时钟组定义、异步时钟声明、错误和多循环路径声明。

  进行综合之前检查约束是一个很好的方法。提供约束查看器的工具能发现语法错误并分析时序约束和实例名称是否适用,警示问题所在。比方说,它会报告通配符扩展后约束如何应用以及在定义时钟约束后产生的时钟关系。它会标出那些由于参数或对象类型无效或不存在而未被应用的时序约束。

  进行综合之前,在Synplify Pro/Premier 软件中生成名为projectName_cck.rpt 的约束检查器报告:

  Synplify Pro/Premier GUI: Run -> Constraint check

  或采用TCL命令:project -run constraint_check

  注意,要避免潜在的MetA不稳定性,应运行"异步时钟报告",提醒您注意那些在一个时钟域启动而在另一个时钟域中结束的路径。

在Synp

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top