[util] allow separate "pass" parameters for FIFOs

Signed-off-by: Timothy Chen <timothytim@google.com>
diff --git a/hw/top_earlgrey/data/autogen/top_earlgrey.gen.hjson b/hw/top_earlgrey/data/autogen/top_earlgrey.gen.hjson
index c1f2c81..0b506cd 100644
--- a/hw/top_earlgrey/data/autogen/top_earlgrey.gen.hjson
+++ b/hw/top_earlgrey/data/autogen/top_earlgrey.gen.hjson
@@ -8316,40 +8316,44 @@
           type: host
           clock: clk_main_i
           reset: rst_main_ni
-          pipeline: "false"
+          pipeline: false
           xbar: false
           stub: false
           inst_type: ""
-          pipeline_byp: "true"
+          req_fifo_pass: true
+          rsp_fifo_pass: true
         }
         {
           name: rv_core_ibex.cored
           type: host
           clock: clk_main_i
           reset: rst_main_ni
-          pipeline: "false"
+          pipeline: false
           xbar: false
           stub: false
           inst_type: ""
-          pipeline_byp: "true"
+          req_fifo_pass: true
+          rsp_fifo_pass: true
         }
         {
           name: rv_dm.sba
           type: host
           clock: clk_main_i
           reset: rst_main_ni
-          pipeline_byp: "false"
+          req_fifo_pass: false
+          rsp_fifo_pass: false
           xbar: false
           stub: false
           inst_type: ""
-          pipeline: "true"
+          pipeline: true
         }
         {
           name: rv_dm.regs
           type: device
           clock: clk_main_i
           reset: rst_main_ni
-          pipeline_byp: "false"
+          req_fifo_pass: false
+          rsp_fifo_pass: false
           inst_type: rv_dm
           addr_range:
           [
@@ -8360,14 +8364,15 @@
           ]
           xbar: false
           stub: false
-          pipeline: "true"
+          pipeline: true
         }
         {
           name: rv_dm.rom
           type: device
           clock: clk_main_i
           reset: rst_main_ni
-          pipeline_byp: "false"
+          req_fifo_pass: false
+          rsp_fifo_pass: false
           inst_type: rv_dm
           addr_range:
           [
@@ -8378,14 +8383,14 @@
           ]
           xbar: false
           stub: false
-          pipeline: "true"
+          pipeline: true
         }
         {
           name: rom_ctrl.rom
           type: device
           clock: clk_main_i
           reset: rst_main_ni
-          pipeline: "false"
+          pipeline: false
           inst_type: rom_ctrl
           addr_range:
           [
@@ -8396,14 +8401,14 @@
           ]
           xbar: false
           stub: false
-          pipeline_byp: "true"
+          req_fifo_pass: true
         }
         {
           name: rom_ctrl.regs
           type: device
           clock: clk_main_i
           reset: rst_main_ni
-          pipeline: "false"
+          pipeline: false
           inst_type: rom_ctrl
           addr_range:
           [
@@ -8414,17 +8419,18 @@
           ]
           xbar: false
           stub: false
-          pipeline_byp: "true"
+          req_fifo_pass: true
         }
         {
           name: peri
           type: device
           clock: clk_fixed_i
           reset: rst_fixed_ni
-          pipeline_byp: "false"
+          req_fifo_pass: false
+          rsp_fifo_pass: false
           xbar: true
           stub: false
-          pipeline: "true"
+          pipeline: true
           addr_range:
           [
             {
@@ -8442,7 +8448,7 @@
           type: device
           clock: clk_spi_host0_i
           reset: rst_spi_host0_ni
-          pipeline: "false"
+          pipeline: false
           inst_type: spi_host
           addr_range:
           [
@@ -8453,14 +8459,14 @@
           ]
           xbar: false
           stub: false
-          pipeline_byp: "true"
+          req_fifo_pass: true
         }
         {
           name: spi_host1
           type: device
           clock: clk_spi_host1_i
           reset: rst_spi_host1_ni
-          pipeline: "false"
+          pipeline: false
           inst_type: spi_host
           addr_range:
           [
@@ -8471,14 +8477,15 @@
           ]
           xbar: false
           stub: false
-          pipeline_byp: "true"
+          req_fifo_pass: true
         }
         {
           name: flash_ctrl.core
           type: device
           clock: clk_main_i
           reset: rst_main_ni
-          pipeline_byp: "false"
+          req_fifo_pass: false
+          rsp_fifo_pass: false
           inst_type: flash_ctrl
           addr_range:
           [
@@ -8489,14 +8496,15 @@
           ]
           xbar: false
           stub: false
-          pipeline: "true"
+          pipeline: true
         }
         {
           name: flash_ctrl.prim
           type: device
           clock: clk_main_i
           reset: rst_main_ni
-          pipeline_byp: "false"
+          req_fifo_pass: false
+          rsp_fifo_pass: false
           inst_type: flash_ctrl
           addr_range:
           [
@@ -8507,14 +8515,15 @@
           ]
           xbar: false
           stub: false
-          pipeline: "true"
+          pipeline: true
         }
         {
           name: flash_ctrl.mem
           type: device
           clock: clk_main_i
           reset: rst_main_ni
-          pipeline_byp: "false"
+          req_fifo_pass: false
+          rsp_fifo_pass: false
           inst_type: flash_ctrl
           addr_range:
           [
@@ -8525,14 +8534,15 @@
           ]
           xbar: false
           stub: false
-          pipeline: "true"
+          pipeline: true
         }
         {
           name: hmac
           type: device
           clock: clk_main_i
           reset: rst_main_ni
-          pipeline_byp: "false"
+          req_fifo_pass: false
+          rsp_fifo_pass: false
           inst_type: hmac
           addr_range:
           [
@@ -8543,14 +8553,15 @@
           ]
           xbar: false
           stub: false
-          pipeline: "true"
+          pipeline: true
         }
         {
           name: kmac
           type: device
           clock: clk_main_i
           reset: rst_main_ni
-          pipeline_byp: "false"
+          req_fifo_pass: false
+          rsp_fifo_pass: false
           inst_type: kmac
           addr_range:
           [
@@ -8561,14 +8572,15 @@
           ]
           xbar: false
           stub: false
-          pipeline: "true"
+          pipeline: true
         }
         {
           name: aes
           type: device
           clock: clk_main_i
           reset: rst_main_ni
-          pipeline_byp: "false"
+          req_fifo_pass: false
+          rsp_fifo_pass: false
           inst_type: aes
           addr_range:
           [
@@ -8579,14 +8591,15 @@
           ]
           xbar: false
           stub: false
-          pipeline: "true"
+          pipeline: true
         }
         {
           name: entropy_src
           type: device
           clock: clk_main_i
           reset: rst_main_ni
-          pipeline_byp: "false"
+          req_fifo_pass: false
+          rsp_fifo_pass: false
           inst_type: entropy_src
           addr_range:
           [
@@ -8597,14 +8610,15 @@
           ]
           xbar: false
           stub: false
-          pipeline: "true"
+          pipeline: true
         }
         {
           name: csrng
           type: device
           clock: clk_main_i
           reset: rst_main_ni
-          pipeline_byp: "false"
+          req_fifo_pass: false
+          rsp_fifo_pass: false
           inst_type: csrng
           addr_range:
           [
@@ -8615,14 +8629,15 @@
           ]
           xbar: false
           stub: false
-          pipeline: "true"
+          pipeline: true
         }
         {
           name: edn0
           type: device
           clock: clk_main_i
           reset: rst_main_ni
-          pipeline_byp: "false"
+          req_fifo_pass: false
+          rsp_fifo_pass: false
           inst_type: edn
           addr_range:
           [
@@ -8633,14 +8648,15 @@
           ]
           xbar: false
           stub: false
-          pipeline: "true"
+          pipeline: true
         }
         {
           name: edn1
           type: device
           clock: clk_main_i
           reset: rst_main_ni
-          pipeline_byp: "false"
+          req_fifo_pass: false
+          rsp_fifo_pass: false
           inst_type: edn
           addr_range:
           [
@@ -8651,7 +8667,7 @@
           ]
           xbar: false
           stub: false
-          pipeline: "true"
+          pipeline: true
         }
         {
           name: rv_plic
@@ -8659,7 +8675,8 @@
           clock: clk_main_i
           reset: rst_main_ni
           inst_type: rv_plic
-          pipeline_byp: "false"
+          req_fifo_pass: false
+          rsp_fifo_pass: false
           addr_range:
           [
             {
@@ -8669,14 +8686,15 @@
           ]
           xbar: false
           stub: false
-          pipeline: "true"
+          pipeline: true
         }
         {
           name: otbn
           type: device
           clock: clk_main_i
           reset: rst_main_ni
-          pipeline_byp: "false"
+          req_fifo_pass: false
+          rsp_fifo_pass: false
           inst_type: otbn
           addr_range:
           [
@@ -8687,14 +8705,15 @@
           ]
           xbar: false
           stub: false
-          pipeline: "true"
+          pipeline: true
         }
         {
           name: keymgr
           type: device
           clock: clk_main_i
           reset: rst_main_ni
-          pipeline_byp: "false"
+          req_fifo_pass: false
+          rsp_fifo_pass: false
           inst_type: keymgr
           addr_range:
           [
@@ -8705,14 +8724,15 @@
           ]
           xbar: false
           stub: false
-          pipeline: "true"
+          pipeline: true
         }
         {
           name: rv_core_ibex.cfg
           type: device
           clock: clk_main_i
           reset: rst_main_ni
-          pipeline_byp: "false"
+          req_fifo_pass: false
+          rsp_fifo_pass: false
           inst_type: rv_core_ibex
           addr_range:
           [
@@ -8723,14 +8743,14 @@
           ]
           xbar: false
           stub: false
-          pipeline: "true"
+          pipeline: true
         }
         {
           name: sram_ctrl_main.regs
           type: device
           clock: clk_main_i
           reset: rst_main_ni
-          pipeline: "false"
+          pipeline: false
           inst_type: sram_ctrl
           addr_range:
           [
@@ -8741,14 +8761,14 @@
           ]
           xbar: false
           stub: false
-          pipeline_byp: "true"
+          req_fifo_pass: true
         }
         {
           name: sram_ctrl_main.ram
           type: device
           clock: clk_main_i
           reset: rst_main_ni
-          pipeline: "false"
+          pipeline: false
           inst_type: sram_ctrl
           addr_range:
           [
@@ -8759,7 +8779,7 @@
           ]
           xbar: false
           stub: false
-          pipeline_byp: "true"
+          req_fifo_pass: true
         }
       ]
       clock: clk_main_i
@@ -9150,17 +9170,18 @@
           clock: clk_peri_i
           reset: rst_peri_ni
           xbar: true
-          pipeline: "false"
+          pipeline: false
           stub: false
           inst_type: ""
-          pipeline_byp: "true"
+          req_fifo_pass: true
+          rsp_fifo_pass: true
         }
         {
           name: uart0
           type: device
           clock: clk_peri_i
           reset: rst_peri_ni
-          pipeline: "false"
+          pipeline: false
           inst_type: uart
           addr_range:
           [
@@ -9171,14 +9192,14 @@
           ]
           xbar: false
           stub: false
-          pipeline_byp: "true"
+          req_fifo_pass: true
         }
         {
           name: uart1
           type: device
           clock: clk_peri_i
           reset: rst_peri_ni
-          pipeline: "false"
+          pipeline: false
           inst_type: uart
           addr_range:
           [
@@ -9189,14 +9210,14 @@
           ]
           xbar: false
           stub: false
-          pipeline_byp: "true"
+          req_fifo_pass: true
         }
         {
           name: uart2
           type: device
           clock: clk_peri_i
           reset: rst_peri_ni
-          pipeline: "false"
+          pipeline: false
           inst_type: uart
           addr_range:
           [
@@ -9207,14 +9228,14 @@
           ]
           xbar: false
           stub: false
-          pipeline_byp: "true"
+          req_fifo_pass: true
         }
         {
           name: uart3
           type: device
           clock: clk_peri_i
           reset: rst_peri_ni
-          pipeline: "false"
+          pipeline: false
           inst_type: uart
           addr_range:
           [
@@ -9225,14 +9246,14 @@
           ]
           xbar: false
           stub: false
-          pipeline_byp: "true"
+          req_fifo_pass: true
         }
         {
           name: i2c0
           type: device
           clock: clk_peri_i
           reset: rst_peri_ni
-          pipeline: "false"
+          pipeline: false
           inst_type: i2c
           addr_range:
           [
@@ -9243,14 +9264,14 @@
           ]
           xbar: false
           stub: false
-          pipeline_byp: "true"
+          req_fifo_pass: true
         }
         {
           name: i2c1
           type: device
           clock: clk_peri_i
           reset: rst_peri_ni
-          pipeline: "false"
+          pipeline: false
           inst_type: i2c
           addr_range:
           [
@@ -9261,14 +9282,14 @@
           ]
           xbar: false
           stub: false
-          pipeline_byp: "true"
+          req_fifo_pass: true
         }
         {
           name: i2c2
           type: device
           clock: clk_peri_i
           reset: rst_peri_ni
-          pipeline: "false"
+          pipeline: false
           inst_type: i2c
           addr_range:
           [
@@ -9279,14 +9300,14 @@
           ]
           xbar: false
           stub: false
-          pipeline_byp: "true"
+          req_fifo_pass: true
         }
         {
           name: pattgen
           type: device
           clock: clk_peri_i
           reset: rst_peri_ni
-          pipeline: "false"
+          pipeline: false
           inst_type: pattgen
           addr_range:
           [
@@ -9297,14 +9318,14 @@
           ]
           xbar: false
           stub: false
-          pipeline_byp: "true"
+          req_fifo_pass: true
         }
         {
           name: pwm_aon
           type: device
           clock: clk_peri_i
           reset: rst_peri_ni
-          pipeline: "false"
+          pipeline: false
           inst_type: pwm
           addr_range:
           [
@@ -9315,14 +9336,14 @@
           ]
           xbar: false
           stub: false
-          pipeline_byp: "true"
+          req_fifo_pass: true
         }
         {
           name: gpio
           type: device
           clock: clk_peri_i
           reset: rst_peri_ni
-          pipeline: "false"
+          pipeline: false
           inst_type: gpio
           addr_range:
           [
@@ -9333,14 +9354,14 @@
           ]
           xbar: false
           stub: false
-          pipeline_byp: "true"
+          req_fifo_pass: true
         }
         {
           name: spi_device
           type: device
           clock: clk_peri_i
           reset: rst_peri_ni
-          pipeline: "false"
+          pipeline: false
           inst_type: spi_device
           addr_range:
           [
@@ -9351,14 +9372,14 @@
           ]
           xbar: false
           stub: false
-          pipeline_byp: "true"
+          req_fifo_pass: true
         }
         {
           name: rv_timer
           type: device
           clock: clk_peri_i
           reset: rst_peri_ni
-          pipeline: "false"
+          pipeline: false
           inst_type: rv_timer
           addr_range:
           [
@@ -9369,14 +9390,14 @@
           ]
           xbar: false
           stub: false
-          pipeline_byp: "true"
+          req_fifo_pass: true
         }
         {
           name: usbdev
           type: device
           clock: clk_peri_i
           reset: rst_peri_ni
-          pipeline: "false"
+          pipeline: false
           inst_type: usbdev
           addr_range:
           [
@@ -9387,14 +9408,14 @@
           ]
           xbar: false
           stub: false
-          pipeline_byp: "true"
+          req_fifo_pass: true
         }
         {
           name: pwrmgr_aon
           type: device
           clock: clk_peri_i
           reset: rst_peri_ni
-          pipeline: "false"
+          pipeline: false
           inst_type: pwrmgr
           addr_range:
           [
@@ -9405,14 +9426,14 @@
           ]
           xbar: false
           stub: false
-          pipeline_byp: "true"
+          req_fifo_pass: true
         }
         {
           name: rstmgr_aon
           type: device
           clock: clk_peri_i
           reset: rst_peri_ni
-          pipeline: "false"
+          pipeline: false
           inst_type: rstmgr
           addr_range:
           [
@@ -9423,14 +9444,14 @@
           ]
           xbar: false
           stub: false
-          pipeline_byp: "true"
+          req_fifo_pass: true
         }
         {
           name: clkmgr_aon
           type: device
           clock: clk_peri_i
           reset: rst_peri_ni
-          pipeline: "false"
+          pipeline: false
           inst_type: clkmgr
           addr_range:
           [
@@ -9441,14 +9462,14 @@
           ]
           xbar: false
           stub: false
-          pipeline_byp: "true"
+          req_fifo_pass: true
         }
         {
           name: pinmux_aon
           type: device
           clock: clk_peri_i
           reset: rst_peri_ni
-          pipeline: "false"
+          pipeline: false
           inst_type: pinmux
           addr_range:
           [
@@ -9459,14 +9480,14 @@
           ]
           xbar: false
           stub: false
-          pipeline_byp: "true"
+          req_fifo_pass: true
         }
         {
           name: otp_ctrl.core
           type: device
           clock: clk_peri_i
           reset: rst_peri_ni
-          pipeline: "false"
+          pipeline: false
           inst_type: otp_ctrl
           addr_range:
           [
@@ -9477,14 +9498,14 @@
           ]
           xbar: false
           stub: false
-          pipeline_byp: "true"
+          req_fifo_pass: true
         }
         {
           name: otp_ctrl.prim
           type: device
           clock: clk_peri_i
           reset: rst_peri_ni
-          pipeline: "false"
+          pipeline: false
           inst_type: otp_ctrl
           addr_range:
           [
@@ -9495,14 +9516,14 @@
           ]
           xbar: false
           stub: false
-          pipeline_byp: "true"
+          req_fifo_pass: true
         }
         {
           name: lc_ctrl
           type: device
           clock: clk_peri_i
           reset: rst_peri_ni
-          pipeline: "false"
+          pipeline: false
           inst_type: lc_ctrl
           addr_range:
           [
@@ -9513,14 +9534,14 @@
           ]
           xbar: false
           stub: false
-          pipeline_byp: "true"
+          req_fifo_pass: true
         }
         {
           name: sensor_ctrl
           type: device
           clock: clk_peri_i
           reset: rst_peri_ni
-          pipeline: "false"
+          pipeline: false
           inst_type: sensor_ctrl
           addr_range:
           [
@@ -9531,14 +9552,14 @@
           ]
           xbar: false
           stub: false
-          pipeline_byp: "true"
+          req_fifo_pass: true
         }
         {
           name: alert_handler
           type: device
           clock: clk_peri_i
           reset: rst_peri_ni
-          pipeline: "false"
+          pipeline: false
           inst_type: alert_handler
           addr_range:
           [
@@ -9549,14 +9570,14 @@
           ]
           xbar: false
           stub: false
-          pipeline_byp: "true"
+          req_fifo_pass: true
         }
         {
           name: sram_ctrl_ret_aon.regs
           type: device
           clock: clk_peri_i
           reset: rst_peri_ni
-          pipeline: "false"
+          pipeline: false
           inst_type: sram_ctrl
           addr_range:
           [
@@ -9567,14 +9588,14 @@
           ]
           xbar: false
           stub: false
-          pipeline_byp: "true"
+          req_fifo_pass: true
         }
         {
           name: sram_ctrl_ret_aon.ram
           type: device
           clock: clk_peri_i
           reset: rst_peri_ni
-          pipeline: "false"
+          pipeline: false
           inst_type: sram_ctrl
           addr_range:
           [
@@ -9585,14 +9606,14 @@
           ]
           xbar: false
           stub: false
-          pipeline_byp: "true"
+          req_fifo_pass: true
         }
         {
           name: aon_timer_aon
           type: device
           clock: clk_peri_i
           reset: rst_peri_ni
-          pipeline: "false"
+          pipeline: false
           inst_type: aon_timer
           addr_range:
           [
@@ -9603,14 +9624,14 @@
           ]
           xbar: false
           stub: false
-          pipeline_byp: "true"
+          req_fifo_pass: true
         }
         {
           name: sysrst_ctrl_aon
           type: device
           clock: clk_peri_i
           reset: rst_peri_ni
-          pipeline: "false"
+          pipeline: false
           inst_type: sysrst_ctrl
           addr_range:
           [
@@ -9621,14 +9642,14 @@
           ]
           xbar: false
           stub: false
-          pipeline_byp: "true"
+          req_fifo_pass: true
         }
         {
           name: adc_ctrl_aon
           type: device
           clock: clk_peri_i
           reset: rst_peri_ni
-          pipeline: "false"
+          pipeline: false
           inst_type: adc_ctrl
           addr_range:
           [
@@ -9639,14 +9660,14 @@
           ]
           xbar: false
           stub: false
-          pipeline_byp: "true"
+          req_fifo_pass: true
         }
         {
           name: ast
           type: device
           clock: clk_peri_i
           reset: rst_peri_ni
-          pipeline: "false"
+          pipeline: false
           inst_type: ast
           addr_range:
           [
@@ -9657,7 +9678,7 @@
           ]
           xbar: false
           stub: true
-          pipeline_byp: "true"
+          req_fifo_pass: true
         }
       ]
       clock: clk_peri_i
