☰
SDC命令详解:使用all_registers命令进行查询
2026/10/28 3:02:58 网站建设 项目流程

相关阅读

SDC命令详解https://blog.csdn.net/weixin_45791458/category_12931432.html


目录

指定不跨层次

指定时钟

指定上升/下降沿时钟

指定包含时序单元

指定包含时序单元数据引脚

指定包含时序单元时钟引脚

指定包含主从锁存器中从锁存器时钟引脚

指定包含时序单元输出引脚

指定包含锁存器(电平触发)

指定包含触发器(边沿触发)

指定包含主从锁存器(主从电平触发)

指定包含集成时钟门控单元

Multicorner-Multimode支持

写在最后


all_registers命令用于创建一个时序单元及其引脚对象集合,包含当前实例(注意该命令与其他all_*命令的区别)中的所有时序单元及其引脚,关于设计对象和集合的更详细介绍,可以参考下面的博客。

Synopsys:设计对象https://chenzhang.blog.csdn.net/article/details/147015140?spm=1001.2014.3001.5502

本文针对Design Compiler,但该命令同样存在于PrimeTime、IC Compiler等工具中,它们大致相同,略有差别。all_registers命令的BNF范式(有关BNF范式,可以参考以往文章)为:

all_registers [-no_hierarchy] [-clock clock_name | -rise_clock rise_clock_name | -fall_clock fall_clock_name] [-cells] [-data_pins] [-clock_pins] [-slave_clock_pins] [-output_pins] [-level_sensitive] [-edge_triggered] [-master_slave] [-include_icg] //注:该命令的选项和参数顺序任意

指定不跨层次

-no_hierarchy选项指定只在当前实例中搜索,而不进入层次单元内(默认情况下,会搜索当前实例下的整个层次结构),如例1所示。

// 例1 dcnxt_shell> all_registers {u_middle/z_reg u_middle/u_leaf/y_reg} dcnxt_shell> all_registers -no_hierarchy dcnxt_shell> current_instance u_middle Current instance is '/top_module/u_middle'. /top_module/u_middle dcnxt_shell> all_registers {u_middle/z_reg u_middle/u_leaf/y_reg} dcnxt_shell> all_registers -no_hierarchy {u_middle/z_reg}

指定时钟

-clock选项指定了一个时钟对象列表,只有被这些时钟驱动的时序单元会被包含在集合中,如例2所示。

// 例2 dcnxt_shell> create_clock -period 10 -name clk1 Warning: Creating virtual clock named 'clk1' with no sources. (UID-348) 1 dcnxt_shell> create_clock [get_ports clk] -period 10 1 dcnxt_shell> all_registers {u_middle/z_reg u_middle/u_leaf/y_reg} dcnxt_shell> all_registers -clock [get_clocks clk1] dcnxt_shell> all_registers -clock [get_clocks clk] {u_middle/z_reg u_middle/u_leaf/y_reg}

-clock选项、-rise_clock选项和-fall_clock选项是互斥的,只能使用其中一个。

指定上升/下降沿时钟

-rise_clock选项指定了一个时钟对象列表,只有被这些时钟上升沿驱动的时序单元会被包含在集合中;-fall_clock选项指定了一个时钟对象列表,只有被这些时钟下降沿驱动的时序单元会被包含在集合中,如例3所示。

// 例3 dcnxt_shell> create_clock [get_ports clk] -period 10 1 dcnxt_shell> all_registers -clock [get_clocks clk] {u_middle/z_reg u_middle/u_leaf/y_reg} dcnxt_shell> all_registers -rise_clock [get_clocks clk] {u_middle/z_reg} dcnxt_shell> all_registers -fall_clock [get_clocks clk] {u_middle/u_leaf/y_reg}

指定包含时序单元

-cells选项是一个对象类型选项,指定了集合中包含满足条件的时序单元本身(当不指定任何对象类型选项时,默认指定该选项),如例4所示。

// 例4 dcnxt_shell> all_registers {u_middle/z_reg u_middle/u_leaf/y_reg} dcnxt_shell> all_registers -cells {u_middle/z_reg u_middle/u_leaf/y_reg}

指定包含时序单元数据引脚

-data_pins选项是一个对象类型选项,指定了集合中包含满足条件的时序单元的数据引脚(通过引脚对象的is_data_pin属性识别),如例5所示。

// 例5 dcnxt_shell> all_registers -data_pins {u_middle/z_reg/D u_middle/u_leaf/y_reg/D} dcnxt_shell> get_attribute [get_pin u_middle/z_reg/D] is_data_pin true dcnxt_shell> get_attribute [get_pin u_middle/z_reg/CK] is_data_pin false

指定包含时序单元时钟引脚

-clock_pins选项是一个对象类型选项,指定了集合中包含满足条件的时序单元的时钟引脚(通过引脚对象的is_clock_pin属性识别),如例6所示。

// 例6 dcnxt_shell> all_registers -clock_pins {u_middle/z_reg/CK u_middle/u_leaf/y_reg/CK} dcnxt_shell> get_attribute [get_pin u_middle/z_reg/CK] is_clock_pin true dcnxt_shell> get_attribute [get_pin u_middle/z_reg/D] is_clock_pin false

指定包含主从锁存器中从锁存器时钟引脚

-slave_clock_pins选项是一个对象类型选项,指定了集合中包含满足条件的时序单元的从锁存器时钟引脚(通过引脚对象的is_clock_pin属性以及signal_type属性为clocked_on_also识别)。

指定包含时序单元输出引脚

-output_pins选项是一个对象类型选项,指定了集合中包含满足条件的时序单元的输出引脚(通过引脚对象的direction属性识别),如例7所示。

// 例7 dcnxt_shell> all_registers -output_pins {u_middle/z_reg/Q u_middle/u_leaf/y_reg/Q} dcnxt_shell> get_attribute [get_pin u_middle/z_reg/Q] direction out dcnxt_shell> get_attribute [get_pin u_middle/z_reg/D] direction in

指定包含锁存器(电平触发)

-level_sensitive选项指定集合中包含电平触发的锁存器。

指定包含触发器(边沿触发)

-edge_triggered选项指定集合中包含边沿触发的触发器。

指定包含主从锁存器(主从电平触发)

-master_slave选项指定集合中包含双电平触发的主从锁存器。

指定包含集成时钟门控单元

-include_icg选项指定集合中包含集成门控时钟(ICG)单元。

Multicorner-Multimode支持

该命令仅对当前场景生效,换句话说只能在当前场景创建时序单元及其引脚对象集合(在指定时钟时,仅考虑当前场景)。

关于场景的更多介绍,可以参考下面的博客。

Design Compiler:多工艺角和多工作模式(Multicorner-Multimode, MCMM)https://blog.csdn.net/weixin_45791458/article/details/149578771?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522e3267dcc7cc26380435f53994dc8b9b8%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fblog.%2522%257D&request_id=e3267dcc7cc26380435f53994dc8b9b8&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~blog~first_rank_ecpm_v1~rank_v31_ecpm-1-149578771-null-null.nonecase&utm_term=MCMM&spm=1018.2226.3001.4450

写在最后

all_registers命令返回的是时序单元及其引脚对象集合,但该命令会自动调用query_objects命令显示对象名列表,执行该命令后可看到对应列表(列表中的对象名数量最多由collection_result_display_limit变量控制,默认为100)。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询