Closed EmJunaid closed 2 years ago
Do you have a logic model of the sky130 cells? From a quick glance at the script it looks like everything is loaded as blackboxes, so for the buffers on each side of the inverter yosys wouldn't be able to know that the output is equivalent to the input...
@nakengelhardt Do you mean other than the liberty file or do you mean what's inside the liberty file?
hi, i am facing similar situation too. i thought there are cell’s function definition in the liberty file? Wouldn’t that be sufficient?
Even with loading the sky130 stdcell primitive and still seeing the design not equivalent
@zappos23 do you know how to put a check on output of equiv.dot module? or even can we do this or not?
@EmJunaid, i’ve no idea. Not sure if we can create mapping for the cells. I noticed, the only way to get both netlists to be equivalent is they need to have the same logic structure. The extra buffers like your gate netlist can already cause them to be not equivalent.
@nakengelhardt Do you mean other than the liberty file or do you mean what's inside the liberty file?
I mean contents of the cells in the liberty file - you are loading blackboxes only (all the calls to read_liberty
use -lib
) so Yosys has no idea what these cells do. In that case the only kind of equivalence check you could do is structural (equiv_struct
) but this only works if both circuits have identical structure, which is almost never the case for pre- vs post-synthesis (as you can see here where it fails due to presence of buffers even for a circuit that is only a single instantiated inverter).
@nakengelhardt yes you are right. Yosys was not able to understand the logic of cells that's why it was falling the check. I need to somehow provide the information about logical behaviour of these cells.
@EmJunaid would you mind to share the commands? Thanks
@zappos23 You need to read the liberty file not as a blackbox so you need to remove -lib from read_liberty command and also you need to read liberty file having power and ground connections as well.
read_liberty -ignore_miss_dir cell.lib
I'm comparing two netlists through equiv_make given as below: First netlist:
second_netlist
Script for equivalence checking is given as:
Dot file is given as below:
And getting this ERROR:
ERROR: Found 2 unproven $equiv cells in 'equiv_status -assert'
Can anyone guide me why I'm getting this error?