diff --git a/hw/top_earlgrey/data/xbar_main.hjson b/hw/top_earlgrey/data/xbar_main.hjson
index 93d2f11..12a58b9 100644
--- a/hw/top_earlgrey/data/xbar_main.hjson
+++ b/hw/top_earlgrey/data/xbar_main.hjson
@@ -13,159 +13,177 @@
       type:  "host",
       clock: "clk_main_i",
       reset: "rst_main_ni",
-      pipeline: "false"
+      pipeline: false
 
     },
     { name:  "rv_core_ibex.cored",
       type:  "host",
       clock: "clk_main_i",
       reset: "rst_main_ni",
-      pipeline: "false"
+      pipeline: false
     },
     { name:      "rv_dm.sba",
       type:      "host",
       clock:     "clk_main_i",
       reset:     "rst_main_ni",
-      pipeline_byp: "false"
+      req_fifo_pass: false,
+      rsp_fifo_pass: false,
     },
     { name:      "rv_dm.regs",
       type:      "device",
       clock:     "clk_main_i",
       reset:     "rst_main_ni",
-      pipeline_byp: "false"
+      req_fifo_pass: false,
+      rsp_fifo_pass: false,
     },
     { name:      "rv_dm.rom",
       type:      "device",
       clock:     "clk_main_i",
       reset:     "rst_main_ni",
-      pipeline_byp: "false"
+      req_fifo_pass: false,
+      rsp_fifo_pass: false,
     },
     { name:      "rom_ctrl.rom",
       type:      "device",
       clock:     "clk_main_i",
       reset:     "rst_main_ni",
-      pipeline:  "false",
+      pipeline:  false,
     },
     { name:      "rom_ctrl.regs",
       type:      "device",
       clock:     "clk_main_i",
       reset:     "rst_main_ni",
-      pipeline:  "false",
+      pipeline:  false,
     },
     { name:      "peri",
       type:      "device",
       clock:     "clk_fixed_i",
       reset:     "rst_fixed_ni",
-      pipeline_byp: "false"
+      req_fifo_pass: false,
+      rsp_fifo_pass: false,
     },
     { name:      "spi_host0",
       type:      "device",
       clock:     "clk_spi_host0_i",
       reset:     "rst_spi_host0_ni",
-      pipeline:  "false"
+      pipeline:  false
     },
     { name:      "spi_host1",
       type:      "device",
       clock:     "clk_spi_host1_i",
       reset:     "rst_spi_host1_ni",
-      pipeline:  "false"
+      pipeline:  false
     },
     { name:      "flash_ctrl.core",
       type:      "device",
       clock:     "clk_main_i",
       reset:     "rst_main_ni",
-      pipeline_byp: "false"
+      req_fifo_pass: false,
+      rsp_fifo_pass: false,
     },
     { name:      "flash_ctrl.prim",
       type:      "device",
       clock:     "clk_main_i",
       reset:     "rst_main_ni",
-      pipeline_byp: "false"
+      req_fifo_pass: false,
+      rsp_fifo_pass: false,
     },
     { name:      "flash_ctrl.mem",
       type:      "device",
       clock:     "clk_main_i",
       reset:     "rst_main_ni",
-      pipeline_byp: "false"
+      req_fifo_pass: false,
+      rsp_fifo_pass: false,
     },
     { name:      "hmac",
       type:      "device",
       clock:     "clk_main_i",
       reset:     "rst_main_ni",
-      pipeline_byp: "false"
+      req_fifo_pass: false,
+      rsp_fifo_pass: false,
     },
     { name:         "kmac"
       type:         "device"
       clock:        "clk_main_i"
       reset:        "rst_main_ni"
-      pipeline_byp: "false"
+      req_fifo_pass: false,
+      rsp_fifo_pass: false,
     }
     { name:      "aes",
       type:      "device",
       clock:     "clk_main_i"
       reset:     "rst_main_ni"
-      pipeline_byp: "false"
+      req_fifo_pass: false,
+      rsp_fifo_pass: false,
     },
     { name:      "entropy_src",
       type:      "device",
       clock:     "clk_main_i"
       reset:     "rst_main_ni"
-      pipeline_byp: "false"
+      req_fifo_pass: false,
+      rsp_fifo_pass: false,
     },
     { name:      "csrng",
       type:      "device",
       clock:     "clk_main_i"
       reset:     "rst_main_ni"
-      pipeline_byp: "false"
+      req_fifo_pass: false,
+      rsp_fifo_pass: false,
     },
     { name:      "edn0",
       type:      "device",
       clock:     "clk_main_i"
       reset:     "rst_main_ni"
-      pipeline_byp: "false"
+      req_fifo_pass: false,
+      rsp_fifo_pass: false,
     },
     { name:      "edn1",
       type:      "device",
       clock:     "clk_main_i"
       reset:     "rst_main_ni"
-      pipeline_byp: "false"
+      req_fifo_pass: false,
+      rsp_fifo_pass: false,
     },
     { name:      "rv_plic",
       type:      "device",
       clock:     "clk_main_i",
       reset:     "rst_main_ni",
       inst_type: "rv_plic",
-      pipeline_byp: "false"
+      req_fifo_pass: false,
+      rsp_fifo_pass: false,
     },
     { name:      "otbn",
       type:      "device",
       clock:     "clk_main_i"
       reset:     "rst_main_ni"
-      pipeline_byp: "false"
+      req_fifo_pass: false,
+      rsp_fifo_pass: false,
     },
     { name:      "keymgr",
       type:      "device",
       clock:     "clk_main_i"
       reset:     "rst_main_ni"
-      pipeline_byp: "false"
+      req_fifo_pass: false,
+      rsp_fifo_pass: false,
     },
     { name:      "rv_core_ibex.cfg",
       type:      "device",
       clock:     "clk_main_i"
       reset:     "rst_main_ni"
-      pipeline_byp: "false"
+      req_fifo_pass: false,
+      rsp_fifo_pass: false,
     },
     { name:      "sram_ctrl_main.regs",
       type:      "device",
       clock:     "clk_main_i",
       reset:     "rst_main_ni",
-      pipeline: "false"
+      pipeline: false
     },
     { name:      "sram_ctrl_main.ram",
       type:      "device",
       clock:     "clk_main_i",
       reset:     "rst_main_ni",
-      pipeline: "false"
+      pipeline: false
     },
   ],
   connections: {
diff --git a/hw/top_earlgrey/data/xbar_peri.hjson b/hw/top_earlgrey/data/xbar_peri.hjson
index 2f6b473..79dd217 100644
--- a/hw/top_earlgrey/data/xbar_peri.hjson
+++ b/hw/top_earlgrey/data/xbar_peri.hjson
@@ -14,176 +14,176 @@
       clock: "clk_peri_i",
       reset: "rst_peri_ni",
       xbar:  "true",
-      pipeline: "false"
+      pipeline: false
 
     },
     { name:      "uart0",
       type:      "device",
       clock:     "clk_peri_i",
       reset:     "rst_peri_ni",
-      pipeline:  "false"
+      pipeline:  false
     },
     { name:      "uart1",
       type:      "device",
       clock:     "clk_peri_i",
       reset:     "rst_peri_ni",
-      pipeline:  "false"
+      pipeline:  false
     },
     { name:      "uart2",
       type:      "device",
       clock:     "clk_peri_i",
       reset:     "rst_peri_ni",
-      pipeline:  "false"
+      pipeline:  false
     },
     { name:      "uart3",
       type:      "device",
       clock:     "clk_peri_i",
       reset:     "rst_peri_ni",
-      pipeline:  "false"
+      pipeline:  false
     },
     { name:      "i2c0",
       type:      "device",
       clock:     "clk_peri_i",
       reset:     "rst_peri_ni",
-      pipeline:  "false"
+      pipeline:  false
     },
     { name:      "i2c1",
       type:      "device",
       clock:     "clk_peri_i",
       reset:     "rst_peri_ni",
-      pipeline:  "false"
+      pipeline:  false
     },
     { name:      "i2c2",
       type:      "device",
       clock:     "clk_peri_i",
       reset:     "rst_peri_ni",
-      pipeline:  "false"
+      pipeline:  false
     },
     { name:      "pattgen",
       type:      "device",
       clock:     "clk_peri_i",
       reset:     "rst_peri_ni",
-      pipeline:  "false"
+      pipeline:  false
     },
     { name:      "pwm_aon",
       type:      "device",
       clock:     "clk_peri_i",
       reset:     "rst_peri_ni",
-      pipeline:  "false"
+      pipeline:  false
     },
     { name:      "gpio",
       type:      "device",
       clock:     "clk_peri_i",
       reset:     "rst_peri_ni",
-      pipeline:  "false"
+      pipeline:  false
     },
     { name:      "spi_device",
       type:      "device",
       clock:     "clk_peri_i",
       reset:     "rst_peri_ni",
-      pipeline:  "false"
+      pipeline:  false
     },
     { name:      "rv_timer",
       type:      "device",
       clock:     "clk_peri_i",
       reset:     "rst_peri_ni",
-      pipeline:  "false"
+      pipeline:  false
     },
     { name:      "usbdev",
       type:      "device",
       clock:     "clk_peri_i",
       reset:     "rst_peri_ni",
-      pipeline:  "false"
+      pipeline:  false
     },
     { name:      "pwrmgr_aon",
       type:      "device",
       clock:     "clk_peri_i",
       reset:     "rst_peri_ni",
-      pipeline:  "false"
+      pipeline:  false
     },
     { name:      "rstmgr_aon",
       type:      "device",
       clock:     "clk_peri_i",
       reset:     "rst_peri_ni",
-      pipeline:  "false"
+      pipeline:  false
     },
     { name:      "clkmgr_aon",
       type:      "device",
       clock:     "clk_peri_i",
       reset:     "rst_peri_ni",
-      pipeline:  "false"
+      pipeline:  false
     },
     { name:      "pinmux_aon",
       type:      "device",
       clock:     "clk_peri_i",
       reset:     "rst_peri_ni",
-      pipeline:  "false"
+      pipeline:  false
     },
     { name:      "otp_ctrl.core",
       type:      "device",
       clock:     "clk_peri_i",
       reset:     "rst_peri_ni",
-      pipeline:  "false"
+      pipeline:  false
     },
     { name:      "otp_ctrl.prim",
       type:      "device",
       clock:     "clk_peri_i",
       reset:     "rst_peri_ni",
-      pipeline:  "false"
+      pipeline:  false
     },
     { name:      "lc_ctrl",
       type:      "device",
       clock:     "clk_peri_i",
       reset:     "rst_peri_ni",
-      pipeline:  "false"
+      pipeline:  false
     },
     { name:      "sensor_ctrl",
       type:      "device",
       clock:     "clk_peri_i",
       reset:     "rst_peri_ni",
-      pipeline:  "false",
+      pipeline:  false,
     },
     { name:      "alert_handler",
       type:      "device",
       clock:     "clk_peri_i",
       reset:     "rst_peri_ni",
-      pipeline:  "false",
+      pipeline:  false,
     },
     { name:      "sram_ctrl_ret_aon.regs",
       type:      "device",
       clock:     "clk_peri_i",
       reset:     "rst_peri_ni",
-      pipeline:  "false"
+      pipeline:  false
     },
     { name:      "sram_ctrl_ret_aon.ram",
       type:      "device",
       clock:     "clk_peri_i",
       reset:     "rst_peri_ni",
-      pipeline:  "false"
+      pipeline:  false
     },
     { name:      "aon_timer_aon",
       type:      "device",
       clock:     "clk_peri_i",
       reset:     "rst_peri_ni",
-      pipeline:  "false",
+      pipeline:  false,
     },
     { name:      "sysrst_ctrl_aon",
       type:      "device",
       clock:     "clk_peri_i",
       reset:     "rst_peri_ni",
-      pipeline:  "false",
+      pipeline:  false,
     }
     { name:      "adc_ctrl_aon",
       type:      "device",
       clock:     "clk_peri_i",
       reset:     "rst_peri_ni",
-      pipeline:  "false",
+      pipeline:  false,
     }
     { name:      "ast",
       type:      "device",
       clock:     "clk_peri_i",
       reset:     "rst_peri_ni",
-      pipeline:  "false",
+      pipeline:  false,
     },
   ],
   connections: {
diff --git a/hw/top_earlgrey/ip/xbar_main/data/autogen/xbar_main.gen.hjson b/hw/top_earlgrey/ip/xbar_main/data/autogen/xbar_main.gen.hjson
index c1902a5..3daa602 100644
--- a/hw/top_earlgrey/ip/xbar_main/data/autogen/xbar_main.gen.hjson
+++ b/hw/top_earlgrey/ip/xbar_main/data/autogen/xbar_main.gen.hjson
@@ -119,40 +119,44 @@
       type: host
       clock: clk_main_i
       reset: rst_main_ni
-      pipeline: "false"
+      pipeline: false
       xbar: false
       stub: false
       inst_type: ""
-      pipeline_byp: "true"
+      req_fifo_pass: true
+      rsp_fifo_pass: true
     }
     {
       name: rv_core_ibex.cored
       type: host
       clock: clk_main_i
       reset: rst_main_ni
-      pipeline: "false"
+      pipeline: false
       xbar: false
       stub: false
       inst_type: ""
-      pipeline_byp: "true"
+      req_fifo_pass: true
+      rsp_fifo_pass: true
     }
     {
       name: rv_dm.sba
       type: host
       clock: clk_main_i
       reset: rst_main_ni
-      pipeline_byp: "false"
+      req_fifo_pass: false
+      rsp_fifo_pass: false
       xbar: false
       stub: false
       inst_type: ""
-      pipeline: "true"
+      pipeline: true
     }
     {
       name: rv_dm.regs
       type: device
       clock: clk_main_i
       reset: rst_main_ni
-      pipeline_byp: "false"
+      req_fifo_pass: false
+      rsp_fifo_pass: false
       inst_type: rv_dm
       addr_range:
       [
@@ -163,14 +167,15 @@
       ]
       xbar: false
       stub: false
-      pipeline: "true"
+      pipeline: true
     }
     {
       name: rv_dm.rom
       type: device
       clock: clk_main_i
       reset: rst_main_ni
-      pipeline_byp: "false"
+      req_fifo_pass: false
+      rsp_fifo_pass: false
       inst_type: rv_dm
       addr_range:
       [
@@ -181,14 +186,14 @@
       ]
       xbar: false
       stub: false
-      pipeline: "true"
+      pipeline: true
     }
     {
       name: rom_ctrl.rom
       type: device
       clock: clk_main_i
       reset: rst_main_ni
-      pipeline: "false"
+      pipeline: false
       inst_type: rom_ctrl
       addr_range:
       [
@@ -199,14 +204,14 @@
       ]
       xbar: false
       stub: false
-      pipeline_byp: "true"
+      req_fifo_pass: true
     }
     {
       name: rom_ctrl.regs
       type: device
       clock: clk_main_i
       reset: rst_main_ni
-      pipeline: "false"
+      pipeline: false
       inst_type: rom_ctrl
       addr_range:
       [
@@ -217,17 +222,18 @@
       ]
       xbar: false
       stub: false
-      pipeline_byp: "true"
+      req_fifo_pass: true
     }
     {
       name: peri
       type: device
       clock: clk_fixed_i
       reset: rst_fixed_ni
-      pipeline_byp: "false"
+      req_fifo_pass: false
+      rsp_fifo_pass: false
       xbar: true
       stub: false
-      pipeline: "true"
+      pipeline: true
       addr_range:
       [
         {
@@ -245,7 +251,7 @@
       type: device
       clock: clk_spi_host0_i
       reset: rst_spi_host0_ni
-      pipeline: "false"
+      pipeline: false
       inst_type: spi_host
       addr_range:
       [
@@ -256,14 +262,14 @@
       ]
       xbar: false
       stub: false
-      pipeline_byp: "true"
+      req_fifo_pass: true
     }
     {
       name: spi_host1
       type: device
       clock: clk_spi_host1_i
       reset: rst_spi_host1_ni
-      pipeline: "false"
+      pipeline: false
       inst_type: spi_host
       addr_range:
       [
@@ -274,14 +280,15 @@
       ]
       xbar: false
       stub: false
-      pipeline_byp: "true"
+      req_fifo_pass: true
     }
     {
       name: flash_ctrl.core
       type: device
       clock: clk_main_i
       reset: rst_main_ni
-      pipeline_byp: "false"
+      req_fifo_pass: false
+      rsp_fifo_pass: false
       inst_type: flash_ctrl
       addr_range:
       [
@@ -292,14 +299,15 @@
       ]
       xbar: false
       stub: false
-      pipeline: "true"
+      pipeline: true
     }
     {
       name: flash_ctrl.prim
       type: device
       clock: clk_main_i
       reset: rst_main_ni
-      pipeline_byp: "false"
+      req_fifo_pass: false
+      rsp_fifo_pass: false
       inst_type: flash_ctrl
       addr_range:
       [
@@ -310,14 +318,15 @@
       ]
       xbar: false
       stub: false
-      pipeline: "true"
+      pipeline: true
     }
     {
       name: flash_ctrl.mem
       type: device
       clock: clk_main_i
       reset: rst_main_ni
-      pipeline_byp: "false"
+      req_fifo_pass: false
+      rsp_fifo_pass: false
       inst_type: flash_ctrl
       addr_range:
       [
@@ -328,14 +337,15 @@
       ]
       xbar: false
       stub: false
-      pipeline: "true"
+      pipeline: true
     }
     {
       name: hmac
       type: device
       clock: clk_main_i
       reset: rst_main_ni
-      pipeline_byp: "false"
+      req_fifo_pass: false
+      rsp_fifo_pass: false
       inst_type: hmac
       addr_range:
       [
@@ -346,14 +356,15 @@
       ]
       xbar: false
       stub: false
-      pipeline: "true"
+      pipeline: true
     }
     {
       name: kmac
       type: device
       clock: clk_main_i
       reset: rst_main_ni
-      pipeline_byp: "false"
+      req_fifo_pass: false
+      rsp_fifo_pass: false
       inst_type: kmac
       addr_range:
       [
@@ -364,14 +375,15 @@
       ]
       xbar: false
       stub: false
-      pipeline: "true"
+      pipeline: true
     }
     {
       name: aes
       type: device
       clock: clk_main_i
       reset: rst_main_ni
-      pipeline_byp: "false"
+      req_fifo_pass: false
+      rsp_fifo_pass: false
       inst_type: aes
       addr_range:
       [
@@ -382,14 +394,15 @@
       ]
       xbar: false
       stub: false
-      pipeline: "true"
+      pipeline: true
     }
     {
       name: entropy_src
       type: device
       clock: clk_main_i
       reset: rst_main_ni
-      pipeline_byp: "false"
+      req_fifo_pass: false
+      rsp_fifo_pass: false
       inst_type: entropy_src
       addr_range:
       [
@@ -400,14 +413,15 @@
       ]
       xbar: false
       stub: false
-      pipeline: "true"
+      pipeline: true
     }
     {
       name: csrng
       type: device
       clock: clk_main_i
       reset: rst_main_ni
-      pipeline_byp: "false"
+      req_fifo_pass: false
+      rsp_fifo_pass: false
       inst_type: csrng
       addr_range:
       [
@@ -418,14 +432,15 @@
       ]
       xbar: false
       stub: false
-      pipeline: "true"
+      pipeline: true
     }
     {
       name: edn0
       type: device
       clock: clk_main_i
       reset: rst_main_ni
-      pipeline_byp: "false"
+      req_fifo_pass: false
+      rsp_fifo_pass: false
       inst_type: edn
       addr_range:
       [
@@ -436,14 +451,15 @@
       ]
       xbar: false
       stub: false
-      pipeline: "true"
+      pipeline: true
     }
     {
       name: edn1
       type: device
       clock: clk_main_i
       reset: rst_main_ni
-      pipeline_byp: "false"
+      req_fifo_pass: false
+      rsp_fifo_pass: false
       inst_type: edn
       addr_range:
       [
@@ -454,7 +470,7 @@
       ]
       xbar: false
       stub: false
-      pipeline: "true"
+      pipeline: true
     }
     {
       name: rv_plic
@@ -462,7 +478,8 @@
       clock: clk_main_i
       reset: rst_main_ni
       inst_type: rv_plic
-      pipeline_byp: "false"
+      req_fifo_pass: false
+      rsp_fifo_pass: false
       addr_range:
       [
         {
@@ -472,14 +489,15 @@
       ]
       xbar: false
       stub: false
-      pipeline: "true"
+      pipeline: true
     }
     {
       name: otbn
       type: device
       clock: clk_main_i
       reset: rst_main_ni
-      pipeline_byp: "false"
+      req_fifo_pass: false
+      rsp_fifo_pass: false
       inst_type: otbn
       addr_range:
       [
@@ -490,14 +508,15 @@
       ]
       xbar: false
       stub: false
-      pipeline: "true"
+      pipeline: true
     }
     {
       name: keymgr
       type: device
       clock: clk_main_i
       reset: rst_main_ni
-      pipeline_byp: "false"
+      req_fifo_pass: false
+      rsp_fifo_pass: false
       inst_type: keymgr
       addr_range:
       [
@@ -508,14 +527,15 @@
       ]
       xbar: false
       stub: false
-      pipeline: "true"
+      pipeline: true
     }
     {
       name: rv_core_ibex.cfg
       type: device
       clock: clk_main_i
       reset: rst_main_ni
-      pipeline_byp: "false"
+      req_fifo_pass: false
+      rsp_fifo_pass: false
       inst_type: rv_core_ibex
       addr_range:
       [
@@ -526,14 +546,14 @@
       ]
       xbar: false
       stub: false
-      pipeline: "true"
+      pipeline: true
     }
     {
       name: sram_ctrl_main.regs
       type: device
       clock: clk_main_i
       reset: rst_main_ni
-      pipeline: "false"
+      pipeline: false
       inst_type: sram_ctrl
       addr_range:
       [
@@ -544,14 +564,14 @@
       ]
       xbar: false
       stub: false
-      pipeline_byp: "true"
+      req_fifo_pass: true
     }
     {
       name: sram_ctrl_main.ram
       type: device
       clock: clk_main_i
       reset: rst_main_ni
-      pipeline: "false"
+      pipeline: false
       inst_type: sram_ctrl
       addr_range:
       [
@@ -562,7 +582,7 @@
       ]
       xbar: false
       stub: false
-      pipeline_byp: "true"
+      req_fifo_pass: true
     }
   ]
   clock: clk_main_i
diff --git a/hw/top_earlgrey/ip/xbar_peri/data/autogen/xbar_peri.gen.hjson b/hw/top_earlgrey/ip/xbar_peri/data/autogen/xbar_peri.gen.hjson
index 3523875..0aec9a2 100644
--- a/hw/top_earlgrey/ip/xbar_peri/data/autogen/xbar_peri.gen.hjson
+++ b/hw/top_earlgrey/ip/xbar_peri/data/autogen/xbar_peri.gen.hjson
@@ -72,17 +72,18 @@
       clock: clk_peri_i
       reset: rst_peri_ni
       xbar: true
-      pipeline: "false"
+      pipeline: false
       stub: false
       inst_type: ""
-      pipeline_byp: "true"
+      req_fifo_pass: true
+      rsp_fifo_pass: true
     }
     {
       name: uart0
       type: device
       clock: clk_peri_i
       reset: rst_peri_ni
-      pipeline: "false"
+      pipeline: false
       inst_type: uart
       addr_range:
       [
@@ -93,14 +94,14 @@
       ]
       xbar: false
       stub: false
-      pipeline_byp: "true"
+      req_fifo_pass: true
     }
     {
       name: uart1
       type: device
       clock: clk_peri_i
       reset: rst_peri_ni
-      pipeline: "false"
+      pipeline: false
       inst_type: uart
       addr_range:
       [
@@ -111,14 +112,14 @@
       ]
       xbar: false
       stub: false
-      pipeline_byp: "true"
+      req_fifo_pass: true
     }
     {
       name: uart2
       type: device
       clock: clk_peri_i
       reset: rst_peri_ni
-      pipeline: "false"
+      pipeline: false
       inst_type: uart
       addr_range:
       [
@@ -129,14 +130,14 @@
       ]
       xbar: false
       stub: false
-      pipeline_byp: "true"
+      req_fifo_pass: true
     }
     {
       name: uart3
       type: device
       clock: clk_peri_i
       reset: rst_peri_ni
-      pipeline: "false"
+      pipeline: false
       inst_type: uart
       addr_range:
       [
@@ -147,14 +148,14 @@
       ]
       xbar: false
       stub: false
-      pipeline_byp: "true"
+      req_fifo_pass: true
     }
     {
       name: i2c0
       type: device
       clock: clk_peri_i
       reset: rst_peri_ni
-      pipeline: "false"
+      pipeline: false
       inst_type: i2c
       addr_range:
       [
@@ -165,14 +166,14 @@
       ]
       xbar: false
       stub: false
-      pipeline_byp: "true"
+      req_fifo_pass: true
     }
     {
       name: i2c1
       type: device
       clock: clk_peri_i
       reset: rst_peri_ni
-      pipeline: "false"
+      pipeline: false
       inst_type: i2c
       addr_range:
       [
@@ -183,14 +184,14 @@
       ]
       xbar: false
       stub: false
-      pipeline_byp: "true"
+      req_fifo_pass: true
     }
     {
       name: i2c2
       type: device
       clock: clk_peri_i
       reset: rst_peri_ni
-      pipeline: "false"
+      pipeline: false
       inst_type: i2c
       addr_range:
       [
@@ -201,14 +202,14 @@
       ]
       xbar: false
       stub: false
-      pipeline_byp: "true"
+      req_fifo_pass: true
     }
     {
       name: pattgen
       type: device
       clock: clk_peri_i
       reset: rst_peri_ni
-      pipeline: "false"
+      pipeline: false
       inst_type: pattgen
       addr_range:
       [
@@ -219,14 +220,14 @@
       ]
       xbar: false
       stub: false
-      pipeline_byp: "true"
+      req_fifo_pass: true
     }
     {
       name: pwm_aon
       type: device
       clock: clk_peri_i
       reset: rst_peri_ni
-      pipeline: "false"
+      pipeline: false
       inst_type: pwm
       addr_range:
       [
@@ -237,14 +238,14 @@
       ]
       xbar: false
       stub: false
-      pipeline_byp: "true"
+      req_fifo_pass: true
     }
     {
       name: gpio
       type: device
       clock: clk_peri_i
       reset: rst_peri_ni
-      pipeline: "false"
+      pipeline: false
       inst_type: gpio
       addr_range:
       [
@@ -255,14 +256,14 @@
       ]
       xbar: false
       stub: false
-      pipeline_byp: "true"
+      req_fifo_pass: true
     }
     {
       name: spi_device
       type: device
       clock: clk_peri_i
       reset: rst_peri_ni
-      pipeline: "false"
+      pipeline: false
       inst_type: spi_device
       addr_range:
       [
@@ -273,14 +274,14 @@
       ]
       xbar: false
       stub: false
-      pipeline_byp: "true"
+      req_fifo_pass: true
     }
     {
       name: rv_timer
       type: device
       clock: clk_peri_i
       reset: rst_peri_ni
-      pipeline: "false"
+      pipeline: false
       inst_type: rv_timer
       addr_range:
       [
@@ -291,14 +292,14 @@
       ]
       xbar: false
       stub: false
-      pipeline_byp: "true"
+      req_fifo_pass: true
     }
     {
       name: usbdev
       type: device
       clock: clk_peri_i
       reset: rst_peri_ni
-      pipeline: "false"
+      pipeline: false
       inst_type: usbdev
       addr_range:
       [
@@ -309,14 +310,14 @@
       ]
       xbar: false
       stub: false
-      pipeline_byp: "true"
+      req_fifo_pass: true
     }
     {
       name: pwrmgr_aon
       type: device
       clock: clk_peri_i
       reset: rst_peri_ni
-      pipeline: "false"
+      pipeline: false
       inst_type: pwrmgr
       addr_range:
       [
@@ -327,14 +328,14 @@
       ]
       xbar: false
       stub: false
-      pipeline_byp: "true"
+      req_fifo_pass: true
     }
     {
       name: rstmgr_aon
       type: device
       clock: clk_peri_i
       reset: rst_peri_ni
-      pipeline: "false"
+      pipeline: false
       inst_type: rstmgr
       addr_range:
       [
@@ -345,14 +346,14 @@
       ]
       xbar: false
       stub: false
-      pipeline_byp: "true"
+      req_fifo_pass: true
     }
     {
       name: clkmgr_aon
       type: device
       clock: clk_peri_i
       reset: rst_peri_ni
-      pipeline: "false"
+      pipeline: false
       inst_type: clkmgr
       addr_range:
       [
@@ -363,14 +364,14 @@
       ]
       xbar: false
       stub: false
-      pipeline_byp: "true"
+      req_fifo_pass: true
     }
     {
       name: pinmux_aon
       type: device
       clock: clk_peri_i
       reset: rst_peri_ni
-      pipeline: "false"
+      pipeline: false
       inst_type: pinmux
       addr_range:
       [
@@ -381,14 +382,14 @@
       ]
       xbar: false
       stub: false
-      pipeline_byp: "true"
+      req_fifo_pass: true
     }
     {
       name: otp_ctrl.core
       type: device
       clock: clk_peri_i
       reset: rst_peri_ni
-      pipeline: "false"
+      pipeline: false
       inst_type: otp_ctrl
       addr_range:
       [
@@ -399,14 +400,14 @@
       ]
       xbar: false
       stub: false
-      pipeline_byp: "true"
+      req_fifo_pass: true
     }
     {
       name: otp_ctrl.prim
       type: device
       clock: clk_peri_i
       reset: rst_peri_ni
-      pipeline: "false"
+      pipeline: false
       inst_type: otp_ctrl
       addr_range:
       [
@@ -417,14 +418,14 @@
       ]
       xbar: false
       stub: false
-      pipeline_byp: "true"
+      req_fifo_pass: true
     }
     {
       name: lc_ctrl
       type: device
       clock: clk_peri_i
       reset: rst_peri_ni
-      pipeline: "false"
+      pipeline: false
       inst_type: lc_ctrl
       addr_range:
       [
@@ -435,14 +436,14 @@
       ]
       xbar: false
       stub: false
-      pipeline_byp: "true"
+      req_fifo_pass: true
     }
     {
       name: sensor_ctrl
       type: device
       clock: clk_peri_i
       reset: rst_peri_ni
-      pipeline: "false"
+      pipeline: false
       inst_type: sensor_ctrl
       addr_range:
       [
@@ -453,14 +454,14 @@
       ]
       xbar: false
       stub: false
-      pipeline_byp: "true"
+      req_fifo_pass: true
     }
     {
       name: alert_handler
       type: device
       clock: clk_peri_i
       reset: rst_peri_ni
-      pipeline: "false"
+      pipeline: false
       inst_type: alert_handler
       addr_range:
       [
@@ -471,14 +472,14 @@
       ]
       xbar: false
       stub: false
-      pipeline_byp: "true"
+      req_fifo_pass: true
     }
     {
       name: sram_ctrl_ret_aon.regs
       type: device
       clock: clk_peri_i
       reset: rst_peri_ni
-      pipeline: "false"
+      pipeline: false
       inst_type: sram_ctrl
       addr_range:
       [
@@ -489,14 +490,14 @@
       ]
       xbar: false
       stub: false
-      pipeline_byp: "true"
+      req_fifo_pass: true
     }
     {
       name: sram_ctrl_ret_aon.ram
       type: device
       clock: clk_peri_i
       reset: rst_peri_ni
-      pipeline: "false"
+      pipeline: false
       inst_type: sram_ctrl
       addr_range:
       [
@@ -507,14 +508,14 @@
       ]
       xbar: false
       stub: false
-      pipeline_byp: "true"
+      req_fifo_pass: true
     }
     {
       name: aon_timer_aon
       type: device
       clock: clk_peri_i
       reset: rst_peri_ni
-      pipeline: "false"
+      pipeline: false
       inst_type: aon_timer
       addr_range:
       [
@@ -525,14 +526,14 @@
       ]
       xbar: false
       stub: false
-      pipeline_byp: "true"
+      req_fifo_pass: true
     }
     {
       name: sysrst_ctrl_aon
       type: device
       clock: clk_peri_i
       reset: rst_peri_ni
-      pipeline: "false"
+      pipeline: false
       inst_type: sysrst_ctrl
       addr_range:
       [
@@ -543,14 +544,14 @@
       ]
       xbar: false
       stub: false
-      pipeline_byp: "true"
+      req_fifo_pass: true
     }
     {
       name: adc_ctrl_aon
       type: device
       clock: clk_peri_i
       reset: rst_peri_ni
-      pipeline: "false"
+      pipeline: false
       inst_type: adc_ctrl
       addr_range:
       [
@@ -561,14 +562,14 @@
       ]
       xbar: false
       stub: false
-      pipeline_byp: "true"
+      req_fifo_pass: true
     }
     {
       name: ast
       type: device
       clock: clk_peri_i
       reset: rst_peri_ni
-      pipeline: "false"
+      pipeline: false
       inst_type: ast
       addr_range:
       [
@@ -579,7 +580,7 @@
       ]
       xbar: false
       stub: true
-      pipeline_byp: "true"
+      req_fifo_pass: true
     }
   ]
   clock: clk_peri_i
