@@ -98,84 +98,152 @@ set_property display_name Reg [ipx::get_address_blocks Reg -of_objects [ipx::get
9898ipx::add_model_parameters_from_hdl -ordered_files [lindex $SOURCES_LIST 0] -top_module_name $TOP_LEVEL_NAME [ipx::current_core]
9999ipx::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
130102ipgui::add_param -name {COMPONENT_BIT_WIDTH} -component [ipx::current_core] -display_name {Output Component Bit Width} -show_label {true} -show_range {true} -widget {comboBox}
131103set_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]]
132106set_property value_validation_type list [ipx::get_user_parameters COMPONENT_BIT_WIDTH -of_objects [ipx::current_core]]
133107set_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]]
140110ipgui::add_param -name {CFA_ORIENTATION} -component [ipx::current_core] -display_name {CFA Orientation} -show_label {true} -show_range {true} -widget {comboBox}
141111set_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]]
149118ipgui::add_param -name {PIXEL_PER_CYCLE} -component [ipx::current_core] -display_name {Pixel Per Cycle} -show_label {true} -show_range {true} -widget {comboBox}
150119set_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]]
155126ipgui::add_param -name {PIXEL_BIT_WIDTH} -component [ipx::current_core] -display_name {Pixel Bit Width} -show_label {true} -show_range {true} -widget {comboBox}
156127set_property tooltip {Input pixel bit width} [ipgui::get_guiparamspec -name " PIXEL_BIT_WIDTH" -component [ipx::current_core] ]
157128set_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]]
162135ipgui::add_param -name {MAX_RESOLUTION} -component [ipx::current_core] -display_name {Max Horizontal Resolution} -show_label {true} -show_range {true} -widget {comboBox}
163136set_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
180248ipx::check_integrity [ipx::current_core]
181249ipx::update_checksums [ipx::current_core]
0 commit comments