[doc] Update content for testplan preprocessor

The testplan preprocessor changes the way the testplan hjson files are handled.

Signed-off-by: Amaury Pouly <amaury.pouly@lowrisc.org>
Co-authored-by: Hugo McNally <hugo.mcnally@gmail.com>
diff --git a/SUMMARY.md b/SUMMARY.md
index 13114a2..33f6b73 100644
--- a/SUMMARY.md
+++ b/SUMMARY.md
@@ -13,11 +13,13 @@
   - [Analog Sensor Top](./hw/top_earlgrey/ip/ast/README.md)
   - [Alert Handler](./hw/top_earlgrey/ip_autogen/alert_handler/README.md)
     - [Design Verification](./hw/top_earlgrey/ip_autogen/alert_handler/dv/README.md)
+      - [Testplan](./hw/top_earlgrey/ip_autogen/alert_handler/data/alert_handler_testplan.hjson)
     - [Interface and Registers](./hw/top_earlgrey/ip_autogen/alert_handler/data/alert_handler.hjson)
     - [Device Interface Functions](./sw/device/lib/dif/dif_alert_handler.h)
     - [Checklist](./hw/top_earlgrey/ip_autogen/alert_handler/doc/checklist.md)
   - [Interrupt Controller](./hw/top_earlgrey/ip_autogen/rv_plic/README.md)
     - [Design Verification](./hw/top_earlgrey/ip_autogen/rv_plic/doc/dv/README.md)
+      - [Testplan](./hw/top_earlgrey/ip_autogen/rv_plic/data/rv_plic_fpv_testplan.hjson)
     - [Interface and Registers](./hw/top_earlgrey/ip_autogen/rv_plic/data/rv_plic.hjson)
     - [Device Interface Functions](./sw/device/lib/dif/dif_rv_plic.h)
     - [Checklist](./hw/top_earlgrey/ip_autogen/rv_plic/doc/checklist.md)
@@ -54,147 +56,177 @@
 - [Hardware IP Blocks](./hw/ip/README.md)
   - [Analog to Digital Converter Control](./hw/ip/adc_ctrl/README.md)
     - [Design Verification](./hw/ip/adc_ctrl/dv/README.md)
+      - [Testplan](./hw/ip/adc_ctrl/data/adc_ctrl_testplan.hjson)
     - [Checklist](./hw/ip/adc_ctrl/doc/checklist.md)
     - [Interface and Registers](./hw/ip/adc_ctrl/data/adc_ctrl.hjson)
   - [AES](./hw/ip/aes/README.md)
     - [Design Verification](./hw/ip/aes/dv/README.md)
+      - [Testplan](./hw/ip/aes/data/aes_testplan.hjson)
     - [Interface and Registers](./hw/ip/aes/data/aes.hjson)
     - [Device Interface Functions](./sw/device/lib/dif/dif_aes.h)
     - [Checklist](./hw/ip/aes/doc/checklist.md)
   - [AON Timer](./hw/ip/aon_timer/README.md)
     - [Design Verification](./hw/ip/aon_timer/dv/README.md)
+      - [Testplan](./hw/ip/aon_timer/data/aon_timer_testplan.hjson)
     - [Interface and Registers](./hw/ip/aon_timer/data/aon_timer.hjson)
     - [Device Interface Functions](./sw/device/lib/dif/dif_aon_timer.h)
     - [Checklist](./hw/ip/aon_timer/doc/checklist.md)
   - [Clock Manager](./hw/ip/clkmgr/README.md)
     - [Design Verification](./hw/ip/clkmgr/dv/README.md)
+      - [Testplan](./hw/ip/clkmgr/data/clkmgr_testplan.hjson)
     - [Interface and Registers](./hw/top_earlgrey/ip/clkmgr/data/autogen/clkmgr.hjson)
     - [Device Interface Functions](./sw/device/lib/dif/dif_clkmgr.h)
     - [Checklist](./hw/ip/clkmgr/doc/checklist.md)
   - [CSRNG](./hw/ip/csrng/README.md)
     - [Design Verification](./hw/ip/csrng/dv/README.md)
+      - [Testplan](./hw/ip/csrng/data/csrng_testplan.hjson)
     - [Interface and Registers](./hw/ip/csrng/data/csrng.hjson)
     - [Device Interface Functions](./sw/device/lib/dif/dif_csrng.h)
     - [Checklist](./hw/ip/csrng/doc/checklist.md)
   - [EDN](./hw/ip/edn/README.md)
     - [Design Verification](./hw/ip/edn/dv/README.md)
+      - [Testplan](./hw/ip/edn/data/edn_testplan.hjson)
     - [Interface and Registers](./hw/ip/edn/data/edn.hjson)
     - [Device Interface Functions](./sw/device/lib/dif/dif_edn.h)
     - [Checklist](./hw/ip/edn/doc/checklist.md)
   - [Entropy Source](./hw/ip/entropy_src/README.md)
     - [Design Verification](./hw/ip/entropy_src/dv/README.md)
+      - [Testplan](./hw/ip/entropy_src/data/entropy_src_testplan.hjson)
     - [Interface and Registers](./hw/ip/entropy_src/data/entropy_src.hjson)
     - [Device Interface Functions](./sw/device/lib/dif/dif_entropy_src.h)
     - [Checklist](./hw/ip/entropy_src/doc/checklist.md)
   - [Flash Controller](./hw/ip/flash_ctrl/README.md)
     - [Design Verification](./hw/ip/flash_ctrl/dv/README.md)
+      - [Testplan](./hw/ip/flash_ctrl/data/flash_ctrl_testplan.hjson)
     - [Interface and Registers](./hw/ip/flash_ctrl/data/flash_ctrl.hjson)
     - [Device Interface Functions](./sw/device/lib/dif/dif_flash_ctrl.h)
     - [Checklist](./hw/ip/flash_ctrl/doc/checklist.md)
   - [GPIO](./hw/ip/gpio/README.md)
     - [Design Verification](./hw/ip/gpio/dv/README.md)
+      - [Testplan](./hw/ip/gpio/data/gpio_testplan.hjson)
     - [Interface and Registers](./hw/ip/gpio/data/gpio.hjson)
     - [Device Interface Functions](./sw/device/lib/dif/dif_gpio.h)
     - [Checklist](./hw/ip/gpio/doc/checklist.md)
   - [HMAC](./hw/ip/hmac/README.md)
     - [Design Verification](./hw/ip/hmac/dv/README.md)
+      - [Testplan](./hw/ip/hmac/data/hmac_testplan.hjson)
     - [Interface and Registers](./hw/ip/hmac/data/hmac.hjson)
     - [Device Interface Functions](./sw/device/lib/dif/dif_hmac.h)
     - [Checklist](./hw/ip/hmac/doc/checklist.md)
   - [I2C](./hw/ip/i2c/README.md)
     - [Design Verification](./hw/ip/i2c/dv/README.md)
+      - [Testplan](./hw/ip/i2c/data/i2c_testplan.hjson)
     - [Interface and Registers](./hw/ip/i2c/data/i2c.hjson)
     - [Device Interface Functions](./sw/device/lib/dif/dif_i2c.h)
     - [Checklist](./hw/ip/i2c/doc/checklist.md)
   - [Key Manager](./hw/ip/keymgr/README.md)
     - [Design Verification](./hw/ip/keymgr/dv/README.md)
+      - [Testplan](./hw/ip/keymgr/data/keymgr_testplan.hjson)
     - [Interface and Registers](./hw/ip/keymgr/data/keymgr.hjson)
     - [Device Interface Functions](./sw/device/lib/dif/dif_keymgr.h)
     - [Checklist](./hw/ip/keymgr/doc/checklist.md)
   - [KMAC](./hw/ip/kmac/README.md)
     - [Design Verification](./hw/ip/kmac/dv/README.md)
+      - [Testplan](./hw/ip/kmac/data/kmac_testplan.hjson)
     - [Interface and Registers](./hw/ip/kmac/data/kmac.hjson)
     - [Device Interface Functions](./sw/device/lib/dif/dif_kmac.h)
     - [Checklist](./hw/ip/kmac/doc/checklist.md)
   - [Life Cycle Controller](./hw/ip/lc_ctrl/README.md)
     - [Design Verification](./hw/ip/lc_ctrl/dv/README.md)
+      - [Testplan](./hw/ip/lc_ctrl/data/lc_ctrl_testplan.hjson)
     - [Interface and Registers](./hw/ip/lc_ctrl/data/lc_ctrl.hjson)
     - [Device Interface Functions](./sw/device/lib/dif/dif_lc_ctrl.h)
     - [Checklist](./hw/ip/lc_ctrl/doc/checklist.md)
   - [OTP Controller](./hw/ip/otp_ctrl/README.md)
     - [Design Verification](./hw/ip/otp_ctrl/dv/README.md)
+      - [Testplan](./hw/ip/otp_ctrl/data/otp_ctrl_testplan.hjson)
     - [Interface and Registers](./hw/ip/otp_ctrl/data/otp_ctrl.hjson)
     - [Device Interface Functions](./sw/device/lib/dif/dif_otp_ctrl.h)
     - [Checklist](./hw/ip/otp_ctrl/doc/checklist.md)
   - [Pattern Generator](./hw/ip/pattgen/README.md)
     - [Design Verification](./hw/ip/pattgen/dv/README.md)
