FreeCalypso > hg > ueda-linux
diff ueda/sverp/struct.h @ 0:cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
author | Space Falcon <falcon@ivan.Harhan.ORG> |
---|---|
date | Mon, 20 Jul 2015 00:24:37 +0000 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/ueda/sverp/struct.h Mon Jul 20 00:24:37 2015 +0000 @@ -0,0 +1,92 @@ +/* + * Data structures for our structural Verilog to flat netlist processor + */ + +/* + * Definition of a module as a thing in itself, before elaboration + */ +struct module_def { + char *name; + struct module_def *next; + int is_primitive; + /* ports and internal nets */ + struct module_net_def *nets; + int nports; + /* counts of individual wires (buses expanded) */ + int nwires_ports; + int nwires_internal; + /* downward instantiations */ + struct module_def_subinst *subinst; + /* primitives only */ + int prim_numeric_pins; + int prim_is_mapped; +}; + +/* + * Definition of a wire or bus visible in a module (thing-in-itself), + * either port or internal wire. + */ +struct module_net_def { + char *name; + struct module_net_def *next; + int is_port; + int def_complete; + int is_bus; + int bus_msb; + int bus_lsb; + int bus_width; + int array_index; +}; + +/* + * Definition of an instantiation statement in a module as a thing-in-itself + */ +struct module_def_subinst { + char *submod_name; + struct module_def *submod_def; + char *inst_name; + struct module_def_subinst *next; + struct connect_entry *connections; + int connect_by_order; +}; + +/* + * Definition of a connection from a module to a downward port + */ +struct connect_entry { + struct connect_entry *next; + /* upper end of the connection */ + struct module_net_def *up_netdef; /* NULL means no connect */ + int up_offset; + int up_width; + /* lower end of the connection before link pass */ + char *down_portname; /* NULL means connect by order */ + int down_range_given; + int down_range_msb; + int down_range_lsb; + /* lower end of the connection after link pass */ + struct module_net_def *down_portdef; + int down_offset; + int down_width; + /* source line number */ + int src_lineno; +}; + +/* output of the elaboration pass */ + +struct output_net { + char *name; /* NULL means no connect */ + int npoints; /* # of package pins connected to this net */ + struct output_net *next; + /* no-connect pseudo-nets */ + char *nc_module_name; + int nc_module_lineno; + char *nc_module_inst; +}; + +struct output_element { + struct module_def *prim_def; + char *hier_inst_name; + struct output_net **connections; + struct output_element *next; +};