From 4f009620b5be5f303b801c784d4141cbbbaa930e Mon Sep 17 00:00:00 2001 From: Lars-Peter Clausen Date: Thu, 20 Jul 2017 17:58:50 +0200 Subject: [PATCH] axi_dmac: axi_dmac_hw.tcl: Cleanup configuration parameters Group configuration parameters by function, provide human readable labels as well as specify the allowed ranges for each parameter. This prevents accidental misconfiguration and also makes it easier to inspect (or change) the configuration in the Qsys GUI. Signed-off-by: Lars-Peter Clausen --- library/axi_dmac/axi_dmac_hw.tcl | 164 ++++++++++++++----------------- 1 file changed, 72 insertions(+), 92 deletions(-) diff --git a/library/axi_dmac/axi_dmac_hw.tcl b/library/axi_dmac/axi_dmac_hw.tcl index badb49c3f..c3e9abd57 100644 --- a/library/axi_dmac/axi_dmac_hw.tcl +++ b/library/axi_dmac/axi_dmac_hw.tcl @@ -45,110 +45,90 @@ add_fileset_file axi_dmac_constr.sdc SDC PATH axi_dmac_constr.sdc # parameters +set group "General Configuration" + add_parameter ID INTEGER 0 -set_parameter_property ID DEFAULT_VALUE 0 -set_parameter_property ID DISPLAY_NAME ID -set_parameter_property ID TYPE INTEGER -set_parameter_property ID UNITS None +set_parameter_property ID DISPLAY_NAME "Core ID" set_parameter_property ID HDL_PARAMETER true +set_parameter_property ID GROUP $group -add_parameter DMA_DATA_WIDTH_SRC INTEGER 0 -set_parameter_property DMA_DATA_WIDTH_SRC DEFAULT_VALUE 64 -set_parameter_property DMA_DATA_WIDTH_SRC DISPLAY_NAME DMA_DATA_WIDTH_SRC -set_parameter_property DMA_DATA_WIDTH_SRC TYPE INTEGER -set_parameter_property DMA_DATA_WIDTH_SRC UNITS None -set_parameter_property DMA_DATA_WIDTH_SRC HDL_PARAMETER true - -add_parameter DMA_DATA_WIDTH_DEST INTEGER 0 -set_parameter_property DMA_DATA_WIDTH_DEST DEFAULT_VALUE 64 -set_parameter_property DMA_DATA_WIDTH_DEST DISPLAY_NAME DMA_DATA_WIDTH_DEST -set_parameter_property DMA_DATA_WIDTH_DEST TYPE INTEGER -set_parameter_property DMA_DATA_WIDTH_DEST UNITS None -set_parameter_property DMA_DATA_WIDTH_DEST HDL_PARAMETER true - -add_parameter DMA_LENGTH_WIDTH INTEGER 0 -set_parameter_property DMA_LENGTH_WIDTH DEFAULT_VALUE 24 -set_parameter_property DMA_LENGTH_WIDTH DISPLAY_NAME DMA_LENGTH_WIDTH -set_parameter_property DMA_LENGTH_WIDTH TYPE INTEGER -set_parameter_property DMA_LENGTH_WIDTH UNITS None +add_parameter DMA_LENGTH_WIDTH INTEGER 24 +set_parameter_property DMA_LENGTH_WIDTH DISPLAY_NAME "DMA Transfer Length Register Width" +set_parameter_property DMA_LENGTH_WIDTH UNITS Bits set_parameter_property DMA_LENGTH_WIDTH HDL_PARAMETER true +set_parameter_property DMA_LENGTH_WIDTH ALLOWED_RANGES {8:32} +set_parameter_property DMA_LENGTH_WIDTH GROUP $group -add_parameter DMA_2D_TRANSFER INTEGER 0 -set_parameter_property DMA_2D_TRANSFER DEFAULT_VALUE 1 -set_parameter_property DMA_2D_TRANSFER DISPLAY_NAME DMA_2D_TRANSFER -set_parameter_property DMA_2D_TRANSFER TYPE INTEGER -set_parameter_property DMA_2D_TRANSFER UNITS None +add_parameter FIFO_SIZE INTEGER 4 +set_parameter_property FIFO_SIZE DISPLAY_NAME "FIFO Size (In Bursts)" +set_parameter_property FIFO_SIZE HDL_PARAMETER true +set_parameter_property FIFO_SIZE GROUP $group + +foreach {suffix group} { \ + "SRC" "Source" \ + "DEST" "Destination" \ + } { + + add_display_item "Endpoint Configuration" $group "group" + + add_parameter DMA_TYPE_$suffix INTEGER 0 + set_parameter_property DMA_TYPE_$suffix DISPLAY_NAME "Type" + set_parameter_property DMA_TYPE_$suffix HDL_PARAMETER true + set_parameter_property DMA_TYPE_$suffix ALLOWED_RANGES \ + { "0:Memory-Mapped AXI" "1:Streaming AXI" "2:FIFO Interface" } + set_parameter_property DMA_TYPE_$suffix GROUP $group + + add_parameter DMA_DATA_WIDTH_$suffix INTEGER 64 + set_parameter_property DMA_DATA_WIDTH_$suffix DISPLAY_NAME "Bus Width" + set_parameter_property DMA_DATA_WIDTH_$suffix UNITS Bits + set_parameter_property DMA_DATA_WIDTH_$suffix HDL_PARAMETER true + set_parameter_property DMA_DATA_WIDTH_$suffix ALLOWED_RANGES {16 32 64 128 256 512 1024} + set_parameter_property DMA_DATA_WIDTH_$suffix GROUP $group + + add_parameter AXI_SLICE_$suffix INTEGER 0 + set_parameter_property AXI_SLICE_$suffix DISPLAY_NAME "Insert Register Slice" + set_parameter_property AXI_SLICE_$suffix DISPLAY_HINT boolean + set_parameter_property AXI_SLICE_$suffix HDL_PARAMETER true + set_parameter_property AXI_SLICE_$suffix GROUP $group +} + +# FIFO interface +set_parameter_property DMA_TYPE_SRC DEFAULT_VALUE 2 + +set group "Features" + +add_parameter CYCLIC INTEGER 1 +set_parameter_property CYCLIC DISPLAY_NAME "Cyclic Transfer Support" +set_parameter_property CYCLIC DISPLAY_HINT boolean +set_parameter_property CYCLIC HDL_PARAMETER true +set_parameter_property CYCLIC GROUP $group + +add_parameter DMA_2D_TRANSFER INTEGER 1 +set_parameter_property DMA_2D_TRANSFER DISPLAY_NAME "2D Transfer Support" +set_parameter_property DMA_2D_TRANSFER DISPLAY_HINT boolean set_parameter_property DMA_2D_TRANSFER HDL_PARAMETER true - -add_parameter ASYNC_CLK_REQ_SRC INTEGER 0 -set_parameter_property ASYNC_CLK_REQ_SRC DEFAULT_VALUE 1 -set_parameter_property ASYNC_CLK_REQ_SRC DISPLAY_NAME ASYNC_CLK_REQ_SRC -set_parameter_property ASYNC_CLK_REQ_SRC TYPE INTEGER -set_parameter_property ASYNC_CLK_REQ_SRC UNITS None -set_parameter_property ASYNC_CLK_REQ_SRC HDL_PARAMETER true - -add_parameter ASYNC_CLK_SRC_DEST INTEGER 0 -set_parameter_property ASYNC_CLK_SRC_DEST DEFAULT_VALUE 1 -set_parameter_property ASYNC_CLK_SRC_DEST DISPLAY_NAME ASYNC_CLK_SRC_DEST -set_parameter_property ASYNC_CLK_SRC_DEST TYPE INTEGER -set_parameter_property ASYNC_CLK_SRC_DEST UNITS None -set_parameter_property ASYNC_CLK_SRC_DEST HDL_PARAMETER true - -add_parameter ASYNC_CLK_DEST_REQ INTEGER 0 -set_parameter_property ASYNC_CLK_DEST_REQ DEFAULT_VALUE 1 -set_parameter_property ASYNC_CLK_DEST_REQ DISPLAY_NAME ASYNC_CLK_DEST_REQ -set_parameter_property ASYNC_CLK_DEST_REQ TYPE INTEGER -set_parameter_property ASYNC_CLK_DEST_REQ UNITS None -set_parameter_property ASYNC_CLK_DEST_REQ HDL_PARAMETER true - -add_parameter AXI_SLICE_DEST INTEGER 0 -set_parameter_property AXI_SLICE_DEST DEFAULT_VALUE 0 -set_parameter_property AXI_SLICE_DEST DISPLAY_NAME AXI_SLICE_DEST -set_parameter_property AXI_SLICE_DEST TYPE INTEGER -set_parameter_property AXI_SLICE_DEST UNITS None -set_parameter_property AXI_SLICE_DEST HDL_PARAMETER true - -add_parameter AXI_SLICE_SRC INTEGER 0 -set_parameter_property AXI_SLICE_SRC DEFAULT_VALUE 0 -set_parameter_property AXI_SLICE_SRC DISPLAY_NAME AXI_SLICE_SRC -set_parameter_property AXI_SLICE_SRC TYPE INTEGER -set_parameter_property AXI_SLICE_SRC UNITS None -set_parameter_property AXI_SLICE_SRC HDL_PARAMETER true +set_parameter_property DMA_2D_TRANSFER GROUP $group add_parameter SYNC_TRANSFER_START INTEGER 0 -set_parameter_property SYNC_TRANSFER_START DEFAULT_VALUE 0 -set_parameter_property SYNC_TRANSFER_START DISPLAY_NAME SYNC_TRANSFER_START -set_parameter_property SYNC_TRANSFER_START TYPE INTEGER -set_parameter_property SYNC_TRANSFER_START UNITS None +set_parameter_property SYNC_TRANSFER_START DISPLAY_NAME "Transfer Start Synchronization Support" +set_parameter_property SYNC_TRANSFER_START DISPLAY_HINT boolean set_parameter_property SYNC_TRANSFER_START HDL_PARAMETER true +set_parameter_property SYNC_TRANSFER_START GROUP $group -add_parameter CYCLIC INTEGER 0 -set_parameter_property CYCLIC DEFAULT_VALUE 1 -set_parameter_property CYCLIC DISPLAY_NAME CYCLIC -set_parameter_property CYCLIC TYPE INTEGER -set_parameter_property CYCLIC UNITS None -set_parameter_property CYCLIC HDL_PARAMETER true +set group "Clock Domain Configuration" -add_parameter DMA_TYPE_DEST INTEGER 0 -set_parameter_property DMA_TYPE_DEST DEFAULT_VALUE 0 -set_parameter_property DMA_TYPE_DEST DISPLAY_NAME DMA_TYPE_DEST -set_parameter_property DMA_TYPE_DEST TYPE INTEGER -set_parameter_property DMA_TYPE_DEST UNITS None -set_parameter_property DMA_TYPE_DEST HDL_PARAMETER true +foreach {p name} { \ + ASYNC_CLK_REQ_SRC "Request and Source" \ + ASYNC_CLK_SRC_DEST "Source and Destination" \ + ASYNC_CLK_DEST_REQ "Destination and Request" \ + } { -add_parameter DMA_TYPE_SRC INTEGER 0 -set_parameter_property DMA_TYPE_SRC DEFAULT_VALUE 2 -set_parameter_property DMA_TYPE_SRC DISPLAY_NAME DMA_TYPE_SRC -set_parameter_property DMA_TYPE_SRC TYPE INTEGER -set_parameter_property DMA_TYPE_SRC UNITS None -set_parameter_property DMA_TYPE_SRC HDL_PARAMETER true - -add_parameter FIFO_SIZE INTEGER 0 "In bursts" -set_parameter_property FIFO_SIZE DEFAULT_VALUE 4 -set_parameter_property FIFO_SIZE DISPLAY_NAME FIFO_SIZE -set_parameter_property FIFO_SIZE TYPE INTEGER -set_parameter_property FIFO_SIZE UNITS None -set_parameter_property FIFO_SIZE HDL_PARAMETER true + add_parameter $p INTEGER 1 + set_parameter_property $p DISPLAY_NAME [concat $name "Clock Asynchronous"] + set_parameter_property $p DISPLAY_HINT boolean + set_parameter_property $p HDL_PARAMETER true + set_parameter_property $p GROUP $group +} # axi4 slave