make update of tree for nets and cells partial
This commit is contained in:
parent
730e56e3dd
commit
139f7e0903
@ -338,48 +338,78 @@ void DesignWidget::newContext(Context *ctx)
|
|||||||
for (auto pip : nameToItem[2].toStdMap()) {
|
for (auto pip : nameToItem[2].toStdMap()) {
|
||||||
pip_root->addChild(pip.second);
|
pip_root->addChild(pip.second);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
nets_root = new QTreeWidgetItem(treeWidget);
|
||||||
|
nets_root->setText(0, "Nets");
|
||||||
|
treeWidget->insertTopLevelItem(0, nets_root);
|
||||||
|
|
||||||
|
cells_root = new QTreeWidgetItem(treeWidget);
|
||||||
|
cells_root->setText(0, "Cells");
|
||||||
|
treeWidget->insertTopLevelItem(0, cells_root);
|
||||||
|
|
||||||
updateTree();
|
updateTree();
|
||||||
}
|
}
|
||||||
|
|
||||||
void DesignWidget::updateTree()
|
void DesignWidget::updateTree()
|
||||||
{
|
{
|
||||||
clearProperties();
|
if (!ctx)
|
||||||
delete nets_root;
|
return;
|
||||||
delete cells_root;
|
|
||||||
nameToItem[3].clear();
|
|
||||||
nameToItem[4].clear();
|
|
||||||
|
|
||||||
|
clearProperties();
|
||||||
|
|
||||||
|
// treeWidget->setSortingEnabled(false);
|
||||||
|
|
||||||
|
// Remove nets not existing any more
|
||||||
|
QMap<QString, QTreeWidgetItem *>::iterator i = nameToItem[3].begin();
|
||||||
|
while (i != nameToItem[3].end()) {
|
||||||
|
QMap<QString, QTreeWidgetItem *>::iterator prev = i;
|
||||||
|
++i;
|
||||||
|
if (ctx->nets.find(ctx->id(prev.key().toStdString())) == ctx->nets.end()) {
|
||||||
|
if (treeWidget->currentItem() == prev.value())
|
||||||
|
treeWidget->setCurrentItem(nets_root);
|
||||||
|
if (highlightSelected.contains(prev.value()))
|
||||||
|
highlightSelected.remove(prev.value());
|
||||||
|
delete prev.value();
|
||||||
|
nameToItem[3].erase(prev);
|
||||||
|
}
|
||||||
|
}
|
||||||
// Add nets to tree
|
// Add nets to tree
|
||||||
nets_root = new QTreeWidgetItem(treeWidget);
|
for (auto &item : ctx->nets) {
|
||||||
nets_root->setText(0, "Nets");
|
auto id = item.first;
|
||||||
treeWidget->insertTopLevelItem(0, nets_root);
|
QString name = QString(id.c_str(ctx));
|
||||||
if (ctx) {
|
if (!nameToItem[3].contains(name)) {
|
||||||
for (auto &item : ctx->nets) {
|
|
||||||
auto id = item.first;
|
|
||||||
QString name = QString(id.c_str(ctx));
|
|
||||||
IdStringTreeItem *newItem = new IdStringTreeItem(id, ElementType::NET, name, nullptr);
|
IdStringTreeItem *newItem = new IdStringTreeItem(id, ElementType::NET, name, nullptr);
|
||||||
|
nets_root->addChild(newItem);
|
||||||
nameToItem[3].insert(name, newItem);
|
nameToItem[3].insert(name, newItem);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
for (auto item : nameToItem[3].toStdMap()) {
|
|
||||||
nets_root->addChild(item.second);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
// Remove cells not existing any more
|
||||||
|
i = nameToItem[4].begin();
|
||||||
|
while (i != nameToItem[4].end()) {
|
||||||
|
QMap<QString, QTreeWidgetItem *>::iterator prev = i;
|
||||||
|
++i;
|
||||||
|
if (ctx->cells.find(ctx->id(prev.key().toStdString())) == ctx->cells.end()) {
|
||||||
|
if (treeWidget->currentItem() == prev.value())
|
||||||
|
treeWidget->setCurrentItem(cells_root);
|
||||||
|
if (highlightSelected.contains(prev.value()))
|
||||||
|
highlightSelected.remove(prev.value());
|
||||||
|
delete prev.value();
|
||||||
|
nameToItem[4].erase(prev);
|
||||||
|
}
|
||||||
|
}
|
||||||
// Add cells to tree
|
// Add cells to tree
|
||||||
cells_root = new QTreeWidgetItem(treeWidget);
|
for (auto &item : ctx->cells) {
|
||||||
cells_root->setText(0, "Cells");
|
auto id = item.first;
|
||||||
treeWidget->insertTopLevelItem(0, cells_root);
|
QString name = QString(id.c_str(ctx));
|
||||||
if (ctx) {
|
if (!nameToItem[4].contains(name)) {
|
||||||
for (auto &item : ctx->cells) {
|
|
||||||
auto id = item.first;
|
|
||||||
QString name = QString(id.c_str(ctx));
|
|
||||||
IdStringTreeItem *newItem = new IdStringTreeItem(id, ElementType::CELL, name, nullptr);
|
IdStringTreeItem *newItem = new IdStringTreeItem(id, ElementType::CELL, name, nullptr);
|
||||||
|
cells_root->addChild(newItem);
|
||||||
nameToItem[4].insert(name, newItem);
|
nameToItem[4].insert(name, newItem);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
for (auto item : nameToItem[4].toStdMap()) {
|
// treeWidget->sortByColumn(0, Qt::AscendingOrder);
|
||||||
cells_root->addChild(item.second);
|
// treeWidget->setSortingEnabled(true);
|
||||||
}
|
|
||||||
}
|
}
|
||||||
QtProperty *DesignWidget::addTopLevelProperty(const QString &id)
|
QtProperty *DesignWidget::addTopLevelProperty(const QString &id)
|
||||||
{
|
{
|
||||||
|
@ -120,7 +120,7 @@ void Worker::place(bool timing_driven)
|
|||||||
Q_EMIT taskStarted();
|
Q_EMIT taskStarted();
|
||||||
try {
|
try {
|
||||||
ctx->timing_driven = timing_driven;
|
ctx->timing_driven = timing_driven;
|
||||||
log_info("Assigned budget %0.2f MHz",ctx->target_freq / 1e6);
|
log_info("Assigned budget %0.2f MHz", ctx->target_freq / 1e6);
|
||||||
assign_budget(ctx);
|
assign_budget(ctx);
|
||||||
Q_EMIT place_finished(ctx->place());
|
Q_EMIT place_finished(ctx->place());
|
||||||
} catch (WorkerInterruptionRequested) {
|
} catch (WorkerInterruptionRequested) {
|
||||||
|
Loading…
Reference in New Issue
Block a user