Update README.md
diff --git a/README.md b/README.md
index 8eb4e1e..4527f7e 100644
--- a/README.md
+++ b/README.md
@@ -15,3 +15,14 @@
</p>
## Testbench
+
+The io_ports testbench provided in the caravel_user_project template configures and tests GPIOs' functionality. It has been merged with UETRV_ESoC's testbench ([old_tb](https://github.com/ee-uet/UETRV_ESoC/blob/main/tb/SoC_tb.v)), resulting in [io_ports_tb.v](verilog/dv/io_ports_tb.v). This testbench runs full chip simulation by configuring the GPIOs using firmware for caravel's management SoC, then it loads a program into UETRV_ESoC_v2 over GPIOs configured for SPI, then a sample firmware program transmits characters over UART. These characters are fed back to UETRV_ESoC_v2 by UART loopback. Some of these characters are commands for moving a plotter's pen as described below:
+
+- 'u' to move pen up in 2D-grid
+- 'd' for down
+- 'l' for left
+- 'r' for right
+- 'L' for lifting the pen
+- 'D' for dropping the pen
+
+The testbench waits for each command to occur and verifies that the step and direction outputs for stepper motors, and the PWM output for the servo motor lifting and dropping the pen, have changed properly.