Prepare for inertial_delay model parameter.
This commit is contained in:
parent
4b30113f60
commit
3a76a1ef52
|
|
@ -674,47 +674,47 @@ static void gen_models(void)
|
|||
|
||||
ds_clear(&model);
|
||||
ds_cat_printf(&model,
|
||||
".model d_inv_zero_delay d_inverter(rise_delay=1.0e-12 fall_delay=1.0e-12)");
|
||||
".model d_inv_zero_delay d_inverter(inertial_delay=true rise_delay=1.0e-12 fall_delay=1.0e-12)");
|
||||
u_add_instance(ds_get_buf(&model));
|
||||
|
||||
ds_clear(&model);
|
||||
ds_cat_printf(&model,
|
||||
".model d__inverter__1 d_inverter(rise_delay=1.0e-12 fall_delay=1.0e-12)");
|
||||
".model d__inverter__1 d_inverter(inertial_delay=true rise_delay=1.0e-12 fall_delay=1.0e-12)");
|
||||
u_add_instance(ds_get_buf(&model));
|
||||
|
||||
ds_clear(&model);
|
||||
ds_cat_printf(&model,
|
||||
".model d__buffer__1 d_buffer(rise_delay=1.0e-12 fall_delay=1.0e-12)");
|
||||
".model d__buffer__1 d_buffer(inertial_delay=true rise_delay=1.0e-12 fall_delay=1.0e-12)");
|
||||
u_add_instance(ds_get_buf(&model));
|
||||
|
||||
ds_clear(&model);
|
||||
ds_cat_printf(&model,
|
||||
".model d__nand__1 d_nand(rise_delay=1.0e-12 fall_delay=1.0e-12)");
|
||||
".model d__nand__1 d_nand(inertial_delay=true rise_delay=1.0e-12 fall_delay=1.0e-12)");
|
||||
u_add_instance(ds_get_buf(&model));
|
||||
|
||||
ds_clear(&model);
|
||||
ds_cat_printf(&model,
|
||||
".model d__and__1 d_and(rise_delay=1.0e-12 fall_delay=1.0e-12)");
|
||||
".model d__and__1 d_and(inertial_delay=true rise_delay=1.0e-12 fall_delay=1.0e-12)");
|
||||
u_add_instance(ds_get_buf(&model));
|
||||
|
||||
ds_clear(&model);
|
||||
ds_cat_printf(&model,
|
||||
".model d__xnor__1 d_xnor(rise_delay=1.0e-12 fall_delay=1.0e-12)");
|
||||
".model d__xnor__1 d_xnor(inertial_delay=true rise_delay=1.0e-12 fall_delay=1.0e-12)");
|
||||
u_add_instance(ds_get_buf(&model));
|
||||
|
||||
ds_clear(&model);
|
||||
ds_cat_printf(&model,
|
||||
".model d__xor__1 d_xor(rise_delay=1.0e-12 fall_delay=1.0e-12)");
|
||||
".model d__xor__1 d_xor(inertial_delay=true rise_delay=1.0e-12 fall_delay=1.0e-12)");
|
||||
u_add_instance(ds_get_buf(&model));
|
||||
|
||||
ds_clear(&model);
|
||||
ds_cat_printf(&model,
|
||||
".model d__nor__1 d_nor(rise_delay=1.0e-12 fall_delay=1.0e-12)");
|
||||
".model d__nor__1 d_nor(inertial_delay=true rise_delay=1.0e-12 fall_delay=1.0e-12)");
|
||||
u_add_instance(ds_get_buf(&model));
|
||||
|
||||
ds_clear(&model);
|
||||
ds_cat_printf(&model,
|
||||
".model d__or__1 d_or(rise_delay=1.0e-12 fall_delay=1.0e-12)");
|
||||
".model d__or__1 d_or(inertial_delay=true rise_delay=1.0e-12 fall_delay=1.0e-12)");
|
||||
u_add_instance(ds_get_buf(&model));
|
||||
|
||||
ds_free(&model);
|
||||
|
|
@ -2015,11 +2015,11 @@ static BOOL extract_delay(
|
|||
if (ds_get_length(&dtyp_max_str) > 0) {
|
||||
if (tri) {
|
||||
ds_cat_printf(&delay_string,
|
||||
"(delay=%s)",
|
||||
"(inertial_delay=true delay=%s)",
|
||||
ds_get_buf(&dtyp_max_str));
|
||||
} else {
|
||||
ds_cat_printf(&delay_string,
|
||||
"(rise_delay=%s fall_delay=%s)",
|
||||
"(inertial_delay=true rise_delay=%s fall_delay=%s)",
|
||||
ds_get_buf(&dtyp_max_str),
|
||||
ds_get_buf(&dtyp_max_str));
|
||||
}
|
||||
|
|
@ -2027,10 +2027,10 @@ static BOOL extract_delay(
|
|||
printf("WARNING pindly DELAY not found\n");
|
||||
if (tri) {
|
||||
ds_cat_printf(&delay_string,
|
||||
"(delay=10ns)");
|
||||
"(inertial_delay=true delay=10ns)");
|
||||
} else {
|
||||
ds_cat_printf(&delay_string,
|
||||
"(rise_delay=10ns fall_delay=10ns)");
|
||||
"(inertial_delay=true rise_delay=10ns fall_delay=10ns)");
|
||||
}
|
||||
}
|
||||
for (i = 0; i < idx; i++) {
|
||||
|
|
|
|||
|
|
@ -748,7 +748,7 @@ struct card *replacement_udevice_cards(void)
|
|||
}
|
||||
if (add_zero_delay_inverter_model) {
|
||||
x = create_xlate_translated(
|
||||
".model d_zero_inv99 d_inverter(rise_delay=1.0e-12 fall_delay=1.0e-12)");
|
||||
".model d_zero_inv99 d_inverter(inertial_delay=true rise_delay=1.0e-12 fall_delay=1.0e-12)");
|
||||
translated_p = add_xlator(translated_p, x);
|
||||
}
|
||||
if (add_drive_hilo) {
|
||||
|
|
@ -757,7 +757,7 @@ struct card *replacement_udevice_cards(void)
|
|||
x = create_xlate_translated("a1 0 drive___0 dbuf1");
|
||||
translated_p = add_xlator(translated_p, x);
|
||||
x = create_xlate_translated(
|
||||
".model dbuf1 d_buffer(rise_delay=1.0e-12 fall_delay=1.0e-12)");
|
||||
".model dbuf1 d_buffer(inertial_delay=true rise_delay=1.0e-12 fall_delay=1.0e-12)");
|
||||
translated_p = add_xlator(translated_p, x);
|
||||
x = create_xlate_translated(".ends hilo_dollar___lo");
|
||||
translated_p = add_xlator(translated_p, x);
|
||||
|
|
@ -766,7 +766,7 @@ struct card *replacement_udevice_cards(void)
|
|||
x = create_xlate_translated("a2 0 drive___1 dinv1");
|
||||
translated_p = add_xlator(translated_p, x);
|
||||
x = create_xlate_translated(
|
||||
".model dinv1 d_inverter(rise_delay=1.0e-12 fall_delay=1.0e-12)");
|
||||
".model dinv1 d_inverter(inertial_delay=true rise_delay=1.0e-12 fall_delay=1.0e-12)");
|
||||
translated_p = add_xlator(translated_p, x);
|
||||
x = create_xlate_translated(".ends hilo_dollar___hi");
|
||||
translated_p = add_xlator(translated_p, x);
|
||||
|
|
@ -891,7 +891,7 @@ void initialize_udevice(char *subckt_line)
|
|||
model_xlatorp = create_xlator();
|
||||
default_models = create_xlator();
|
||||
/* .model d0_gate ugate () */
|
||||
xdata = create_xlate("", "(rise_delay=1.0e-12 fall_delay=1.0e-12)",
|
||||
xdata = create_xlate("", "(inertial_delay=true rise_delay=1.0e-12 fall_delay=1.0e-12)",
|
||||
"ugate", "", "d0_gate", "");
|
||||
(void) add_xlator(default_models, xdata);
|
||||
/* .model d0_gff ugff () */
|
||||
|
|
@ -903,7 +903,7 @@ void initialize_udevice(char *subckt_line)
|
|||
xdata = create_xlate("", "", "ueff", "", "d0_eff", "");
|
||||
(void) add_xlator(default_models, xdata);
|
||||
/* .model d0_tgate utgate () */
|
||||
xdata = create_xlate("", "(delay=1.0e-12)",
|
||||
xdata = create_xlate("", "(inertial_delay=true delay=1.0e-12)",
|
||||
"utgate", "", "d0_tgate", "");
|
||||
(void) add_xlator(default_models, xdata);
|
||||
/* reset for the new subckt */
|
||||
|
|
@ -2618,7 +2618,7 @@ static char *larger_delay(char *delay1, char *delay2)
|
|||
static char *get_zero_rise_fall(void)
|
||||
{
|
||||
/* The caller needs to tfree the returned string after use */
|
||||
return tprintf("(rise_delay=1.0e-12 fall_delay=1.0e-12)");
|
||||
return tprintf("(inertial_delay=true rise_delay=1.0e-12 fall_delay=1.0e-12)");
|
||||
}
|
||||
|
||||
static char *get_delays_ugate(char *rem)
|
||||
|
|
@ -2634,7 +2634,7 @@ static char *get_delays_ugate(char *rem)
|
|||
falling = get_estimate(tdp2);
|
||||
if (rising && falling) {
|
||||
if (strlen(rising) > 0 && strlen(falling) > 0) {
|
||||
delays = tprintf("(rise_delay = %s fall_delay = %s)",
|
||||
delays = tprintf("(inertial_delay=true rise_delay = %s fall_delay = %s)",
|
||||
rising, falling);
|
||||
} else {
|
||||
delays = get_zero_rise_fall();
|
||||
|
|
@ -2665,12 +2665,12 @@ static char *get_delays_utgate(char *rem)
|
|||
if (rising && strlen(rising) > 0) {
|
||||
if (falling && strlen(falling) > 0) {
|
||||
larger = larger_delay(rising, falling);
|
||||
delays = tprintf("(delay = %s)", larger);
|
||||
delays = tprintf("(inertial_delay=true delay = %s)", larger);
|
||||
} else {
|
||||
delays = tprintf("(delay = %s)", rising);
|
||||
delays = tprintf("(inertial_delay=true delay = %s)", rising);
|
||||
}
|
||||
} else if (falling && strlen(falling) > 0) {
|
||||
delays = tprintf("(delay = %s)", falling);
|
||||
delays = tprintf("(inertial_delay=true delay = %s)", falling);
|
||||
} else if (use_zdelays) {
|
||||
/* No lh/hl delays, so try the largest lz/hz/zl/zh delay */
|
||||
tdp3 = create_min_typ_max("tplz", rem);
|
||||
|
|
@ -2716,16 +2716,16 @@ static char *get_delays_utgate(char *rem)
|
|||
larger3 = larger2;
|
||||
}
|
||||
if (larger3) {
|
||||
delays = tprintf("(delay = %s)", larger3);
|
||||
delays = tprintf("(inertial_delay=true delay = %s)", larger3);
|
||||
} else {
|
||||
delays = tprintf("(delay=1.0e-12)");
|
||||
delays = tprintf("(inertial_delay=true delay=1.0e-12)");
|
||||
}
|
||||
delete_timing_data(tdp3);
|
||||
delete_timing_data(tdp4);
|
||||
delete_timing_data(tdp5);
|
||||
delete_timing_data(tdp6);
|
||||
} else { // Not use_zdelays
|
||||
delays = tprintf("(delay=1.0e-12)");
|
||||
delays = tprintf("(inertial_delay=true delay=1.0e-12)");
|
||||
}
|
||||
delete_timing_data(tdp1);
|
||||
delete_timing_data(tdp2);
|
||||
|
|
|
|||
Loading…
Reference in New Issue