+      - [Testplan](./hw/ip/pattgen/data/pattgen_testplan.hjson)
     - [Interface and Registers](./hw/ip/pattgen/data/pattgen.hjson)
     - [Device Interface Functions](./sw/device/lib/dif/dif_pattgen.h)
     - [Checklist](./hw/ip/pattgen/doc/checklist.md)
   - [Pinmux](./hw/ip/pinmux/README.md)
     - [Design Verification](./hw/ip/pinmux/doc/dv/README.md)
+      - [Testplan](./hw/ip/pinmux/data/pinmux_fpv_testplan.hjson)
     - [Interface and Registers](./hw/top_earlgrey/ip/pinmux/data/autogen/pinmux.hjson)
     - [Device Interface Functions](./sw/device/lib/dif/dif_pinmux.h)
     - [Checklist](./hw/ip/pinmux/doc/checklist.md)
   - [Pulse Width Modulator](./hw/ip/pwm/README.md)
     - [Design Verification](./hw/ip/pwm/dv/README.md)
+      - [Testplan](./hw/ip/pwm/data/pwm_testplan.hjson)
     - [Interface and Registers](./hw/ip/pwm/data/pwm.hjson)
     - [Device Interface Functions](./sw/device/lib/dif/dif_pwm.h)
     - [Checklist](./hw/ip/pwm/doc/checklist.md)
   - [Power Management](./hw/ip/pwrmgr/README.md)
     - [Design Verification](./hw/ip/pwrmgr/dv/README.md)
+      - [Testplan](./hw/ip/pwrmgr/data/pwrmgr_testplan.hjson)
     - [Interface and Registers](./hw/top_earlgrey/ip/pwrmgr/data/autogen/pwrmgr.hjson)
     - [Device Interface Functions](./sw/device/lib/dif/dif_pwrmgr.h)
     - [Checklist](./hw/ip/pwrmgr/doc/checklist.md)
   - [ROM Control](./hw/ip/rom_ctrl/README.md)
     - [Design Verification](./hw/ip/rom_ctrl/dv/README.md)
+      - [Testplan](./hw/ip/rom_ctrl/data/rom_ctrl_testplan.hjson)
     - [Interface and Registers](./hw/ip/rom_ctrl/data/rom_ctrl.hjson)
     - [Device Interface Functions](./sw/device/lib/dif/dif_rom_ctrl.h)
     - [Checklist](./hw/ip/rom_ctrl/doc/checklist.md)
   - [Reset Manager](./hw/ip/rstmgr/README.md)
     - [Design Verification](./hw/ip/rstmgr/dv/README.md)
+      - [Testplan](./hw/ip/rstmgr/data/rstmgr_testplan.hjson)
     - [Interface and Registers](./hw/top_earlgrey/ip/rstmgr/data/autogen/rstmgr.hjson)
     - [Device Interface Functions](./sw/device/lib/dif/dif_rstmgr.h)
     - [Checklist](./hw/ip/rstmgr/doc/checklist.md)
   - [RISC-V Debug Manager](./hw/ip/rv_dm/README.md)
     - [Design Verification](./hw/ip/rv_dm/dv/README.md)
+      - [Testplan](./hw/ip/rv_dm/data/rv_dm_testplan.hjson)
     - [Interface and Registers](./hw/ip/rv_dm/data/rv_dm.hjson)
     - [Checklist](./hw/ip/rv_dm/doc/checklist.md)
   - [SPI Device](./hw/ip/spi_device/README.md)
     - [Design Verification](./hw/ip/spi_device/dv/README.md)
+      - [Testplan](./hw/ip/spi_device/data/spi_device_testplan.hjson)
     - [Interface and Registers](./hw/ip/spi_device/data/spi_device.hjson)
     - [Device Interface Functions](./sw/device/lib/dif/dif_spi_device.h)
     - [Checklist](./hw/ip/spi_device/doc/checklist.md)
   - [SPI Host](./hw/ip/spi_host/README.md)
     - [Design Verification](./hw/ip/spi_host/dv/README.md)
+      - [Testplan](./hw/ip/spi_host/data/spi_host_testplan.hjson)
     - [Interface and Registers](./hw/ip/spi_host/data/spi_host.hjson)
     - [Device Interface Functions](./sw/device/lib/dif/dif_spi_host.h)
     - [Checklist](./hw/ip/spi_host/doc/checklist.md)
   - [SRAM Controller](./hw/ip/sram_ctrl/README.md)
     - [Design Verification](./hw/ip/sram_ctrl/dv/README.md)
