4
4
# ##############################################################################
5
5
6
6
source $ad_hdl_dir /projects/scripts/adi_pd.tcl
7
+ source $ad_hdl_dir /library/corundum/scripts/corundum_ad_gmsl2eth_sl_cfg.tcl
8
+ source $ad_hdl_dir /library/corundum/scripts/corundum.tcl
7
9
8
10
# GMSL
9
11
create_bd_port -dir I ap_rstn_frmbuf_0
@@ -42,6 +44,9 @@ create_bd_port -dir I sfp_tx_fault
42
44
create_bd_port -dir I sfp_rx_los
43
45
create_bd_port -dir I sfp_mod_abs
44
46
47
+ create_bd_port -dir IO sfp_i2c_scl
48
+ create_bd_port -dir IO sfp_i2c_sda
49
+
45
50
create_bd_port -dir O ref_clk0
46
51
47
52
create_bd_port -dir O -from 1 -to 0 led
@@ -448,154 +453,7 @@ ad_cpu_interrupt ps-5 mb-5 v_frmbuf_7/interrupt
448
453
449
454
# Corundum NIC
450
455
451
- ad_ip_instance corundum corundum
452
-
453
- # collect build information
454
- set build_date [clock seconds]
455
- set git_hash 00000000
456
- catch {
457
- set git_hash [exec git rev-parse --short=8 HEAD]
458
- }
459
- set tag_ver 0.0.0
460
-
461
- # FW and board IDs
462
- set fpga_id [expr 0x4A49093]
463
- set fw_id [expr 0x00000000]
464
- set fw_ver $tag_ver
465
- set board_vendor_id [expr 0x10ee]
466
- set board_device_id [expr 0x9104]
467
- set board_ver 1.0
468
- set release_info [expr 0x00000000]
469
-
470
- # General variables
471
- set IRQ_SIZE 8
472
- set PORTS_PER_IF " 1"
473
- set TX_QUEUE_INDEX_WIDTH " 5"
474
- set RX_QUEUE_INDEX_WIDTH " 5"
475
- set CQN_WIDTH [expr max($TX_QUEUE_INDEX_WIDTH , $RX_QUEUE_INDEX_WIDTH ) + 1]
476
- set TX_QUEUE_PIPELINE [expr 3 + max($TX_QUEUE_INDEX_WIDTH - 12, 0)]
477
- set RX_QUEUE_PIPELINE [expr 3 + max($RX_QUEUE_INDEX_WIDTH - 12, 0)]
478
- set TX_DESC_TABLE_SIZE " 32"
479
- set RX_DESC_TABLE_SIZE " 32"
480
- set TX_RAM_SIZE " 32768"
481
- set RX_RAM_SIZE " 32768"
482
-
483
- # FW ID block
484
- ad_ip_parameter corundum CONFIG.FPGA_ID [format " 32'h%08x" $fpga_id ]
485
- ad_ip_parameter corundum CONFIG.FW_ID [format " 32'h%08x" $fw_id ]
486
- ad_ip_parameter corundum CONFIG.FW_VER [format " 32'h%02x%02x%02x%02x" {*}[split $fw_ver .-] 0 0 0 0]
487
- ad_ip_parameter corundum CONFIG.BOARD_ID [format " 32'h%04x%04x" $board_vendor_id $board_device_id ]
488
- ad_ip_parameter corundum CONFIG.BOARD_VER [format " 32'h%02x%02x%02x%02x" {*}[split $board_ver .-] 0 0 0 0]
489
- ad_ip_parameter corundum CONFIG.BUILD_DATE " 32'd${build_date} "
490
- ad_ip_parameter corundum CONFIG.GIT_HASH " 32'h${git_hash} "
491
- ad_ip_parameter corundum CONFIG.RELEASE_INFO [format " 32'h%08x" $release_info ]
492
-
493
- # Board configuration
494
- ad_ip_parameter corundum CONFIG.TDMA_BER_ENABLE " 0"
495
-
496
- # Structural configuration
497
- ad_ip_parameter corundum CONFIG.IF_COUNT " 1"
498
- ad_ip_parameter corundum CONFIG.PORTS_PER_IF $PORTS_PER_IF
499
- ad_ip_parameter corundum CONFIG.SCHED_PER_IF $PORTS_PER_IF
500
- ad_ip_parameter corundum CONFIG.PORT_MASK " 0"
501
-
502
- # Clock configuration
503
- ad_ip_parameter corundum CONFIG.CLK_PERIOD_NS_NUM " 4"
504
- ad_ip_parameter corundum CONFIG.CLK_PERIOD_NS_DENOM " 1"
505
-
506
- # PTP configuration
507
- ad_ip_parameter corundum CONFIG.PTP_CLOCK_PIPELINE " 0"
508
- ad_ip_parameter corundum CONFIG.PTP_CLOCK_CDC_PIPELINE " 0"
509
- ad_ip_parameter corundum CONFIG.PTP_PORT_CDC_PIPELINE " 0"
510
- ad_ip_parameter corundum CONFIG.PTP_PEROUT_ENABLE " 1"
511
- ad_ip_parameter corundum CONFIG.PTP_PEROUT_COUNT " 1"
512
-
513
- # Queue manager configuration
514
- ad_ip_parameter corundum CONFIG.EVENT_QUEUE_OP_TABLE_SIZE " 32"
515
- ad_ip_parameter corundum CONFIG.TX_QUEUE_OP_TABLE_SIZE " 32"
516
- ad_ip_parameter corundum CONFIG.RX_QUEUE_OP_TABLE_SIZE " 32"
517
- ad_ip_parameter corundum CONFIG.CQ_OP_TABLE_SIZE " 32"
518
- ad_ip_parameter corundum CONFIG.EQN_WIDTH " 2"
519
- ad_ip_parameter corundum CONFIG.TX_QUEUE_INDEX_WIDTH $TX_QUEUE_INDEX_WIDTH
520
- ad_ip_parameter corundum CONFIG.RX_QUEUE_INDEX_WIDTH $RX_QUEUE_INDEX_WIDTH
521
- ad_ip_parameter corundum CONFIG.CQN_WIDTH $CQN_WIDTH
522
- ad_ip_parameter corundum CONFIG.EQ_PIPELINE " 3"
523
- ad_ip_parameter corundum CONFIG.TX_QUEUE_PIPELINE $TX_QUEUE_PIPELINE
524
- ad_ip_parameter corundum CONFIG.RX_QUEUE_PIPELINE $RX_QUEUE_PIPELINE
525
- ad_ip_parameter corundum CONFIG.CQ_PIPELINE [expr 3 + max($CQN_WIDTH - 12, 0)]
526
-
527
- # TX and RX engine configuration
528
- ad_ip_parameter corundum CONFIG.TX_DESC_TABLE_SIZE $TX_DESC_TABLE_SIZE
529
- ad_ip_parameter corundum CONFIG.RX_DESC_TABLE_SIZE $RX_DESC_TABLE_SIZE
530
- ad_ip_parameter corundum CONFIG.RX_INDIR_TBL_ADDR_WIDTH [expr min($RX_QUEUE_INDEX_WIDTH , 8)]
531
-
532
- # Scheduler configuration
533
- ad_ip_parameter corundum CONFIG.TX_SCHEDULER_OP_TABLE_SIZE $TX_DESC_TABLE_SIZE
534
- ad_ip_parameter corundum CONFIG.TX_SCHEDULER_PIPELINE $TX_QUEUE_PIPELINE
535
- ad_ip_parameter corundum CONFIG.TDMA_INDEX_WIDTH " 6"
536
-
537
- # Interface configuration
538
- ad_ip_parameter corundum CONFIG.PTP_TS_ENABLE " 1"
539
- ad_ip_parameter corundum CONFIG.TX_CPL_FIFO_DEPTH " 32"
540
- ad_ip_parameter corundum CONFIG.TX_CHECKSUM_ENABLE " 1"
541
- ad_ip_parameter corundum CONFIG.RX_HASH_ENABLE " 1"
542
- ad_ip_parameter corundum CONFIG.RX_CHECKSUM_ENABLE " 1"
543
- ad_ip_parameter corundum CONFIG.TX_FIFO_DEPTH " 32768"
544
- ad_ip_parameter corundum CONFIG.RX_FIFO_DEPTH " 32768"
545
- ad_ip_parameter corundum CONFIG.MAX_TX_SIZE " 9214"
546
- ad_ip_parameter corundum CONFIG.MAX_RX_SIZE " 9214"
547
- ad_ip_parameter corundum CONFIG.TX_RAM_SIZE $TX_RAM_SIZE
548
- ad_ip_parameter corundum CONFIG.RX_RAM_SIZE $RX_RAM_SIZE
549
-
550
- # Application block configuration
551
- ad_ip_parameter corundum CONFIG.APP_ID " 32'h00000000"
552
- ad_ip_parameter corundum CONFIG.APP_ENABLE " 0"
553
- ad_ip_parameter corundum CONFIG.APP_CTRL_ENABLE " 1"
554
- ad_ip_parameter corundum CONFIG.APP_DMA_ENABLE " 1"
555
- ad_ip_parameter corundum CONFIG.APP_AXIS_DIRECT_ENABLE " 1"
556
- ad_ip_parameter corundum CONFIG.APP_AXIS_SYNC_ENABLE " 1"
557
- ad_ip_parameter corundum CONFIG.APP_AXIS_IF_ENABLE " 1"
558
- ad_ip_parameter corundum CONFIG.APP_STAT_ENABLE " 1"
559
-
560
- # AXI DMA interface configuration
561
- ad_ip_parameter corundum CONFIG.AXI_DATA_WIDTH [get_property CONFIG.PSU__SAXIGP0__DATA_WIDTH [get_bd_cells sys_ps8]]
562
- ad_ip_parameter corundum CONFIG.AXI_ADDR_WIDTH 64
563
- ad_ip_parameter corundum CONFIG.AXI_ID_WIDTH 6
564
-
565
- # DMA interface configuration
566
- ad_ip_parameter corundum CONFIG.DMA_IMM_ENABLE " 0"
567
- ad_ip_parameter corundum CONFIG.DMA_IMM_WIDTH " 32"
568
- ad_ip_parameter corundum CONFIG.DMA_LEN_WIDTH " 16"
569
- ad_ip_parameter corundum CONFIG.DMA_TAG_WIDTH " 16"
570
- ad_ip_parameter corundum CONFIG.RAM_ADDR_WIDTH [expr int(ceil(log(max($TX_RAM_SIZE , $RX_RAM_SIZE ))/log(2)))]
571
- ad_ip_parameter corundum CONFIG.RAM_PIPELINE " 2"
572
- ad_ip_parameter corundum CONFIG.AXI_DMA_MAX_BURST_LEN 16
573
-
574
- # AXI lite interface configuration (control)
575
- ad_ip_parameter corundum CONFIG.AXIL_CTRL_DATA_WIDTH 32
576
- ad_ip_parameter corundum CONFIG.AXIL_CTRL_ADDR_WIDTH 24
577
-
578
- # AXI lite interface configuration (application control)
579
- ad_ip_parameter corundum CONFIG.AXIL_APP_CTRL_DATA_WIDTH 32
580
- ad_ip_parameter corundum CONFIG.AXIL_APP_CTRL_ADDR_WIDTH 24
581
-
582
- # Interrupt configuration
583
- ad_ip_parameter corundum CONFIG.IRQ_COUNT $IRQ_SIZE
584
- ad_ip_parameter corundum CONFIG.IRQ_STRETCH " 10"
585
-
586
- # Ethernet interface configuration
587
- ad_ip_parameter corundum CONFIG.AXIS_ETH_TX_PIPELINE " 0"
588
- ad_ip_parameter corundum CONFIG.AXIS_ETH_TX_FIFO_PIPELINE " 2"
589
- ad_ip_parameter corundum CONFIG.AXIS_ETH_TX_TS_PIPELINE " 0"
590
- ad_ip_parameter corundum CONFIG.AXIS_ETH_RX_PIPELINE " 0"
591
- ad_ip_parameter corundum CONFIG.AXIS_ETH_RX_FIFO_PIPELINE " 2"
592
-
593
- # Statistics counter subsystem
594
- ad_ip_parameter corundum CONFIG.STAT_ENABLE " 1"
595
- ad_ip_parameter corundum CONFIG.STAT_DMA_ENABLE " 1"
596
- ad_ip_parameter corundum CONFIG.STAT_AXI_ENABLE " 1"
597
- ad_ip_parameter corundum CONFIG.STAT_INC_WIDTH " 24"
598
- ad_ip_parameter corundum CONFIG.STAT_ID_WIDTH " 12"
456
+ # ad_ip_instance corundum corundum
599
457
600
458
ad_ip_instance clk_wiz clk10_gen
601
459
ad_ip_parameter clk10_gen CONFIG.CLKIN1_UI_JITTER {0}
@@ -607,42 +465,51 @@ ad_ip_parameter clk10_gen CONFIG.PRIM_SOURCE {Global_buffer}
607
465
ad_ip_parameter clk10_gen CONFIG.RESET_TYPE {ACTIVE_LOW}
608
466
ad_ip_parameter clk10_gen CONFIG.USE_LOCKED {false}
609
467
610
- create_bd_intf_port -mode Master -vlnv xilinx.com:interface:iic_rtl:1.0 sfp_iic
611
- ad_connect sfp_iic corundum/iic
468
+ ad_ip_instance clk_wiz clk125_gen
469
+ ad_ip_parameter clk125_gen CONFIG.CLKIN1_UI_JITTER {0}
470
+ ad_ip_parameter clk125_gen CONFIG.CLKOUT1_REQUESTED_DUTY_CYCLE {50.000}
471
+ ad_ip_parameter clk125_gen CONFIG.CLKOUT1_REQUESTED_OUT_FREQ {125.000}
472
+ ad_ip_parameter clk125_gen CONFIG.CLKOUT1_REQUESTED_PHASE {0.000}
473
+ ad_ip_parameter clk125_gen CONFIG.PRIMITIVE {PLL}
474
+ ad_ip_parameter clk125_gen CONFIG.PRIM_SOURCE {Global_buffer}
475
+ ad_ip_parameter clk125_gen CONFIG.RESET_TYPE {ACTIVE_LOW}
476
+ ad_ip_parameter clk125_gen CONFIG.USE_LOCKED {false}
477
+
478
+ ad_ip_instance proc_sys_reset sys_125m_rstgen
479
+ ad_connect sys_125m_rstgen/slowest_sync_clk clk125_gen/clk_out1
480
+ ad_connect sys_125m_rstgen/ext_reset_in $sys_dma_resetn
612
481
613
- ad_connect led corundum/led
614
- ad_connect sfp_led corundum/sfp_led
482
+ ad_connect sfp_i2c_scl corundum_hierarchy/sfp_i2c_scl
483
+ ad_connect sfp_i2c_sda corundum_hierarchy/sfp_i2c_sda
615
484
616
- set_property verilog_define {APP_CUSTOM_PORTS_ENABLE APP_CUSTOM_PARAMS_ENABLE} [get_filesets sources_1 ]
485
+ connect_bd_net [get_bd_ports led] [get_bd_pins corundum_hierarchy/ethernet_core/led ]
617
486
487
+ ad_connect corundum_hierarchy/clk_corundum $sys_dma_clk
488
+ ad_connect corundum_hierarchy/rst_corundum $sys_dma_reset
618
489
ad_connect clk10_gen/clk_in1 $sys_dma_clk
619
490
ad_connect clk10_gen/resetn $sys_dma_resetn
491
+ ad_connect clk125_gen/clk_in1 $sys_dma_clk
492
+ ad_connect clk125_gen/resetn $sys_dma_resetn
620
493
621
- ad_connect corundum/clk $sys_dma_clk
622
- ad_connect corundum/rst $sys_dma_reset
623
-
624
- ad_connect corundum/sfp_rx_p sfp_rx_p
625
- ad_connect corundum/sfp_rx_n sfp_rx_n
626
- ad_connect corundum/sfp_tx_p sfp_tx_p
627
- ad_connect corundum/sfp_tx_n sfp_tx_n
628
- ad_connect corundum/sfp_mgt_refclk_p sfp_mgt_refclk_p
629
- ad_connect corundum/sfp_mgt_refclk_n sfp_mgt_refclk_n
494
+ ad_connect corundum_hierarchy/sfp_rx_p sfp_rx_p
495
+ ad_connect corundum_hierarchy/sfp_rx_n sfp_rx_n
496
+ ad_connect corundum_hierarchy/sfp_tx_p sfp_tx_p
497
+ ad_connect corundum_hierarchy/sfp_tx_n sfp_tx_n
498
+ ad_connect corundum_hierarchy/sfp_mgt_refclk_p sfp_mgt_refclk_p
499
+ ad_connect corundum_hierarchy/sfp_mgt_refclk_n sfp_mgt_refclk_n
630
500
631
- ad_connect corundum /sfp_tx_disable sfp_tx_disable
632
- ad_connect corundum /sfp_mod_abs sfp_mod_abs
633
- ad_connect corundum /sfp_rx_los sfp_rx_los
634
- ad_connect corundum /sfp_tx_fault sfp_tx_fault
501
+ ad_connect corundum_hierarchy /sfp_tx_disable sfp_tx_disable
502
+ ad_connect corundum_hierarchy /sfp_mod_abs sfp_mod_abs
503
+ ad_connect corundum_hierarchy /sfp_rx_los sfp_rx_los
504
+ ad_connect corundum_hierarchy /sfp_tx_fault sfp_tx_fault
635
505
636
506
ad_connect clk10_gen/clk_out1 ref_clk0
637
507
638
- set fifo_num_bytes 4
639
- set fifo_tdest_width 4
640
- set fifo_tuser_width 2
641
-
642
508
set axi_clk_freq [get_property CONFIG.FREQ_HZ [get_bd_pins sys_ps8/pl_clk1]]
643
- set_property CONFIG.FREQ_HZ $axi_clk_freq [get_bd_intf_pins corundum/m_axi_dma]
644
- set_property CONFIG.FREQ_HZ $axi_clk_freq [get_bd_intf_pins corundum/s_axil_app_ctrl]
645
- set_property CONFIG.FREQ_HZ $axi_clk_freq [get_bd_intf_pins corundum/s_axil_ctrl]
509
+ set_property CONFIG.FREQ_HZ $axi_clk_freq [get_bd_intf_pins corundum_hierarchy/m_axi]
510
+ set_property CONFIG.FREQ_HZ $axi_clk_freq [get_bd_intf_pins /corundum_hierarchy/corundum_core/m_axi]
511
+ set_property CONFIG.FREQ_HZ $axi_clk_freq [get_bd_intf_pins corundum_hierarchy/s_axil_corundum]
512
+ set_property CONFIG.FREQ_HZ $axi_clk_freq [get_bd_intf_pins /corundum_hierarchy/corundum_core/s_axil_ctrl]
646
513
647
514
ad_ip_instance axi_interconnect smartconnect_corundum
648
515
ad_ip_parameter smartconnect_corundum CONFIG.NUM_MI 2
@@ -661,31 +528,27 @@ ad_connect smartconnect_corundum/S00_ACLK $sys_dma_clk
661
528
ad_connect smartconnect_corundum/M00_ACLK $sys_dma_clk
662
529
ad_connect smartconnect_corundum/M01_ACLK $sys_dma_clk
663
530
664
- ad_connect smartconnect_corundum/M00_AXI corundum/s_axil_ctrl
665
- ad_connect smartconnect_corundum/M01_AXI corundum/s_axil_app_ctrl
531
+ ad_connect smartconnect_corundum/M00_AXI corundum_hierarchy/s_axil_corundum
666
532
667
533
ad_ip_parameter sys_ps8 CONFIG.PSU__USE__M_AXI_GP0 1
668
534
ad_ip_parameter sys_ps8 CONFIG.PSU__MAXIGP0__DATA_WIDTH 32
669
535
ad_connect smartconnect_corundum/S00_AXI sys_ps8/M_AXI_HPM0_FPD
670
536
ad_connect sys_ps8/maxihpm0_fpd_aclk $sys_dma_clk
671
537
672
538
assign_bd_address -offset 0xA000_0000 [get_bd_addr_segs \
673
- corundum/s_axil_ctrl/Reg
674
- ] -target_address_space sys_ps8/Data
675
- assign_bd_address -offset 0xA800_0000 [get_bd_addr_segs \
676
- corundum/s_axil_app_ctrl/Reg
539
+ corundum_hierarchy/corundum_core/s_axil_ctrl/Reg
677
540
] -target_address_space sys_ps8/Data
678
541
679
542
ad_ip_instance util_reduced_logic util_reduced_logic_0
680
543
ad_ip_parameter util_reduced_logic_0 CONFIG.C_OPERATION {or}
681
- ad_ip_parameter util_reduced_logic_0 CONFIG.C_SIZE $IRQ_SIZE
544
+ ad_ip_parameter util_reduced_logic_0 CONFIG.C_SIZE {8}
682
545
683
- ad_connect util_reduced_logic_0/Op1 corundum/core_irq
546
+ ad_connect util_reduced_logic_0/Op1 corundum_hierarchy/irq
684
547
685
548
ad_cpu_interrupt ps-4 mb-4 util_reduced_logic_0/Res
686
549
687
550
ad_mem_hpc0_interconnect $sys_dma_clk sys_ps8/S_AXI_HPC0_FPD
688
- ad_mem_hpc0_interconnect $sys_dma_clk corundum/m_axi_dma
551
+ ad_mem_hpc0_interconnect $sys_dma_clk corundum_hierarchy/m_axi
689
552
690
553
assign_bd_address [get_bd_addr_segs { \
691
554
sys_ps8/SAXIGP0/HPC0_LPS_OCM \
0 commit comments