diff --git a/hw/top_englishbreakfast/data/xbar_main.hjson b/hw/top_englishbreakfast/data/xbar_main.hjson
index 35962ca..03c1229 100644
--- a/hw/top_englishbreakfast/data/xbar_main.hjson
+++ b/hw/top_englishbreakfast/data/xbar_main.hjson
@@ -13,99 +13,111 @@
       type:  "host",
       clock: "clk_main_i",
       reset: "rst_main_ni",
-      pipeline: "false"
+      pipeline: false
 
     },
     { name:  "rv_core_ibex.cored",
       type:  "host",
       clock: "clk_main_i",
       reset: "rst_main_ni",
-      pipeline: "false"
+      pipeline: false
     },
     { name:      "rv_dm.regs",
       type:      "device",
       clock:     "clk_main_i",
       reset:     "rst_main_ni",
-      pipeline_byp: "false"
+      req_fifo_pass: true,
+      rsp_fifo_pass: false,
     },
     { name:      "rv_dm.rom",
       type:      "device",
       clock:     "clk_main_i",
       reset:     "rst_main_ni",
-      pipeline_byp: "false"
+      req_fifo_pass: true,
+      rsp_fifo_pass: false,
     },
     { name:      "rom_ctrl.rom",
       type:      "device",
       clock:     "clk_main_i",
       reset:     "rst_main_ni",
-      pipeline:  "false",
+      req_fifo_pass: true,
+      rsp_fifo_pass: false,
     },
     { name:      "rom_ctrl.regs",
       type:      "device",
       clock:     "clk_main_i",
       reset:     "rst_main_ni",
-      pipeline:  "false",
+      req_fifo_pass: true,
+      rsp_fifo_pass: false,
     },
     { name:      "peri",
       type:      "device",
       clock:     "clk_fixed_i",
       reset:     "rst_fixed_ni",
-      pipeline_byp: "false"
+      req_fifo_pass: true,
+      rsp_fifo_pass: false,
     },
     { name:      "flash_ctrl.core",
       type:      "device",
       clock:     "clk_main_i",
       reset:     "rst_main_ni",
-      pipeline_byp: "false"
+      req_fifo_pass: true,
+      rsp_fifo_pass: false,
     },
     { name:      "flash_ctrl.prim",
       type:      "device",
       clock:     "clk_main_i",
       reset:     "rst_main_ni",
-      pipeline_byp: "false"
+      req_fifo_pass: true,
+      rsp_fifo_pass: false,
     },
     { name:      "flash_ctrl.mem",
       type:      "device",
       clock:     "clk_main_i",
       reset:     "rst_main_ni",
-      pipeline_byp: "false"
+      req_fifo_pass: true,
+      rsp_fifo_pass: false,
     },
     { name:      "hmac",
       type:      "device",
       clock:     "clk_main_i",
       reset:     "rst_main_ni",
-      pipeline_byp: "false"
+      req_fifo_pass: true,
+      rsp_fifo_pass: false,
     },
     { name:      "aes",
       type:      "device",
       clock:     "clk_main_i"
       reset:     "rst_main_ni"
-      pipeline_byp: "false"
+      req_fifo_pass: true,
+      rsp_fifo_pass: false,
     },
     { name:      "rv_plic",
       type:      "device",
       clock:     "clk_main_i",
       reset:     "rst_main_ni",
       inst_type: "rv_plic",
-      pipeline_byp: "false"
+      req_fifo_pass: true,
+      rsp_fifo_pass: false,
     },
     { name:      "rv_core_ibex.cfg",
       type:      "device",
       clock:     "clk_main_i"
       reset:     "rst_main_ni"
-      pipeline_byp: "false"
+      req_fifo_pass: true,
+      rsp_fifo_pass: false,
     },
     { name:      "sram_ctrl_main.regs",
       type:      "device",
       clock:     "clk_main_i",
       reset:     "rst_main_ni",
-      pipeline: "false"
+      pipeline: false
     },
     { name:      "sram_ctrl_main.ram",
       type:      "device",
       clock:     "clk_main_i",
       reset:     "rst_main_ni",
-      pipeline: "false"
+      pipeline: false
     },
   ],
   connections: {
diff --git a/hw/top_englishbreakfast/data/xbar_peri.hjson b/hw/top_englishbreakfast/data/xbar_peri.hjson
index de3fd29..bfe3ec1 100644
--- a/hw/top_englishbreakfast/data/xbar_peri.hjson
+++ b/hw/top_englishbreakfast/data/xbar_peri.hjson
@@ -14,86 +14,86 @@
       clock: "clk_peri_i",
       reset: "rst_peri_ni",
       xbar:  "true",
-      pipeline: "false"
+      pipeline: false
 
     },
     { name:      "uart0",
       type:      "device",
       clock:     "clk_peri_i",
       reset:     "rst_peri_ni",
-      pipeline:  "false"
+      pipeline:  false
     },
     { name:      "gpio",
       type:      "device",
       clock:     "clk_peri_i",
       reset:     "rst_peri_ni",
-      pipeline:  "false"
+      pipeline:  false
     },
     { name:      "spi_device",
       type:      "device",
       clock:     "clk_peri_i",
       reset:     "rst_peri_ni",
-      pipeline:  "false"
+      pipeline:  false
     },
     { name:      "spi_host0",
       type:      "device",
       clock:     "clk_spi_host0_i",
       reset:     "rst_spi_host0_ni",
-      pipeline:  "false"
+      pipeline:  false
     },
     { name:      "rv_timer",
       type:      "device",
       clock:     "clk_peri_i",
       reset:     "rst_peri_ni",
-      pipeline:  "false"
+      pipeline:  false
     },
     { name:      "usbdev",
       type:      "device",
       clock:     "clk_peri_i",
       reset:     "rst_peri_ni",
-      pipeline:  "false"
+      pipeline:  false
     },
     { name:      "pwrmgr_aon",
       type:      "device",
       clock:     "clk_peri_i",
       reset:     "rst_peri_ni",
-      pipeline:  "false"
+      pipeline:  false
     },
     { name:      "rstmgr_aon",
       type:      "device",
       clock:     "clk_peri_i",
       reset:     "rst_peri_ni",
-      pipeline:  "false"
+      pipeline:  false
     },
     { name:      "clkmgr_aon",
       type:      "device",
       clock:     "clk_peri_i",
       reset:     "rst_peri_ni",
-      pipeline:  "false"
+      pipeline:  false
     },
     { name:      "pinmux_aon",
       type:      "device",
       clock:     "clk_peri_i",
       reset:     "rst_peri_ni",
-      pipeline:  "false"
+      pipeline:  false
     },
     { name:      "sram_ctrl_ret_aon.regs",
       type:      "device",
       clock:     "clk_peri_i",
       reset:     "rst_peri_ni",
-      pipeline:  "false"
+      pipeline:  false
     },
     { name:      "sram_ctrl_ret_aon.ram",
       type:      "device",
       clock:     "clk_peri_i",
       reset:     "rst_peri_ni",
-      pipeline:  "false"
+      pipeline:  false
     },
     { name:      "ast",
       type:      "device",
       clock:     "clk_peri_i",
       reset:     "rst_peri_ni",
-      pipeline:  "false",
+      pipeline:  false,
     },
   ],
   connections: {
diff --git a/util/tlgen/elaborate.py b/util/tlgen/elaborate.py
index 6b2b935..4edae1b 100644
--- a/util/tlgen/elaborate.py
+++ b/util/tlgen/elaborate.py
@@ -87,9 +87,11 @@
         # By default, assume connecting to SOCKET_1N upstream and bypass all FIFOs
         # If upstream requires pipelining, it will be added through process pipeline
         new_node.hdepth = 0
-        new_node.hpass = 2**len(node.us) - 1
+        new_node.hreq_pass = 2**len(node.us) - 1
+        new_node.hrsp_pass = 2**len(node.us) - 1
         new_node.ddepth = 0
-        new_node.dpass = 1
+        new_node.dreq_pass = 1
+        new_node.drsp_pass = 1
         xbar.insert_node(new_node, node)
         process_node(new_node, xbar)
 
@@ -104,9 +106,11 @@
         # By default, assume connecting to SOCKET_M1 downstream and bypass all FIFOs
         # If upstream requires pipelining, it will be added through process pipeline
         new_node.hdepth = 0
-        new_node.hpass = 1
+        new_node.hreq_pass = 1
+        new_node.hrsp_pass = 1
         new_node.ddepth = 0
-        new_node.dpass = 2**len(node.ds) - 1
+        new_node.dreq_pass = 2**len(node.ds) - 1
+        new_node.drsp_pass = 2**len(node.ds) - 1
         xbar.insert_node(new_node, node)
 
         # (for loop) Repeat the algorithm with SOCKET_1N's other side node
@@ -130,16 +134,18 @@
 
         log.info("Processing pipeline for host {}".format(host.name))
 
+        fifo_pass = host.req_fifo_pass or host.rsp_fifo_pass
+
         # FIFO present with no passthrough option
         # FIFO present with passthrough option
         # FIFO not present and full passthrough
         full_fifo = False
         fifo_passthru = False
         full_passthru = True
-        if host.pipeline is True and host.pipeline_byp is False:
+        if host.pipeline is True and fifo_pass is False:
             full_fifo = True
 
-        elif host.pipeline is True and host.pipeline_byp is True:
+        elif host.pipeline is True and fifo_pass is True:
             fifo_passthru = True
 
         elif host.pipeline is False:
@@ -150,39 +156,49 @@
         if dnode.node_type == NodeType.ASYNC_FIFO:
             continue
 
+        req_pass = 1 if host.req_fifo_pass else 0
+        rsp_pass = 1 if host.rsp_fifo_pass else 0
         if dnode.node_type == NodeType.SOCKET_1N:
             if full_fifo:
-                dnode.hpass = 0
+                dnode.hreq_pass = 0
+                dnode.hrsp_pass = 0
                 dnode.hdepth = 2
             elif fifo_passthru:
-                dnode.hpass = 0
+                dnode.hreq_pass = req_pass
+                dnode.hrsp_pass = rsp_pass
                 dnode.hdepth = 2
             elif full_passthru:
-                dnode.hpass = 1
+                dnode.hreq_pass = 1
+                dnode.hrsp_pass = 1
                 dnode.hdepth = 0
 
             log.info(
-                "Finished processing socket1n {}, pass={}, depth={}".format(
-                    dnode.name, dnode.hpass, dnode.hdepth))
+                "Finished processing socket1n {}, req pass={}, rsp pass={}, depth={}".format(
+                    dnode.name, dnode.hreq_pass, dnode.hrsp_pass, dnode.hdepth))
 
         elif dnode.node_type == NodeType.SOCKET_M1:
             idx = dnode.us.index(host.ds[0])
