[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
https://bugs.libre-soc.org/show_bug.cgi?id=217
--- 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
box.
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