[libre-riscv-dev] [Bug 217] create a "ring" system which allows pad locations to be specified conveniently

bugzilla-daemon at libre-soc.org bugzilla-daemon at libre-soc.org
Tue Apr 21 22:19:55 BST 2020


--- Comment #85 from Luke Kenneth Casson Leighton <lkcl at lkcl.net> ---
ok i have replaced ALU16.place() with a new version.

commit 83f918107bb29f1ab3ef08eae5c1624d0376179b
Author: Luke Kenneth Casson Leighton <lkcl at lkcl.net>
Date:   Tue Apr 21 21:05:18 2020 +0000

    automatically located the joining cells between add and sub

this new version no longer explicitly regexp pattern-searches for
the cells named nmx2, no2 and sff1

instead it uses the new function, calling get_net_connections("o(%d)" % i),
for all i in range(16).

it produces - finds - the exact same three cells as the regexp pattern
search ALU16.match_instance()

however unlike match_instance(), if the yosys/ABC changes, produces
completely difference cells, it will *still find them all*.

now we need step (2)

step (2) is:

* given the (arbitrary) list of instances, auto-place them within a set

you can see i have started to try that, and it produces a segfault.

attempting to call Etesian.create(inst.getCell()) does not work.

attempting to call Etesian.create(inst.getMasterCell()) does not work.

attempting to call Etesian.create(inst) segfaults.

the only other trick i can think of is to LITERALLY remove them,
programmatically, from alu16, and move them to a new (fake) Cell.

times 16.

this will be extremely tedious because it requires moving the netlists
as well.

what is *really* needed is, to be able to pass a **LIST** of Cells
to Etesian.create().  (actually, a list of Instances)

and to be able to have EtesianEngine constructor take that **LIST**
of Instances

and to perform the place on that **LIST** of Instances.

You are receiving this mail because:
You are on the CC list for the bug.

More information about the libre-riscv-dev mailing list