From 31ce81681696907dcaa3e1b48ac6f855f55ea4b4 Mon Sep 17 00:00:00 2001 From: MaxP Date: Wed, 16 Apr 2025 17:27:48 +0000 Subject: [PATCH] Updates project configuration for PipelineFilter module --- project.cfg | 223 +++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 219 insertions(+), 4 deletions(-) diff --git a/project.cfg b/project.cfg index f97f384..6590eaf 100644 --- a/project.cfg +++ b/project.cfg @@ -12,7 +12,7 @@ TARGET_PART = xc3s1200e-4-fg320 XILINX = /opt/Xilinx/14.7/ISE_DS/ISE # Optional the name of the top module (default is the project name) -TOPLEVEL = Pipeline_pb +TOPLEVEL = PipelineFilter # Optional the name of the ucf file (default is the project name) CONSTRAINTS = src/Pipeline_pb.ucf @@ -28,8 +28,10 @@ CONSTRAINTS = src/Pipeline_pb.ucf VHDSOURCE += src/Pipeline_pb.vhd VHDSOURCE += src/PipelineController.vhd VHDSOURCE += src/PipelineRegister.vhd +VHDSOURCE += src/PipelineFilter.vhd -VHDTEST += tests/Pipeline_tb.vhd +# VHDTEST += tests/Pipeline_tb.vhd +VHDTEST += tests/PipelineFilter_tb.vhd ## ## ## ## ## ## ## ## # --------------------- @@ -38,8 +40,221 @@ VHDTEST += tests/Pipeline_tb.vhd # General command line options to be passed to all ISE executables (default is `-intstyle xflow`) # COMMON_OPTS = + # Options for the XST synthesizer -XST_OPTS = -opt_mode speed -opt_level 2 +#### Synthese Options (XST) ##### + +# Optimization goal: prioritize speed or area. +# Values: Speed | Area +XST_OPTS += -opt_mode Speed + +# Optimization level: more aggressive optimizations at level 2. +# Values: 1 | 2 +XST_OPTS += -opt_level 2 + +# Use the new XST parser (recommended for modern designs). +# Values: yes | no +XST_OPTS += -use_new_parser yes + +# Preserve design hierarchy or allow flattening for optimization. +# Values: Yes | No | Soft +XST_OPTS += -keep_hierarchy No + +# Determines how hierarchy is preserved in the netlist. +# Values: As_Optimized | Rebuilt +XST_OPTS += -netlist_hierarchy As_Optimized + +# Global optimization strategy for nets. +# Values: AllClockNets | Offset_In_Before | Offset_Out_After | Inpad_To_Outpad | Max_Delay +XST_OPTS += -glob_opt AllClockNets + +## Misc ## + +# Enable reading of IP cores. +# Values: YES | NO +XST_OPTS += -read_cores YES + +# Do not write timing constraints into synthesis report. +# Values: YES | NO +XST_OPTS += -write_timing_constraints NO + +# Analyze paths across different clock domains. +# Values: YES | NO +XST_OPTS += -cross_clock_analysis NO + +# Character used to separate hierarchy levels in instance names. +# Default: / +XST_OPTS += -hierarchy_separator / + +# Delimiters used for bus signals. +# Values: <> | [] | () | {} +XST_OPTS += -bus_delimiter <> + +# Maintain original case of identifiers. +# Values: Maintain | Upper | Lower +XST_OPTS += -case Maintain + +# Target maximum utilization ratio for slices. +# Values: 1–100 +XST_OPTS += -slice_utilization_ratio 100 + +# Target maximum utilization ratio for BRAMs. +# Values: 1–100 +XST_OPTS += -bram_utilization_ratio 100 + +# Use Verilog 2001 syntax features. +# Values: YES | NO +XST_OPTS += -verilog2001 YES + +#### HDL Options #### + +## FSM ## + +# Extract FSMs (Finite State Machines) from HDL code. +# Values: YES | NO +XST_OPTS += -fsm_extract YES + +# Encoding strategy for FSMs. +# Values: Auto | Gray | One-Hot | Johnson | Compact | Sequential | Speed1 | User +XST_OPTS += -fsm_encoding Auto + +# Add safe logic for undefined FSM states. +# Values: Yes | No +XST_OPTS += -safe_implementation No + +# Structure used to implement FSMs. +# Values: LUT | BRAM +XST_OPTS += -fsm_style LUT + +## RAM/ROM ## + +# Extract RAM inference from HDL. +# Values: Yes | No +XST_OPTS += -ram_extract Yes + +# Style used to implement RAM. +# Values: Auto | Block | Distributed +XST_OPTS += -ram_style Auto + +# Extract ROM inference from HDL. +# Values: Yes | No +XST_OPTS += -rom_extract Yes + +# Style used for implementing ROM. +# Values: Auto | Distributed | Block +XST_OPTS += -rom_style Auto + +# Enable or disable automatic BRAM packing. +# Values: YES | NO +XST_OPTS += -auto_bram_packing NO + +## MUX/Decoder/Shift Register ## + +# Extract multiplexers where possible. +# Values: Yes | No | Force +XST_OPTS += -mux_extract Yes + +# Style used for implementing MUX logic. +# Values: Auto | MUXCY | MUXF +XST_OPTS += -mux_style Auto + +# Extract decoder logic from behavioral code. +# Values: YES | NO +XST_OPTS += -decoder_extract YES + +# Extract and optimize priority encoder structures. +# Values: Yes | No | Force +XST_OPTS += -priority_extract Yes + +# Extract shift register logic. +# Values: YES | NO +XST_OPTS += -shreg_extract YES + +# Extract simple shift operations into dedicated hardware. +# Values: YES | NO +XST_OPTS += -shift_extract YES + +## Multiplier ## + +# Style for implementing multipliers. +# Values: Auto | LUT | Pipe_LUT | Pipe_Block | Block +XST_OPTS += -mult_style Auto + +## Misc ## + +# Collapse XOR trees where beneficial. +# Values: YES | NO +XST_OPTS += -xor_collapse YES + +# Share resources like adders or multipliers between logic blocks. +# Values: YES | NO | Force +XST_OPTS += -resource_sharing YES + +# Convert asynchronous resets to synchronous where possible. +# Values: YES | NO +XST_OPTS += -async_to_sync NO + +#### Xilinx Specific Options #### + +## Optimization ## + +# Enable removal of logically equivalent registers. +# Values: YES | NO +XST_OPTS += -equivalent_register_removal YES + +# Duplicate registers to reduce fanout or improve timing. +# Values: YES | NO +XST_OPTS += -register_duplication YES + +# Move registers across logic to balance timing. +# Values: Yes | No +XST_OPTS += -register_balancing No + +# Use clock enable signals where possible. +# Values: Auto | Yes | No +XST_OPTS += -use_clock_enable Yes + +# Use synchronous set (preset) signals when available. +# Values: Auto | Yes | No +XST_OPTS += -use_sync_set Yes + +# Use synchronous reset signals where possible. +# Values: Auto | Yes | No +XST_OPTS += -use_sync_reset Yes + +## I/O ## + +# Insert IO buffers for top-level ports. +# Values: YES | NO +XST_OPTS += -iobuf YES + +# Placement strategy for IOB registers (Auto = let tools decide). +# Values: Auto | YES | NO +XST_OPTS += -iob Auto + +## Misc ## + +# Maximum allowed fanout for a net. +# Values: integer (e.g., 500) +XST_OPTS += -max_fanout 500 + +# Maximum number of BUFGs (global buffers) to use. +# Values: 0–32 (device-dependent) +XST_OPTS += -bufg 24 + +# Enable logic packing into slices. +# Values: YES | NO +XST_OPTS += -slice_packing YES + +# Try to reduce the number of primitive instances used. +# Values: YES | NO +XST_OPTS += -optimize_primitives NO + +# Margin in percent beyond the target slice utilization. +# Values: 0–100 +XST_OPTS += -slice_utilization_ratio_maxmargin 5 + + # Options for the NGDBuild tool # NGDBUILD_OPTS = @@ -64,7 +279,7 @@ PAR_OPTS = -ol high # Options for the Fuse tool # FUSE_OPTS = -ISIM_CMD = +# ISIM_CMD = ## ## ## ## ## ## ## ## # ---------------------