[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 19:05:38 BST 2020


https://bugs.libre-soc.org/show_bug.cgi?id=217

--- Comment #81 from Luke Kenneth Casson Leighton <lkcl at lkcl.net> ---
(In reply to Jean-Paul.Chaput from comment #80)

>   Duh? It seems ok to me, according to the netlist of alu16, top level
>   "a(2)" is connected only to "add" and "sub". Plug represent logical
>   connexions, so they cannot be "placed". The instance they belong to,
>   however, may be placed. What Plug connected to "a(2)" do you miss?

tch, tch, you are right.  i needed add_o(2) and sub_o(2).

        find = self.get_net_connections(['add_o(0)', 'sub_o(0)', 'o(0)'],
                                        ['clk', 'rst'])

more ['op', 'abc_829_new_n51', 'op', 'abc_829_new_n51', 'o_next(0)']
set([[0x7fe5b3dd9110<->0x55c7b4b77b10 <id:3433 Instance subckt_0_nmx2_x1
nmx2_x1>], [0x7fe5b3dd9130<->0x55c7b4b92b30 <id:3801 Instance subckt_32_sff1_x4
sff1_x4>]])

at the first level of recursion, it seems to be working.  for a given value of
work.

this will, recursively, grab all unconnected nets that are connected to nets
that are... etc.

however that is too much.

this algorithm can be used to resolve all paths between two points: 
https://www.python.org/doc/essays/graphs/

so by knowing that we want all components involved in add_0(0), sub_o(0)
and o(0) it is possible to find...

hmmm... net "op" is a problem.  if you traverse "op" it goes everywhere.

by excluding "op" as a possibility, i managed to get it to "work"
recursively:

        find = self.get_net_connections(['add_o(1)', 'sub_o(1)', 'o(1)'],
                                        ['clk', 'rst', 'op'])

set([[0x7f13ce86c070<->0x559cb535bc20 <id:3769 Instance subckt_33_sff1_x4
sff1_x4>], [0x7f13ce86c130<->0x559cb535a680 <id:3755 Instance subckt_2_nmx2_x1
nmx2_x1>], [0x7f13ce86c190<->0x559cb5352100 <id:3668 Instance subckt_3_no2_x1
no2_x1>]])

first list is what is wanted (start position), second list is what you do
*not* want.  anything already found will be added recursively to the second
list.

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


More information about the libre-riscv-dev mailing list