+      - [Testplan](./hw/ip/sram_ctrl/data/sram_ctrl_testplan.hjson)
     - [Interface and Registers](./hw/ip/sram_ctrl/data/sram_ctrl.hjson)
     - [Device Interface Functions](./sw/device/lib/dif/dif_sram_ctrl.h)
     - [Checklist](./hw/ip/sram_ctrl/doc/checklist.md)
   - [System Reset Controller](./hw/ip/sysrst_ctrl/README.md)
     - [Design Verification](./hw/ip/sysrst_ctrl/dv/README.md)
+      - [Testplan](./hw/ip/sysrst_ctrl/data/sysrst_ctrl_testplan.hjson)
     - [Interface and Registers](./hw/ip/sysrst_ctrl/data/sysrst_ctrl.hjson)
     - [Device Interface Functions](./sw/device/lib/dif/dif_sysrst_ctrl.h)
     - [Checklist](./hw/ip/sysrst_ctrl/doc/checklist.md)
   - [Timer](./hw/ip/rv_timer/README.md)
     - [Design Verification](./hw/ip/rv_timer/dv/README.md)
+      - [Testplan](./hw/ip/rv_timer/data/rv_timer_testplan.hjson)
     - [Interface and Registers](./hw/ip/rv_timer/data/rv_timer.hjson)
     - [Device Interface Functions](./sw/device/lib/dif/dif_rv_timer.h)
     - [Checklist](./hw/ip/rv_timer/doc/checklist.md)
   - [TL-UL Bus](./hw/ip/tlul/README.md)
     - [Design Verification](./hw/ip/tlul/doc/dv/README.md)
+      - [Testplan](./hw/ip/tlul/data/tlul_testplan.hjson)
       - [Protocol Checker](./hw/ip/tlul/doc/TlulProtocolChecker.md)
   - [UART](./hw/ip/uart/README.md)
     - [Design Verification](./hw/ip/uart/dv/README.md)
+      - [Testplan](./hw/ip/uart/data/uart_testplan.hjson)
     - [Interface and Registers](./hw/ip/uart/data/uart.hjson)
     - [Device Interface Functions](./sw/device/lib/dif/dif_uart.h)
     - [Checklist](./hw/ip/uart/doc/checklist.md)
   - [USB 2.0](./hw/ip/usbdev/README.md)
     - [Design Verification](./hw/ip/usbdev/dv/README.md)
+      - [Testplan](./hw/ip/usbdev/data/usbdev_testplan.hjson)
     - [Suspending and Resuming](./hw/ip/usbdev/doc/wake_resume.md)
     - [Interface and Registers](./hw/ip/usbdev/data/usbdev.hjson)
     - [Device Interface Functions](./sw/device/lib/dif/dif_usbdev.h)
diff --git a/book.toml b/book.toml
index 3e98ede..a22a5bd 100644
--- a/book.toml
+++ b/book.toml
@@ -35,7 +35,12 @@
 [preprocessor.reggen]
 command = "./util/mdbook_reggen.py"
 # Python RegEx identifying ip block config paths.
-ip-cfg-py-regex = '(ip|ip_autogen)/.+/data/.+\.hjson'
+ip-cfg-py-regex = '(ip|ip_autogen)/.+/data/(?!.+_testplan).+\.hjson'
+
+[preprocessor.testplan]
+command = "./util/mdbook_testplan.py"
+# Python RegEx identifying testplan paths.
+testplan-py-regex = '.+_testplan\.hjson'
 
 [preprocessor.doxygen]
 command = "./util/mdbook_doxygen.py"
diff --git a/hw/ip/adc_ctrl/dv/README.md b/hw/ip/adc_ctrl/dv/README.md
index 376b677..ad425b7 100644
--- a/hw/ip/adc_ctrl/dv/README.md
+++ b/hw/ip/adc_ctrl/dv/README.md
@@ -120,4 +120,4 @@
 ```
 
 ## Testplan
-{{< incGenFromIpDesc "../../data/adc_ctrl_testplan.hjson" "testplan" >}}
+[Testplan](../data/adc_ctrl_testplan.hjson)
diff --git a/hw/ip/aes/dv/README.md b/hw/ip/aes/dv/README.md
index f09b85a..22a5243 100644
--- a/hw/ip/aes/dv/README.md
+++ b/hw/ip/aes/dv/README.md
@@ -146,4 +146,4 @@
 ```
 In this run command, $VARIANT can be `masked` or `unmasked`.
 ## Testplan
