Мне нужно наложить ограничение на пакет данных, который не должен пересекать границу 4k

Исключение нулевого указателя генерируется, когда приложение пытается использовать null в случае, когда требуется объект. К ним относятся:

  1. Вызов метода экземпляра объекта null.
  2. Доступ или изменение поля объекта null.
  3. Принимая длину null, как если бы это был массив.
  4. Доступ или изменение слотов null, как если бы это был массив.
  5. Бросок null как будто это было значение Throwable.

Приложения должны бросать экземпляры этого класса, чтобы указать на другие незаконные использования объекта null.

Ссылка: http://docs.oracle.com/javase/8/docs/api/java/lang/NullPointerException.html

-1
задан Grace90 5 April 2019 в 06:41
поделиться

1 ответ

Я думаю, ты почти у цели. Я думаю, вы имели в виду:

addr[11:0] + size <= 32'h1000 ; 

Я бы порекомендовал , а не , используя нестандартные литералы , то есть я бы рекомендовал говорить 32'h1000, а не 'h1000. Это связано с тем, что поведение таких литералов изменялось между Verilog-1995 и Verilog-2001, поэтому, вероятно, лучше всего избегать их.


module M;

  class packet;
    rand bit    [13:0]  addr;        // start address
    rand bit    [15:0]  size;        //  size of packet

    constraint size_c     { size inside {[1:4096]}; }
    constraint addr_c     { addr[1:0]==0; // for 4 byte alignment
                            addr[11:0] + size <= 32'h1000; }
  endclass

  initial
    begin
      packet p = new;
      repeat (10)
        begin
          p.randomize;
          $display("%p - %d", p, p.addr[11:0] + p.size);
        end
    end

endmodule

https://www.edaplayground.com/x/3gtq

0
ответ дан Matthew Taylor 5 April 2019 в 06:41
поделиться
Другие вопросы по тегам:

Похожие вопросы: