One reason could be lack of a suitable dual port RAM
IP block or compiler, at the foundry in their supported
PDK. I work with some pure play foundries which have
low level PDKs (basic FETs, passives) but no in-house
standard cell, I/O or memory libraries.
Trying to gen up your own SRAM and make it able to
provide functional simulation, pass verification might
be too much of a cost & schedule burden, and make
sense to eat the area instead (at least the guts are
good to go, simulation and verification wise?).
it's faster and you can access as many elements as you want at the same time. with RAM, you have one, sometimes two ports. with flops you have N ports, so to say.
RAM has large physical extent / wireload, to be
driven by the smallest possible devices. Logic
gates tend to be built with higher drive strength
(it's not like you could go lower, than a SRAM
min-W pair, through a min-W access switch).
You seem to ask a cascade of questions, due to which we are digressing from the original topic. For clarity in this forum we cater to, 1 thread = 1 topic.
Now before I or anyone else answers the above question related to routing, I would like to ask how much do you know routing for ASICs?
Because someone may post an answer, and then you will be back asking multiple questions based on that answer.
You seem to ask a cascade of questions, due to which we are digressing from the original topic. For clarity in this forum we cater to, 1 thread = 1 topic.
Now before I or anyone else answers the above question related to routing, I would like to ask how much do you know routing for ASICs?
Because someone may post an answer, and then you will be back asking multiple questions based on that answer.
Because the registers (DFFs) are located very close to your logic blocks whereas the RAMs are located at a certain distance. Also the DPRAMs have a wrapper logic around them which introduces some clock cycle latency while accessing DPRAMs.
A good question. There are a lot of trade off here. My two cents. One is that RAM is not easily portable while registers in RTL are easily portable to other processes. If you give your RTL as IP to mutiple customers or you design for multiple processes, portability would be a factor. The other is registers will be tested by scan while RAM will be tested by BIST which takes more area overhead.