fix: revert synchronizer changes (false changes) and sampler

This commit is contained in:
2026-07-14 13:02:55 +03:00
parent 493d6844c0
commit d80f5ff31f
7 changed files with 706 additions and 244 deletions

View File

@ -20,7 +20,7 @@ include ../../scripts/vivado.mk
INC_FILES += interfaces.svh
TB_FILES += reflectometer_tb.sv
TB_FILES += reflectometer_tb.sv
SYN_FILES += reflectometer.sv
SYN_FILES += dac_model.sv
SYN_FILES += adc_model.sv

View File

@ -152,8 +152,8 @@ module reflectometer_tb;
// AXI-S таски
task automatic axis_send_packet(
virtual axis_if.tb vif,
const ref logic [7:0] payload[]
virtual axis_if.tb vif,
logic [7:0] payload[]
);
int packet_size = payload.size();
@ -163,17 +163,18 @@ module reflectometer_tb;
end
foreach (payload[i]) begin
vif.drv_cb.tdata <= payload[i];
vif.drv_cb.tvalid <= 1'b1;
vif.drv_cb.tlast <= (i == packet_size - 1); // tlast активен только на последнем байте
$display("%1", payload[i]);
// vif.drv_cb.tdata <= payload[i];
// vif.drv_cb.tvalid <= 1'b1;
// vif.drv_cb.tlast <= (i == packet_size - 1); // tlast активен только на последнем байте
// Шагаем на следующий фронт клока, чтобы симулятор применил выходы
@(vif.drv_cb);
// // Шагаем на следующий фронт клока, чтобы симулятор применил выходы
// @(vif.drv_cb);
// Ждем на последующих фронтах, пока tready не станет равен 1.
while (vif.drv_cb.tready !== 1'b1) begin
@(vif.drv_cb);
end
// // Ждем на последующих фронтах, пока tready не станет равен 1.
// while (vif.drv_cb.tready !== 1'b1) begin
// @(vif.drv_cb);
// end
end
// Снимаем валидность на следующем дельта-цикле
@ -206,7 +207,7 @@ module reflectometer_tb;
input logic [31:0] pulse_period_adc
);
// Выделяем 17 байт: 1 байт команды + 16 байт регистров
logic [7:0] full_packet[] = new[17];
logic [7:0] full_packet[17];
// 1. Сначала пишем команду в нулевой байт пакета
full_packet[0] = 8'b10001000; // Твоя команда set_data
@ -253,11 +254,13 @@ module reflectometer_tb;
$display("[TB] Tests start");
// Инициализация
rst_n = 0;
#100;
rst_n = 1;
wait(mmcm_locked === 1'b1);
#10;
// dut_soft_reset();
dut_soft_reset();
// dut_send_system_config(
// .pulse_width(32'd350),
// .pulse_period(32'd1250),

View File

@ -0,0 +1,117 @@
<?xml version="1.0" encoding="UTF-8"?>
<wave_config>
<wave_state>
</wave_state>
<db_ref_list>
<db_ref path="reflectometer_tb_behav.wdb" id="1">
<top_modules>
<top_module name="glbl" />
<top_module name="reflectometer_tb" />
</top_modules>
</db_ref>
</db_ref_list>
<zoom_setting>
<ZoomStartTime time="0.000 ns"></ZoomStartTime>
<ZoomEndTime time="1,506.001 ns"></ZoomEndTime>
<Cursor1Time time="1,000.000 ns"></Cursor1Time>
</zoom_setting>
<column_width_setting>
<NameColumnWidth column_width="196"></NameColumnWidth>
<ValueColumnWidth column_width="76"></ValueColumnWidth>
</column_width_setting>
<WVObjectSize size="7" />
<wvobject type="logic" fp_name="/reflectometer_tb/rst_n">
<obj_property name="ElementShortName">rst_n</obj_property>
<obj_property name="ObjectShortName">rst_n</obj_property>
</wvobject>
<wvobject type="logic" fp_name="/reflectometer_tb/mmcm_locked">
<obj_property name="ElementShortName">mmcm_locked</obj_property>
<obj_property name="ObjectShortName">mmcm_locked</obj_property>
</wvobject>
<wvobject type="group" fp_name="group28">
<obj_property name="label">Signal</obj_property>
<obj_property name="DisplayName">label</obj_property>
<wvobject type="array" fp_name="/reflectometer_tb/dac_data">
<obj_property name="ElementShortName">dac_data[13:0]</obj_property>
<obj_property name="ObjectShortName">dac_data[13:0]</obj_property>
</wvobject>
<wvobject type="other" fp_name="/reflectometer_tb/signal_voltage">
<obj_property name="ElementShortName">signal_voltage</obj_property>
<obj_property name="ObjectShortName">signal_voltage</obj_property>
</wvobject>
<wvobject type="array" fp_name="/reflectometer_tb/adc_data">
<obj_property name="ElementShortName">adc_data[11:0]</obj_property>
<obj_property name="ObjectShortName">adc_data[11:0]</obj_property>
</wvobject>
<wvobject type="logic" fp_name="/reflectometer_tb/adc_otr">
<obj_property name="ElementShortName">adc_otr</obj_property>
<obj_property name="ObjectShortName">adc_otr</obj_property>
</wvobject>
</wvobject>
<wvobject type="logic" fp_name="/reflectometer_tb/send_request">
<obj_property name="ElementShortName">send_request</obj_property>
<obj_property name="ObjectShortName">send_request</obj_property>
</wvobject>
<wvobject type="logic" fp_name="/reflectometer_tb/request_ready">
<obj_property name="ElementShortName">request_ready</obj_property>
<obj_property name="ObjectShortName">request_ready</obj_property>
</wvobject>
<wvobject type="group" fp_name="group51">
<obj_property name="label">Controller</obj_property>
<obj_property name="DisplayName">label</obj_property>
<obj_property name="isExpanded"></obj_property>
<wvobject type="logic" fp_name="/reflectometer_tb/axis_control_if/clk">
<obj_property name="ElementShortName">clk</obj_property>
<obj_property name="ObjectShortName">clk</obj_property>
</wvobject>
<wvobject type="logic" fp_name="/reflectometer_tb/axis_control_if/rst_n">
<obj_property name="ElementShortName">rst_n</obj_property>
<obj_property name="ObjectShortName">rst_n</obj_property>
</wvobject>
<wvobject type="array" fp_name="/reflectometer_tb/axis_control_if/tdata">
<obj_property name="ElementShortName">tdata[7:0]</obj_property>
<obj_property name="ObjectShortName">tdata[7:0]</obj_property>
</wvobject>
<wvobject type="logic" fp_name="/reflectometer_tb/axis_control_if/tvalid">
<obj_property name="ElementShortName">tvalid</obj_property>
<obj_property name="ObjectShortName">tvalid</obj_property>
</wvobject>
<wvobject type="logic" fp_name="/reflectometer_tb/axis_control_if/tlast">
<obj_property name="ElementShortName">tlast</obj_property>
<obj_property name="ObjectShortName">tlast</obj_property>
</wvobject>
<wvobject type="logic" fp_name="/reflectometer_tb/axis_control_if/tready">
<obj_property name="ElementShortName">tready</obj_property>
<obj_property name="ObjectShortName">tready</obj_property>
</wvobject>
</wvobject>
<wvobject type="group" fp_name="group52">
<obj_property name="label">Accumulator</obj_property>
<obj_property name="DisplayName">label</obj_property>
<obj_property name="isExpanded"></obj_property>
<wvobject type="logic" fp_name="/reflectometer_tb/axis_accumulator_if/clk">
<obj_property name="ElementShortName">clk</obj_property>
<obj_property name="ObjectShortName">clk</obj_property>
</wvobject>
<wvobject type="logic" fp_name="/reflectometer_tb/axis_accumulator_if/rst_n">
<obj_property name="ElementShortName">rst_n</obj_property>
<obj_property name="ObjectShortName">rst_n</obj_property>
</wvobject>
<wvobject type="array" fp_name="/reflectometer_tb/axis_accumulator_if/tdata">
<obj_property name="ElementShortName">tdata[7:0]</obj_property>
<obj_property name="ObjectShortName">tdata[7:0]</obj_property>
</wvobject>
<wvobject type="logic" fp_name="/reflectometer_tb/axis_accumulator_if/tvalid">
<obj_property name="ElementShortName">tvalid</obj_property>
<obj_property name="ObjectShortName">tvalid</obj_property>
</wvobject>
<wvobject type="logic" fp_name="/reflectometer_tb/axis_accumulator_if/tlast">
<obj_property name="ElementShortName">tlast</obj_property>
<obj_property name="ObjectShortName">tlast</obj_property>
</wvobject>
<wvobject type="logic" fp_name="/reflectometer_tb/axis_accumulator_if/tready">
<obj_property name="ElementShortName">tready</obj_property>
<obj_property name="ObjectShortName">tready</obj_property>
</wvobject>
</wvobject>
</wave_config>