Create project

This commit is contained in:
Byron Lathi
2025-11-06 21:36:10 -08:00
commit 3aa279bc29
12 changed files with 1834 additions and 0 deletions

2
.gitignore vendored Normal file
View File

@@ -0,0 +1,2 @@
.Xil/
.venv/

3
.gitmodules vendored Normal file
View File

@@ -0,0 +1,3 @@
[submodule "sub/taxi"]
path = sub/taxi
url = https://github.com/fpganinja/taxi.git

17
alibaba_pcie.yaml Normal file
View File

@@ -0,0 +1,17 @@
tool: "vivado"
device_info:
device: "xcku3p-ffvb676-2-e"
design_info:
sources: "sources.list"
top_module: "alibaba_pcie"
synthesis_options:
synth_directive: "PerformanceOptimized"
opt_directive: "Explore"
pnr_options:
place_directive: "Explore"
route_directive: "AggressiveExplore"

12
init_env.sh Normal file
View File

@@ -0,0 +1,12 @@
export REPO_TOP=$(git rev-parse --show-toplevel)
module load verilator
module load gtkwave
module load vivado/2024.2
python3 -m venv .venv
. .venv/bin/activate
pip install -r requirements.txt

4
ip/.gitignore vendored Normal file
View File

@@ -0,0 +1,4 @@
*
!.gitignore
!*/
!*/.xci

File diff suppressed because it is too large Load Diff

9
requirements.txt Normal file
View File

@@ -0,0 +1,9 @@
scapy
cocotb
cocotbext-axi
cocotbext-eth
rtl-manifest
build_fpga>=0.3.2
fpga-sim>=0.1.0
peakrdl

4
sources.list Normal file
View File

@@ -0,0 +1,4 @@
ip/pcie4_uscale_plus_0/pcie4_uscale_plus_0.xci
src/alibaba_cloud.xdc
src/alibaba_pcie_top.sv
sub/taxi_sources.list

54
src/alibaba_cloud.xdc Normal file
View File

@@ -0,0 +1,54 @@
# Global clock signal
set_property -dict {LOC E18 IOSTANDARD LVDS} [get_ports Clk_100mhz_p_i]
set_property -dict {LOC D18 IOSTANDARD LVDS} [get_ports Clk_100mhz_n_i]
create_clock -period 10 -name clk_100mhz [get_ports Clk_100mhz_p_i]
set_property -dict {LOC T7} [get_ports pcie_mgt_refclk_p]
set_property -dict {LOC T6} [get_ports pcie_mgt_refclk_n]
create_clock -period 10 -name pcie_mgt_refclk [get_ports pcie_mgt_refclk_p]
create_clock -period 4 -name clk_250
# LEDS
set_property -dict {LOC B11 IOSTANDARD LVCMOS18} [get_ports { Led_o[0]}]
set_property -dict {LOC C11 IOSTANDARD LVCMOS18} [get_ports { Led_o[1]}]
set_property -dict {LOC A10 IOSTANDARD LVCMOS18} [get_ports { Led_o[2]}]
set_property -dict {LOC B10 IOSTANDARD LVCMOS18} [get_ports { Led_o[3]}]
set_property -dict {LOC R4} [get_ports {pci_exp_txn[0]}]
set_property -dict {LOC U4} [get_ports {pci_exp_txn[1]}]
set_property -dict {LOC W4} [get_ports {pci_exp_txn[2]}]
set_property -dict {LOC AA4} [get_ports {pci_exp_txn[3]}]
set_property -dict {LOC AC4} [get_ports {pci_exp_txn[4]}]
set_property -dict {LOC AD6} [get_ports {pci_exp_txn[5]}]
set_property -dict {LOC AE8} [get_ports {pci_exp_txn[6]}]
set_property -dict {LOC AF6} [get_ports {pci_exp_txn[7]}]
set_property -dict {LOC P1} [get_ports {pci_exp_rxn[0]}]
set_property -dict {LOC T1} [get_ports {pci_exp_rxn[1]}]
set_property -dict {LOC V1} [get_ports {pci_exp_rxn[2]}]
set_property -dict {LOC Y1} [get_ports {pci_exp_rxn[3]}]
set_property -dict {LOC AB1} [get_ports {pci_exp_rxn[4]}]
set_property -dict {LOC AD1} [get_ports {pci_exp_rxn[5]}]
set_property -dict {LOC AE3} [get_ports {pci_exp_rxn[6]}]
set_property -dict {LOC AF1} [get_ports {pci_exp_rxn[7]}]
set_property -dict {LOC R5} [get_ports {pci_exp_txp[0]}]
set_property -dict {LOC U5} [get_ports {pci_exp_txp[1]}]
set_property -dict {LOC W5} [get_ports {pci_exp_txp[2]}]
set_property -dict {LOC AA5} [get_ports {pci_exp_txp[3]}]
set_property -dict {LOC AC5} [get_ports {pci_exp_txp[4]}]
set_property -dict {LOC AD7} [get_ports {pci_exp_txp[5]}]
set_property -dict {LOC AE9} [get_ports {pci_exp_txp[6]}]
set_property -dict {LOC AF7} [get_ports {pci_exp_txp[7]}]
set_property -dict {LOC P2} [get_ports {pci_exp_rxp[0]}]
set_property -dict {LOC T2} [get_ports {pci_exp_rxp[1]}]
set_property -dict {LOC V2} [get_ports {pci_exp_rxp[2]}]
set_property -dict {LOC Y2} [get_ports {pci_exp_rxp[3]}]
set_property -dict {LOC AB2} [get_ports {pci_exp_rxp[4]}]
set_property -dict {LOC AD2} [get_ports {pci_exp_rxp[5]}]
set_property -dict {LOC AE4} [get_ports {pci_exp_rxp[6]}]
set_property -dict {LOC AF2} [get_ports {pci_exp_rxp[7]}]
set_property -dict {LOC A9 IOSTANDARD LVCMOS18 PULLUP true} [get_ports pcie_reset_n]

