implement typedpnjlim as optional limiter for verilog-a models
This commit is contained in:
parent
56d0c72924
commit
a5738ed583
|
|
@ -50,6 +50,18 @@ double osdi_pnjlim(bool init, bool *check, double vnew, double vold, double vt,
|
||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
double osdi_typedpnjlim(bool init, bool *check, double vnew, double vold, double vt,
|
||||||
|
double vcrit, double type) {
|
||||||
|
if (init) {
|
||||||
|
*check = true;
|
||||||
|
return vcrit;
|
||||||
|
}
|
||||||
|
int icheck = 0;
|
||||||
|
double res = DEVpnjlim(type*vnew, vold, vt, vcrit, &icheck);
|
||||||
|
*check = icheck != 0;
|
||||||
|
return res;
|
||||||
|
}
|
||||||
|
|
||||||
double osdi_limvds(bool init, bool *check, double vnew, double vold) {
|
double osdi_limvds(bool init, bool *check, double vnew, double vold) {
|
||||||
if (init) {
|
if (init) {
|
||||||
*check = true;
|
*check = true;
|
||||||
|
|
|
||||||
|
|
@ -96,7 +96,8 @@ typedef void (*osdi_log_ptr)(void *handle, char *msg, uint32_t lvl);
|
||||||
|
|
||||||
double osdi_pnjlim(bool init, bool *icheck, double vnew, double vold, double vt,
|
double osdi_pnjlim(bool init, bool *icheck, double vnew, double vold, double vt,
|
||||||
double vcrit);
|
double vcrit);
|
||||||
|
double osdi_typedpnjlim(bool init, bool *icheck, double vnew, double vold, double vt,
|
||||||
|
double vcrit, double type);
|
||||||
double osdi_limvds(bool init, bool *icheck, double vnew, double vold);
|
double osdi_limvds(bool init, bool *icheck, double vnew, double vold);
|
||||||
double osdi_limitlog(bool init, bool *icheck, double vnew, double vold,
|
double osdi_limitlog(bool init, bool *icheck, double vnew, double vold,
|
||||||
double LIM_TOL);
|
double LIM_TOL);
|
||||||
|
|
|
||||||
|
|
@ -338,6 +338,7 @@ extern OsdiObjectFile load_object_file(const char *input) {
|
||||||
for (uint32_t i = 0; i < lim_table_len; i++) {
|
for (uint32_t i = 0; i < lim_table_len; i++) {
|
||||||
int expected_args = -1;
|
int expected_args = -1;
|
||||||
IS_LIM_FUN("pnjlim", 2, osdi_pnjlim)
|
IS_LIM_FUN("pnjlim", 2, osdi_pnjlim)
|
||||||
|
IS_LIM_FUN("typedpnjlim", 3, osdi_typedpnjlim)
|
||||||
IS_LIM_FUN("limvds", 0, osdi_limvds)
|
IS_LIM_FUN("limvds", 0, osdi_limvds)
|
||||||
IS_LIM_FUN("fetlim", 1, osdi_fetlim)
|
IS_LIM_FUN("fetlim", 1, osdi_fetlim)
|
||||||
IS_LIM_FUN("limitlog", 1, osdi_limitlog)
|
IS_LIM_FUN("limitlog", 1, osdi_limitlog)
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue