diff --git a/hw/top_matcha/rtl/chip_matcha_verilator.sv b/hw/top_matcha/rtl/chip_matcha_verilator.sv
index d0d5606..279cc22 100644
--- a/hw/top_matcha/rtl/chip_matcha_verilator.sv
+++ b/hw/top_matcha/rtl/chip_matcha_verilator.sv
@@ -123,7 +123,7 @@
     mio_in[MioPadIob8:MioPadIoa0] = cio_gpio_p2d_i[17:0];
     mio_in[MioPadIob12:MioPadIob10] = cio_gpio_p2d_i[20:18];
     mio_in[MioPadIoc6] = cio_gpio_p2d_i[21];
-    mio_in[MioPadIoc7] = cio_gpio_p2d_i[25];
+    mio_in[MioPadIoc7] = cio_usbdev_sense_p2d_i;
     mio_in[MioPadIoc9] = cio_gpio_p2d_i[26];
     mio_in[MioPadIor7:MioPadIor6] = cio_gpio_p2d_i[29:28];
     mio_in[MioPadIor10] = cio_gpio_p2d_i[31];
@@ -403,8 +403,6 @@
   logic unused_pwr_clamp;
   assign unused_pwr_clamp = base_ast_pwr.pwr_clamp;
 
-  logic unused_cio_usbdev_sense_p2d_i;
-  assign unused_cio_usbdev_sense_p2d_i = cio_usbdev_sense_p2d_i;
 
   prim_mubi_pkg::mubi4_t ast_init_done;
   ast #(
diff --git a/sw/device/lib/dif/BUILD b/sw/device/lib/dif/BUILD
index c907a26..e926379 100644
--- a/sw/device/lib/dif/BUILD
+++ b/sw/device/lib/dif/BUILD
@@ -273,4 +273,25 @@
     ],
 )
 
+cc_library(
+    name = "usbdev",
+    srcs = [
+        "autogen/dif_usbdev_autogen.c",
+        "autogen/dif_usbdev_autogen.h",
+        "dif_usbdev.c",
+    ],
+    hdrs = [
+        "dif_usbdev.h",
+    ],
+    deps = [
+        "@lowrisc_opentitan//sw/device/lib/dif:base",
+        "@lowrisc_opentitan//hw/ip/usbdev/data:usbdev_regs",
+        "@lowrisc_opentitan//sw/device/lib/base:bitfield",
+        "@lowrisc_opentitan//sw/device/lib/base:macros",
+        "@lowrisc_opentitan//sw/device/lib/base:memory",
+        "@lowrisc_opentitan//sw/device/lib/base:mmio",
+        "@lowrisc_opentitan//sw/device/lib/base:multibits",
+    ],
+)
+
 #TODO(b/249392661): Add unit test for each dif component.
diff --git a/sw/device/lib/testing/BUILD b/sw/device/lib/testing/BUILD
index 5f8fd9f..dc8bfdb 100644
--- a/sw/device/lib/testing/BUILD
+++ b/sw/device/lib/testing/BUILD
@@ -96,3 +96,34 @@
         "@lowrisc_opentitan//sw/device/lib/testing/test_framework:check",
     ],
 )
+
+cc_library(
+    name = "usb_testutils",
+    srcs = [
+        "usb_testutils.c",
+        "usb_testutils_controlep.c",
+    ],
+    hdrs = [
+        "usb_testutils.h",
+        "usb_testutils_controlep.h",
+        "usb_testutils_diags.h",
+    ],
+    target_compatible_with = [OPENTITAN_CPU],
+    deps = [
+        "//hw/top_matcha/sw/autogen:top_matcha",
+        "//sw/device/lib/dif:usbdev",
+        "@lowrisc_opentitan//sw/device/lib/testing/test_framework:check",
+    ],
+)
+
+cc_library(
+    name = "usb_testutils_simpleserial",
+    srcs = ["usb_testutils_simpleserial.c"],
+    hdrs = ["usb_testutils_simpleserial.h"],
+    target_compatible_with = [OPENTITAN_CPU],
+    deps = [
+        ":usb_testutils",
+        "@lowrisc_opentitan//sw/device/lib/testing/test_framework:check",
+    ],
+)
+
diff --git a/sw/device/lib/testing/usb_testutils.c b/sw/device/lib/testing/usb_testutils.c
index bacc95b..d1e79c0 100644
--- a/sw/device/lib/testing/usb_testutils.c
+++ b/sw/device/lib/testing/usb_testutils.c
@@ -7,9 +7,9 @@
 #include "sw/device/lib/dif/dif_usbdev.h"
 #include "sw/device/lib/testing/test_framework/check.h"
 
