相关阅读
Design Compiler
https://blog.csdn.net/weixin_45791458/category_12738116.html?spm=1001.2014.3001.5482
check_design命令可用来检查设计中是否存在一致性问题(用LINT类消息表示),例如无负载的输入端口、无驱动的输出端口等,本文将详细讨论该命令的使用方式。
check_design命令的BNF范式(有关BNF范式,可以参考以往文章)为:
check_design
[-summary]
[-no_warnings]
[-one_level]
[-multiple_designs]
[-no_connection_class]
[-nosplit]
[-unmapped]
[-cells]
[-ports]
[-designs]
[-nets]
[-tristates]
[error-ids]
[-html_file_name html_file]
//注:该命令的选项和参数顺序任意
仅显示汇总
-summary选项用于指定只分类(Designs、Inputs/Outputs、Cells、Nets类)报告警告(Warning)和错误(Error)消息汇总,而不逐条显示警告和错误消息。默认情况下,check_design命令的输出由警告和错误消息汇总、逐条显示的警告消息和错误消息组成。
此时输出将包含下面的信息。
Information: Use the 'check_design' command for
more information about warnings. (LINT-98)
抑制警告消息
-no_warnings选项用于指定只输出错误消息(实测其与-summary选项作用一致,疑似为bug)。
指定只对当前设计执行检查
-one_level选项用于指定只对当前设计(不包括子设计)进行检查。默认情况下,check_design命令会对当前设计及其子设计进行检查。
指定检查多实例化设计
-multiple_designs选项用于指定额外进行多实例化设计(MIM)相关的检查(LINT-45)。默认情况下,不会进行多实例化设计相关的检查。
指定不进行连接类别相关检查
-no_connection_class用于指定不进行连接类别(Connection Class)相关的检查,连接类别用于描述在特定工艺下的连接要求,只有相同连接类别的引脚和端口才可以合法连接。关于连接类别约束的更多信息,可以参考下面的博客。
Design Compiler:什么是代价函数(Cost Function)?
https://blog.csdn.net/weixin_45791458/article/details/149296216?ops_request_misc=elastic_search_misc&request_id=d2b8a7d97d5259884103e3b2a91d5b2d&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~ElasticSearch~search_v2-1-149296216-null-null.541^v3^pc_search_result_blog1&utm_term=%E4%BB%A3%E4%BB%B7%E5%87%BD%E6%95%B0&spm=1018.2226.3001.4450
该选项在处理GTECH网表或普通网表时很有用,因为这类设计中可能会出现连接类别违例。
指定不换行
-nosplit选项用于指定当字段长度超出列宽时不进行换行(适合用diff比较或后处理)。
指定进行未映射单元相关检查
-unmapped选项用于指定额外进行未映射单元(unmapped)相关的检查(如LINT-61)。默认情况下,不会进行未映射单元相关的检查。
指定只进行单元类检查
-cells选项用于指定只进行单元类检查,包括但不限于LINT-0(设计中某个叶单元的输入引脚未连接到任何线网,工具会根据逻辑库假定其逻辑值)、LINT-1(设计中某个单元的输出未驱动任何负载线网,该单元可能会被工具优化删除)、LINT-10(设计中某个单元没有输出引脚,若未受属性保护(例如dont_touch属性),可能会在综合时被移除)、LINT-32(设计中某个子模块实例的引脚被连接到常量0或1,需要确认该连接是否符合预期)、LINT-33(设计中某个子模块实例的多个引脚连接到了同一条线网,需要确认这些重复连接是否符合预期)、LINT-58(设计中某个叶单元的输入引脚连接到了一条无驱动的线网)、LINT-59(设计中某个层次单元的输入引脚内部有负载但外部未连接线网,工具会为其假定一个逻辑值)、LINT-60(设计中某个层次单元的输入引脚既无内部负载也未连接线网,工具会为其假定一个逻辑值)、LINT-61(设计中存在未映射单元)。
指定只进行端口类检查
-ports选项用于指定只进行端口类检查,包括但不限于LINT-5(设计中的某个输出端口没有被任何信号驱动)、LINT-6(设计中的某个输入端口连接到多驱动线网并参与线逻辑,可能是端口方向定义错误)、LINT-8(设计中的某个输入端口没有连接到设计内部任何逻辑,即该输入端口无负载)、LINT-28(设计中的某个端口未连接到任何线网,需确认该端口是否为有意保留)、LINT-29(设计中的某个输入端口被直接连接到输出端口,也就是直接Feedthrough,某些工艺可能要求中间插入缓冲器)、LINT-31(设计中的一个输出端口被直接连接到另一个输出端口,也就是Logically Equivalent Outputs,某些工艺可能不允许这种连接)、LINT-52(设计中的某个输出端口被直接连接到常量0或1,通常可能是设计错误)。
指定只进行设计类检查
-designs选项用于指定只进行设计类检查,包括但不限于LINT-25(某个设计没有任何输出端口,若未受dont_touch属性保护,其实例可能会在综合时被删除)、LINT-46(某单元的非主输出引脚被连接使用,但对应的主输出引脚未连接,违反工艺库的连接规则,这发生在使用发射极耦合逻辑(ECL, Emitter Coupled Logic)工艺的设计中)、LINT-55(某设计不包含任何单元和线网,即黑盒)。
指定只进行线网类检查
-nets选项用于指定只进行线网类检查,包括但不限于LINT-2(某条线网有驱动端但没有任何负载,相关线网及其驱动逻辑可能会被综合优化删除)、LINT-3(设计中某条线网没有任何驱动源,工具会根据逻辑库为其假定一个逻辑值)、LINT-4(设计中某条线网存在多个驱动源,工具会根据逻辑库假定其为线与逻辑)、LINT-35(设计中某条线网存在多个驱动源,工具会根据逻辑库假定其为线或逻辑)、LINT-38(设计中某条线网存在多个驱动源,但工具无法确定其线逻辑类型,可能是设计或逻辑库描述存在问题)、LINT-47(设计中某条线网违反逻辑库定义的连接类别约束,即该线网上连接的引脚不具备共同的合法连接类别)、LINT-54(设计中某条多驱动线网的驱动源之一是常量,通常可能是设计错误)。
指定只进行三态相关检查
-tristates选项用于指定只进行三态相关检查,包括但不限于LINT-34(设计中的三态总线上存在非三态驱动源,可能导致三态总线功能异常)、LINT-63(设计中某条线网只有一个三态驱动源,需确认是否确实需要使用三态结构)。
指定消息ID
可以指定一条消息的ID(LINT类消息)进行报告,此时将只列出该消息的详情。该参数与其他选项的兼容性不好,因此需避免一起使用。
指定重定向到HTML文件
-html_file_name选项指定在check_design命令输出到标准输出的同时,还生成HTML形式的报告,如图1所示,点击数字4会展开报告,显示4个高亮显示的违规项。

图1 HTML版的check_design报告
简单使用
在综合的过程中,Design Compiler可能出现以下信息,以提示用户使用check_design命令进行检查。
Information: Thereare * potential problems in your design. Please run 'check_design' for more information. (LINI-99)
Information: Use the 'check_design' command for
more information about warnings. (LINT-98)




