<?xml version="1.0" encoding="UTF-8"?>
-<BaliProject version="2.0" title="soda_client" device="LFE3-150EA-8FN672C" synthesis="synplify" default_implementation="soda_client">
+<BaliProject version="3.0" title="soda_client" device="LFE3-150EA-8FN672C" default_implementation="soda_client">
<Options>
<Option name="HDL type" value="VHDL"/>
</Options>
- <Implementation title="soda_client" dir="soda_client" description="soda_client" default_strategy="Strategy1">
+ <Implementation title="soda_client" dir="soda_client" description="soda_client" synthesis="synplify" default_strategy="Strategy1">
<Options def_top="trb3_periph_sodaclient" top="trb3_periph_sodaclient"/>
<Source name="source/version.vhd" type="VHDL" type_short="VHDL">
<Options/>
--- /dev/null
+<Project ModBy="Inserter" SigType="0" Name="/local/lemmens/lattice/soda/soda_client_probe.rvl" Date="2014-01-20">
+ <IP Version="1_5_062609"/>
+ <Design DesignEntry="Schematic/VHDL" Synthesis="synplify" DeviceFamily="LatticeECP3" DesignName="soda_client"/>
+ <Core InsertDataset="0" Insert="1" Reveal_sig="2020146143" Name="trb3_periph_sodaclient_LA0" ID="0">
+ <Setting>
+ <Clock SampleClk="the_sync_link/clk_rx_full" SampleEnable="0" EnableClk="" EnableClk_Pri="0"/>
+ <TraceBuffer Implementation="0" BitTimeStamp="0" hasTimeStamp="0" IncTrigSig="1" BufferDepth="512"/>
+ <Capture Mode="0" MinSamplesPerTrig="8"/>
+ <Event CntEnable="0" MaxEventCnt="8"/>
+ <TrigOut Polarity="0" MinPulseWidth="0" TrigOutNetType="1" EnableTrigOut="0" TrigOutNet="reveal_debug_soda_client_LA0_net"/>
+ </Setting>
+ <Dataset Name="Base">
+ <Trace>
+ <Sig Type="SIG" Name="the_sync_link/the_tx/rx_allow_qtx"/>
+ <Sig Type="SIG" Name="the_sync_link/the_tx/tx_allow_qtx"/>
+ <Bus Name="the_sync_link/the_tx/tx_data_out">
+ <Sig Type="SIG" Name="the_sync_link/the_tx/tx_data_out:0"/>
+ <Sig Type="SIG" Name="the_sync_link/the_tx/tx_data_out:1"/>
+ <Sig Type="SIG" Name="the_sync_link/the_tx/tx_data_out:2"/>
+ <Sig Type="SIG" Name="the_sync_link/the_tx/tx_data_out:3"/>
+ <Sig Type="SIG" Name="the_sync_link/the_tx/tx_data_out:4"/>
+ <Sig Type="SIG" Name="the_sync_link/the_tx/tx_data_out:5"/>
+ <Sig Type="SIG" Name="the_sync_link/the_tx/tx_data_out:6"/>
+ <Sig Type="SIG" Name="the_sync_link/the_tx/tx_data_out:7"/>
+ </Bus>
+ <Sig Type="SIG" Name="the_sync_link/link_phase_s"/>
+ <Sig Type="SIG" Name="the_sync_link/rx_dlm"/>
+ <Bus Name="the_sync_link/rx_dlm_word">
+ <Sig Type="SIG" Name="the_sync_link/rx_dlm_word:0"/>
+ <Sig Type="SIG" Name="the_sync_link/rx_dlm_word:1"/>
+ <Sig Type="SIG" Name="the_sync_link/rx_dlm_word:2"/>
+ <Sig Type="SIG" Name="the_sync_link/rx_dlm_word:3"/>
+ <Sig Type="SIG" Name="the_sync_link/rx_dlm_word:4"/>
+ <Sig Type="SIG" Name="the_sync_link/rx_dlm_word:5"/>
+ <Sig Type="SIG" Name="the_sync_link/rx_dlm_word:6"/>
+ <Sig Type="SIG" Name="the_sync_link/rx_dlm_word:7"/>
+ </Bus>
+ <Sig Type="SIG" Name="the_sync_link/tx_dlm"/>
+ <Bus Name="the_sync_link/tx_dlm_word">
+ <Sig Type="SIG" Name="the_sync_link/tx_dlm_word:0"/>
+ <Sig Type="SIG" Name="the_sync_link/tx_dlm_word:1"/>
+ <Sig Type="SIG" Name="the_sync_link/tx_dlm_word:2"/>
+ <Sig Type="SIG" Name="the_sync_link/tx_dlm_word:3"/>
+ <Sig Type="SIG" Name="the_sync_link/tx_dlm_word:4"/>
+ <Sig Type="SIG" Name="the_sync_link/tx_dlm_word:5"/>
+ <Sig Type="SIG" Name="the_sync_link/tx_dlm_word:6"/>
+ <Sig Type="SIG" Name="the_sync_link/tx_dlm_word:7"/>
+ </Bus>
+ <Sig Type="SIG" Name="a_soda_client/reply_packet_builder/start_of_superburst"/>
+ <Bus Name="a_soda_client/reply_packet_builder/super_burst_nr_in">
+ <Sig Type="SIG" Name="a_soda_client/reply_packet_builder/super_burst_nr_in:0"/>
+ <Sig Type="SIG" Name="a_soda_client/reply_packet_builder/super_burst_nr_in:1"/>
+ <Sig Type="SIG" Name="a_soda_client/reply_packet_builder/super_burst_nr_in:2"/>
+ <Sig Type="SIG" Name="a_soda_client/reply_packet_builder/super_burst_nr_in:3"/>
+ <Sig Type="SIG" Name="a_soda_client/reply_packet_builder/super_burst_nr_in:4"/>
+ <Sig Type="SIG" Name="a_soda_client/reply_packet_builder/super_burst_nr_in:5"/>
+ <Sig Type="SIG" Name="a_soda_client/reply_packet_builder/super_burst_nr_in:6"/>
+ <Sig Type="SIG" Name="a_soda_client/reply_packet_builder/super_burst_nr_in:7"/>
+ <Sig Type="SIG" Name="a_soda_client/reply_packet_builder/super_burst_nr_in:8"/>
+ <Sig Type="SIG" Name="a_soda_client/reply_packet_builder/super_burst_nr_in:9"/>
+ <Sig Type="SIG" Name="a_soda_client/reply_packet_builder/super_burst_nr_in:10"/>
+ <Sig Type="SIG" Name="a_soda_client/reply_packet_builder/super_burst_nr_in:11"/>
+ <Sig Type="SIG" Name="a_soda_client/reply_packet_builder/super_burst_nr_in:12"/>
+ <Sig Type="SIG" Name="a_soda_client/reply_packet_builder/super_burst_nr_in:13"/>
+ <Sig Type="SIG" Name="a_soda_client/reply_packet_builder/super_burst_nr_in:14"/>
+ <Sig Type="SIG" Name="a_soda_client/reply_packet_builder/super_burst_nr_in:15"/>
+ <Sig Type="SIG" Name="a_soda_client/reply_packet_builder/super_burst_nr_in:16"/>
+ <Sig Type="SIG" Name="a_soda_client/reply_packet_builder/super_burst_nr_in:17"/>
+ <Sig Type="SIG" Name="a_soda_client/reply_packet_builder/super_burst_nr_in:18"/>
+ <Sig Type="SIG" Name="a_soda_client/reply_packet_builder/super_burst_nr_in:19"/>
+ <Sig Type="SIG" Name="a_soda_client/reply_packet_builder/super_burst_nr_in:20"/>
+ <Sig Type="SIG" Name="a_soda_client/reply_packet_builder/super_burst_nr_in:21"/>
+ <Sig Type="SIG" Name="a_soda_client/reply_packet_builder/super_burst_nr_in:22"/>
+ <Sig Type="SIG" Name="a_soda_client/reply_packet_builder/super_burst_nr_in:23"/>
+ <Sig Type="SIG" Name="a_soda_client/reply_packet_builder/super_burst_nr_in:24"/>
+ <Sig Type="SIG" Name="a_soda_client/reply_packet_builder/super_burst_nr_in:25"/>
+ <Sig Type="SIG" Name="a_soda_client/reply_packet_builder/super_burst_nr_in:26"/>
+ <Sig Type="SIG" Name="a_soda_client/reply_packet_builder/super_burst_nr_in:27"/>
+ <Sig Type="SIG" Name="a_soda_client/reply_packet_builder/super_burst_nr_in:28"/>
+ <Sig Type="SIG" Name="a_soda_client/reply_packet_builder/super_burst_nr_in:29"/>
+ <Sig Type="SIG" Name="a_soda_client/reply_packet_builder/super_burst_nr_in:30"/>
+ </Bus>
+ <Sig Type="SIG" Name="a_soda_client/reply_packet_builder/tx_dlm_preview_out"/>
+ <Sig Type="SIG" Name="the_sync_link/make_link_reset_i"/>
+ <Sig Type="SIG" Name="the_sync_link/the_rx_control/got_link_ready"/>
+ <Sig Type="SIG" Name="the_sync_link/the_rx_control/make_reset_out"/>
+ <Sig Type="SIG" Name="the_sync_link/the_rx_control/rx_dlm"/>
+ <Sig Type="SIG" Name="the_sync_link/the_rx_control/rx_write_out"/>
+ <Bus Name="the_sync_link/start_timer">
+ <Sig Type="SIG" Name="the_sync_link/start_timer:0"/>
+ <Sig Type="SIG" Name="the_sync_link/start_timer:1"/>
+ <Sig Type="SIG" Name="the_sync_link/start_timer:2"/>
+ <Sig Type="SIG" Name="the_sync_link/start_timer:3"/>
+ <Sig Type="SIG" Name="the_sync_link/start_timer:4"/>
+ <Sig Type="SIG" Name="the_sync_link/start_timer:5"/>
+ <Sig Type="SIG" Name="the_sync_link/start_timer:6"/>
+ <Sig Type="SIG" Name="the_sync_link/start_timer:7"/>
+ <Sig Type="SIG" Name="the_sync_link/start_timer:8"/>
+ <Sig Type="SIG" Name="the_sync_link/start_timer:9"/>
+ <Sig Type="SIG" Name="the_sync_link/start_timer:10"/>
+ <Sig Type="SIG" Name="the_sync_link/start_timer:11"/>
+ <Sig Type="SIG" Name="the_sync_link/start_timer:12"/>
+ <Sig Type="SIG" Name="the_sync_link/start_timer:13"/>
+ <Sig Type="SIG" Name="the_sync_link/start_timer:14"/>
+ <Sig Type="SIG" Name="the_sync_link/start_timer:15"/>
+ <Sig Type="SIG" Name="the_sync_link/start_timer:16"/>
+ <Sig Type="SIG" Name="the_sync_link/start_timer:17"/>
+ <Sig Type="SIG" Name="the_sync_link/start_timer:18"/>
+ </Bus>
+ <Bus Name="the_sync_link/rx_fsm_state">
+ <Sig Type="SIG" Name="the_sync_link/rx_fsm_state:0"/>
+ <Sig Type="SIG" Name="the_sync_link/rx_fsm_state:1"/>
+ <Sig Type="SIG" Name="the_sync_link/rx_fsm_state:2"/>
+ <Sig Type="SIG" Name="the_sync_link/rx_fsm_state:3"/>
+ </Bus>
+ <Bus Name="the_sync_link/the_rx_control/rx_state">
+ <Sig Type="SIG" Name="the_sync_link/the_rx_control/rx_state:0"/>
+ <Sig Type="SIG" Name="the_sync_link/the_rx_control/rx_state:1"/>
+ <Sig Type="SIG" Name="the_sync_link/the_rx_control/rx_state:2"/>
+ </Bus>
+ <Sig Type="SIG" Name="the_sync_link/got_link_ready_i"/>
+ <Bus Name="the_sync_link/the_rx_control/rx_state_bits">
+ <Sig Type="SIG" Name="the_sync_link/the_rx_control/rx_state_bits:0"/>
+ <Sig Type="SIG" Name="the_sync_link/the_rx_control/rx_state_bits:1"/>
+ <Sig Type="SIG" Name="the_sync_link/the_rx_control/rx_state_bits:2"/>
+ <Sig Type="SIG" Name="the_sync_link/the_rx_control/rx_state_bits:3"/>
+ </Bus>
+ <Sig Type="SIG" Name="the_sync_link/the_rx_control/rx_k_in"/>
+ <Sig Type="SIG" Name="the_sync_link/the_rx_control/reg_rx_k_in"/>
+ <Bus Name="the_sync_link/the_rx_control/rx_data_in">
+ <Sig Type="SIG" Name="the_sync_link/the_rx_control/rx_data_in:0"/>
+ <Sig Type="SIG" Name="the_sync_link/the_rx_control/rx_data_in:1"/>
+ <Sig Type="SIG" Name="the_sync_link/the_rx_control/rx_data_in:2"/>
+ <Sig Type="SIG" Name="the_sync_link/the_rx_control/rx_data_in:3"/>
+ <Sig Type="SIG" Name="the_sync_link/the_rx_control/rx_data_in:4"/>
+ <Sig Type="SIG" Name="the_sync_link/the_rx_control/rx_data_in:5"/>
+ <Sig Type="SIG" Name="the_sync_link/the_rx_control/rx_data_in:6"/>
+ <Sig Type="SIG" Name="the_sync_link/the_rx_control/rx_data_in:7"/>
+ </Bus>
+ <Bus Name="the_sync_link/the_rx_control/reg_rx_data_in">
+ <Sig Type="SIG" Name="the_sync_link/the_rx_control/reg_rx_data_in:0"/>
+ <Sig Type="SIG" Name="the_sync_link/the_rx_control/reg_rx_data_in:1"/>
+ <Sig Type="SIG" Name="the_sync_link/the_rx_control/reg_rx_data_in:2"/>
+ <Sig Type="SIG" Name="the_sync_link/the_rx_control/reg_rx_data_in:3"/>
+ <Sig Type="SIG" Name="the_sync_link/the_rx_control/reg_rx_data_in:4"/>
+ <Sig Type="SIG" Name="the_sync_link/the_rx_control/reg_rx_data_in:5"/>
+ <Sig Type="SIG" Name="the_sync_link/the_rx_control/reg_rx_data_in:6"/>
+ <Sig Type="SIG" Name="the_sync_link/the_rx_control/reg_rx_data_in:7"/>
+ </Bus>
+ <Sig Type="SIG" Name="the_sync_link/the_rx_control/next_sop"/>
+ <Bus Name="the_sync_link/the_rx_fsm/counter2">
+ <Sig Type="SIG" Name="the_sync_link/the_rx_fsm/counter2:0"/>
+ <Sig Type="SIG" Name="the_sync_link/the_rx_fsm/counter2:1"/>
+ <Sig Type="SIG" Name="the_sync_link/the_rx_fsm/counter2:2"/>
+ <Sig Type="SIG" Name="the_sync_link/the_rx_fsm/counter2:3"/>
+ <Sig Type="SIG" Name="the_sync_link/the_rx_fsm/counter2:4"/>
+ <Sig Type="SIG" Name="the_sync_link/the_rx_fsm/counter2:5"/>
+ <Sig Type="SIG" Name="the_sync_link/the_rx_fsm/counter2:6"/>
+ <Sig Type="SIG" Name="the_sync_link/the_rx_fsm/counter2:7"/>
+ <Sig Type="SIG" Name="the_sync_link/the_rx_fsm/counter2:8"/>
+ <Sig Type="SIG" Name="the_sync_link/the_rx_fsm/counter2:9"/>
+ <Sig Type="SIG" Name="the_sync_link/the_rx_fsm/counter2:10"/>
+ <Sig Type="SIG" Name="the_sync_link/the_rx_fsm/counter2:11"/>
+ <Sig Type="SIG" Name="the_sync_link/the_rx_fsm/counter2:12"/>
+ <Sig Type="SIG" Name="the_sync_link/the_rx_fsm/counter2:13"/>
+ <Sig Type="SIG" Name="the_sync_link/the_rx_fsm/counter2:14"/>
+ <Sig Type="SIG" Name="the_sync_link/the_rx_fsm/counter2:15"/>
+ <Sig Type="SIG" Name="the_sync_link/the_rx_fsm/counter2:16"/>
+ <Sig Type="SIG" Name="the_sync_link/the_rx_fsm/counter2:17"/>
+ <Sig Type="SIG" Name="the_sync_link/the_rx_fsm/counter2:18"/>
+ <Sig Type="SIG" Name="the_sync_link/the_rx_fsm/counter2:19"/>
+ </Bus>
+ <Sig Type="SIG" Name="the_sync_link/the_rx_fsm/rst_n"/>
+ <Bus Name="the_sync_link/the_rx_fsm/cs">
+ <Sig Type="SIG" Name="the_sync_link/the_rx_fsm/cs:0"/>
+ <Sig Type="SIG" Name="the_sync_link/the_rx_fsm/cs:1"/>
+ <Sig Type="SIG" Name="the_sync_link/the_rx_fsm/cs:2"/>
+ </Bus>
+ <Bus Name="the_sync_link/the_rx_fsm/ns">
+ <Sig Type="SIG" Name="the_sync_link/the_rx_fsm/ns:0"/>
+ <Sig Type="SIG" Name="the_sync_link/the_rx_fsm/ns:1"/>
+ <Sig Type="SIG" Name="the_sync_link/the_rx_fsm/ns:2"/>
+ </Bus>
+ <Sig Type="SIG" Name="the_sync_link/the_rx_fsm/rx_cdr_lol_ch_s"/>
+ <Sig Type="SIG" Name="the_sync_link/the_rx_fsm/rx_los_low_ch_s"/>
+ <Sig Type="SIG" Name="the_sync_link/the_rx_fsm/rx_pcs_rst_ch_c"/>
+ <Sig Type="SIG" Name="the_sync_link/the_rx_fsm/rx_serdes_rst_ch_c"/>
+ <Bus Name="the_sync_link/the_rx_fsm/state_out">
+ <Sig Type="SIG" Name="the_sync_link/the_rx_fsm/state_out:0"/>
+ <Sig Type="SIG" Name="the_sync_link/the_rx_fsm/state_out:1"/>
+ <Sig Type="SIG" Name="the_sync_link/the_rx_fsm/state_out:2"/>
+ <Sig Type="SIG" Name="the_sync_link/the_rx_fsm/state_out:3"/>
+ </Bus>
+ <Sig Type="SIG" Name="the_sync_link/the_rx_fsm/tx_pll_lol_qd_s"/>
+ <Bus Name="the_sync_link/the_rx_fsm/wa_position">
+ <Sig Type="SIG" Name="the_sync_link/the_rx_fsm/wa_position:0"/>
+ <Sig Type="SIG" Name="the_sync_link/the_rx_fsm/wa_position:1"/>
+ <Sig Type="SIG" Name="the_sync_link/the_rx_fsm/wa_position:2"/>
+ <Sig Type="SIG" Name="the_sync_link/the_rx_fsm/wa_position:3"/>
+ </Bus>
+ <Bus Name="the_sync_link/watchdog_timer">
+ <Sig Type="SIG" Name="the_sync_link/watchdog_timer:0"/>
+ <Sig Type="SIG" Name="the_sync_link/watchdog_timer:1"/>
+ <Sig Type="SIG" Name="the_sync_link/watchdog_timer:2"/>
+ <Sig Type="SIG" Name="the_sync_link/watchdog_timer:3"/>
+ <Sig Type="SIG" Name="the_sync_link/watchdog_timer:4"/>
+ <Sig Type="SIG" Name="the_sync_link/watchdog_timer:5"/>
+ <Sig Type="SIG" Name="the_sync_link/watchdog_timer:6"/>
+ <Sig Type="SIG" Name="the_sync_link/watchdog_timer:7"/>
+ <Sig Type="SIG" Name="the_sync_link/watchdog_timer:8"/>
+ <Sig Type="SIG" Name="the_sync_link/watchdog_timer:9"/>
+ <Sig Type="SIG" Name="the_sync_link/watchdog_timer:10"/>
+ <Sig Type="SIG" Name="the_sync_link/watchdog_timer:11"/>
+ <Sig Type="SIG" Name="the_sync_link/watchdog_timer:12"/>
+ <Sig Type="SIG" Name="the_sync_link/watchdog_timer:13"/>
+ <Sig Type="SIG" Name="the_sync_link/watchdog_timer:14"/>
+ <Sig Type="SIG" Name="the_sync_link/watchdog_timer:15"/>
+ <Sig Type="SIG" Name="the_sync_link/watchdog_timer:16"/>
+ <Sig Type="SIG" Name="the_sync_link/watchdog_timer:17"/>
+ <Sig Type="SIG" Name="the_sync_link/watchdog_timer:18"/>
+ <Sig Type="SIG" Name="the_sync_link/watchdog_timer:19"/>
+ <Sig Type="SIG" Name="the_sync_link/watchdog_timer:20"/>
+ </Bus>
+ <Sig Type="SIG" Name="the_sync_link/watchdog_trigger"/>
+ <Sig Type="SIG" Name="a_soda_client/soda_cmd_valid_s"/>
+ <Bus Name="a_soda_client/soda_cmd_word_s">
+ <Sig Type="SIG" Name="a_soda_client/soda_cmd_word_s:0"/>
+ <Sig Type="SIG" Name="a_soda_client/soda_cmd_word_s:1"/>
+ <Sig Type="SIG" Name="a_soda_client/soda_cmd_word_s:2"/>
+ <Sig Type="SIG" Name="a_soda_client/soda_cmd_word_s:3"/>
+ <Sig Type="SIG" Name="a_soda_client/soda_cmd_word_s:4"/>
+ <Sig Type="SIG" Name="a_soda_client/soda_cmd_word_s:5"/>
+ <Sig Type="SIG" Name="a_soda_client/soda_cmd_word_s:6"/>
+ <Sig Type="SIG" Name="a_soda_client/soda_cmd_word_s:7"/>
+ <Sig Type="SIG" Name="a_soda_client/soda_cmd_word_s:8"/>
+ <Sig Type="SIG" Name="a_soda_client/soda_cmd_word_s:9"/>
+ <Sig Type="SIG" Name="a_soda_client/soda_cmd_word_s:10"/>
+ <Sig Type="SIG" Name="a_soda_client/soda_cmd_word_s:11"/>
+ <Sig Type="SIG" Name="a_soda_client/soda_cmd_word_s:12"/>
+ <Sig Type="SIG" Name="a_soda_client/soda_cmd_word_s:13"/>
+ <Sig Type="SIG" Name="a_soda_client/soda_cmd_word_s:14"/>
+ <Sig Type="SIG" Name="a_soda_client/soda_cmd_word_s:15"/>
+ <Sig Type="SIG" Name="a_soda_client/soda_cmd_word_s:16"/>
+ <Sig Type="SIG" Name="a_soda_client/soda_cmd_word_s:17"/>
+ <Sig Type="SIG" Name="a_soda_client/soda_cmd_word_s:18"/>
+ <Sig Type="SIG" Name="a_soda_client/soda_cmd_word_s:19"/>
+ <Sig Type="SIG" Name="a_soda_client/soda_cmd_word_s:20"/>
+ <Sig Type="SIG" Name="a_soda_client/soda_cmd_word_s:21"/>
+ <Sig Type="SIG" Name="a_soda_client/soda_cmd_word_s:22"/>
+ <Sig Type="SIG" Name="a_soda_client/soda_cmd_word_s:23"/>
+ <Sig Type="SIG" Name="a_soda_client/soda_cmd_word_s:24"/>
+ <Sig Type="SIG" Name="a_soda_client/soda_cmd_word_s:25"/>
+ <Sig Type="SIG" Name="a_soda_client/soda_cmd_word_s:26"/>
+ <Sig Type="SIG" Name="a_soda_client/soda_cmd_word_s:27"/>
+ <Sig Type="SIG" Name="a_soda_client/soda_cmd_word_s:28"/>
+ <Sig Type="SIG" Name="a_soda_client/soda_cmd_word_s:29"/>
+ <Sig Type="SIG" Name="a_soda_client/soda_cmd_word_s:30"/>
+ </Bus>
+ <Sig Type="SIG" Name="a_soda_client/start_of_superburst_s"/>
+ </Trace>
+ <Trigger>
+ <TU Serialbits="0" Type="0" ID="1" Sig="a_soda_client/start_of_superburst_s,"/>
+ <TU Serialbits="0" Type="0" ID="2" Sig="a_soda_client/rx_dlm_in,"/>
+ <TU Serialbits="0" Type="0" ID="3" Sig="a_soda_client/tx_dlm_out,"/>
+ <TU Serialbits="0" Type="0" ID="4" Sig="the_sync_link/make_link_reset_i,"/>
+ <TU Serialbits="0" Type="0" ID="5" Sig="(BUS)the_sync_link/the_rx_control/rx_state[2:0],"/>
+ <TU Serialbits="0" Type="0" ID="6" Sig="the_sync_link/watchdog_trigger,"/>
+ <TE MaxSequence="1" MaxEvnCnt="1" ID="1" Resource="1"/>
+ <TE MaxSequence="2" MaxEvnCnt="1" ID="2" Resource="0"/>
+ <TE MaxSequence="2" MaxEvnCnt="1" ID="3" Resource="0"/>
+ <TE MaxSequence="2" MaxEvnCnt="1" ID="4" Resource="0"/>
+ <TE MaxSequence="2" MaxEvnCnt="1" ID="5" Resource="0"/>
+ <TE MaxSequence="2" MaxEvnCnt="1" ID="6" Resource="0"/>
+ </Trigger>
+ </Dataset>
+ </Core>
+</Project>
--- /dev/null
+<Project ModBy="Inserter" SigType="0" Name="/local/lemmens/lattice/soda/soda_hub_probe.rvl" Date="2014-01-29">
+ <IP Version="1_5_062609"/>
+ <Design DesignEntry="Schematic/VHDL" Synthesis="synplify" DeviceFamily="LatticeECP3" DesignName="soda_hub"/>
+ <Core InsertDataset="0" Insert="1" Reveal_sig="2021302512" Name="trb3_periph_sodaclient_LA0" ID="0">
+ <Setting>
+ <Clock SampleClk="the_sync_link/clk_rx_full" SampleEnable="0" EnableClk="" EnableClk_Pri="0"/>
+ <TraceBuffer Implementation="0" BitTimeStamp="0" hasTimeStamp="0" IncTrigSig="1" BufferDepth="512"/>
+ <Capture Mode="0" MinSamplesPerTrig="8"/>
+ <Event CntEnable="0" MaxEventCnt="8"/>
+ <TrigOut Polarity="0" MinPulseWidth="0" TrigOutNetType="1" EnableTrigOut="0" TrigOutNet="reveal_debug_soda_client_LA0_net"/>
+ </Setting>
+ <Dataset Name="Base">
+ <Trace>
+ <Sig Type="SIG" Name="rxup_dlm_i"/>
+ <Bus Name="rxup_dlm_word">
+ <Sig Type="SIG" Name="rxup_dlm_word:0"/>
+ <Sig Type="SIG" Name="rxup_dlm_word:1"/>
+ <Sig Type="SIG" Name="rxup_dlm_word:2"/>
+ <Sig Type="SIG" Name="rxup_dlm_word:3"/>
+ <Sig Type="SIG" Name="rxup_dlm_word:4"/>
+ <Sig Type="SIG" Name="rxup_dlm_word:5"/>
+ <Sig Type="SIG" Name="rxup_dlm_word:6"/>
+ <Sig Type="SIG" Name="rxup_dlm_word:7"/>
+ </Bus>
+ <Sig Type="SIG" Name="txup_dlm_i"/>
+ <Sig Type="SIG" Name="txup_dlm_preview_s"/>
+ <Bus Name="txup_dlm_word">
+ <Sig Type="SIG" Name="txup_dlm_word:0"/>
+ <Sig Type="SIG" Name="txup_dlm_word:1"/>
+ <Sig Type="SIG" Name="txup_dlm_word:2"/>
+ <Sig Type="SIG" Name="txup_dlm_word:3"/>
+ <Sig Type="SIG" Name="txup_dlm_word:4"/>
+ <Sig Type="SIG" Name="txup_dlm_word:5"/>
+ <Sig Type="SIG" Name="txup_dlm_word:6"/>
+ <Sig Type="SIG" Name="txup_dlm_word:7"/>
+ </Bus>
+ <Sig Type="SIG" Name="uplink_phase_s"/>
+ <Bus Name="rxdn_dlm_i">
+ <Sig Type="SIG" Name="rxdn_dlm_i:0"/>
+ <Sig Type="SIG" Name="rxdn_dlm_i:1"/>
+ </Bus>
+ <Bus Name="rxdn_dlm_word[1:0]">
+ <Sig Type="SIG" Name="rxdn_dlm_word:0:0"/>
+ <Sig Type="SIG" Name="rxdn_dlm_word:0:1"/>
+ <Sig Type="SIG" Name="rxdn_dlm_word:0:2"/>
+ <Sig Type="SIG" Name="rxdn_dlm_word:0:3"/>
+ <Sig Type="SIG" Name="rxdn_dlm_word:0:4"/>
+ <Sig Type="SIG" Name="rxdn_dlm_word:0:5"/>
+ <Sig Type="SIG" Name="rxdn_dlm_word:0:6"/>
+ <Sig Type="SIG" Name="rxdn_dlm_word:0:7"/>
+ <Sig Type="SIG" Name="rxdn_dlm_word:1:0"/>
+ <Sig Type="SIG" Name="rxdn_dlm_word:1:1"/>
+ <Sig Type="SIG" Name="rxdn_dlm_word:1:2"/>
+ <Sig Type="SIG" Name="rxdn_dlm_word:1:3"/>
+ <Sig Type="SIG" Name="rxdn_dlm_word:1:4"/>
+ <Sig Type="SIG" Name="rxdn_dlm_word:1:5"/>
+ <Sig Type="SIG" Name="rxdn_dlm_word:1:6"/>
+ <Sig Type="SIG" Name="rxdn_dlm_word:1:7"/>
+ </Bus>
+ <Bus Name="txdn_dlm_i">
+ <Sig Type="SIG" Name="txdn_dlm_i:0"/>
+ <Sig Type="SIG" Name="txdn_dlm_i:1"/>
+ </Bus>
+ <Bus Name="txdn_dlm_preview_s">
+ <Sig Type="SIG" Name="txdn_dlm_preview_s:0"/>
+ <Sig Type="SIG" Name="txdn_dlm_preview_s:1"/>
+ </Bus>
+ <Bus Name="txdn_dlm_word[1:0]">
+ <Sig Type="SIG" Name="txdn_dlm_word:0:0"/>
+ <Sig Type="SIG" Name="txdn_dlm_word:0:1"/>
+ <Sig Type="SIG" Name="txdn_dlm_word:0:2"/>
+ <Sig Type="SIG" Name="txdn_dlm_word:0:3"/>
+ <Sig Type="SIG" Name="txdn_dlm_word:0:4"/>
+ <Sig Type="SIG" Name="txdn_dlm_word:0:5"/>
+ <Sig Type="SIG" Name="txdn_dlm_word:0:6"/>
+ <Sig Type="SIG" Name="txdn_dlm_word:0:7"/>
+ <Sig Type="SIG" Name="txdn_dlm_word:1:0"/>
+ <Sig Type="SIG" Name="txdn_dlm_word:1:1"/>
+ <Sig Type="SIG" Name="txdn_dlm_word:1:2"/>
+ <Sig Type="SIG" Name="txdn_dlm_word:1:3"/>
+ <Sig Type="SIG" Name="txdn_dlm_word:1:4"/>
+ <Sig Type="SIG" Name="txdn_dlm_word:1:5"/>
+ <Sig Type="SIG" Name="txdn_dlm_word:1:6"/>
+ <Sig Type="SIG" Name="txdn_dlm_word:1:7"/>
+ </Bus>
+ </Trace>
+ <Trigger>
+ <TU Serialbits="0" Type="0" ID="1" Sig="a_soda_hub/start_of_superburst_s,"/>
+ <TU Serialbits="0" Type="0" ID="2" Sig="rxup_dlm_i,"/>
+ <TU Serialbits="0" Type="0" ID="3" Sig="txup_dlm_i,"/>
+ <TU Serialbits="0" Type="0" ID="4" Sig="the_sync_uplink/watchdog_trigger,"/>
+ <TU Serialbits="0" Type="0" ID="5" Sig="(BUS)rxdn_dlm_i[1:0],"/>
+ <TU Serialbits="0" Type="0" ID="6" Sig="(BUS)txdn_dlm_i[1:0],"/>
+ <TU Serialbits="0" Type="0" ID="7" Sig="a_soda_hub/start_calibration_s,"/>
+ <TE MaxSequence="2" MaxEvnCnt="1" ID="1" Resource="0"/>
+ <TE MaxSequence="2" MaxEvnCnt="1" ID="2" Resource="0"/>
+ <TE MaxSequence="2" MaxEvnCnt="1" ID="3" Resource="0"/>
+ <TE MaxSequence="2" MaxEvnCnt="1" ID="4" Resource="0"/>
+ <TE MaxSequence="2" MaxEvnCnt="1" ID="5" Resource="0"/>
+ <TE MaxSequence="2" MaxEvnCnt="1" ID="6" Resource="0"/>
+ <TE MaxSequence="2" MaxEvnCnt="1" ID="7" Resource="0"/>
+ </Trigger>
+ </Dataset>
+ </Core>
+</Project>
<?xml version="1.0" encoding="UTF-8"?>
-<BaliProject version="2.0" title="soda_source" device="LFE3-150EA-8FN672C" synthesis="synplify" default_implementation="soda_source">
+<BaliProject version="3.0" title="soda_source" device="LFE3-150EA-8FN672C" default_implementation="soda_source">
<Options>
<Option name="HDL type" value="VHDL"/>
</Options>
- <Implementation title="soda_source" dir="soda_source" description="soda_source" default_strategy="Strategy1">
+ <Implementation title="soda_source" dir="soda_source" description="soda_source" synthesis="synplify" default_strategy="Strategy1">
<Options def_top="trb3_periph_sodasource" top="trb3_periph_sodasource"/>
<Source name="source/version.vhd" type="VHDL" type_short="VHDL">
<Options/>
--- /dev/null
+<Project ModBy="Inserter" SigType="0" Name="/local/lemmens/lattice/soda/soda_source_probe.rvl" Date="2014-01-22">
+ <IP Version="1_5_062609"/>
+ <Design DesignEntry="Schematic/VHDL" Synthesis="synplify" DeviceFamily="LatticeECP3" DesignName="soda_source"/>
+ <Core InsertDataset="0" Insert="1" Reveal_sig="2020398765" Name="trb3_periph_sodasource_LA0" ID="0">
+ <Setting>
+ <Clock SampleClk="rx_clock_full" SampleEnable="0" EnableClk="" EnableClk_Pri="0"/>
+ <TraceBuffer Implementation="0" BitTimeStamp="0" hasTimeStamp="0" IncTrigSig="1" BufferDepth="512"/>
+ <Capture Mode="0" MinSamplesPerTrig="8"/>
+ <Event CntEnable="0" MaxEventCnt="8"/>
+ <TrigOut Polarity="0" MinPulseWidth="0" TrigOutNetType="1" EnableTrigOut="0" TrigOutNet="reveal_debug_soda_source_LA0_net"/>
+ </Setting>
+ <Dataset Name="Base">
+ <Trace>
+ <Sig Type="SIG" Name="the_soda_source/store_rd"/>
+ <Sig Type="SIG" Name="the_soda_source/store_rd_x"/>
+ <Sig Type="SIG" Name="the_soda_source/store_wr"/>
+ <Sig Type="SIG" Name="the_soda_source/store_wr_x"/>
+ <Bus Name="the_soda_source/calib_register_s">
+ <Sig Type="SIG" Name="the_soda_source/calib_register_s:0"/>
+ <Sig Type="SIG" Name="the_soda_source/calib_register_s:1"/>
+ <Sig Type="SIG" Name="the_soda_source/calib_register_s:2"/>
+ <Sig Type="SIG" Name="the_soda_source/calib_register_s:3"/>
+ <Sig Type="SIG" Name="the_soda_source/calib_register_s:4"/>
+ <Sig Type="SIG" Name="the_soda_source/calib_register_s:5"/>
+ <Sig Type="SIG" Name="the_soda_source/calib_register_s:6"/>
+ <Sig Type="SIG" Name="the_soda_source/calib_register_s:7"/>
+ <Sig Type="SIG" Name="the_soda_source/calib_register_s:8"/>
+ <Sig Type="SIG" Name="the_soda_source/calib_register_s:9"/>
+ <Sig Type="SIG" Name="the_soda_source/calib_register_s:10"/>
+ <Sig Type="SIG" Name="the_soda_source/calib_register_s:11"/>
+ <Sig Type="SIG" Name="the_soda_source/calib_register_s:12"/>
+ <Sig Type="SIG" Name="the_soda_source/calib_register_s:13"/>
+ <Sig Type="SIG" Name="the_soda_source/calib_register_s:14"/>
+ <Sig Type="SIG" Name="the_soda_source/calib_register_s:15"/>
+ <Sig Type="SIG" Name="the_soda_source/calib_register_s:16"/>
+ <Sig Type="SIG" Name="the_soda_source/calib_register_s:17"/>
+ <Sig Type="SIG" Name="the_soda_source/calib_register_s:18"/>
+ <Sig Type="SIG" Name="the_soda_source/calib_register_s:19"/>
+ <Sig Type="SIG" Name="the_soda_source/calib_register_s:20"/>
+ <Sig Type="SIG" Name="the_soda_source/calib_register_s:21"/>
+ <Sig Type="SIG" Name="the_soda_source/calib_register_s:22"/>
+ <Sig Type="SIG" Name="the_soda_source/calib_register_s:23"/>
+ <Sig Type="SIG" Name="the_soda_source/calib_register_s:24"/>
+ <Sig Type="SIG" Name="the_soda_source/calib_register_s:25"/>
+ <Sig Type="SIG" Name="the_soda_source/calib_register_s:26"/>
+ <Sig Type="SIG" Name="the_soda_source/calib_register_s:27"/>
+ <Sig Type="SIG" Name="the_soda_source/calib_register_s:28"/>
+ <Sig Type="SIG" Name="the_soda_source/calib_register_s:29"/>
+ <Sig Type="SIG" Name="the_soda_source/calib_register_s:30"/>
+ <Sig Type="SIG" Name="the_soda_source/calib_register_s:31"/>
+ </Bus>
+ <Bus Name="the_soda_source/calibration_time_s">
+ <Sig Type="SIG" Name="the_soda_source/calibration_time_s:0"/>
+ <Sig Type="SIG" Name="the_soda_source/calibration_time_s:1"/>
+ <Sig Type="SIG" Name="the_soda_source/calibration_time_s:2"/>
+ <Sig Type="SIG" Name="the_soda_source/calibration_time_s:3"/>
+ <Sig Type="SIG" Name="the_soda_source/calibration_time_s:4"/>
+ <Sig Type="SIG" Name="the_soda_source/calibration_time_s:5"/>
+ <Sig Type="SIG" Name="the_soda_source/calibration_time_s:6"/>
+ <Sig Type="SIG" Name="the_soda_source/calibration_time_s:7"/>
+ <Sig Type="SIG" Name="the_soda_source/calibration_time_s:8"/>
+ <Sig Type="SIG" Name="the_soda_source/calibration_time_s:9"/>
+ <Sig Type="SIG" Name="the_soda_source/calibration_time_s:10"/>
+ <Sig Type="SIG" Name="the_soda_source/calibration_time_s:11"/>
+ <Sig Type="SIG" Name="the_soda_source/calibration_time_s:12"/>
+ <Sig Type="SIG" Name="the_soda_source/calibration_time_s:13"/>
+ <Sig Type="SIG" Name="the_soda_source/calibration_time_s:14"/>
+ <Sig Type="SIG" Name="the_soda_source/calibration_time_s:15"/>
+ </Bus>
+ <Sig Type="SIG" Name="the_soda_source/calibration_valid_s"/>
+ <Bus Name="the_soda_source/current_state">
+ <Sig Type="SIG" Name="the_soda_source/current_state:0"/>
+ <Sig Type="SIG" Name="the_soda_source/current_state:1"/>
+ <Sig Type="SIG" Name="the_soda_source/current_state:2"/>
+ </Bus>
+ <Sig Type="SIG" Name="the_sync_link/watchdog_trigger"/>
+ <Bus Name="the_sync_link/watchdog_timer">
+ <Sig Type="SIG" Name="the_sync_link/watchdog_timer:0"/>
+ <Sig Type="SIG" Name="the_sync_link/watchdog_timer:1"/>
+ <Sig Type="SIG" Name="the_sync_link/watchdog_timer:2"/>
+ <Sig Type="SIG" Name="the_sync_link/watchdog_timer:3"/>
+ <Sig Type="SIG" Name="the_sync_link/watchdog_timer:4"/>
+ <Sig Type="SIG" Name="the_sync_link/watchdog_timer:5"/>
+ <Sig Type="SIG" Name="the_sync_link/watchdog_timer:6"/>
+ <Sig Type="SIG" Name="the_sync_link/watchdog_timer:7"/>
+ <Sig Type="SIG" Name="the_sync_link/watchdog_timer:8"/>
+ <Sig Type="SIG" Name="the_sync_link/watchdog_timer:9"/>
+ <Sig Type="SIG" Name="the_sync_link/watchdog_timer:10"/>
+ <Sig Type="SIG" Name="the_sync_link/watchdog_timer:11"/>
+ <Sig Type="SIG" Name="the_sync_link/watchdog_timer:12"/>
+ <Sig Type="SIG" Name="the_sync_link/watchdog_timer:13"/>
+ <Sig Type="SIG" Name="the_sync_link/watchdog_timer:14"/>
+ <Sig Type="SIG" Name="the_sync_link/watchdog_timer:15"/>
+ <Sig Type="SIG" Name="the_sync_link/watchdog_timer:16"/>
+ <Sig Type="SIG" Name="the_sync_link/watchdog_timer:17"/>
+ <Sig Type="SIG" Name="the_sync_link/watchdog_timer:18"/>
+ <Sig Type="SIG" Name="the_sync_link/watchdog_timer:19"/>
+ <Sig Type="SIG" Name="the_sync_link/watchdog_timer:20"/>
+ </Bus>
+ <Sig Type="SIG" Name="the_sync_link/the_rx_fsm/rst_n"/>
+ <Sig Type="SIG" Name="the_sync_link/the_rx_fsm/rx_cdr_lol_ch_s"/>
+ <Sig Type="SIG" Name="the_sync_link/the_rx_fsm/rx_los_low_ch_s"/>
+ <Sig Type="SIG" Name="the_sync_link/the_rx_fsm/rx_pcs_rst_ch_c"/>
+ <Sig Type="SIG" Name="the_sync_link/the_rx_fsm/tx_pll_lol_qd_s"/>
+ <Sig Type="SIG" Name="the_sync_link/the_rx_fsm/rx_serdes_rst_ch_c"/>
+ <Bus Name="the_sync_link/the_rx_fsm/state_out">
+ <Sig Type="SIG" Name="the_sync_link/the_rx_fsm/state_out:0"/>
+ <Sig Type="SIG" Name="the_sync_link/the_rx_fsm/state_out:1"/>
+ <Sig Type="SIG" Name="the_sync_link/the_rx_fsm/state_out:2"/>
+ <Sig Type="SIG" Name="the_sync_link/the_rx_fsm/state_out:3"/>
+ </Bus>
+ <Bus Name="the_sync_link/the_rx_fsm/wa_position">
+ <Sig Type="SIG" Name="the_sync_link/the_rx_fsm/wa_position:0"/>
+ <Sig Type="SIG" Name="the_sync_link/the_rx_fsm/wa_position:1"/>
+ <Sig Type="SIG" Name="the_sync_link/the_rx_fsm/wa_position:2"/>
+ <Sig Type="SIG" Name="the_sync_link/the_rx_fsm/wa_position:3"/>
+ </Bus>
+ <Bus Name="the_sync_link/rx_fsm_state">
+ <Sig Type="SIG" Name="the_sync_link/rx_fsm_state:0"/>
+ <Sig Type="SIG" Name="the_sync_link/rx_fsm_state:1"/>
+ <Sig Type="SIG" Name="the_sync_link/rx_fsm_state:2"/>
+ <Sig Type="SIG" Name="the_sync_link/rx_fsm_state:3"/>
+ </Bus>
+ <Sig Type="SIG" Name="the_sync_link/rx_k"/>
+ <Sig Type="SIG" Name="the_sync_link/rx_los_low"/>
+ <Sig Type="SIG" Name="the_sync_link/rx_pcs_rst"/>
+ <Sig Type="SIG" Name="the_sync_link/rx_serdes_rst"/>
+ <Sig Type="SIG" Name="the_sync_link/rx_error"/>
+ <Sig Type="SIG" Name="the_sync_link/tx_k"/>
+ <Sig Type="SIG" Name="the_sync_link/tx_pcs_rst"/>
+ <Sig Type="SIG" Name="the_sync_link/tx_pll_lol"/>
+ <Sig Type="SIG" Name="the_sync_link/tx_serdes_rst"/>
+ <Bus Name="the_sync_link/wa_position">
+ <Sig Type="SIG" Name="the_sync_link/wa_position:0"/>
+ <Sig Type="SIG" Name="the_sync_link/wa_position:1"/>
+ <Sig Type="SIG" Name="the_sync_link/wa_position:2"/>
+ <Sig Type="SIG" Name="the_sync_link/wa_position:3"/>
+ <Sig Type="SIG" Name="the_sync_link/wa_position:4"/>
+ <Sig Type="SIG" Name="the_sync_link/wa_position:5"/>
+ <Sig Type="SIG" Name="the_sync_link/wa_position:6"/>
+ <Sig Type="SIG" Name="the_sync_link/wa_position:7"/>
+ <Sig Type="SIG" Name="the_sync_link/wa_position:8"/>
+ <Sig Type="SIG" Name="the_sync_link/wa_position:9"/>
+ <Sig Type="SIG" Name="the_sync_link/wa_position:10"/>
+ <Sig Type="SIG" Name="the_sync_link/wa_position:11"/>
+ <Sig Type="SIG" Name="the_sync_link/wa_position:12"/>
+ <Sig Type="SIG" Name="the_sync_link/wa_position:13"/>
+ <Sig Type="SIG" Name="the_sync_link/wa_position:14"/>
+ <Sig Type="SIG" Name="the_sync_link/wa_position:15"/>
+ </Bus>
+ </Trace>
+ <Trigger>
+ <TU Serialbits="0" Type="0" ID="1" Sig="the_soda_source/store_rd,"/>
+ <TU Serialbits="0" Type="0" ID="2" Sig="the_soda_source/store_wr,"/>
+ <TU Serialbits="0" Type="0" ID="3" Sig="the_soda_source/start_calibration_s,"/>
+ <TU Serialbits="0" Type="0" ID="4" Sig="the_sync_link/watchdog_trigger,"/>
+ <TE MaxSequence="2" MaxEvnCnt="1" ID="1" Resource="0"/>
+ <TE MaxSequence="2" MaxEvnCnt="1" ID="2" Resource="0"/>
+ <TE MaxSequence="2" MaxEvnCnt="1" ID="3" Resource="0"/>
+ <TE MaxSequence="2" MaxEvnCnt="1" ID="4" Resource="0"/>
+ </Trigger>
+ </Dataset>
+ </Core>
+</Project>
calibration_running_S <= '0';
CALIB_VALID_OUT <= '1';\r
CALIB_TIME_OUT <= calibration_timer_S;
- elsif (calibration_timer_S= 65535) then
+ elsif (calibration_timer_S = x"ffff") then
calibration_running_S <= '0';
CALIB_VALID_OUT <= '1';\r
CALIB_TIME_OUT <= calibration_timer_S;
type t_HUB_DLM is array(c_HUB_CHILDREN-1 downto 0) of std_logic;\r
- type t_HUB_DLM_WORD is array(c_HUB_CHILDREN-1 downto 0) of std_logic_vector(7 downto 0);
+ type t_HUB_DLM_BYTE is array(c_HUB_CHILDREN-1 downto 0) of std_logic_vector(7 downto 0);
+ type t_HUB_DLM_WORD is array(c_HUB_CHILDREN-1 downto 0) of std_logic_vector(15 downto 0);
+ type t_HUB_DLM_LWORD is array(c_HUB_CHILDREN-1 downto 0) of std_logic_vector(31 downto 0);
type t_PACKET_TYPE_SENT is (c_NO_PACKET, c_CMD_PACKET, c_BST_PACKET);
type t_PACKET_TYPE_ARRAY is array(c_HUB_CHILDREN-1 downto 0) of t_PACKET_TYPE_SENT;
type t_HUB_BIT_ARRAY is array(c_HUB_CHILDREN-1 downto 0) of std_logic;\r
type t_HUB_BYTE_ARRAY is array(c_HUB_CHILDREN-1 downto 0) of std_logic_vector(7 downto 0);
- type t_HUB_WORD_ARRAY is array(c_HUB_CHILDREN-1 downto 0) of std_logic_vector(31 downto 0);
+ type t_HUB_WORD_ARRAY is array(c_HUB_CHILDREN-1 downto 0) of std_logic_vector(15 downto 0);
+ type t_HUB_LWORD_ARRAY is array(c_HUB_CHILDREN-1 downto 0) of std_logic_vector(31 downto 0);
\r
component soda_superburst_generator
end component;\r
\r
component soda_hub
- port(
- SYSCLK : in std_logic; -- fabric clock
- SODACLK : in std_logic; -- recovered clock
- RESET : in std_logic; -- synchronous reset
- CLEAR : in std_logic; -- asynchronous reset
- CLK_EN : in std_logic;
- -- SINGLE DUBPLEX LINK TO THE TOP
- RXTOP_DLM_IN : in std_logic;
- RXTOP_DLM_WORD_IN : in std_logic_vector(7 downto 0) := (others => '0');
- TXTOP_DLM_OUT : out std_logic;
- TXTOP_DLM_WORD_OUT : out std_logic_vector(7 downto 0) := (others => '0');
- -- MULTIPLE DUPLEX LINKS TO THE BOTTOM
- RXBTM_DLM_IN : in t_HUB_DLM; -- typedef in soda_components.vhd
- RXBTM_DLM_WORD_IN : in t_HUB_DLM_WORD; -- typedef in soda_components.vhd
- TXBTM_DLM_OUT : out t_HUB_DLM; -- typedef in soda_components.vhd
- TXBTM_DLM_WORD_OUT : out t_HUB_DLM_WORD; -- typedef in soda_components.vhd
-
- SODA_DATA_IN : in std_logic_vector(31 downto 0) := (others => '0');
- SODA_DATA_OUT : out std_logic_vector(31 downto 0) := (others => '0');
- SODA_ADDR_IN : in std_logic_vector(3 downto 0) := (others => '0');
- SODA_READ_IN : in std_logic := '0';
- SODA_WRITE_IN : in std_logic := '0';
- SODA_ACK_OUT : out std_logic := '0';
- STAT : out std_logic_vector(31 downto 0) := (others => '0') -- DEBUG
- );
+ port(
+ SYSCLK : in std_logic; -- fabric clock
+ SODACLK : in std_logic; -- recovered clock
+ RESET : in std_logic; -- synchronous reset
+ CLEAR : in std_logic; -- asynchronous reset
+ CLK_EN : in std_logic;
+
+ -- SINGLE DUBPLEX UP-LINK TO THE TOP
+ RXUP_DLM_IN : in std_logic;
+ RXUP_DLM_WORD_IN : in std_logic_vector(7 downto 0) := (others => '0');
+ TXUP_DLM_OUT : out std_logic;
+ TXUP_DLM_WORD_OUT : out std_logic_vector(7 downto 0) := (others => '0');
+ TXUP_DLM_PREVIEW_OUT : out std_logic := '0'; --PL!
+ UPLINK_PHASE_IN : in std_logic := '0'; --PL!
+
+ -- MULTIPLE DUPLEX DOWN-LINKS TO THE BOTTOM
+ RXDN_DLM_IN : in t_HUB_DLM;
+ RXDN_DLM_WORD_IN : in t_HUB_DLM_BYTE;
+ TXDN_DLM_OUT : out t_HUB_DLM;
+ TXDN_DLM_WORD_OUT : out t_HUB_DLM_BYTE;
+ TXDN_DLM_PREVIEW_OUT : out t_HUB_DLM; --PL!
+ DNLINK_PHASE_IN : in t_HUB_DLM; --PL!
+
+ SODA_DATA_IN : in std_logic_vector(31 downto 0) := (others => '0');
+ SODA_DATA_OUT : out std_logic_vector(31 downto 0) := (others => '0');
+ SODA_ADDR_IN : in std_logic_vector(3 downto 0) := (others => '0');
+ SODA_READ_IN : in std_logic := '0';
+ SODA_WRITE_IN : in std_logic := '0';
+ SODA_ACK_OUT : out std_logic := '0';
+ LEDS_OUT : out std_logic_vector(3 downto 0);
+ LINK_DEBUG_IN : in std_logic_vector(31 downto 0) := (others => '0')
+ );
end component;
-\r
+
component soda_client -- box containing soda_source components
port(
SYSCLK : in std_logic; -- fabric clock
LEDS_OUT : out std_logic_vector(3 downto 0);
LINK_DEBUG_IN : in std_logic_vector(31 downto 0) := (others => '0')
);
- end component;
-
+ end component;\r
+
component soda_reply_pkt_builder\r
port(\r
SODACLK : in std_logic; -- fabric clock\r
entity soda_hub is
port(
- SYSCLK : in std_logic; -- fabric clock
- SODACLK : in std_logic; -- fabric clock
- RESET : in std_logic; -- synchronous reset
- CLEAR : in std_logic; -- asynchronous reset
- CLK_EN : in std_logic;
- -- SINGLE DUBPLEX LINK TO THE TOP
- RXTOP_DLM_IN : in std_logic;
- RXTOP_DLM_WORD_IN : in std_logic_vector(7 downto 0) := (others => '0');
- TXTOP_DLM_OUT : out std_logic;
- TXTOP_DLM_WORD_OUT : out std_logic_vector(7 downto 0) := (others => '0');
- -- MULTIPLE DUPLEX LINKS TO THE BOTTOM
- RXBTM_DLM_IN : in t_HUB_DLM; -- typedef in soda_components.vhd
- RXBTM_DLM_WORD_IN : in t_HUB_DLM_WORD; -- typedef in soda_components.vhd
- TXBTM_DLM_OUT : out t_HUB_DLM; -- typedef in soda_components.vhd
- TXBTM_DLM_WORD_OUT : out t_HUB_DLM_WORD; -- typedef in soda_components.vhd
+ SYSCLK : in std_logic; -- fabric clock
+ SODACLK : in std_logic; -- recovered clock
+ RESET : in std_logic; -- synchronous reset
+ CLEAR : in std_logic; -- asynchronous reset
+ CLK_EN : in std_logic;
- SODA_DATA_IN : in std_logic_vector(31 downto 0) := (others => '0');
- SODA_DATA_OUT : out std_logic_vector(31 downto 0) := (others => '0');
- SODA_ADDR_IN : in std_logic_vector(3 downto 0) := (others => '0');
- SODA_READ_IN : in std_logic := '0';
- SODA_WRITE_IN : in std_logic := '0';
- SODA_ACK_OUT : out std_logic := '0';
- STAT : out std_logic_vector(31 downto 0) := (others => '0') -- DEBUG
+ -- SINGLE DUBPLEX UP-LINK TO THE TOP
+ RXUP_DLM_IN : in std_logic;
+ RXUP_DLM_WORD_IN : in std_logic_vector(7 downto 0) := (others => '0');
+ TXUP_DLM_OUT : out std_logic;
+ TXUP_DLM_WORD_OUT : out std_logic_vector(7 downto 0) := (others => '0');
+ TXUP_DLM_PREVIEW_OUT : out std_logic := '0'; --PL!
+ UPLINK_PHASE_IN : in std_logic := '0'; --PL!
+\r
+ -- MULTIPLE DUPLEX DOWN-LINKS TO THE BOTTOM
+ RXDN_DLM_IN : in t_HUB_DLM;
+ RXDN_DLM_WORD_IN : in t_HUB_DLM_BYTE;
+ TXDN_DLM_OUT : out t_HUB_DLM;
+ TXDN_DLM_WORD_OUT : out t_HUB_DLM_BYTE;
+ TXDN_DLM_PREVIEW_OUT : out t_HUB_DLM; --PL!
+ DNLINK_PHASE_IN : in t_HUB_DLM; --PL!
+
+ SODA_DATA_IN : in std_logic_vector(31 downto 0) := (others => '0');
+ SODA_DATA_OUT : out std_logic_vector(31 downto 0) := (others => '0');
+ SODA_ADDR_IN : in std_logic_vector(3 downto 0) := (others => '0');
+ SODA_READ_IN : in std_logic := '0';
+ SODA_WRITE_IN : in std_logic := '0';
+ SODA_ACK_OUT : out std_logic := '0';
+ LEDS_OUT : out std_logic_vector(3 downto 0);\r
+ LINK_DEBUG_IN : in std_logic_vector(31 downto 0) := (others => '0')
);
end soda_hub;
architecture Behavioral of soda_hub is
--SODA
- signal enable_S : std_logic := '0';
signal soda_cmd_word_S : std_logic_vector(30 downto 0) := (others => '0');
signal soda_cmd_valid_S : std_logic := '0';
signal start_of_superburst_S : std_logic := '0';
signal reply_OK_S : t_HUB_BIT_ARRAY;
signal start_calibration_S : std_logic;
signal calibration_valid_S : t_HUB_BIT_ARRAY;
- signal calibration_time_S : t_HUB_BYTE_ARRAY;
-
-
+ signal calibration_time_S : t_HUB_WORD_ARRAY;
+ signal calib_register_s : t_HUB_LWORD_ARRAY;
+\r
+ signal dead_channels_S : t_HUB_BIT_ARRAY;
+ signal channel_status_S : t_HUB_BIT_ARRAY;\r
+ signal status_register : std_logic_vector(31 downto 0) := (others => '0');
+\r
-- slave bus signals
- signal bus_ack_x : std_logic;
- signal bus_ack : std_logic;
- signal store_wr_x : std_logic;
- signal store_wr : std_logic;
- signal store_rd_x : std_logic;
- signal store_rd : std_logic;
- signal buf_bus_data_out : std_logic_vector(31 downto 0);
+ signal bus_ack_x : std_logic;
+ signal bus_ack : std_logic;
+ signal store_wr_x : std_logic;
+ signal store_wr : std_logic;
+ signal store_rd_x : std_logic;
+ signal store_rd : std_logic;
+ signal buf_bus_data_out : std_logic_vector(31 downto 0) := (others => '0');
+ signal ledregister_i : std_logic_vector(31 downto 0) := (others => '0');
+ signal txup_dlm_out_S : std_logic;
+\r
+-- debug\r
+ signal debug_status_S : std_logic_vector(31 downto 0) := (others => '0');
+ signal debug_rx_cnt_S : std_logic_vector(31 downto 0) := (others => '0');
+ signal debug_tx_cnt_S : std_logic_vector(31 downto 0) := (others => '0');
+ signal debug_SOS_cnt_S : std_logic_vector(31 downto 0) := (others => '0');
+ signal debug_cmd_cnt_S : std_logic_vector(31 downto 0) := (others => '0');
- signal dead_channels_S : std_logic_vector(31 downto 0) := (others => '0');
- signal channel_status_S : std_logic_vector(31 downto 0) := (others => '0');
- signal calib_register_S : t_HUB_WORD_ARRAY;
-
- begin
+begin
hub_packet_handler : soda_packet_handler
port map(
SUPER_BURST_NR_OUT => super_burst_nr_S,
SODA_CMD_VALID_OUT => soda_cmd_valid_S,
SODA_CMD_WORD_OUT => soda_cmd_word_S,
- EXPECTED_REPLY_OUT => expected_reply_S,
- CRC_VALID_OUT => crc_valid_S,\r
- CRC_DATA_OUT => crc_data_S,
- RX_DLM_IN => RXTOP_DLM_IN,
- RX_DLM_WORD_IN => RXTOP_DLM_WORD_IN
+ RX_DLM_IN => RXUP_DLM_IN,
+ RX_DLM_WORD_IN => RXUP_DLM_WORD_IN
);
- reply_packet_builder : soda_reply_pkt_builder \r
+ hub_reply_packet_builder : soda_reply_pkt_builder \r
port map(
SODACLK => SODACLK,
RESET => RESET,
CLEAR => '0',
CLK_EN => CLK_EN,
--Internal Connection
+ LINK_PHASE_IN => UPLINK_PHASE_IN,\r
START_OF_SUPERBURST => start_of_superburst_S,
SUPER_BURST_NR_IN => super_burst_nr_S,
SODA_CMD_STROBE_IN => soda_cmd_valid_S,
SODA_CMD_WORD_IN => soda_cmd_word_S,
- TX_DLM_OUT => TXTOP_DLM_OUT,
- TX_DLM_WORD_OUT => TXTOP_DLM_WORD_OUT
+ TX_DLM_PREVIEW_OUT => TXUP_DLM_PREVIEW_OUT,
+ TX_DLM_OUT => txup_dlm_out_S, --TX_DLM_OUT,
+ TX_DLM_WORD_OUT => TXUP_DLM_WORD_OUT
);
-
+\r
channel :for i in c_HUB_CHILDREN-1 downto 0 generate
packet_builder : soda_packet_builder
port map(
SODACLK => SODACLK,
RESET => RESET,
- CLEAR => '0',
- CLK_EN => CLK_EN,
--Internal Connection
SODA_CMD_STROBE_IN => soda_cmd_valid_S,
START_OF_SUPERBURST => start_of_superburst_S,
SODA_CMD_WORD_IN => soda_cmd_word_S,
EXPECTED_REPLY_OUT => open,
TIME_CAL_OUT => start_calibration_S,
- TX_DLM_OUT => TXBTM_DLM_OUT(i),
- TX_DLM_WORD_OUT => TXBTM_DLM_WORD_OUT(i)
+ TX_DLM_OUT => TXDN_DLM_OUT(i),
+ TX_DLM_WORD_OUT => TXDN_DLM_WORD_OUT(i)
);
hub_reply_handler : soda_reply_handler
port map(
- SYSCLK => SYSCLK,
+ SODACLK => SODACLK,
RESET => RESET,
CLEAR => '0',
CLK_EN => '1',
--Internal Connection
-- LAST_PACKET => last_packet_sent_S,
EXPECTED_REPLY_IN => expected_reply_S,
- RX_DLM_IN => RXBTM_DLM_IN(i),
- RX_DLM_WORD_IN => RXBTM_DLM_WORD_IN(i),
- REPLY_VALID_OUT => reply_valid_S(i),\r
+ RX_DLM_IN => RXDN_DLM_IN(i),
+ RX_DLM_WORD_IN => RXDN_DLM_WORD_IN(i),
+ REPLY_VALID_OUT => reply_valid_S(i),
REPLY_OK_OUT => reply_OK_S(i)
);
- hub_calibration_timer : soda_calibration_timer\r
+ hub_calibration_timer : soda_calibration_timer
port map(
- SYSCLK => SYSCLK,
+ SODACLK => SODACLK,
RESET => RESET,
CLEAR => '0',
CLK_EN => '1',
--Internal Connection
- START_CALIBRATION => start_calibration_S,\r
- END_CALIBRATION => reply_valid_S(i),\r
+ START_CALIBRATION => start_calibration_S,
+ END_CALIBRATION => reply_valid_S(i),
CALIB_VALID_OUT => calibration_valid_S(i),
- CALIB_TIME_OUT => calibration_time_S(i)\r
+ CALIB_TIME_OUT => calibration_time_S(i)
);
hub_store_calib_proc : process(SYSCLK)
if( RESET = '1' ) then
calib_register_S(i) <= (others => '0');
else
- calib_register_S(i)(7 downto 0) <= calibration_time_S(i);
+ calib_register_S(i)(15 downto 0) <= calibration_time_S(i);
end if;
end if;
end process;
else
channel_status_S(i) <= '0';
end if;
- end if;
+ end if;\r
+
end process;
end generate;
-----------------------------------------------------------
-- Reset the unused bits of channel_status_S --
-----------------------------------------------------------
- other_bits :for j in 31 downto c_HUB_CHILDREN generate
- init_unused_bits_proc : process(SYSCLK)
- begin
- if rising_edge(SYSCLK) then
- if( RESET = '1' ) then
- channel_status_S(j) <= '0'; -- reset status bits
- end if;
- end if;
- end process;
- end generate;
+-- other_bits :for j in 31 downto c_HUB_CHILDREN generate
+-- init_unused_bits_proc : process(SYSCLK)
+-- begin
+-- if rising_edge(SYSCLK) then
+-- if( RESET = '1' ) then
+-- channel_status_S(j) <= '0'; -- reset status bits
+-- end if;
+-- end if;
+-- end process;
+-- end generate;
-----------------------------------------------------------
-- Transmission history for reply-checking --
if( rising_edge(SYSCLK) ) then
if( RESET = '1' ) then
CURRENT_STATE <= SLEEP;
- bus_ack <= '0';
- store_wr<= '0';
- store_rd<= '0';
+ bus_ack <= '0';
+ store_wr <= '0';
+ store_rd <= '0';
else
CURRENT_STATE <= NEXT_STATE;
- bus_ack <= bus_ack_x;
- store_wr<= store_wr_x;
- store_rd<= store_rd_x;
+ bus_ack <= bus_ack_x;
+ store_wr <= store_wr_x;
+ store_rd <= store_rd_x;
end if;
end if;
end process STATE_MEM;
TRANSFORM: process(CURRENT_STATE, SODA_READ_IN, SODA_WRITE_IN )
begin
NEXT_STATE <= SLEEP;
- bus_ack_x<= '0';
+ bus_ack_x <= '0';
store_wr_x <= '0';
store_rd_x <= '0';
case CURRENT_STATE is
---------------------------------------------------------
-- data handling --
---------------------------------------------------------
--- For sim purposes the HUB gets addresses 01XX
+-- For sim purposes the CLIENT gets addresses 11XX
-- register write
THE_WRITE_REG_PROC: process( SYSCLK )
begin
if( rising_edge(SYSCLK) ) then
if ( RESET = '1' ) then
- -- do NOT reset dead_channels; This is a task for slow-control ONLY
- elsif( (store_wr = '1') and (SODA_ADDR_IN = "0100") ) then -- \r
- dead_channels_S <= SODA_DATA_IN(31 downto 0);
+ LEDregister_i <= (others => '0');
+ elsif( (store_wr = '1') and (SODA_ADDR_IN = B"0000") ) then
+ LEDregister_i <= SODA_DATA_IN;
end if;
end if;
end process THE_WRITE_REG_PROC;
if( rising_edge(SYSCLK) ) then
if ( RESET = '1' ) then
buf_bus_data_out <= (others => '0');
- elsif( (store_rd = '1') and (SODA_ADDR_IN = B"0100") ) then
+ elsif( (store_rd = '1') and (SODA_ADDR_IN = "0000") ) then
buf_bus_data_out <= '0' & soda_cmd_word_S;
- elsif( (store_rd = '1') and (SODA_ADDR_IN = B"0101") ) then
- buf_bus_data_out <= channel_status_S;
- elsif( (store_rd = '1') and (SODA_ADDR_IN = B"0110") ) then
- buf_bus_data_out <= dead_channels_S;
- elsif( (store_rd = '1') and (SODA_ADDR_IN(3 downto 2) = "10") ) then
- for j in 0 to c_HUB_CHILDREN-1 loop
- if (j=conv_integer(SODA_ADDR_IN(1 downto 0))) then
- buf_bus_data_out <= calib_register_S(j);
- end if;
- end loop;
+ elsif( (store_rd = '1') and (SODA_ADDR_IN = "0001") ) then
+ buf_bus_data_out <= '0' & super_burst_nr_S;
+ elsif( (store_rd = '1') and (SODA_ADDR_IN = "0010") ) then
+ buf_bus_data_out <= LEDregister_i;
+ elsif( (store_rd = '1') and (SODA_ADDR_IN = "0011") ) then
+ buf_bus_data_out <= debug_status_S;
+ elsif( (store_rd = '1') and (SODA_ADDR_IN = "0100") ) then
+ buf_bus_data_out <= debug_rx_cnt_S;
+ elsif( (store_rd = '1') and (SODA_ADDR_IN = "0101") ) then
+ buf_bus_data_out <= debug_tx_cnt_S;
+ elsif( (store_rd = '1') and (SODA_ADDR_IN = "0110") ) then
+ buf_bus_data_out <= debug_sos_cnt_S;
+ elsif( (store_rd = '1') and (SODA_ADDR_IN = "0111") ) then
+ buf_bus_data_out <= debug_cmd_cnt_S;
end if;
end if;
end process THE_READ_REG_PROC;
-
+\r
+-- debug signals\r
+ DEBUG_HUB : process(SODACLK)\r
+ begin\r
+ if( rising_edge(SODACLK) ) then\r
+ debug_status_S(0) <= RESET;
+ debug_status_S(1) <= CLEAR;
+ debug_status_S(2) <= CLK_EN;
+ if ( RESET = '1' ) then\r
+ debug_rx_cnt_S <= (others => '0');
+ debug_tx_cnt_S <= (others => '0');
+ else
+ if (txup_dlm_out_S = '1') then
+ debug_tx_cnt_S <= debug_tx_cnt_S + 1;
+ end if;
+ if (RXUP_DLM_IN = '1') then
+ debug_rx_cnt_S <= debug_rx_cnt_S + 1;
+ end if;
+ if (start_of_superburst_S = '1') then
+ debug_sos_cnt_S <= debug_sos_cnt_S + 1;
+ end if;
+ if (soda_cmd_valid_S = '1') then
+ debug_cmd_cnt_S <= debug_cmd_cnt_S + 1;
+ end if;
+ end if;
+ end if; \r
+ end process;\r
+\r
+ debug_status_S(31 downto 3) <= LINK_DEBUG_IN(31 downto 3);\r
+ TXUP_DLM_OUT <= txup_dlm_out_S;
-- output signals
- SODA_DATA_OUT <= buf_bus_data_out;
- SODA_ACK_OUT <= bus_ack;
+ LEDS_OUT <= LEDregister_i(3 downto 0);
+
+ SODA_DATA_OUT <= buf_bus_data_out;
+ SODA_ACK_OUT <= bus_ack;
end architecture;
\ No newline at end of file