diff options
| -rw-r--r-- | CMakeLists.txt | 18 | ||||
| -rw-r--r-- | common/pybindings.cc | 4 | ||||
| -rw-r--r-- | dummy/main.cc | 2 | ||||
| -rw-r--r-- | gui/mainwindow.cc | 37 | ||||
| -rw-r--r-- | ice40/main.cc | 2 | 
5 files changed, 45 insertions, 18 deletions
| diff --git a/CMakeLists.txt b/CMakeLists.txt index b0976d9a..83221f9d 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -82,33 +82,35 @@ set(CMAKE_BUILD_TYPE Debug)  foreach (family ${FAMILIES})      string(TOUPPER ${family} ufamily)      aux_source_directory(${family}/ ${ufamily}_FILES) +    aux_source_directory(tests/${family}/ ${ufamily}_TEST_FILES)      # Add the CLI binary target      add_executable(nextpnr-${family} ${COMMON_FILES} ${${ufamily}_FILES} ${GUI_SOURCE_FILES}) +    target_compile_definitions(nextpnr-${family} PRIVATE MAIN_EXECUTABLE) +      # Add the importable Python module target      PYTHON_ADD_MODULE(nextpnrpy_${family} ${COMMON_FILES} ${${ufamily}_FILES}) -    target_compile_definitions(nextpnrpy_${family} PRIVATE PYTHON_MODULE)      # Add any new per-architecture targets here +    add_executable(nextpnr-${family}-test ${${ufamily}_TEST_FILES} ${COMMON_FILES} ${${ufamily}_FILES}) +    target_link_libraries(nextpnr-${family}-test PRIVATE gtest_main) +    add_test(${family}-test ${CMAKE_CURRENT_BINARY_DIR}/nextpnr-${family}-test) +      # Set ${family_targets} to the list of targets being build for this family -    set(family_targets nextpnr-${family} nextpnrpy_${family}) +    set(family_targets nextpnr-${family} nextpnrpy_${family} nextpnr-${family}-test)      # Include the family-specific CMakeFile      include(${family}/family.cmake)      foreach (target ${family_targets})          # Include family-specific source files to all family targets and set defines appropriately          target_include_directories(${target} PRIVATE ${family}/) -        target_compile_definitions(${target} PRIVATE NEXTPNR_NAMESPACE=nextpnr_${family} ARCH_${ufamily} ARCHNAME=${family} -DQT_NO_KEYWORDS) +        target_compile_definitions(${target} PRIVATE NEXTPNR_NAMESPACE=nextpnr_${family} ARCH_${ufamily} ARCHNAME=${family} QT_NO_KEYWORDS)          target_link_libraries(${target} LINK_PUBLIC ${Boost_LIBRARIES} ${PYTHON_LIBRARIES} ${GUI_LIBRARY_FILES})      endforeach (target) - -    add_executable(nextpnr-${family}-test "") -    target_sources(nextpnr-${family}-test PRIVATE tests/${family}/main.cpp) -    target_link_libraries(nextpnr-${family}-test PRIVATE gtest_main) -    add_test(${family}-test ${CMAKE_CURRENT_BINARY_DIR}/nextpnr-${family}-test)  endforeach (family)  file(GLOB_RECURSE CLANGFORMAT_FILES *.cc *.h)  string(REGEX REPLACE "[^;]*/ice40/chipdbs/chipdb-[^;]*.cc" "" CLANGFORMAT_FILES "${CLANGFORMAT_FILES}")  string(REGEX REPLACE "[^;]*/3rdparty[^;]*" "" CLANGFORMAT_FILES "${CLANGFORMAT_FILES}") +string(REGEX REPLACE "[^;]*/generated[^;]*" "" CLANGFORMAT_FILES "${CLANGFORMAT_FILES}")  add_custom_target(      clangformat diff --git a/common/pybindings.cc b/common/pybindings.cc index 7c43c84f..761d6571 100644 --- a/common/pybindings.cc +++ b/common/pybindings.cc @@ -140,7 +140,7 @@ static wchar_t *program;  void init_python(const char *executable)  { -#ifndef PYTHON_MODULE +#ifdef MAIN_EXECUTABLE      program = Py_DecodeLocale(executable, NULL);      if (program == NULL) {          fprintf(stderr, "Fatal error: cannot decode executable filename\n"); @@ -162,7 +162,7 @@ void init_python(const char *executable)  void deinit_python()  { -#ifndef PYTHON_MODULE +#ifdef MAIN_EXECUTABLE      Py_Finalize();      PyMem_RawFree(program);  #endif diff --git a/dummy/main.cc b/dummy/main.cc index 3b9e6ba3..7aa2f08f 100644 --- a/dummy/main.cc +++ b/dummy/main.cc @@ -17,7 +17,7 @@   *   */ -#ifndef PYTHON_MODULE +#ifdef MAIN_EXECUTABLE  #include <QApplication>  #include "mainwindow.h" diff --git a/gui/mainwindow.cc b/gui/mainwindow.cc index c436fd6c..bae02813 100644 --- a/gui/mainwindow.cc +++ b/gui/mainwindow.cc @@ -18,16 +18,41 @@ MainWindow::MainWindow(Design *_design, QWidget *parent)      ui->setupUi(this);      ui->treeWidget->setColumnCount(1);      ui->treeWidget->setHeaderLabel(QString("Items")); -    QTreeWidgetItem *belroot = new QTreeWidgetItem(ui->treeWidget); -    belroot->setText(0, QString("Bels")); -    ui->treeWidget->insertTopLevelItem(0, belroot); -    QList<QTreeWidgetItem *> items; + +    QTreeWidgetItem *bel_root = new QTreeWidgetItem(ui->treeWidget); +    bel_root->setText(0, QString("Bels")); +    ui->treeWidget->insertTopLevelItem(0, bel_root); +    QList<QTreeWidgetItem *> bel_items;      for (auto bel : design->chip.getBels()) {          auto name = design->chip.getBelName(bel); -        items.append(new QTreeWidgetItem((QTreeWidget *)nullptr, +        bel_items.append(new QTreeWidgetItem((QTreeWidget *)nullptr, +                                         QStringList(QString(name.c_str())))); +    } +    bel_root->addChildren(bel_items); + +    QTreeWidgetItem *wire_root = new QTreeWidgetItem(ui->treeWidget); +    QList<QTreeWidgetItem *> wire_items; +    wire_root->setText(0, QString("Wires")); +    ui->treeWidget->insertTopLevelItem(0, wire_root); +    for (auto wire : design->chip.getWires()) { +        auto name = design->chip.getWireName(wire); +        wire_items.append(new QTreeWidgetItem((QTreeWidget *)nullptr,                                           QStringList(QString(name.c_str()))));      } -    belroot->addChildren(items); +    wire_root->addChildren(wire_items); + +    QTreeWidgetItem *pip_root = new QTreeWidgetItem(ui->treeWidget); +    QList<QTreeWidgetItem *> pip_items; +    pip_root->setText(0, QString("Pips")); +    ui->treeWidget->insertTopLevelItem(0, pip_root); +    for (auto pip : design->chip.getPips()) { +        auto name = design->chip.getPipName(pip); +        pip_items.append(new QTreeWidgetItem((QTreeWidget *)nullptr, +                                         QStringList(QString(name.c_str())))); +    } +    pip_root->addChildren(pip_items); + +      PyImport_ImportModule("emb");      write = [this](std::string s) { diff --git a/ice40/main.cc b/ice40/main.cc index 0e989819..c89079cf 100644 --- a/ice40/main.cc +++ b/ice40/main.cc @@ -17,7 +17,7 @@   *   */ -#ifndef PYTHON_MODULE +#ifdef MAIN_EXECUTABLE  #include <QApplication>  #include <boost/filesystem/convenience.hpp> | 
