In a design, I have a number of counters that have an enable that is only active every N periods of the clock signal. With only a clock of
200MHz in the timing constraints, the counters are assumed to run at 200MHz and timing fails. As these counters actually run at much lower speed, I know they will work. But how to convince the tools (Lattice iCEcube2) that all is OK?I am trying to add multi-cycle constraints, but cannot get them to work. The standard iCEcube timing constraints editor can only create multi-cycle from input pin to output pin, and that does not even work. I need to add a multi-cycle constraint on an internal counter. Preferrably with some wildcard, as I have an array of counters, each with a number of bits. Specifying each separtely would require a lot of lines.
One example of a failed path (from the iCEcube timing analyzer) Start protection_inst.filter_array_3_filter_inst.filter_count_1_LC_5_5_1/lcout End protection_inst.filter_array_3_filter_inst.filter_count_5_LC_5_5_5/in3 Reference gen_pll_wc_lattice_pll_inst.wc_lattice_pll_inst_pll/PLLOUTCORE Setup Constraint 5262(p) Path Slack -762(p)
Simply adding this does not work: set_multicycle_path -to [get_cells {protection_inst.filter_array_3_filter_inst.filter_count_5_LC_5_5_5/in3}] 8
Synplify output: protection_inst.filter_array_3_filter_inst.filter_count_5_LC_5_5_5/in3]) (multi path 8) was not applied to the design because none of the '-to' objects specified by the constraint exist in the design
I've tried get_nets and get_pins instead of get_cells, same result. Also tried other parts of the instance names with wildcards, nothing found.
How to specify multi-cycle paths for the feedback of these internal counters?