经过远程的事故回放,可以说情况是非常明确的,这个代码的互连结构就是这么个典型结构:
如果用代码表示呢,大概其就是这样:
assign vid_in = u_tx_if.valid;assign data_in = u_tx_if.data;initial begin force vid_in = 1'b0;end然后肇事者做个了什么操作呢,他去对rtl的接口进行了force。说句题外话,讲真的其实个人是不太理解在环境与rtl进行互连的时候为什么会有force操作的,在我看来assign是完成能够互连任务的。
唯一一种我能想到的场景就是rtl分别例化在bt和sst环境时,为了省力气不想重新做互连结构所以通过force的方式进行驱动,除此之外不太能理解force的出现了。
还有一个原因让我一直避免force,刚毕业的时候有大佬和我讲,force、callback和宏是验证环境里的三口“毒品”,用起来虽然很爽能快速的达到目的但是无异于饮鸩止渴,给环境带来了很大的不确定和不可控风险。
扯远了,回到刚刚的问题,肇事者对rtl的接口进行了force,而后出现的现象就是,monitor通过u_tx_if采样时还是采样到了1也就是driver驱动的数值而不是force在接口上的数值。
为什么还会采样到1呢?显然这里犯了一个形而上学的bug,仿真工具只是在模拟真实电路的行为,不是真的在内部搭了一个电路,不是说通过assign a = b之后a和b就真的通过一根线给连在一起绑在一艘船上了!仿真时只会把assign等号右边的值u_tx_if.valid赋值给左边,不会把左边的vid_in赋值给右边啊:
那你mon连接的是u_tx_if,必然能够采样到drv本身驱动到interface上的值啊!
联想推出一款新AR和VR系统 向个人电脑业务之外的新领域扩张
LED日光灯电源发热烧坏MOS管五大技术点分析
英特尔称高通诉讼为“诡辩”
主流的卡片门禁、人脸门禁、二维码门禁中哪一个最难破解
工商业光伏电站通信方案有哪些?
force之后,采样时怎么没生效呢?
焊接机器人示教器有哪些作用?
基于单片机实现对单相无刷电机的控制系统设计
中国电信实力证明,告诉你WiFi究竟有没有辐射是否影响人体健康
电力物联网的快速建设给电动车行业带来了什么
功率型封装基板的多种应用类型的对比和分析
集成电路基础封装解析
女生用什么蓝牙耳机好?适合女生用的蓝牙耳机推荐
制作一个交互式街机床头钟
海信TC2975AMTDA884X机型,图像跳,无伴音的检修
基因网络,5G会渗透到哪些领域?
中小空调企业压力巨大 渠道变革加剧2019年空调市场的大洗牌
吕骋和他的新项目rct studio再次成为新的探路者
黑芝麻智能行泊一体解决方案给予无缝衔接的智能驾驶体验
数字经济点燃企业化危为机发展新思路