diff --git a/README.md b/README.md
index 0f478df8061f0891d87fb9672101966ee6de555c..6d23ba50e2d14b0b613bd41a860091a0a9d327c4 100644
--- a/README.md
+++ b/README.md
@@ -79,3 +79,7 @@ vivadow gui
 This is a bash script, so it can be easily injected. `Vivadofile` and `.vwc` constraint will be directly `source`d. **Never** trust Vivadofile uploaded by others!
 
 If you give a wrong top\_module name, *silly vivado* will accept it, and generate bitstream for a **randomly-taken** module(with long time spent), then report error.
+
+## TODO
+
+Support bridging C/C++ into systemverilog via SV DPI. However my vivado 2018 failed to simulate it, saying `xsim.dir/tb_dpi_behav/xsimk: error while loading shared libraries: unexpected PLT reloc type 0x00`.
diff --git a/vivado_cc_setup.sh b/vivado_cc_setup.sh
new file mode 100755
index 0000000000000000000000000000000000000000..ec1aed2824ade72d1d2ca06b773a4ec79277f79d
--- /dev/null
+++ b/vivado_cc_setup.sh
@@ -0,0 +1,15 @@
+#!/bin/bash
+
+function backup_var () {
+    _var_name="$1"
+    export "_vivado_wrapper_backup_$_var_name"="$$$_var_name"
+    unset "$_var_name"
+}
+function recover_var () {
+     _var_name="$1"
+    export "$_var_name"="$$_vivado_wrapper_backup_$_var_name"
+    unset "_vivado_wrapper_backup_$_var_name"
+}
+
+backup_var a
+