29#include <act/passes/booleanize.h>
30#include <common/bool.h>
31#include <common/list.h>
32#include <common/bitset.h>
33#include <common/array.h>
50#define _STD_WIDTH_PER_FOLD(x) ((x)->w/(x)->nfolds)
51#define _RESIDUAL_WIDTH(x) ((x)->w % (x)->nfolds)
52#define EDGE_WIDTH(x,i) (_STD_WIDTH_PER_FOLD(x) + (((i) == (x)->nfolds-1) ? _RESIDUAL_WIDTH(x) : 0))
159 struct Hashtable *atH[2];
294 int vdd_len,
int gnd_len,
This pass is used to pre-process information about languages and variables within the design....
Definition: booleanize.h:271
The main Act class used to read in an ACT file and create basic data structures. All design informati...
Definition: act.h:334
This class is used to store Act identifiers that correspond to instances. Identifiers have an optiona...
Definition: act_id.h:56
Definition: netlist.h:191
netlist_t * getNL(Process *p)
int weak_share_min
Definition: netlist.h:272
void Print(FILE *fp, Process *p)
static int getGridsPerLambda()
Definition: netlist.h:212
int discrete_fet_length_sz
Definition: netlist.h:250
double unit_cap
Definition: netlist.h:279
int top_level_only
Definition: netlist.h:270
static const char * global_vdd
Definition: netlist.h:254
int swap_source_drain
Definition: netlist.h:267
static void spice_to_act_name(char *s, char *t, int sz, int xconv)
double output_scale_factor
Definition: netlist.h:260
double manufacturing_grid
Definition: netlist.h:222
void set_fet_params(netlist_t *n, edge_t *f, unsigned int type, act_size_spec_t *sz)
int weak_share_max
Definition: netlist.h:272
int find_length_window(edge_t *e)
int p_fold
Definition: netlist.h:248
int black_box_mode
Definition: netlist.h:244
int series_p_warning
Definition: netlist.h:276
double p_n_ratio
Definition: netlist.h:237
int n_fold
Definition: netlist.h:247
int series_n_warning
Definition: netlist.h:275
int * discrete_fet_length
Definition: netlist.h:251
int fet_spacing_diffcontact
Definition: netlist.h:263
int fet_diff_overhang
Definition: netlist.h:264
int use_subckt_models
Definition: netlist.h:266
static Act * current_act
Definition: netlist.h:255
static const char * global_gnd
Definition: netlist.h:254
const char * extra_fet_string
Definition: netlist.h:268
static void sprint_node(char *buf, int sz, netlist_t *N, node_t *n)
void generate_netgraph(netlist_t *N, int num_vdd_share, int num_gnd_share, int vdd_len, int gnd_len, node_t *weak_vdd, node_t *weak_gnd)
double weak_to_strong_ratio
Definition: netlist.h:238
int min_l_in_lambda
Definition: netlist.h:227
void generate_staticizers(netlist_t *N, int num_vdd_share, int num_gnd_share, int vdd_len, int gnd_len, node_t *weak_vdd, node_t *weak_gnd)
double default_load_cap
Definition: netlist.h:241
void generate_prs_graph(netlist_t *N, act_prs_lang_t *p, int istree=0)
ActBooleanizePass * bools
Definition: netlist.h:218
int emit_parasitics
Definition: netlist.h:259
int ignore_loadcap
Definition: netlist.h:258
netlist_t * generate_netlist(Process *p)
netlist_t * genNetlist(Process *p)
void * local_op(Process *p, int mode=0)
static void sprint_conn(char *buf, int sz, act_connection *c)
static const char * local_vdd
Definition: netlist.h:254
static void emit_node(netlist_t *N, FILE *fp, node_t *n, int mangle=0)
int min_w_in_lambda
Definition: netlist.h:226
int fet_spacing_diffonly
Definition: netlist.h:262
static node_t * connection_to_node(netlist_t *n, act_connection *c)
int _fin_width
Definition: netlist.h:229
int max_p_w_in_lambda
Definition: netlist.h:234
static int grids_per_lambda
Definition: netlist.h:223
double leak_adjust
Definition: netlist.h:228
void fold_transistors(netlist_t *N)
FILE * _outfp
Definition: netlist.h:297
static const char * local_gnd
Definition: netlist.h:254
int discrete_len
Definition: netlist.h:249
int max_n_w_in_lambda
Definition: netlist.h:233
void _check_emit_warning(int d, int depth, ActId *id)
static node_t * string_to_node(netlist_t *, char *s)
netlist_t * emitNetlist(Process *p)
int create_expr_edges(netlist_t *N, int type, node_t *left, act_prs_expr_t *e, node_t *right, int sense)
int find_length_fit(int len)
double lambda
Definition: netlist.h:221
The main ActPass class used to implement an ACT analysis/synthesis pass. All the core tools use this ...
Definition: act.h:791
Act * a
Definition: act.h:810
User-defined processes.
Definition: types.h:750
Connections.
Definition: value.h:113
This structure is computed for each process by the Booleanize pass. It summarizes the information abo...
Definition: booleanize.h:187
The core data type for a variable accessed in an ACT process. A variable may be an act_booleanized_va...
Definition: booleanize.h:103
unsigned int unstaticized
Definition: netlist.h:71
bool_t * dn
Definition: netlist.h:62
act_booleanized_var_t * v
Definition: netlist.h:55
bool_t * b
Definition: netlist.h:60
unsigned int usecf
Definition: netlist.h:77
struct node * n
Definition: netlist.h:65
struct node * gnd
Definition: netlist.h:67
act_prs_expr_t * e_dn
Definition: netlist.h:57
struct node * inv
Definition: netlist.h:81
bool_t * up
Definition: netlist.h:62
unsigned int stateholding
Definition: netlist.h:76
void * extra
Definition: netlist.h:84
act_prs_expr_t * e_up
Definition: netlist.h:57
unsigned int manualkeeper
Definition: netlist.h:78
struct node * vdd
Definition: netlist.h:67
unsigned int spec_keeper
Definition: netlist.h:70
A production rule expression, corresponding to the guard for the production rule.
Definition: lang.h:97
Structure that holds a prs sub-language body. This consists of a linked-list of individual items in t...
Definition: lang.h:140
Sizing specifier for variables.
Definition: lang.h:83
Definition: netlist.h:117
node_t * bulk
Definition: netlist.h:119
unsigned int raw
Definition: netlist.h:137
int w
Definition: netlist.h:122
int flavor
Definition: netlist.h:123
node_t * b
Definition: netlist.h:120
unsigned int pruned
Definition: netlist.h:139
unsigned int type
Definition: netlist.h:131
unsigned int keeper
Definition: netlist.h:134
int nfolds
Definition: netlist.h:126
int l
Definition: netlist.h:122
unsigned int tree
Definition: netlist.h:140
int nlen
Definition: netlist.h:129
unsigned int visited
Definition: netlist.h:142
node_t * a
Definition: netlist.h:120
unsigned int combf
Definition: netlist.h:135
node_t * g
Definition: netlist.h:118
unsigned int pchg
Definition: netlist.h:133
Definition: netlist.h:146
double val
Definition: netlist.h:148
node_t * n2
Definition: netlist.h:147
node_t * n1
Definition: netlist.h:147
Definition: netlist.h:151
list_t * gnd_list
Definition: netlist.h:161
unsigned char flavor
Definition: netlist.h:180
unsigned int leak_correct
Definition: netlist.h:184
act_boolean_netlist_t * bN
Definition: netlist.h:152
int l
Definition: netlist.h:178
int idnum
Definition: netlist.h:157
int sl
Definition: netlist.h:181
int nid_wgnd
Definition: netlist.h:172
BOOL_T * B
Definition: netlist.h:154
A_DECL(int, instport_weak)
node_t * GND
Definition: netlist.h:164
int weak_supply_gnd
Definition: netlist.h:167
int gnd_len
Definition: netlist.h:170
node_t * hd
Definition: netlist.h:155
list_t * caps
Definition: netlist.h:156
int nf
Definition: netlist.h:179
list_t * nsc_list
Definition: netlist.h:162
node_t * nsc
Definition: netlist.h:165
unsigned int inv
Definition: netlist.h:99
list_t * e
Definition: netlist.h:92
bool_t * b
Definition: netlist.h:94
int i
Definition: netlist.h:89
unsigned int contact
Definition: netlist.h:97
double resis
Definition: netlist.h:111
list_t * wl
Definition: netlist.h:105
double reff[2]
Definition: netlist.h:106
unsigned char reff_set[2]
Definition: netlist.h:108
struct node * next
Definition: netlist.h:113
unsigned int supply
Definition: netlist.h:98
struct act_nl_varinfo * v
Definition: netlist.h:90
unsigned int visited
Definition: netlist.h:101
double cap
Definition: netlist.h:110