模块的强制内部信号-Verilog

模块的强制内部信号-Verilog,verilog,Verilog,我有一个verilog测试台,用于对模块进行门级模拟。我想在模块内特定门的输出端注入一个瞬态电压,但找不到方法。我可以在输入端插入瞬态电压(比如小故障)(下面的例子),但我需要注入内部信号。有人能解释一下这个问题吗 示例:时钟信号中的小故障() force DUT.internal\u path.internal\u信号=1强制DUT.internal\u path.internal\u信号=1如果您正在使用其他供应商,如Synopsys,并且希望强制从systemverilog到VHDL,那么

我有一个verilog测试台,用于对模块进行门级模拟。我想在模块内特定门的输出端注入一个瞬态电压,但找不到方法。我可以在输入端插入瞬态电压(比如小故障)(下面的例子),但我需要注入内部信号。有人能解释一下这个问题吗

示例:时钟信号中的小故障()


force DUT.internal\u path.internal\u信号=1
强制DUT.internal\u path.internal\u信号=1

如果您正在使用其他供应商,如Synopsys,并且希望强制从systemverilog到VHDL,那么您希望使用$hdl\u xmr\u强制供应商功能。 如果是布尔类型,则必须手动将其转换为TRUE/FALSE。我认为奎斯塔没有这种限制

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

task force\u deposit\u output\u sr\u update(位值=0);
`ifdef VCS
如果(值==0)开始
$hdl_xmr_force(“DUT.U01.U06.U02.U_使用_U03.U03.U01.UPDATE_SR_输出”、“FALSE”、“0ps”、“存款”、、0);
结束,否则开始
$hdl_xmr_force(“DUT.U01.U06.U02.U_使用_U03.U03.U01.UPDATE_SR_输出”、“真”、“0 ps”、“存款”、、0);
结束
`否则
//克斯塔
强制DUT.U01.U06.U02.U_使用_U03.U03.U01.UPDATE_SR_输出=值//直接力DUT内部信号
`恩迪夫
结束任务
特别工作组的存款、产出、变化(逻辑[31:0]值=habcdacd);
`ifdef VCS
$hdl_xmr_force(“dut.U01.U06.U02.U_使用_U03.U03.SYNC_输出”、“值”、“0 ps”、“存款”、、0);
`恩迪夫

endtask
如果您正在使用其他供应商,如Synopsys,并且您希望强制从systemverilog到VHDL,那么您希望使用$hdl\u xmr\u强制供应商功能。 如果是布尔类型,则必须手动将其转换为TRUE/FALSE。我认为奎斯塔没有这种限制

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

task force\u deposit\u output\u sr\u update(位值=0);
`ifdef VCS
如果(值==0)开始
$hdl_xmr_force(“DUT.U01.U06.U02.U_使用_U03.U03.U01.UPDATE_SR_输出”、“FALSE”、“0ps”、“存款”、、0);
结束,否则开始
$hdl_xmr_force(“DUT.U01.U06.U02.U_使用_U03.U03.U01.UPDATE_SR_输出”、“真”、“0 ps”、“存款”、、0);
结束
`否则
//克斯塔
强制DUT.U01.U06.U02.U_使用_U03.U03.U01.UPDATE_SR_输出=值//直接力DUT内部信号
`恩迪夫
结束任务
特别工作组的存款、产出、变化(逻辑[31:0]值=habcdacd);
`ifdef VCS
$hdl_xmr_force(“dut.U01.U06.U02.U_使用_U03.U03.SYNC_输出”、“值”、“0 ps”、“存款”、、0);
`恩迪夫
结束任务
always begin: inject_clk_glitch
    #1 force clk = 1;
    #1 force clk = 0;
    #1 release clk;
end