In the figure, each capacitor models the storage of the light intensity value captured by a single pixel in a real circuit, while the MOS transistors replace the resistors of a conventional RC network. The MOS devices work like a voltage controlled resistors to perform an analog time-controlled Gaussian filtering on the image captured by the image sensor. So, when the image is being captured by a sensor circuitry, the gate voltage
\(V_G\) is null, keeping the devices in the cutoff region. Once the capture is done, a given
\(V_G\) is applied to the MOS gates to allow them to operate in the triode region. The variation of the voltage along time is a Gaussian function with
\(\sigma = (2t_{ON}/RC)0.5\) [
10], being
\(t_{ON}\) the time during which the MOS devices are driving current. The current flowing into a pixel (
i,
j) is given by the contribution of the currents of the 4-neighbour devices following:
$$\begin{aligned} \begin{aligned} C\frac{dV_{i,j}}{dt}=\frac{V_{i,j+1}-V_{i,j}}{R_{i,j+1}}+\frac{V_{i,j-1}-V_{i,j}}{R_{i,j-1}} +\frac{V_{i+1,j}-V_{i,j}}{R_{i+1,j}}+\frac{V_{i-1,j}-V_{i,j}}{R_{i-1,j}} \end{aligned} \end{aligned}$$
(11)
being
\(V_{i,j} \equiv V_{i,j+1}\), the state variable in this example and
\(R_{i,j+1}\equiv R_{i,j+1}(v)\) the voltage-dependent MOS channel resistance between nodes (i,j) and (i,j + 1), given by:
$$\begin{aligned} R_{i,j+1}= \frac{L}{KW\Big (V_G-V_{th}-0.5(V_{i,j}+V_{i,j+1} )\Big )} \end{aligned}$$
(12)
A simplification of this problem is solved in [
4] using a simplified model which allows the use of initial values in (
12) for
\(V_{i,j}\) and
\(V_{i,j+1}\), and so, transforming
\(R_{i,j+1}\) into a constant value, which also allows the use of a fixed integration-step. In this work, a more complex problem is addressed, where variable values for
\(R_{i,j+1}\) are used, which leads to a Jacobian matrix with variable coefficients as well as a variable integration step needed to adapt the simulation speed to the voltage values at each time point. These characteristics require additional computations for the step-size estimations. Thus, replacing (
12) in (
11), and defining
\(V_{GT}=V_G-V_{th}\) and
\(K_R=L/KW\), equation (
11) can be rewritten as:
$$\begin{aligned} \begin{aligned} K_R C \frac{dV_{i,j}}{dt} =&-\Big [4V_{GT} V_{i,j}-V_{GT} (V_{i,j+1} +V_{i,j-1} +V_{i+1,j} +V_{i-1,j})\\ \quad&-2V_{i,j}^2 +0.5(V_{i,j+1}^2 + V_{i,j-1}^2 +V_{i+1,j}^2 +V_{i-1,j}^2) \Big ] \end{aligned} \end{aligned}$$
(13)
where the derivative of voltage
\(V_{i,j+1}\) with respect to time is a function of linear and quadratic terms of the own and the adjacent voltage nodes. The quadratic terms are then replaced by their linearised form at points
\(V_{u,v}(0)\) using a second order Taylor approximation for
\(u=i-1,i,i+1\) and
\(v=j-1,j,j+1\) to obtain:
$$\begin{aligned} \begin{aligned} K_R C \frac{dV_{i,j}}{dt}=&-4\big (V_{GT}-V_{i,j} (0)\big ) V_{i,j}\\ \quad&+\big (V_{GT}-V_{i,j+1} (0)\big ) V_{i,j+1}+\big (V_{GT}-V_{i,j-1} (0)\big ) V_{i,j-1}\\ \quad&+\big (V_{GT}-V_{i+1,j} (0)\big ) V_{i+1,j}+\big (V_{GT}-V_{i-1,j} (0)\big ) V_{i-1,j}\\ \quad&-\!2V_{i,j} (0)^2\!+\!0.5\big (V_{i,j+1} (0)^2\!+\!V_{i,j-1} (0)^2\!+\!V_{i+1,j} (0)^2\!+\!V_{i-1,j} (0)^2 ) \big ) \end{aligned} \end{aligned}$$
(14)
The matrix formulation of (
14) applied to the whole
\(m \times n\) image sensor is:
$$\begin{aligned} \frac{d}{dt} \begin{bmatrix} V_{1,1} \\ V_{1,3} \\ \vdots \\ V_{\begin{array}{c} m,n \end{array}} \\ \end{bmatrix} = \begin{bmatrix} A_{1,1} &{} A_{1,2} &{} 0 &{} \cdots &{} 0\\ A_{2,1} &{} A_{2,2} &{} A_{2,3} &{} \cdots &{} 0\\ 0 &{} A_{3,2} &{} A_{3,3} &{} \cdots &{} 0\\ \vdots &{} &{} &{} &{} \vdots \\ 0 &{} 0 &{} 0 &{} \cdots &{} A_{\begin{array}{c} m,m \end{array}}\\ \end{bmatrix} \cdot \begin{bmatrix} V_{1,1} \\ V_{1,2} \\ \vdots \\ V_{\begin{array}{c} m,n \end{array}} \\ \end{bmatrix} +B \end{aligned}$$
(15)
where
\(A_{i,j}\) are
\(n \times n\) submatrices and
B is a column vector of size
\(m \times n\) including the independent terms. The set of submatrices
\(A_{r,r}\) \((r=2,\ldots ,m-1)\) which belong to the diagonal of
A are defined as:
$$\begin{aligned} A_{r,r}= \begin{bmatrix} -3\big (V_{GT}-V_{r,1}(0)\big ) &{} 0 &{} \cdots &{} 0\\ V_{GT}-V_{r,1}(0) &{} -4\big (V_{GT}-V_{r,2}(0)\big ) &{} \cdots &{} 0\\ 0 &{} V_{GT}-V_{r,2}(0) &{} \cdots &{} 0\\ \vdots &{} &{} &{} \vdots \\ 0 &{} 0 &{} \cdots &{} V_{GT}-V_{r,n-1}(0)\\ 0 &{} 0 &{} \cdots &{} -3\big (V_{GT}-V_{r,n}(0)\big )\\ \end{bmatrix} \end{aligned}$$
(16)
Submatrices
\(A_{r,r}\) \((r=1,m)\) refer to pixels placed in the first and the last row of the image sensor. In such case the matrices are similar to the previous one, but replacing in the main diagonal constants - 3 and - 4 by - 2 and - 3 respectively. The set of submatrices
\(A_{r,r\pm 1}\) are diagonal matrices defined as:
$$\begin{aligned} A_{r,r\pm 1}= \begin{bmatrix} V_{GT}-V_{r\pm 1,1}(0) &{} 0 &{} \cdots &{} 0 \\ 0 &{} V_{GT}-V_{r\pm 1,2}(0) &{} \cdots &{} 0 \\ \vdots &{} &{} &{} \vdots \\ 0 &{} 0 &{} \cdots &{} V_{GT}-V_{r\pm 1,n}(0)\\ \end{bmatrix} \end{aligned}$$
(17)
Finally the column vector
B, which includes the current linearised values
\(V_{u,v}(0)\) is obtained as:
$$\begin{aligned} B=\begin{bmatrix} V_{1,1}(0)^2+0.5\big (V_{1,2}(0)^2+V_{2,1}(0)^2\big ) \\ 1.5V_{1,2}(0)^2+0.5\big (V_{1,1}(0)^2+V_{1,3}(0)^2+V_{2,2}(0)^2\big ) \\ 1.5V_{1,3}(0)^2+0.5\big (V_{1,2}(0)^2+V_{1,4}(0)^2+V_{2,3}(0)^2\big ) \\ \vdots \\ V_{m,n}(0)^2+0.5\big (V_{m-1,n}(0)^2+V_{m,n-1}(0)^2\big ) \\ \end{bmatrix} \end{aligned}$$
(18)
The simulation technique proposed in this work has been applied to simulate the system described in equations (
15) to (
18) using the same GPU than in the previous RLC example. The image sizes used in this example are those used in small CMOS smart image sensors, whose dimensions are restricted to include additional electronics close to the pixels. The simulations have been done modelling the capacity of the CMOS sensor pixels as
\(C=10\) pF and using the following device parameters:
\(K=50\) \(\mu A/V^2\),
\(W/L=1\),
\(V_{th}=0.5\) V and
\(V_G=3\) V. Processor times required for each transient simulation is detailed in Table
3, where they are compared with these required by Spectre and CUSPICE. It can be noted how the throughput of the three methods varies in a different way when the complexity of the problem is increased. For the explicit method, when the image size increases from 8
\(\times \) 8 to an image approximately 300 times larger, the processing time is increased 2.27 times. However, for the implicit method this time is increased 128 times using Spectre simulator and 104 times using CUSPICE. Thus, although for small images, CUSPICE and Spectre are faster, for images larger than 64
\(\times \) 64 pixels the proposed explicit method offers smaller simulation times and the speedup is larger for bigger image sizes.