Specman -Как ждать, чтобы событие произошло несколько раз

Я должен к событиям:

event clk_e is rise (smp.port_uart_clk$) @sim;
event async_16_clk_e is rise (smp.port_br_clk_16$) @sim; 

* UART CLK быстрее, чем br_clk_16

update_int()@clk_e is {
      while TRUE 
      {
         if ((uart_env.uart_regs.uartis.rxmi | uart_env.uart_regs.uartis.txmi | uart_env.uart_regs.uartis.rtmi | uart_env.uart_regs.uartis.femi | uart_env.uart_regs.uartis.blmi | uart_env.uart_regs.uartis.rxoemi | uart_env.uart_regs.uartis.txoemi)  == 1) 
         { 
            first of 
            {
               {
                  wait true(smp.port_uart_int$ == 0);
                  message(LOW, "INTRP MON : Intrpt has occured");
               };
               {
                  message(LOW, "EXPECT INTERRUPT");
                  if (uart_env.uart_regs.uartis.rxmi == 1)
                  {
                      wait[10] @async_16_clk_e;  --I want to wait  10 clocks of br_clk_16
                  }
                  else if (uart_env.uart_regs.uartis.txmi == 1)
                  {
                     wait[2] @tx_clk_e;
                  };
                  dut_error ("Interrupt should be asserted, but it's not");
                  --message(LOW, "INTRP MON : Intrpt has occured");
               };
            }; -- all of
         };
         wait;
      };

   };

Я почему-то жду больше 10 часов. Как я могу ждать 10 часов br_clk_16?

2 ответа

Вы ожидаете async_16_clk_e в событии выборки по умолчанию TCM. Попробуй вместо wait [10] * cycle@async_16_clk_e;

Я предлагаю запустить его с "трассировкой событий". Могут быть проблемы, такие как несколько тиков в одно и то же время моделирования и т. Д., Которые приводят к нелогичному поведению. Кроме того, попытайтесь преобразовать "true(smp.port_uart_int$ == 0)" в отдельное событие, так как оно также может иметь глюки выборки с помощью clk_e, события выборки tcm.

Другие вопросы по тегам