Hi
I am happy to say, they really are connected….Let’s figure out how?
If you see a classic application of tri-state buffer, it’s the memory read-write operation, as shown below:
When we are trying to write into the memory from register, it’s a ‘read’ operation for memory (now all memory designers out there, this is the bare minimum explanation that I am providing, so bare me if I am excluding some details) In a memory-read operation, the register writes on the bi-directional bus, so
register is on ‘out’ mode, whereas the memory reads in the data from bus, so its in ‘in’ mode.
Consider another scenario, where register is in ‘out’ mode, and memory is also writing data on to the bus, so it’s also in ‘out’ mode. This is a situation where bus receives data from 2 ends and that’s not tolerable which corrupts data. So what do we do? Add another tristate buffer between the register out and bus, like
below:
This simple arrangement solves problem of data corruption (at the cost of additional hardware). It looks simple in the above image, but it becomes a critical path, when you try to do an STA frim reg2mem path. Anyways, that can be handled.
Speaking of STA
here, there is an additional requirement that comes along with tristate buffer..i.e. Library Characterization So, additional cost involved in characterizing the buffer, but its also an interesting one. If you look into the interiors of tristate buffer, below is how it looks like:
Woof…Looks like a complicated arrangement of transistors. It’s actually not complicated, but tricky. If you closely look above, we have back to back inverters connected, and in between top and bottom pmos/nmos transistors, we have another pmos/nmos transitors, whose inputs are connected to ‘en’ and ‘en_bar’.
That’s the key. When ‘en’ is ‘0’, ‘en_bar’ is ‘1’, and the middle nmos and pmos are off. That makes complete buffer in open state. This state is called ‘high impedance state’, so the input data do not traverse to output. While when ‘en’ is ‘1’, ‘en_bar’ is ‘0’ your both nmos and pmos turns ‘on’, and the entire circuit behaves as if 2 back to back inverters are connected to form a buffer.
Characterizing a library for tristate buffer is not
the usual way. Over here you find 4 different transitions. And below is the SPICE simulated waveform for tristate buffer along with 4 different transitions
Here on, the steps are simple.
Obtain or characterize the tristate buffer to measure slew or transitions for above 4 states, plug the tristate buffer and its library between your register and memory into your synthesized netlist and check for correct
functionality PNR tristate buffer and characterize it again for extracted tristate library, and use this new library for STA You are done…Simple… Looking at above approach of solving problems, reminds me of an interesting quote from Albert Einstein, “The formulation of a problem is often more essential that its solution,
which may be merely a matter of mathematical or experimental skills” I am proud to say, all my online courses focus on this skill of problem solving….Here’s the link:
So keep learning, keep formulating and I will see you in class…..Happy Learning!!
FYI:
My new course on Library characterization solves a ton of above problems, and I am happy and afraid to say, that tomorrow is
the last day for pre-launch discount. I will be uploading videos almost on daily basis after that, so will not be able to give anymore pre-launch discounts. Here’s the $10 link which is valid till tomorrow 7th March 11:59pm IST.
In the spirit of pre-launch, I am giving away all my courses in below link for $10. Use the coupon code ‘LAST_LIB_PRELAUNCH’ which is valid till tomorrow 7th
March 11:59pm IST
Stay tuned for more….
|
|
|