Open Ashwin-Rajesh opened 1 year ago
Well, we never inferred tri-state buffers in the RTLs using
assign out = en ? in : 1'bz;
we usually specify the std cells in the RTL to avoid this issue such as this for sky130:
sky130_fd_sc_hd__ebufn_4 tri_buf_0 (.TE_B(en_n), .A(in), .Z(out));
I am not sure if the issue was fixed in Yosys or not but I will investigate that.
How can tristate buffers be synthesized for the sky130 PDK? Even though yosys has only limited support for tristate logic, it is capable of synthesizing tristate buffers in the
tribuf
passI believe this is supported in openlane as can be seen in the yosys synthesize.tcl script Line no.241
However, on synthesizing a verilog module like
Using the config file below
The final output uses simple buffers, instead of a tristate buffer and ignores the en input.
Refer
tristate.nl.v
The output after yosys, in the
load_techmap.dot
file is as belowHow can i generate proper tristate logic? Are there any configuration parameters for this?