Explicit verilog passing all tests

This commit is contained in:
Baudouin Chauviere 2019-10-02 10:22:28 -06:00
parent 6b3e1fd410
commit 01ff484158
3 changed files with 1074 additions and 489 deletions

File diff suppressed because it is too large Load Diff

View File

@ -1215,6 +1215,7 @@ void dump_verilog_configuration_circuits_scan_chains(t_sram_orgz_info* cur_sram_
FILE* fp, FILE* fp,
bool is_explicit_mapping) { bool is_explicit_mapping) {
int num_mem_bits = 0; int num_mem_bits = 0;
t_spice_model* ccff_mem_model = NULL;
/* Check */ /* Check */
assert(SPICE_SRAM_SCAN_CHAIN == cur_sram_orgz_info->type); assert(SPICE_SRAM_SCAN_CHAIN == cur_sram_orgz_info->type);
@ -1226,6 +1227,9 @@ void dump_verilog_configuration_circuits_scan_chains(t_sram_orgz_info* cur_sram_
/* Get the total memory bits */ /* Get the total memory bits */
num_mem_bits = get_sram_orgz_info_num_mem_bit(cur_sram_orgz_info); num_mem_bits = get_sram_orgz_info_num_mem_bit(cur_sram_orgz_info);
/* Get model of the configuration chain */
get_sram_orgz_info_mem_model(cur_sram_orgz_info, &ccff_mem_model);
/* Dump each Scan-chain FF */ /* Dump each Scan-chain FF */
fprintf(fp, "//------ Configuration peripheral for Scan-chain FFs -----\n"); fprintf(fp, "//------ Configuration peripheral for Scan-chain FFs -----\n");
fprintf(fp, "%s %s_0_ (\n", fprintf(fp, "%s %s_0_ (\n",
@ -1243,7 +1247,8 @@ void dump_verilog_configuration_circuits_scan_chains(t_sram_orgz_info* cur_sram_
} }
fprintf(fp, ",\n"); fprintf(fp, ",\n");
if (true == is_explicit_mapping) { if (true == is_explicit_mapping) {
fprintf(fp, ".ccff_ccff_in_local_bus ("); fprintf(fp, ".%s_ccff_in_local_bus (",
ccff_mem_model->prefix);
} }
dump_verilog_sram_one_local_outport(fp, cur_sram_orgz_info, 0, num_mem_bits - 1, -1, VERILOG_PORT_CONKT); dump_verilog_sram_one_local_outport(fp, cur_sram_orgz_info, 0, num_mem_bits - 1, -1, VERILOG_PORT_CONKT);
if (true == is_explicit_mapping) { if (true == is_explicit_mapping) {
@ -1251,7 +1256,8 @@ void dump_verilog_configuration_circuits_scan_chains(t_sram_orgz_info* cur_sram_
} }
fprintf(fp, ",\n"); fprintf(fp, ",\n");
if (true == is_explicit_mapping) { if (true == is_explicit_mapping) {
fprintf(fp, ".ccff_ccff_out_local_bus ("); fprintf(fp, ".%s_ccff_out_local_bus (",
ccff_mem_model->prefix);
} }
dump_verilog_sram_one_local_outport(fp, cur_sram_orgz_info, 0, num_mem_bits - 1, 0, VERILOG_PORT_CONKT); dump_verilog_sram_one_local_outport(fp, cur_sram_orgz_info, 0, num_mem_bits - 1, 0, VERILOG_PORT_CONKT);
if (true == is_explicit_mapping) { if (true == is_explicit_mapping) {

View File

@ -1560,6 +1560,7 @@ void dump_verilog_sram_local_ports(FILE* fp,
t_spice_model_port** blb_port = NULL; t_spice_model_port** blb_port = NULL;
t_spice_model_port** wlb_port = NULL; t_spice_model_port** wlb_port = NULL;
t_spice_model* cur_sram_verilog_model = NULL; t_spice_model* cur_sram_verilog_model = NULL;
t_spice_model* ccff_mem_model = NULL;
/* Check the file handler*/ /* Check the file handler*/
if (NULL == fp) { if (NULL == fp) {
@ -1577,6 +1578,10 @@ void dump_verilog_sram_local_ports(FILE* fp,
__FILE__, __LINE__, sram_lsb, sram_msb); __FILE__, __LINE__, sram_lsb, sram_msb);
return; return;
} }
/* Get model of the configuration chain */
get_sram_orgz_info_mem_model(cur_sram_orgz_info, &ccff_mem_model);
switch (cur_sram_orgz_info->type) { switch (cur_sram_orgz_info->type) {
case SPICE_SRAM_STANDALONE: case SPICE_SRAM_STANDALONE:
case SPICE_SRAM_MEMORY_BANK: case SPICE_SRAM_MEMORY_BANK:
@ -1593,7 +1598,8 @@ void dump_verilog_sram_local_ports(FILE* fp,
case SPICE_SRAM_SCAN_CHAIN: case SPICE_SRAM_SCAN_CHAIN:
/* Dump the first port: SRAM_out of CMOS MUX or BL of RRAM MUX */ /* Dump the first port: SRAM_out of CMOS MUX or BL of RRAM MUX */
if (true == is_explicit_mapping) { if (true == is_explicit_mapping) {
fprintf(fp, ".ccff_ccff_head("); fprintf(fp, ".%s_ccff_head(",
ccff_mem_model->prefix);
} }
dump_verilog_sram_one_local_outport(fp, cur_sram_orgz_info, dump_verilog_sram_one_local_outport(fp, cur_sram_orgz_info,
sram_lsb, sram_lsb, sram_lsb, sram_lsb,
@ -1604,7 +1610,8 @@ void dump_verilog_sram_local_ports(FILE* fp,
fprintf(fp, ",\n"); fprintf(fp, ",\n");
/* Dump the first port: SRAM_outb of CMOS MUX or WL of RRAM MUX */ /* Dump the first port: SRAM_outb of CMOS MUX or WL of RRAM MUX */
if (true == is_explicit_mapping) { if (true == is_explicit_mapping) {
fprintf(fp, ".ccff_ccff_tail("); fprintf(fp, ".%s_ccff_tail(",
ccff_mem_model->prefix);
} }
dump_verilog_sram_one_local_outport(fp, cur_sram_orgz_info, dump_verilog_sram_one_local_outport(fp, cur_sram_orgz_info,
sram_msb, sram_msb, sram_msb, sram_msb,