-#include "hw/top_earlgrey/sw/autogen/top_earlgrey.h"
+#include "hw/top_matcha/sw/autogen/top_matcha.h"
 
-#define USBDEV_BASE_ADDR TOP_EARLGREY_USBDEV_BASE_ADDR
+#define USBDEV_BASE_ADDR TOP_MATCHA_USBDEV_BASE_ADDR
 
 static dif_usbdev_t usbdev;
 static dif_usbdev_buffer_pool_t buffer_pool;
diff --git a/sw/device/tests/BUILD b/sw/device/tests/BUILD
index cf00c08..69afec9 100644
--- a/sw/device/tests/BUILD
+++ b/sw/device/tests/BUILD
@@ -511,6 +511,44 @@
     ],
 )
 
+sec_flash_binary(
+    name = "usbdev_test",
+    srcs = [
+        "usbdev_test.c",
+    ],
+    copts = [
+        "-nostdlib",
+        "-ffreestanding",
+    ],
+    deps = [
+        ":test_lib",
+        "//sw/device/lib/testing/test_framework:ottf_main",
+        "//sw/device/lib/dif:usbdev",
+        "//sw/device/lib/testing:usb_testutils",
+        "//sw/device/lib/testing:usb_testutils_simpleserial",
+        "@lowrisc_opentitan//hw/ip/usbdev/data:usbdev_regs",
+    ],
+)
+
+sec_flash_binary(
+    name = "usbdev_stream_test",
+    srcs = [
+        "usbdev_stream_test.c",
+    ],
+    copts = [
+        "-nostdlib",
+        "-ffreestanding",
+    ],
+    deps = [
+        ":test_lib",
+        "//sw/device/lib/testing/test_framework:ottf_main",
+        "//sw/device/lib/dif:usbdev",
+        "//sw/device/lib/testing:usb_testutils",
+        "//sw/device/lib/testing:usb_testutils_simpleserial",
+        "@lowrisc_opentitan//hw/ip/usbdev/data:usbdev_regs",
+    ],
+)
+
 cc_library(
     name = "test_lib",
     target_compatible_with = [OPENTITAN_CPU],
@@ -611,6 +649,18 @@
 # To test the following targets:
 # bazel test --test_output=streamed --test_tag_filters=verilator,-broken //sw/device/tests/...
 matcha_verilator_test(
+    name = "verilator_usbdev_test",
+    timeout = "long",
+    sec_flash_binary = ":usbdev_test",
+)
+
+matcha_verilator_test(
+    name = "verilator_usbdev_stream_test",
+    timeout = "long",
+    sec_flash_binary = ":usbdev_stream_test",
+)
+
+matcha_verilator_test(
     name = "verilator_tlul_mailbox_test",
     timeout = "long",
     sec_flash_binary = ":tlul_mailbox_test",
diff --git a/sw/device/tests/usbdev_stream_test.c b/sw/device/tests/usbdev_stream_test.c
index a119324..0d19c6d 100644
--- a/sw/device/tests/usbdev_stream_test.c
+++ b/sw/device/tests/usbdev_stream_test.c
@@ -26,7 +26,7 @@
 #include "sw/device/lib/testing/usb_testutils.h"
 #include "sw/device/lib/testing/usb_testutils_controlep.h"
 
-#include "hw/top_earlgrey/sw/autogen/top_earlgrey.h"  // Generated.
+#include "hw/top_matcha/sw/autogen/top_matcha.h"  // Generated.
 
 // Maximum number of concurrent streams
 #ifdef USBDEV_NUM_ENDPOINTS
@@ -36,13 +36,6 @@
 #define STREAMS_MAX 11U
 #endif
 
-// TODO - currently we are unable to send the configuration descriptor
-// if we try to describe more than two bidirectional endpoints
-#if STREAMS_MAX > 2U
-#undef STREAMS_MAX
-#define STREAMS_MAX 2U
-#endif
-
 // Number of streams to be tested
 #ifndef NUM_STREAMS
 #define NUM_STREAMS STREAMS_MAX
@@ -216,15 +209,14 @@
 
 /**
  * Configuration values for USB.
- * TODO - dynamically construct a config descriptor appropriate to the test;
- *        this would avoid creating unusable ports on the host and also provide
- *        a little more testing
  */
 static const uint8_t config_descriptors[] = {
     USB_CFG_DSCR_HEAD(USB_CFG_DSCR_LEN + STREAMS_MAX * (USB_INTERFACE_DSCR_LEN +
                                                         2 * USB_EP_DSCR_LEN),
                       STREAMS_MAX),
 
+    // Up to 11 interfaces and STREAMS_MAX in the descriptor head specifies how
+    // many of the interfaces will be declared to the host
     VEND_INTERFACE_DSCR(0, 2, 0x50, 1),
     USB_BULK_EP_DSCR(0, 1U, USBDEV_MAX_PACKET_SIZE, 0),
     USB_BULK_EP_DSCR(1, 1U, USBDEV_MAX_PACKET_SIZE, 0),
@@ -232,6 +224,42 @@
     VEND_INTERFACE_DSCR(1, 2, 0x50, 1),
     USB_BULK_EP_DSCR(0, 2U, USBDEV_MAX_PACKET_SIZE, 0),
     USB_BULK_EP_DSCR(1, 2U, USBDEV_MAX_PACKET_SIZE, 0),
+
+    VEND_INTERFACE_DSCR(2, 2, 0x50, 1),
+    USB_BULK_EP_DSCR(0, 3U, USBDEV_MAX_PACKET_SIZE, 0),
+    USB_BULK_EP_DSCR(1, 3U, USBDEV_MAX_PACKET_SIZE, 0),
+
+    VEND_INTERFACE_DSCR(3, 2, 0x50, 1),
+    USB_BULK_EP_DSCR(0, 4U, USBDEV_MAX_PACKET_SIZE, 0),
+    USB_BULK_EP_DSCR(1, 4U, USBDEV_MAX_PACKET_SIZE, 0),
+
+    VEND_INTERFACE_DSCR(4, 2, 0x50, 1),
+    USB_BULK_EP_DSCR(0, 5U, USBDEV_MAX_PACKET_SIZE, 0),
+    USB_BULK_EP_DSCR(1, 5U, USBDEV_MAX_PACKET_SIZE, 0),
+
+    VEND_INTERFACE_DSCR(5, 2, 0x50, 1),
+    USB_BULK_EP_DSCR(0, 6U, USBDEV_MAX_PACKET_SIZE, 0),
+    USB_BULK_EP_DSCR(1, 6U, USBDEV_MAX_PACKET_SIZE, 0),
+
+    VEND_INTERFACE_DSCR(6, 2, 0x50, 1),
+    USB_BULK_EP_DSCR(0, 7U, USBDEV_MAX_PACKET_SIZE, 0),
+    USB_BULK_EP_DSCR(1, 7U, USBDEV_MAX_PACKET_SIZE, 0),
+
+    VEND_INTERFACE_DSCR(7, 2, 0x50, 1),
+    USB_BULK_EP_DSCR(0, 8U, USBDEV_MAX_PACKET_SIZE, 0),
+    USB_BULK_EP_DSCR(1, 8U, USBDEV_MAX_PACKET_SIZE, 0),
+
+    VEND_INTERFACE_DSCR(8, 2, 0x50, 1),
+    USB_BULK_EP_DSCR(0, 9U, USBDEV_MAX_PACKET_SIZE, 0),
+    USB_BULK_EP_DSCR(1, 9U, USBDEV_MAX_PACKET_SIZE, 0),
+
+    VEND_INTERFACE_DSCR(9, 2, 0x50, 1),
+    USB_BULK_EP_DSCR(0, 10U, USBDEV_MAX_PACKET_SIZE, 0),
+    USB_BULK_EP_DSCR(1, 10U, USBDEV_MAX_PACKET_SIZE, 0),
+
+    VEND_INTERFACE_DSCR(10, 2, 0x50, 1),
+    USB_BULK_EP_DSCR(0, 11U, USBDEV_MAX_PACKET_SIZE, 0),
+    USB_BULK_EP_DSCR(1, 11U, USBDEV_MAX_PACKET_SIZE, 0),
 };
 
 /**
@@ -414,7 +442,7 @@
 }
 
 // Callback for successful buffer transmission
-static void strm_tx_done(void *stream_v) {
+static void strm_tx_done(void *stream_v, usb_testutils_xfr_result_t result) {
   usbdev_stream_t *s = (usbdev_stream_t *)stream_v;
   usbdev_stream_test_ctx_t *ctx = s->ctx;
   usb_testutils_ctx_t *usbdev = ctx->usbdev;
@@ -457,7 +485,6 @@
                     dif_usbdev_buffer_t buf) {
   usbdev_stream_t *s = (usbdev_stream_t *)stream_v;
   usbdev_stream_test_ctx_t *ctx = s->ctx;
-  usb_testutils_ctx_t *usbdev = ctx->usbdev;
 
   CHECK(packet_info.endpoint == s->rx_ep);
 
@@ -627,9 +654,9 @@
   // Context state for streaming test
   usbdev_stream_test_ctx_t *ctx = &stream_test;
 
-  CHECK(kDeviceType == kDeviceSimVerilator || kDeviceType == kDeviceFpgaCw310,
+  CHECK(kDeviceType == kDeviceSimVerilator || kDeviceType == kDeviceFpgaNexus,
         "This test is not expected to run on platforms other than the "
-        "Verilator simulation or CW310 FPGA. It needs logic on the host side "
+        "Verilator simulation or Nexus FPGA. It needs logic on the host side "
         "to retrieve, scramble and return the generated byte stream");
 
   LOG_INFO("Running USBDEV Stream Test");
@@ -646,11 +673,17 @@
   LOG_INFO(" - %u stream(s), 0x%x bytes each", nstreams, transfer_bytes);
 
   CHECK_DIF_OK(dif_pinmux_init(
-      mmio_region_from_addr(TOP_EARLGREY_PINMUX_AON_BASE_ADDR), &pinmux));
+      mmio_region_from_addr(TOP_MATCHA_PINMUX_AON_BASE_ADDR), &pinmux));
   pinmux_testutils_init(&pinmux);
   CHECK_DIF_OK(dif_pinmux_input_select(
-      &pinmux, kTopEarlgreyPinmuxPeripheralInUsbdevSense,
-      kTopEarlgreyPinmuxInselIoc7));
+      &pinmux, kTopMatchaPinmuxPeripheralInUsbdevSense,
+      kTopMatchaPinmuxInselIoc7));
+  if (kDeviceType == kDeviceFpgaNexus) {
+      dif_pinmux_pad_attr_t attrs;
+      CHECK_DIF_OK(dif_pinmux_pad_get_attrs(&pinmux, kTopMatchaMuxedPadsIoc7, kDifPinmuxPadKindMio, &attrs));
+      attrs.flags |= kDifPinmuxPadAttrInvertLevel;
+      CHECK_DIF_OK(dif_pinmux_pad_write_attrs(&pinmux, kTopMatchaMuxedPadsIoc7, kDifPinmuxPadKindMio, attrs, &attrs));
+  }
 
   // Remember context state for usb_testutils context
   ctx->usbdev = &usbdev;
@@ -658,7 +691,7 @@
   // Call `usbdev_init` here so that DPI will not start until the
   // simulation has finished all of the printing, which takes a while
   // if `--trace` was passed in.
-  usb_testutils_init(ctx->usbdev, /*pinflip=*/false, /*en_diff_rcvr=*/false,
+  usb_testutils_init(&usbdev, /*pinflip=*/false, /*en_diff_rcvr=*/kDeviceType == kDeviceSimVerilator ? false : true,
                      /*tx_use_d_se0=*/false);
   usb_testutils_controlep_init(&usbdev_control, ctx->usbdev, 0,
                                config_descriptors, sizeof(config_descriptors),
diff --git a/sw/device/tests/usbdev_test.c b/sw/device/tests/usbdev_test.c
index af52cf5..482c207 100644
--- a/sw/device/tests/usbdev_test.c
+++ b/sw/device/tests/usbdev_test.c
@@ -27,7 +27,7 @@
 #include "sw/device/lib/testing/usb_testutils_controlep.h"
 #include "sw/device/lib/testing/usb_testutils_simpleserial.h"
 
-#include "hw/top_earlgrey/sw/autogen/top_earlgrey.h"  // Generated.
+#include "hw/top_matcha/sw/autogen/top_matcha.h"  // Generated.
 
 /**
  * Configuration values for USB.
@@ -97,24 +97,30 @@
 OTTF_DEFINE_TEST_CONFIG();
 
 bool test_main(void) {
-  CHECK(kDeviceType == kDeviceSimVerilator || kDeviceType == kDeviceFpgaCw310,
+  CHECK(kDeviceType == kDeviceSimVerilator || kDeviceType == kDeviceFpgaNexus,
         "This test is not expected to run on platforms other than the "
-        "Verilator simulation or CW310 FPGA. It needs the USB DPI model "
+        "Verilator simulation or Nexus FPGA. It needs the USB DPI model "
         "or host application.");
 
   LOG_INFO("Running USBDEV test");
 
   CHECK_DIF_OK(dif_pinmux_init(
-      mmio_region_from_addr(TOP_EARLGREY_PINMUX_AON_BASE_ADDR), &pinmux));
+      mmio_region_from_addr(TOP_MATCHA_PINMUX_AON_BASE_ADDR), &pinmux));
   pinmux_testutils_init(&pinmux);
   CHECK_DIF_OK(dif_pinmux_input_select(
-      &pinmux, kTopEarlgreyPinmuxPeripheralInUsbdevSense,
-      kTopEarlgreyPinmuxInselIoc7));
+      &pinmux, kTopMatchaPinmuxPeripheralInUsbdevSense,
+      kTopMatchaPinmuxInselIoc7));
+  if (kDeviceType == kDeviceFpgaNexus) {
+      dif_pinmux_pad_attr_t attrs;
+      CHECK_DIF_OK(dif_pinmux_pad_get_attrs(&pinmux, kTopMatchaMuxedPadsIoc7, kDifPinmuxPadKindMio, &attrs));
+      attrs.flags |= kDifPinmuxPadAttrInvertLevel;
+      CHECK_DIF_OK(dif_pinmux_pad_write_attrs(&pinmux, kTopMatchaMuxedPadsIoc7, kDifPinmuxPadKindMio, attrs, &attrs));
+  }
 
   // Call `usbdev_init` here so that DPI will not start until the
   // simulation has finished all of the printing, which takes a while
   // if `--trace` was passed in.
-  usb_testutils_init(&usbdev, /*pinflip=*/false, /*en_diff_rcvr=*/false,
+  usb_testutils_init(&usbdev, /*pinflip=*/false, /*en_diff_rcvr=*/kDeviceType == kDeviceSimVerilator ? false : true,
                      /*tx_use_d_se0=*/false);
   usb_testutils_controlep_init(&usbdev_control, &usbdev, 0, config_descriptors,
                                sizeof(config_descriptors), test_descriptor,
