Summary of changes from BSIM-CMG_112.0.0beta1 to BSIM-CMG_112.0.0beta2 BSIM Group, UC Berkeley A. Pampori (pampori@berkeley.edu), C.K. Dabhi, D. Rajasekharan, and Shivendra Singh Parihar A. Summary of Bugs 1. 2024bug6(ADI): Use updated hypsmooth function. 2. 2024bug7(ADI): Initialize gate current variables. B. Summary of Enhancements 1. N/A. C. Description of Bug fixes 1. 2024bug6(ADI): Use updated hypsmooth function. The hypsmooth macro was improved following the improvements in the hypsmooth function in BSIM-BULK, aimed at preventing divide-by-zero errors caused by large negative arguments to hypsmooth. The existing macro reads as: `define hypsmooth(x, c) (0.5 * (x + sqrt((x) * (x) + 4.0 * c * c))) In the case that |x| is large, we can use a Taylor series: sqrt(1 + ε) = 1 + ε/2 – ε^2/8 + ... sqrt(x * x + 4.0 * c * c) = |x| * sqrt(1.0 + 4.0*c*c/(x*x)) 1 ≈ |x| * (1 + 2*(c/x)^2 – 2*(c/x)^4 + ...) When x < 0, the leading 1 cancels the x in hypsmooth (x + |x| = 0), and the hypsmooth macro evaluates to zero. This can create problems if the output of the hypsmooth macro is used as a denominator – leading to divide-by-zero errors. To prevent this, large negative cases are handled by an updated definition as: `define hypsmooth(x, c) ((x < -1e4 * (c)) ? (-(c) * (c) / (x)) : (0.5 * (x + sqrt((x) * (x) + 4.0 * (c) * (c))))) 2. 2024bug7(ADI): Initialize gate current variables. The variables igbacc_v, igbd_v, igbinv_v, igbs_v, igcd_v, igcs_v, igd_v, igidl_v, igisl_v, and igs_v were not initialized. This has been updated in the latest code, with these variables set to zero. D. Description of Enhancements N/A 2