From 8d30b606e74ede0b6e1a5aea325068b8938ef5df Mon Sep 17 00:00:00 2001 From: Matthias Koefferlein Date: Sun, 14 Jul 2024 23:41:22 +0200 Subject: [PATCH] Test updates * Modifying one test, so it is easier to port to smart device propagation later. * Including a first test for smart device propagation (proves that cheat is no longer required) --- src/lvs/unit_tests/lvsTests.cc | 8 ++++++++ testdata/lvs/SP6TArray_2X4.lvs | 32 +++++++++++++++++++++++++------- testdata/lvs/ringo_simple.lvs | 1 + 3 files changed, 34 insertions(+), 7 deletions(-) diff --git a/src/lvs/unit_tests/lvsTests.cc b/src/lvs/unit_tests/lvsTests.cc index 74e618c27..68ce7bac2 100644 --- a/src/lvs/unit_tests/lvsTests.cc +++ b/src/lvs/unit_tests/lvsTests.cc @@ -179,15 +179,23 @@ TEST(22a_SP6TArray2X4) { run_test (_this, "SP6TArray_2X4.lvs", "test_22a.cir", "SP6TArray_2X4.gds", false, "test_22a.lvsdb", "$test22_texts = false\n$test22_deep = false"); } + TEST(22b_SP6TArray2X4) { run_test (_this, "SP6TArray_2X4.lvs", "test_22b.cir", "SP6TArray_2X4.gds", false, "test_22b.lvsdb", "$test22_texts = true\n$test22_deep = false"); } + TEST(22c_SP6TArray2X4) { run_test (_this, "SP6TArray_2X4.lvs", "test_22c.cir", "SP6TArray_2X4.gds", false, "test_22c.lvsdb", "$test22_texts = false\n$test22_deep = true"); } + TEST(22d_SP6TArray2X4) { run_test (_this, "SP6TArray_2X4.lvs", "test_22d.cir", "SP6TArray_2X4.gds", false, "test_22d.lvsdb", "$test22_texts = true\n$test22_deep = true"); } + +TEST(22e_SP6TArray2X4) +{ + run_test (_this, "SP6TArray_2X4.lvs", "test_22d.cir", "SP6TArray_2X4.gds", false, "test_22d.lvsdb", "$test22_texts = true\n$test22_deep = true\n$test22_nocheat = true"); +} diff --git a/testdata/lvs/SP6TArray_2X4.lvs b/testdata/lvs/SP6TArray_2X4.lvs index c24169edd..d9de000b7 100644 --- a/testdata/lvs/SP6TArray_2X4.lvs +++ b/testdata/lvs/SP6TArray_2X4.lvs @@ -12,6 +12,8 @@ else flat end +nocheat = !!$test22_nocheat + # Define layers nwm = input(64, 20) nsdm = input(93, 44) @@ -161,10 +163,18 @@ extract_devices(diode("sky130_fd_pr__diode_pd2nw_05v5"), { # Transistors # nfet_01v8 -cheat("SP6TCell") do -extract_devices(mos4("sky130_fd_pr__nfet_01v8__model"), { +dex = mos4("sky130_fd_pr__nfet_01v8__model") +dex.smart_device_propagation = nocheat +if nocheat + extract_devices(dex, { "SD" => difftap__conn, "G" => gate__mosfet__nfet_01v8, "tG" => poly__conn, "W" => substrate__Sky130, -}) + }) +else + cheat("SP6TCell") do + extract_devices(dex, { + "SD" => difftap__conn, "G" => gate__mosfet__nfet_01v8, "tG" => poly__conn, "W" => substrate__Sky130, + }) + end end # nfet_01v8_lvt @@ -176,10 +186,18 @@ extract_devices(mos4("sky130_fd_pr__nfet_g5v0d10v5__model"), { "SD" => difftap__conn, "G" => gate__mosfet__nfet_g5v0d10v5, "tG" => poly__conn, "W" => substrate__Sky130, }) # pfet_01v8 -cheat("SP6TCell") do -extract_devices(mos4("sky130_fd_pr__pfet_01v8__model"), { - "SD" => difftap__conn, "G" => gate__mosfet__pfet_01v8, "tG" => poly__conn, "W" => nwm, -}) +dex = mos4("sky130_fd_pr__pfet_01v8__model") +dex.smart_device_propagation = nocheat +if nocheat + extract_devices(dex, { + "SD" => difftap__conn, "G" => gate__mosfet__pfet_01v8, "tG" => poly__conn, "W" => nwm, + }) +else + cheat("SP6TCell") do + extract_devices(dex, { + "SD" => difftap__conn, "G" => gate__mosfet__pfet_01v8, "tG" => poly__conn, "W" => nwm, + }) + end end # pfet_01v8_hvt diff --git a/testdata/lvs/ringo_simple.lvs b/testdata/lvs/ringo_simple.lvs index 057f39c25..61a62e562 100644 --- a/testdata/lvs/ringo_simple.lvs +++ b/testdata/lvs/ringo_simple.lvs @@ -69,6 +69,7 @@ connect_global(ptie, "SUBSTRATE") # Compare section netlist.simplify +align compare