From 261b14a260eca197741f2d3f2ac65aeb91db3109 Mon Sep 17 00:00:00 2001 From: Matthias Koefferlein Date: Sun, 6 Jan 2019 02:15:04 +0100 Subject: [PATCH] WIP: GSI binding of LayoutToNetlist::build_nets --- src/db/db/gsiDeclDbLayoutToNetlist.cc | 17 +++++++++++++++-- .../algo/device_extract_au1_rebuild_fr.gds | Bin 34686 -> 8206 bytes 2 files changed, 15 insertions(+), 2 deletions(-) diff --git a/src/db/db/gsiDeclDbLayoutToNetlist.cc b/src/db/db/gsiDeclDbLayoutToNetlist.cc index 2b6b003fc..a9e50a9be 100644 --- a/src/db/db/gsiDeclDbLayoutToNetlist.cc +++ b/src/db/db/gsiDeclDbLayoutToNetlist.cc @@ -43,6 +43,19 @@ static db::Cell *l2n_internal_top_cell (db::LayoutToNetlist *l2n) return const_cast (l2n->internal_top_cell ()); } +static void build_net (const db::LayoutToNetlist *l2n, const db::Net &net, db::Layout &target, db::Cell &target_cell, const std::map &lmap, const tl::Variant &cell_name_prefix) +{ + std::string p = cell_name_prefix.to_string (); + l2n->build_net (net, target, target_cell, lmap, cell_name_prefix.is_nil () ? 0 : p.c_str ()); +} + +static void build_all_nets (const db::LayoutToNetlist *l2n, const db::CellMapping &cmap, db::Layout &target, const std::map &lmap, const tl::Variant &net_cell_name_prefix, const tl::Variant &circuit_cell_name_prefix) +{ + std::string cp = circuit_cell_name_prefix.to_string (); + std::string np = net_cell_name_prefix.to_string (); + l2n->build_all_nets (cmap, target, lmap, net_cell_name_prefix.is_nil () ? 0 : np.c_str (), circuit_cell_name_prefix.is_nil () ? 0 : cp.c_str ()); +} + Class decl_dbLayoutToNetlist ("db", "LayoutToNetlist", gsi::constructor ("new", &make_l2n, gsi::arg ("iter"), "@brief The constructor\n" @@ -151,7 +164,7 @@ Class decl_dbLayoutToNetlist ("db", "LayoutToNetlist", "If 'recursive'' is true, the returned region will contain the shapes of\n" "all subcircuits too.\n" ) + - gsi::method ("build_net", &db::LayoutToNetlist::build_net, gsi::arg ("net"), gsi::arg ("target"), gsi::arg ("target_cell"), gsi::arg ("lmap"), gsi::arg ("cell_name"), + gsi::method_ext ("build_net", &build_net, gsi::arg ("net"), gsi::arg ("target"), gsi::arg ("target_cell"), gsi::arg ("lmap"), gsi::arg ("cell_name"), "@brief Builds a net representation in the given layout and cell\n" "\n" "This method has two modes: recursive and top-level mode. In recursive mode,\n" @@ -169,7 +182,7 @@ Class decl_dbLayoutToNetlist ("db", "LayoutToNetlist", "@param lmap Target layer indexes (keys) and net regions (values)\n" "@param cell_name_prefix Chooses recursive mode if non-nil\n" ) + - gsi::method ("build_all_nets", &db::LayoutToNetlist::build_all_nets, gsi::arg ("cmap"), gsi::arg ("target"), gsi::arg ("lmap"), gsi::arg ("net_cell_name_prefix"), gsi::arg ("circuit_cell_name_prefix"), + gsi::method_ext ("build_all_nets", &build_all_nets, gsi::arg ("cmap"), gsi::arg ("target"), gsi::arg ("lmap"), gsi::arg ("net_cell_name_prefix"), gsi::arg ("circuit_cell_name_prefix"), "@brief Builds a full hierarchical representation of the nets\n" "\n" "This method copies all nets into cells corresponding to the circuits. It uses the cmap\n" diff --git a/testdata/algo/device_extract_au1_rebuild_fr.gds b/testdata/algo/device_extract_au1_rebuild_fr.gds index 093c327a65ea4a78c6e6937879744359a79cfd88..4673a339ef10cda6cd2e53747b38ed06b29ac6db 100644 GIT binary patch delta 573 zcmey@$JFPb#K6YD#1z3G!^p(`n1K<*W8h`rMrKb`QWwM!oLnXQ7>j7095&G;`9y0B z6BxMI*g}FF{el@7SlAgDWLR-JV6s4#2BXnr#&pfe7vf|$*Jtfx#A3By4oK0%0+Y$H z3W7|A43i6#%qLg-^KNF!t;C{!b5EWu6Q(hncNM(Erg}@!XJ$;*lXsNO#uVM0Qf|*a zxwFD}azGtFm^NsJ&STi&`N{H? zsz4JV{5=&AKFH+L6{cWuki0@QR6ST+0IcUu6+{dq2U6ou3*m#rL41(yATvPXAie-p WJwzO02FQMpI|QnDHvedCV*~(rn~~@M literal 34686 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