From 80d86cc425a8f855143cb98ab8712cbf9b280475 Mon Sep 17 00:00:00 2001 From: Matthias Koefferlein Date: Fri, 28 Jun 2019 11:27:43 +0200 Subject: [PATCH] WIP: netlist browser - allow switching between L2N and LVSDB view --- src/db/db/dbLayoutToNetlistWriter.cc | 2 +- src/laybasic/laybasic/NetlistBrowserPage.ui | 30 +++++++++++++++++++ .../laybasic/layNetlistBrowserPage.cc | 29 +++++++++++++++++- src/laybasic/laybasic/layNetlistBrowserPage.h | 2 ++ 4 files changed, 61 insertions(+), 2 deletions(-) diff --git a/src/db/db/dbLayoutToNetlistWriter.cc b/src/db/db/dbLayoutToNetlistWriter.cc index a60405ab8..3b3909197 100644 --- a/src/db/db/dbLayoutToNetlistWriter.cc +++ b/src/db/db/dbLayoutToNetlistWriter.cc @@ -535,7 +535,7 @@ void std_writer_impl::write (const db::DCplxTrans &tr) if (! first) { *mp_stream << " "; } - *mp_stream << Keys::location_key << "(" << tr.disp ().x () / m_dbu << " " << tr.disp ().y () / m_dbu << ")"; + *mp_stream << Keys::location_key << "(" << floor (0.5 + tr.disp ().x () / m_dbu) << " " << floor (0.5 + tr.disp ().y () / m_dbu) << ")"; } template diff --git a/src/laybasic/laybasic/NetlistBrowserPage.ui b/src/laybasic/laybasic/NetlistBrowserPage.ui index 4fc9a5289..84373f842 100644 --- a/src/laybasic/laybasic/NetlistBrowserPage.ui +++ b/src/laybasic/laybasic/NetlistBrowserPage.ui @@ -132,6 +132,36 @@ + + + + Qt::Horizontal + + + QSizePolicy::Fixed + + + + 32 + 20 + + + + + + + + Netlist + + + + + + + Cross-Ref + + + diff --git a/src/laybasic/laybasic/layNetlistBrowserPage.cc b/src/laybasic/laybasic/layNetlistBrowserPage.cc index 12714d998..af6bc6494 100644 --- a/src/laybasic/laybasic/layNetlistBrowserPage.cc +++ b/src/laybasic/laybasic/layNetlistBrowserPage.cc @@ -192,6 +192,9 @@ NetlistBrowserPage::NetlistBrowserPage (QWidget * /*parent*/) connect (forward, SIGNAL (clicked ()), this, SLOT (navigate_forward ())); connect (backward, SIGNAL (clicked ()), this, SLOT (navigate_back ())); + connect (show_netlist, SIGNAL (clicked ()), this, SLOT (mode_changed ())); + connect (show_xref, SIGNAL (clicked ()), this, SLOT (mode_changed ())); + connect (actionExportAll, SIGNAL (triggered ()), this, SLOT (export_all ())); connect (actionExportSelected, SIGNAL (triggered ()), this, SLOT (export_selected ())); @@ -582,6 +585,12 @@ NetlistBrowserPage::info_button_pressed () mp_info_dialog->show (); } +void +NetlistBrowserPage::mode_changed () +{ + setup_trees (); +} + static QModelIndex find_next (QTreeView *view, QAbstractItemModel *model, const QRegExp &to_find, const QModelIndex &from) { QModelIndex index = from; @@ -721,9 +730,26 @@ NetlistBrowserPage::set_db (db::LayoutToNetlist *l2ndb) db::LayoutVsSchematic *lvsdb = dynamic_cast (l2ndb); mp_database.reset (l2ndb); + show_netlist->setVisible (lvsdb != 0); + show_xref->setVisible (lvsdb != 0); + + bool se = m_signals_enabled; + m_signals_enabled = false; + show_netlist->setChecked (lvsdb == 0); + show_xref->setChecked (lvsdb != 0); + m_signals_enabled = se; + clear_markers (); highlight (std::vector (), std::vector (), std::vector (), std::vector ()); + m_cell_context_cache = db::ContextCache (mp_database->internal_layout ()); + + setup_trees (); +} + +void +NetlistBrowserPage::setup_trees () +{ if (! mp_database.get ()) { delete directory_tree->model (); directory_tree->setModel (0); @@ -732,7 +758,8 @@ NetlistBrowserPage::set_db (db::LayoutToNetlist *l2ndb) return; } - m_cell_context_cache = db::ContextCache (mp_database->internal_layout ()); + db::LayoutToNetlist *l2ndb = mp_database.get (); + db::LayoutVsSchematic *lvsdb = show_netlist->isChecked () ? 0 : dynamic_cast (l2ndb); { // NOTE: with the tree as the parent, the tree will take over ownership of the model diff --git a/src/laybasic/laybasic/layNetlistBrowserPage.h b/src/laybasic/laybasic/layNetlistBrowserPage.h index 17924cded..784ddb914 100644 --- a/src/laybasic/laybasic/layNetlistBrowserPage.h +++ b/src/laybasic/laybasic/layNetlistBrowserPage.h @@ -173,6 +173,7 @@ private slots: void selection_changed (); void browse_color_for_net (); void select_color_for_net (); + void mode_changed (); protected: bool eventFilter (QObject *watched, QEvent *event); @@ -209,6 +210,7 @@ private: db::ContextCache m_cell_context_cache; void set_db (db::LayoutToNetlist *l2ndb); + void setup_trees (); void add_to_history (void *id, bool fwd); void navigate_to (void *id, bool forward = true); void adjust_view ();