请帮助找到解决方案,以获得漂亮的代码。
所以在我的代码中,我必须做几次强制,因为同一条线由tb和其他设计部分驱动。结果我有很多像这样的力量陈述:
强制TOP.u_proto_mc_top.gtx_rx_reset = TOP.u_proto_mc_top.u_GTX_RXB.gtxMaster_itf_inst .rstn;
强制TOP.u_proto_mc_top.gtx_tx_reset = TOP.u_proto_mc_top.u_GTX_RXB.gtxMaster_itf_inst .txstn;
所以我只是一次又一次地复制粘贴相同的接口路径,我的意思是这条路径:
的 TOP.u_proto_mc_top.u_GTX_RXB.gtxMaster_itf_inst
每次我需要强制接口信号时,我必须复制并粘贴此路径。 这对我来说很难看。 有人可以建议另一个解决方案,因为我不会一次又一次地复制/粘贴接口路径。
由于
答案 0 :(得分:2)
首先,我会尝试找出为什么测试平台的结构需要带有接口的力。更好的规划可能会避免这种情况。
快速解决方案用于使用文本宏。
`define uTOP TOP.u_proto_mc_top
`define GTXMaster `uTOP.u_GTX_RXB.gtxMaster_itf_inst
force `uTOP.gtx_tx_reset = `GTXMaster.txstn;
答案 1 :(得分:1)
您可以使用uvm_hdl_read()和uvm_hdl_force()吗?那些UVM内置函数将字符串作为hdl路径的输入参数。
string if_path = "TOP.u_proto_mc_top.u_GTX_RXB.gtxMaster_itf_inst";
string top_path = "TOP.u_proto_mc_top";
uvm_hdl_data_t val;
uvm_hdl_read({if_path,".rstn"}, val);
uvm_hdl_force({top_path, ".gtx_rx_reset", val);
uvm_hdl_read({path,".txstn"}, val);
uvm_hdl_force({top_path, ".gtx_tx_reset", val);