首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >模块的内信号- Verilog

模块的内信号- Verilog
EN

Stack Overflow用户
提问于 2019-10-22 18:34:42
回答 2查看 2.7K关注 0票数 0

我有一个verilog测试平台来执行一个模块的门级仿真。我想在模块内部的特定门的输出处注入一个瞬态电压,但无法找到方法。我可以在输入端插入瞬态电压(如小故障),但我需要在内部信号上注入。有人能解释一下这个问题吗?

例如:时钟信号的故障(source)

代码语言:javascript
复制
always begin: inject_clk_glitch
    #1 force clk = 1;
    #1 force clk = 0;
    #1 release clk;
end
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-10-22 21:15:10

force DUT.internal_path.internal_signal = 1;

票数 2
EN

Stack Overflow用户

发布于 2021-05-19 05:16:55

如果您正在使用像Synopsys这样的其他供应商,并且希望从systemverilog强制使用VHDL,那么您需要使用$hdl_xmr_force供应商函数。如果是布尔类型,则必须手动转换为TRUE/FALSE。奎斯塔没有这个限制我想。

您可以在systemverilog接口或模块中添加任务,并使用层次结构强制/释放信号。

代码语言:javascript
复制
task force_deposit_output_sr_update( bit value=0);
`ifdef VCS
    if (value==0) begin
    $hdl_xmr_force("DUT.U01.U06.U02.U_USE_U03.U03.U01.UPDATE_SR_OUTPUT", "FALSE", "0 ps", "deposit",  , 0);
    end else begin
    $hdl_xmr_force("DUT.U01.U06.U02.U_USE_U03.U03.U01.UPDATE_SR_OUTPUT", "TRUE", "0 ps", "deposit",  , 0);
    end
`else
   //QUESTA
    force DUT.U01.U06.U02.U_USE_U03.U03.U01.UPDATE_SR_OUTPUT = value;//direct force DUT intern signal
 `endif
endtask

task force_deposit_output_change(logic[31:0]  value='hABCDABCD);
`ifdef VCS
    $hdl_xmr_force("dut.U01.U06.U02.U_USE_U03.U03.SYNC_OUTPUT", "value", "0 ps", "deposit",  , 0);
`endif
endtask

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58510414

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档