Skip to content

Commit bedf35f

Browse files
committed
Merge branch 'main' of github.com:os-fpga/yosys_verific_rs into task/EDA-3335/restructure_editing_tool
2 parents 5753398 + 02c49d7 commit bedf35f

File tree

4 files changed

+43
-19
lines changed

4 files changed

+43
-19
lines changed

CMakeLists.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ set(VERSION_MINOR 0)
1717

1818

1919

20-
set(VERSION_PATCH 383)
20+
set(VERSION_PATCH 384)
2121

2222

2323

design_edit/src/rs_design_edit.cc

Lines changed: 40 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -503,7 +503,8 @@ struct DesignEditRapidSilicon : public ScriptPass {
503503
if (in_bit.wire != nullptr)
504504
{
505505
remove_fab_prims.push_back(cell);
506-
if (fab_ins.count(in_bit) && fab_outs.count(out_bit))
506+
if (new_ins.find(in_bit.wire->name.str()) != new_ins.end() &&
507+
new_outs.find(out_bit.wire->name.str()) != new_outs.end())
507508
{
508509
RTLIL::SigSig new_conn;
509510
new_conn.first = out_bit;
@@ -534,7 +535,8 @@ struct DesignEditRapidSilicon : public ScriptPass {
534535
if (in_bit.wire != nullptr)
535536
{
536537
remove_fab_prims.push_back(cell);
537-
if (fab_ins.count(in_bit) && fab_outs.count(out_bit))
538+
if (new_ins.find(in_bit.wire->name.str()) != new_ins.end() &&
539+
new_outs.find(out_bit.wire->name.str()) != new_outs.end())
538540
{
539541
RTLIL::SigSig new_conn;
540542
new_conn.first = out_bit;
@@ -568,6 +570,7 @@ struct DesignEditRapidSilicon : public ScriptPass {
568570
if (cell->type == RTLIL::escape_id("O_FAB") ||
569571
cell->type == RTLIL::escape_id("I_FAB")) continue;
570572

573+
string module_name = remove_backslashes(cell->type.str());
571574
for (auto conn : cell->connections())
572575
{
573576
IdString portName = conn.first;
@@ -577,22 +580,44 @@ struct DesignEditRapidSilicon : public ScriptPass {
577580
{
578581
if (ofab_sig_map.count(bit))
579582
{
580-
const std::vector<RTLIL::SigBit> outbits = ofab_sig_map[bit];
581-
if(outbits.size() < 1) sigspec.append(bit);
582-
if(outbits.size() == 1)
583+
584+
if ((std::find(primitives.begin(), primitives.end(), module_name) !=
585+
primitives.end()) && cell->input(portName))
583586
{
587+
const std::vector<RTLIL::SigBit> outbits = ofab_sig_map[bit];
588+
RTLIL::SigSig new_conn;
589+
RTLIL::Wire *new_wire = mod->addWire(NEW_ID, 1);
590+
new_outs.erase(bit.wire->name.str());
591+
new_outs.insert(new_wire->name.str());
592+
new_conn.first = new_wire;
593+
new_conn.second = outbits[0];
594+
mod->connect(new_conn);
584595
if (unset_port)
585-
{
586-
cell->unsetPort(portName);
587-
unset_port = false;
588-
}
589-
sigspec.append(outbits[0]);
590-
} else if (outbits.size() > 1)
596+
{
597+
cell->unsetPort(portName);
598+
unset_port = false;
599+
}
600+
sigspec.append(new_wire);
601+
}
602+
else
591603
{
592-
sigspec.append(bit);
593-
if (ofab_conns.find(bit) == ofab_conns.end())
604+
const std::vector<RTLIL::SigBit> outbits = ofab_sig_map[bit];
605+
if(outbits.size() < 1) sigspec.append(bit);
606+
if(outbits.size() == 1)
594607
{
595-
ofab_conns.insert({bit, outbits});
608+
if (unset_port)
609+
{
610+
cell->unsetPort(portName);
611+
unset_port = false;
612+
}
613+
sigspec.append(outbits[0]);
614+
} else if (outbits.size() > 1)
615+
{
616+
sigspec.append(bit);
617+
if (ofab_conns.find(bit) == ofab_conns.end())
618+
{
619+
ofab_conns.insert({bit, outbits});
620+
}
596621
}
597622
}
598623
} else {
@@ -1487,6 +1512,7 @@ struct DesignEditRapidSilicon : public ScriptPass {
14871512
elapsed_time (start, end);
14881513
intersection_copy_remove(new_ins, new_outs, interface_wires);
14891514
intersect(interface_wires, keep_wires);
1515+
remove_io_fab_prim(original_mod);
14901516
}
14911517

14921518
Module *wrapper_mod = original_mod->clone();
@@ -1610,8 +1636,6 @@ struct DesignEditRapidSilicon : public ScriptPass {
16101636

16111637
get_fabric_ios(original_mod);
16121638

1613-
remove_io_fab_prim(original_mod);
1614-
16151639
start = high_resolution_clock::now();
16161640
log("Deleting non-primitive cells\n");
16171641
for (auto cell : wrapper_mod->cells()) {

yosys

yosys-rs-plugin

0 commit comments

Comments
 (0)