-{{< incGenFromIpDesc "../../data/aes_testplan.hjson" "testplan" >}}
+[Testplan](../data/aes_testplan.hjson)
diff --git a/hw/ip/aon_timer/dv/README.md b/hw/ip/aon_timer/dv/README.md
index 0b64dd3..c013bf3 100644
--- a/hw/ip/aon_timer/dv/README.md
+++ b/hw/ip/aon_timer/dv/README.md
@@ -145,4 +145,4 @@
 ```
 
 ## Testplan
-{{< incGenFromIpDesc "../../data/aon_timer_testplan.hjson" "testplan" >}}
+[Testplan](../data/aon_timer_testplan.hjson)
diff --git a/hw/ip/clkmgr/dv/README.md b/hw/ip/clkmgr/dv/README.md
index 8b97b81..77efdb3 100644
--- a/hw/ip/clkmgr/dv/README.md
+++ b/hw/ip/clkmgr/dv/README.md
@@ -158,4 +158,4 @@
 ```
 
 ## Testplan
-{{< incGenFromIpDesc "../../data/clkmgr_testplan.hjson" "testplan" >}}
+[Testplan](../data/clkmgr_testplan.hjson)
diff --git a/hw/ip/csrng/dv/README.md b/hw/ip/csrng/dv/README.md
index 8b466a5..17fb04a 100644
--- a/hw/ip/csrng/dv/README.md
+++ b/hw/ip/csrng/dv/README.md
@@ -95,4 +95,4 @@
 ```
 
 ## Testplan
-{{< incGenFromIpDesc "../../data/csrng_testplan.hjson" "testplan" >}}
+[Testplan](../data/csrng_testplan.hjson)
diff --git a/hw/ip/edn/dv/README.md b/hw/ip/edn/dv/README.md
index 7143065..62bceed 100644
--- a/hw/ip/edn/dv/README.md
+++ b/hw/ip/edn/dv/README.md
@@ -97,4 +97,4 @@
 ```
 
 ## Testplan
-{{< incGenFromIpDesc "../../data/edn_testplan.hjson" "testplan" >}}
+[Testplan](../data/edn_testplan.hjson)
diff --git a/hw/ip/entropy_src/dv/README.md b/hw/ip/entropy_src/dv/README.md
index 76715c0..f5eeb87 100644
--- a/hw/ip/entropy_src/dv/README.md
+++ b/hw/ip/entropy_src/dv/README.md
@@ -106,4 +106,4 @@
 ```
 
 ## Testplan
-{{< incGenFromIpDesc "../../data/entropy_src_testplan.hjson" "testplan" >}}
+[Testplan](../data/entropy_src_testplan.hjson)
diff --git a/hw/ip/flash_ctrl/dv/README.md b/hw/ip/flash_ctrl/dv/README.md
index c312ed4..b340551 100644
--- a/hw/ip/flash_ctrl/dv/README.md
+++ b/hw/ip/flash_ctrl/dv/README.md
@@ -208,4 +208,4 @@
 ```
 
 ## Testplan
-{{< incGenFromIpDesc "../../data/flash_ctrl_testplan.hjson" "testplan" >}}
+[Testplan](../data/flash_ctrl_testplan.hjson)
diff --git a/hw/ip/gpio/dv/README.md b/hw/ip/gpio/dv/README.md
index 86765dd..a3ea5cf 100644
--- a/hw/ip/gpio/dv/README.md
+++ b/hw/ip/gpio/dv/README.md
@@ -111,4 +111,4 @@
 ```
 
 ## Testplan
-{{< incGenFromIpDesc "../../data/gpio_testplan.hjson" "testplan" >}}
+[Testplan](../data/gpio_testplan.hjson)
diff --git a/hw/ip/hmac/dv/README.md b/hw/ip/hmac/dv/README.md
index 02d391c..9b7de9e 100644
--- a/hw/ip/hmac/dv/README.md
+++ b/hw/ip/hmac/dv/README.md
@@ -141,4 +141,4 @@
 ```
 
 ## Testplan
-{{< incGenFromIpDesc "../../data/hmac_testplan.hjson" "testplan" >}}
+[Testplan](../data/hmac_testplan.hjson)
diff --git a/hw/ip/i2c/dv/README.md b/hw/ip/i2c/dv/README.md
index d964f73..3a9dca1 100644
--- a/hw/ip/i2c/dv/README.md
+++ b/hw/ip/i2c/dv/README.md
@@ -96,4 +96,4 @@
 ```
 
 ## Testplan
-{{< incGenFromIpDesc "../../data/i2c_testplan.hjson" "testplan" >}}
+[Testplan](../data/i2c_testplan.hjson)
diff --git a/hw/ip/keymgr/dv/README.md b/hw/ip/keymgr/dv/README.md
index bf3e6f4..f02e03f 100644
--- a/hw/ip/keymgr/dv/README.md
+++ b/hw/ip/keymgr/dv/README.md
@@ -105,4 +105,4 @@
 ```
 
 ## Testplan
