HDLCoder timing closure errors on hps2fpga brigde when scaling up a model.
1 view (last 30 days)
Show older comments
Dominique Görner
on 9 Jul 2021
Answered: Kiran Kintali
on 12 Jul 2021
Im trying to scale up a motor control algorithm from 1 controller to 4 instances on HDLCoder in 2018b. The Plattform is a Cyclone V SoC.(Smaller design used a Terasic DE0 Nano SoC Dev Board. Bigger version now uses a MitySom 5CSx. Both where setuped like described in the article "Define Custom Board and Reference Design for Intel SoC Workflow"). The Scaleup caused many timing closure problems. Most of which I could fix by manually inserting pipeline registers. But towards the end of this process, I encountered this timing error.:
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
; Summary of Paths ;
+--------+------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+---------------------------------------------------+---------------------------------------------------+--------------+------------+------------+
; Slack ; From Node ; To Node ; Launch Clock ; Latch Clock ; Relationship ; Clock Skew ; Data Delay ;
+--------+------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+---------------------------------------------------+---------------------------------------------------+--------------+------------+------------+
; -1.977 ; system_soc_hps_0:hps_0|system_soc_hps_0_fpga_interfaces:fpga_interfaces|hps2fpga~FF_2514 ; system_soc_mm_interconnect_0:mm_interconnect_0|altera_merlin_burst_adapter:gt_current_controller_0_s_axi_wr_burst_adapter|altera_merlin_burst_adapter_13_1:altera_merlin_burst_adapter_13_1.burst_adapter|int_byte_cnt_narrow_reg[7] ; hps_0|fpga_interfaces|clocks_resets|h2f_user0_clk ; hps_0|fpga_interfaces|clocks_resets|h2f_user0_clk ; 10.000 ; -0.495 ; 11.412 ;
; -1.959 ; system_soc_hps_0:hps_0|system_soc_hps_0_fpga_interfaces:fpga_interfaces|hps2fpga~FF_2440 ; system_soc_mm_interconnect_0:mm_interconnect_0|altera_merlin_burst_adapter:gt_current_controller_0_s_axi_rd_burst_adapter|altera_merlin_burst_adapter_13_1:altera_merlin_burst_adapter_13_1.burst_adapter|int_byte_cnt_narrow_reg[6] ; hps_0|fpga_interfaces|clocks_resets|h2f_user0_clk ; hps_0|fpga_interfaces|clocks_resets|h2f_user0_clk ; 10.000 ; -0.472 ; 11.417 ;
; -1.948 ; system_soc_hps_0:hps_0|system_soc_hps_0_fpga_interfaces:fpga_interfaces|hps2fpga~FF_2440 ; system_soc_mm_interconnect_0:mm_interconnect_0|altera_merlin_burst_adapter:gt_current_controller_0_s_axi_rd_burst_adapter|altera_merlin_burst_adapter_13_1:altera_merlin_burst_adapter_13_1.burst_adapter|int_byte_cnt_narrow_reg[6] ; hps_0|fpga_interfaces|clocks_resets|h2f_user0_clk ; hps_0|fpga_interfaces|clocks_resets|h2f_user0_clk ; 10.000 ; -0.472 ; 11.406 ;
+--------+------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+---------------------------------------------------+---------------------------------------------------+--------------+------------+------------+
The FPGAs clock is set to 50 Mhz and I never had any problems with the HPS/FPGA Bridge in the smaller version before.
Since this is outside the scope controlled by my simulink model, I have a hard time seeing how I can provide the required timing closure.
At this point any help is appreciated.
(Im guessing any modification would have to be done during the "Create Project" step of the IP Generation Workflow)
0 Comments
Accepted Answer
Kiran Kintali
on 12 Jul 2021
You can reach out to support@mathworks.com to get additional help on the topic.
0 Comments
More Answers (1)
Kiran Kintali
on 12 Jul 2021
>> Im trying to scale up a motor control algorithm from 1 controller to 4 instances on HDLCoder
This should be possible. Can you share your model?
If you replicated the controller to four parallel controllers, you can try to share them by marking them atomic and setting the SharingFactor. This will add some latency and routing logic but should give you better area.
1 Comment
See Also
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!