Maybe improvements to fpga synthesis.

This commit is contained in:
Rose Thompson 2024-08-23 13:00:22 -07:00
parent fc80bf1251
commit 4d56b3ca96
3 changed files with 172 additions and 166 deletions

View File

@ -33,7 +33,7 @@ IP_VCU: $(dst)/sysrst.log \
$(dst)/ahbaxibridge.log $(dst)/ahbaxibridge.log
IP_Arty: $(dst)/sysrst.log \ IP_Arty: $(dst)/sysrst.log \
MEM_Arty \ MEM_Arty \
$(dst)/mmcm.log \ $(dst)/xlnx_mmcm.log \
$(dst)/clkconverter.log \ $(dst)/clkconverter.log \
$(dst)/ahbaxibridge.log $(dst)/ahbaxibridge.log
#$(dst)/xlnx_axi_crossbar.log \ #$(dst)/xlnx_axi_crossbar.log \

View File

@ -5,6 +5,11 @@ set boardName $::env(XILINX_BOARD)
set boardSubName [lindex [split ${boardName} :] 1] set boardSubName [lindex [split ${boardName} :] 1]
set board $::env(board) set board $::env(board)
set partNumber xc7a100tcsg324-1
set boardName digilentinc.com:arty-a7-100:part0:1.1
set boardSubName arty-a7-100
set board ArtyA7
set ipName WallyFPGA set ipName WallyFPGA
create_project $ipName . -force -part $partNumber create_project $ipName . -force -part $partNumber
@ -23,15 +28,15 @@ if {$board=="ArtyA7"} {
} }
# read in ip # read in ip
read_ip IP/sysrst.srcs/sources_1/ip/sysrst/sysrst.xci import_ip IP/sysrst.srcs/sources_1/ip/sysrst/sysrst.xci
read_ip IP/ahbaxibridge.srcs/sources_1/ip/ahbaxibridge/ahbaxibridge.xci import_ip IP/ahbaxibridge.srcs/sources_1/ip/ahbaxibridge/ahbaxibridge.xci
read_ip IP/clkconverter.srcs/sources_1/ip/clkconverter/clkconverter.xci import_ip IP/clkconverter.srcs/sources_1/ip/clkconverter/clkconverter.xci
if {$board=="ArtyA7"} { if {$board=="ArtyA7"} {
read_ip IP/ddr3.srcs/sources_1/ip/ddr3/ddr3.xci import_ip IP/ddr3.srcs/sources_1/ip/ddr3/ddr3.xci
read_ip IP/mmcm.srcs/sources_1/ip/mmcm/mmcm.xci import_ip IP/mmcm.srcs/sources_1/ip/mmcm/mmcm.xci
} else { } else {
read_ip IP/ddr4.srcs/sources_1/ip/ddr4/ddr4.xci import_ip IP/ddr4.srcs/sources_1/ip/ddr4/ddr4.xci
} }
# read in all other rtl # read in all other rtl
@ -41,13 +46,6 @@ read_verilog [glob -type f ../../addins/ahbsdc/sdc/*.v]
set_property include_dirs {../src/CopiedFiles_do_not_add_to_repo/config ../../config/shared ../../addins/ahbsdc/sdc} [current_fileset] set_property include_dirs {../src/CopiedFiles_do_not_add_to_repo/config ../../config/shared ../../addins/ahbsdc/sdc} [current_fileset]
if {$board=="ArtyA7"} {
add_files -fileset constrs_1 -norecurse ../constraints/constraints-$board.xdc
set_property PROCESSING_ORDER NORMAL [get_files ../constraints/constraints-$board.xdc]
} else {
add_files -fileset constrs_1 -norecurse ../constraints/constraints-$boardSubName.xdc
set_property PROCESSING_ORDER NORMAL [get_files ../constraints/constraints-$boardSubName.xdc]
}
# define top level # define top level
set_property top fpgaTop [current_fileset] set_property top fpgaTop [current_fileset]
@ -57,6 +55,14 @@ update_compile_order -fileset sources_1
exec mkdir -p reports/ exec mkdir -p reports/
exec rm -rf reports/* exec rm -rf reports/*
if {$board=="ArtyA7"} {
add_files -fileset constrs_1 -norecurse ../constraints/constraints-$board.xdc
set_property PROCESSING_ORDER NORMAL [get_files ../constraints/constraints-$board.xdc]
} else {
add_files -fileset constrs_1 -norecurse ../constraints/constraints-$boardSubName.xdc
set_property PROCESSING_ORDER NORMAL [get_files ../constraints/constraints-$boardSubName.xdc]
}
report_compile_order -constraints > reports/compile_order.rpt report_compile_order -constraints > reports/compile_order.rpt
# this is elaboration not synthesis. # this is elaboration not synthesis.

View File

@ -29,183 +29,183 @@
import cvw::*; import cvw::*;
module fpgaTop #(parameter logic RVVI_SYNTH_SUPPORTED = 0) module fpgaTop #(parameter logic RVVI_SYNTH_SUPPORTED = 0)
(input default_100mhz_clk, (input logic default_100mhz_clk,
(* mark_debug = "true" *) input resetn, input logic resetn,
input south_reset, input logic south_reset,
// GPIO signals // GPIO signals
input [3:0] GPI, input logic [3:0] GPI,
output [4:0] GPO, output logic [4:0] GPO,
// UART Signals // UART Signals
input UARTSin, input logic UARTSin,
output UARTSout, output logic UARTSout,
// SDC Signals connecting to an SPI peripheral // SDC Signals connecting to an SPI peripheral
input SDCIn, input logic SDCIn,
output SDCCLK, output logic SDCCLK,
output SDCCmd, output logic SDCCmd,
output SDCCS, output logic SDCCS,
input SDCCD, input logic SDCCD,
input SDCWP, input logic SDCWP,
/* /*
* Ethernet: 100BASE-T MII * Ethernet: 100BASE-T MII
*/ */
output phy_ref_clk, output logic phy_ref_clk,
input phy_rx_clk, input logic phy_rx_clk,
input [3:0] phy_rxd, input logic [3:0] phy_rxd,
input phy_rx_dv, input logic phy_rx_dv,
input phy_rx_er, input logic phy_rx_er,
input phy_tx_clk, input logic phy_tx_clk,
output [3:0] phy_txd, output logic [3:0] phy_txd,
output phy_tx_en, output logic phy_tx_en,
input phy_col, // nc input logic phy_col, // nc
input phy_crs, // nc input logic phy_crs, // nc
output phy_reset_n, output logic phy_reset_n,
inout [15:0] ddr3_dq, inout logic [15:0] ddr3_dq,
inout [1:0] ddr3_dqs_n, inout logic [1:0] ddr3_dqs_n,
inout [1:0] ddr3_dqs_p, inout logic [1:0] ddr3_dqs_p,
output [13:0] ddr3_addr, output logic [13:0] ddr3_addr,
output [2:0] ddr3_ba, output logic [2:0] ddr3_ba,
output ddr3_ras_n, output logic ddr3_ras_n,
output ddr3_cas_n, output logic ddr3_cas_n,
output ddr3_we_n, output logic ddr3_we_n,
output ddr3_reset_n, output logic ddr3_reset_n,
output [0:0] ddr3_ck_p, output logic [0:0] ddr3_ck_p,
output [0:0] ddr3_ck_n, output logic [0:0] ddr3_ck_n,
output [0:0] ddr3_cke, output logic [0:0] ddr3_cke,
output [0:0] ddr3_cs_n, output logic [0:0] ddr3_cs_n,
output [1:0] ddr3_dm, output logic [1:0] ddr3_dm,
output [0:0] ddr3_odt output logic [0:0] ddr3_odt
); );
// MMCM Signals // MMCM Signals
wire CPUCLK; logic CPUCLK;
wire c0_ddr4_ui_clk_sync_rst; logic c0_ddr4_ui_clk_sync_rst;
wire bus_struct_reset; logic bus_struct_reset;
wire peripheral_reset; logic peripheral_reset;
wire interconnect_aresetn; logic interconnect_aresetn;
wire peripheral_aresetn; logic peripheral_aresetn;
wire mb_reset; logic mb_reset;
// AHB Signals from Wally // AHB Signals from Wally
wire HCLKOpen; logic HCLKOpen;
wire HRESETnOpen; logic HRESETnOpen;
wire [63:0] HRDATAEXT; logic [63:0] HRDATAEXT;
wire HREADYEXT; logic HREADYEXT;
wire HRESPEXT; logic HRESPEXT;
wire HSELEXT; logic HSELEXT;
wire [55:0] HADDR; logic [55:0] HADDR;
wire [63:0] HWDATA; logic [63:0] HWDATA;
wire [64/8-1:0] HWSTRB; logic [64/8-1:0] HWSTRB;
wire HWRITE; logic HWRITE;
wire [2:0] HSIZE; logic [2:0] HSIZE;
wire [2:0] HBURST; logic [2:0] HBURST;
wire [1:0] HTRANS; logic [1:0] HTRANS;
wire HREADY; logic HREADY;
wire [3:0] HPROT; logic [3:0] HPROT;
wire HMASTLOCK; logic HMASTLOCK;
// GPIO Signals // GPIO Signals
wire [31:0] GPIOIN, GPIOOUT, GPIOEN; logic [31:0] GPIOIN, GPIOOUT, GPIOEN;
// AHB to AXI Bridge Signals // AHB to AXI Bridge Signals
wire [3:0] m_axi_awid; logic [3:0] m_axi_awid;
wire [7:0] m_axi_awlen; logic [7:0] m_axi_awlen;
wire [2:0] m_axi_awsize; logic [2:0] m_axi_awsize;
wire [1:0] m_axi_awburst; logic [1:0] m_axi_awburst;
wire [3:0] m_axi_awcache; logic [3:0] m_axi_awcache;
wire [31:0] m_axi_awaddr; logic [31:0] m_axi_awaddr;
wire [2:0] m_axi_awprot; logic [2:0] m_axi_awprot;
wire m_axi_awvalid; logic m_axi_awvalid;
wire m_axi_awready; logic m_axi_awready;
wire m_axi_awlock; logic m_axi_awlock;
wire [63:0] m_axi_wdata; logic [63:0] m_axi_wdata;
wire [7:0] m_axi_wstrb; logic [7:0] m_axi_wstrb;
wire m_axi_wlast; logic m_axi_wlast;
wire m_axi_wvalid; logic m_axi_wvalid;
wire m_axi_wready; logic m_axi_wready;
wire [3:0] m_axi_bid; logic [3:0] m_axi_bid;
wire [1:0] m_axi_bresp; logic [1:0] m_axi_bresp;
wire m_axi_bvalid; logic m_axi_bvalid;
wire m_axi_bready; logic m_axi_bready;
wire [3:0] m_axi_arid; logic [3:0] m_axi_arid;
wire [7:0] m_axi_arlen; logic [7:0] m_axi_arlen;
wire [2:0] m_axi_arsize; logic [2:0] m_axi_arsize;
wire [1:0] m_axi_arburst; logic [1:0] m_axi_arburst;
wire [2:0] m_axi_arprot; logic [2:0] m_axi_arprot;
wire [3:0] m_axi_arcache; logic [3:0] m_axi_arcache;
wire m_axi_arvalid; logic m_axi_arvalid;
wire [31:0] m_axi_araddr; logic [31:0] m_axi_araddr;
wire m_axi_arlock; logic m_axi_arlock;
wire m_axi_arready; logic m_axi_arready;
wire [3:0] m_axi_rid; logic [3:0] m_axi_rid;
wire [63:0] m_axi_rdata; logic [63:0] m_axi_rdata;
wire [1:0] m_axi_rresp; logic [1:0] m_axi_rresp;
wire m_axi_rvalid; logic m_axi_rvalid;
wire m_axi_rlast; logic m_axi_rlast;
wire m_axi_rready; logic m_axi_rready;
// AXI Signals going out of Clock Converter // AXI Signals going out of Clock Converter
wire [3:0] BUS_axi_arregion; logic [3:0] BUS_axi_arregion;
wire [3:0] BUS_axi_arqos; logic [3:0] BUS_axi_arqos;
wire [3:0] BUS_axi_awregion; logic [3:0] BUS_axi_awregion;
wire [3:0] BUS_axi_awqos; logic [3:0] BUS_axi_awqos;
wire [3:0] BUS_axi_awid; logic [3:0] BUS_axi_awid;
wire [7:0] BUS_axi_awlen; logic [7:0] BUS_axi_awlen;
wire [2:0] BUS_axi_awsize; logic [2:0] BUS_axi_awsize;
wire [1:0] BUS_axi_awburst; logic [1:0] BUS_axi_awburst;
wire [3:0] BUS_axi_awcache; logic [3:0] BUS_axi_awcache;
wire [31:0] BUS_axi_awaddr; logic [31:0] BUS_axi_awaddr;
wire [2:0] BUS_axi_awprot; logic [2:0] BUS_axi_awprot;
wire BUS_axi_awvalid; logic BUS_axi_awvalid;
wire BUS_axi_awready; logic BUS_axi_awready;
wire BUS_axi_awlock; logic BUS_axi_awlock;
wire [63:0] BUS_axi_wdata; logic [63:0] BUS_axi_wdata;
wire [7:0] BUS_axi_wstrb; logic [7:0] BUS_axi_wstrb;
wire BUS_axi_wlast; logic BUS_axi_wlast;
wire BUS_axi_wvalid; logic BUS_axi_wvalid;
wire BUS_axi_wready; logic BUS_axi_wready;
wire [3:0] BUS_axi_bid; logic [3:0] BUS_axi_bid;
wire [1:0] BUS_axi_bresp; logic [1:0] BUS_axi_bresp;
wire BUS_axi_bvalid; logic BUS_axi_bvalid;
wire BUS_axi_bready; logic BUS_axi_bready;
wire [3:0] BUS_axi_arid; logic [3:0] BUS_axi_arid;
wire [7:0] BUS_axi_arlen; logic [7:0] BUS_axi_arlen;
wire [2:0] BUS_axi_arsize; logic [2:0] BUS_axi_arsize;
wire [1:0] BUS_axi_arburst; logic [1:0] BUS_axi_arburst;
wire [2:0] BUS_axi_arprot; logic [2:0] BUS_axi_arprot;
wire [3:0] BUS_axi_arcache; logic [3:0] BUS_axi_arcache;
wire BUS_axi_arvalid; logic BUS_axi_arvalid;
wire [31:0] BUS_axi_araddr; logic [31:0] BUS_axi_araddr;
wire BUS_axi_arlock; logic BUS_axi_arlock;
wire BUS_axi_arready; logic BUS_axi_arready;
wire [3:0] BUS_axi_rid; logic [3:0] BUS_axi_rid;
wire [63:0] BUS_axi_rdata; logic [63:0] BUS_axi_rdata;
wire [1:0] BUS_axi_rresp; logic [1:0] BUS_axi_rresp;
wire BUS_axi_rvalid; logic BUS_axi_rvalid;
wire BUS_axi_rlast; logic BUS_axi_rlast;
wire BUS_axi_rready; logic BUS_axi_rready;
wire BUSCLK; logic BUSCLK;
wire sdio_reset_open; logic sdio_reset_open;
wire c0_init_calib_complete; logic c0_init_calib_complete;
wire dbg_clk; logic dbg_clk;
wire [511 : 0] dbg_bus; logic [511 : 0] dbg_bus;
wire ui_clk_sync_rst; logic ui_clk_sync_rst;
wire CLK208; logic CLK208;
wire clk167; logic clk167;
wire clk200; logic clk200;
wire app_sr_active; logic app_sr_active;
wire app_ref_ack; logic app_ref_ack;
wire app_zq_ack; logic app_zq_ack;
wire mmcm_locked; logic mmcm_locked;
wire [11:0] device_temp; logic [11:0] device_temp;
wire mmcm1_locked; logic mmcm1_locked;
(* mark_debug = "true" *) logic RVVIStall; (* mark_debug = "true" *) logic RVVIStall;