Получить ссылку на источник для всех расширений структуры в Specman
Я знаком с collect
команда в Specman, которая возвращает все расширения указанного метода. Тем не мение, show source
для определенной структуры возвращает только определение базовой структуры, а не все расширения. есть команда в Specman, которая эквивалентна collect
но для структур / единиц?
1 ответ
В Specman такой команды нет, но, поскольку e - невероятно гибкий язык, вы можете добавить любую команду, которая может вам понадобиться, используя мощные макросы e.
Например, чтобы реализовать то, что вы хотите, вы можете создать макрос, который использует Механизм отражения, чтобы получить все слои желаемой структуры и затем напечатать соответствующие исходные строки:
define <struct_collect'command> "s_collect <any>" as {
var line_num:int;
var st:rf_struct = rf_manager.get_struct_by_name("<1>");
if (st==NULL) {
out(append("struct name does not exist : <1>"));
} else {
for each in st.as_a(rf_like_struct).get_layers() {
line_num=it.get_source_line_num();
out(append("In file ",it.get_module().get_name()," line ",line_num, " : ",files.get_text_lines(it.get_module().get_full_file_name(), line_num,line_num)));
};
};
};
Вы можете улучшить этот макрос, записав результаты в файл или расположив его по-другому.
ура