+
+            # first clear out entry
+            dnode.hreq_pass = dnode.hreq_pass & ~(1 << idx)
+            dnode.hreq_pass = dnode.hreq_pass & ~(1 << idx)
             if full_fifo:
                 log.info("fifo present no bypass")
-                dnode.hpass = dnode.hpass & ~(1 << idx)
                 dnode.hdepth = dnode.hdepth | (2 << idx * 4)
             elif fifo_passthru:
                 log.info("fifo present with bypass")
-                dnode.hpass = dnode.hpass | (1 << idx)
+                dnode.hreq_pass = dnode.hreq_pass | (req_pass << idx)
+                dnode.hreq_pass = dnode.hrsp_pass | (rsp_pass << idx)
                 dnode.hdepth = dnode.hdepth | (2 << idx * 4)
             elif full_passthru:
                 log.info("fifo not present")
-                dnode.hpass = dnode.hpass | (1 << idx)
+                dnode.hreq_pass = dnode.hreq_pass | (1 << idx)
+                dnode.hreq_pass = dnode.hrsp_pass | (1 << idx)
                 dnode.hdepth = dnode.hdepth & ~(0xF << idx * 4)
 
             log.info(
-                "Finished processing socketm1 {}, pass={}, depth={}".format(
-                    dnode.name, dnode.hpass, dnode.hdepth))
+                "Finished processing socketm1 {}, req pass={}, rsp pass={}, depth={}".format(
+                    dnode.name, dnode.hreq_pass, dnode.hrsp_pass, dnode.hdepth))
 
     for device in xbar.devices:
         # go upstream and set DReq/RspPass at the first instance.
