[doc] Make URLs in prj.hjson files relative to the containing file
Paths to documentation content, such as the test plan, the design
specification, etc., were given in the ipname.prj.hjson file as relative
path, which was resolved relative to REPO_TOP. This makes IP blocks
non-relocateable.
With this PR the paths become relative to the file they are written in,
i.e. relative to the ipname.prj.hjson file. Absolute paths are resolved
absolute to REPO_TOP, effectively producing the previous behavior.
Signed-off-by: Philipp Wagner <phw@lowrisc.org>
diff --git a/hw/ip/aes/data/aes.prj.hjson b/hw/ip/aes/data/aes.prj.hjson
index 9b49d35..264a248 100644
--- a/hw/ip/aes/data/aes.prj.hjson
+++ b/hw/ip/aes/data/aes.prj.hjson
@@ -4,10 +4,10 @@
{
name: "aes",
- design_spec: "hw/ip/aes/doc",
- dv_doc: "hw/ip/aes/doc/dv",
- hw_checklist: "hw/ip/aes/doc/checklist",
- sw_checklist: "sw/device/lib/dif/dif_aes",
+ design_spec: "../doc",
+ dv_doc: "../doc/dv",
+ hw_checklist: "../doc/checklist",
+ sw_checklist: "/sw/device/lib/dif/dif_aes",
version: "1.0",
life_stage: "L1",
design_stage: "D1",
diff --git a/hw/ip/alert_handler/data/alert_handler.prj.hjson b/hw/ip/alert_handler/data/alert_handler.prj.hjson
index 20f5f3d..916b133 100644
--- a/hw/ip/alert_handler/data/alert_handler.prj.hjson
+++ b/hw/ip/alert_handler/data/alert_handler.prj.hjson
@@ -4,10 +4,10 @@
{
name: "alert_handler",
- design_spec: "hw/ip/alert_handler/doc",
- dv_doc: "hw/ip/alert_handler/doc/dv",
- hw_checklist: "hw/ip/alert_handler/doc/checklist",
- sw_checklist: "sw/device/lib/dif/dif_alert_handler"
+ design_spec: "../doc",
+ dv_doc: "../doc/dv",
+ hw_checklist: "../doc/checklist",
+ sw_checklist: "/sw/device/lib/dif/dif_alert_handler"
version: "0.5",
life_stage: "L1",
design_stage: "D1",
diff --git a/hw/ip/aon_timer/data/aon_timer.prj.hjson b/hw/ip/aon_timer/data/aon_timer.prj.hjson
index ef26b5c..d1f393d 100644
--- a/hw/ip/aon_timer/data/aon_timer.prj.hjson
+++ b/hw/ip/aon_timer/data/aon_timer.prj.hjson
@@ -4,10 +4,10 @@
{
name: "aon_timer",
- design_spec: "hw/ip/aon_timer/doc",
- dv_doc: "hw/ip/aon_timer/doc/dv",
- hw_checklist: "hw/ip/aon_timer/doc/checklist",
- sw_checklist: "sw/device/lib/dif/dif_aon_timer",
+ design_spec: "../doc",
+ dv_doc: "../doc/dv",
+ hw_checklist: "../doc/checklist",
+ sw_checklist: "/sw/device/lib/dif/dif_aon_timer",
version: "1.0",
life_stage: "L1",
design_stage: "D1",
diff --git a/hw/ip/clkmgr/data/clkmgr.prj.hjson b/hw/ip/clkmgr/data/clkmgr.prj.hjson
index ecb2c3e..07e6637 100644
--- a/hw/ip/clkmgr/data/clkmgr.prj.hjson
+++ b/hw/ip/clkmgr/data/clkmgr.prj.hjson
@@ -4,10 +4,10 @@
{
name: "clkmgr",
- design_spec: "hw/ip/clkmgr/doc",
- dv_doc: "hw/top_earlgrey/doc/dv",
- hw_checklist: "hw/ip/clkmgr/doc/checklist",
- sw_checklist: "sw/device/lib/dif/dif_clkmgr",
+ design_spec: "../doc",
+ dv_doc: "/hw/top_earlgrey/doc/dv",
+ hw_checklist: "../doc/checklist",
+ sw_checklist: "/sw/device/lib/dif/dif_clkmgr",
revisions: [
{
version: "0.1",
diff --git a/hw/ip/csrng/data/csrng.prj.hjson b/hw/ip/csrng/data/csrng.prj.hjson
index 2b5a291..c1e14a3 100644
--- a/hw/ip/csrng/data/csrng.prj.hjson
+++ b/hw/ip/csrng/data/csrng.prj.hjson
@@ -4,9 +4,9 @@
{
name: "csrng",
- design_spec: "hw/ip/csrng/doc",
- dv_doc: "hw/ip/csrng/doc/dv",
- hw_checklist: "hw/ip/csrng/doc/checklist",
+ design_spec: "../doc",
+ dv_doc: "../doc/dv",
+ hw_checklist: "../doc/checklist",
version: "0.5",
life_stage: "L1",
design_stage: "D1",
diff --git a/hw/ip/dcd/data/dcd.prj.hjson b/hw/ip/dcd/data/dcd.prj.hjson
index e280d6b..f1b34ac 100644
--- a/hw/ip/dcd/data/dcd.prj.hjson
+++ b/hw/ip/dcd/data/dcd.prj.hjson
@@ -4,9 +4,9 @@
{
name: "dcd",
- design_spec: "hw/ip/dcd/doc",
- dv_doc: "hw/ip/dcd/doc/dv",
- hw_checklist: "hw/ip/dcd/doc/checklist",
+ design_spec: "../doc",
+ dv_doc: "../doc/dv",
+ hw_checklist: "../doc/checklist",
version: "1.0",
life_stage: "L1",
design_stage: "D0",
diff --git a/hw/ip/edn/data/edn.prj.hjson b/hw/ip/edn/data/edn.prj.hjson
index 192995d..33509bf 100644
--- a/hw/ip/edn/data/edn.prj.hjson
+++ b/hw/ip/edn/data/edn.prj.hjson
@@ -4,9 +4,9 @@
{
name: "edn",
- design_spec: "hw/ip/edn/doc",
- dv_doc: "hw/ip/edn/doc/dv",
- hw_checklist: "hw/ip/edn/doc/checklist",
+ design_spec: "../doc",
+ dv_doc: "../doc/dv",
+ hw_checklist: "../doc/checklist",
version: "0.5",
life_stage: "L1",
design_stage: "D1",
diff --git a/hw/ip/entropy_src/data/entropy_src.prj.hjson b/hw/ip/entropy_src/data/entropy_src.prj.hjson
index 07b56dd..bda3a7c 100644
--- a/hw/ip/entropy_src/data/entropy_src.prj.hjson
+++ b/hw/ip/entropy_src/data/entropy_src.prj.hjson
@@ -4,9 +4,9 @@
{
name: "entropy_src",
- design_spec: "hw/ip/entropy_src/doc",
- dv_doc: "hw/ip/entropy_src/doc/dv",
- hw_checklist: "hw/ip/entropy_src/doc/checklist",
+ design_spec: "../doc",
+ dv_doc: "../doc/dv",
+ hw_checklist: "../doc/checklist",
version: "0.5",
life_stage: "L1",
design_stage: "D1",
diff --git a/hw/ip/flash_ctrl/data/flash_ctrl.prj.hjson b/hw/ip/flash_ctrl/data/flash_ctrl.prj.hjson
index fff3b1a..eba7e17 100644
--- a/hw/ip/flash_ctrl/data/flash_ctrl.prj.hjson
+++ b/hw/ip/flash_ctrl/data/flash_ctrl.prj.hjson
@@ -4,9 +4,9 @@
{
name: "flash_ctrl",
- design_spec: "hw/ip/flash_ctrl/doc",
- dv_doc: "hw/ip/flash_ctrl/doc/dv"
- hw_checklist: "hw/ip/flash_ctrl/doc/checklist",
+ design_spec: "../doc",
+ dv_doc: "../doc/dv"
+ hw_checklist: "../doc/checklist",
version: "0.5",
life_stage: "L1",
design_stage: "D1",
diff --git a/hw/ip/gpio/data/gpio.prj.hjson b/hw/ip/gpio/data/gpio.prj.hjson
index 1e761d5..55cdbcc 100644
--- a/hw/ip/gpio/data/gpio.prj.hjson
+++ b/hw/ip/gpio/data/gpio.prj.hjson
@@ -4,10 +4,10 @@
{
name: "gpio",
- design_spec: "hw/ip/gpio/doc",
- dv_doc: "hw/ip/gpio/doc/dv",
- hw_checklist: "hw/ip/gpio/doc/checklist",
- sw_checklist: "sw/device/lib/dif/dif_gpio",
+ design_spec: "../doc",
+ dv_doc: "../doc/dv",
+ hw_checklist: "../doc/checklist",
+ sw_checklist: "/sw/device/lib/dif/dif_gpio",
revisions: [
{
version: "1.0",
diff --git a/hw/ip/hmac/data/hmac.prj.hjson b/hw/ip/hmac/data/hmac.prj.hjson
index bc2f1ef..da3f629 100644
--- a/hw/ip/hmac/data/hmac.prj.hjson
+++ b/hw/ip/hmac/data/hmac.prj.hjson
@@ -4,10 +4,10 @@
{
name: "hmac",
- design_spec: "hw/ip/hmac/doc",
- dv_doc: "hw/ip/hmac/doc/dv",
- hw_checklist: "hw/ip/hmac/doc/checklist",
- sw_checklist: "sw/device/lib/dif/dif_hmac",
+ design_spec: "../doc",
+ dv_doc: "../doc/dv",
+ hw_checklist: "../doc/checklist",
+ sw_checklist: "/sw/device/lib/dif/dif_hmac",
revisions: [
{
version: "0.5",
diff --git a/hw/ip/i2c/data/i2c.prj.hjson b/hw/ip/i2c/data/i2c.prj.hjson
index b650755..ab9377e 100644
--- a/hw/ip/i2c/data/i2c.prj.hjson
+++ b/hw/ip/i2c/data/i2c.prj.hjson
@@ -4,10 +4,10 @@
{
name: "i2c",
- design_spec: "hw/ip/i2c/doc",
- dv_doc: "hw/ip/i2c/doc/dv",
- hw_checklist: "hw/ip/i2c/doc/checklist",
- sw_checklist: "sw/device/lib/dif/dif_i2c",
+ design_spec: "../doc",
+ dv_doc: "../doc/dv",
+ hw_checklist: "../doc/checklist",
+ sw_checklist: "/sw/device/lib/dif/dif_i2c",
revisions: [
{
version: "0.5",
diff --git a/hw/ip/keymgr/data/keymgr.prj.hjson b/hw/ip/keymgr/data/keymgr.prj.hjson
index 1ca30c8..e9432bf 100644
--- a/hw/ip/keymgr/data/keymgr.prj.hjson
+++ b/hw/ip/keymgr/data/keymgr.prj.hjson
@@ -4,9 +4,9 @@
{
name: "keymgr",
- design_spec: "hw/ip/keymgr/doc",
- dv_doc: "hw/ip/keymgr/doc/dv",
- hw_checklist: "hw/ip/keymgr/doc/checklist",
+ design_spec: "../doc",
+ dv_doc: "../doc/dv",
+ hw_checklist: "../doc/checklist",
revisions: [
{
version: "0.1",
diff --git a/hw/ip/kmac/data/kmac.prj.hjson b/hw/ip/kmac/data/kmac.prj.hjson
index 7eeb5c3..c87afcc 100644
--- a/hw/ip/kmac/data/kmac.prj.hjson
+++ b/hw/ip/kmac/data/kmac.prj.hjson
@@ -4,10 +4,10 @@
{
name: "kmac",
- design_spec: "hw/ip/kmac/doc",
- dv_doc: "hw/ip/kmac/doc/dv",
- hw_checklist: "hw/ip/kmac/doc/checklist",
- sw_checklist: "sw/device/lib/dif/dif_kmac",
+ design_spec: "../doc",
+ dv_doc: "../doc/dv",
+ hw_checklist: "../doc/checklist",
+ sw_checklist: "/sw/device/lib/dif/dif_kmac",
revisions: [
{
version: "1.0",
diff --git a/hw/ip/lc_ctrl/data/lc_ctrl.prj.hjson b/hw/ip/lc_ctrl/data/lc_ctrl.prj.hjson
index 8bad6a4..b36f1a8 100644
--- a/hw/ip/lc_ctrl/data/lc_ctrl.prj.hjson
+++ b/hw/ip/lc_ctrl/data/lc_ctrl.prj.hjson
@@ -4,9 +4,9 @@
{
name: "lc_ctrl",
- design_spec: "hw/ip/lc_ctrl/doc",
- dv_doc: "hw/ip/lc_ctrl/doc/dv",
- hw_checklist: "hw/ip/lc_ctrl/doc/checklist",
+ design_spec: "../doc",
+ dv_doc: "../doc/dv",
+ hw_checklist: "../doc/checklist",
version: "0.1",
life_stage: "L1",
design_stage: "D1",
diff --git a/hw/ip/nmi_gen/data/nmi_gen.prj.hjson b/hw/ip/nmi_gen/data/nmi_gen.prj.hjson
index 9eff44c..dc13bbe 100644
--- a/hw/ip/nmi_gen/data/nmi_gen.prj.hjson
+++ b/hw/ip/nmi_gen/data/nmi_gen.prj.hjson
@@ -4,7 +4,7 @@
{
name: "nmi_gen",
- design_spec: "hw/ip/nmi_gen/doc",
+ design_spec: "../doc",
version: "0.5",
life_stage: "L1",
design_stage: "D0",
diff --git a/hw/ip/otbn/data/otbn.prj.hjson b/hw/ip/otbn/data/otbn.prj.hjson
index accf8dd..ebdfd4f 100644
--- a/hw/ip/otbn/data/otbn.prj.hjson
+++ b/hw/ip/otbn/data/otbn.prj.hjson
@@ -4,10 +4,10 @@
{
name: "otbn",
- design_spec: "hw/ip/otbn/doc",
-// dv_doc: "hw/ip/otbn/doc/dv",
- hw_checklist: "hw/ip/otbn/doc/checklist",
- sw_checklist: "sw/device/lib/dif/dif_otbn"
+ design_spec: "../doc",
+// dv_doc: "../doc/dv",
+ hw_checklist: "../doc/checklist",
+ sw_checklist: "/sw/device/lib/dif/dif_otbn"
version: "0.1",
life_stage: "L1",
design_stage: "D1",
diff --git a/hw/ip/otp_ctrl/data/otp_ctrl.prj.hjson b/hw/ip/otp_ctrl/data/otp_ctrl.prj.hjson
index da40131..2c8a487 100644
--- a/hw/ip/otp_ctrl/data/otp_ctrl.prj.hjson
+++ b/hw/ip/otp_ctrl/data/otp_ctrl.prj.hjson
@@ -4,10 +4,10 @@
{
name: "otp_ctrl",
- design_spec: "hw/ip/otp_ctrl/doc",
- dv_doc: "hw/ip/otp_ctrl/doc/dv",
- hw_checklist: "hw/ip/otp_ctrl/doc/checklist",
- sw_checklist: "sw/device/lib/dif/dif_otp_ctrl",
+ design_spec: "../doc",
+ dv_doc: "../doc/dv",
+ hw_checklist: "../doc/checklist",
+ sw_checklist: "/sw/device/lib/dif/dif_otp_ctrl",
version: "0.1",
life_stage: "L1",
design_stage: "D1",
diff --git a/hw/ip/pattgen/data/pattgen.prj.hjson b/hw/ip/pattgen/data/pattgen.prj.hjson
index cca1d62..093e7e1 100644
--- a/hw/ip/pattgen/data/pattgen.prj.hjson
+++ b/hw/ip/pattgen/data/pattgen.prj.hjson
@@ -4,9 +4,9 @@
{
name: "pattgen",
- design_spec: "hw/ip/pattgen/doc",
- dv_doc: "hw/ip/pattgen/doc/dv",
- hw_checklist: "hw/ip/pattgen/doc/checklist",
+ design_spec: "../doc",
+ dv_doc: "../doc/dv",
+ hw_checklist: "../doc/checklist",
revisions: [
{
version: "1.0",
diff --git a/hw/ip/pinmux/data/pinmux.prj.hjson b/hw/ip/pinmux/data/pinmux.prj.hjson
index f7f8b19..2777324 100644
--- a/hw/ip/pinmux/data/pinmux.prj.hjson
+++ b/hw/ip/pinmux/data/pinmux.prj.hjson
@@ -4,9 +4,9 @@
{
name: "pinmux",
- design_spec: "hw/ip/pinmux/doc",
- dv_doc: "hw/ip/pinmux/doc/dv",
- hw_checklist: "hw/ip/pinmux/doc/checklist",
+ design_spec: "../doc",
+ dv_doc: "../doc/dv",
+ hw_checklist: "../doc/checklist",
version: "0.5",
life_stage: "L1",
design_stage: "D1",
diff --git a/hw/ip/pwrmgr/data/pwrmgr.prj.hjson b/hw/ip/pwrmgr/data/pwrmgr.prj.hjson
index e5ea1d7..641ead2 100644
--- a/hw/ip/pwrmgr/data/pwrmgr.prj.hjson
+++ b/hw/ip/pwrmgr/data/pwrmgr.prj.hjson
@@ -4,10 +4,10 @@
{
name: "pwrmgr",
- design_spec: "hw/ip/pwrmgr/doc",
- dv_doc: "hw/top_earlgrey/doc/dv",
- hw_checklist: "hw/ip/pwrmgr/doc/checklist",
- sw_checklist: "sw/device/lib/dif/dif_pwrmgr",
+ design_spec: "../doc",
+ dv_doc: "/hw/top_earlgrey/doc/dv",
+ hw_checklist: "../doc/checklist",
+ sw_checklist: "/sw/device/lib/dif/dif_pwrmgr",
revisions: [
{
version: "0.1",
diff --git a/hw/ip/rbox/data/rbox.prj.hjson b/hw/ip/rbox/data/rbox.prj.hjson
index b229752..1746eec 100644
--- a/hw/ip/rbox/data/rbox.prj.hjson
+++ b/hw/ip/rbox/data/rbox.prj.hjson
@@ -4,9 +4,9 @@
{
name: "rbox",
- design_spec: "hw/ip/rbox/doc",
- dv_doc: "hw/ip/rbox/doc/dv",
- hw_checklist: "hw/ip/rbox/doc/checklist",
+ design_spec: "../doc",
+ dv_doc: "../doc/dv",
+ hw_checklist: "../doc/checklist",
version: "1.0",
life_stage: "L1",
design_stage: "D0",
diff --git a/hw/ip/rstmgr/data/rstmgr.prj.hjson b/hw/ip/rstmgr/data/rstmgr.prj.hjson
index ced42a1..71c02c2 100644
--- a/hw/ip/rstmgr/data/rstmgr.prj.hjson
+++ b/hw/ip/rstmgr/data/rstmgr.prj.hjson
@@ -4,10 +4,10 @@
{
name: "rstmgr",
- design_spec: "hw/ip/rstmgr/doc",
- dv_doc: "hw/top_earlgrey/doc/dv",
- hw_checklist: "hw/ip/rstmgr/doc/checklist",
- sw_checklist: "sw/device/lib/dif/dif_rstmgr",
+ design_spec: "../doc",
+ dv_doc: "/hw/top_earlgrey/doc/dv",
+ hw_checklist: "../doc/checklist",
+ sw_checklist: "/sw/device/lib/dif/dif_rstmgr",
revisions: [
{
version: "0.1",
diff --git a/hw/ip/rv_core_ibex/data/rv_core_ibex.prj.hjson b/hw/ip/rv_core_ibex/data/rv_core_ibex.prj.hjson
index eb81d4a..703143b 100644
--- a/hw/ip/rv_core_ibex/data/rv_core_ibex.prj.hjson
+++ b/hw/ip/rv_core_ibex/data/rv_core_ibex.prj.hjson
@@ -4,8 +4,8 @@
{
name: "rv_core_ibex",
- design_spec: "hw/ip/rv_core_ibex/doc",
- hw_checklist: "hw/ip/rv_core_ibex/doc/checklist",
+ design_spec: "../doc",
+ hw_checklist: "../doc/checklist",
version: "0.5",
life_stage: "L1",
design_stage: "D2",
diff --git a/hw/ip/rv_dm/data/rv_dm.prj.hjson b/hw/ip/rv_dm/data/rv_dm.prj.hjson
index 72f5b30..6d52555 100644
--- a/hw/ip/rv_dm/data/rv_dm.prj.hjson
+++ b/hw/ip/rv_dm/data/rv_dm.prj.hjson
@@ -4,7 +4,7 @@
{
name: "rv_dm",
- design_spec: "hw/ip/rv_dm/doc",
+ design_spec: "../doc",
version: "0.5",
life_stage: "L1",
design_stage: "D0",
diff --git a/hw/ip/rv_plic/data/rv_plic.prj.hjson b/hw/ip/rv_plic/data/rv_plic.prj.hjson
index 6e51034..50a896a 100644
--- a/hw/ip/rv_plic/data/rv_plic.prj.hjson
+++ b/hw/ip/rv_plic/data/rv_plic.prj.hjson
@@ -4,10 +4,10 @@
{
name: "rv_plic",
- design_spec: "hw/ip/rv_plic/doc",
- dv_doc: "hw/ip/rv_plic/doc/dv",
- hw_checklist: "hw/ip/rv_plic/doc/checklist",
- sw_checklist: "sw/device/lib/dif/dif_plic",
+ design_spec: "../doc",
+ dv_doc: "../doc/dv",
+ hw_checklist: "../doc/checklist",
+ sw_checklist: "/sw/device/lib/dif/dif_plic",
revisions: [
{
version: "0.5",
diff --git a/hw/ip/rv_timer/data/rv_timer.prj.hjson b/hw/ip/rv_timer/data/rv_timer.prj.hjson
index 9aa4fbc..e875f2f 100644
--- a/hw/ip/rv_timer/data/rv_timer.prj.hjson
+++ b/hw/ip/rv_timer/data/rv_timer.prj.hjson
@@ -4,9 +4,9 @@
{
name: "rv_timer",
- design_spec: "hw/ip/rv_timer/doc",
- dv_doc: "hw/ip/rv_timer/doc/dv",
- hw_checklist: "hw/ip/rv_timer/doc/checklist",
+ design_spec: "../doc",
+ dv_doc: "../doc/dv",
+ hw_checklist: "../doc/checklist",
sw_checklist: "sw/device/lib/dif/dif_rv_timer",
revisions: [
{
diff --git a/hw/ip/spi_device/data/spi_device.prj.hjson b/hw/ip/spi_device/data/spi_device.prj.hjson
index 803a572..82ac834 100644
--- a/hw/ip/spi_device/data/spi_device.prj.hjson
+++ b/hw/ip/spi_device/data/spi_device.prj.hjson
@@ -4,10 +4,10 @@
{
name: "spi_device",
- design_spec: "hw/ip/spi_device/doc",
- dv_doc: "hw/ip/spi_device/doc/dv",
- hw_checklist: "hw/ip/spi_device/doc/checklist",
- sw_checklist: "sw/device/lib/dif/dif_spi_device",
+ design_spec: "../doc",
+ dv_doc: "../doc/dv",
+ hw_checklist: "../doc/checklist",
+ sw_checklist: "/sw/device/lib/dif/dif_spi_device",
revisions: [
{
version: "0.5",
diff --git a/hw/ip/spi_host/data/spi_host.prj.hjson b/hw/ip/spi_host/data/spi_host.prj.hjson
index 236114e..91af91f 100644
--- a/hw/ip/spi_host/data/spi_host.prj.hjson
+++ b/hw/ip/spi_host/data/spi_host.prj.hjson
@@ -4,19 +4,14 @@
{
name: "spi_host",
- design_spec: "",
- dv_doc: "",
- hw_checklist: "",
- sw_checklist: "",
+ design_spec: "../doc",
revisions: [
{
version: "0.5",
life_stage: "L0",
design_stage: "D0",
- verification_stage: "",
- dif_stage: "",
- commit_id: "",
- notes: ""
+ verification_stage: "V0",
+ dif_stage: "S0",
}
]
}
diff --git a/hw/ip/sram_ctrl/data/sram_ctrl.prj.hjson b/hw/ip/sram_ctrl/data/sram_ctrl.prj.hjson
index 70c3625..4873bd4 100644
--- a/hw/ip/sram_ctrl/data/sram_ctrl.prj.hjson
+++ b/hw/ip/sram_ctrl/data/sram_ctrl.prj.hjson
@@ -4,9 +4,9 @@
{
name: "sram_ctrl",
- design_spec: "hw/ip/sram_ctrl/doc",
- dv_doc: "hw/ip/sram_ctrl/doc/dv",
- hw_checklist: "hw/ip/sram_ctrl/doc/checklist",
+ design_spec: "../doc",
+ dv_doc: "../doc/dv",
+ hw_checklist: "../doc/checklist",
sw_checklist: "",
version: "0.1",
life_stage: "L1",
diff --git a/hw/ip/tlul/data/tlul.prj.hjson b/hw/ip/tlul/data/tlul.prj.hjson
index 154b41a..4583304 100644
--- a/hw/ip/tlul/data/tlul.prj.hjson
+++ b/hw/ip/tlul/data/tlul.prj.hjson
@@ -4,9 +4,9 @@
{
name: "tlul",
- design_spec: "hw/ip/tlul/doc",
- dv_doc: "hw/ip/tlul/doc/dv",
- hw_checklist: "hw/top_earlgrey/ip/xbar/doc/checklist",
+ design_spec: "../doc",
+ dv_doc: "../doc/dv",
+ hw_checklist: "/hw/top_earlgrey/ip/xbar/doc/checklist",
revisions: [
{
version: "0.5",
diff --git a/hw/ip/uart/data/uart.prj.hjson b/hw/ip/uart/data/uart.prj.hjson
index 0cea43a..9387fbf 100644
--- a/hw/ip/uart/data/uart.prj.hjson
+++ b/hw/ip/uart/data/uart.prj.hjson
@@ -4,10 +4,10 @@
{
name: "uart",
- design_spec: "hw/ip/uart/doc",
- dv_doc: "hw/ip/uart/doc/dv",
- hw_checklist: "hw/ip/uart/doc/checklist",
- sw_checklist: "sw/device/lib/dif/dif_uart",
+ design_spec: "../doc",
+ dv_doc: "../doc/dv",
+ hw_checklist: "../doc/checklist",
+ sw_checklist: "/sw/device/lib/dif/dif_uart",
revisions: [
{
version: "1.0",
diff --git a/hw/ip/usbdev/data/usbdev.prj.hjson b/hw/ip/usbdev/data/usbdev.prj.hjson
index a2b753d..7fc78b7 100644
--- a/hw/ip/usbdev/data/usbdev.prj.hjson
+++ b/hw/ip/usbdev/data/usbdev.prj.hjson
@@ -4,9 +4,9 @@
{
name: "usbdev",
- design_spec: "hw/ip/usbdev/doc",
- dv_doc: "hw/ip/usbdev/doc/dv",
- sw_checklist: "sw/device/lib/dif/dif_usbdev",
+ design_spec: "../doc",
+ dv_doc: "../doc/dv",
+ sw_checklist: "/sw/device/lib/dif/dif_usbdev",
version: "0.5",
life_stage: "L1",
design_stage: "D1",
diff --git a/util/dashboard/gen_dashboard_entry.py b/util/dashboard/gen_dashboard_entry.py
index 89717d6..7734c55 100644
--- a/util/dashboard/gen_dashboard_entry.py
+++ b/util/dashboard/gen_dashboard_entry.py
@@ -10,11 +10,14 @@
import os.path
import re
import sys
+from pathlib import Path
import dashboard.dashboard_validate as dashboard_validate
import hjson
import mistletoe as mk
+REPO_TOP = Path(__file__).parent.parent.parent.resolve().absolute()
+
def genout(outfile, msg):
outfile.write(msg)
@@ -42,21 +45,29 @@
'S3': 'Stable',
}
-# TODO: This is relative to the dashboard, which is currently located at
-# hw/_index.md.
-docs_server = "../.."
-
def convert_stage(stagestr):
return STAGE_STRINGS.get(stagestr, "UNKNOWN")
+def get_doc_url(base, url):
+ """ Produce a URL to a document.
+
+ Relative `url`s are relative to `base`, absolute `url`s are relative to the
+ repository root.
+ """
+ assert isinstance(url, str) and len(url) > 0
+ if url[0] == '/':
+ return url
+ else:
+ return '/' + base + '/' + url
+
# Link module name with its design spec doc.
def get_linked_design_spec(obj):
result = ""
- if 'design_spec' in obj.keys():
- url = docs_server + "/" + html.escape(obj['design_spec'])
- result = "<span title='Design Spec'><a href='{}'>".format(url)
+ if 'design_spec' in obj:
+ result = "<span title='Design Spec'><a href='{}'>".format(
+ get_doc_url(obj['_ip_desc_hjson_dir'], obj['design_spec']))
result += "<code>{}</code></a></span>".format(html.escape(obj['name']))
else:
result = html.escape(obj['name'])
@@ -66,9 +77,9 @@
# Provide the link to the DV plan.
def get_linked_dv_plan(obj):
- if 'dv_doc' in obj.keys():
- url = docs_server + "/" + html.escape(obj['dv_doc'])
- return "<span title='DV Document'><a href=\"{}\">DV</a></span>".format(url)
+ if 'dv_doc' in obj:
+ return "<span title='DV Document'><a href=\"{}\">DV</a></span>".format(
+ get_doc_url(obj['_ip_desc_hjson_dir'], obj['dv_doc']))
else:
return ""
@@ -102,8 +113,8 @@
url = "https://github.com/lowrisc/opentitan/tree/{}/{}.md{}".format(
rev['commit_id'], obj['hw_checklist'], in_page_ref)
elif 'hw_checklist' in obj:
- url = "{}/{}{}".format(docs_server, html.escape(obj['hw_checklist']),
- in_page_ref)
+ url = get_doc_url(obj['_ip_desc_hjson_dir'],
+ obj['hw_checklist'] + in_page_ref)
else:
# There is no checklist available, so point to the template.
# doc/project/hw_checklist.md.tpl is a symlink to ip_checklist.md.tpl,
@@ -135,8 +146,8 @@
url = "https://github.com/lowrisc/opentitan/tree/{}/{}.md{}".format(
rev['commit_id'], obj['sw_checklist'], in_page_ref)
elif 'sw_checklist' in obj:
- url = "{}/{}{}".format(docs_server, html.escape(obj['sw_checklist']),
- in_page_ref)
+ url = get_doc_url(obj['_ip_desc_hjson_dir'],
+ obj['sw_checklist'] + in_page_ref)
else:
# There is no checklist available, so point to the template.
url = "https://github.com/lowrisc/opentitan/tree/master/"
@@ -200,6 +211,9 @@
else:
log.fail("hjson file import failed\n")
+ ip_desc_hjson_dir = hjson_path.parent.relative_to(REPO_TOP)
+ obj['_ip_desc_hjson_dir'] = str(ip_desc_hjson_dir)
+
# If `revisions` field doesn't exist, the tool assumes the Hjson
# as the previous project format, which has only one version entry.
if "revisions" not in obj: