多级层次中,如何将不匹配问题追踪到问题模块的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不稳定性,应运行“异步时钟报告”,提醒您注意那些在一个时钟域启动而在另一个时钟域中结束的路径。
在Synplify Pro/Premier 软件中生成时钟同步报告projectName_async_clk.rpt.csv:
Synplify Pro/Premier GUI:Analysis->Timing Analyst并选择Generate Asynchronous Clock Report 选项。
采用TCL命令: set_option -reporting_async_clock
正确的方法是确保您充分且全面地对设计进行约束,而且不会过度约束(过度会导致运行时间延长,生成关键路径错误报告)。确保您已完全指定多周期和错误路径,并且已为得到的时钟设置了约束(set_multicycle_path,set_false_path)。
缩短调试时间
实施潜在的RTL或约束故障解决方案可能需要好几个小时才能看出结果。我们来看看如何利用分级“分治法”设计方法和“错误继续”功能在单次综合迭代中发现多个错误,从而减少迭代次数。
上一页 [1] [2] [3] [4] [5] [6] 下一页
上一篇:点接触型二极管的特性分类