Add upstream ip check
This commit is contained in:
7
.gitignore
vendored
7
.gitignore
vendored
@@ -1,2 +1,9 @@
|
|||||||
# Draw.io
|
# Draw.io
|
||||||
*.bkp
|
*.bkp
|
||||||
|
|
||||||
|
# Python
|
||||||
|
*.pyc
|
||||||
|
__pycache__/
|
||||||
|
|
||||||
|
# Simulations
|
||||||
|
sim_build/
|
||||||
11
init_env.sh
Normal file
11
init_env.sh
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
PYTHON=python3
|
||||||
|
|
||||||
|
module load verilator
|
||||||
|
# module load vivado/2024.2
|
||||||
|
|
||||||
|
$PYTHON -m venv .venv/${HOSTNAME}
|
||||||
|
source .venv/${HOSTNAME}/bin/activate
|
||||||
|
|
||||||
|
pip install -r requirements.txt
|
||||||
|
|
||||||
|
export TOP_DIR=$(git rev-parse --show-toplevel)
|
||||||
11
requirements.txt
Normal file
11
requirements.txt
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
scapy
|
||||||
|
cocotb
|
||||||
|
cocotbext-axi
|
||||||
|
cocotbext-eth
|
||||||
|
cocotbext-pcie
|
||||||
|
rtl-manifest
|
||||||
|
build_fpga
|
||||||
|
fpga-sim
|
||||||
|
peakrdl
|
||||||
|
peakrdl-python-regmap
|
||||||
|
git+https://git.byronlathi.com/bslathi19/PeakRDL-BusDecoder.git@taxi_apb
|
||||||
@@ -0,0 +1,2 @@
|
|||||||
|
yaml:
|
||||||
|
- ../src/sub/upstream_path/sim/upstream_path.yaml
|
||||||
3
sim/verilator.vlt
Normal file
3
sim/verilator.vlt
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
`verilator_config
|
||||||
|
|
||||||
|
lint_off -rule TIMESCALEMOD
|
||||||
Submodule src/common/taxi updated: 8328f50673...62da198a76
342
src/common/taxi_sources.list
Normal file
342
src/common/taxi_sources.list
Normal file
@@ -0,0 +1,342 @@
|
|||||||
|
taxi/src/cndm_proto/tb/cndm_proto_pcie_us/test_cndm_proto_pcie_us.sv
|
||||||
|
taxi/src/cndm_proto/rtl/cndm_proto_desc_rd.sv
|
||||||
|
taxi/src/cndm_proto/rtl/cndm_proto_tx.sv
|
||||||
|
taxi/src/cndm_proto/rtl/cndm_proto_core.sv
|
||||||
|
taxi/src/cndm_proto/rtl/cndm_proto_rx.sv
|
||||||
|
taxi/src/cndm_proto/rtl/cndm_proto_pcie_us.sv
|
||||||
|
taxi/src/cndm_proto/rtl/cndm_proto_port.sv
|
||||||
|
taxi/src/cndm_proto/rtl/cndm_proto_cpl_wr.sv
|
||||||
|
taxi/src/axi/tb/taxi_axi_adapter/test_taxi_axi_adapter.sv
|
||||||
|
taxi/src/axi/tb/taxi_axi_axil_adapter/test_taxi_axi_axil_adapter.sv
|
||||||
|
taxi/src/axi/tb/taxi_axil_dp_ram/test_taxi_axil_dp_ram.sv
|
||||||
|
taxi/src/axi/tb/taxi_axil_crossbar/test_taxi_axil_crossbar.sv
|
||||||
|
taxi/src/axi/tb/taxi_axi_interconnect/test_taxi_axi_interconnect.sv
|
||||||
|
taxi/src/axi/tb/taxi_axil_interconnect/test_taxi_axil_interconnect.sv
|
||||||
|
taxi/src/axi/tb/taxi_axi_ram/test_taxi_axi_ram.sv
|
||||||
|
taxi/src/axi/tb/taxi_axil_adapter/test_taxi_axil_adapter.sv
|
||||||
|
taxi/src/axi/tb/taxi_axi_fifo/test_taxi_axi_fifo.sv
|
||||||
|
taxi/src/axi/tb/taxi_axil_interconnect_1s/test_taxi_axil_interconnect_1s.sv
|
||||||
|
taxi/src/axi/tb/taxi_axil_ram/test_taxi_axil_ram.sv
|
||||||
|
taxi/src/axi/tb/taxi_axi_crossbar_1s/test_taxi_axi_crossbar_1s.sv
|
||||||
|
taxi/src/axi/tb/taxi_axi_interconnect_1s/test_taxi_axi_interconnect_1s.sv
|
||||||
|
taxi/src/axi/tb/taxi_axi_crossbar/test_taxi_axi_crossbar.sv
|
||||||
|
taxi/src/axi/tb/taxi_axi_register/test_taxi_axi_register.sv
|
||||||
|
taxi/src/axi/tb/taxi_axil_register/test_taxi_axil_register.sv
|
||||||
|
taxi/src/axi/tb/taxi_axil_apb_adapter/test_taxi_axil_apb_adapter.sv
|
||||||
|
taxi/src/axi/tb/taxi_axil_crossbar_1s/test_taxi_axil_crossbar_1s.sv
|
||||||
|
taxi/src/axi/tb/taxi_axil_axi_adapter/test_taxi_axil_axi_adapter.sv
|
||||||
|
taxi/src/axi/rtl/taxi_axil_axi_adapter_wr.sv
|
||||||
|
taxi/src/axi/rtl/taxi_axil_crossbar_1s_wr.sv
|
||||||
|
taxi/src/axi/rtl/taxi_axi_crossbar_wr.sv
|
||||||
|
taxi/src/axi/rtl/taxi_axil_crossbar_wr.sv
|
||||||
|
taxi/src/axi/rtl/taxi_axi_interconnect_rd.sv
|
||||||
|
taxi/src/axi/rtl/taxi_axil_ram.sv
|
||||||
|
taxi/src/axi/rtl/taxi_axi_axil_adapter_rd.sv
|
||||||
|
taxi/src/axi/rtl/taxi_axil_dp_ram.sv
|
||||||
|
taxi/src/axi/rtl/taxi_axi_adapter_rd.sv
|
||||||
|
taxi/src/axi/rtl/taxi_axi_axil_adapter.sv
|
||||||
|
taxi/src/axi/rtl/taxi_axil_register_wr.sv
|
||||||
|
taxi/src/axi/rtl/taxi_axi_tie_wr.sv
|
||||||
|
taxi/src/axi/rtl/taxi_axil_adapter_rd.sv
|
||||||
|
taxi/src/axi/rtl/taxi_axil_interconnect_1s_rd.sv
|
||||||
|
taxi/src/axi/rtl/taxi_axil_tie.sv
|
||||||
|
taxi/src/axi/rtl/taxi_axil_crossbar_rd.sv
|
||||||
|
taxi/src/axi/rtl/taxi_axil_adapter_wr.sv
|
||||||
|
taxi/src/axi/rtl/taxi_axil_if.sv
|
||||||
|
taxi/src/axi/rtl/taxi_axi_tie.sv
|
||||||
|
taxi/src/axi/rtl/taxi_axil_tie_rd.sv
|
||||||
|
taxi/src/axi/rtl/taxi_axi_interconnect_wr.sv
|
||||||
|
taxi/src/axi/rtl/taxi_axil_interconnect_wr.sv
|
||||||
|
taxi/src/axi/rtl/taxi_axil_apb_adapter.sv
|
||||||
|
taxi/src/axi/rtl/taxi_axi_interconnect_1s.sv
|
||||||
|
taxi/src/axi/rtl/taxi_axil_interconnect_rd.sv
|
||||||
|
taxi/src/axi/rtl/taxi_axi_crossbar_1s.sv
|
||||||
|
taxi/src/axi/rtl/taxi_axi_crossbar_1s_rd.sv
|
||||||
|
taxi/src/axi/rtl/taxi_axi_fifo_wr.sv
|
||||||
|
taxi/src/axi/rtl/taxi_axil_interconnect.sv
|
||||||
|
taxi/src/axi/rtl/taxi_axil_crossbar_addr.sv
|
||||||
|
taxi/src/axi/rtl/taxi_axil_tie_wr.sv
|
||||||
|
taxi/src/axi/rtl/taxi_axi_register_rd.sv
|
||||||
|
taxi/src/axi/rtl/taxi_axi_interconnect.sv
|
||||||
|
taxi/src/axi/rtl/taxi_axi_adapter_wr.sv
|
||||||
|
taxi/src/axi/rtl/taxi_axi_crossbar_addr.sv
|
||||||
|
taxi/src/axi/rtl/taxi_axil_axi_adapter.sv
|
||||||
|
taxi/src/axi/rtl/taxi_axil_register_rd.sv
|
||||||
|
taxi/src/axi/rtl/taxi_axi_ram.sv
|
||||||
|
taxi/src/axi/rtl/taxi_axil_crossbar.sv
|
||||||
|
taxi/src/axi/rtl/taxi_axi_crossbar_rd.sv
|
||||||
|
taxi/src/axi/rtl/taxi_axil_crossbar_1s_rd.sv
|
||||||
|
taxi/src/axi/rtl/taxi_axi_tie_rd.sv
|
||||||
|
taxi/src/axi/rtl/taxi_axil_register.sv
|
||||||
|
taxi/src/axi/rtl/taxi_axi_interconnect_1s_rd.sv
|
||||||
|
taxi/src/axi/rtl/taxi_axi_axil_adapter_wr.sv
|
||||||
|
taxi/src/axi/rtl/taxi_axi_crossbar_1s_wr.sv
|
||||||
|
taxi/src/axi/rtl/taxi_axi_crossbar.sv
|
||||||
|
taxi/src/axi/rtl/taxi_axi_interconnect_1s_wr.sv
|
||||||
|
taxi/src/axi/rtl/taxi_axil_interconnect_1s.sv
|
||||||
|
taxi/src/axi/rtl/taxi_axi_if.sv
|
||||||
|
taxi/src/axi/rtl/taxi_axi_fifo.sv
|
||||||
|
taxi/src/axi/rtl/taxi_axil_adapter.sv
|
||||||
|
taxi/src/axi/rtl/taxi_axi_adapter.sv
|
||||||
|
taxi/src/axi/rtl/taxi_axil_interconnect_1s_wr.sv
|
||||||
|
taxi/src/axi/rtl/taxi_axi_register_wr.sv
|
||||||
|
taxi/src/axi/rtl/taxi_axi_register.sv
|
||||||
|
taxi/src/axi/rtl/taxi_axil_axi_adapter_rd.sv
|
||||||
|
taxi/src/axi/rtl/taxi_axi_fifo_rd.sv
|
||||||
|
taxi/src/axi/rtl/taxi_axil_crossbar_1s.sv
|
||||||
|
taxi/src/sync/rtl/taxi_sync_reset.sv
|
||||||
|
taxi/src/sync/rtl/taxi_sync_signal.sv
|
||||||
|
taxi/src/lfsr/rtl/taxi_lfsr_crc.sv
|
||||||
|
taxi/src/lfsr/rtl/taxi_lfsr_prbs_gen.sv
|
||||||
|
taxi/src/lfsr/rtl/taxi_lfsr_scramble.sv
|
||||||
|
taxi/src/lfsr/rtl/taxi_lfsr.sv
|
||||||
|
taxi/src/lfsr/rtl/taxi_lfsr_prbs_check.sv
|
||||||
|
taxi/src/lfsr/rtl/taxi_lfsr_descramble.sv
|
||||||
|
taxi/src/axis/tb/taxi_axis_register/test_taxi_axis_register.sv
|
||||||
|
taxi/src/axis/tb/taxi_axis_pipeline_register/test_taxi_axis_pipeline_register.sv
|
||||||
|
taxi/src/axis/tb/taxi_axis_fifo/test_taxi_axis_fifo.sv
|
||||||
|
taxi/src/axis/tb/taxi_axis_async_fifo_adapter/test_taxi_axis_async_fifo_adapter.sv
|
||||||
|
taxi/src/axis/tb/taxi_axis_cobs_decode/test_taxi_axis_cobs_decode.sv
|
||||||
|
taxi/src/axis/tb/taxi_axis_adapter/test_taxi_axis_adapter.sv
|
||||||
|
taxi/src/axis/tb/taxi_axis_mux/test_taxi_axis_mux.sv
|
||||||
|
taxi/src/axis/tb/taxi_axis_concat/test_taxi_axis_concat.sv
|
||||||
|
taxi/src/axis/tb/taxi_axis_fifo_adapter/test_taxi_axis_fifo_adapter.sv
|
||||||
|
taxi/src/axis/tb/taxi_axis_demux/test_taxi_axis_demux.sv
|
||||||
|
taxi/src/axis/tb/taxi_axis_pipeline_fifo/test_taxi_axis_pipeline_fifo.sv
|
||||||
|
taxi/src/axis/tb/taxi_axis_switch/test_taxi_axis_switch.sv
|
||||||
|
taxi/src/axis/tb/taxi_axis_cobs_encode/test_taxi_axis_cobs_encode.sv
|
||||||
|
taxi/src/axis/tb/taxi_axis_async_fifo/test_taxi_axis_async_fifo.sv
|
||||||
|
taxi/src/axis/tb/taxi_axis_broadcast/test_taxi_axis_broadcast.sv
|
||||||
|
taxi/src/axis/tb/taxi_axis_arb_mux/test_taxi_axis_arb_mux.sv
|
||||||
|
taxi/src/axis/rtl/taxi_axis_switch.sv
|
||||||
|
taxi/src/axis/rtl/taxi_axis_async_fifo.sv
|
||||||
|
taxi/src/axis/rtl/taxi_axis_broadcast.sv
|
||||||
|
taxi/src/axis/rtl/taxi_axis_demux.sv
|
||||||
|
taxi/src/axis/rtl/taxi_axis_async_fifo_adapter.sv
|
||||||
|
taxi/src/axis/rtl/taxi_axis_cobs_encode.sv
|
||||||
|
taxi/src/axis/rtl/taxi_axis_tie.sv
|
||||||
|
taxi/src/axis/rtl/taxi_axis_pipeline_fifo.sv
|
||||||
|
taxi/src/axis/rtl/taxi_axis_arb_mux.sv
|
||||||
|
taxi/src/axis/rtl/taxi_axis_cobs_decode.sv
|
||||||
|
taxi/src/axis/rtl/taxi_axis_pipeline_register.sv
|
||||||
|
taxi/src/axis/rtl/taxi_axis_fifo_adapter.sv
|
||||||
|
taxi/src/axis/rtl/taxi_axis_mux.sv
|
||||||
|
taxi/src/axis/rtl/taxi_axis_concat.sv
|
||||||
|
taxi/src/axis/rtl/taxi_axis_fifo.sv
|
||||||
|
taxi/src/axis/rtl/taxi_axis_null_snk.sv
|
||||||
|
taxi/src/axis/rtl/taxi_axis_if.sv
|
||||||
|
taxi/src/axis/rtl/taxi_axis_adapter.sv
|
||||||
|
taxi/src/axis/rtl/taxi_axis_register.sv
|
||||||
|
taxi/src/axis/rtl/taxi_axis_null_src.sv
|
||||||
|
taxi/src/prim/rtl/taxi_arbiter.sv
|
||||||
|
taxi/src/prim/rtl/taxi_penc.sv
|
||||||
|
taxi/src/zircon/tb/zircon_ip_tx_deparse/test_zircon_ip_tx_deparse.sv
|
||||||
|
taxi/src/zircon/tb/zircon_ip_len_cksum/test_zircon_ip_len_cksum.sv
|
||||||
|
taxi/src/zircon/tb/zircon_ip_rx_parse/test_zircon_ip_rx_parse.sv
|
||||||
|
taxi/src/zircon/rtl/zircon_ip_tx_deparse.sv
|
||||||
|
taxi/src/zircon/rtl/zircon_ip_tx_ingress.sv
|
||||||
|
taxi/src/zircon/rtl/zircon_ip_rx_egress.sv
|
||||||
|
taxi/src/zircon/rtl/zircon_ip_len_cksum.sv
|
||||||
|
taxi/src/zircon/rtl/zircon_ip_tx_buffer.sv
|
||||||
|
taxi/src/zircon/rtl/zircon_ip_rx_ingress.sv
|
||||||
|
taxi/src/zircon/rtl/zircon_ip_rx_parse.sv
|
||||||
|
taxi/src/zircon/rtl/zircon_ip_tx_egress.sv
|
||||||
|
taxi/src/dma/tb/taxi_dma_if_pcie_us/test_taxi_dma_if_pcie_us.sv
|
||||||
|
taxi/src/dma/tb/taxi_dma_if_axi/test_taxi_dma_if_axi.sv
|
||||||
|
taxi/src/dma/tb/taxi_dma_psdpram_async/test_taxi_dma_psdpram_async.sv
|
||||||
|
taxi/src/dma/tb/taxi_dma_if_pcie_us_rd/test_taxi_dma_if_pcie_us_rd.sv
|
||||||
|
taxi/src/dma/tb/taxi_dma_if_axi_rd/test_taxi_dma_if_axi_rd.sv
|
||||||
|
taxi/src/dma/tb/taxi_axi_cdma/test_taxi_axi_cdma.sv
|
||||||
|
taxi/src/dma/tb/taxi_dma_psdpram/test_taxi_dma_psdpram.sv
|
||||||
|
taxi/src/dma/tb/taxi_dma_client_axis_source/test_taxi_dma_client_axis_source.sv
|
||||||
|
taxi/src/dma/tb/taxi_axi_dma/test_taxi_axi_dma.sv
|
||||||
|
taxi/src/dma/tb/taxi_dma_if_pcie_us_wr/test_taxi_dma_if_pcie_us_wr.sv
|
||||||
|
taxi/src/dma/tb/taxi_dma_if_axi_wr/test_taxi_dma_if_axi_wr.sv
|
||||||
|
taxi/src/dma/tb/taxi_dma_client_axis_sink/test_taxi_dma_client_axis_sink.sv
|
||||||
|
taxi/src/dma/rtl/taxi_axi_dma_rd.sv
|
||||||
|
taxi/src/dma/rtl/taxi_dma_if_pcie_us_wr.sv
|
||||||
|
taxi/src/dma/rtl/taxi_dma_ram_demux_rd.sv
|
||||||
|
taxi/src/dma/rtl/taxi_dma_desc_if.sv
|
||||||
|
taxi/src/dma/rtl/taxi_dma_if_pcie_us_rd.sv
|
||||||
|
taxi/src/dma/rtl/taxi_dma_desc_mux.sv
|
||||||
|
taxi/src/dma/rtl/taxi_dma_ram_demux_wr.sv
|
||||||
|
taxi/src/dma/rtl/taxi_axi_cdma.sv
|
||||||
|
taxi/src/dma/rtl/taxi_dma_client_axis_source.sv
|
||||||
|
taxi/src/dma/rtl/taxi_dma_psdpram_async.sv
|
||||||
|
taxi/src/dma/rtl/taxi_dma_ram_demux.sv
|
||||||
|
taxi/src/dma/rtl/taxi_axi_dma.sv
|
||||||
|
taxi/src/dma/rtl/taxi_dma_if_mux.sv
|
||||||
|
taxi/src/dma/rtl/taxi_dma_psdpram.sv
|
||||||
|
taxi/src/dma/rtl/taxi_dma_client_axis_sink.sv
|
||||||
|
taxi/src/dma/rtl/taxi_dma_if_mux_rd.sv
|
||||||
|
taxi/src/dma/rtl/taxi_dma_if_axi_wr.sv
|
||||||
|
taxi/src/dma/rtl/taxi_axi_dma_wr.sv
|
||||||
|
taxi/src/dma/rtl/taxi_dma_if_mux_wr.sv
|
||||||
|
taxi/src/dma/rtl/taxi_dma_if_pcie_us.sv
|
||||||
|
taxi/src/dma/rtl/taxi_dma_if_axi.sv
|
||||||
|
taxi/src/dma/rtl/taxi_dma_ram_if.sv
|
||||||
|
taxi/src/dma/rtl/taxi_dma_if_axi_rd.sv
|
||||||
|
taxi/src/pcie/tb/taxi_pcie_axil_master/test_taxi_pcie_axil_master.sv
|
||||||
|
taxi/src/pcie/tb/taxi_pcie_us_axil_master/test_taxi_pcie_us_axil_master.sv
|
||||||
|
taxi/src/pcie/tb/taxi_pcie_axil_master_minimal/test_taxi_pcie_axil_master_minimal.sv
|
||||||
|
taxi/src/pcie/rtl/taxi_pcie_us_axil_master.sv
|
||||||
|
taxi/src/pcie/rtl/taxi_pcie_axil_master.sv
|
||||||
|
taxi/src/pcie/rtl/taxi_pcie_tlp_if.sv
|
||||||
|
taxi/src/pcie/rtl/taxi_pcie_us_msi.sv
|
||||||
|
taxi/src/pcie/rtl/taxi_pcie_axil_master_minimal.sv
|
||||||
|
taxi/src/xfcp/tb/taxi_xfcp_if_uart/test_taxi_xfcp_if_uart.sv
|
||||||
|
taxi/src/xfcp/tb/taxi_xfcp_mod_i2c_master/test_taxi_xfcp_mod_i2c_master.sv
|
||||||
|
taxi/src/xfcp/tb/taxi_xfcp_switch/test_taxi_xfcp_switch.sv
|
||||||
|
taxi/src/xfcp/tb/taxi_xfcp_mod_axi/test_taxi_xfcp_mod_axi.sv
|
||||||
|
taxi/src/xfcp/tb/taxi_xfcp_mod_apb/test_taxi_xfcp_mod_apb.sv
|
||||||
|
taxi/src/xfcp/tb/taxi_xfcp_mod_axil/test_taxi_xfcp_mod_axil.sv
|
||||||
|
taxi/src/xfcp/rtl/taxi_xfcp_mod_axi.sv
|
||||||
|
taxi/src/xfcp/rtl/taxi_xfcp_switch.sv
|
||||||
|
taxi/src/xfcp/rtl/taxi_xfcp_if_uart.sv
|
||||||
|
taxi/src/xfcp/rtl/taxi_xfcp_mod_axil.sv
|
||||||
|
taxi/src/xfcp/rtl/taxi_xfcp_mod_apb.sv
|
||||||
|
taxi/src/xfcp/rtl/taxi_xfcp_mod_i2c_master.sv
|
||||||
|
taxi/src/xfcp/rtl/taxi_xfcp_mod_stats.sv
|
||||||
|
taxi/src/math/tb/taxi_mt19937/test_taxi_mt19937.sv
|
||||||
|
taxi/src/math/rtl/taxi_mt19937.sv
|
||||||
|
taxi/src/hip/rtl/us/taxi_gt_qpll_reset.sv
|
||||||
|
taxi/src/hip/rtl/us/taxi_gt_rx_reset.sv
|
||||||
|
taxi/src/hip/rtl/us/taxi_gt_tx_reset.sv
|
||||||
|
taxi/src/hip/rtl/us/taxi_mmcm_frac.sv
|
||||||
|
taxi/src/cndm/board/AS02MC04/fpga/tb/fpga_core/test_fpga_core.sv
|
||||||
|
taxi/src/cndm/board/AS02MC04/fpga/rtl/fpga_core.sv
|
||||||
|
taxi/src/cndm/board/AS02MC04/fpga/rtl/fpga.sv
|
||||||
|
taxi/src/cndm/tb/cndm_micro_pcie_us/test_cndm_micro_pcie_us.sv
|
||||||
|
taxi/src/cndm/rtl/cndm_micro_core.sv
|
||||||
|
taxi/src/cndm/rtl/cndm_micro_tx.sv
|
||||||
|
taxi/src/cndm/rtl/cndm_micro_pcie_us.sv
|
||||||
|
taxi/src/cndm/rtl/cndm_micro_desc_rd.sv
|
||||||
|
taxi/src/cndm/rtl/cndm_micro_cpl_wr.sv
|
||||||
|
taxi/src/cndm/rtl/cndm_micro_rx.sv
|
||||||
|
taxi/src/cndm/rtl/cndm_micro_port.sv
|
||||||
|
taxi/src/stats/tb/taxi_stats_collect/test_taxi_stats_collect.sv
|
||||||
|
taxi/src/stats/tb/taxi_stats_strings_full/test_taxi_stats_strings_full.sv
|
||||||
|
taxi/src/stats/tb/taxi_stats_counter/test_taxi_stats_counter.sv
|
||||||
|
taxi/src/stats/rtl/taxi_stats_counter.sv
|
||||||
|
taxi/src/stats/rtl/taxi_stats_collect.sv
|
||||||
|
taxi/src/stats/rtl/taxi_stats_strings_full.sv
|
||||||
|
taxi/src/io/rtl/taxi_ssio_sdr_out_diff.sv
|
||||||
|
taxi/src/io/rtl/taxi_iddr.sv
|
||||||
|
taxi/src/io/rtl/taxi_ssio_sdr_in.sv
|
||||||
|
taxi/src/io/rtl/taxi_ssio_ddr_in.sv
|
||||||
|
taxi/src/io/rtl/taxi_ssio_sdr_in_diff.sv
|
||||||
|
taxi/src/io/rtl/taxi_led_sreg.sv
|
||||||
|
taxi/src/io/rtl/taxi_ssio_ddr_out_diff.sv
|
||||||
|
taxi/src/io/rtl/taxi_debounce_switch.sv
|
||||||
|
taxi/src/io/rtl/taxi_ssio_ddr_out.sv
|
||||||
|
taxi/src/io/rtl/taxi_ssio_sdr_out.sv
|
||||||
|
taxi/src/io/rtl/taxi_ssio_ddr_in_diff.sv
|
||||||
|
taxi/src/io/rtl/taxi_oddr.sv
|
||||||
|
taxi/src/eth/tb/taxi_axis_xgmii_tx_64/test_taxi_axis_xgmii_tx_64.sv
|
||||||
|
taxi/src/eth/tb/taxi_axis_baser_tx_32/test_taxi_axis_baser_tx_32.sv
|
||||||
|
taxi/src/eth/tb/taxi_eth_mac_25g_us/test_taxi_eth_mac_25g_us.sv
|
||||||
|
taxi/src/eth/tb/taxi_mac_ctrl_tx/test_taxi_mac_ctrl_tx.sv
|
||||||
|
taxi/src/eth/tb/taxi_eth_mac_1g_gmii_fifo/test_taxi_eth_mac_1g_gmii_fifo.sv
|
||||||
|
taxi/src/eth/tb/taxi_eth_mac_1g_rgmii_fifo/test_taxi_eth_mac_1g_rgmii_fifo.sv
|
||||||
|
taxi/src/eth/tb/taxi_axis_baser_rx_32/test_taxi_axis_baser_rx_32.sv
|
||||||
|
taxi/src/eth/tb/taxi_eth_mac_mii/test_taxi_eth_mac_mii.sv
|
||||||
|
taxi/src/eth/tb/taxi_mac_ctrl_rx/test_taxi_mac_ctrl_rx.sv
|
||||||
|
taxi/src/eth/tb/taxi_eth_mac_1g_gmii/test_taxi_eth_mac_1g_gmii.sv
|
||||||
|
taxi/src/eth/tb/taxi_axis_gmii_rx/test_taxi_axis_gmii_rx.sv
|
||||||
|
taxi/src/eth/tb/taxi_eth_mac_phy_10g_fifo/test_taxi_eth_mac_phy_10g_fifo.sv
|
||||||
|
taxi/src/eth/tb/taxi_axis_xgmii_rx_32/test_taxi_axis_xgmii_rx_32.sv
|
||||||
|
taxi/src/eth/tb/taxi_eth_mac_mii_fifo/test_taxi_eth_mac_mii_fifo.sv
|
||||||
|
taxi/src/eth/tb/taxi_axis_baser_rx_64/test_taxi_axis_baser_rx_64.sv
|
||||||
|
taxi/src/eth/tb/taxi_eth_mac_1g_rgmii/test_taxi_eth_mac_1g_rgmii.sv
|
||||||
|
taxi/src/eth/tb/taxi_eth_mac_phy_10g/test_taxi_eth_mac_phy_10g.sv
|
||||||
|
taxi/src/eth/tb/taxi_axis_xgmii_rx_64/test_taxi_axis_xgmii_rx_64.sv
|
||||||
|
taxi/src/eth/tb/taxi_axis_gmii_tx/test_taxi_axis_gmii_tx.sv
|
||||||
|
taxi/src/eth/tb/taxi_eth_mac_1g_fifo/test_taxi_eth_mac_1g_fifo.sv
|
||||||
|
taxi/src/eth/tb/taxi_eth_mac_10g_fifo/test_taxi_eth_mac_10g_fifo.sv
|
||||||
|
taxi/src/eth/tb/taxi_axis_xgmii_tx_32/test_taxi_axis_xgmii_tx_32.sv
|
||||||
|
taxi/src/eth/tb/taxi_axis_baser_tx_64/test_taxi_axis_baser_tx_64.sv
|
||||||
|
taxi/src/eth/tb/taxi_eth_mac_10g/test_taxi_eth_mac_10g.sv
|
||||||
|
taxi/src/eth/tb/taxi_eth_mac_1g/test_taxi_eth_mac_1g.sv
|
||||||
|
taxi/src/eth/rtl/taxi_axis_baser_rx_64.sv
|
||||||
|
taxi/src/eth/rtl/taxi_eth_mac_1g_gmii_fifo.sv
|
||||||
|
taxi/src/eth/rtl/taxi_eth_mac_mii_fifo.sv
|
||||||
|
taxi/src/eth/rtl/taxi_eth_phy_10g_rx_frame_sync.sv
|
||||||
|
taxi/src/eth/rtl/taxi_xgmii_baser_dec.sv
|
||||||
|
taxi/src/eth/rtl/taxi_eth_phy_10g_tx.sv
|
||||||
|
taxi/src/eth/rtl/taxi_eth_phy_10g_rx_ber_mon.sv
|
||||||
|
taxi/src/eth/rtl/taxi_eth_phy_10g_rx_watchdog.sv
|
||||||
|
taxi/src/eth/rtl/taxi_axis_baser_rx_32.sv
|
||||||
|
taxi/src/eth/rtl/taxi_axis_xgmii_rx_32.sv
|
||||||
|
taxi/src/eth/rtl/taxi_eth_phy_10g_rx.sv
|
||||||
|
taxi/src/eth/rtl/us/taxi_eth_mac_25g_us.sv
|
||||||
|
taxi/src/eth/rtl/us/taxi_eth_phy_10g_us_gt_ll.sv
|
||||||
|
taxi/src/eth/rtl/us/taxi_eth_phy_25g_us_gt_ll.sv
|
||||||
|
taxi/src/eth/rtl/us/taxi_eth_phy_10g_7_gt.sv
|
||||||
|
taxi/src/eth/rtl/us/taxi_eth_phy_25g_us_gt_apb.sv
|
||||||
|
taxi/src/eth/rtl/us/taxi_eth_phy_10g_us_gt.sv
|
||||||
|
taxi/src/eth/rtl/us/taxi_eth_mac_25g_us_ch.sv
|
||||||
|
taxi/src/eth/rtl/us/taxi_eth_phy_25g_us_gt.sv
|
||||||
|
taxi/src/eth/rtl/taxi_eth_mac_1g_fifo.sv
|
||||||
|
taxi/src/eth/rtl/taxi_xgmii_baser_enc.sv
|
||||||
|
taxi/src/eth/rtl/taxi_eth_mac_10g_fifo.sv
|
||||||
|
taxi/src/eth/rtl/taxi_eth_phy_10g_rx_if.sv
|
||||||
|
taxi/src/eth/rtl/taxi_eth_mac_stats.sv
|
||||||
|
taxi/src/eth/rtl/taxi_axis_baser_tx_32.sv
|
||||||
|
taxi/src/eth/rtl/taxi_eth_mac_phy_10g_rx.sv
|
||||||
|
taxi/src/eth/rtl/taxi_mac_ctrl_rx.sv
|
||||||
|
taxi/src/eth/rtl/taxi_eth_mac_phy_10g_tx.sv
|
||||||
|
taxi/src/eth/rtl/taxi_axis_gmii_rx.sv
|
||||||
|
taxi/src/eth/rtl/taxi_eth_phy_10g.sv
|
||||||
|
taxi/src/eth/rtl/taxi_axis_xgmii_rx_64.sv
|
||||||
|
taxi/src/eth/rtl/taxi_axis_xgmii_tx_64.sv
|
||||||
|
taxi/src/eth/rtl/taxi_rgmii_phy_if.sv
|
||||||
|
taxi/src/eth/rtl/taxi_eth_phy_10g_tx_if.sv
|
||||||
|
taxi/src/eth/rtl/taxi_eth_mac_phy_10g.sv
|
||||||
|
taxi/src/eth/rtl/taxi_axis_xgmii_tx_32.sv
|
||||||
|
taxi/src/eth/rtl/taxi_mac_pause_ctrl_tx.sv
|
||||||
|
taxi/src/eth/rtl/taxi_eth_mac_mii.sv
|
||||||
|
taxi/src/eth/rtl/taxi_eth_mac_1g_gmii.sv
|
||||||
|
taxi/src/eth/rtl/taxi_mac_ctrl_tx.sv
|
||||||
|
taxi/src/eth/rtl/taxi_eth_mac_1g_rgmii.sv
|
||||||
|
taxi/src/eth/rtl/taxi_mac_pause_ctrl_rx.sv
|
||||||
|
taxi/src/eth/rtl/taxi_eth_mac_1g_rgmii_fifo.sv
|
||||||
|
taxi/src/eth/rtl/taxi_eth_mac_10g.sv
|
||||||
|
taxi/src/eth/rtl/taxi_eth_mac_1g.sv
|
||||||
|
taxi/src/eth/rtl/taxi_mii_phy_if.sv
|
||||||
|
taxi/src/eth/rtl/taxi_axis_gmii_tx.sv
|
||||||
|
taxi/src/eth/rtl/taxi_axis_baser_tx_64.sv
|
||||||
|
taxi/src/eth/rtl/taxi_gmii_phy_if.sv
|
||||||
|
taxi/src/eth/rtl/taxi_eth_mac_phy_10g_fifo.sv
|
||||||
|
taxi/src/lss/tb/taxi_i2c_master/test_taxi_i2c_master.sv
|
||||||
|
taxi/src/lss/tb/taxi_uart/test_taxi_uart.sv
|
||||||
|
taxi/src/lss/tb/taxi_i2c_slave_apb_master/test_taxi_i2c_slave_apb_master.sv
|
||||||
|
taxi/src/lss/tb/taxi_i2c_slave_axil_master/test_taxi_i2c_slave_axil_master.sv
|
||||||
|
taxi/src/lss/tb/taxi_i2c_single_reg/test_taxi_i2c_single_reg.sv
|
||||||
|
taxi/src/lss/tb/taxi_i2c_slave/test_taxi_i2c_slave.sv
|
||||||
|
taxi/src/lss/rtl/taxi_mdio_master.sv
|
||||||
|
taxi/src/lss/rtl/taxi_i2c_slave_axil_master.sv
|
||||||
|
taxi/src/lss/rtl/taxi_i2c_single_reg.sv
|
||||||
|
taxi/src/lss/rtl/taxi_i2c_master.sv
|
||||||
|
taxi/src/lss/rtl/taxi_i2c_slave.sv
|
||||||
|
taxi/src/lss/rtl/taxi_i2c_slave_apb_master.sv
|
||||||
|
taxi/src/lss/rtl/taxi_uart_brg.sv
|
||||||
|
taxi/src/lss/rtl/taxi_i2c_init.sv
|
||||||
|
taxi/src/lss/rtl/taxi_uart_rx.sv
|
||||||
|
taxi/src/lss/rtl/taxi_uart.sv
|
||||||
|
taxi/src/lss/rtl/taxi_uart_tx.sv
|
||||||
|
taxi/src/ptp/tb/taxi_ptp_td_rel2tod/test_taxi_ptp_td_rel2tod.sv
|
||||||
|
taxi/src/ptp/rtl/taxi_ptp_clock_cdc.sv
|
||||||
|
taxi/src/ptp/rtl/taxi_ptp_clock.sv
|
||||||
|
taxi/src/ptp/rtl/taxi_ptp_td_leaf.sv
|
||||||
|
taxi/src/ptp/rtl/taxi_ptp_td_phc.sv
|
||||||
|
taxi/src/ptp/rtl/taxi_ptp_td_rel2tod.sv
|
||||||
|
taxi/src/ptp/rtl/taxi_ptp_perout.sv
|
||||||
|
taxi/src/apb/tb/taxi_apb_adapter/test_taxi_apb_adapter.sv
|
||||||
|
taxi/src/apb/tb/taxi_apb_dp_ram/test_taxi_apb_dp_ram.sv
|
||||||
|
taxi/src/apb/tb/taxi_apb_ram/test_taxi_apb_ram.sv
|
||||||
|
taxi/src/apb/tb/taxi_apb_interconnect/test_taxi_apb_interconnect.sv
|
||||||
|
taxi/src/apb/rtl/taxi_apb_interconnect.sv
|
||||||
|
taxi/src/apb/rtl/taxi_apb_ram.sv
|
||||||
|
taxi/src/apb/rtl/taxi_apb_if.sv
|
||||||
|
taxi/src/apb/rtl/taxi_apb_adapter.sv
|
||||||
|
taxi/src/apb/rtl/taxi_apb_dp_ram.sv
|
||||||
7
src/sub/upstream_path/sim/sources.list
Normal file
7
src/sub/upstream_path/sim/sources.list
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
../../../../sim/verilator.vlt
|
||||||
|
|
||||||
|
upstream_ip_check_harness.sv
|
||||||
|
|
||||||
|
../src/sources.list
|
||||||
|
|
||||||
|
../../../common/taxi_sources.list
|
||||||
65
src/sub/upstream_path/sim/upstream_ip_check.py
Normal file
65
src/sub/upstream_path/sim/upstream_ip_check.py
Normal file
@@ -0,0 +1,65 @@
|
|||||||
|
import cocotb
|
||||||
|
from scapy.layers.l2 import Ether
|
||||||
|
from scapy.layers.inet import IP, TCP
|
||||||
|
|
||||||
|
from cocotb.handle import Immediate
|
||||||
|
|
||||||
|
from cocotb.clock import Clock
|
||||||
|
from cocotb.triggers import Timer, RisingEdge
|
||||||
|
|
||||||
|
from cocotbext.axi import AxiStreamBus, AxiStreamSink, AxiStreamSource
|
||||||
|
|
||||||
|
|
||||||
|
import logging
|
||||||
|
|
||||||
|
|
||||||
|
CLK_PERIOD = 5
|
||||||
|
|
||||||
|
class TB:
|
||||||
|
def __init__(self, dut):
|
||||||
|
self.dut = dut
|
||||||
|
|
||||||
|
self.log = logging.getLogger("cocotb.tb")
|
||||||
|
self.log.setLevel(logging.INFO)
|
||||||
|
|
||||||
|
cocotb.start_soon(Clock(self.dut.clk, CLK_PERIOD, unit="ns").start())
|
||||||
|
|
||||||
|
self.s_axis_data = AxiStreamSource(AxiStreamBus.from_prefix(dut.s_axis_data, ""), dut.clk, dut.rst)
|
||||||
|
self.m_axis_dma = AxiStreamSink(AxiStreamBus.from_prefix(dut.m_axis_dma, ""), dut.clk, dut.rst)
|
||||||
|
self.m_axis_data = AxiStreamSink(AxiStreamBus.from_prefix(dut.m_axis_data, ""), dut.clk, dut.rst)
|
||||||
|
|
||||||
|
|
||||||
|
async def cycle_reset(self):
|
||||||
|
await self._cycle_reset(self.dut.rst, self.dut.clk)
|
||||||
|
|
||||||
|
|
||||||
|
async def _cycle_reset(self, rst, clk):
|
||||||
|
rst.value = Immediate(0)
|
||||||
|
await RisingEdge(clk)
|
||||||
|
await RisingEdge(clk)
|
||||||
|
rst.value = 1
|
||||||
|
await RisingEdge(clk)
|
||||||
|
await RisingEdge(clk)
|
||||||
|
rst.value = 0
|
||||||
|
await RisingEdge(clk)
|
||||||
|
await RisingEdge(clk)
|
||||||
|
|
||||||
|
|
||||||
|
@cocotb.test
|
||||||
|
async def test_sanity(dut):
|
||||||
|
tb = TB(dut)
|
||||||
|
|
||||||
|
await tb.cycle_reset()
|
||||||
|
|
||||||
|
tb.dut.i_dest_ip.value = 0xc0a85715
|
||||||
|
|
||||||
|
pkt_0 = Ether() / IP(src="127.0.0.1", dst="192.168.87.21") / TCP() / "Hello, world!"
|
||||||
|
await tb.s_axis_data.send(pkt_0.build())
|
||||||
|
pkt_1 = Ether() / IP(src="127.0.0.1", dst="192.168.87.22") / TCP() / "Different Data now!"
|
||||||
|
await tb.s_axis_data.send(pkt_1.build())
|
||||||
|
|
||||||
|
recv_pkt_0 = await tb.m_axis_data.recv()
|
||||||
|
recv_pkt_1 = await tb.m_axis_dma.recv()
|
||||||
|
|
||||||
|
assert recv_pkt_0.tdata == pkt_0.build()
|
||||||
|
assert recv_pkt_1.tdata == pkt_1.build()
|
||||||
21
src/sub/upstream_path/sim/upstream_ip_check_harness.sv
Normal file
21
src/sub/upstream_path/sim/upstream_ip_check_harness.sv
Normal file
@@ -0,0 +1,21 @@
|
|||||||
|
module upstream_ip_check_harness();
|
||||||
|
|
||||||
|
taxi_axis_if #(.DATA_W(32)) s_axis_data();
|
||||||
|
taxi_axis_if #(.DATA_W(32)) m_axis_dma();
|
||||||
|
taxi_axis_if #(.DATA_W(32)) m_axis_data();
|
||||||
|
|
||||||
|
logic clk;
|
||||||
|
logic rst;
|
||||||
|
|
||||||
|
logic [31:0] i_dest_ip;
|
||||||
|
|
||||||
|
upstream_ip_check #(.DATA_W(32)) u_dut (
|
||||||
|
.clk (clk),
|
||||||
|
.rst (rst),
|
||||||
|
.s_axis_data (s_axis_data),
|
||||||
|
.m_axis_dma (m_axis_dma),
|
||||||
|
.m_axis_data (m_axis_data),
|
||||||
|
.i_dest_ip (i_dest_ip)
|
||||||
|
);
|
||||||
|
|
||||||
|
endmodule
|
||||||
7
src/sub/upstream_path/sim/upstream_path.yaml
Normal file
7
src/sub/upstream_path/sim/upstream_path.yaml
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
tests:
|
||||||
|
- name: "upstream_ip_check"
|
||||||
|
toplevel: "upstream_ip_check_harness"
|
||||||
|
modules:
|
||||||
|
- "upstream_ip_check"
|
||||||
|
sources: "sources.list"
|
||||||
|
waves: True
|
||||||
1
src/sub/upstream_path/src/sources.list
Normal file
1
src/sub/upstream_path/src/sources.list
Normal file
@@ -0,0 +1 @@
|
|||||||
|
upstream_ip_check.sv
|
||||||
144
src/sub/upstream_path/src/upstream_ip_check.sv
Normal file
144
src/sub/upstream_path/src/upstream_ip_check.sv
Normal file
@@ -0,0 +1,144 @@
|
|||||||
|
// Destination IP address of packet is checked. If it does not match,
|
||||||
|
// then the packet is either sent to the CPU or dropped.
|
||||||
|
|
||||||
|
module upstream_ip_check #(
|
||||||
|
parameter DATA_W = 32 //supported values are 32 and 128
|
||||||
|
)(
|
||||||
|
input clk,
|
||||||
|
input rst,
|
||||||
|
|
||||||
|
taxi_axis_if.snk s_axis_data,
|
||||||
|
|
||||||
|
taxi_axis_if.src m_axis_dma,
|
||||||
|
taxi_axis_if.src m_axis_data,
|
||||||
|
|
||||||
|
input logic [31:0] i_dest_ip
|
||||||
|
);
|
||||||
|
|
||||||
|
if (s_axis_data.DATA_W != DATA_W)
|
||||||
|
$fatal(0, "Error: s_axis_data.DATA_W does not match DATA_W (instance %m)");
|
||||||
|
|
||||||
|
if (m_axis_dma.DATA_W != DATA_W)
|
||||||
|
$fatal(0, "Error: m_axis_dma.DATA_W does not match DATA_W (instance %m)");
|
||||||
|
|
||||||
|
if (m_axis_data.DATA_W != DATA_W)
|
||||||
|
$fatal(0, "Error: m_axis_data.DATA_W does not match DATA_W (instance %m)");
|
||||||
|
|
||||||
|
taxi_axis_if #(.DATA_W(DATA_W)) int_axis_data();
|
||||||
|
|
||||||
|
// eth header is 14 bytes
|
||||||
|
// ip dest header is 16 bytes after that, or 30 bytes total
|
||||||
|
// for 32 bit data, this is at 30/4 -> 7.5 cycles in (split over 2 cycles)
|
||||||
|
// for 128 bit data, this is at 30/16 -> 1.875 cycles (also split over 2 cycles)
|
||||||
|
|
||||||
|
localparam WAIT_CYCLES = DATA_W == 32 ? 10 : 3;
|
||||||
|
|
||||||
|
// Dest IP scanner
|
||||||
|
|
||||||
|
enum logic {SCAN, DRAIN} state, state_next;
|
||||||
|
logic [4:0] counter, counter_next;
|
||||||
|
|
||||||
|
logic [31:0] temp_dest_ip, temp_dest_ip_next;
|
||||||
|
|
||||||
|
logic [31:0] dest_ip, dest_ip_next;
|
||||||
|
|
||||||
|
assign int_axis_data.tready = '1;
|
||||||
|
|
||||||
|
always_ff @(posedge clk) begin
|
||||||
|
if (rst) begin
|
||||||
|
counter <= '0;
|
||||||
|
state <= SCAN;
|
||||||
|
temp_dest_ip <= '0;
|
||||||
|
dest_ip <= '0;
|
||||||
|
end else begin
|
||||||
|
counter <= counter_next;
|
||||||
|
state <= state_next;
|
||||||
|
temp_dest_ip <= temp_dest_ip_next;
|
||||||
|
dest_ip <= dest_ip_next;
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
always_comb begin
|
||||||
|
counter_next = counter;
|
||||||
|
state_next = state;
|
||||||
|
temp_dest_ip_next = temp_dest_ip;
|
||||||
|
dest_ip_next = dest_ip;
|
||||||
|
|
||||||
|
if (s_axis_data.tvalid && s_axis_data.tready) begin
|
||||||
|
if (state == SCAN) begin
|
||||||
|
counter_next = counter + 1;
|
||||||
|
if (DATA_W == 32) begin
|
||||||
|
if (counter == 7) begin
|
||||||
|
temp_dest_ip_next[31:16] = {s_axis_data.tdata[23:16], s_axis_data.tdata[31:24]};
|
||||||
|
end else if (counter == 8) begin
|
||||||
|
dest_ip_next = {temp_dest_ip[31:16], s_axis_data.tdata[7:0], s_axis_data.tdata[15:8]};
|
||||||
|
state_next = DRAIN;
|
||||||
|
counter_next = '0;
|
||||||
|
end
|
||||||
|
end else if (DATA_W == 128) begin
|
||||||
|
|
||||||
|
end
|
||||||
|
|
||||||
|
end else if (state == DRAIN) begin
|
||||||
|
if (s_axis_data.tlast) begin
|
||||||
|
state_next = SCAN;
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
|
// Shift register
|
||||||
|
|
||||||
|
assign s_axis_data.tready = int_axis_data.tready;
|
||||||
|
|
||||||
|
logic [1+1+s_axis_data.KEEP_W+s_axis_data.DATA_W-1:0] data_sr [WAIT_CYCLES];
|
||||||
|
|
||||||
|
always_ff @(posedge clk) begin
|
||||||
|
if (s_axis_data.tready) begin
|
||||||
|
for (int idx = 0; idx < WAIT_CYCLES-1; idx++) begin
|
||||||
|
data_sr[idx+1] <= data_sr[idx];
|
||||||
|
end
|
||||||
|
data_sr[0] <= {s_axis_data.tvalid, s_axis_data.tlast, s_axis_data.tkeep, s_axis_data.tdata};
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
assign {int_axis_data.tvalid, int_axis_data.tlast, int_axis_data.tkeep, int_axis_data.tdata} = data_sr[WAIT_CYCLES-1];
|
||||||
|
|
||||||
|
|
||||||
|
// Demux
|
||||||
|
|
||||||
|
logic dest_ip_matches;
|
||||||
|
|
||||||
|
taxi_axis_if #(.DATA_W(DATA_W)) int_axis_demux[2]();
|
||||||
|
|
||||||
|
taxi_axis_tie u_data_tie (
|
||||||
|
.s_axis(int_axis_demux[1]),
|
||||||
|
.m_axis(m_axis_data)
|
||||||
|
);
|
||||||
|
|
||||||
|
taxi_axis_tie u_dma_tie (
|
||||||
|
.s_axis(int_axis_demux[0]),
|
||||||
|
.m_axis(m_axis_dma)
|
||||||
|
);
|
||||||
|
|
||||||
|
always_ff @(posedge clk) begin
|
||||||
|
dest_ip_matches <= dest_ip == i_dest_ip;
|
||||||
|
end
|
||||||
|
|
||||||
|
taxi_axis_demux #(
|
||||||
|
.M_COUNT(2)
|
||||||
|
) u_demux (
|
||||||
|
.clk (clk),
|
||||||
|
.rst (rst),
|
||||||
|
|
||||||
|
.s_axis (int_axis_data),
|
||||||
|
|
||||||
|
.m_axis (int_axis_demux),
|
||||||
|
|
||||||
|
.enable ('1),
|
||||||
|
.drop ('0), // we could drop here if a bit is set.
|
||||||
|
.select (dest_ip_matches)
|
||||||
|
);
|
||||||
|
|
||||||
|
endmodule
|
||||||
Reference in New Issue
Block a user