diff --git a/device/api/umd/device/tt_device/tt_device.h b/device/api/umd/device/tt_device/tt_device.h index 14b846b0..81799931 100644 --- a/device/api/umd/device/tt_device/tt_device.h +++ b/device/api/umd/device/tt_device/tt_device.h @@ -34,6 +34,9 @@ class TLBManager; class TTDevice { public: + // TODO #526: This is a hack to allow UMD to use the NOC1 TLB. Don't use this function. + static void use_noc1(bool use_noc1); + /** * Creates a proper TTDevice object for the given PCI device number. */ diff --git a/device/cluster.cpp b/device/cluster.cpp index f4960198..0494ac7d 100644 --- a/device/cluster.cpp +++ b/device/cluster.cpp @@ -57,6 +57,8 @@ using namespace boost::interprocess; using namespace tt; using namespace tt::umd; +extern bool umd_use_noc1; + static const uint32_t MSG_ERROR_REPLY = 0xFFFFFFFF; // TLB size for DRAM on blackhole - 4GB @@ -3440,7 +3442,8 @@ tt_xy_pair Cluster::translate_to_api_coords(const chip_id_t chip, const tt::umd: tt_xy_pair Cluster::translate_chip_coord_virtual_to_translated(const chip_id_t chip_id, const tt_xy_pair core) const { CoreCoord core_coord = get_soc_descriptor(chip_id).get_coord_at(core, get_coord_system_used()); - auto translated_coord = get_soc_descriptor(chip_id).translate_coord_to(core_coord, CoordSystem::TRANSLATED); + auto translated_coord = get_soc_descriptor(chip_id).translate_coord_to( + core_coord, umd_use_noc1 ? CoordSystem::PHYSICAL : CoordSystem::TRANSLATED); return translated_coord; } diff --git a/device/tt_device/tt_device.cpp b/device/tt_device/tt_device.cpp index 8a7a904b..5941d137 100644 --- a/device/tt_device/tt_device.cpp +++ b/device/tt_device/tt_device.cpp @@ -9,8 +9,13 @@ #include "umd/device/tt_device/grayskull_tt_device.h" #include "umd/device/tt_device/wormhole_tt_device.h" +// TODO #526: This is a hack to allow UMD to use the NOC1 TLB. +bool umd_use_noc1 = false; + namespace tt::umd { +void TTDevice::use_noc1(bool use_noc1) { umd_use_noc1 = use_noc1; } + TTDevice::TTDevice( std::unique_ptr pci_device, std::unique_ptr architecture_impl) : pci_device_(std::move(pci_device)), @@ -298,6 +303,7 @@ dynamic_tlb TTDevice::set_dynamic_tlb( .y_end = static_cast(end.y), .x_start = static_cast(start.x), .y_start = static_cast(start.y), + .noc_sel = umd_use_noc1 ? 1U : 0, .mcast = multicast, .ordering = ordering, // TODO #2715: hack for Blackhole A0, will potentially be fixed in B0.