@@ -198,14 +214,14 @@
         # FIFO present with no passthrough option
         # FIFO present with passthrough option
         # FIFO not present and full passthrough
-
+        fifo_pass = device.req_fifo_pass or device.rsp_fifo_pass
         full_fifo = False
         fifo_passthru = False
         full_passthru = True
-        if device.pipeline is True and device.pipeline_byp is False:
+        if device.pipeline is True and fifo_pass is False:
             full_fifo = True
 
-        elif device.pipeline is True and device.pipeline_byp is True:
+        elif device.pipeline is True and fifo_pass is True:
             fifo_passthru = True
 
         elif device.pipeline is False:
@@ -216,37 +232,46 @@
         if unode.node_type == NodeType.ASYNC_FIFO:
             continue
 
+        req_pass = 1 if device.req_fifo_pass else 0
+        rsp_pass = 1 if device.rsp_fifo_pass else 0
         if unode.node_type == NodeType.SOCKET_1N:
             idx = unode.ds.index(device.us[0])
 
+            # first clear out entry
+            unode.dreq_pass = unode.dreq_pass & ~(1 << idx)
+            unode.drsp_pass = unode.drsp_pass & ~(1 << idx)
             if full_fifo:
-                unode.dpass = unode.dpass & ~(1 << idx)
                 unode.ddepth = unode.ddepth | (2 << idx * 4)
             elif fifo_passthru:
