From 16a92707fb1ff725fba82c993bf93728227e0f34 Mon Sep 17 00:00:00 2001 From: Akash Levy Date: Sun, 16 Nov 2025 18:34:37 -0500 Subject: [PATCH] Fix `isBuffer` (#329) * Add support for "well" direction type (nwell, pwell, etc.), and fix isBuffer (+ other functions) to accommodate wells * Just fix isBuffer issue --- liberty/Liberty.cc | 3 ++- test/get_is_buffer.ok | 1 + test/get_is_buffer.tcl | 5 +++++ test/get_is_buffer.v | 11 +++++++++++ test/regression_vars.tcl | 1 + 5 files changed, 20 insertions(+), 1 deletion(-) create mode 100644 test/get_is_buffer.ok create mode 100644 test/get_is_buffer.tcl create mode 100644 test/get_is_buffer.v diff --git a/liberty/Liberty.cc b/liberty/Liberty.cc index c4d9fdd3..3cf867f2 100644 --- a/liberty/Liberty.cc +++ b/liberty/Liberty.cc @@ -1226,7 +1226,8 @@ LibertyCell::bufferPorts(// Return values. } output = port; } - else if (!dir->isPowerGround()) { + else if (!port->isPwrGnd()) { + // Invalid direction. input = nullptr; output = nullptr; break; diff --git a/test/get_is_buffer.ok b/test/get_is_buffer.ok new file mode 100644 index 00000000..655d42ed --- /dev/null +++ b/test/get_is_buffer.ok @@ -0,0 +1 @@ +buf_inst diff --git a/test/get_is_buffer.tcl b/test/get_is_buffer.tcl new file mode 100644 index 00000000..c02f682e --- /dev/null +++ b/test/get_is_buffer.tcl @@ -0,0 +1,5 @@ +# is_buffer property +read_liberty ../examples/sky130hd_tt.lib.gz +read_verilog get_is_buffer.v +link_design dut +report_object_full_names [get_cells -filter is_buffer] diff --git a/test/get_is_buffer.v b/test/get_is_buffer.v new file mode 100644 index 00000000..91f8afea --- /dev/null +++ b/test/get_is_buffer.v @@ -0,0 +1,11 @@ +module dut ( + input A, + output Y +); + + sky130_fd_sc_hd__buf_2 buf_inst ( + .A(A), + .X(Y) + ); + +endmodule diff --git a/test/regression_vars.tcl b/test/regression_vars.tcl index c8e662e7..f3eb42e9 100644 --- a/test/regression_vars.tcl +++ b/test/regression_vars.tcl @@ -140,6 +140,7 @@ record_example_tests { record_sta_tests { disconnect_mcp_pin get_filter + get_is_buffer get_is_memory get_lib_pins_of_objects get_noargs