相關閱讀
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命令。