)]}'
{
  "commit": "feaf322edd8a0f7f6a032cbb6b7537005fd613d7",
  "tree": "91285ed6a9b2bf86ad04f9a74bdc2dbeb21df10f",
  "parents": [
    "261a12b15f8ec711aa4e14512787b11e3c08531e"
  ],
  "author": {
    "name": "Timothy Chen",
    "email": "timothytim@google.com",
    "time": "Tue Nov 02 13:49:43 2021 -0700"
  },
  "committer": {
    "name": "tjaychen",
    "email": "timothytim@google.com",
    "time": "Tue Nov 09 15:56:15 2021 -0800"
  },
  "message": "[flash_ctrl] Add plain text integrity in flash\n\n- Fixes https://github.com/lowRISC/opentitan/issues/8984\n- Takes the spare storage bits of flash and store a de-scrambled\n  integrity. This allows flash to emulate the behavior of end-to-end\n  storage despite its need for ECC reliability checks.\n\nSigned-off-by: Timothy Chen \u003ctimothytim@google.com\u003e\n\n[sw, util] Add support for flash image generation\n\n- only supports the plain text ECC at the moment\n- scrambled will be added in the future\n\nSigned-off-by: Timothy Chen \u003ctimothytim@google.com\u003e\n\n[test] update verilator CI test pathing\n\nflash now uses vmem instead of elf\n\nSigned-off-by: Timothy Chen \u003ctimothytim@google.com\u003e\n\n[flash_ctrl] python updates per comments\n\nSigned-off-by: Timothy Chen \u003ctimothytim@google.com\u003e\n\n[flash_ctrl] fix typo\n\nSigned-off-by: Timothy Chen \u003ctimothytim@google.com\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "b2bfab4a1e52f97cb341f539ca4d63f17b1c8634",
      "old_mode": 33188,
      "old_path": "doc/ug/getting_started_verilator.md",
      "new_id": "afa8da13daab43a04eadc358d99efe040327f227",
      "new_mode": 33188,
      "new_path": "doc/ug/getting_started_verilator.md"
    },
    {
      "type": "modify",
      "old_id": "36b2f1ee8e25289083ec47a137a19a6aa6d0aed7",
      "old_mode": 33188,
      "old_path": "hw/dv/sv/mem_bkdr_util/mem_bkdr_util.sv",
      "new_id": "de6fab9de5f10a347054cc038473434dba2d63b6",
      "new_mode": 33188,
      "new_path": "hw/dv/sv/mem_bkdr_util/mem_bkdr_util.sv"
    },
    {
      "type": "modify",
      "old_id": "983fcdb05594e58962347abcd2bbd934e699cc5d",
      "old_mode": 33188,
      "old_path": "hw/dv/sv/mem_bkdr_util/mem_bkdr_util_pkg.sv",
      "new_id": "c7ba1899b6d353095bcb7650d64df28f97aa3971",
      "new_mode": 33188,
      "new_path": "hw/dv/sv/mem_bkdr_util/mem_bkdr_util_pkg.sv"
    },
    {
      "type": "modify",
      "old_id": "0333b83eb6f9d93c61a3c0ff46510dbf51e29b16",
      "old_mode": 33188,
      "old_path": "hw/ip/flash_ctrl/data/flash_ctrl.hjson",
      "new_id": "5e2f83555e0fb4c44196efd3606f7b05403332ba",
      "new_mode": 33188,
      "new_path": "hw/ip/flash_ctrl/data/flash_ctrl.hjson"
    },
    {
      "type": "modify",
      "old_id": "89e87f0efbd9ac7782b9e6d19667ca41d576db44",
      "old_mode": 33188,
      "old_path": "hw/ip/flash_ctrl/data/flash_ctrl.hjson.tpl",
      "new_id": "5284a10421200f75cceb49210298fbc56e420829",
      "new_mode": 33188,
      "new_path": "hw/ip/flash_ctrl/data/flash_ctrl.hjson.tpl"
    },
    {
      "type": "modify",
      "old_id": "0e9af71183b489c7c284ddad44b0dfa39cc9b07e",
      "old_mode": 33188,
      "old_path": "hw/ip/flash_ctrl/doc/_index.md",
      "new_id": "582ac8c20cbf33a16759d269b9cbfffecbbd8be3",
      "new_mode": 33188,
      "new_path": "hw/ip/flash_ctrl/doc/_index.md"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "4773b6f6b792a4ff5af258e5e1f41a3dd1a1ec57",
      "new_mode": 33188,
      "new_path": "hw/ip/flash_ctrl/doc/flash_integrity.svg"
    },
    {
      "type": "modify",
      "old_id": "00af260c180f262c09539de1197333929c58dfd0",
      "old_mode": 33188,
      "old_path": "hw/ip/flash_ctrl/dv/tb/tb.sv",
      "new_id": "fc4e8a70385096d163c619eba5b9d7c261eccd8c",
      "new_mode": 33188,
      "new_path": "hw/ip/flash_ctrl/dv/tb/tb.sv"
    },
    {
      "type": "modify",
      "old_id": "f666aa08a5691b88da5ad31f3cbd77b9b384e87c",
      "old_mode": 33188,
      "old_path": "hw/ip/flash_ctrl/rtl/flash_phy_pkg.sv",
      "new_id": "89ab1d98d87f246e682715600e4f49d76838e508",
      "new_mode": 33188,
      "new_path": "hw/ip/flash_ctrl/rtl/flash_phy_pkg.sv"
    },
    {
      "type": "modify",
      "old_id": "fdec5d822e220eb30ddf3449115150e9fd25975d",
      "old_mode": 33188,
      "old_path": "hw/ip/flash_ctrl/rtl/flash_phy_prog.sv",
      "new_id": "fc5d532b83296e6ad4d34876870b32085ae5ec2a",
      "new_mode": 33188,
      "new_path": "hw/ip/flash_ctrl/rtl/flash_phy_prog.sv"
    },
    {
      "type": "modify",
      "old_id": "b323546693e2caae7a1300779e3cef23a1023a00",
      "old_mode": 33188,
      "old_path": "hw/ip/flash_ctrl/rtl/flash_phy_rd.sv",
      "new_id": "cbd58bac0594d507807b5cb2b782aa714be91f7b",
      "new_mode": 33188,
      "new_path": "hw/ip/flash_ctrl/rtl/flash_phy_rd.sv"
    },
    {
      "type": "modify",
      "old_id": "ec2bd0929de2f8d74bfa3018e40165ed7eca02b5",
      "old_mode": 33188,
      "old_path": "hw/ip/flash_ctrl/rtl/flash_phy_rd_buffers.sv",
      "new_id": "d2c6f15f043072dd9e075e5ec390e2cd29d78d57",
      "new_mode": 33188,
      "new_path": "hw/ip/flash_ctrl/rtl/flash_phy_rd_buffers.sv"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "0ea18cb2f87a2fbca0a75d5c749f89f7bdd516d4",
      "new_mode": 33188,
      "new_path": "hw/ip/prim/fpv/prim_secded_hamming_76_68_fpv.core"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "18cc1b7dfab40ca7d92f79603e531fb2925dcaab",
      "new_mode": 33188,
      "new_path": "hw/ip/prim/fpv/tb/prim_secded_hamming_76_68_bind_fpv.sv"
    },
    {
      "type": "modify",
      "old_id": "3083f4f748897d9dfee98efbc3644e9328c5f9b2",
      "old_mode": 33188,
      "old_path": "hw/ip/prim/prim_secded.core",
      "new_id": "9da58500aaf4ebd2f3098f7e53cfbc582b70d9bd",
      "new_mode": 33188,
      "new_path": "hw/ip/prim/prim_secded.core"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "85690bc2febf69c6b8fec26d4c9c9efd33e8c3d6",
      "new_mode": 33188,
      "new_path": "hw/ip/prim/rtl/prim_secded_hamming_76_68_dec.sv"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "3e9408384156b177fc07a28725789c0ec692b726",
      "new_mode": 33188,
      "new_path": "hw/ip/prim/rtl/prim_secded_hamming_76_68_enc.sv"
    },
    {
      "type": "modify",
      "old_id": "2172fb363741cca6a3279cbdc2768334524e3f5b",
      "old_mode": 33188,
      "old_path": "hw/ip/prim/rtl/prim_secded_pkg.sv",
      "new_id": "f51a9618a17e1b48fa6334b0e68f515fcdbc00ca",
      "new_mode": 33188,
      "new_path": "hw/ip/prim/rtl/prim_secded_pkg.sv"
    },
    {
      "type": "modify",
      "old_id": "4698ac62723f3cef4866657e292a2fecdf9c4ebc",
      "old_mode": 33188,
      "old_path": "hw/ip/prim_generic/rtl/prim_generic_flash_bank.sv",
      "new_id": "b575fa4107f8eb43b8db64a9844ab20246a2a8d9",
      "new_mode": 33188,
      "new_path": "hw/ip/prim_generic/rtl/prim_generic_flash_bank.sv"
    },
    {
      "type": "modify",
      "old_id": "af6facc2addefe350d0891951f16f193f835b660",
      "old_mode": 33188,
      "old_path": "hw/top_earlgrey/dv/env/seq_lib/chip_sw_base_vseq.sv",
      "new_id": "b9d22eac196c84bfca3cf841f27c3555f30ad11b",
      "new_mode": 33188,
      "new_path": "hw/top_earlgrey/dv/env/seq_lib/chip_sw_base_vseq.sv"
    },
    {
      "type": "modify",
      "old_id": "72cb06672baf0996f16eb06398cf4afcc11b9ae4",
      "old_mode": 33188,
      "old_path": "hw/top_earlgrey/dv/tb/tb.sv",
      "new_id": "786cdaef922ef479b9f6db57369f2b5e186710f3",
      "new_mode": 33188,
      "new_path": "hw/top_earlgrey/dv/tb/tb.sv"
    },
    {
      "type": "modify",
      "old_id": "96e72fdb2efc7a5428a4f89fbb87ee0856292c6b",
      "old_mode": 33188,
      "old_path": "hw/top_earlgrey/ip/flash_ctrl/data/autogen/flash_ctrl.hjson",
      "new_id": "1c0d814b2448c36e97695397f81b166ed15f0750",
      "new_mode": 33188,
      "new_path": "hw/top_earlgrey/ip/flash_ctrl/data/autogen/flash_ctrl.hjson"
    },
    {
      "type": "modify",
      "old_id": "2139582e4fa13cc6e40f7e32514efc685893aede",
      "old_mode": 33188,
      "old_path": "sw/device/benchmarks/coremark/meson.build",
      "new_id": "b3cce1c95c98016cd1b2753328fd9ac8cb78ae94",
      "new_mode": 33188,
      "new_path": "sw/device/benchmarks/coremark/meson.build"
    },
    {
      "type": "modify",
      "old_id": "1e673bb340d6bb60802fc86945186e43705bc647",
      "old_mode": 33188,
      "old_path": "sw/device/examples/hello_usbdev/meson.build",
      "new_id": "750ed4f77ce3c4f04baa4b0d84e24d83586a8491",
      "new_mode": 33188,
      "new_path": "sw/device/examples/hello_usbdev/meson.build"
    },
    {
      "type": "modify",
      "old_id": "a6447455b7b6c46c1f201942dd1a3bce47d258fb",
      "old_mode": 33188,
      "old_path": "sw/device/examples/hello_world/meson.build",
      "new_id": "903a581ab5e28d43cb80fa49f72e5b0ac31adf44",
      "new_mode": 33188,
      "new_path": "sw/device/examples/hello_world/meson.build"
    },
    {
      "type": "modify",
      "old_id": "6fb776e7b925dc20c6b639cc1d55502b516991b9",
      "old_mode": 33188,
      "old_path": "sw/device/lib/flash_ctrl.c",
      "new_id": "83faf7b0e1408a13f088cff47801440b62816597",
      "new_mode": 33188,
      "new_path": "sw/device/lib/flash_ctrl.c"
    },
    {
      "type": "modify",
      "old_id": "93aa2a3a8989bfcbaa6e33a58b395d7f1255e1cc",
      "old_mode": 33188,
      "old_path": "sw/device/lib/flash_ctrl.h",
      "new_id": "e812cddf2ec70d193ee200fe340ccbc600f45f3a",
      "new_mode": 33188,
      "new_path": "sw/device/lib/flash_ctrl.h"
    },
    {
      "type": "modify",
      "old_id": "3bcbf669b39490d4bfb93c166d886f62830cc9d9",
      "old_mode": 33188,
      "old_path": "sw/device/meson.build",
      "new_id": "ed9b592db46cedd3b50a7d17bf8e7907235d3f1a",
      "new_mode": 33188,
      "new_path": "sw/device/meson.build"
    },
    {
      "type": "modify",
      "old_id": "84ac50bf72f55967892f6c61b5ddc052de667c52",
      "old_mode": 33188,
      "old_path": "sw/device/sca/meson.build",
      "new_id": "13da5c1eb8c3a0bde5aa1c0254b695b3836ab358",
      "new_mode": 33188,
      "new_path": "sw/device/sca/meson.build"
    },
    {
      "type": "modify",
      "old_id": "299a4e0f883c57a7b76957eecb6b82e916358ec8",
      "old_mode": 33188,
      "old_path": "sw/device/silicon_creator/rom_ext/meson.build",
      "new_id": "886c1e80857168484ceb2aa9df2926d14a1b28b8",
      "new_mode": 33188,
      "new_path": "sw/device/silicon_creator/rom_ext/meson.build"
    },
    {
      "type": "modify",
      "old_id": "ccb54fc49abc39827bf77150ee55858fc6e48617",
      "old_mode": 33188,
      "old_path": "sw/device/silicon_creator/testing/meson.build",
      "new_id": "9f3adae16699273be3842733bad7352b1957adf3",
      "new_mode": 33188,
      "new_path": "sw/device/silicon_creator/testing/meson.build"
    },
    {
      "type": "modify",
      "old_id": "66dedc755a902c72dfdfccf96aad1b97f2acbd00",
      "old_mode": 33188,
      "old_path": "sw/device/tests/flash_ctrl_test.c",
      "new_id": "d6fc08ae5517c840fd78ef52789ea8b33d3579ba",
      "new_mode": 33188,
      "new_path": "sw/device/tests/flash_ctrl_test.c"
    },
    {
      "type": "modify",
      "old_id": "6daccacb2e1a9b4de264fc6fcf4839e758ba3565",
      "old_mode": 33188,
      "old_path": "sw/device/tests/meson.build",
      "new_id": "c87047d55b2e1d67177e8061caba33c4be4ce56c",
      "new_mode": 33188,
      "new_path": "sw/device/tests/meson.build"
    },
    {
      "type": "modify",
      "old_id": "b0ba30ebe16b7a9953db66bf086fdaf2b3ad34a0",
      "old_mode": 33188,
      "old_path": "test/systemtest/earlgrey/test_sim_verilator.py",
      "new_id": "4cb38e555199242ac1e1ec1e7da7aa549a5e6a1e",
      "new_mode": 33188,
      "new_path": "test/systemtest/earlgrey/test_sim_verilator.py"
    },
    {
      "type": "modify",
      "old_id": "21195974d688eb39af663f0ab4bff47201156c08",
      "old_mode": 33188,
      "old_path": "test/systemtest/englishbreakfast/test_sim_verilator.py",
      "new_id": "5aceec1d919d587a2541075622356753774bb2ea",
      "new_mode": 33188,
      "new_path": "test/systemtest/englishbreakfast/test_sim_verilator.py"
    },
    {
      "type": "modify",
      "old_id": "d1aba6db1d3c64cd1615064219c1a28603efc73d",
      "old_mode": 33188,
      "old_path": "util/design/data/secded_cfg.hjson",
      "new_id": "61a43b33e801a6e032752321dafcf1eb21cecc9a",
      "new_mode": 33188,
      "new_path": "util/design/data/secded_cfg.hjson"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "1e92effcd8da2531ab16f558423f2dabd3730c48",
      "new_mode": 33261,
      "new_path": "util/design/gen-flash-img.py"
    },
    {
      "type": "modify",
      "old_id": "93e242947c52558f941a9a6638f8bae990d8ad5c",
      "old_mode": 33261,
      "old_path": "util/design/secded_gen.py",
      "new_id": "9771705a8c04650fc717c2a766999a09b711d35e",
      "new_mode": 33261,
      "new_path": "util/design/secded_gen.py"
    }
  ]
}
