请帮助弄清楚我在使用bind命令时遇到的问题,将我的DUT绑定到接口。我无法将我的dut信号绑定到接口信号。模拟器不断给出错误。
我觉得我需要将所有DUT端口定义为接口的输入/输出端口,以使bind命令工作。 这是我的代码:
module top();
…
trfcCtrlItf itf (clock);
trafficController dut
(hwy, hwy_wlk, cntry, cntry_wlk,
cntrRdCarsNmb,
setup, done,
clock, clear);
bindModule bind_inst(clock);
…
endmodule
module bindModule (input bit clk);
bind trafficController trfcCtrlItf bind_inst
(hwy, hwy_wlk, cntry, cntry_wlk,
cntrRdCarsNmb,
setup, done,
clock, clear);
endmodule
module trafficController
(hwy, hwy_wlk, cntry, cntry_wlk,
cntrRdCarsNmb,
setup, done,
clock, clear);
output reg [1:0] hwy, cntry;
output reg [1:0] hwy_wlk, cntry_wlk;
input setup, done;
input clock, clear;
input[5:0] cntrRdCarsNmb;
…
endmodule
interface trfcCtrlItf (input bit clock);
logic clear;
logic [1:0] hwy, cntry;
logic [1:0] hwy_wlk, cntry_wlk;
logic setup, done;
logic [5:0] cntrRdCarsNmb;
modport dut (input clock, clear, setup, done, cntrRdCarsNmb,
output hwy, cntry, hwy_wlk, cntry_wlk);
modport tb (output clock, clear, setup, done, cntrRdCarsNmb,
input hwy, cntry, hwy_wlk, cntry_wlk);
endinterface
模拟器在绑定模块上给错误说明端口连接太多
**致命:(vsim-3365)E:/Documents/SystemVerilog/UVM_Reg_myExample_trfcCntrl/bindModule.sv(15):
端口连接太多。预计1,发现9。
请不要发送这篇文章作为答案: http://events.dvcon.org/2012/proceedings/papers/01P_3.pdf
答案 0 :(得分:0)
bind trafficController trfcCtrlItf bind_inst
表示将(接口)trfcCtrlItf
的实例绑定到具有实例名称trafficController
的模块bind_inst
中。接口trfcCtrlItf
只有一个端口,但在此语句中,您将连接9个端口:
bind trafficController trfcCtrlItf bind_inst
(hwy, hwy_wlk, cntry, cntry_wlk,
cntrRdCarsNmb,
setup, done,
clock, clear);
因此你的错误。