167
src/alibaba_pcie_top.sv Normal file
View File

@@ -0,0 +1,167 @@
`timescale 1ns / 1ps
//////////////////////////////////////////////////////////////////////////////////
// Company:
// Engineer:
//
// Create Date: 11/05/2025 10:00:52 PM
// Design Name:
// Module Name: alibaba_pcie_top
// Project Name:
// Target Devices:
// Tool Versions:
// Description:
//
// Dependencies:
//
// Revision:
// Revision 0.01 - File Created
// Additional Comments:
//
//////////////////////////////////////////////////////////////////////////////////
module alibaba_pcie_top(
input wire [7:0] pci_exp_rxp,
input wire [7:0] pci_exp_rxn,
output wire [7:0] pci_exp_txp,
output wire [7:0] pci_exp_txn,
output wire [3:0] Led_o,
input wire pcie_mgt_refclk_p,
input wire pcie_mgt_refclk_n,
input wire pcie_reset_n
);
logic clk_pcie_gt;
logic clk_pcie;
logic rst_pcie;
logic clk_250;
logic rst_250;
logic user_lnk_up;
logic phy_rdy_out;
taxi_axis_if #(.DATA_W(256), .USER_EN(1), .USER_W(33), .KEEP_W(8)) s_axis_cc();
taxi_axis_if #(.DATA_W(256), .USER_EN(1), .USER_W(88), .KEEP_W(8)) m_axis_cq();
taxi_axis_if #(.DATA_W(256), .USER_EN(1), .USER_W(85), .KEEP_W(8)) s_axis_rq();
taxi_axis_if #(.DATA_W(256), .USER_EN(1), .USER_W(75), .KEEP_W(8)) m_axis_rc();
taxi_axil_if m_axil_rd();
taxi_axil_if m_axil_wr();
IBUFDS_GTE4 m_ibufds (
.CEB('0),
.I(pcie_mgt_refclk_p),
.IB(pcie_mgt_refclk_n),
.O(clk_pcie_gt),
.ODIV2(clk_pcie)
);
assign Led_o[0] = user_lnk_up;
assign Led_o[1] = phy_rdy_out;
taxi_pcie_us_axil_master u_taxi_pcie_us_axil_master (
.clk (clk_250),
.rst (rst_250),
.s_axis_cq (m_axis_cq),
.m_axis_cc (s_axis_cc),
.m_axil_wr (m_axil_wr),
.m_axil_rd (m_axil_rd),
.completer_id ('0),
.completer_id_en ('0),
.stat_err_cor (),
.stat_err_uncor ()
);
taxi_axil_ram #(
.ADDR_W(16)
) u_taxi_axil_ram (
.clk (clk_250),
.rst (rst_250),
.s_axil_wr (m_axil_wr),
.s_axil_rd (m_axil_rd)
);
taxi_axis_null_snk u_taxi_axis_null_snk (
.s_axis (m_axis_rc)
);
taxi_axis_null_src u_taxi_axis_null_src (
.m_axis (s_axis_rq)
);
pcie4_uscale_plus_0 u_pcie4_uscale_plus_0 (
.pci_exp_txn(pci_exp_txn),
.pci_exp_txp(pci_exp_txp),
.pci_exp_rxn(pci_exp_rxn),
.pci_exp_rxp(pci_exp_rxp),
.user_clk(clk_250),
.user_reset(rst_250),
.user_lnk_up(user_lnk_up),
.s_axis_rq_tdata(s_axis_rq.tdata),
.s_axis_rq_tkeep(s_axis_rq.tkeep),
.s_axis_rq_tlast(s_axis_rq.tlast),
.s_axis_rq_tready(s_axis_rq.tready),
.s_axis_rq_tuser(s_axis_rq.tuser),
.s_axis_rq_tvalid(s_axis_rq.tvalid),
.m_axis_rc_tdata(m_axis_rc.tdata),
.m_axis_rc_tkeep(m_axis_rc.tkeep),
.m_axis_rc_tlast(m_axis_rc.tlast),
.m_axis_rc_tready(m_axis_rc.tready),
.m_axis_rc_tuser(m_axis_rc.tuser),
.m_axis_rc_tvalid(m_axis_rc.tvalid),
.m_axis_cq_tdata(m_axis_cq.tdata),
.m_axis_cq_tkeep(m_axis_cq.tkeep),
.m_axis_cq_tlast(m_axis_cq.tlast),
.m_axis_cq_tready(m_axis_cq.tready),
.m_axis_cq_tuser(m_axis_cq.tuser),
.m_axis_cq_tvalid(m_axis_cq.tvalid),
.s_axis_cc_tdata(s_axis_cc.tdata),
.s_axis_cc_tkeep(s_axis_cc.tkeep),
.s_axis_cc_tlast(s_axis_cc.tlast),
.s_axis_cc_tready(s_axis_cc.tready),
.s_axis_cc_tuser(s_axis_cc.tuser),
.s_axis_cc_tvalid(s_axis_cc.tvalid),
.cfg_interrupt_int('0),
.cfg_interrupt_pending(),
.cfg_interrupt_sent('0),
.cfg_interrupt_msi_enable(),
.cfg_interrupt_msi_mmenable(),
.cfg_interrupt_msi_mask_update(),
.cfg_interrupt_msi_data(),
.cfg_interrupt_msi_select('0),
.cfg_interrupt_msi_int('0),
.cfg_interrupt_msi_pending_status('0),
.cfg_interrupt_msi_pending_status_data_enable('0),
.cfg_interrupt_msi_pending_status_function_num('0),
.cfg_interrupt_msi_sent(),
.cfg_interrupt_msi_fail(),
.cfg_interrupt_msi_attr('0),
.cfg_interrupt_msi_tph_present('0),
.cfg_interrupt_msi_tph_type('0),
.cfg_interrupt_msi_tph_st_tag('0),
.cfg_interrupt_msi_function_number('0),
.sys_clk(clk_pcie),
.sys_clk_gt(clk_pcie_gt),
.sys_reset(pcie_reset_n),
.phy_rdy_out(phy_rdy_out)
);
endmodule

1
sub/taxi Submodule

Submodule sub/taxi added at c6eac348f6

65
sub/taxi_sources.list Normal file
View File

@@ -0,0 +1,65 @@
taxi/src/axi/rtl/taxi_axi_if.sv
taxi/src/axi/rtl/taxi_axil_register_wr.sv
taxi/src/axi/rtl/taxi_axi_axil_adapter.sv
taxi/src/axi/rtl/taxi_axi_axil_adapter_wr.sv
taxi/src/axi/rtl/taxi_axil_ram.sv
taxi/src/axi/rtl/taxi_axi_adapter.sv
taxi/src/axi/rtl/taxi_axi_adapter_wr.sv
taxi/src/axi/rtl/taxi_axi_fifo_wr.sv
taxi/src/axi/rtl/taxi_axil_adapter_rd.sv
taxi/src/axi/rtl/taxi_axil_apb_adapter.sv
taxi/src/axi/rtl/taxi_axil_register.f
taxi/src/axi/rtl/taxi_axil_adapter.f
taxi/src/axi/rtl/taxi_axil_axi_adapter.f
taxi/src/axi/rtl/taxi_axi_fifo.f
taxi/src/axi/rtl/taxi_axi_register_wr.sv
taxi/src/axi/rtl/taxi_axil_axi_adapter_rd.sv
taxi/src/axi/rtl/taxi_axil_if.sv
taxi/src/axi/rtl/taxi_axil_axi_adapter.sv
taxi/src/axi/rtl/taxi_axil_adapter_wr.sv
taxi/src/axi/rtl/taxi_axi_fifo_rd.sv
taxi/src/axi/rtl/taxi_axi_adapter.f
taxi/src/axi/rtl/taxi_axil_adapter.sv
taxi/src/axi/rtl/taxi_axi_adapter_rd.sv
taxi/src/axi/rtl/taxi_axi_axil_adapter_rd.sv
taxi/src/axi/rtl/taxi_axi_ram.sv
taxi/src/axi/rtl/taxi_axi_axil_adapter.f
taxi/src/axi/rtl/taxi_axil_register.sv
taxi/src/axi/rtl/taxi_axi_register.f
taxi/src/axi/rtl/taxi_axil_register_rd.sv
taxi/src/axi/rtl/taxi_axi_register.sv
taxi/src/axi/rtl/taxi_axil_axi_adapter_wr.sv
taxi/src/axi/rtl/taxi_axi_register_rd.sv
taxi/src/axi/rtl/taxi_axil_dp_ram.sv
taxi/src/axi/rtl/taxi_axi_fifo.sv
taxi/src/axis/rtl/taxi_axis_async_fifo.sv
taxi/src/axis/rtl/taxi_axis_fifo_adapter.sv
taxi/src/axis/rtl/taxi_axis_adapter.sv
taxi/src/axis/rtl/taxi_axis_pipeline_register.sv
taxi/src/axis/rtl/taxi_axis_null_snk.sv
taxi/src/axis/rtl/taxi_axis_switch.f
taxi/src/axis/rtl/taxi_axis_broadcast.sv
taxi/src/axis/rtl/taxi_axis_cobs_decode.sv
taxi/src/axis/rtl/taxi_axis_async_fifo.f
taxi/src/axis/rtl/taxi_axis_cobs_encode.sv
#taxi/src/axis/rtl/taxi_axis_mux.sv
taxi/src/axis/rtl/taxi_axis_async_fifo_adapter.sv
taxi/src/axis/rtl/taxi_axis_async_fifo_adapter.f
taxi/src/axis/rtl/taxi_axis_if.sv
taxi/src/axis/rtl/taxi_axis_arb_mux.sv
taxi/src/axis/rtl/taxi_axis_pipeline_register.f
taxi/src/axis/rtl/taxi_axis_demux.sv
taxi/src/axis/rtl/taxi_axis_register.sv
taxi/src/axis/rtl/taxi_axis_tie.sv
taxi/src/axis/rtl/taxi_axis_pipeline_fifo.sv
taxi/src/axis/rtl/taxi_axis_concat.sv
taxi/src/axis/rtl/taxi_axis_fifo_adapter.f
taxi/src/axis/rtl/taxi_axis_cobs_encode.f
taxi/src/axis/rtl/taxi_axis_arb_mux.f
taxi/src/axis/rtl/taxi_axis_null_src.sv
taxi/src/axis/rtl/taxi_axis_switch.sv
taxi/src/axis/rtl/taxi_axis_fifo.sv
taxi/src/pcie/rtl/taxi_pcie_us_axil_master.sv
taxi/src/pcie/rtl/taxi_pcie_tlp_if.sv
taxi/src/pcie/rtl/taxi_pcie_axil_master.sv
taxi/src/pcie/rtl/taxi_pcie_axil_master_minimal.sv