Как обновить шапку на лету

Есть ли способ изменить заголовочный файл на лету?

Заголовочный файл содержит много констант, которые можно использовать для модулей. В моем приложении, однако, некоторые из констант должны часто изменяться вручную. Есть ли способ изменить значения автоматически?

Я попробовал следующие подходы.
1. Используйте C ++, чтобы определить константы и записать их в заголовочный файл.
2. Используйте модуль SV для обновления файла заголовка.
Все эти методы требуют дополнительных шагов перед запуском верхнего модуля.
Есть ли способ обновить заголовочный файл во время выполнения симулятора?

В следующем header.v содержится NUM, который используется в модуле main.
NUM часто меняется.

Эта проблема также распространяется на другие языки, такие как C ++ или Java.

header.v:
`define NUM 256 //256 must be changed often

module top ();
initial ...
//instantiation
main MAIN();

endmodule

//this module contains NUM
module main ();
byte[0:`NUM - 1];

endmodule

0

Решение

Если он отличается для каждого модуля в той же симуляции, то вы должны использовать parameter вместо `define,

main #(parameter NUM) (/*portlist*/);
// ...
byte array [0:`NUM - 1]; // FYI 'byte' is a SystemVerilog keyword
// ...
endmodule

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

  • +define+NUM=256
  • -define NUM=256
  • -D NUM=256

Чтобы уменьшить переопределение предупреждений, оберните `ifndef к определению в header.v:

`ifndef NUM
`define NUM 256 //256 must be changed often
`endif
1

Другие решения

C ++ является скомпилированный язык, где константы, такие как вещи, переводятся на машинный язык во время компиляции (я знаю его очень грубое описание, для более детального понимания вы можете обратиться к адресному пространству процесса и где в нем находятся константы). http://www.geeksforgeeks.org/memory-layout-of-c-program/).
Если вы хотите изменить эти константы (или подобные вещи), код должен быть перекомпилирован. Существуют методы, с помощью которых вы можете сгенерировать индивидуальный код из входных текстовых файлов, используя некоторые инструменты Но это не применимо в вашем сценарии.

Я полагаю, что файл конфигурации является лучшим в вашем случае, когда вы можете определить параметры в соответствии с настройкой.

1

По вопросам рекламы [email protected]