Fully functional
This commit is contained in:
parent
f9f3e290c0
commit
63e6ed21b5
|
@ -372,7 +372,7 @@ void dump_verilog_membank_one_inv_module(FILE* fp,
|
||||||
inv_spice_model->name, inv_spice_model->prefix,
|
inv_spice_model->name, inv_spice_model->prefix,
|
||||||
instance_tag, inv_index);
|
instance_tag, inv_index);
|
||||||
/* Dump global ports */
|
/* Dump global ports */
|
||||||
if (0 < rec_dump_verilog_spice_model_global_ports(fp, inv_spice_model, FALSE, FALSE, inv_spice_model->dump_explicit_port_map)) {
|
if (0 < rec_dump_verilog_spice_model_global_ports(fp, inv_spice_model, FALSE, FALSE, inv_spice_model->dump_explicit_port_map, TRUE)) {
|
||||||
fprintf(fp, ",\n");
|
fprintf(fp, ",\n");
|
||||||
}
|
}
|
||||||
/* Dump explicit port map if required */
|
/* Dump explicit port map if required */
|
||||||
|
|
|
@ -1142,7 +1142,7 @@ void dump_verilog_pb_graph_pin_interc(t_sram_orgz_info* cur_sram_orgz_info,
|
||||||
fprintf(fp, "%s_%d_ (", cur_interc->spice_model->prefix, cur_interc->spice_model->cnt);
|
fprintf(fp, "%s_%d_ (", cur_interc->spice_model->prefix, cur_interc->spice_model->cnt);
|
||||||
cur_interc->spice_model->cnt++; /* Stats the number of spice_model used*/
|
cur_interc->spice_model->cnt++; /* Stats the number of spice_model used*/
|
||||||
/* Dump global ports */
|
/* Dump global ports */
|
||||||
if (0 < rec_dump_verilog_spice_model_global_ports(fp, cur_interc->spice_model, FALSE, FALSE, my_bool_to_boolean(is_explicit_mapping))) {
|
if (0 < rec_dump_verilog_spice_model_global_ports(fp, cur_interc->spice_model, FALSE, FALSE, my_bool_to_boolean(is_explicit_mapping), TRUE)) {
|
||||||
fprintf(fp, ",\n");
|
fprintf(fp, ",\n");
|
||||||
}
|
}
|
||||||
/* Print the pin names! Input and output
|
/* Print the pin names! Input and output
|
||||||
|
@ -1278,7 +1278,7 @@ void dump_verilog_pb_graph_pin_interc(t_sram_orgz_info* cur_sram_orgz_info,
|
||||||
fprintf(fp, "%s_size%d ", cur_interc->spice_model->name, fan_in);
|
fprintf(fp, "%s_size%d ", cur_interc->spice_model->name, fan_in);
|
||||||
fprintf(fp, "%s_size%d_%d_ (", cur_interc->spice_model->prefix, fan_in, cur_interc->spice_model->cnt);
|
fprintf(fp, "%s_size%d_%d_ (", cur_interc->spice_model->prefix, fan_in, cur_interc->spice_model->cnt);
|
||||||
/* Dump global ports */
|
/* Dump global ports */
|
||||||
if (0 < rec_dump_verilog_spice_model_global_ports(fp, cur_interc->spice_model, FALSE, FALSE, my_bool_to_boolean(is_explicit_mapping))) {
|
if (0 < rec_dump_verilog_spice_model_global_ports(fp, cur_interc->spice_model, FALSE, FALSE, my_bool_to_boolean(is_explicit_mapping), TRUE)) {
|
||||||
fprintf(fp, ",\n");
|
fprintf(fp, ",\n");
|
||||||
}
|
}
|
||||||
/* Inputs */
|
/* Inputs */
|
||||||
|
@ -1874,7 +1874,9 @@ void dump_verilog_phy_pb_graph_node_rec(t_sram_orgz_info* cur_sram_orgz_info,
|
||||||
} else {
|
} else {
|
||||||
if (0 < rec_dump_verilog_spice_model_global_ports(fp,
|
if (0 < rec_dump_verilog_spice_model_global_ports(fp,
|
||||||
cur_pb_type->modes[mode_index].pb_type_children[ipb].spice_model,
|
cur_pb_type->modes[mode_index].pb_type_children[ipb].spice_model,
|
||||||
FALSE, TRUE, my_bool_to_boolean(is_explicit_mapping))) {
|
FALSE, TRUE, my_bool_to_boolean(is_explicit_mapping),
|
||||||
|
FALSE)) {
|
||||||
|
|
||||||
fprintf(fp, ",\n");
|
fprintf(fp, ",\n");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -123,7 +123,7 @@ void dump_verilog_pb_generic_primitive(t_sram_orgz_info* cur_sram_orgz_info,
|
||||||
fprintf(fp, "\n");
|
fprintf(fp, "\n");
|
||||||
/* Only dump the global ports belonging to a spice_model
|
/* Only dump the global ports belonging to a spice_model
|
||||||
*/
|
*/
|
||||||
if (0 < rec_dump_verilog_spice_model_global_ports(fp, verilog_model, TRUE, TRUE, my_bool_to_boolean(is_explicit_mapping))) {
|
if (0 < rec_dump_verilog_spice_model_global_ports(fp, verilog_model, TRUE, TRUE, my_bool_to_boolean(is_explicit_mapping), TRUE)) {
|
||||||
fprintf(fp, ",\n");
|
fprintf(fp, ",\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -228,13 +228,17 @@ void dump_verilog_pb_generic_primitive(t_sram_orgz_info* cur_sram_orgz_info,
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Call the subckt*/
|
/* Call the subckt*/
|
||||||
fprintf(fp, "%s %s_%d_ (", verilog_model->name, verilog_model->prefix, verilog_model->cnt);
|
if (0 == strcmp(verilog_model->name,port_prefix)) {
|
||||||
|
fprintf(fp, "%s %s_logic_%d_ (", verilog_model->name, verilog_model->prefix, verilog_model->cnt);
|
||||||
|
} else {
|
||||||
|
fprintf(fp, "%s %s_%d_ (", verilog_model->name, verilog_model->prefix, verilog_model->cnt);
|
||||||
|
}
|
||||||
fprintf(fp, "\n");
|
fprintf(fp, "\n");
|
||||||
/* Only dump the global ports belonging to a spice_model
|
/* Only dump the global ports belonging to a spice_model
|
||||||
* Disable recursive here !
|
* Disable recursive here !
|
||||||
*/
|
*/
|
||||||
/*if (0 < rec_dump_verilog_spice_model_global_ports(fp, verilog_model, FALSE, FALSE, my_bool_to_boolean(is_explicit_mapping))) {*/
|
/*if (0 < rec_dump_verilog_spice_model_global_ports(fp, verilog_model, FALSE, FALSE, my_bool_to_boolean(is_explicit_mapping))) {*/
|
||||||
if (0 < rec_dump_verilog_spice_model_global_ports(fp, verilog_model, FALSE, FALSE, subckt_require_explicit_port_map)) {
|
if (0 < rec_dump_verilog_spice_model_global_ports(fp, verilog_model, FALSE, FALSE, subckt_require_explicit_port_map, TRUE)) {
|
||||||
fprintf(fp, ",\n");
|
fprintf(fp, ",\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -535,7 +539,7 @@ void dump_verilog_pb_primitive_lut(t_sram_orgz_info* cur_sram_orgz_info,
|
||||||
formatted_subckt_prefix, cur_pb_type->name);
|
formatted_subckt_prefix, cur_pb_type->name);
|
||||||
fprintf(fp, "\n");
|
fprintf(fp, "\n");
|
||||||
/* Only dump the global ports belonging to a spice_model */
|
/* Only dump the global ports belonging to a spice_model */
|
||||||
if (0 < rec_dump_verilog_spice_model_global_ports(fp, verilog_model, TRUE, TRUE, my_bool_to_boolean(is_explicit_mapping))) {
|
if (0 < rec_dump_verilog_spice_model_global_ports(fp, verilog_model, TRUE, TRUE, my_bool_to_boolean(is_explicit_mapping), TRUE)) {
|
||||||
fprintf(fp, ",\n");
|
fprintf(fp, ",\n");
|
||||||
}
|
}
|
||||||
/* Print inputs, outputs, inouts, clocks, NO SRAMs*/
|
/* Print inputs, outputs, inouts, clocks, NO SRAMs*/
|
||||||
|
@ -610,14 +614,18 @@ void dump_verilog_pb_primitive_lut(t_sram_orgz_info* cur_sram_orgz_info,
|
||||||
subckt_require_explicit_port_map = TRUE;
|
subckt_require_explicit_port_map = TRUE;
|
||||||
}
|
}
|
||||||
/* Call LUT subckt*/
|
/* Call LUT subckt*/
|
||||||
fprintf(fp, "%s %s_%d_ (", verilog_model->name, verilog_model->prefix, verilog_model->cnt);
|
if (0 == strcmp(verilog_model->name,port_prefix)) {
|
||||||
|
fprintf(fp, "%s %s_logic_%d_ (", verilog_model->name, verilog_model->prefix, verilog_model->cnt);
|
||||||
|
} else {
|
||||||
|
fprintf(fp, "%s %s_%d_ (", verilog_model->name, verilog_model->prefix, verilog_model->cnt);
|
||||||
|
}
|
||||||
fprintf(fp, "\n");
|
fprintf(fp, "\n");
|
||||||
/* if we have to add global ports when dumping submodules of LUTs
|
/* if we have to add global ports when dumping submodules of LUTs
|
||||||
* otherwise, the port map here does not match that of submodules
|
* otherwise, the port map here does not match that of submodules
|
||||||
* Only dump the global ports belonging to a spice_model
|
* Only dump the global ports belonging to a spice_model
|
||||||
* DISABLE recursive here !
|
* DISABLE recursive here !
|
||||||
*/
|
*/
|
||||||
if (0 < rec_dump_verilog_spice_model_global_ports(fp, verilog_model, FALSE, FALSE, subckt_require_explicit_port_map)) {
|
if (0 < rec_dump_verilog_spice_model_global_ports(fp, verilog_model, FALSE, FALSE, subckt_require_explicit_port_map, TRUE)) {
|
||||||
fprintf(fp, ",\n");
|
fprintf(fp, ",\n");
|
||||||
}
|
}
|
||||||
/* Connect inputs*/
|
/* Connect inputs*/
|
||||||
|
|
|
@ -836,7 +836,7 @@ void dump_verilog_switch_box_mux(t_sram_orgz_info* cur_sram_orgz_info,
|
||||||
verilog_model->prefix, mux_size, verilog_model->cnt);
|
verilog_model->prefix, mux_size, verilog_model->cnt);
|
||||||
|
|
||||||
/* Dump global ports */
|
/* Dump global ports */
|
||||||
if (0 < rec_dump_verilog_spice_model_global_ports(fp, verilog_model, FALSE, FALSE, my_bool_to_boolean(is_explicit_mapping))) {
|
if (0 < rec_dump_verilog_spice_model_global_ports(fp, verilog_model, FALSE, FALSE, my_bool_to_boolean(is_explicit_mapping), TRUE)) {
|
||||||
fprintf(fp, ",\n");
|
fprintf(fp, ",\n");
|
||||||
}
|
}
|
||||||
if (true == is_explicit_mapping) {
|
if (true == is_explicit_mapping) {
|
||||||
|
@ -1093,7 +1093,7 @@ void dump_verilog_unique_switch_box_mux(t_sram_orgz_info* cur_sram_orgz_info,
|
||||||
verilog_model->prefix, mux_size, verilog_model->cnt);
|
verilog_model->prefix, mux_size, verilog_model->cnt);
|
||||||
|
|
||||||
/* Dump global ports */
|
/* Dump global ports */
|
||||||
if (0 < rec_dump_verilog_spice_model_global_ports(fp, verilog_model, FALSE, FALSE, my_bool_to_boolean(is_explicit_mapping))) {
|
if (0 < rec_dump_verilog_spice_model_global_ports(fp, verilog_model, FALSE, FALSE, my_bool_to_boolean(is_explicit_mapping), TRUE)) {
|
||||||
fprintf(fp, ",\n");
|
fprintf(fp, ",\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2975,7 +2975,7 @@ void dump_verilog_connection_box_mux(t_sram_orgz_info* cur_sram_orgz_info,
|
||||||
verilog_model->prefix, mux_size, verilog_model->cnt);
|
verilog_model->prefix, mux_size, verilog_model->cnt);
|
||||||
|
|
||||||
/* Dump global ports */
|
/* Dump global ports */
|
||||||
if (0 < rec_dump_verilog_spice_model_global_ports(fp, verilog_model, FALSE, FALSE, my_bool_to_boolean(is_explicit_mapping))) {
|
if (0 < rec_dump_verilog_spice_model_global_ports(fp, verilog_model, FALSE, FALSE, my_bool_to_boolean(is_explicit_mapping), TRUE)) {
|
||||||
fprintf(fp, ",\n");
|
fprintf(fp, ",\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -3222,7 +3222,7 @@ void dump_verilog_connection_box_mux(t_sram_orgz_info* cur_sram_orgz_info,
|
||||||
verilog_model->prefix, mux_size, verilog_model->cnt);
|
verilog_model->prefix, mux_size, verilog_model->cnt);
|
||||||
|
|
||||||
/* Dump global ports */
|
/* Dump global ports */
|
||||||
if (0 < rec_dump_verilog_spice_model_global_ports(fp, verilog_model, FALSE, FALSE, my_bool_to_boolean(is_explicit_mapping))) {
|
if (0 < rec_dump_verilog_spice_model_global_ports(fp, verilog_model, FALSE, FALSE, my_bool_to_boolean(is_explicit_mapping), TRUE)) {
|
||||||
fprintf(fp, ",\n");
|
fprintf(fp, ",\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -170,7 +170,7 @@ void dump_verilog_cmos_mux_one_basis_module(FILE* fp,
|
||||||
/* Print the port list and definition */
|
/* Print the port list and definition */
|
||||||
fprintf(fp, "module %s (\n", mux_basis_subckt_name);
|
fprintf(fp, "module %s (\n", mux_basis_subckt_name);
|
||||||
/* Dump global ports */
|
/* Dump global ports */
|
||||||
if (0 < rec_dump_verilog_spice_model_global_ports(fp, cur_spice_model, TRUE, FALSE, FALSE)) {
|
if (0 < rec_dump_verilog_spice_model_global_ports(fp, cur_spice_model, TRUE, FALSE, FALSE, TRUE)) {
|
||||||
fprintf(fp, ",\n");
|
fprintf(fp, ",\n");
|
||||||
}
|
}
|
||||||
/* Port list */
|
/* Port list */
|
||||||
|
@ -288,7 +288,7 @@ void dump_verilog_cmos_mux_one_basis_module_structural(FILE* fp,
|
||||||
/* Print the port list and definition */
|
/* Print the port list and definition */
|
||||||
fprintf(fp, "module %s (\n", mux_basis_subckt_name);
|
fprintf(fp, "module %s (\n", mux_basis_subckt_name);
|
||||||
/* Dump global ports */
|
/* Dump global ports */
|
||||||
if (0 < rec_dump_verilog_spice_model_global_ports(fp, cur_spice_model, TRUE, FALSE, FALSE)) {
|
if (0 < rec_dump_verilog_spice_model_global_ports(fp, cur_spice_model, TRUE, FALSE, FALSE, TRUE)) {
|
||||||
fprintf(fp, ",\n");
|
fprintf(fp, ",\n");
|
||||||
}
|
}
|
||||||
/* Port list */
|
/* Port list */
|
||||||
|
@ -391,7 +391,7 @@ void dump_verilog_rram_mux_one_basis_module_structural(FILE* fp,
|
||||||
/* Print the port list and definition */
|
/* Print the port list and definition */
|
||||||
fprintf(fp, "module %s (\n", mux_basis_subckt_name);
|
fprintf(fp, "module %s (\n", mux_basis_subckt_name);
|
||||||
/* Dump global ports */
|
/* Dump global ports */
|
||||||
if (0 < rec_dump_verilog_spice_model_global_ports(fp, cur_spice_model, TRUE, FALSE, FALSE)) {
|
if (0 < rec_dump_verilog_spice_model_global_ports(fp, cur_spice_model, TRUE, FALSE, FALSE, TRUE)) {
|
||||||
fprintf(fp, ",\n");
|
fprintf(fp, ",\n");
|
||||||
}
|
}
|
||||||
/* Port list */
|
/* Port list */
|
||||||
|
@ -457,7 +457,7 @@ void dump_verilog_rram_mux_one_basis_module(FILE* fp,
|
||||||
/* Print the port list and definition */
|
/* Print the port list and definition */
|
||||||
fprintf(fp, "module %s (\n", mux_basis_subckt_name);
|
fprintf(fp, "module %s (\n", mux_basis_subckt_name);
|
||||||
/* Dump global ports */
|
/* Dump global ports */
|
||||||
if (0 < rec_dump_verilog_spice_model_global_ports(fp, cur_spice_model, TRUE, FALSE, FALSE)) {
|
if (0 < rec_dump_verilog_spice_model_global_ports(fp, cur_spice_model, TRUE, FALSE, FALSE, TRUE)) {
|
||||||
fprintf(fp, ",\n");
|
fprintf(fp, ",\n");
|
||||||
}
|
}
|
||||||
/* Port list */
|
/* Port list */
|
||||||
|
@ -796,7 +796,7 @@ void dump_verilog_cmos_mux_tree_structure(FILE* fp,
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Dump global ports */
|
/* Dump global ports */
|
||||||
if (0 < rec_dump_verilog_spice_model_global_ports(fp, tgate_spice_model, FALSE, FALSE, my_bool_to_boolean(use_explicit_port_map))) {
|
if (0 < rec_dump_verilog_spice_model_global_ports(fp, tgate_spice_model, FALSE, FALSE, my_bool_to_boolean(use_explicit_port_map), TRUE)) {
|
||||||
fprintf(fp, ",\n");
|
fprintf(fp, ",\n");
|
||||||
}
|
}
|
||||||
if (true == use_explicit_port_map) {
|
if (true == use_explicit_port_map) {
|
||||||
|
@ -839,7 +839,7 @@ void dump_verilog_cmos_mux_tree_structure(FILE* fp,
|
||||||
} else {
|
} else {
|
||||||
assert (SPICE_MODEL_PASSGATE == tgate_spice_model->type);
|
assert (SPICE_MODEL_PASSGATE == tgate_spice_model->type);
|
||||||
/* Dump global ports */
|
/* Dump global ports */
|
||||||
if (0 < rec_dump_verilog_spice_model_global_ports(fp, &spice_model, FALSE, FALSE, my_bool_to_boolean(is_explicit_mapping))) {
|
if (0 < rec_dump_verilog_spice_model_global_ports(fp, &spice_model, FALSE, FALSE, my_bool_to_boolean(is_explicit_mapping), TRUE)) {
|
||||||
fprintf(fp, ",\n");
|
fprintf(fp, ",\n");
|
||||||
}
|
}
|
||||||
if (true == is_explicit_mapping) {
|
if (true == is_explicit_mapping) {
|
||||||
|
@ -893,7 +893,7 @@ void dump_verilog_cmos_mux_tree_structure(FILE* fp,
|
||||||
spice_model.lut_intermediate_buffer->spice_model_name,
|
spice_model.lut_intermediate_buffer->spice_model_name,
|
||||||
nextlevel, out_idx); /* Given name*/
|
nextlevel, out_idx); /* Given name*/
|
||||||
/* Dump global ports */
|
/* Dump global ports */
|
||||||
if (0 < rec_dump_verilog_spice_model_global_ports(fp, spice_model.lut_intermediate_buffer->spice_model, FALSE, FALSE, spice_model.lut_intermediate_buffer->spice_model->dump_explicit_port_map)) {
|
if (0 < rec_dump_verilog_spice_model_global_ports(fp, spice_model.lut_intermediate_buffer->spice_model, FALSE, FALSE, spice_model.lut_intermediate_buffer->spice_model->dump_explicit_port_map, TRUE)) {
|
||||||
fprintf(fp, ",\n");
|
fprintf(fp, ",\n");
|
||||||
}
|
}
|
||||||
/* Dump explicit port map if required */
|
/* Dump explicit port map if required */
|
||||||
|
@ -1023,7 +1023,7 @@ void dump_verilog_cmos_mux_multilevel_structure(FILE* fp,
|
||||||
/* Print the special basis */
|
/* Print the special basis */
|
||||||
fprintf(fp, "%s special_basis(", mux_special_basis_subckt_name);
|
fprintf(fp, "%s special_basis(", mux_special_basis_subckt_name);
|
||||||
/* Dump global ports */
|
/* Dump global ports */
|
||||||
if (0 < rec_dump_verilog_spice_model_global_ports(fp, &spice_model, FALSE, FALSE, my_bool_to_boolean(is_explicit_mapping))) {
|
if (0 < rec_dump_verilog_spice_model_global_ports(fp, &spice_model, FALSE, FALSE, my_bool_to_boolean(is_explicit_mapping), TRUE)) {
|
||||||
fprintf(fp, ",\n");
|
fprintf(fp, ",\n");
|
||||||
}
|
}
|
||||||
if (true == is_explicit_mapping) {
|
if (true == is_explicit_mapping) {
|
||||||
|
@ -1072,7 +1072,7 @@ void dump_verilog_cmos_mux_multilevel_structure(FILE* fp,
|
||||||
fprintf(fp, "%s ", mux_basis_subckt_name); /* subckt_name */
|
fprintf(fp, "%s ", mux_basis_subckt_name); /* subckt_name */
|
||||||
fprintf(fp, "mux_basis_no%d (", mux_basis_cnt); /* given_name */
|
fprintf(fp, "mux_basis_no%d (", mux_basis_cnt); /* given_name */
|
||||||
/* Dump global ports */
|
/* Dump global ports */
|
||||||
if (0 < rec_dump_verilog_spice_model_global_ports(fp, &spice_model, FALSE, FALSE, my_bool_to_boolean(is_explicit_mapping))) {
|
if (0 < rec_dump_verilog_spice_model_global_ports(fp, &spice_model, FALSE, FALSE, my_bool_to_boolean(is_explicit_mapping), TRUE)) {
|
||||||
fprintf(fp, ",\n");
|
fprintf(fp, ",\n");
|
||||||
}
|
}
|
||||||
if (true == is_explicit_mapping) {
|
if (true == is_explicit_mapping) {
|
||||||
|
@ -1180,7 +1180,7 @@ void dump_verilog_cmos_mux_onelevel_structure(FILE* fp,
|
||||||
fprintf(fp, "%s mux_basis (\n", mux_basis_subckt_name); /* given_name */
|
fprintf(fp, "%s mux_basis (\n", mux_basis_subckt_name); /* given_name */
|
||||||
/* Dump global ports */
|
/* Dump global ports */
|
||||||
if (0 < rec_dump_verilog_spice_model_global_ports(fp, &spice_model, FALSE, FALSE,
|
if (0 < rec_dump_verilog_spice_model_global_ports(fp, &spice_model, FALSE, FALSE,
|
||||||
my_bool_to_boolean(is_explicit_mapping))) {
|
my_bool_to_boolean(is_explicit_mapping), TRUE)) {
|
||||||
fprintf(fp, ",\n");
|
fprintf(fp, ",\n");
|
||||||
}
|
}
|
||||||
fprintf(fp, "//----- MUX inputs -----\n");
|
fprintf(fp, "//----- MUX inputs -----\n");
|
||||||
|
@ -1345,7 +1345,7 @@ void dump_verilog_cmos_mux_submodule(FILE* fp,
|
||||||
spice_model.name, mux_size);
|
spice_model.name, mux_size);
|
||||||
fprintf(fp, "module %s_mux(\n", spice_model.name);
|
fprintf(fp, "module %s_mux(\n", spice_model.name);
|
||||||
/* Dump global ports */
|
/* Dump global ports */
|
||||||
if (0 < rec_dump_verilog_spice_model_global_ports(fp, &spice_model, TRUE, FALSE, FALSE)) {
|
if (0 < rec_dump_verilog_spice_model_global_ports(fp, &spice_model, TRUE, FALSE, FALSE, TRUE)) {
|
||||||
fprintf(fp, ",\n");
|
fprintf(fp, ",\n");
|
||||||
}
|
}
|
||||||
/* Print input ports*/
|
/* Print input ports*/
|
||||||
|
@ -1427,7 +1427,7 @@ void dump_verilog_cmos_mux_submodule(FILE* fp,
|
||||||
spice_model.input_buffer->spice_model_name,
|
spice_model.input_buffer->spice_model_name,
|
||||||
spice_model.input_buffer->spice_model_name, i); /* Given name*/
|
spice_model.input_buffer->spice_model_name, i); /* Given name*/
|
||||||
/* Dump global ports */
|
/* Dump global ports */
|
||||||
if (0 < rec_dump_verilog_spice_model_global_ports(fp, spice_model.input_buffer->spice_model, FALSE, FALSE, TRUE)) {
|
if (0 < rec_dump_verilog_spice_model_global_ports(fp, spice_model.input_buffer->spice_model, FALSE, FALSE, TRUE, TRUE)) {
|
||||||
fprintf(fp, ",\n");
|
fprintf(fp, ",\n");
|
||||||
}
|
}
|
||||||
/* Dump explicit port map if required */
|
/* Dump explicit port map if required */
|
||||||
|
@ -1493,7 +1493,7 @@ void dump_verilog_cmos_mux_submodule(FILE* fp,
|
||||||
spice_model.output_buffer->spice_model_name,
|
spice_model.output_buffer->spice_model_name,
|
||||||
iport, ipin); /* subckt name */
|
iport, ipin); /* subckt name */
|
||||||
/* Dump global ports */
|
/* Dump global ports */
|
||||||
if (0 < rec_dump_verilog_spice_model_global_ports(fp, spice_model.output_buffer->spice_model, FALSE, FALSE, TRUE)) {
|
if (0 < rec_dump_verilog_spice_model_global_ports(fp, spice_model.output_buffer->spice_model, FALSE, FALSE, TRUE, TRUE)) {
|
||||||
fprintf(fp, ",\n");
|
fprintf(fp, ",\n");
|
||||||
}
|
}
|
||||||
/* check */
|
/* check */
|
||||||
|
@ -1603,7 +1603,7 @@ void dump_verilog_rram_mux_tree_structure(FILE* fp,
|
||||||
/* Each basis mux2to1: <given_name> <input0> <input1> <output> <sram> <sram_inv> svdd sgnd <subckt_name> */
|
/* Each basis mux2to1: <given_name> <input0> <input1> <output> <sram> <sram_inv> svdd sgnd <subckt_name> */
|
||||||
fprintf(fp, "%s mux_basis_no%d (", mux_basis_subckt_name, mux_basis_cnt); /* given_name */
|
fprintf(fp, "%s mux_basis_no%d (", mux_basis_subckt_name, mux_basis_cnt); /* given_name */
|
||||||
/* Dump global ports */
|
/* Dump global ports */
|
||||||
if (0 < rec_dump_verilog_spice_model_global_ports(fp, &spice_model, FALSE, FALSE, FALSE)) {
|
if (0 < rec_dump_verilog_spice_model_global_ports(fp, &spice_model, FALSE, FALSE, FALSE, TRUE)) {
|
||||||
fprintf(fp, ",\n");
|
fprintf(fp, ",\n");
|
||||||
}
|
}
|
||||||
fprintf(fp, "mux2_l%d_in[%d:%d], ", level, j, nextj); /* input0 input1 */
|
fprintf(fp, "mux2_l%d_in[%d:%d], ", level, j, nextj); /* input0 input1 */
|
||||||
|
@ -1683,7 +1683,7 @@ void dump_verilog_rram_mux_multilevel_structure(FILE* fp,
|
||||||
/* Print the special basis */
|
/* Print the special basis */
|
||||||
fprintf(fp, "%s special_basis(\n", mux_special_basis_subckt_name);
|
fprintf(fp, "%s special_basis(\n", mux_special_basis_subckt_name);
|
||||||
/* Dump global ports */
|
/* Dump global ports */
|
||||||
if (0 < rec_dump_verilog_spice_model_global_ports(fp, &spice_model, FALSE, FALSE, FALSE)) {
|
if (0 < rec_dump_verilog_spice_model_global_ports(fp, &spice_model, FALSE, FALSE, FALSE, TRUE)) {
|
||||||
fprintf(fp, ",\n");
|
fprintf(fp, ",\n");
|
||||||
}
|
}
|
||||||
fprintf(fp, "mux2_l%d_in[%d:%d], ", level, j, j + cur_num_input_basis - 1); /* inputs */
|
fprintf(fp, "mux2_l%d_in[%d:%d], ", level, j, j + cur_num_input_basis - 1); /* inputs */
|
||||||
|
@ -1701,7 +1701,7 @@ void dump_verilog_rram_mux_multilevel_structure(FILE* fp,
|
||||||
fprintf(fp, "%s ", mux_basis_subckt_name); /* subckt_name */
|
fprintf(fp, "%s ", mux_basis_subckt_name); /* subckt_name */
|
||||||
fprintf(fp, "mux_basis_no%d (", mux_basis_cnt); /* given_name */
|
fprintf(fp, "mux_basis_no%d (", mux_basis_cnt); /* given_name */
|
||||||
/* Dump global ports */
|
/* Dump global ports */
|
||||||
if (0 < rec_dump_verilog_spice_model_global_ports(fp, &spice_model, FALSE, FALSE, FALSE)) {
|
if (0 < rec_dump_verilog_spice_model_global_ports(fp, &spice_model, FALSE, FALSE, FALSE, TRUE)) {
|
||||||
fprintf(fp, ",\n");
|
fprintf(fp, ",\n");
|
||||||
}
|
}
|
||||||
fprintf(fp, "mux2_l%d_in[%d:%d], ", level, j, j + cur_num_input_basis - 1); /* input0 input1 */
|
fprintf(fp, "mux2_l%d_in[%d:%d], ", level, j, j + cur_num_input_basis - 1); /* input0 input1 */
|
||||||
|
@ -1747,7 +1747,7 @@ void dump_verilog_rram_mux_onelevel_structure(FILE* fp,
|
||||||
|
|
||||||
fprintf(fp, "%s mux_basis (\n", mux_basis_subckt_name); /* given_name */
|
fprintf(fp, "%s mux_basis (\n", mux_basis_subckt_name); /* given_name */
|
||||||
/* Dump global ports */
|
/* Dump global ports */
|
||||||
if (0 < rec_dump_verilog_spice_model_global_ports(fp, &spice_model, FALSE, FALSE, FALSE)) {
|
if (0 < rec_dump_verilog_spice_model_global_ports(fp, &spice_model, FALSE, FALSE, FALSE, TRUE)) {
|
||||||
fprintf(fp, ",\n");
|
fprintf(fp, ",\n");
|
||||||
}
|
}
|
||||||
fprintf(fp, "//----- MUX inputs -----\n");
|
fprintf(fp, "//----- MUX inputs -----\n");
|
||||||
|
@ -1832,7 +1832,7 @@ void dump_verilog_rram_mux_submodule(FILE* fp,
|
||||||
gen_verilog_one_mux_module_name(&spice_model, mux_size));
|
gen_verilog_one_mux_module_name(&spice_model, mux_size));
|
||||||
}
|
}
|
||||||
/* Dump global ports */
|
/* Dump global ports */
|
||||||
if (0 < rec_dump_verilog_spice_model_global_ports(fp, &spice_model, TRUE, FALSE, FALSE)) {
|
if (0 < rec_dump_verilog_spice_model_global_ports(fp, &spice_model, TRUE, FALSE, FALSE, TRUE)) {
|
||||||
fprintf(fp, ",\n");
|
fprintf(fp, ",\n");
|
||||||
}
|
}
|
||||||
/* Print input ports*/
|
/* Print input ports*/
|
||||||
|
@ -1888,7 +1888,7 @@ void dump_verilog_rram_mux_submodule(FILE* fp,
|
||||||
spice_model.input_buffer->spice_model_name,
|
spice_model.input_buffer->spice_model_name,
|
||||||
spice_model.input_buffer->spice_model_name, i); /* Given name*/
|
spice_model.input_buffer->spice_model_name, i); /* Given name*/
|
||||||
/* Dump global ports */
|
/* Dump global ports */
|
||||||
if (0 < rec_dump_verilog_spice_model_global_ports(fp, spice_model.input_buffer->spice_model, FALSE, FALSE, TRUE)) {
|
if (0 < rec_dump_verilog_spice_model_global_ports(fp, spice_model.input_buffer->spice_model, FALSE, FALSE, TRUE, TRUE)) {
|
||||||
fprintf(fp, ",\n");
|
fprintf(fp, ",\n");
|
||||||
}
|
}
|
||||||
/* Dump explicit port map if required */
|
/* Dump explicit port map if required */
|
||||||
|
@ -1951,7 +1951,7 @@ void dump_verilog_rram_mux_submodule(FILE* fp,
|
||||||
spice_model.output_buffer->spice_model_name,
|
spice_model.output_buffer->spice_model_name,
|
||||||
spice_model.output_buffer->spice_model_name); /* subckt name */
|
spice_model.output_buffer->spice_model_name); /* subckt name */
|
||||||
/* Dump global ports */
|
/* Dump global ports */
|
||||||
if (0 < rec_dump_verilog_spice_model_global_ports(fp, spice_model.output_buffer->spice_model, FALSE, FALSE, TRUE)) {
|
if (0 < rec_dump_verilog_spice_model_global_ports(fp, spice_model.output_buffer->spice_model, FALSE, FALSE, TRUE, TRUE)) {
|
||||||
fprintf(fp, ",\n");
|
fprintf(fp, ",\n");
|
||||||
}
|
}
|
||||||
/* Dump explicit port map if required */
|
/* Dump explicit port map if required */
|
||||||
|
@ -2335,6 +2335,74 @@ void dump_verilog_submodule_muxes(t_sram_orgz_info* cur_sram_orgz_info,
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void dump_verilog_wire_module(FILE* fp,
|
||||||
|
char* wire_subckt_name,
|
||||||
|
t_spice_model verilog_model) {
|
||||||
|
int num_input_port = 0;
|
||||||
|
int num_output_port = 0;
|
||||||
|
t_spice_model_port** input_port = NULL;
|
||||||
|
t_spice_model_port** output_port = NULL;
|
||||||
|
|
||||||
|
/* Ensure a valid file handler*/
|
||||||
|
if (NULL == fp) {
|
||||||
|
vpr_printf(TIO_MESSAGE_ERROR,"(FILE:%s,LINE[%d])Invalid File handler.\n",
|
||||||
|
__FILE__, __LINE__);
|
||||||
|
exit(1);
|
||||||
|
}
|
||||||
|
/* Check the wire model*/
|
||||||
|
assert(NULL != verilog_model.wire_param);
|
||||||
|
assert(0 < verilog_model.wire_param->level);
|
||||||
|
/* Find the input port, output port*/
|
||||||
|
input_port = find_spice_model_ports(&verilog_model, SPICE_MODEL_PORT_INPUT, &num_input_port, TRUE);
|
||||||
|
output_port = find_spice_model_ports(&verilog_model, SPICE_MODEL_PORT_OUTPUT, &num_output_port, TRUE);
|
||||||
|
|
||||||
|
/* Asserts*/
|
||||||
|
assert(1 == num_input_port);
|
||||||
|
assert(1 == num_output_port);
|
||||||
|
assert(1 == input_port[0]->size);
|
||||||
|
assert(1 == output_port[0]->size);
|
||||||
|
/* print the spice model*/
|
||||||
|
fprintf(fp, "//-----Wire module, verilog_model_name=%s -----\n", verilog_model.name);
|
||||||
|
switch (verilog_model.type) {
|
||||||
|
case SPICE_MODEL_CHAN_WIRE:
|
||||||
|
/* Add an output at middle point for connecting CB inputs */
|
||||||
|
fprintf(fp, "module %s (\n", wire_subckt_name);
|
||||||
|
/* Dump global ports */
|
||||||
|
if (0 < rec_dump_verilog_spice_model_global_ports(fp, &verilog_model, TRUE, FALSE, FALSE, TRUE)) {
|
||||||
|
fprintf(fp, ",\n");
|
||||||
|
}
|
||||||
|
fprintf(fp, "input wire %s, output wire %s, output wire mid_out);\n",
|
||||||
|
input_port[0]->prefix, output_port[0]->prefix);
|
||||||
|
fprintf(fp, "\tassign %s = %s;\n", output_port[0]->prefix, input_port[0]->prefix);
|
||||||
|
fprintf(fp, "\tassign mid_out = %s;\n", input_port[0]->prefix);
|
||||||
|
break;
|
||||||
|
case SPICE_MODEL_WIRE:
|
||||||
|
/* Add an output at middle point for connecting CB inputs */
|
||||||
|
fprintf(fp, "module %s (\n",
|
||||||
|
wire_subckt_name);
|
||||||
|
/* Dump global ports */
|
||||||
|
if (0 < rec_dump_verilog_spice_model_global_ports(fp, &verilog_model, TRUE, FALSE, FALSE, TRUE)) {
|
||||||
|
fprintf(fp, ",\n");
|
||||||
|
}
|
||||||
|
fprintf(fp, "input wire %s, output wire %s);\n",
|
||||||
|
input_port[0]->prefix, output_port[0]->prefix);
|
||||||
|
/* Direct shortcut */
|
||||||
|
fprintf(fp, "\t\tassign %s = %s;\n", output_port[0]->prefix, input_port[0]->prefix);
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
vpr_printf(TIO_MESSAGE_ERROR, "(File:%s,[LINE%d])Invalid type of spice_model! Expect [chan_wire|wire].\n",
|
||||||
|
__FILE__, __LINE__);
|
||||||
|
exit(1);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Finish*/
|
||||||
|
fprintf(fp, "endmodule\n");
|
||||||
|
fprintf(fp, "//-----END Wire module, verilog_model_name=%s -----\n", verilog_model.name);
|
||||||
|
fprintf(fp, "\n");
|
||||||
|
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
/* Dump one module of a LUT */
|
/* Dump one module of a LUT */
|
||||||
static
|
static
|
||||||
void dump_verilog_submodule_one_lut(FILE* fp,
|
void dump_verilog_submodule_one_lut(FILE* fp,
|
||||||
|
@ -2379,7 +2447,7 @@ void dump_verilog_submodule_one_lut(FILE* fp,
|
||||||
fprintf(fp, "//-----LUT module, verilog_model_name=%s -----\n", verilog_model->name);
|
fprintf(fp, "//-----LUT module, verilog_model_name=%s -----\n", verilog_model->name);
|
||||||
fprintf(fp, "module %s (", verilog_model->name);
|
fprintf(fp, "module %s (", verilog_model->name);
|
||||||
/* Dump global ports */
|
/* Dump global ports */
|
||||||
if (0 < rec_dump_verilog_spice_model_global_ports(fp, verilog_model, TRUE, FALSE, FALSE)) {
|
if (0 < rec_dump_verilog_spice_model_global_ports(fp, verilog_model, TRUE, FALSE, FALSE, TRUE)) {
|
||||||
fprintf(fp, ",\n");
|
fprintf(fp, ",\n");
|
||||||
}
|
}
|
||||||
/* Print module port list */
|
/* Print module port list */
|
||||||
|
@ -2630,7 +2698,7 @@ void dump_verilog_submodule_one_lut(FILE* fp,
|
||||||
verilog_model->lut_input_buffer->spice_model->name,
|
verilog_model->lut_input_buffer->spice_model->name,
|
||||||
input_port[0]->prefix, ipin);
|
input_port[0]->prefix, ipin);
|
||||||
/* Dump global ports */
|
/* Dump global ports */
|
||||||
if (0 < rec_dump_verilog_spice_model_global_ports(fp, verilog_model->lut_input_buffer->spice_model, FALSE, FALSE, TRUE)) {
|
if (0 < rec_dump_verilog_spice_model_global_ports(fp, verilog_model->lut_input_buffer->spice_model, FALSE, FALSE, TRUE, TRUE)) {
|
||||||
fprintf(fp, ",\n");
|
fprintf(fp, ",\n");
|
||||||
}
|
}
|
||||||
/* Dump explicit port map if required */
|
/* Dump explicit port map if required */
|
||||||
|
@ -2674,7 +2742,7 @@ void dump_verilog_submodule_one_lut(FILE* fp,
|
||||||
verilog_model->lut_input_inverter->spice_model->name,
|
verilog_model->lut_input_inverter->spice_model->name,
|
||||||
input_port[0]->prefix, ipin);
|
input_port[0]->prefix, ipin);
|
||||||
/* Dump global ports */
|
/* Dump global ports */
|
||||||
if (0 < rec_dump_verilog_spice_model_global_ports(fp, verilog_model->lut_input_inverter->spice_model, FALSE, FALSE, TRUE)) {
|
if (0 < rec_dump_verilog_spice_model_global_ports(fp, verilog_model->lut_input_inverter->spice_model, FALSE, FALSE, TRUE, TRUE)) {
|
||||||
fprintf(fp, ",\n");
|
fprintf(fp, ",\n");
|
||||||
}
|
}
|
||||||
/* Dump explicit port map if required */
|
/* Dump explicit port map if required */
|
||||||
|
|
|
@ -934,7 +934,7 @@ void dump_verilog_one_clb2clb_direct(FILE* fp,
|
||||||
fprintf(fp, "%s ", cur_direct->spice_model->name);
|
fprintf(fp, "%s ", cur_direct->spice_model->name);
|
||||||
fprintf(fp, "%s_%d_ (", cur_direct->spice_model->prefix, cur_direct->spice_model->cnt);
|
fprintf(fp, "%s_%d_ (", cur_direct->spice_model->prefix, cur_direct->spice_model->cnt);
|
||||||
/* Dump global ports */
|
/* Dump global ports */
|
||||||
if (0 < rec_dump_verilog_spice_model_global_ports(fp, cur_direct->spice_model, FALSE, FALSE, FALSE)) {
|
if (0 < rec_dump_verilog_spice_model_global_ports(fp, cur_direct->spice_model, FALSE, FALSE, FALSE, TRUE)) {
|
||||||
fprintf(fp, ",\n");
|
fprintf(fp, ",\n");
|
||||||
}
|
}
|
||||||
/* Input: Print the source grid pin */
|
/* Input: Print the source grid pin */
|
||||||
|
|
|
@ -851,7 +851,8 @@ int rec_dump_verilog_spice_model_global_ports(FILE* fp,
|
||||||
const t_spice_model* cur_spice_model,
|
const t_spice_model* cur_spice_model,
|
||||||
boolean dump_port_type,
|
boolean dump_port_type,
|
||||||
boolean recursive,
|
boolean recursive,
|
||||||
boolean require_explicit_port_map) {
|
boolean require_explicit_port_map,
|
||||||
|
boolean is_lib_name) {
|
||||||
int dumped_port_cnt;
|
int dumped_port_cnt;
|
||||||
boolean dump_comma = FALSE;
|
boolean dump_comma = FALSE;
|
||||||
t_spice_model_port* cur_spice_model_port = NULL;
|
t_spice_model_port* cur_spice_model_port = NULL;
|
||||||
|
@ -900,9 +901,13 @@ int rec_dump_verilog_spice_model_global_ports(FILE* fp,
|
||||||
} else {
|
} else {
|
||||||
/* Add explicit port mapping if required */
|
/* Add explicit port mapping if required */
|
||||||
if (TRUE == require_explicit_port_map ) {
|
if (TRUE == require_explicit_port_map ) {
|
||||||
fprintf(fp, ".%s(",
|
if (TRUE == is_lib_name) {
|
||||||
cur_spice_model_port->lib_name);
|
fprintf(fp, ".%s(",
|
||||||
//cur_spice_model_port->prefix);
|
cur_spice_model_port->lib_name);
|
||||||
|
} else {
|
||||||
|
fprintf(fp, ".%s(",
|
||||||
|
cur_spice_model_port->prefix);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
fprintf(fp, "%s[0:%d]",
|
fprintf(fp, "%s[0:%d]",
|
||||||
cur_spice_model_port->prefix,
|
cur_spice_model_port->prefix,
|
||||||
|
@ -1860,7 +1865,7 @@ void dump_verilog_mux_sram_submodule(FILE* fp, t_sram_orgz_info* cur_sram_orgz_i
|
||||||
fprintf(fp, "%s %s_%d_ (", cur_sram_verilog_model->name, cur_sram_verilog_model->prefix,
|
fprintf(fp, "%s %s_%d_ (", cur_sram_verilog_model->name, cur_sram_verilog_model->prefix,
|
||||||
cur_sram_verilog_model->cnt);
|
cur_sram_verilog_model->cnt);
|
||||||
/* Only dump the global ports belonging to a spice_model */
|
/* Only dump the global ports belonging to a spice_model */
|
||||||
if (0 < rec_dump_verilog_spice_model_global_ports(fp, cur_sram_verilog_model, FALSE, TRUE, FALSE)) {
|
if (0 < rec_dump_verilog_spice_model_global_ports(fp, cur_sram_verilog_model, FALSE, TRUE, FALSE, TRUE)) {
|
||||||
fprintf(fp, ",\n");
|
fprintf(fp, ",\n");
|
||||||
}
|
}
|
||||||
dump_verilog_mux_sram_one_outport(fp, cur_sram_orgz_info,
|
dump_verilog_mux_sram_one_outport(fp, cur_sram_orgz_info,
|
||||||
|
@ -1913,7 +1918,7 @@ void dump_verilog_mux_sram_submodule(FILE* fp, t_sram_orgz_info* cur_sram_orgz_i
|
||||||
fprintf(fp, "%s %s_%d_ (", cur_sram_verilog_model->name, cur_sram_verilog_model->prefix,
|
fprintf(fp, "%s %s_%d_ (", cur_sram_verilog_model->name, cur_sram_verilog_model->prefix,
|
||||||
cur_sram_verilog_model->cnt);
|
cur_sram_verilog_model->cnt);
|
||||||
/* Only dump the global ports belonging to a spice_model */
|
/* Only dump the global ports belonging to a spice_model */
|
||||||
if (0 < rec_dump_verilog_spice_model_global_ports(fp, cur_sram_verilog_model, FALSE, TRUE, FALSE)) {
|
if (0 < rec_dump_verilog_spice_model_global_ports(fp, cur_sram_verilog_model, FALSE, TRUE, FALSE, TRUE)) {
|
||||||
fprintf(fp, ",\n");
|
fprintf(fp, ",\n");
|
||||||
}
|
}
|
||||||
fprintf(fp, "%s_out[%d], ", cur_sram_verilog_model->prefix, cur_sram_verilog_model->cnt); /* Input*/
|
fprintf(fp, "%s_out[%d], ", cur_sram_verilog_model->prefix, cur_sram_verilog_model->cnt); /* Input*/
|
||||||
|
@ -1930,7 +1935,7 @@ void dump_verilog_mux_sram_submodule(FILE* fp, t_sram_orgz_info* cur_sram_orgz_i
|
||||||
fprintf(fp, "%s %s_%d_ (", cur_sram_verilog_model->name, cur_sram_verilog_model->prefix,
|
fprintf(fp, "%s %s_%d_ (", cur_sram_verilog_model->name, cur_sram_verilog_model->prefix,
|
||||||
cur_sram_verilog_model->cnt);
|
cur_sram_verilog_model->cnt);
|
||||||
/* Only dump the global ports belonging to a spice_model */
|
/* Only dump the global ports belonging to a spice_model */
|
||||||
if (0 < rec_dump_verilog_spice_model_global_ports(fp, cur_sram_verilog_model, FALSE, TRUE, FALSE)) {
|
if (0 < rec_dump_verilog_spice_model_global_ports(fp, cur_sram_verilog_model, FALSE, TRUE, FALSE, TRUE)) {
|
||||||
fprintf(fp, ",\n");
|
fprintf(fp, ",\n");
|
||||||
}
|
}
|
||||||
/* Input of Scan-chain DFF, should be connected to the output of its precedent */
|
/* Input of Scan-chain DFF, should be connected to the output of its precedent */
|
||||||
|
@ -2026,7 +2031,7 @@ void dump_verilog_sram_submodule(FILE* fp, t_sram_orgz_info* cur_sram_orgz_info,
|
||||||
fprintf(fp, "%s %s_%d_ (", cur_sram_verilog_model->name, cur_sram_verilog_model->prefix,
|
fprintf(fp, "%s %s_%d_ (", cur_sram_verilog_model->name, cur_sram_verilog_model->prefix,
|
||||||
cur_sram_verilog_model->cnt);
|
cur_sram_verilog_model->cnt);
|
||||||
/* Only dump the global ports belonging to a spice_model */
|
/* Only dump the global ports belonging to a spice_model */
|
||||||
if (0 < rec_dump_verilog_spice_model_global_ports(fp, cur_sram_verilog_model, FALSE, TRUE, FALSE)) {
|
if (0 < rec_dump_verilog_spice_model_global_ports(fp, cur_sram_verilog_model, FALSE, TRUE, FALSE, TRUE)) {
|
||||||
fprintf(fp, ",\n");
|
fprintf(fp, ",\n");
|
||||||
}
|
}
|
||||||
fprintf(fp, "%s_out[%d], ", cur_sram_verilog_model->prefix, cur_num_sram); /* Input*/
|
fprintf(fp, "%s_out[%d], ", cur_sram_verilog_model->prefix, cur_num_sram); /* Input*/
|
||||||
|
@ -2066,7 +2071,7 @@ void dump_verilog_sram_submodule(FILE* fp, t_sram_orgz_info* cur_sram_orgz_info,
|
||||||
fprintf(fp, "%s %s_%d_ (", cur_sram_verilog_model->name, cur_sram_verilog_model->prefix,
|
fprintf(fp, "%s %s_%d_ (", cur_sram_verilog_model->name, cur_sram_verilog_model->prefix,
|
||||||
cur_sram_verilog_model->cnt);
|
cur_sram_verilog_model->cnt);
|
||||||
/* Only dump the global ports belonging to a spice_model */
|
/* Only dump the global ports belonging to a spice_model */
|
||||||
if (0 < rec_dump_verilog_spice_model_global_ports(fp, cur_sram_verilog_model, FALSE, TRUE, FALSE)) {
|
if (0 < rec_dump_verilog_spice_model_global_ports(fp, cur_sram_verilog_model, FALSE, TRUE, FALSE, TRUE)) {
|
||||||
fprintf(fp, ",\n");
|
fprintf(fp, ",\n");
|
||||||
}
|
}
|
||||||
fprintf(fp, "%s_out[%d], ", cur_sram_verilog_model->prefix, cur_sram_verilog_model->cnt); /* Input*/
|
fprintf(fp, "%s_out[%d], ", cur_sram_verilog_model->prefix, cur_sram_verilog_model->cnt); /* Input*/
|
||||||
|
@ -2083,7 +2088,7 @@ void dump_verilog_sram_submodule(FILE* fp, t_sram_orgz_info* cur_sram_orgz_info,
|
||||||
fprintf(fp, "%s %s_%d_ (", cur_sram_verilog_model->name, cur_sram_verilog_model->prefix,
|
fprintf(fp, "%s %s_%d_ (", cur_sram_verilog_model->name, cur_sram_verilog_model->prefix,
|
||||||
cur_sram_verilog_model->cnt);
|
cur_sram_verilog_model->cnt);
|
||||||
/* Only dump the global ports belonging to a spice_model */
|
/* Only dump the global ports belonging to a spice_model */
|
||||||
if (0 < rec_dump_verilog_spice_model_global_ports(fp, cur_sram_verilog_model, FALSE, TRUE, FALSE)) {
|
if (0 < rec_dump_verilog_spice_model_global_ports(fp, cur_sram_verilog_model, FALSE, TRUE, FALSE, TRUE)) {
|
||||||
fprintf(fp, ",\n");
|
fprintf(fp, ",\n");
|
||||||
}
|
}
|
||||||
/* Input of Scan-chain DFF, should be connected to the output of its precedent */
|
/* Input of Scan-chain DFF, should be connected to the output of its precedent */
|
||||||
|
@ -3062,7 +3067,7 @@ void dump_verilog_mem_module_port_map(FILE* fp,
|
||||||
* Other ports are not accepted!!!
|
* Other ports are not accepted!!!
|
||||||
*/
|
*/
|
||||||
/* 1. Global ports! */
|
/* 1. Global ports! */
|
||||||
if (0 < rec_dump_verilog_spice_model_global_ports(fp, mem_model, dump_port_type, TRUE, require_explicit_port_map)) {
|
if (0 < rec_dump_verilog_spice_model_global_ports(fp, mem_model, dump_port_type, TRUE, require_explicit_port_map, TRUE)) {
|
||||||
dump_first_comma = TRUE;
|
dump_first_comma = TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -3179,7 +3184,7 @@ void dump_verilog_mem_sram_submodule(FILE* fp,
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Only dump the global ports belonging to a spice_model */
|
/* Only dump the global ports belonging to a spice_model */
|
||||||
if (0 < rec_dump_verilog_spice_model_global_ports(fp, cur_sram_verilog_model, FALSE, TRUE, my_bool_to_boolean(is_explicit_mapping))) {
|
if (0 < rec_dump_verilog_spice_model_global_ports(fp, cur_sram_verilog_model, FALSE, TRUE, my_bool_to_boolean(is_explicit_mapping), TRUE)) {
|
||||||
fprintf(fp, ",\n");
|
fprintf(fp, ",\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -3227,7 +3232,7 @@ void dump_verilog_mem_sram_submodule(FILE* fp,
|
||||||
case SPICE_SRAM_STANDALONE:
|
case SPICE_SRAM_STANDALONE:
|
||||||
/* SRAM subckts*/
|
/* SRAM subckts*/
|
||||||
/* Only dump the global ports belonging to a spice_model */
|
/* Only dump the global ports belonging to a spice_model */
|
||||||
if (0 < rec_dump_verilog_spice_model_global_ports(fp, cur_sram_verilog_model, FALSE, TRUE, my_bool_to_boolean(is_explicit_mapping))) {
|
if (0 < rec_dump_verilog_spice_model_global_ports(fp, cur_sram_verilog_model, FALSE, TRUE, my_bool_to_boolean(is_explicit_mapping), TRUE)) {
|
||||||
fprintf(fp, ",\n");
|
fprintf(fp, ",\n");
|
||||||
}
|
}
|
||||||
fprintf(fp, "%s_in[%d:%d], ",
|
fprintf(fp, "%s_in[%d:%d], ",
|
||||||
|
|
|
@ -74,7 +74,8 @@ int rec_dump_verilog_spice_model_global_ports(FILE* fp,
|
||||||
const t_spice_model* cur_spice_model,
|
const t_spice_model* cur_spice_model,
|
||||||
boolean dump_port_type,
|
boolean dump_port_type,
|
||||||
boolean recursive,
|
boolean recursive,
|
||||||
boolean require_explicit_port_map);
|
boolean require_explicit_port_map,
|
||||||
|
boolean is_lib_name);
|
||||||
|
|
||||||
int dump_verilog_global_ports(FILE* fp, t_llist* head,
|
int dump_verilog_global_ports(FILE* fp, t_llist* head,
|
||||||
boolean dump_port_type,
|
boolean dump_port_type,
|
||||||
|
|
Loading…
Reference in New Issue