-                unode.dpass = unode.dpass | (1 << idx)
+                unode.dreq_pass = unode.dreq_pass | (req_pass << idx)
+                unode.drsp_pass = unode.drsp_pass | (rsp_pass << idx)
                 unode.ddepth = unode.ddepth | (2 << idx * 4)
             elif full_passthru:
-                unode.dpass = unode.dpass | (1 << idx)
+                unode.dreq_pass = unode.dreq_pass | (1 << idx)
+                unode.drsp_pass = unode.drsp_pass | (1 << idx)
                 unode.ddepth = unode.ddepth & ~(0xF << idx * 4)
 
-            log.info("Finished processing socket1n {}, pass={:x}, depth={:x}".
-                     format(unode.name, unode.dpass, unode.ddepth))
+            log.info("Finished processing socket1n {}, req pass={:x}, req pass={:x} depth={:x}".
+                     format(unode.name, unode.dreq_pass, unode.drsp_pass, unode.ddepth))
 
         elif unode.node_type == NodeType.SOCKET_M1:
             if full_fifo:
                 log.info("Fifo present with no passthrough")
-                unode.dpass = 0
+                unode.dreq_pass = 0
+                unode.drsp_pass = 0
                 unode.ddepth = 2
             elif fifo_passthru:
                 log.info("Fifo present with passthrough")
-                unode.dpass = 0
+                unode.dreq_pass = req_pass
+                unode.drsp_pass = rsp_pass
                 unode.ddepth = 2
             elif full_passthru:
                 log.info("No Fifo")
-                unode.dpass = 1
+                unode.dreq_pass = 1
+                unode.drsp_pass = 1
                 unode.ddepth = 0
 
-            log.info("Finished processing socketm1 {}, pass={:x}, depth={:x}".
-                     format(unode.name, unode.dpass, unode.ddepth))
+            log.info("Finished processing socketm1 {}, req pass={:x}, rsp pass={:x}, depth={:x}".
+                     format(unode.name, unode.dreq_pass, unode.drsp_pass, unode.ddepth))
 
     return xbar
diff --git a/util/tlgen/item.py b/util/tlgen/item.py
index d1796a4..5947ee9 100644
--- a/util/tlgen/item.py
+++ b/util/tlgen/item.py
@@ -56,13 +56,18 @@
     ds = []  # Edges
 
     # Req/Rsp FIFO. default False
-    # when False, FIFO fully passthrough, no storage element
-    # when True, FIFO present with default depth, "pipeline_byp"
-    # controls passthrough option
-    pipeline = False
+    # when False, no storage element
+    # when True, FIFO present with default depth, the "fifo_pass"
+    # variables control whether a particular direction in the fifo
+    # has the passthrough behvaior
+    pipeline = True
 
     # FIFO passtru option. default True
