如何解决在接口内实例化 nmos (UVM)
我的 UVM 测试台中有一个接口,它由多个 nmos 实例组成。模拟器(modelsim)对此表示抱怨,因为它违反了 LRM(在接口内部不能有接口以外的任何东西的实例化)。我需要将实例移到界面之外。
我该怎么做?可以通过 modport 或任务完成吗?这是我没有编写的遗留代码。
interface model_interface(input wire mac_clk,input reset);
wire [31:0] modelio_vi;
wire [31:0] modelio_data_in;
wire [31:0] modelio_data_out;
wire [31:0] modelio_data_oen;
logic [4:0] modelio_mode_if [32];
logic [4:0] ulp_modelio_mode_if [32];
logic sample_if [32];
bit ulp_modelio_mux_en;
bit host_disable;
genvar loop;
//The below block is the issue
generate
for(loop=0; loop<32; loop=loop+1)
begin:asgn
nmos inst_1(modelio_vi[loop],modelio_data_in[loop],(~modelio_data_oen[loop]));//TB to DUT Buffer
nmos inst_2(modelio_data_out[loop],modelio_vi[loop],( modelio_data_oen[loop]));//DUT to TB Buffer
end
endgenerate
endinterface
解决方法
nmos
必须在模块内实例化,因为它是一个 Verilog 开关原语。
nmos (out,in,ctrl);
在功能上与 assign out = ctrl ? in : 'z;
相同,因此您可以切换到使用 assign 语句来最小化代码更改。否则,您必须将 nmos
移动到一个单独的模块中并分配连接共享信号。
generate
for(loop=0; loop<32; loop=loop+1)
begin:asgn
assign modelio_vi[loop] = !modelio_data_oen[loop] ? modelio_data_in[loop] : 'z;//TB to DUT Buffer
assign modelio_data_out[loop] = modelio_data_oen[loop] ? modelio_vi[loop] : 'z;//DUT to TB Buffer
end
endgenerate
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。