Enhance bram_writer and testbench: add data handling for convolution, update state machine, and introduce new configuration files for simulation

This commit is contained in:
2025-04-17 21:29:02 +02:00
parent 7ee12b37fe
commit 667632bfa3
4 changed files with 358 additions and 15 deletions

View File

@@ -0,0 +1,107 @@
<?xml version="1.0" encoding="UTF-8"?>
<wave_config>
<wave_state>
</wave_state>
<db_ref_list>
<db_ref path="tb_bram_writer_behav.wdb" id="1">
<top_modules>
<top_module name="tb_bram_writer" />
<top_module name="vcomponents" />
</top_modules>
</db_ref>
</db_ref_list>
<zoom_setting>
<ZoomStartTime time="0fs"></ZoomStartTime>
<ZoomEndTime time="274601fs"></ZoomEndTime>
<Cursor1Time time="0fs"></Cursor1Time>
</zoom_setting>
<column_width_setting>
<NameColumnWidth column_width="340"></NameColumnWidth>
<ValueColumnWidth column_width="155"></ValueColumnWidth>
</column_width_setting>
<WVObjectSize size="21" />
<wvobject fp_name="/tb_bram_writer/clk" type="logic">
<obj_property name="ElementShortName">clk</obj_property>
<obj_property name="ObjectShortName">clk</obj_property>
</wvobject>
<wvobject fp_name="/tb_bram_writer/aresetn" type="logic">
<obj_property name="ElementShortName">aresetn</obj_property>
<obj_property name="ObjectShortName">aresetn</obj_property>
</wvobject>
<wvobject type="divider" fp_name="divider36">
<obj_property name="label">AXI4</obj_property>
<obj_property name="DisplayName">label</obj_property>
</wvobject>
<wvobject fp_name="/tb_bram_writer/s_axis_tdata" type="array">
<obj_property name="ElementShortName">s_axis_tdata[7:0]</obj_property>
<obj_property name="ObjectShortName">s_axis_tdata[7:0]</obj_property>
</wvobject>
<wvobject fp_name="/tb_bram_writer/s_axis_tvalid" type="logic">
<obj_property name="ElementShortName">s_axis_tvalid</obj_property>
<obj_property name="ObjectShortName">s_axis_tvalid</obj_property>
</wvobject>
<wvobject fp_name="/tb_bram_writer/s_axis_tready" type="logic">
<obj_property name="ElementShortName">s_axis_tready</obj_property>
<obj_property name="ObjectShortName">s_axis_tready</obj_property>
</wvobject>
<wvobject fp_name="/tb_bram_writer/s_axis_tlast" type="logic">
<obj_property name="ElementShortName">s_axis_tlast</obj_property>
<obj_property name="ObjectShortName">s_axis_tlast</obj_property>
</wvobject>
<wvobject type="divider" fp_name="divider37">
<obj_property name="label">FSM</obj_property>
<obj_property name="DisplayName">label</obj_property>
</wvobject>
<wvobject fp_name="/tb_bram_writer/bram_writer_inst/state" type="other">
<obj_property name="ElementShortName">state</obj_property>
<obj_property name="ObjectShortName">state</obj_property>
</wvobject>
<wvobject type="divider" fp_name="divider38">
<obj_property name="label">BRAM</obj_property>
<obj_property name="DisplayName">label</obj_property>
</wvobject>
<wvobject fp_name="/tb_bram_writer/bram_writer_inst/bram_addr" type="array">
<obj_property name="ElementShortName">bram_addr[3:0]</obj_property>
<obj_property name="ObjectShortName">bram_addr[3:0]</obj_property>
</wvobject>
<wvobject fp_name="/tb_bram_writer/bram_writer_inst/wr_addr" type="array">
<obj_property name="ElementShortName">wr_addr[3:0]</obj_property>
<obj_property name="ObjectShortName">wr_addr[3:0]</obj_property>
</wvobject>
<wvobject fp_name="/tb_bram_writer/bram_writer_inst/bram_we" type="logic">
<obj_property name="ElementShortName">bram_we</obj_property>
<obj_property name="ObjectShortName">bram_we</obj_property>
</wvobject>
<wvobject fp_name="/tb_bram_writer/conv_addr" type="array">
<obj_property name="ElementShortName">conv_addr[3:0]</obj_property>
<obj_property name="ObjectShortName">conv_addr[3:0]</obj_property>
</wvobject>
<wvobject fp_name="/tb_bram_writer/conv_data" type="array">
<obj_property name="ElementShortName">conv_data[6:0]</obj_property>
<obj_property name="ObjectShortName">conv_data[6:0]</obj_property>
</wvobject>
<wvobject fp_name="/tb_bram_writer/start_conv" type="logic">
<obj_property name="ElementShortName">start_conv</obj_property>
<obj_property name="ObjectShortName">start_conv</obj_property>
</wvobject>
<wvobject fp_name="/tb_bram_writer/done_conv" type="logic">
<obj_property name="ElementShortName">done_conv</obj_property>
<obj_property name="ObjectShortName">done_conv</obj_property>
</wvobject>
<wvobject type="divider" fp_name="divider39">
<obj_property name="label">Out status</obj_property>
<obj_property name="DisplayName">label</obj_property>
</wvobject>
<wvobject fp_name="/tb_bram_writer/write_ok" type="logic">
<obj_property name="ElementShortName">write_ok</obj_property>
<obj_property name="ObjectShortName">write_ok</obj_property>
</wvobject>
<wvobject fp_name="/tb_bram_writer/overflow" type="logic">
<obj_property name="ElementShortName">overflow</obj_property>
<obj_property name="ObjectShortName">overflow</obj_property>
</wvobject>
<wvobject fp_name="/tb_bram_writer/underflow" type="logic">
<obj_property name="ElementShortName">underflow</obj_property>
<obj_property name="ObjectShortName">underflow</obj_property>
</wvobject>
</wave_config>