| if 'ctbuf9041' in inst_name:
|
| tcts_database[clock]["clock_node"][node_name]["pins"] = list((get_cell(str(inst_name),name_is.quiet).pins()))
|
| print('ctbuf9041 pins:',tcts_database[clock]["clock_node"][node_name]["pins"])
|
| if re.search("^stage0000",stage):
|
| if tcts_database[clock]["clock_node"][node_name]["type_of_obj"] =="" or tcts_database[clock]["clock_node"][node_name]["type_of_obj"] =="pin" :
|
| if len(tcts_database[clock]["clock_node"][node_name]["fanout_list"])==1:
|
| fanout_node= tcts_database[clock]["clock_node"][node_name]["fanout_list"][0]
|
| if tcts_database[clock]["clock_node"][fanout_node]["is_sink"]==1 and tcts_database[clock]["clock_node"][fanout_node]["type_of_obj"]=="pin" :
|
| set_top(chiplet)
|
| bndy_pin= str(get_pin(fanout_node).fanin_pins()[1])
|
| tcts_database[clock]["clock_node"][node_name]["bndy_pin"]=bndy_pin
|
| tcts_database[clock]["clock_node"][node_name]["bndy_partition"]=bndy_pin.split("/")[0]
|
| tcts_database[clock]["clock_node"][node_name]["pins"]=bndy_pin.split( str(bndy_pin.split("/")[0]+"/"))[1]
|
| else:
|
| set_top(chiplet)
|
| bndy_pin= str(get_pin(ANC_in_out_pins[0]).fanin_pins()[1])
|
| tcts_database[clock]["clock_node"][node_name]["bndy_pin"]=bndy_pin
|
| tcts_database[clock]["clock_node"][node_name]["bndy_partition"]=bndy_pin.split("/")[0]
|
| tcts_database[clock]["clock_node"][node_name]["pins"]=bndy_pin.split( str(bndy_pin.split("/")[0]+"/"))[1]
|
| print('sink&pins: '+tcts_database[clock]["clock_node"][node_name]["pins"])
|
| else:
|
| set_top(chiplet)
|
| bndy_pin= str(get_pin(ANC_in_out_pins[0]).fanin_pins()[1])
|
| tcts_database[clock]["clock_node"][node_name]["bndy_pin"]=bndy_pin
|
| tcts_database[clock]["clock_node"][node_name]["bndy_partition"]=bndy_pin.split("/")[0]
|
| tcts_database[clock]["clock_node"][node_name]["pins"]=bndy_pin.split( str(bndy_pin.split("/")[0]+"/"))[1]
|
| print("\033now please check bndy pins\033[0m")
|
| print('tcts_database[clock]["clock_node"][node_name]["pins"]: '+tcts_database[clock]["clock_node"][node_name]["pins"])
|
| elif not len(fanout_map[clock][inst_name]):
|
| print('not len(fanout_map[clock][inst_name]:',tcts_database[clock]["clock_node"][node_name])
|
| if tcts_database[clock]["clock_node"][node_name]["type_of_obj"] =="":##bndy
|
| if type_of_obj(chiplet,clock_source)=="":
|
| pass
|
| else:
|
| fanin_node= str(tcts_database[clock]["clock_node"][node_name]["fanin_node"][0])
|
| fanin_node_inst= fanin_node
|
| set_top(chiplet)
|
| for bndy_ANC_in_out_pin in bndy_ANC_in_out_pins[node_name]:
|
| if re.search(str(fanin_node_inst+"/Y0"),bndy_ANC_in_out_pin):
|
| print("bndy_ANC_in_out_pin: "+bndy_ANC_in_out_pin)
|
| bndy_net= str(get_pin(bndy_ANC_in_out_pin).net())
|
| tcts_database[clock]["clock_node"][node_name]["bndy_net"]=bndy_net
|
| tcts_database[clock]["clock_node"][node_name]["bndy_partition"]=bndy_net.split("/")[0]
|
| tcts_database[clock]["clock_node"][node_name]["bndy_part_net"]=bndy_net.replace( str(bndy_net.split("/")[0]+"/"),"",1)
|
| tcts_database[clock]["clock_node"][fanin_node][str(node_name)]= str( bndy_ANC_in_out_pin[bndy_ANC_in_out_pin.find("clks"):])
|
| #elif re.search("")
|
| else:
|
| # if 'pins' in tcts_database[clock]["clock_node"][node_name].keys():
|
| # continue
|
| # else:
|
| else_part = tcts_database[clock]["clock_node"][node_name]
|
| # if 'pins' not in else_part.keys():
|
| # print('else_part without pins:'+else_part)
|
| print('else part:',else_part)
|
| print('keys of else_part:',else_part.keys())
|
| print('inst_name:',inst_name)
|
| print('last tcts_database[clock]["clock_node"][node_name]: ',tcts_database[clock]["clock_node"][node_name])
|
| tcts_database[clock]["clock_node"][node_name]["pins"] = list()
|
| ANC_name= tcts_database[clock]["clock_node"][node_name]["part_inst_name"]
|
| search_str= str(ANC_name[ ANC_name.find("cb_group_ctbuf"):] )
|
| print("search_str:"+search_str)
|
| tcts_database[clock]["clock_node"][node_name]["pins"] = sorted(list(set([element for element in part_ANC_in_out_pins if search_str in element ])))
|