Skip to content

Commit b60d01d

Browse files
committed
Update packaging.tcl with all Verilog parameters, sensible defaults and configurability
1 parent c4560c9 commit b60d01d

1 file changed

Lines changed: 120 additions & 52 deletions

File tree

vivado/package.tcl

Lines changed: 120 additions & 52 deletions
Original file line numberDiff line numberDiff line change
@@ -98,84 +98,152 @@ set_property display_name Reg [ipx::get_address_blocks Reg -of_objects [ipx::get
9898
ipx::add_model_parameters_from_hdl -ordered_files [lindex $SOURCES_LIST 0] -top_module_name $TOP_LEVEL_NAME [ipx::current_core]
9999
ipx::infer_user_parameters [ipx::current_core]
100100

101-
# DECOMPANDING_FLUT_FILE (hidden)
102-
#set_property value decompanding_flut_short.mem [ipx::get_user_parameters DECOMPANDING_FLUT_FILE -of_objects [ipx::current_core]]
103-
#set_property value decompanding_flut_short.mem [ipx::get_hdl_parameters DECOMPANDING_FLUT_FILE -of_objects [ipx::current_core]]
104-
105-
# DECOMPANDING_XLUT_FILE (hidden)
106-
#set_property value decompanding_xlut_short.mem [ipx::get_user_parameters DECOMPANDING_XLUT_FILE -of_objects [ipx::current_core]]
107-
#set_property value decompanding_xlut_short.mem [ipx::get_hdl_parameters DECOMPANDING_XLUT_FILE -of_objects [ipx::current_core]]
108-
109-
# GAMMA_GAIN_FILE (hidden)
110-
#set_property value gamma_gain.mem [ipx::get_user_parameters GAMMA_GAIN_FILE -of_objects [ipx::current_core]]
111-
#set_property value gamma_gain.mem [ipx::get_hdl_parameters GAMMA_GAIN_FILE -of_objects [ipx::current_core]]
112-
113-
# GAMMA_OFFSET_FILE (hidden)
114-
#set_property value gamma_offset.mem [ipx::get_user_parameters GAMMA_OFFSET_FILE -of_objects [ipx::current_core]]
115-
#set_property value gamma_offset.mem [ipx::get_hdl_parameters GAMMA_OFFSET_FILE -of_objects [ipx::current_core]]
116-
117-
# M_AXIS_DATA_WIDTH (hidden)
118-
#set_property value 24 [ipx::get_user_parameters M_AXIS_DATA_WIDTH -of_objects [ipx::current_core]]
119-
#set_property value 24 [ipx::get_hdl_parameters M_AXIS_DATA_WIDTH -of_objects [ipx::current_core]]
120-
#set_property enablement_tcl_expr {8*floor(($PIXEL_PER_CYCLE*3*$COMPONENT_BIT_WIDTH + 7)/8)} [ipx::get_user_parameters M_AXIS_DATA_WIDTH -of_objects [ipx::current_core]]
121-
#set_property value_tcl_expr {8*floor(($PIXEL_PER_CYCLE*3*$COMPONENT_BIT_WIDTH + 7)/8)} [ipx::get_user_parameters M_AXIS_DATA_WIDTH -of_objects [ipx::current_core]]
122-
123-
# S_AXIS_DATA_WIDTH (hidden)
124-
#set_property value 16 [ipx::get_user_parameters S_AXIS_DATA_WIDTH -of_objects [ipx::current_core]]
125-
#set_property value 16 [ipx::get_hdl_parameters S_AXIS_DATA_WIDTH -of_objects [ipx::current_core]]
126-
#set_property enablement_tcl_expr {8*floor(($PIXEL_PER_CYCLE*$PIXEL_BIT_WIDTH + 7)/8)} [ipx::get_user_parameters S_AXIS_DATA_WIDTH -of_objects [ipx::current_core]]
127-
#set_property value_tcl_expr {8*floor(($PIXEL_PER_CYCLE*$PIXEL_BIT_WIDTH + 7)/8)} [ipx::get_user_parameters S_AXIS_DATA_WIDTH -of_objects [ipx::current_core]]
128-
129101
# COMPONENT_BIT_WIDTH
130102
ipgui::add_param -name {COMPONENT_BIT_WIDTH} -component [ipx::current_core] -display_name {Output Component Bit Width} -show_label {true} -show_range {true} -widget {comboBox}
131103
set_property tooltip {Bits per output component} [ipgui::get_guiparamspec -name "COMPONENT_BIT_WIDTH" -component [ipx::current_core] ]
104+
set_property value 8 [ipx::get_user_parameters COMPONENT_BIT_WIDTH -of_objects [ipx::current_core]]
105+
set_property value 8 [ipx::get_hdl_parameters COMPONENT_BIT_WIDTH -of_objects [ipx::current_core]]
132106
set_property value_validation_type list [ipx::get_user_parameters COMPONENT_BIT_WIDTH -of_objects [ipx::current_core]]
133107
set_property value_validation_list {8 10 12 14} [ipx::get_user_parameters COMPONENT_BIT_WIDTH -of_objects [ipx::current_core]]
134108

135109
# CFA_ORIENTATION
136-
#set_property value 0 [ipx::get_user_parameters CFA_ORIENTATION -of_objects [ipx::current_core]]
137-
#set_property value 0 [ipx::get_hdl_parameters CFA_ORIENTATION -of_objects [ipx::current_core]]
138-
set_property value_validation_type pairs [ipx::get_user_parameters CFA_ORIENTATION -of_objects [ipx::current_core]]
139-
set_property value_validation_pairs {BG-GR 0 GB-RG 1 GR-BG 2 RG-GB 3} [ipx::get_user_parameters CFA_ORIENTATION -of_objects [ipx::current_core]]
140110
ipgui::add_param -name {CFA_ORIENTATION} -component [ipx::current_core] -display_name {CFA Orientation} -show_label {true} -show_range {true} -widget {comboBox}
141111
set_property tooltip {Color filter array ordering} [ipgui::get_guiparamspec -name "CFA_ORIENTATION" -component [ipx::current_core] ]
112+
set_property value 0 [ipx::get_user_parameters CFA_ORIENTATION -of_objects [ipx::current_core]]
113+
set_property value 0 [ipx::get_hdl_parameters CFA_ORIENTATION -of_objects [ipx::current_core]]
114+
set_property value_validation_type pairs [ipx::get_user_parameters CFA_ORIENTATION -of_objects [ipx::current_core]]
115+
set_property value_validation_pairs {BG-GR 0 GB-RG 1 GR-BG 2 RG-GB 3} [ipx::get_user_parameters CFA_ORIENTATION -of_objects [ipx::current_core]]
142116

143117
# PIXEL_PER_CYCLE
144-
#set_property value 1 [ipx::get_user_parameters PIXEL_PER_CYCLE -of_objects [ipx::current_core]]
145-
#set_property value 1 [ipx::get_hdl_parameters PIXEL_PER_CYCLE -of_objects [ipx::current_core]]
146-
set_property value_validation_type list [ipx::get_user_parameters PIXEL_PER_CYCLE -of_objects [ipx::current_core]]
147-
set_property value_validation_list {1 2 4} [ipx::get_user_parameters PIXEL_PER_CYCLE -of_objects [ipx::current_core]]
148-
ipx::update_dependency [ipx::get_user_parameters PIXEL_PER_CYCLE -of_objects [ipx::current_core]]
149118
ipgui::add_param -name {PIXEL_PER_CYCLE} -component [ipx::current_core] -display_name {Pixel Per Cycle} -show_label {true} -show_range {true} -widget {comboBox}
150119
set_property tooltip {Number of pixels that are processed per cycle} [ipgui::get_guiparamspec -name "PIXEL_PER_CYCLE" -component [ipx::current_core] ]
120+
set_property value 4 [ipx::get_user_parameters PIXEL_PER_CYCLE -of_objects [ipx::current_core]]
121+
set_property value 4 [ipx::get_hdl_parameters PIXEL_PER_CYCLE -of_objects [ipx::current_core]]
122+
set_property value_validation_type list [ipx::get_user_parameters PIXEL_PER_CYCLE -of_objects [ipx::current_core]]
123+
set_property value_validation_list {1 2 4} [ipx::get_user_parameters PIXEL_PER_CYCLE -of_objects [ipx::current_core]]
151124

152125
# PIXEL_BIT_WIDTH
153-
set_property value_validation_type list [ipx::get_user_parameters PIXEL_BIT_WIDTH -of_objects [ipx::current_core]]
154-
set_property value_validation_list {12 14 16 18 20 22 24} [ipx::get_user_parameters PIXEL_BIT_WIDTH -of_objects [ipx::current_core]]
155126
ipgui::add_param -name {PIXEL_BIT_WIDTH} -component [ipx::current_core] -display_name {Pixel Bit Width} -show_label {true} -show_range {true} -widget {comboBox}
156127
set_property tooltip {Input pixel bit width} [ipgui::get_guiparamspec -name "PIXEL_BIT_WIDTH" -component [ipx::current_core] ]
157128
set_property widget {comboBox} [ipgui::get_guiparamspec -name "PIXEL_BIT_WIDTH" -component [ipx::current_core] ]
129+
set_property value 12 [ipx::get_user_parameters PIXEL_BIT_WIDTH -of_objects [ipx::current_core]]
130+
set_property value 12 [ipx::get_hdl_parameters PIXEL_BIT_WIDTH -of_objects [ipx::current_core]]
131+
set_property value_validation_type list [ipx::get_user_parameters PIXEL_BIT_WIDTH -of_objects [ipx::current_core]]
132+
set_property value_validation_list {12 14 16 18 20 22 24} [ipx::get_user_parameters PIXEL_BIT_WIDTH -of_objects [ipx::current_core]]
158133

159134
# MAX_RESOLUTION
160-
set_property value_validation_type list [ipx::get_user_parameters MAX_RESOLUTION -of_objects [ipx::current_core]]
161-
set_property value_validation_list {1024 2048 4096} [ipx::get_user_parameters MAX_RESOLUTION -of_objects [ipx::current_core]]
162135
ipgui::add_param -name {MAX_RESOLUTION} -component [ipx::current_core] -display_name {Max Horizontal Resolution} -show_label {true} -show_range {true} -widget {comboBox}
163136
set_property tooltip {Maximum line length for line buffers} [ipgui::get_guiparamspec -name "MAX_RESOLUTION" -component [ipx::current_core] ]
137+
set_property value 4096 [ipx::get_user_parameters MAX_RESOLUTION -of_objects [ipx::current_core]]
138+
set_property value 4096 [ipx::get_hdl_parameters MAX_RESOLUTION -of_objects [ipx::current_core]]
139+
set_property value_validation_type list [ipx::get_user_parameters MAX_RESOLUTION -of_objects [ipx::current_core]]
140+
set_property value_validation_list {1024 2048 4096} [ipx::get_user_parameters MAX_RESOLUTION -of_objects [ipx::current_core]]
164141

165-
# GUI
166-
ipx::create_xgui_files [ipx::current_core]
167-
ipx::create_default_gui_files [ipx::current_core ]
142+
# DECOMPANDING_XLUT_FILE (hidden)
143+
set_property value decompanding_xlut.mem [ipx::get_user_parameters DECOMPANDING_XLUT_FILE -of_objects [ipx::current_core]]
144+
set_property value decompanding_xlut.mem [ipx::get_hdl_parameters DECOMPANDING_XLUT_FILE -of_objects [ipx::current_core]]
145+
set_property enablement_value false [ipx::get_user_parameters DECOMPANDING_XLUT_FILE -of_objects [ipx::current_core]]
168146

169-
# Move control widgets to Page 0
170-
ipgui::move_param -component [ipx::current_core] -order 0 [ipgui::get_guiparamspec -name "COMPONENT_BIT_WIDTH" -component [ipx::current_core]] -parent [ipgui::get_pagespec -name "Page 0" -component [ipx::current_core]]
171-
ipgui::move_param -component [ipx::current_core] -order 0 [ipgui::get_guiparamspec -name "CFA_ORIENTATION" -component [ipx::current_core]] -parent [ipgui::get_pagespec -name "Page 0" -component [ipx::current_core]]
172-
ipgui::move_param -component [ipx::current_core] -order 0 [ipgui::get_guiparamspec -name "PIXEL_PER_CYCLE" -component [ipx::current_core]] -parent [ipgui::get_pagespec -name "Page 0" -component [ipx::current_core]]
173-
ipgui::move_param -component [ipx::current_core] -order 0 [ipgui::get_guiparamspec -name "PIXEL_BIT_WIDTH" -component [ipx::current_core]] -parent [ipgui::get_pagespec -name "Page 0" -component [ipx::current_core]]
174-
ipgui::move_param -component [ipx::current_core] -order 0 [ipgui::get_guiparamspec -name "MAX_RESOLUTION" -component [ipx::current_core]] -parent [ipgui::get_pagespec -name "Page 0" -component [ipx::current_core]]
147+
# DECOMPANDING_YLUT_FILE (hidden)
148+
set_property value decompanding_ylut_12_bit.mem [ipx::get_user_parameters DECOMPANDING_YLUT_FILE -of_objects [ipx::current_core]]
149+
set_property value decompanding_ylut_12_bit.mem [ipx::get_hdl_parameters DECOMPANDING_YLUT_FILE -of_objects [ipx::current_core]]
150+
set_property enablement_value false [ipx::get_user_parameters DECOMPANDING_YLUT_FILE -of_objects [ipx::current_core]]
175151

176-
# TODO: constraints
152+
# DECOMPANDING_FLUT_FILE (hidden)
153+
set_property value decompanding_flut_12_bit.mem [ipx::get_user_parameters DECOMPANDING_FLUT_FILE -of_objects [ipx::current_core]]
154+
set_property value decompanding_flut_12_bit.mem [ipx::get_hdl_parameters DECOMPANDING_FLUT_FILE -of_objects [ipx::current_core]]
155+
set_property enablement_value false [ipx::get_user_parameters DECOMPANDING_FLUT_FILE -of_objects [ipx::current_core]]
156+
157+
# DECOMPANDING_NUM_KNEE_POINTS (hidden)
158+
set_property value 16 [ipx::get_user_parameters DECOMPANDING_NUM_KNEE_POINTS -of_objects [ipx::current_core]]
159+
set_property value 16 [ipx::get_hdl_parameters DECOMPANDING_NUM_KNEE_POINTS -of_objects [ipx::current_core]]
160+
set_property enablement_value false [ipx::get_user_parameters DECOMPANDING_NUM_KNEE_POINTS -of_objects [ipx::current_core]]
161+
162+
# GAMMA_LUT_FILE (hidden)
163+
set_property value lut.mem [ipx::get_user_parameters GAMMA_LUT_FILE -of_objects [ipx::current_core]]
164+
set_property value lut.mem [ipx::get_hdl_parameters GAMMA_LUT_FILE -of_objects [ipx::current_core]]
165+
set_property enablement_value false [ipx::get_user_parameters GAMMA_LUT_FILE -of_objects [ipx::current_core]]
166+
167+
# S_AXI_RRESP_WIDTH (hidden)
168+
set_property value 2 [ipx::get_user_parameters S_AXI_RRESP_WIDTH -of_objects [ipx::current_core]]
169+
set_property value 2 [ipx::get_hdl_parameters S_AXI_RRESP_WIDTH -of_objects [ipx::current_core]]
170+
set_property enablement_value false [ipx::get_user_parameters S_AXI_RRESP_WIDTH -of_objects [ipx::current_core]]
171+
172+
# S_AXI_BRESP_WIDTH (hidden)
173+
set_property value 2 [ipx::get_user_parameters S_AXI_BRESP_WIDTH -of_objects [ipx::current_core]]
174+
set_property value 2 [ipx::get_hdl_parameters S_AXI_BRESP_WIDTH -of_objects [ipx::current_core]]
175+
set_property enablement_value false [ipx::get_user_parameters S_AXI_BRESP_WIDTH -of_objects [ipx::current_core]]
176+
177+
# S_AXI_DATA_WIDTH (hidden)
178+
set_property value 32 [ipx::get_user_parameters S_AXI_DATA_WIDTH -of_objects [ipx::current_core]]
179+
set_property value 32 [ipx::get_hdl_parameters S_AXI_DATA_WIDTH -of_objects [ipx::current_core]]
180+
set_property enablement_value false [ipx::get_user_parameters S_AXI_DATA_WIDTH -of_objects [ipx::current_core]]
181+
182+
# S_AXI_ADDR_WIDTH (hidden)
183+
set_property value 5 [ipx::get_user_parameters S_AXI_ADDR_WIDTH -of_objects [ipx::current_core]]
184+
set_property value 5 [ipx::get_hdl_parameters S_AXI_ADDR_WIDTH -of_objects [ipx::current_core]]
185+
set_property enablement_value false [ipx::get_user_parameters S_AXI_ADDR_WIDTH -of_objects [ipx::current_core]]
186+
187+
# S_AXI_WSTRB_WIDTH (auto-derived, hidden from GUI)
188+
set_property value 4 [ipx::get_user_parameters S_AXI_WSTRB_WIDTH -of_objects [ipx::current_core]]
189+
set_property value 4 [ipx::get_hdl_parameters S_AXI_WSTRB_WIDTH -of_objects [ipx::current_core]]
190+
set_property enablement_value false [ipx::get_user_parameters S_AXI_WSTRB_WIDTH -of_objects [ipx::current_core]]
191+
set_property value_tcl_expr {$S_AXI_DATA_WIDTH / 8} [ipx::get_user_parameters S_AXI_WSTRB_WIDTH -of_objects [ipx::current_core]]
192+
193+
# TUSER_WIDTH (hidden)
194+
set_property value 1 [ipx::get_user_parameters TUSER_WIDTH -of_objects [ipx::current_core]]
195+
set_property value 1 [ipx::get_hdl_parameters TUSER_WIDTH -of_objects [ipx::current_core]]
196+
set_property enablement_value false [ipx::get_user_parameters TUSER_WIDTH -of_objects [ipx::current_core]]
197+
198+
# M_AXIS_DATA_WIDTH (auto-derived, hidden from GUI)
199+
set_property value 96 [ipx::get_user_parameters M_AXIS_DATA_WIDTH -of_objects [ipx::current_core]]
200+
set_property value 96 [ipx::get_hdl_parameters M_AXIS_DATA_WIDTH -of_objects [ipx::current_core]]
201+
set_property enablement_value false [ipx::get_user_parameters M_AXIS_DATA_WIDTH -of_objects [ipx::current_core]]
202+
set_property value_tcl_expr {8*floor(($PIXEL_PER_CYCLE * 3 * $COMPONENT_BIT_WIDTH + 7) / 8)} [ipx::get_user_parameters M_AXIS_DATA_WIDTH -of_objects [ipx::current_core]]
203+
204+
# S_AXIS_DATA_WIDTH (auto-derived, hidden from GUI)
205+
set_property value 48 [ipx::get_user_parameters S_AXIS_DATA_WIDTH -of_objects [ipx::current_core]]
206+
set_property value 48 [ipx::get_hdl_parameters S_AXIS_DATA_WIDTH -of_objects [ipx::current_core]]
207+
set_property enablement_value false [ipx::get_user_parameters S_AXIS_DATA_WIDTH -of_objects [ipx::current_core]]
208+
set_property value_tcl_expr {8*floor(($PIXEL_PER_CYCLE * $PIXEL_BIT_WIDTH + 7) / 8)} [ipx::get_user_parameters S_AXIS_DATA_WIDTH -of_objects [ipx::current_core]]
209+
210+
# Update dependencies
211+
ipx::update_dependency [ipx::get_user_parameters CFA_ORIENTATION -of_objects [ipx::current_core]]
212+
ipx::update_dependency [ipx::get_user_parameters MAX_RESOLUTION -of_objects [ipx::current_core]]
213+
ipx::update_dependency [ipx::get_user_parameters PIXEL_PER_CYCLE -of_objects [ipx::current_core]]
214+
ipx::update_dependency [ipx::get_user_parameters PIXEL_BIT_WIDTH -of_objects [ipx::current_core]]
215+
ipx::update_dependency [ipx::get_user_parameters COMPONENT_BIT_WIDTH -of_objects [ipx::current_core]]
216+
ipx::update_dependency [ipx::get_user_parameters S_AXI_DATA_WIDTH -of_objects [ipx::current_core]]
217+
ipx::update_dependency [ipx::get_user_parameters S_AXI_ADDR_WIDTH -of_objects [ipx::current_core]]
218+
ipx::update_dependency [ipx::get_user_parameters S_AXI_WSTRB_WIDTH -of_objects [ipx::current_core]]
219+
ipx::update_dependency [ipx::get_user_parameters S_AXI_RRESP_WIDTH -of_objects [ipx::current_core]]
220+
ipx::update_dependency [ipx::get_user_parameters S_AXI_BRESP_WIDTH -of_objects [ipx::current_core]]
221+
ipx::update_dependency [ipx::get_user_parameters S_AXIS_DATA_WIDTH -of_objects [ipx::current_core]]
222+
ipx::update_dependency [ipx::get_user_parameters M_AXIS_DATA_WIDTH -of_objects [ipx::current_core]]
223+
ipx::update_dependency [ipx::get_user_parameters TUSER_WIDTH -of_objects [ipx::current_core]]
224+
225+
# Create GUI structure
226+
ipgui::add_group -name {input} -component [ipx::current_core] -parent [ipgui::get_pagespec -name "Page 0" -component [ipx::current_core] ] -display_name {Input}
227+
ipgui::add_static_text -name {input_text} -component [ipx::current_core] -parent [ipgui::get_groupspec -name "input" -component [ipx::current_core] ] -text {Please select the raw data input configuration.}
228+
ipgui::move_param -component [ipx::current_core] -order 1 [ipgui::get_guiparamspec -name "PIXEL_BIT_WIDTH" -component [ipx::current_core]] -parent [ipgui::get_groupspec -name "input" -component [ipx::current_core]]
229+
ipgui::move_param -component [ipx::current_core] -order 2 [ipgui::get_guiparamspec -name "CFA_ORIENTATION" -component [ipx::current_core]] -parent [ipgui::get_groupspec -name "input" -component [ipx::current_core]]
230+
231+
ipgui::add_group -name {performance} -component [ipx::current_core] -parent [ipgui::get_pagespec -name "Page 0" -component [ipx::current_core] ] -display_name {Performance}
232+
ipgui::add_static_text -name {performance_text} -component [ipx::current_core] -parent [ipgui::get_groupspec -name "performance" -component [ipx::current_core] ] -text {Performance parameters such as pixel per cycle and horizontal resolution.}
233+
ipgui::move_param -component [ipx::current_core] -order 1 [ipgui::get_guiparamspec -name "PIXEL_PER_CYCLE" -component [ipx::current_core]] -parent [ipgui::get_groupspec -name "performance" -component [ipx::current_core]]
234+
ipgui::move_param -component [ipx::current_core] -order 2 [ipgui::get_guiparamspec -name "MAX_RESOLUTION" -component [ipx::current_core]] -parent [ipgui::get_groupspec -name "performance" -component [ipx::current_core]]
235+
236+
ipgui::add_group -name {output} -component [ipx::current_core] -parent [ipgui::get_pagespec -name "Page 0" -component [ipx::current_core] ] -display_name {Output}
237+
ipgui::add_static_text -name {output_text} -component [ipx::current_core] -parent [ipgui::get_groupspec -name "output" -component [ipx::current_core] ] -text {Output configuration. For RGB888, select 8 bit component bit width.}
238+
ipgui::move_param -component [ipx::current_core] -order 1 [ipgui::get_guiparamspec -name "COMPONENT_BIT_WIDTH" -component [ipx::current_core]] -parent [ipgui::get_groupspec -name "output" -component [ipx::current_core]]
239+
240+
# Set names
241+
set_property display_name {Configuration} [ipgui::get_pagespec -name "Page 0" -component [ipx::current_core] ]
242+
set_property tooltip {Mini-ISP User Configuration} [ipgui::get_pagespec -name "Page 0" -component [ipx::current_core] ]
177243

178-
# TODO: simulation sources
244+
# GUI
245+
ipx::create_xgui_files [ipx::current_core]
246+
ipx::create_default_gui_files [ipx::current_core ]
179247

180248
ipx::check_integrity [ipx::current_core]
181249
ipx::update_checksums [ipx::current_core]

0 commit comments

Comments
 (0)