Как вернуть пустую строку в ISim?

Как это сейчас выглядит в моем окне консоли:

at 20 ns: Note: TimerCount: 0 (/TEST_tb/).
at 20 ns: Note: TimerTriggerSync: '0' (/TEST_tb/).
at 22500 ps: Note: TimerCount: 2 (/TEST_tb/).
at 22500 ps: Note: TimerTriggerSync: '0' (/TEST_tb/).
at 25 ns: Note: TimerCount: 2 (/TEST_tb/).
at 25 ns: Note: TimerTriggerSync: '0' (/TEST_tb/).
at 27500 ps: Note: TimerCount: 2 (/TEST_tb/).
at 27500 ps: Note: TimerTriggerSync: '0' (/TEST_tb/).
at 30 ns: Note: TimerCount: 2 (/TEST_tb/).
at 30 ns: Note: TimerTriggerSync: '0' (/TEST_tb/).

Как бы я хотел, чтобы это выглядело:

at 20 ns: Note: TimerCount: 0 (/TEST_tb/).
at 20 ns: Note: TimerTriggerSync: '0' (/TEST_tb/).

at 22500 ps: Note: TimerCount: 2 (/TEST_tb/).
at 22500 ps: Note: TimerTriggerSync: '0' (/TEST_tb/).

at 25 ns: Note: TimerCount: 2 (/TEST_tb/).
at 25 ns: Note: TimerTriggerSync: '0' (/TEST_tb/).

at 27500 ps: Note: TimerCount: 2 (/TEST_tb/).
at 27500 ps: Note: TimerTriggerSync: '0' (/TEST_tb/).

at 30 ns: Note: TimerCount: 2 (/TEST_tb/).
at 30 ns: Note: TimerTriggerSync: '0' (/TEST_tb/).

Любые идеи о том, как это сделать?

ИЗМЕНИТЬ:

Этот код

    report "Bad Test";
    report "TimerTrigger: " & std_logic'image(TimerTrigger);
    report "TimerTriggerSync: " & std_logic'image(TimerTriggerSync) & LF;

распечатывает это:

at 25 ns: Note: Bad Test (/TEST_tb/).
at 25 ns: Note: TimerTrigger: '1' (/TEST_tb/).
at 25 ns: Note: TimerTriggerSync: '0'
 (/TEST_tb/).
at 40 ns: Note: Bad Test (/TEST_tb/).
at 40 ns: Note: TimerTrigger: '1' (/TEST_tb/).
at 40 ns: Note: TimerTriggerSync: '0'
 (/TEST_tb/).
at 55 ns: Note: Bad Test (/TEST_tb/).
at 55 ns: Note: TimerTrigger: '1' (/TEST_tb/).
at 55 ns: Note: TimerTriggerSync: '0'
 (/TEST_tb/).
at 70 ns: Note: Bad Test (/TEST_tb/).
at 70 ns: Note: TimerTrigger: '1' (/TEST_tb/).
at 70 ns: Note: TimerTriggerSync: '0'
 (/TEST_tb/).

Это отлично сработало бы, если бы мне не нужно было также распечатывать имя файла (/TEST_tb/). Это новое препятствие, которое нужно обойти.


person VKkaps    schedule 07.08.2015    source источник
comment
Это вопрос VHDL? Вы добавили тег Virtual-Hard-Disk (VHD) к своему вопросу. Также в вашем вопросе не указано, какой язык является целевым. Вы не можете добавлять пустые строки в журнал, потому что каждая строка журнала представляет собой одно сообщение. Но вы можете добавить символы новой строки. STRING в VHDL — это массив CHARACTER. CHARACTER является перечислением и определяет несколько управляющих символов, таких как LF или CR. Вы можете просто объединить эти символы в строки. report "Line 1" & CR & "Line 2" severity NOTE;.   -  person Paebbels    schedule 07.08.2015
comment
Другим решением является запись в STD_OUT, но корреляции со временем в моделировании нет, если только вы не используете now() в своем сообщении.   -  person Paebbels    schedule 07.08.2015
comment
ага, извините! И я имею в виду окно консоли в ISim прямо перед командной строкой TCL, где появляются операторы утверждений и отчетов. Но нет возможности вернуть просто пустое сообщение?   -  person VKkaps    schedule 07.08.2015
comment
Пустое сообщение, например report "" severity NOTE;, также создаст строку: at 30 ns: Note: (/TEST_tb/).. Это короткая строка, но не пустая. Может быть, вы можете использовать очень длинную строку для разделения: report "----------------------------------------------" severity NOTE;   -  person Paebbels    schedule 07.08.2015
comment
Не видя никакого кода, что обеспечивает порядок этих двух сообщений? Если их порядок гарантирован, добавьте ко второму сообщению LF или CR (или оба, что когда-либо вызывало новую строку в вашей реализации). Это вставит пустую строку после второго сообщения. Покажите нам один или оба отчета.   -  person    schedule 07.08.2015


Ответы (1)


В своем отчете вы можете попробовать:

Report "My Stuff" & LF severity NOTE;

Если это не поможет, добавьте следующее после отчетов TimerTriggerSync:

use std.textio.all ; 
. . . 
write(Buf, string'(""));
writeline(OUTPUT, BUF);

Вы также можете попробовать следующее после отчетов TimerTriggerSync:

write(std.textio.OUTPUT, "" & LF);
person Jim Lewis    schedule 09.08.2015
comment
Я отредактировал приведенный выше код, чтобы показать, что дает мне ваш первый пример. Очень близко к тому, что мы хотели бы получить, но возвращает имя файла. Кроме того, когда я пытаюсь использовать ваши примеры записи, я получаю эту ошибку: ОШИБКА: HDLCompiler: 69 Строка 124: ‹write› не объявлен. Нужно ли включать новую декларацию библиотеки, чтобы разрешить это? - person VKkaps; 10.08.2015
comment
Да. Вам нужен пакет, который я добавил выше. Как правило, вы помещаете его перед объявлением сущности. В последнем примере, если вы печатаете только один раз, вы можете ссылаться на OUTPUT как std.textio.OUTPUT. - person Jim Lewis; 19.08.2015