-    pipeline_byp = True
+    # If pipeline is false, these fields have no meaning
+    # passthrough behavior refers to a FIFO passing the trasnaction
+    # through if the FIFO is currently empty
+    req_fifo_pass = True
+    rsp_fifo_pass = True
 
     def __init__(self, name, node_type, clock, reset):
         self.name = name
diff --git a/util/tlgen/validate.py b/util/tlgen/validate.py
index ebccbef..992b9d1 100644
--- a/util/tlgen/validate.py
+++ b/util/tlgen/validate.py
@@ -68,10 +68,10 @@
         'clock': ['s', 'main clock of the port'],
         'reset': ['s', 'main reset of the port'],
         'pipeline': ['pb', 'If true, pipeline is added in front of the port'],
-        'pipeline_byp': [
-            'pb', 'Pipeline bypass. If true, '
-            'request/response are not latched'
-        ],
+        'req_fifo_pass': ['pb',
+                          'If true, pipeline fifo has passthrough behavior on req'],
+        'rsp_fifo_pass': ['pb',
+                          'If true, pipeline fifo has passthrough behavior on rsp'],
         'inst_type': ['s', 'Instance type'],
         'xbar': ['pb', 'If true, the node is connected to another Xbar'],
         'addr_range': ['lg', addr]
@@ -305,18 +305,19 @@
 
         if node.node_type in [NodeType.DEVICE, NodeType.HOST
                               ] and "pipeline" in nodeobj:
-            node.pipeline = True if nodeobj["pipeline"].lower() in [
-                "true", "1"
-            ] else False
+            node.pipeline = True if nodeobj["pipeline"] else False
         else:
             node.pipeline = False
-        if node.node_type in [NodeType.DEVICE, NodeType.HOST
-                              ] and "pipeline_byp" in nodeobj:
-            node.pipeline_byp = True if nodeobj["pipeline_byp"].lower() in [
-                "true", "1"
-            ] else False
+        if node.node_type in [NodeType.DEVICE, NodeType.HOST]:
+            node.req_fifo_pass = nodeobj["req_fifo_pass"] \
+                if "req_fifo_pass" in nodeobj else False
+
+            node.rsp_fifo_pass = nodeobj["rsp_fifo_pass"] \
+                if "rsp_fifo_pass" in nodeobj else False
+
         else:
-            node.pipeline_byp = True
+            node.req_fifo_pass = False
+            node.rsp_fifo_pass = False
         xbar.nodes.append(node)
 
     # Edge
diff --git a/util/tlgen/xbar.rtl.sv.tpl b/util/tlgen/xbar.rtl.sv.tpl
index c5bd9d5..fc78418 100644
--- a/util/tlgen/xbar.rtl.sv.tpl
+++ b/util/tlgen/xbar.rtl.sv.tpl
@@ -221,17 +221,21 @@
   );
   % elif block.node_type.name == "SOCKET_1N":
   tlul_socket_1n #(
-    % if block.hpass != 1:
-    .HReqPass  (1'b${block.hpass}),
-    .HRspPass  (1'b${block.hpass}),
+    % if block.hreq_pass != 1:
+    .HReqPass  (1'b${block.hreq_pass}),
+    % endif
+    % if block.hrsp_pass != 1:
+    .HRspPass  (1'b${block.hrsp_pass}),
     % endif
     % if block.hdepth != 2:
     .HReqDepth (4'h${block.hdepth}),
     .HRspDepth (4'h${block.hdepth}),
     % endif
-    % if block.dpass != 2**(len(block.ds)) -1:
-    .DReqPass  (${len(block.ds)}'h${"%x" % block.dpass}),
-    .DRspPass  (${len(block.ds)}'h${"%x" % block.dpass}),
+    % if block.dreq_pass != 2**(len(block.ds)) -1:
+    .DReqPass  (${len(block.ds)}'h${"%x" % block.dreq_pass}),
+    % endif
+    % if block.drsp_pass != 2**(len(block.ds)) -1:
+    .DRspPass  (${len(block.ds)}'h${"%x" % block.drsp_pass}),
     % endif
     % if block.ddepth != 2:
     .DReqDepth (${len(block.ds)*4}'h${"%x" % block.ddepth}),
@@ -249,17 +253,21 @@
   );
   % elif block.node_type.name == "SOCKET_M1":
   tlul_socket_m1 #(
-    % if block.hpass != 2**(len(block.us)) - 1:
-    .HReqPass  (${len(block.us)}'h${"%x" % block.hpass}),
-    .HRspPass  (${len(block.us)}'h${"%x" % block.hpass}),
+    % if block.hreq_pass != 2**(len(block.us)) - 1:
+    .HReqPass  (${len(block.us)}'h${"%x" % block.hreq_pass}),
+    % endif
+    % if block.hrsp_pass != 2**(len(block.us)) - 1:
+    .HRspPass  (${len(block.us)}'h${"%x" % block.hrsp_pass}),
     % endif
     % if block.hdepth != 2:
     .HReqDepth (${len(block.us)*4}'h${"%x" % block.hdepth}),
     .HRspDepth (${len(block.us)*4}'h${"%x" % block.hdepth}),
     % endif
-    % if block.dpass != 1:
-    .DReqPass  (1'b${block.dpass}),
-    .DRspPass  (1'b${block.dpass}),
+    % if block.dreq_pass != 1:
+    .DReqPass  (1'b${block.dreq_pass}),
+    % endif
+    % if block.drsp_pass != 1:
+    .DRspPass  (1'b${block.drsp_pass}),
     % endif
     % if block.ddepth != 2:
     .DReqDepth (4'h${block.ddepth}),
diff --git a/util/topgen/merge.py b/util/topgen/merge.py
index 3838c38..828f1e6 100644
--- a/util/topgen/merge.py
+++ b/util/topgen/merge.py
@@ -260,8 +260,9 @@
             ("stub", False),
             # The default matches RTL default
             # pipeline_byp is don't care if pipeline is false
-            ("pipeline", "true"),
-            ("pipeline_byp", "true")
+            ("pipeline", True),
+            ("req_fifo_pass", True),
+            ("rsp_fifo_pass", True)
         ])
         xbar["nodes"].append(obj)
         return
@@ -281,9 +282,11 @@
     obj[0]["stub"] = False
     obj[0]["inst_type"] = predefined_modules[
         host] if host in predefined_modules else ""
-    obj[0]["pipeline"] = obj[0]["pipeline"] if "pipeline" in obj[0] else "true"
-    obj[0]["pipeline_byp"] = obj[0]["pipeline_byp"] if obj[0][
-        "pipeline"] == "true" and "pipeline_byp" in obj[0] else "true"
+    obj[0]["pipeline"] = obj[0]["pipeline"] if "pipeline" in obj[0] else True
+    obj[0]["req_fifo_pass"] = obj[0]["req_fifo_pass"] if obj[0][
+        "pipeline"] and "req_fifo_pass" in obj[0] else True
+    obj[0]["rsp_fifo_pass"] = obj[0]["rsp_fifo_pass"] if obj[0][
+        "pipeline"] and "rsp_fifo_pass" in obj[0] else True
 
 
 def process_pipeline_var(node):
@@ -291,9 +294,11 @@
 
     - Supply a default of true / true if not defined by xbar
     """
-    node["pipeline"] = node["pipeline"] if "pipeline" in node else "true"
-    node["pipeline_byp"] = node[
-        "pipeline_byp"] if "pipeline_byp" in node else "true"
+    node["pipeline"] = node["pipeline"] if "pipeline" in node else True
+    node["req_fifo_pass"] = node[
+        "req_fifo_pass"] if "req_fifo_pass" in node else True
+    node["req_fifo_pass"] = node[
+        "req_fifo_pass"] if "req_fifo_pass" in node else True
 
 
 def xbar_adddevice(top: Dict[str, object],