Add firrtl backend support for generic parameters in blackbox components
authorSahand Kashani <sahand.kashani@gmail.com>
Thu, 23 Jul 2020 13:17:58 +0000 (15:17 +0200)
committerSahand Kashani <sahand.kashani@gmail.com>
Thu, 23 Jul 2020 13:20:45 +0000 (15:20 +0200)
commit2c6cc27af1e981d24342ad1b378ec0f6d93092f1
tree60b3c83507fd44d12bd03269826df1c80b1f2c57
parent57af8499dfc3c35d7327107ad30c1124c646fefd
Add firrtl backend support for generic parameters in blackbox components

Previous blackbox components were just emitted with their interface ports,
but their generic parameters were never emitted and it was therefore
impossible to customize them.

This commit adds support for blackbox generic parameters, though support
is only provided for INTEGER and STRING parameters. Other types of
parameters such as DOUBLEs, ..., would result in undefined behavior here.

This allows the emission of custom extmodule instances such as the following:

extmodule fourteennm_lcell_comb_<instName>:
  input cin: UInt<1>
  output combout: UInt<1>
  output cout: UInt<1>
  input dataa: UInt<1>
  input datab: UInt<1>
  input datac: UInt<1>
  input datad: UInt<1>
  input datae: UInt<1>
  input dataf: UInt<1>
  input datag: UInt<1>
  input datah: UInt<1>
  input sharein: UInt<1>
  output shareout: UInt<1>
  output sumout: UInt<1>
  defname = fourteennm_lcell_comb
  parameter extended_lut = "off"
  parameter lut_mask = "b0001001000010010000100100001001000010010000100100001001000010010"
  parameter shared_arith = "off"
backends/firrtl/firrtl.cc