这让我发疯了。这是我到目前为止的代码:
signal SYS_CLK : std_logic := '0'; --Input
signal InputSignal : std_logic := '0'; --Input
signal SyncOutputSignal : std_logic; --Output
------------------------------------------------------
stim_proc:process(SYS_CLK)
begin
if (rising_edge(SYS_CLK)) then
if (InputSignal = '1') then
assert (SyncOutputSignal = '0') report "Bad Pulse..." severity ERROR;
end if;
end if;
end process stim_proc;
ISim波形的图片---> i.imgur.com/G5KvCQe.jpg
此测试的目的是确认当输入上信号(SYS_CLK)时,如果输入信号='1',则发出一个等效的脉冲(SyncOutputSignal)并与SYS_CLK的周期一致。
但是,每当CLK变为高电平且InputSignal为高电平时,就会发出错误报告。
长话短说,我需要一种方法告诉程序在再次测试我的代码中列出的断言语句之前等待下一个InputSignal Pulse。任何想法??
答案 0 :(得分:2)
听起来您正在尝试检查InputSignal上的边缘条件。在硬件中检查边缘条件时,您可以做一件简单的事情。创建InputSignal的注册版本(我称之为Reg_InputSignal)。然后更改if语句以检查InputSignal上的1和Reg_InputSignal上的0。这是InputSignal上的上升沿条件,并且只应将if语句跳闸1个时钟周期。
bundle install --gemfile /path/to/Gemfile --path /path/to/shared/bundle --deployment --without development test