I’m getting a crash during repair_tie_fanout, any ...
# openroad
u
I’m getting a crash during repair_tie_fanout, any hints?
Copy code
* thread #1, queue = 'com.apple.main-thread', stop reason = EXC_BAD_ACCESS (code=1, address=0x0)
  * frame #0: 0x0000000107ba7fd7 openroad`odb::dbNet::getBTerms() + 7
    frame #1: 0x000000010792f3a8 openroad`sta::dbNetwork::termIterator(sta::Net const*) const + 88
    frame #2: 0x0000000107a0cd84 openroad`sta::Network::visitConnectedPins(sta::Net const*, sta::PinVisitor&, sta::Set<sta::Net const*, std::__1::less<sta::Net const*> >&) const + 260
    frame #3: 0x0000000107a0cc4e openroad`sta::Network::visitConnectedPins(sta::Net const*, sta::PinVisitor&) const + 46
    frame #4: 0x0000000107a0d1d9 openroad`sta::Network::connectedPinIterator(sta::Net const*) const + 89
    frame #5: 0x000000010790056f openroad`sta::Resizer::repairTieFanout(sta::LibertyPort*, double, bool) + 415
    frame #6: 0x0000000107912751 openroad`_wrap_repair_tie_fanout_cmd(void*, Tcl_Interp*, int, Tcl_Obj* const*) + 433
m
it is hard for me to debug. Do you have a testcase that would help me reproduce that?
u
I think I know what the problem is, is crashing because the net is missing, for some reason I have the same reference for tie high and low, so its looking for .LO pin on a tie hi
ie:
Copy code
sky130_fd_sc_hs__conb_1 _12926_ (.HI(_06461_));
 sky130_fd_sc_hs__conb_1 _12927_ (.LO(_06462_));
See Resizer.cc
Copy code
Resizer::repairTieFanout( 
...
 for (Instance *inst : insts) {
    Pin *drvr_pin = network_->findPin(inst, tie_port);
    const char *inst_name = network_->name(inst);
    Net *net = network_->net(drvr_pin);
    NetConnectedPinIterator *pin_iter = network_->connectedPinIterator(net);
m
I thought there was one cell that does tie hi/lo in this pdk?
u
thats usually the case, don’t know if is modeling or synthesis problem yet…to be continued
…or a linking problem :)
m
Ok I will look at it. Thanks!
What is the cell name?
u
Copy code
sky130_fd_sc_hs__conb_1
Copy code
sky130_fd_sc_hs/latest/timing/sky130_fd_sc_hs__ff_100C_1v95.lib:    cell ("sky130_fd_sc_hs__conb_1") {
sky130_fd_sc_hs/latest/timing/sky130_fd_sc_hs__ff_100C_1v95.lib:        pin ("HI") {
sky130_fd_sc_hs/latest/timing/sky130_fd_sc_hs__ff_100C_1v95.lib:        pin ("LO") {
will need to look into the layout
m
Yes, i am impoting this cell in virtuoso
u
SVG was fastest
odd tie, i was expecting some active devices
m
What is svg?
u
vector based image format, gets created from the scripits on the google-skywater repository
m
Oh got it. Thanks
I still can't import this to virtuoso correctly
can't really read the layers from the svg
this the verilog of thsi cell:
module sky130_fd_sc_hs__conb (
VPWR,
VGND,
HI  ,
LO
);
u
yeah, is there a way to forbid it from synthesis? ie: dont_use
ok…pretty round day, found a bug, fixed a bug, I’ll say is time for a drink, cheers
m
Yes, did you do that? How did you fix this?
(I do not get notification in the evenings)
u
just need to bail out if there is no net, I can’t submit until I get clarity on potential conflict of interest
m
not sure I understand, but let's chat tomorrow
u
need to check with my employer.., since there some non compete clause on my contract
good night
m
I see and good night!
@User address=0 implies a nullptr dereference. Can you fill a bug or ask Cherry (resizer is his)?