0

I would like to find settings for a clock generation circuit, that can generate multiple clocks. The clock frequency generated $F_i$ is calculated as follows:

$F_i = F_{input} * \frac{M}{D * O_i}$

Here $M$ and $D$ are variables shared for all generated $F_i$ while $O_i$ is a separate variable for each $F_i$ and $F_{input}$ is a constant.

As we are talking about a digital circuit, the variables are limited to fairly small integer ranges (apart from $F_{input}, F_i$ and $F_{desired}$).

I now want to find $M, D$ and $O_i$ so that the maximum relative error $F_{error_i} = F_{desired} - F_i$ is minimized ($F_i <= F_{desired}$).

I can word all this as an integer linear program, except my minimization goal. I would set my minimzation goal as

$min(\sum{F_{error_i}^2})$

which does not fit well into an ILP. How can I formulate my problem in a way that a computer can solve this? (Preferably not bruteforce)

ted
  • 111
  • Many LP/MIP packages can also solve (convex) quadratic problems, including MIQPs. Otherwise instead of a quadratic error measure use a linear one (absolute value). In essence this is just using a different norm. This MAD (minimal absolute deviation) version can be formulated as a LP or MIP. – Erwin Kalvelagen Sep 28 '16 at 18:57
  • @ErwinKalvelagen While your comment enlightend me (especially with additional terms (MIQPs/MAD), I still have the issue that error is defined as const-const*var1/var2/var3. I can't see how the var1/var2/var3 part (see definition of $F_i$ can be fed into a MIP package. Would you have further pointers for me? – ted Sep 30 '16 at 12:57
  • That would make it an MINLP. There are readily available solvers for this problem class. In the integer range of these variables is small it may be feasible to simply use an enumeration scheme. I.e. replace $M/(D O_i)$ by $\sum a_j \delta_j$ and $\sum \delta_j = 1$ and $\delta_j \in {0,1}$, with $a_j$ all possible values of $M/(D O_i)$. – Erwin Kalvelagen Sep 30 '16 at 20:51

0 Answers0