-{{< incGenFromIpDesc "../../data/keymgr_testplan.hjson" "testplan" >}}
+[Testplan](../data/keymgr_testplan.hjson)
diff --git a/hw/ip/kmac/dv/README.md b/hw/ip/kmac/dv/README.md
index 536df27..26497e9 100644
--- a/hw/ip/kmac/dv/README.md
+++ b/hw/ip/kmac/dv/README.md
@@ -149,4 +149,4 @@
 In this run command, $VARIANT can be `masked` or `unmasked`.
 
 ## Testplan
-{{< incGenFromIpDesc "../../data/kmac_testplan.hjson" "testplan" >}}
+[Testplan](../data/kmac_testplan.hjson)
diff --git a/hw/ip/lc_ctrl/dv/README.md b/hw/ip/lc_ctrl/dv/README.md
index fb40721..d3d67c1 100644
--- a/hw/ip/lc_ctrl/dv/README.md
+++ b/hw/ip/lc_ctrl/dv/README.md
@@ -108,4 +108,4 @@
 ```
 
 ## Testplan
-{{< incGenFromIpDesc "../../data/lc_ctrl_testplan.hjson" "testplan" >}}
+[Testplan](../data/lc_ctrl_testplan.hjson)
diff --git a/hw/ip/otbn/dv/README.md b/hw/ip/otbn/dv/README.md
index b1382da..11a1fdf 100644
--- a/hw/ip/otbn/dv/README.md
+++ b/hw/ip/otbn/dv/README.md
@@ -130,4 +130,4 @@
 ```
 
 ## Testplan
-{{< incGenFromIpDesc "../../data/otbn_testplan.hjson" "testplan" >}}
+[Testplan](../data/otbn_testplan.hjson)
diff --git a/hw/ip/otp_ctrl/dv/README.md b/hw/ip/otp_ctrl/dv/README.md
index 16db6bd..68cf2ab 100644
--- a/hw/ip/otp_ctrl/dv/README.md
+++ b/hw/ip/otp_ctrl/dv/README.md
@@ -144,4 +144,4 @@
 ```
 
 ## Testplan
-{{< incGenFromIpDesc "../../data/otp_ctrl_testplan.hjson" "testplan" >}}
+[Testplan](../data/otp_ctrl_testplan.hjson)
diff --git a/hw/ip/pattgen/dv/README.md b/hw/ip/pattgen/dv/README.md
index 782e222..32f4de8 100644
--- a/hw/ip/pattgen/dv/README.md
+++ b/hw/ip/pattgen/dv/README.md
@@ -92,4 +92,4 @@
 ```
 
 ## Testplan
