aboutsummaryrefslogtreecommitdiffstats
path: root/mistral
diff options
context:
space:
mode:
Diffstat (limited to 'mistral')
-rw-r--r--mistral/arch.h15
-rw-r--r--mistral/family.cmake2
2 files changed, 12 insertions, 5 deletions
diff --git a/mistral/arch.h b/mistral/arch.h
index c00ee2a7..c13c4c8a 100644
--- a/mistral/arch.h
+++ b/mistral/arch.h
@@ -388,21 +388,28 @@ struct Arch : BaseArch<ArchRanges>
return UpDownhillPipRange(wires.at(wire).wires_uphill, wire, true);
}
- bool checkPipAvail(PipId pip) const override
+ bool is_pip_blocked(PipId pip) const
{
- // Check reserved routes
WireId dst(pip.dst);
const auto &dst_data = wires.at(dst);
if ((dst_data.flags & WireInfo::RESERVED_ROUTE) != 0) {
if (WireId(pip.src) != dst_data.wires_uphill.at(dst_data.flags & 0xFF))
- return false;
+ return true;
}
+ return false;
+ }
+
+ bool checkPipAvail(PipId pip) const override
+ {
+ // Check reserved routes
+ if (is_pip_blocked(pip))
+ return false;
return BaseArch::checkPipAvail(pip);
}
bool checkPipAvailForNet(PipId pip, NetInfo *net) const override
{
- if (!checkPipAvail(pip))
+ if (is_pip_blocked(pip))
return false;
return BaseArch::checkPipAvailForNet(pip, net);
}
diff --git a/mistral/family.cmake b/mistral/family.cmake
index a18b5b27..80b67e63 100644
--- a/mistral/family.cmake
+++ b/mistral/family.cmake
@@ -6,7 +6,7 @@ add_subdirectory(${MISTRAL_ROOT}/libmistral ${CMAKE_CURRENT_BINARY_DIR}/libmistr
find_package(LibLZMA REQUIRED)
foreach(family_target ${family_targets})
- target_include_directories(${family_target} PRIVATE ${MISTRAL_ROOT}/libmistral ${LIBLZMA_INCLUDE_DIRS})
+ target_include_directories(${family_target} PRIVATE ${MISTRAL_ROOT}/libmistral ${CMAKE_CURRENT_BINARY_DIR}/libmistral ${LIBLZMA_INCLUDE_DIRS})
target_link_libraries(${family_target} PRIVATE mistral ${LIBLZMA_LIBRARIES})
# Currently required to avoid issues with mistral (LTO means the warnings can end up in nextpnr)
target_link_options(${family_target} PRIVATE -Wno-maybe-uninitialized -Wno-uninitialized -Wno-unknown-warning-option)