相关阅读
SDC命令详解https://blog.csdn.net/weixin_45791458/category_12931432.html
all_outputs命令用于创建一个输出端口对象集合,关于设计对象和集合的更详细介绍,可以参考下面的博客。
Synopsys:设计对象https://chenzhang.blog.csdn.net/article/details/147015140?spm=1001.2014.3001.5502
本文针对Design Compiler,但该命令同样存在于PrimeTime、IC Compiler等工具中,它们大致相同,略有差别。all_outputs命令的BNF范式(有关BNF范式,可以参考以往文章)为:
all_outputs[-clock clock_name][-edge_triggered | -level_sensitive]//注:该命令的选项和参数顺序任意
指定时钟
-clock选项指定了一个时钟对象列表,只有相对这些时钟设置了输出延迟的端口会被包含在集合中,如例1所示。
// 例1
dc_shell> create_clock -period 10 -name clk1
Warning: Creating virtual clock named 'clk1' with no sources. (UID-348)
1
dc_shell> create_clock -period 10 -name clk2
Warning: Creating virtual clock named 'clk2' with no sources. (UID-348)
dc_shell> set_output_delay 0.1 [get_ports out1] -clock clk1
1
dc_shell> set_output_delay 0.2 [get_ports out2] -clock clk2
1
dc_shell> all_outputs
{out1 out2 out3}
dc_shell> all_outputs -clock [get_clocks clk1]
{out1}
dc_shell> all_outputs -clock [get_clocks clk2]
{out2}
指定边沿/电平触发
-edge_triggered选项指定输出延迟是相对外部捕获触发器而言的(不使用-level_sensitive选项);-level_sensitive选项指定输出延迟是相对外部捕获锁存器而言的(使用-level_sensitive选项),如例2所示。
// 例2
dc_shell> create_clock -period 10 -name clk1
Warning: Creating virtual clock named 'clk1' with no sources. (UID-348)
1
dc_shell> create_clock -period 10 -name clk2
Warning: Creating virtual clock named 'clk2' with no sources. (UID-348)
dc_shell> set_output_delay 0.1 [get_ports out1] -clock clk1 -level_sensitive
1
dc_shell> set_output_delay 0.2 [get_ports out2] -clock clk2
1
dc_shell> all_outputs
{out1 out2 out3}
dc_shell> all_outputs -level_sensitive
{out1}
dc_shell> all_outputs -edge_triggered
{out2}
-edge_triggered选项和-level_sensitive选项是互斥的,只能使用其中一个。
写在最后
all_outputs命令在功能上等价于下面这两种get_ports命令。
dc_shell> get_ports -filter "direction==inout or direction==out"
dc_shell> get_ports * -filter "direction==inout or direction=out"
如果想创建端口,使用create_port命令;如果想移除端口,使用remove_port命令;如果想报告端口的详细信息,使用report_port命令。