-{{< incGenFromIpDesc "../../data/pattgen_testplan.hjson" "testplan" >}}
+[Testplan](../data/pattgen_testplan.hjson)
diff --git a/hw/ip/pinmux/doc/dv/README.md b/hw/ip/pinmux/doc/dv/README.md
index 09eb8a6..ba9e858 100644
--- a/hw/ip/pinmux/doc/dv/README.md
+++ b/hw/ip/pinmux/doc/dv/README.md
@@ -41,4 +41,4 @@
 Detailed explanation is listed in the [Symbolic Variables](../../../../formal/README.md#symbolic-variables) section.
 
 ## Testplan
-{{< incGenFromIpDesc "../../data/pinmux_fpv_testplan.hjson" "testplan" >}}
+[Testplan](../../data/pinmux_fpv_testplan.hjson)
diff --git a/hw/ip/pwm/dv/README.md b/hw/ip/pwm/dv/README.md
index 3b5c767..fcc9f67 100644
--- a/hw/ip/pwm/dv/README.md
+++ b/hw/ip/pwm/dv/README.md
@@ -156,4 +156,4 @@
 ```
 
 ## Testplan
-{{< incGenFromIpDesc "../../data/pwm_testplan.hjson" "testplan" >}}
+[Testplan](../data/pwm_testplan.hjson)
diff --git a/hw/ip/pwrmgr/dv/README.md b/hw/ip/pwrmgr/dv/README.md
index 31278f4..04490f5 100644
--- a/hw/ip/pwrmgr/dv/README.md
+++ b/hw/ip/pwrmgr/dv/README.md
@@ -253,4 +253,4 @@
 ```
 
 ## Testplan
-{{< incGenFromIpDesc "../../data/pwrmgr_testplan.hjson" "testplan" >}}
+[Testplan](../data/pwrmgr_testplan.hjson)
diff --git a/hw/ip/rom_ctrl/dv/README.md b/hw/ip/rom_ctrl/dv/README.md
index 8b8f77b..2aad7a4 100644
--- a/hw/ip/rom_ctrl/dv/README.md
+++ b/hw/ip/rom_ctrl/dv/README.md
@@ -95,4 +95,4 @@
 ```
 
 ## Testplan
-{{< incGenFromIpDesc "../../data/rom_ctrl_testplan.hjson" "testplan" >}}
+[Testplan](../data/rom_ctrl_testplan.hjson)
diff --git a/hw/ip/rstmgr/dv/README.md b/hw/ip/rstmgr/dv/README.md
index 6f50373..df5cf47 100644
--- a/hw/ip/rstmgr/dv/README.md
+++ b/hw/ip/rstmgr/dv/README.md
@@ -138,4 +138,4 @@
 ```
 
 ## Testplan
-{{< incGenFromIpDesc "../../data/rstmgr_testplan.hjson" "testplan" >}}
+[Testplan](../data/rstmgr_testplan.hjson)
diff --git a/hw/ip/rv_dm/dv/README.md b/hw/ip/rv_dm/dv/README.md
index da3d665..e8c7753 100644
--- a/hw/ip/rv_dm/dv/README.md
+++ b/hw/ip/rv_dm/dv/README.md
@@ -161,4 +161,4 @@
 ```
 
 ## Testplan
-{{< incGenFromIpDesc "../../data/rv_dm_testplan.hjson" "testplan" >}}
+[Testplan](../data/rv_dm_testplan.hjson)
diff --git a/hw/ip/rv_timer/dv/README.md b/hw/ip/rv_timer/dv/README.md
index df37448..5c9f74d 100644
--- a/hw/ip/rv_timer/dv/README.md
+++ b/hw/ip/rv_timer/dv/README.md
@@ -100,4 +100,4 @@
 ```
 
 ## Testplan
-{{< incGenFromIpDesc "../../data/rv_timer_testplan.hjson" "testplan" >}}
+[Testplan](../data/rv_timer_testplan.hjson)
diff --git a/hw/ip/spi_device/dv/README.md b/hw/ip/spi_device/dv/README.md
index 34c0ffc..fdaae41 100644
--- a/hw/ip/spi_device/dv/README.md
+++ b/hw/ip/spi_device/dv/README.md
@@ -103,4 +103,4 @@
 ```
 
 ## Testplan
-{{< incGenFromIpDesc "../../data/spi_device_testplan.hjson" "testplan" >}}
+[Testplan](../data/spi_device_testplan.hjson)
diff --git a/hw/ip/spi_host/dv/README.md b/hw/ip/spi_host/dv/README.md
index ef36f08..68aaca1 100644
--- a/hw/ip/spi_host/dv/README.md
+++ b/hw/ip/spi_host/dv/README.md
@@ -269,4 +269,4 @@
 ```
 
 ## Testplan
-{{< incGenFromIpDesc "../../data/spi_host_testplan.hjson" "testplan">}}
+[Testplan](../data/spi_host_testplan.hjson)
diff --git a/hw/ip/sram_ctrl/dv/README.md b/hw/ip/sram_ctrl/dv/README.md
index e10741f..17702b7 100644
--- a/hw/ip/sram_ctrl/dv/README.md
+++ b/hw/ip/sram_ctrl/dv/README.md
@@ -191,4 +191,4 @@
 In this run command, $VARIANT can be `main` or `ret`.
 
 ## Testplan
-{{< incGenFromIpDesc "../../data/sram_ctrl_testplan.hjson" "testplan" >}}
+[Testplan](../data/sram_ctrl_testplan.hjson)
diff --git a/hw/ip/sysrst_ctrl/dv/README.md b/hw/ip/sysrst_ctrl/dv/README.md
index 8a43435..3c4f01a 100644
--- a/hw/ip/sysrst_ctrl/dv/README.md
+++ b/hw/ip/sysrst_ctrl/dv/README.md
@@ -116,4 +116,4 @@
 ```
 
 ## Testplan
-{{< incGenFromIpDesc "/hw/ip/sysrst_ctrl/data/sysrst_ctrl_testplan.hjson" "testplan" >}}
+[Testplan](../data/sysrst_ctrl_testplan.hjson)
diff --git a/hw/ip/tlul/doc/dv/README.md b/hw/ip/tlul/doc/dv/README.md
index dcf04d9..610f165 100644
--- a/hw/ip/tlul/doc/dv/README.md
+++ b/hw/ip/tlul/doc/dv/README.md
@@ -121,4 +121,4 @@
 In this run command, $XBAR_IP can be xbar_main, xbar_peri, etc. $CHIP can be top_earlgrey, etc.
 
 ## Testplan
-{{< incGenFromIpDesc "../../data/tlul_testplan.hjson" "testplan" >}}
+[Testplan](../../data/tlul_testplan.hjson)
diff --git a/hw/ip/uart/dv/README.md b/hw/ip/uart/dv/README.md
index 5e94242..d5e77d5 100644
--- a/hw/ip/uart/dv/README.md
+++ b/hw/ip/uart/dv/README.md
@@ -98,4 +98,4 @@
 ```
 
 ## Testplan
-{{< incGenFromIpDesc "../../data/uart_testplan.hjson" "testplan" >}}
+[Testplan](../data/uart_testplan.hjson)
diff --git a/hw/ip/usbdev/dv/README.md b/hw/ip/usbdev/dv/README.md
index 415bd72..c735b22 100644
--- a/hw/ip/usbdev/dv/README.md
+++ b/hw/ip/usbdev/dv/README.md
@@ -96,4 +96,4 @@
 ```
 
 ## Testplan
-{{< incGenFromIpDesc "../../data/usbdev_testplan.hjson" "testplan" >}}
+[Testplan](../data/usbdev_testplan.hjson)
diff --git a/hw/ip_templates/alert_handler/dv/README.md b/hw/ip_templates/alert_handler/dv/README.md
index 818e799..b1f14cd 100644
--- a/hw/ip_templates/alert_handler/dv/README.md
+++ b/hw/ip_templates/alert_handler/dv/README.md
@@ -117,4 +117,4 @@
 In this run command, $CHIP can be top_earlgrey, etc.
 
 ## Testplan
-{{< incGenFromIpDesc "../../data/alert_handler_testplan.hjson" "testplan" >}}
+[Testplan](../data/alert_handler_testplan.hjson)
diff --git a/hw/ip_templates/rv_plic/doc/dv/README.md b/hw/ip_templates/rv_plic/doc/dv/README.md
index a09ff06..b672493 100644
--- a/hw/ip_templates/rv_plic/doc/dv/README.md
+++ b/hw/ip_templates/rv_plic/doc/dv/README.md
@@ -45,4 +45,4 @@
 [Symbolic Variables](../../../../formal/README.md#symbolic-variables) section.
 
 ## Testplan
-{{< incGenFromIpDesc "../../data/rv_plic_fpv_testplan.hjson" "testplan" >}}
+[Testplan](../data/rv_plic_fpv_testplan.hjson)
diff --git a/hw/top_earlgrey/dv/README.md b/hw/top_earlgrey/dv/README.md
index f2cc305..58263b2 100644
--- a/hw/top_earlgrey/dv/README.md
+++ b/hw/top_earlgrey/dv/README.md
@@ -139,8 +139,8 @@
 ### Nightly
 
 ## Testplan (RTL simulations)
-{{< incGenFromIpDesc "../../data/chip_testplan.hjson" "testplan" >}}
+[Testplan](../data/chip_testplan.hjson)
 
 ## Testplan (Gate level simulations)
 Note that the descriptions of the test below may be replicated from the table above.
-{{< incGenFromIpDesc "../../data/chip_testplan.hjson:gls" "testplan" >}}
+[Testplan](../data/chip_testplan.hjson:gls)
diff --git a/hw/top_earlgrey/ip_autogen/alert_handler/dv/README.md b/hw/top_earlgrey/ip_autogen/alert_handler/dv/README.md
index 04f07d3..4eee0cc 100644
--- a/hw/top_earlgrey/ip_autogen/alert_handler/dv/README.md
+++ b/hw/top_earlgrey/ip_autogen/alert_handler/dv/README.md
@@ -117,4 +117,4 @@
 In this run command, $CHIP can be top_earlgrey, etc.
 
 ## Testplan
-{{< incGenFromIpDesc "../../data/alert_handler_testplan.hjson" "testplan" >}}
+[Testplan](../data/alert_handler_testplan.hjson)
diff --git a/hw/top_earlgrey/ip_autogen/rv_plic/doc/dv/README.md b/hw/top_earlgrey/ip_autogen/rv_plic/doc/dv/README.md
index 9422726..0abd4e2 100644
--- a/hw/top_earlgrey/ip_autogen/rv_plic/doc/dv/README.md
+++ b/hw/top_earlgrey/ip_autogen/rv_plic/doc/dv/README.md
@@ -45,4 +45,4 @@
 [Symbolic Variables](../../../../../formal/README.md#symbolic-variables) section.
 
 ## Testplan
-{{< incGenFromIpDesc "../../data/rv_plic_fpv_testplan.hjson" "testplan" >}}
+[Testplan](../../data/rv_plic_fpv_testplan.hjson)