我想知道是否有可能在错误的情况下,在UVM驱动程序内部开发人员写入DUT输出信号而不是输入信号。我已经试过了,没有编译/运行时错误消息。这个例子是在这里(试奏是在做精辟我的机器上,并在后面的代码上传):限制访问类虚拟接口信号
http://www.edaplayground.com/x/386
上“some_signal”模型中的分配一个DUT输出(连续驱动程序)。每当我尝试驱动班级中的“some_signal”,表示信号是多元驱动的,但是班级驱动程序“获胜”并更新信号时,我会预料到运行时错误。
前段时间,当我刚刚开始做SV时,我使用了modports。我会在modport中声明一些信号作为输入,但我注意到驱动它们仍然合法。我之后不再使用它们。显然这是众所周知的事情,因为这篇文章说:https://verificationacademy.com/forums/systemverilog/modports-sv
我最近从同事的一些代码中继承了一些使用modports在类中的代码。我做了以下的例子来说明什么代码做什么:
http://www.edaplayground.com/x/2W_
我尝试在两个班使用modports,但ModelSim的抱怨说,人们不应该在等级路径使用modports。 Incisive对代码没有任何问题,并且没有发出任何警告。 ModelSim错误与2012年标准“为了限制模块中的接口访问而引用的报价一样,还有在 接口内声明方向的modport列表。”有人建议modports不是真的打算在课堂上使用。
有人可以确认modports不是去这里的路吗?另外,是否有人知道这种错误(驱动DUT输出的类)是否可以被捕获?
我也被modports弄糊涂了,但我想你在这里使用的是钟控块。他们给你同样的问题吗? – nguthrie
好主意,我会尝试一下并发布结果。 –
我做了另一个使用时钟块的游乐场http://www.edaplayground.com/x/2yV如果我尝试写入输入,但只在Incisive中,而不是在EDA Playground上的ModelSim版本中,它会发出错误。 –