Противоречие в IEEE 1800-2009 LRM по шкале времени

IEEE 1800-2009 Systemverilog LRM сообщает на стр. 21. Жирные части кажутся противоречивыми. Что он?

Если единица времени не указана в определении модуля, программы, пакета или интерфейса, то единица времени должна определяться с использованием следующих правил приоритета:

a) Если определение модуля или интерфейса является вложенным, то единица времени должна быть унаследована от включающего модуля или интерфейса (программы и пакеты не могут быть вложенными).

b) Иначе, если директива timescale была указана ранее (в модуле компиляции), то в качестве единицы времени должны быть установлены единицы последней директивы timescale.

c) Иначе, если область видимости единицы компиляции определяет единицу времени (вне всех других объявлений), тогда единица времени должна быть установлена ​​равной единицам времени единицы компиляции.

d) В противном случае должна использоваться единица времени по умолчанию.

Единица времени области видимости единицы компиляции может быть установлена ​​только с помощью объявления единицы времени, а не директивой шкалы времени. Если она не указана, то должна использоваться единица времени по умолчанию.


person adiles    schedule 23.01.2014    source источник


Ответы (1)


Правила a-d относятся к области внутри модуля, программы, пакета или интерфейса. Последнее предложение, которое вы процитировали, относится к сфере за пределами этого. Например

`timescale 1ms / 1 ns

task delay;
#1; // default time unit
endtask
module top;

initial #1 delay(); // uses `timescale

endmodule
person dave_59    schedule 23.01.2014