pStatus of cell

unplaced: This specifies that the instance is unplaced (does not have a location).

fixed: An instance marked as fixed has a location and cannot be moved by the tool, but can be moved using interactive commands. The “Pre-placed” instances cannot be upsized by the optimization engine if they are “fixed“.

placed: An instance marked as placed has a location, and can be moved using automatic tools and interactive commands. After global placement, the standard cell instances that are placed by the global placer are tagged as "placed". The "Pre-placed" instances can be moved by timing-driven placement inside IPO if they are in the “placed” status.

cover: An instance marked as cover has a location, but cannot be moved by automatic tools or interactive commands. An instance with status cover can overlap with another instance in same place without creating placement violation.

softFixed: The softFixed placement status means that instances cannot be moved by global placement, and can only be moved by the legalization step of detail placement. Instances with this status can also be upsized by optimization. This status is normally used when you want to keep the location of certain cells such as buffers near I/Os or FFs near macros but want to upsize these cells for timing.

/*! *\fn void lbdLoopbackPacketHandle(TP_PACKET_T* pkt); *\brief Handle event that lbd pkt recved * *\param[in] pkt recved lbd pkt * *\return N/A */ int lbdLoopbackPacketHandle(TP_PACKET_T* pkt) { LBD_PKT* pLbdPkt; LBD_GLOBAL_CONFIG global = {}; LBD_RTD_PORT pStatus_tx = {}; LBD_RTD_PORT pStatus_rx = {}; LBD_RTD data = {}; int txPort = 0; int rxPort = 0; int doBlock = 0; int doAlert = 0; UINT16 vidToBlock = 0; char interfacePort[30] = {0}; user_port up1={},up2={}; int ret = ERR_NO_ERROR; user_port up = {}; int index = 0; int linkStatus = PORT_LINK_DOWN; MAC_ADDRESS sysMac={}; char macStr[20] = {}; if(NULL == pkt) { return ERROR; } DBG("----------------------------------------------------------------------------------"); PFM_ENSURE_RET(lLbdInitDone); if(!lLbdInitDone) { DBG_ERR("lbd not inited.\n"); pkt = NULL; return ERR_NO_ERROR; } APPL_IF_ERR_RET(rtdLbdGlbCfgGet((void*)&global)); pLbdPkt = (LBD_PKT*)pkt->packet; //pLbdPkt = lbdPkt; DBG("lbdLoopbackPacketHandle.\n"); /* Parse port vid */ txPort = pLbdPkt->index; UP_ITER_LIST(pkt->uportList, index, up) { rxPort = index; break; } /* Check pkt valid */ if (!lbdCheckLbdPktValid(pLbdPkt, pkt->vid, up)) { DBG_ERR("lbd pkt not valid.\n"); pkt = NULL; return ERROR; } DBG("txPort:%d,rxPort:%d\n", txPort, rxPort); /* set user_port */ /*!< 由于T1600/2600项目内存中保存的unit值为0,对外显示为1,发包时报文里的值为1,此处需要减1 add by zhengjiewei : 12/10/2014 */ UP_FROM_IDX(up1,txPort);// 需确认 UP_FROM_IDX(up2,rxPort); /* continue if loopback detection enabled on port */ memset(&pStatus_tx, 0, sizeof(LBD_RTD_PORT)); ret = rtdLbdPortStaGet(up1, &pStatus_tx); /* parasoft-suppress BD-TRS-LOCK "zhengjiewei" */ DBG("up = %d, enable = %d, pm = %d, rm = %d", UP_INDEX(up1), pStatus_tx.enable, pStatus_tx.pm, pStatus_tx.rm); //DBG("enable:%d,%d,pkt_cnt_limit:%d",pStatus_tx.enable,global->enable,pStatus_tx.pkt_cnt_limit); if (!((ERR_NO_ERROR == ret) && pStatus_tx.enable && global.
04-09
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值