)]}'
{
  "commit": "cabf26f33f6964caba640d9638873d681ba4a6a5",
  "tree": "cd39978d170a55993ef1d9f17874052aa17f30e9",
  "parents": [
    "e7aef113916a0391ef56392e5db2e727567051ba"
  ],
  "author": {
    "name": "Philipp Wagner",
    "email": "phw@lowrisc.org",
    "time": "Fri Oct 18 14:58:57 2019 +0100"
  },
  "committer": {
    "name": "Philipp Wagner",
    "email": "mail@philipp-wagner.com",
    "time": "Wed Oct 23 18:28:01 2019 +0100"
  },
  "message": "[prim] Restore ability to select default implementation\n\nWhen we introduced the primitives library, we also had the possibility\nto choose a per-design default implementation for primitives. To set a\ndefault implementation, the synthesis script would set the\nPRIM_DEFAULT_IMPL define to values like \"xilinx\" or \"generic\", which was\nthen used as default value for the Impl parameter, which is present in\nall primitives modules:\n\n```verilog\nparameter Impl \u003d `\"`PRIM_DEFAULT_IMPL`\"\n```\n\nUnfortunately, this syntax to \"cast\" a define to a string isn\u0027t\nsupported in Cadence LEC. As a stop-gap, we removed the functionality\naltogether. This resulted in always using the \"generic\" implementation\nfor all targets, which produces suboptimal results e.g. on Xilinx FPGAs.\n\nWith this commit, the original functionality is restored in a\nLEC-compatible way. Instead of using strings for PRIM_DEFAULT_IMPL, we\nnow use integers. The allowed values are listed in the\nprim_pkg::impl_e enum.\n\nImplementation notes on types:\n\n* PRIM_DEFAULT_IMPL is a define passed through to tools as command line\n  options. Most/all tools only support \"primitive\" types in this way,\n  not enums; hence PRIM_DEFAULT_IMPL is an integer, and all assignments\n  to it must be integer as well. This includes the default assignment:\n\n  `ifndef PRIM_DEFAULT_IMPL\n    `define PRIM_DEFAULT_IMPL integer\u0027(prim_pkg::ImplGeneric)\n  `endif\n\n* Since we assign the PRIM_DEFAULT_IMPL define to the Impl parameter,\n  this parameter needs to be either an integer, or cast the RHS to an\n  enum.\n\n* In this implementation we stayed with an integer type for the Impl to\n  avoid potential problems with tools don\u0027t supporting enums as\n  parameter type. (We don\u0027t know of any tool yet that doesn\u0027t support\n  it, but it seems sufficiently exotic to run into problems down the\n  road.)\n\nThanks to Tim for an initial version of this code.\n\nFixes #40\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "6726f78bfa48496b5e07fc9c15c1bee2ad785068",
      "old_mode": 33188,
      "old_path": "hw/ip/padctrl/fpv/padctrl_fpv.core",
      "new_id": "e43445e259709ec233de2dec55546fe9e292858e",
      "new_mode": 33188,
      "new_path": "hw/ip/padctrl/fpv/padctrl_fpv.core"
    },
    {
      "type": "modify",
      "old_id": "e4fc0e590b8b08597b5790dfe7fd8155dac5666c",
      "old_mode": 33188,
      "old_path": "hw/ip/padctrl/fpv/tb/padctrl_tb.sv",
      "new_id": "91939b055d340250fc0c161a51c79e96770a8ecc",
      "new_mode": 33188,
      "new_path": "hw/ip/padctrl/fpv/tb/padctrl_tb.sv"
    },
    {
      "type": "modify",
      "old_id": "cadba49cfd7eb6b38f4c17adfedaac170ad78294",
      "old_mode": 33188,
      "old_path": "hw/ip/padctrl/fpv/vip/padctrl_assert.sv",
      "new_id": "150de48161e546150495e2a1a7ee45ec9171d1a9",
      "new_mode": 33188,
      "new_path": "hw/ip/padctrl/fpv/vip/padctrl_assert.sv"
    },
    {
      "type": "modify",
      "old_id": "ef7f112ee275f7263daa2fb095e646cc923dda56",
      "old_mode": 33188,
      "old_path": "hw/ip/padctrl/padctrl.core",
      "new_id": "5b07257d647a6322879a2eba8d6b427afc3eaff0",
      "new_mode": 33188,
      "new_path": "hw/ip/padctrl/padctrl.core"
    },
    {
      "type": "modify",
      "old_id": "f4c368fa915145b3176c88ac94d2b82702ed9288",
      "old_mode": 33188,
      "old_path": "hw/ip/padctrl/rtl/padctrl.sv",
      "new_id": "c6e84ee37f3dff6be0fe0f437dc65226230f9eeb",
      "new_mode": 33188,
      "new_path": "hw/ip/padctrl/rtl/padctrl.sv"
    },
    {
      "type": "modify",
      "old_id": "f9322293564d3086b33dc96124160e11edce2949",
      "old_mode": 33188,
      "old_path": "hw/ip/padctrl/rtl/padring.sv",
      "new_id": "5e0a96ab7ba991017f6991e943aa78993571c16c",
      "new_mode": 33188,
      "new_path": "hw/ip/padctrl/rtl/padring.sv"
    },
    {
      "type": "modify",
      "old_id": "9424d9a4df2a28d8f3765d4934e18c6efca8f120",
      "old_mode": 33188,
      "old_path": "hw/ip/prim/abstract/prim_clock_gating.sv",
      "new_id": "07cf22388ef603303cd4bd934d10e5a1b4645cd9",
      "new_mode": 33188,
      "new_path": "hw/ip/prim/abstract/prim_clock_gating.sv"
    },
    {
      "type": "modify",
      "old_id": "6ecd88ef50150b1cec8129d590b578531405c4af",
      "old_mode": 33188,
      "old_path": "hw/ip/prim/abstract/prim_flash.sv",
      "new_id": "f09fdef4ce7271ba87c1ec38bd4d50706dcd6fc9",
      "new_mode": 33188,
      "new_path": "hw/ip/prim/abstract/prim_flash.sv"
    },
    {
      "type": "modify",
      "old_id": "e18b7e36c19e00845c5f7093048add53aefe0eda",
      "old_mode": 33188,
      "old_path": "hw/ip/prim/abstract/prim_pad_wrapper.sv",
      "new_id": "2584cdb2b4d8d4ae945f177fea354df69c929ded",
      "new_mode": 33188,
      "new_path": "hw/ip/prim/abstract/prim_pad_wrapper.sv"
    },
    {
      "type": "modify",
      "old_id": "1d9dce68ccb7595b7380146d7d534df1317b9024",
      "old_mode": 33188,
      "old_path": "hw/ip/prim/abstract/prim_ram_1p.sv",
      "new_id": "9da25f061f3c0758381b5c2cacd27ea232f90498",
      "new_mode": 33188,
      "new_path": "hw/ip/prim/abstract/prim_ram_1p.sv"
    },
    {
      "type": "modify",
      "old_id": "65d17d3821644e4b683a2a0c33a8db76f9cd468c",
      "old_mode": 33188,
      "old_path": "hw/ip/prim/abstract/prim_ram_2p.sv",
      "new_id": "3f25fe7293420fb6fac4f17146d69d3295818b35",
      "new_mode": 33188,
      "new_path": "hw/ip/prim/abstract/prim_ram_2p.sv"
    },
    {
      "type": "modify",
      "old_id": "8f73e1925e2a92fa063f8b0b0df3009a7eb876ac",
      "old_mode": 33188,
      "old_path": "hw/ip/prim/abstract/prim_rom.sv",
      "new_id": "51600b7fffc279a452b948cb1cb5f65faee754c6",
      "new_mode": 33188,
      "new_path": "hw/ip/prim/abstract/prim_rom.sv"
    },
    {
      "type": "modify",
      "old_id": "87620a372bd2a64ef8358626b5cf0ff3379f4e52",
      "old_mode": 33188,
      "old_path": "hw/ip/prim/prim.core",
      "new_id": "47831bc9d791faad7a8f8ffa49c9701eaff17ccf",
      "new_mode": 33188,
      "new_path": "hw/ip/prim/prim.core"
    },
    {
      "type": "modify",
      "old_id": "201e5bb33fcbaf7866216acc8707d1aabca8afed",
      "old_mode": 33188,
      "old_path": "hw/ip/prim/prim_clock_gating.core",
      "new_id": "4b6d46c49822d059491bdcbeb1dee72d4dffceee",
      "new_mode": 33188,
      "new_path": "hw/ip/prim/prim_clock_gating.core"
    },
    {
      "type": "modify",
      "old_id": "132ff254d1dd99e8019a254b8b9350aaeeb88cd1",
      "old_mode": 33188,
      "old_path": "hw/ip/prim/prim_flash.core",
      "new_id": "aaf62c8bce239dec5267e1b746d469515a51a9c0",
      "new_mode": 33188,
      "new_path": "hw/ip/prim/prim_flash.core"
    },
    {
      "type": "modify",
      "old_id": "32953dcbed105d4f57ae075bfc2afc4898a2d3e6",
      "old_mode": 33188,
      "old_path": "hw/ip/prim/prim_pad_wrapper.core",
      "new_id": "55017a1ab95e130a9704f6cfe815969067f8963f",
      "new_mode": 33188,
      "new_path": "hw/ip/prim/prim_pad_wrapper.core"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "e09d0fe52cda54aa878c5ef6cec8393e29f4cc4a",
      "new_mode": 33188,
      "new_path": "hw/ip/prim/prim_pkg.core"
    },
    {
      "type": "modify",
      "old_id": "2789af87b9a92840278c920ad6a1b47fb6db9bd1",
      "old_mode": 33188,
      "old_path": "hw/ip/prim/prim_ram_1p.core",
      "new_id": "0e873a538edf0b4cf7eff7347a7af9bd8101bc81",
      "new_mode": 33188,
      "new_path": "hw/ip/prim/prim_ram_1p.core"
    },
    {
      "type": "modify",
      "old_id": "dfb663a30897ef0894b2eabdc88d146a6e9e9e78",
      "old_mode": 33188,
      "old_path": "hw/ip/prim/prim_ram_2p.core",
      "new_id": "e02ad9705094ba28f69ad8f699ffb96d7a3f6c7b",
      "new_mode": 33188,
      "new_path": "hw/ip/prim/prim_ram_2p.core"
    },
    {
      "type": "modify",
      "old_id": "31cdcb1e3f5b3be7dab0017c5dc2d50327704cf4",
      "old_mode": 33188,
      "old_path": "hw/ip/prim/prim_rom.core",
      "new_id": "e8b15e0600ace43a9a9e7c30c534d0d60770e578",
      "new_mode": 33188,
      "new_path": "hw/ip/prim/prim_rom.core"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "e0601448ca224ee6e19f16fd06782163ad7ca913",
      "new_mode": 33188,
      "new_path": "hw/ip/prim/rtl/prim_pkg.sv"
    },
    {
      "type": "modify",
      "old_id": "7582051230bec6cd6e8d92197df8410a32aad706",
      "old_mode": 33188,
      "old_path": "hw/ip/prim/rtl/prim_ram_2p_adv.sv",
      "new_id": "196bd9c88f390800b541a4af568ba733d24825cd",
      "new_mode": 33188,
      "new_path": "hw/ip/prim/rtl/prim_ram_2p_adv.sv"
    },
    {
      "type": "modify",
      "old_id": "51ceb9943833414ff5688e3db1261123780e1bad",
      "old_mode": 33188,
      "old_path": "hw/top_earlgrey/top_earlgrey.core",
      "new_id": "15128fd0a3f8279e56b49e8f8151112366518e6a",
      "new_mode": 33188,
      "new_path": "hw/top_earlgrey/top_earlgrey.core"
    },
    {
      "type": "modify",
      "old_id": "852b565e2ae2684c55ba3ecd10c54da7f3fb6d15",
      "old_mode": 33188,
      "old_path": "hw/top_earlgrey/top_earlgrey_artys7-50.core",
      "new_id": "ca784f83747aacb0e2c87b0c4987339f9ea92ee9",
      "new_mode": 33188,
      "new_path": "hw/top_earlgrey/top_earlgrey_artys7-50.core"
    },
    {
      "type": "modify",
      "old_id": "1eaf47204e3a355ed427db8c0846dc5b72ff1142",
      "old_mode": 33188,
      "old_path": "hw/top_earlgrey/top_earlgrey_nexysvideo.core",
      "new_id": "d163e4a053acacd43468d59f5493011f909cb001",
      "new_mode": 33188,
      "new_path": "hw/top_earlgrey/top_earlgrey_nexysvideo.core"
    },
    {
      "type": "modify",
      "old_id": "798108f992eb93a8ae5e6b92be5fe8d51f482c5e",
      "old_mode": 33188,
      "old_path": "hw/top_earlgrey/top_earlgrey_usb_nexysvideo.core",
      "new_id": "79a6f2e2cb45996bbbaa23125e105e50454303bc",
      "new_mode": 33188,
      "new_path": "hw/top_earlgrey/top_earlgrey_usb_nexysvideo.core"
    },
    {
      "type": "modify",
      "old_id": "a01c7bdfc341ff2e76946508c3ef167eaa09a053",
      "old_mode": 33188,
      "old_path": "hw/top_earlgrey/top_earlgrey_usb_verilator.core",
      "new_id": "b2aa8c47ecc2dbdc91b1971085b1c8f9a669143c",
      "new_mode": 33188,
      "new_path": "hw/top_earlgrey/top_earlgrey_usb_verilator.core"
    },
    {
      "type": "modify",
      "old_id": "dfebbbce3a1eeefe8e1bee91c4576c50e4c3a8bf",
      "old_mode": 33188,
      "old_path": "hw/top_earlgrey/top_earlgrey_verilator.core",
      "new_id": "d1cd469dd90f17c4204d3420f79bbe2cd804d6ff",
      "new_mode": 33188,
      "new_path": "hw/top_earlgrey/top_earlgrey_verilator.core"
    }
  ]
}
