Fix a typo, add more comments.

This commit is contained in:
Brian Taylor 2022-10-30 13:03:56 -07:00 committed by Holger Vogt
parent 7e4b10a9db
commit 77d56eb184
1 changed files with 18 additions and 3 deletions

View File

@ -3,6 +3,8 @@
Convert PSpice LOGICEXP logic expressions into XSPICE gates.
Extract timing delay estimates from PINDLY statements.
Reference: PSpice A/D Reference Guide version 16.6
*/
#include <stdio.h>
#include <stdlib.h>
@ -1282,6 +1284,13 @@ static void bparse(char *line, BOOL new_lexer)
}
/* End of logicexp parser */
/* Start of f_logicexp which is called from udevices.c
See the PSpice reference which describes the LOGICEXP statement syntax.
Combinational gates are generated and usually have zero delays.
The PINDLY statements generate buffers and tristate buffers
which drive the primary outputs from the LOGICEXP outputs.
These buffers have their delays set.
*/
static LEXER current_lexer = NULL;
static BOOL expect_token(
@ -1385,7 +1394,13 @@ error_return:
return FALSE;
}
/* pindly handling */
/* Start of f_pindly which is called from udevices.c
See the PSpice reference which describes the PINDLY statement syntax.
Note that only two sections, PINDLY: and TRISTATE:, are considered.
Typical delays are estimated from the DELAY(...) functions.
XSPICE does not have the variety of delays that PSpice supports.
Output buffers and tristate buffers are generated.
*/
/* C++ with templates would generalize the different TABLEs */
typedef struct pindly_line *PLINE;
struct pindly_line {
@ -1632,6 +1647,7 @@ static char *get_typ_estimate(char *min, char *typ, char *max)
static char *typical_estimate(char *delay_str)
{
/* Input string (t1,t2,t2) */
int which = 0;
size_t i;
char *s;
@ -1642,8 +1658,7 @@ static char *typical_estimate(char *delay_str)
ds_clear(&dmin);
ds_clear(&dtyp);
ds_clear(&dmax);
for (i = 0; i < strlen(delay_str) - 1; i++) {
if (i == 0) continue;
for (i = 1; i < strlen(delay_str) - 1; i++) {
if (delay_str[i] == ',') {
which++;
continue;