mysol93 opened issue baulin.fa/reflectometer_fpga_project#3

mysol93
Wed, 08 Apr 2026 18:09:24 +0300

3#Кодревью master 88db70ede8#

в мастере вижу ряд проблем, которые лучше исправить.

1. Старайтесь не использовать константы напрямую, т.е. так называемые magic numbers, когда нужно будет вернуться к коду поосле перерыва вы будете долго вспоминать откуда они взялись. Вводи где возможно parameters, где невозможно - localparam. Пример из файла generator.sv

		вот это неоч
		   |
           |
           V
    input [31:0]           pulse_width,
    input [31:0]           pulse_period,

Сделайте
.
.
.
	parameter int PULSE_WIDTH_MAX = 100000
	parameter int PULSE_PERIOD_MAX = 100000)
(
.
.
.
    input wire [$clog2(PULSE_WIDTH_MAX)-1:0]   pulse_width,
    input wire [$clog2(PULSE_PERIOD_MAX)-1:0]  pulse_period,

В этом же файле

wire start_pulse = start & ~start_d; <=== фу, давайте всё присваивать в always/initial блоке или assign

В этом же файле cnt_pulse_num и cnt_period изменяют свои значения в разных if-statements. Ниоч хорошо, можно легко сломать логику отправив 2 старта подряд. Давайте так не делать.

К файлу sampler.sv Тоже есть вопрос вот тут

if (data_in == 12'b100000000000) begin <=== тут правильное условие для data_in?

2. По тестам. Прошу увеличивать покрытие тестов путём генерации случайных чисел для воздействия на входы. Увеличивать их количество, количество итераций, а так же необходимо сравнение выходов модулей и проверка этих выходов. Т.е., например, если мы на выходе DUT получаем данныые, то мы должны сгененрировать референсные данные и сравнить результаты. В случае совпадения сделать вывод о верности теста в стиле PASS/FAIL. Тесты должны быть автоматические, т.е. запустил - получил результат. В случае отрицательного результата нужно иметь возможность изучить отладочную информацию (вейвформы, логи и т.д.)

3. Зайлете скрипты запуска тестов. Список файлов для тестов можете внести в файл-листы.