memory_map: add -attr option, to respect inference attributes.
authorwhitequark <whitequark@whitequark.org>
Wed, 1 Jan 2020 09:42:33 +0000 (09:42 +0000)
committerwhitequark <whitequark@whitequark.org>
Fri, 3 Apr 2020 05:51:40 +0000 (05:51 +0000)
commite0def9e4d93bc99a65c3c918b53fee17fbe3a2ba
treec798babdc57d33c7425dde5383d06c4ca3019ecf
parent081d9318bcf1ee13549ddcb0983cba5f00b4272c
memory_map: add -attr option, to respect inference attributes.

Before this commit, memory_map (which is always a part of a synth
script) would always pick up any $mem cell that was not processed
by a preceding pass and lower it down to $dff/$mux cells.
This is undesirable for two reasons:
  * If there is an explicit inference attribute set on a $mem cell,
    e.g. (* ram_block *), then it is arguably incorrect to map such
    a memory to $dff/$mux cells.
  * If memory_map tries to lower a memory that was intended to
    be mapped to a large BRAM, it often takes extraordinarily long
    time to finish, produces an extremely large log file, and outputs
    an unusable design.

After this commit, properly invoked memory_map will not map any
memory that has an explicit inference attribute specified, solving
the first issue, and alleviating the second. The default behavior
is not changed.
passes/memory/memory_map.cc